{"version":3,"file":"static/js/main.6fc01ae7.js","mappings":"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ACjB,MACA,EACA,MAED,iBAAkB,CACjB,MACA,EACA,MAED,uCAAwC,CACvC,MACA,EACA,MAED,kCAAmC,CAClC,MACA,EACA,MAED,kCAAmC,CAClC,MACA,EACA,MAED,oCAAqC,CACpC,MACA,EACA,MAED,oCAAqC,CACpC,MACA,EACA,KAED,gCAAiC,CAChC,MACA,EACA,MAED,iCAAkC,CACjC,MACA,EACA,MAED,iCAAkC,CACjC,MACA,EACA,MAED,+BAAgC,CAC/B,MACA,EACA,MAED,qCAAsC,CACrC,MACA,EACA,MAED,oBAAqB,CACpB,MACA,GAED,yBAA0B,CACzB,MACA,EACA,MAED,yBAA0B,CACzB,KACA,EACA,MAED,yBAA0B,CACzB,MACA,EACA,MAED,0BAA2B,CAC1B,MACA,EACA,MAED,2BAA4B,CAC3B,MACA,EACA,MAED,8BAA+B,CAC9B,MACA,EACA,MAED,8BAA+B,CAC9B,MACA,EACA,MAED,gCAAiC,CAChC,MACA,EACA,MAED,gCAAiC,CAChC,MACA,EACA,MAED,4BAA6B,CAC5B,MACA,EACA,MAED,6BAA8B,CAC7B,MACA,EACA,MAED,6BAA8B,CAC7B,MACA,EACA,MAED,2BAA4B,CAC3B,MACA,EACA,MAED,iCAAkC,CACjC,MACA,EACA,KAED,wBAAyB,CACxB,MACA,EACA,MAED,mBAAoB,CACnB,MACA,EACA,MAED,iBAAkB,CACjB,MACA,EACA,KAED,uBAAwB,CACvB,MACA,EACA,MAED,0BAA2B,CAC1B,MACA,EACA,MAED,wBAAyB,CACxB,MACA,EACA,MAED,4BAA6B,CAC5B,MACA,EACA,MAED,kBAAmB,CAClB,MACA,EACA,MAED,oBAAqB,CACpB,MACA,EACA,MAED,2BAA4B,CAC3B,MACA,EACA,KAED,wBAAyB,CACxB,MACA,EACA,MAED,sBAAuB,CACtB,MACA,EACA,MAED,kBAAmB,CAClB,MACA,EACA,MAED,0BAA2B,CAC1B,MACA,EACA,MAED,qDAAsD,CACrD,MACA,EACA,MAED,qBAAsB,CACrB,KACA,EACA,MAED,iBAAkB,CA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AY,WAAY,WAAY,UAChD,WAAY,WAAY,WAAY,UAAY,WAChD,WAAY,WAAY,UAAY,WAAY,WAChD,WAAY,UAAY,WAAY,WAAY,WAChD,UAAY,WAAY,WAAY,WAAY,UAChD,WAAY,WAAY,WAAY,UAAY,WAChD,WAAY,WAAY,UAAY,WAAY,WAChD,WAAY,WAAY,WAAY,WAAY,WAChD,UAAY,WAAY,WAAY,WAAY,UAChD,WAAY,WAAY,WAAY,UAAY,WAChD,WAAY,WAAY,UAAY,WAAY,WAChD,WAAY,UAAY,WAAY,WAAY,WAChD,UAAY,WAAY,WAAY,WAAY,WAChD,SAAY,WAAY,WAAY,WAAY,UAChD,WAAY,WAAY,WAAY,UAAY,WAChD,WAAY,WAAY,UAAY,WAAY,WAChD,WAAY,UAAY,WAAY,WAAY,WAChD,UAAY,WAAY,WAAY,WAAY,UAChD,WAAY,WAAY,WAAY,UAAY,WAChD,WAAY,WAAY,UAAY,WAAY,WAChD,WAAY,WAAY,WAAY,WAAY,WAChD,UAAY,WAAY,WAAY,WAAY,UAChD,WAAY,WAAY,WAAY,UAAY,WAChD,WAAY,WAAY,UAAY,WAAY,WAChD,WAAY,UAAY,WAAY,WAAY,WAChD,UAAY,WAAY,WAAY,WAAY,WAChD,SAAY,WAAY,WAAY,WAAY,SAChD,WAAY,WAAY,WAAY,UAAY,WAChD,WAAY,WAAY,UAAY,WAAY,WAChD,WAAY,UAAY,WAAY,WAAY,WAChD,UAAY,WAAY,WAAY,WAAY,UAChD,WAAY,WAAY,WAAY,UAAY,WAChD,WAAY,WAAY,UAAY,WAAY,WAChD,WAAY,WAAY,WAAY,WAAY,WAChD,UAAY,WAAY,WAAY,WAAY,UAChD,WAAY,WAAY,WAAY,UAAY,WAChD,WAAY,WAAY,UAAY,WAAY,WAChD,WAAY,UAAY,WAAY,WAAY,WAChD,UAAY,WAAY,WAAY,WAAY,WAChD,SAAY,WAAY,WAAY,WAAY,SAChD,WAAY,WAAY,WAAY,UAAY,WAChD,WAAY,WAAY,UAAY,WAAY,WAChD,WAAY,UAAY,WAAY,WAAY,WAChD,UAAY,WAAY,WAAY,WAAY,UAChD,WAAY,WAAY,WAAY,UAAY,WAChD,WAAY,WAAY,UAAY,WAAY,WAChD,WAAY,WAAY,W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EAAG,GACHnhG,EAAG,GACHohG,EAAG,GACH7qC,EAAG,GACHr3D,EAAG,GACHlY,EAAG,GACHyqE,EAAG,GACHz0C,EAAG,GACHskF,EAAG,GACH9qC,EAAG,GACHirC,EAAG,GACH36G,EAAG,GACH46G,EAAG,GACHljG,EAAG,GACHmjG,EAAG,GACH/8G,EAAG,GACH83H,EAAG,GACH38G,EAAG,GACHy8G,EAAG,GACHj+G,EAAG,GACHq+G,EAAG,GACHllG,EAAG,GACHslG,EAAG,GACHrlG,EAAG,GACHmlG,EAAG,GACHxd,EAAG,GACHud,EAAG,GACHwsG,GAAI,GACJklJ,YAAa,GACb75O,GAAI,IACJC,GAAI,IACJ65O,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,IAAK,IACLC,QAAS,IACTC,WAAY,IACZC,WAAY,IACZC,WAAY,IACZC,SAAU,IACV,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL/0V,EAAG,IACH,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,KAAM,IACN,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL4pS,KAAM,IACNorD,SAAU,IACVC,KAAM,IACNC,MAAO,IACPC,MAAO,IACPC,SAAU,IACVC,KAAM,IACNC,QAAS,KAOXjE,EAAYvoD,SAAWuoD,EAAY,KACnCA,EAAYkE,OAASlE,EAAY,GACjCA,EAAYmE,OAASnE,EAAY,GACjCA,EAAYoE,OAASpE,EAAY,GACjCA,EAAYqE,OAASrE,EAAY,GACjCA,EAAYsE,OAAStE,EAAY,GACjCA,EAAYuE,OAASvE,EAAY,GACjCA,EAAYw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AAC,WAAY,YACvC,CAAC,UAAY,YAAa,CAAC,WAAY,YACvC,CAAC,WAAY,YAAa,CAAC,WAAY,YACvC,CAAC,WAAY,YAAa,CAAC,UAAY,YACvC,CAAC,UAAY,YAAa,CAAC,WAAY,YACvC,CAAC,WAAY,YAAa,CAAC,WAAY,WACvC,CAAC,WAAY,WAAa,CAAC,WAAY,YACvC,CAAC,WAAY,YAAa,CAAC,WAAY,WACvC,CAAC,UAAY,YAAa,CAAC,UAAY,YACvC,CAAC,UAAY,YAAa,CAAC,WAAY,YACvC,CAAC,WAAY,YAAa,CAAC,WAAY,YACvC,CAAC,WAAY,YAAa,CAAC,WAAY,WACvC,CAAC,WAAY,YAAa,CAAC,WAAY,YACvC,CAAC,WAAY,YAAa,CAAC,WAAY,YACvC,CAAC,UAAY,YAAa,CAAC,UAAY,WACvC,CAAC,UAAY,YAAa,CAAC,UAAY,YACvC,CAAC,WAAY,YAAa,CAAC,WAAY,YACvC,CAAC,WAAY,YAAa,CAAC,WAAY,YACvC,CAAC,WAAY,YAAa,CAAC,WAAY,WACvC,CAAC,WAAY,YAAa,CAAC,WAAY,YACvC,CAAC,WAAY,YAAa,CAAC,WAAY,WACvC,CAAC,WAAY,YAAa,CAAC,WAAY,YACvC,CAAC,WAAY,YAAa,CAAC,UAAY,WACvC,CAAC,UAAY,YAAa,CAAC,UAAY,YACvC,CAAC,UAAY,YAAa,CAAC,UAAY,YACvC,CAAC,UAAY,YAAa,CAAC,WAAY,YACvC,CAAC,WAAY,YAAa,CAAC,WAAY,YACvC,CAAC,WAAY,YAAa,CAAC,WAAY,YACvC,CAAC,WAAY,YAAa,CAAC,WAAY,WACvC,CAAC,WAAY,WAAa,CAAC,WAAY,YACvC,CAAC,WAAY,YAAa,CAAC,WAAY,YACvC,CAAC,WAAY,YAAa,CAAC,WAAY,WACvC,CAAC,WAAY,YAAa,CAAC,WAAY,YACvC,CAAC,UAAY,YAAa,CAAC,UAAY,YACvC,CAAC,UAAY,YAAa,CAAC,UAAY,WACvC,CAAC,UAAY,WAAa,CAAC,UAAY,YACvC,CAAC,WAAY,WAAa,CAAC,WAAY,YACvC,CAAC,WAAY,YAAa,CAAC,WAAY,YACvC,CAAC,WAAY,WAAa,CAAC,WAAY,cAIzC6tN,EAAU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CzC,SAAU,IAAM,SAAU,IAAK,SAAU,IAAK,SAAU,IACxD,SAAU,IAAM,SAAU,IAAK,SAAU,IAAK,SAAU,IACxD,SAAU,IAAM,SAAU,IAAK,SAAU,IAAK,SAAU,IACxD,SAAU,IAAM,SAAU,IAAK,SAAU,IAAK,SAAU,IAAK,SAAU,IACvE,SAAU,IAAM,SAAU,IAAK,SAAU,IAAK,SAAU,IAAK,SAAU,IACvE,SAAU,IAAM,SAAU,IAAK,SAAU,IAAK,SAAU,IACxD,SAAU,IAAM,SAAU,IAAK,SAAU,IAAK,SAAU,IACxD,SAAU,IAAM,SAAU,IAAK,SAAU,IAAK,SAAU,IACxD,SAAU,IAAM,SAAU,IAAK,SAAU,IAAK,SAAU,IAAK,SAAU,IACvE,SAAU,IAAM,SAAU,IAAK,SAAU,IAAK,SAAU,IAAK,SAAU,IACvE,SAAU,IAAM,SAAU,IAC1B,SAAU,IAAM,SAAU,IAAK,SAAU,IACzC,SAAU,IAAM,SAAU,IAAK,SAAU,IAAK,SAAU,IAAK,SAAU,IACvE,SAAU,IAAM,SAAU,IAAK,SAAU,IAAK,SAAU,IAAK,SAAU,IACvE,SAAU,IAAM,SAAU,IAAK,SAAU,IAAK,SAAU,IACxD,SAAU,IAAM,SAAU,IAAK,SAAU,IAAK,SAAU,IACxD,SAAU,IAAM,SAAU,IAAK,SAAU,IACzC,SAAU,IAAM,SAAU,IAAK,SAAU,IACzC,SAAU,IAAM,SAAU,IAAK,SAAU,IACzC,SAAU,IAAM,SAAU,IAAK,SAAU,IACzC,SAAU,IAAM,SAAU,IAAK,SAAU,IAAK,SAAU,IACxD,SAAU,IAAM,SAAU,IAAK,SAAU,IAAK,SAAU,IACxD,SAAU,IAAM,SAAU,IAAK,SAAU,IACzC,SAAU,IAAM,SAAU,IAAK,SAAU,IACzC,SAAU,IAAM,SAAU,IAAK,SAAU,IAAK,SAAU,IAAK,SAAU,IAAK,SAAU,IACtF,SAAU,IAAM,SAAU,IAAK,SAAU,IAAK,SAAU,IAAK,SAAU,IAAK,SAAU,IACtF,SAAU,IAAM,SAAU,IAC1B,SAAU,IAAM,SAAU,IAAK,SAAU,IACzC,SAAU,IAAM,SAAU,IAAK,SAAU,IACzC,SAAU,IAAM,SAAU,IAAK,SAAU,IACzC,SAAU,K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","sources":["../node_modules/promise/lib/core.js","../node_modules/aws-sdk/clients/codecommit.js","../node_modules/core-js/internals/v8-prototype-define-bug.js","../node_modules/pako/lib/zlib/zstream.js","../node_modules/crypto-js/enc-utf8.js","../node_modules/core-js/modules/esnext.map.key-of.js","../node_modules/core-js/modules/esnext.map.from.js","../node_modules/amazon-chime-sdk-js/src/activespeakerpolicy/DefaultActiveSpeakerPolicy.ts","../node_modules/aws-sdk/node_modules/url/url.js","../node_modules/aws-sdk/lib/dynamodb/translator.js","../node_modules/amazon-chime-sdk-js/src/sessionstatecontroller/DefaultSessionStateController.ts","../node_modules/aws-sdk/clients/personalizeevents.js","../node_modules/amazon-chime-sdk-js/src/videotilefactory/DefaultVideoTileFactory.ts","../node_modules/core-js/internals/to-string-tag-support.js","../node_modules/amazon-chime-sdk-js/src/videodownlinkbandwidthpolicy/VideoQualityAdaptationPreference.ts","../node_modules/aws-sdk/clients/dynamodbstreams.js","../node_modules/aws-sdk/lib/protocol/json.js","../node_modules/es-errors/range.js","../node_modules/amazon-chime-sdk-js/src/videotile/DefaultVideoElementResolutionMonitor.ts","../node_modules/amazon-chime-sdk-js/src/meetingreadinesschecker/CheckNetworkUDPConnectivityFeedback.ts","../node_modules/amazon-chime-sdk-js/src/meetingreadinesschecker/CheckVideoConnectivityFeedback.ts","../node_modules/react-is/index.js","../node_modules/amazon-chime-sdk-js/src/videoframeprocessor/DefaultVideoFrameProcessorTimer.ts","../node_modules/aws-sdk/lib/services/apigateway.js","../node_modules/aws-sdk/lib/event-stream/event-message-chunker.js","../node_modules/amazon-chime-sdk-js/src/audiovideocontroller/AudioVideoControllerState.ts","../node_modules/aws-sdk/clients/iotdata.js","../node_modules/core-js/internals/to-set-like.js","../node_modules/amazon-chime-sdk-js/src/videofx/VideoFxSegmentationRateManager.ts","../node_modules/axios/lib/core/transformData.js","../node_modules/aws-sdk/lib/services/route53.js","../node_modules/core-js/internals/define-built-in-accessor.js","../node_modules/amazon-chime-sdk-js/src/task/TaskStatus.ts","../node_modules/node-forge/lib/oids.js","../node_modules/aws-sdk/lib/xml/escape-attribute.js","../node_modules/amazon-chime-sdk-js/src/scheduler/TimeoutScheduler.ts","../node_modules/node-forge/lib/sha1.js","../node_modules/amazon-chime-sdk-js/src/sdp/SDPMediaSection.ts","../node_modules/core-js/internals/object-keys-internal.js","../node_modules/@semantic-ui-react/event-stack/lib/index.js","../node_modules/aws-sdk/lib/query/query_param_serializer.js","../node_modules/amazon-chime-sdk-js/src/videofx/VideoFxConstants.ts","../node_modules/promise/lib/rejection-tracking.js","../node_modules/core-js/modules/esnext.set.symmetric-difference.js","../node_modules/math-intrinsics/max.js","../node_modules/node-forge/lib/x509.js","../node_modules/amazon-chime-sdk-js/src/contentsharecontroller/ContentShareConstants.ts","../node_modules/call-bind-apply-helpers/index.js","../node_modules/amazon-chime-sdk-js/src/backgroundfilter/BackgroundFilterFrameCounter.ts","../node_modules/aws-sdk/clients/marketplacecatalog.js","../node_modules/amazon-chime-sdk-js/src/meetingreadinesschecker/CheckContentShareConnectivityFeedback.ts","../node_modules/call-bind-apply-helpers/functionCall.js","../node_modules/call-bind-apply-helpers/functionApply.js","../node_modules/core-js/internals/same-value-zero.js","../node_modules/amazon-chime-sdk-js/src/task/OnceTask.ts","../node_modules/aws-sdk/lib/services/polly.js","../node_modules/util/support/isBufferBrowser.js","../node_modules/aws-sdk/clients/costexplorer.js","../node_modules/amazon-chime-sdk-js/src/devicecontroller/DeviceSelection.ts","../node_modules/aws-sdk/clients/efs.js","../node_modules/amazon-chime-sdk-js/src/audiovideocontroller/NoOpAudioVideoController.ts","../node_modules/pako/lib/zlib/inflate.js","../node_modules/@aws-crypto/util/src/numToUint8.ts","../node_modules/amazon-chime-sdk-js/src/transceivercontroller/SimulcastContentShareTransceiverController.ts","../node_modules/aws-sdk/clients/forecastqueryservice.js","../node_modules/amazon-chime-sdk-js/src/pingpong/DefaultPingPong.ts","../node_modules/axios/lib/core/InterceptorManager.js","../node_modules/ieee754/index.js","../node_modules/amazon-chime-sdk-js/src/eventsclientconfiguration/MeetingEventsClientConfiguration.ts","../node_modules/aws-sdk/clients/cloudhsmv2.js","../node_modules/aws-sdk/lib/event-stream/buffered-create-event-stream.js","../node_modules/aws-sdk/clients/kinesisvideosignalingchannels.js","../node_modules/aws-sdk/lib/dynamodb/document_client.js","../node_modules/core-js/internals/environment.js","../node_modules/core-js/modules/esnext.set.some.js","../node_modules/aws-sdk/lib/services/dynamodb.js","../node_modules/amazon-chime-sdk-js/src/statscollector/StatsCollector.ts","../node_modules/aws-sdk/clients/inspector.js","../node_modules/aws-sdk/lib/services/lambda.js","../node_modules/core-js/internals/is-symbol.js","../node_modules/raf/index.js","../node_modules/axios/lib/helpers/spread.js","../node_modules/aws-sdk/lib/maintenance_mode_message.js","../node_modules/amazon-chime-sdk-js/src/meetingsession/MeetingSessionTURNCredentials.ts","../node_modules/amazon-chime-sdk-js/src/meetingreadinesschecker/CheckVideoInputFeedback.ts","../node_modules/@smithy/types/dist-es/auth/auth.js","../node_modules/@smithy/types/dist-es/auth/HttpApiKeyAuth.js","../node_modules/@smithy/types/dist-es/endpoint.js","../node_modules/@smithy/types/dist-es/extensions/checksum.js","../node_modules/@smithy/types/dist-es/http.js","../node_modules/@smithy/types/dist-es/middleware.js","../node_modules/@smithy/types/dist-es/profile.js","../node_modules/@smithy/types/dist-es/transfer.js","../node_modules/@smithy/protocol-http/dist-es/httpRequest.js","../node_modules/@smithy/protocol-http/dist-es/httpResponse.js","../node_modules/@aws-sdk/middleware-host-header/dist-es/index.js","../node_modules/@aws-sdk/middleware-logger/dist-es/loggerMiddleware.js","../node_modules/@aws-sdk/middleware-recursion-detection/dist-es/index.js","../node_modules/@smithy/util-middleware/dist-es/getSmithyContext.js","../node_modules/@smithy/util-middleware/dist-es/normalizeProvider.js","../node_modules/@smithy/core/dist-es/middleware-http-auth-scheme/httpAuthSchemeMiddleware.js","../node_modules/@smithy/core/dist-es/middleware-http-auth-scheme/getHttpAuthSchemeEndpointRuleSetPlugin.js","../node_modules/@smithy/middleware-serde/dist-es/serdePlugin.js","../node_modules/@smithy/middleware-serde/dist-es/deserializerMiddleware.js","../node_modules/@smithy/middleware-serde/dist-es/serializerMiddleware.js","../node_modules/@smithy/core/dist-es/middleware-http-auth-scheme/getHttpAuthSchemePlugin.js","../node_modules/@smithy/core/dist-es/middleware-http-signing/httpSigningMiddleware.js","../node_modules/@smithy/core/dist-es/middleware-http-signing/getHttpSigningMiddleware.js","../node_modules/@smithy/core/dist-es/normalizeProvider.js","../node_modules/@smithy/core/dist-es/pagination/createPaginator.js","../node_modules/@smithy/util-base64/dist-es/constants.browser.js","../node_modules/@smithy/util-base64/dist-es/fromBase64.browser.js","../node_modules/@smithy/util-utf8/dist-es/fromUtf8.browser.js","../node_modules/@smithy/util-base64/dist-es/toBase64.browser.js","../node_modules/@smithy/util-utf8/dist-es/toUtf8.browser.js","../node_modules/@smithy/util-stream/dist-es/blob/Uint8ArrayBlobAdapter.js","../node_modules/@smithy/util-stream/dist-es/blob/transforms.js","../node_modules/@smithy/util-stream/dist-es/checksum/ChecksumStream.browser.js","../node_modules/@smithy/util-stream/dist-es/checksum/createChecksumStream.browser.js","../node_modules/@smithy/util-uri-escape/dist-es/escape-uri.js","../node_modules/@smithy/fetch-http-handler/dist-es/create-request.js","../node_modules/@smithy/fetch-http-handler/dist-es/request-timeout.js","../node_modules/@smithy/fetch-http-handler/dist-es/fetch-http-handler.js","../node_modules/@smithy/querystring-builder/dist-es/index.js","../node_modules/@smithy/fetch-http-handler/dist-es/stream-collector.js","../node_modules/@smithy/util-hex-encoding/dist-es/index.js","../node_modules/@smithy/util-stream/dist-es/sdk-stream-mixin.browser.js","../node_modules/@smithy/core/dist-es/submodules/protocols/collect-stream-body.js","../node_modules/@smithy/core/dist-es/submodules/protocols/extended-encode-uri-component.js","../node_modules/@smithy/core/dist-es/submodules/protocols/requestBuilder.js","../node_modules/@smithy/core/dist-es/submodules/protocols/resolve-path.js","../node_modules/@smithy/core/dist-es/util-identity-and-auth/DefaultIdentityProviderConfig.js","../node_modules/@smithy/core/dist-es/util-identity-and-auth/memoizeIdentityProvider.js","../node_modules/@smithy/util-endpoints/dist-es/lib/isIpAddress.js","../node_modules/@smithy/util-endpoints/dist-es/lib/isValidHostLabel.js","../node_modules/@smithy/util-endpoints/dist-es/utils/customEndpointFunctions.js","../node_modules/@smithy/util-endpoints/dist-es/debug/debugId.js","../node_modules/@smithy/util-endpoints/dist-es/debug/toDebugString.js","../node_modules/@smithy/util-endpoints/dist-es/types/EndpointError.js","../node_modules/@smithy/util-endpoints/dist-es/lib/booleanEquals.js","../node_modules/@smithy/util-endpoints/dist-es/lib/getAttr.js","../node_modules/@smithy/util-endpoints/dist-es/lib/getAttrPathList.js","../node_modules/@smithy/util-endpoints/dist-es/lib/parseURL.js","../node_modules/@smithy/util-endpoints/dist-es/utils/endpointFunctions.js","../node_modules/@smithy/util-endpoints/dist-es/lib/isSet.js","../node_modules/@smithy/util-endpoints/dist-es/lib/not.js","../node_modules/@smithy/util-endpoints/dist-es/lib/stringEquals.js","../node_modules/@smithy/util-endpoints/dist-es/lib/substring.js","../node_modules/@smithy/util-endpoints/dist-es/lib/uriEncode.js","../node_modules/@smithy/util-endpoints/dist-es/utils/evaluateTemplate.js","../node_modules/@smithy/util-endpoints/dist-es/utils/evaluateExpression.js","../node_modules/@smithy/util-endpoints/dist-es/utils/getReferenceValue.js","../node_modules/@smithy/util-endpoints/dist-es/utils/callFunction.js","../node_modules/@smithy/util-endpoints/dist-es/utils/evaluateCondition.js","../node_modules/@smithy/util-endpoints/dist-es/utils/evaluateConditions.js","../node_modules/@smithy/util-endpoints/dist-es/utils/getEndpointHeaders.js","../node_modules/@smithy/util-endpoints/dist-es/utils/getEndpointProperty.js","../node_modules/@smithy/util-endpoints/dist-es/utils/getEndpointProperties.js","../node_modules/@smithy/util-endpoints/dist-es/utils/getEndpointUrl.js","../node_modules/@smithy/util-endpoints/dist-es/utils/evaluateEndpointRule.js","../node_modules/@smithy/util-endpoints/dist-es/utils/evaluateErrorRule.js","../node_modules/@smithy/util-endpoints/dist-es/utils/evaluateTreeRule.js","../node_modules/@smithy/util-endpoints/dist-es/utils/evaluateRules.js","../node_modules/@aws-sdk/util-endpoints/dist-es/lib/aws/isVirtualHostableS3Bucket.js","../node_modules/@aws-sdk/util-endpoints/dist-es/lib/aws/partition.js","../node_modules/@aws-sdk/util-endpoints/dist-es/aws.js","../node_modules/@aws-sdk/util-endpoints/dist-es/lib/aws/parseArn.js","../node_modules/@aws-sdk/core/dist-es/submodules/client/setFeature.js","../node_modules/@aws-sdk/middleware-user-agent/dist-es/check-features.js","../node_modules/@aws-sdk/middleware-user-agent/dist-es/constants.js","../node_modules/@aws-sdk/middleware-user-agent/dist-es/user-agent-middleware.js","../node_modules/@aws-sdk/middleware-user-agent/dist-es/encode-features.js","../node_modules/@smithy/util-config-provider/dist-es/types.js","../node_modules/@smithy/config-resolver/dist-es/endpointsConfig/NodeUseDualstackEndpointConfigOptions.js","../node_modules/@smithy/config-resolver/dist-es/regionConfig/isFipsRegion.js","../node_modules/@smithy/config-resolver/dist-es/regionConfig/getRealRegion.js","../node_modules/@smithy/middleware-content-length/dist-es/index.js","../node_modules/@smithy/middleware-endpoint/dist-es/service-customizations/s3.js","../node_modules/@smithy/middleware-endpoint/dist-es/adaptors/createConfigValueProvider.js","../node_modules/@smithy/middleware-endpoint/dist-es/adaptors/getEndpointFromConfig.browser.js","../node_modules/@smithy/url-parser/dist-es/index.js","../node_modules/@smithy/querystring-parser/dist-es/index.js","../node_modules/@smithy/middleware-endpoint/dist-es/adaptors/toEndpointV1.js","../node_modules/@smithy/middleware-endpoint/dist-es/adaptors/getEndpointFromInstructions.js","../node_modules/@smithy/middleware-endpoint/dist-es/endpointMiddleware.js","../node_modules/@smithy/core/dist-es/setFeature.js","../node_modules/@smithy/middleware-endpoint/dist-es/getEndpointPlugin.js","../node_modules/@smithy/util-retry/dist-es/config.js","../node_modules/@smithy/service-error-classification/dist-es/constants.js","../node_modules/@smithy/service-error-classification/dist-es/index.js","../node_modules/@smithy/util-retry/dist-es/DefaultRateLimiter.js","../node_modules/@smithy/util-retry/dist-es/constants.js","../node_modules/@smithy/util-retry/dist-es/defaultRetryToken.js","../node_modules/@smithy/util-retry/dist-es/StandardRetryStrategy.js","../node_modules/@smithy/util-retry/dist-es/defaultRetryBackoffStrategy.js","../node_modules/@smithy/util-retry/dist-es/AdaptiveRetryStrategy.js","../node_modules/@smithy/middleware-retry/node_modules/uuid/dist/esm-browser/native.js","../node_modules/@smithy/middleware-retry/node_modules/uuid/dist/esm-browser/rng.js","../node_modules/@smithy/middleware-retry/node_modules/uuid/dist/esm-browser/stringify.js","../node_modules/@smithy/middleware-retry/node_modules/uuid/dist/esm-browser/v4.js","../node_modules/@smithy/middleware-retry/dist-es/util.js","../node_modules/@smithy/middleware-retry/dist-es/configurations.js","../node_modules/@smithy/middleware-stack/dist-es/MiddlewareStack.js","../node_modules/@smithy/smithy-client/dist-es/client.js","../node_modules/@smithy/smithy-client/dist-es/command.js","../node_modules/@smithy/smithy-client/dist-es/constants.js","../node_modules/@smithy/smithy-client/dist-es/parse-utils.js","../node_modules/@smithy/smithy-client/dist-es/date-utils.js","../node_modules/@smithy/smithy-client/dist-es/exceptions.js","../node_modules/@smithy/smithy-client/dist-es/default-error-handler.js","../node_modules/@smithy/smithy-client/dist-es/defaults-mode.js","../node_modules/@smithy/smithy-client/dist-es/extensions/defaultExtensionConfiguration.js","../node_modules/@smithy/smithy-client/dist-es/extensions/checksum.js","../node_modules/@smithy/smithy-client/dist-es/extensions/retry.js","../node_modules/@smithy/smithy-client/dist-es/is-serializable-header-value.js","../node_modules/@smithy/smithy-client/dist-es/lazy-json.js","../node_modules/@smithy/smithy-client/dist-es/NoOpLogger.js","../node_modules/@smithy/smithy-client/dist-es/object-mapping.js","../node_modules/@smithy/smithy-client/dist-es/ser-utils.js","../node_modules/@smithy/smithy-client/dist-es/serde-json.js","../node_modules/@smithy/middleware-retry/dist-es/isStreamingPayload/isStreamingPayload.browser.js","../node_modules/@smithy/middleware-retry/dist-es/retryMiddleware.js","../node_modules/@smithy/util-utf8/dist-es/toUint8Array.js","../node_modules/@smithy/signature-v4/dist-es/constants.js","../node_modules/@smithy/signature-v4/dist-es/credentialDerivation.js","../node_modules/@smithy/signature-v4/dist-es/getCanonicalHeaders.js","../node_modules/@smithy/signature-v4/dist-es/getPayloadHash.js","../node_modules/@smithy/is-array-buffer/dist-es/index.js","../node_modules/@smithy/signature-v4/dist-es/HeaderFormatter.js","../node_modules/@smithy/signature-v4/dist-es/headerUtil.js","../node_modules/@smithy/signature-v4/dist-es/prepareRequest.js","../node_modules/@smithy/signature-v4/dist-es/utilDate.js","../node_modules/@smithy/signature-v4/dist-es/SignatureV4.js","../node_modules/@smithy/signature-v4/dist-es/moveHeadersToQuery.js","../node_modules/@smithy/signature-v4/dist-es/getCanonicalQuery.js","../node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/aws_sdk/resolveAwsSdkSigV4Config.js","../node_modules/@aws-sdk/core/dist-es/submodules/client/setCredentialFeature.js","../node_modules/@aws-sdk/client-chime-sdk-messaging/dist-es/auth/httpAuthSchemeProvider.js","../node_modules/@aws-sdk/client-chime-sdk-messaging/dist-es/endpoint/EndpointParameters.js","../node_modules/@aws-crypto/sha256-browser/node_modules/@aws-crypto/util/src/convertToBuffer.ts","../node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8/dist-es/fromUtf8.browser.js","../node_modules/@aws-crypto/sha256-browser/node_modules/@aws-crypto/util/src/isEmptyData.ts","../node_modules/@aws-crypto/sha256-browser/src/constants.ts","../node_modules/@aws-sdk/util-locate-window/dist-es/index.js","../node_modules/@aws-crypto/sha256-browser/src/webCryptoSha256.ts","../node_modules/tslib/tslib.es6.mjs","../node_modules/@aws-crypto/sha256-browser/node_modules/@aws-crypto/sha256-js/src/constants.ts","../node_modules/@aws-crypto/sha256-browser/node_modules/@aws-crypto/sha256-js/src/RawSha256.ts","../node_modules/@aws-crypto/sha256-browser/node_modules/@aws-crypto/sha256-js/src/jsSha256.ts","../node_modules/@aws-crypto/supports-web-crypto/src/supportsWebCrypto.ts","../node_modules/@aws-crypto/sha256-browser/src/crossPlatformSha256.ts","../node_modules/@aws-sdk/util-user-agent-browser/dist-es/index.js","../node_modules/@smithy/util-body-length-browser/dist-es/calculateBodyLength.js","../node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/utils/getSkewCorrectedDate.js","../node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/utils/getDateHeader.js","../node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/utils/getUpdatedSystemClockOffset.js","../node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/utils/isClockSkewed.js","../node_modules/@aws-sdk/core/dist-es/submodules/httpAuthSchemes/aws_sdk/AwsSdkSigV4Signer.js","../node_modules/@aws-sdk/client-chime-sdk-messaging/dist-es/endpoint/ruleset.js","../node_modules/@aws-sdk/client-chime-sdk-messaging/dist-es/endpoint/endpointResolver.js","../node_modules/@smithy/util-endpoints/dist-es/cache/EndpointCache.js","../node_modules/@smithy/util-endpoints/dist-es/resolveEndpoint.js","../node_modules/@smithy/property-provider/dist-es/ProviderError.js","../node_modules/@smithy/property-provider/dist-es/chain.js","../node_modules/@smithy/util-defaults-mode-browser/dist-es/constants.js","../node_modules/@smithy/util-defaults-mode-browser/dist-es/resolveDefaultsModeConfig.js","../node_modules/@aws-sdk/client-chime-sdk-messaging/dist-es/runtimeConfig.browser.js","../node_modules/@smithy/property-provider/dist-es/memoize.js","../node_modules/@aws-sdk/client-chime-sdk-messaging/dist-es/runtimeConfig.shared.js","../node_modules/@smithy/invalid-dependency/dist-es/invalidProvider.js","../node_modules/@smithy/config-resolver/dist-es/endpointsConfig/NodeUseFipsEndpointConfigOptions.js","../node_modules/@aws-sdk/client-chime-sdk-messaging/dist-es/runtimeExtensions.js","../node_modules/@aws-sdk/region-config-resolver/dist-es/extensions/index.js","../node_modules/@smithy/protocol-http/dist-es/extensions/httpExtensionConfiguration.js","../node_modules/@aws-sdk/client-chime-sdk-messaging/dist-es/auth/httpAuthExtensionConfiguration.js","../node_modules/@aws-sdk/client-chime-sdk-messaging/dist-es/ChimeSDKMessagingClient.js","../node_modules/@aws-sdk/middleware-user-agent/dist-es/configurations.js","../node_modules/@smithy/middleware-endpoint/dist-es/resolveEndpointConfig.js","../node_modules/@smithy/config-resolver/dist-es/regionConfig/resolveRegionConfig.js","../node_modules/@aws-sdk/core/dist-es/submodules/protocols/common.js","../node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/parseJsonBody.js","../node_modules/@aws-sdk/client-chime-sdk-messaging/node_modules/uuid/dist/esm-browser/native.js","../node_modules/@aws-sdk/client-chime-sdk-messaging/node_modules/uuid/dist/esm-browser/rng.js","../node_modules/@aws-sdk/client-chime-sdk-messaging/node_modules/uuid/dist/esm-browser/stringify.js","../node_modules/@aws-sdk/client-chime-sdk-messaging/node_modules/uuid/dist/esm-browser/v4.js","../node_modules/@aws-sdk/client-chime-sdk-messaging/dist-es/models/ChimeSDKMessagingServiceException.js","../node_modules/@aws-sdk/client-chime-sdk-messaging/dist-es/models/models_0.js","../node_modules/@aws-sdk/client-chime-sdk-messaging/dist-es/protocols/Aws_restJson1.js","../node_modules/@aws-sdk/client-chime-sdk-messaging/dist-es/commands/AssociateChannelFlowCommand.js","../node_modules/@aws-sdk/client-chime-sdk-messaging/dist-es/commands/BatchCreateChannelMembershipCommand.js","../node_modules/@aws-sdk/client-chime-sdk-messaging/dist-es/commands/ChannelFlowCallbackCommand.js","../node_modules/@aws-sdk/client-chime-sdk-messaging/dist-es/commands/CreateChannelBanCommand.js","../node_modules/@aws-sdk/client-chime-sdk-messaging/dist-es/commands/CreateChannelCommand.js","../node_modules/@aws-sdk/client-chime-sdk-messaging/dist-es/commands/CreateChannelFlowCommand.js","../node_modules/@aws-sdk/client-chime-sdk-messaging/dist-es/commands/CreateChannelMembershipCommand.js","../node_modules/@aws-sdk/client-chime-sdk-messaging/dist-es/commands/CreateChannelModeratorCommand.js","../node_modules/@aws-sdk/client-chime-sdk-messaging/dist-es/commands/DeleteChannelBanCommand.js","../node_modules/@aws-sdk/client-chime-sdk-messaging/dist-es/commands/DeleteChannelCommand.js","../node_modules/@aws-sdk/client-chime-sdk-messaging/dist-es/commands/DeleteChannelFlowCommand.js","../node_modules/@aws-sdk/client-chime-sdk-messaging/dist-es/commands/DeleteChannelMembershipCommand.js","../node_modules/@aws-sdk/client-chime-sdk-messaging/dist-es/commands/DeleteChannelMessageCommand.js","../node_modules/@aws-sdk/client-chime-sdk-messaging/dist-es/commands/DeleteChannelModeratorCommand.js","../node_modules/@aws-sdk/client-chime-sdk-messaging/dist-es/commands/DeleteMessagingStreamingConfigurationsCommand.js","../node_modules/@aws-sdk/client-chime-sdk-messaging/dist-es/commands/DescribeChannelBanCommand.js","../node_modules/@aws-sdk/client-chime-sdk-messaging/dist-es/commands/DescribeChannelCommand.js","../node_modules/@aws-sdk/client-chime-sdk-messaging/dist-es/commands/DescribeChannelFlowCommand.js","../node_modules/@aws-sdk/client-chime-sdk-messaging/dist-es/commands/DescribeChannelMembershipCommand.js","../node_modules/@aws-sdk/client-chime-sdk-messaging/dist-es/commands/DescribeChannelMembershipForAppInstanceUserCommand.js","../node_modules/@aws-sdk/client-chime-sdk-messaging/dist-es/commands/DescribeChannelModeratedByAppInstanceUserCommand.js","../node_modules/@aws-sdk/client-chime-sdk-messaging/dist-es/commands/DescribeChannelModeratorCommand.js","../node_modules/@aws-sdk/client-chime-sdk-messaging/dist-es/commands/DisassociateChannelFlowCommand.js","../node_modules/@aws-sdk/client-chime-sdk-messaging/dist-es/commands/GetChannelMembershipPreferencesCommand.js","../node_modules/@aws-sdk/client-chime-sdk-messaging/dist-es/commands/GetChannelMessageCommand.js","../node_modules/@aws-sdk/client-chime-sdk-messaging/dist-es/commands/GetChannelMessageStatusCommand.js","../node_modules/@aws-sdk/client-chime-sdk-messaging/dist-es/commands/GetMessagingSessionEndpointCommand.js","../node_modules/@aws-sdk/client-chime-sdk-messaging/dist-es/commands/GetMessagingStreamingConfigurationsCommand.js","../node_modules/@aws-sdk/client-chime-sdk-messaging/dist-es/commands/ListChannelBansCommand.js","../node_modules/@aws-sdk/client-chime-sdk-messaging/dist-es/commands/ListChannelFlowsCommand.js","../node_modules/@aws-sdk/client-chime-sdk-messaging/dist-es/commands/ListChannelMembershipsCommand.js","../node_modules/@aws-sdk/client-chime-sdk-messaging/dist-es/commands/ListChannelMembershipsForAppInstanceUserCommand.js","../node_modules/@aws-sdk/client-chime-sdk-messaging/dist-es/commands/ListChannelMessagesCommand.js","../node_modules/@aws-sdk/client-chime-sdk-messaging/dist-es/commands/ListChannelModeratorsCommand.js","../node_modules/@aws-sdk/client-chime-sdk-messaging/dist-es/commands/ListChannelsAssociatedWithChannelFlowCommand.js","../node_modules/@aws-sdk/client-chime-sdk-messaging/dist-es/commands/ListChannelsCommand.js","../node_modules/@aws-sdk/client-chime-sdk-messaging/dist-es/commands/ListChannelsModeratedByAppInstanceUserCommand.js","../node_modules/@aws-sdk/client-chime-sdk-messaging/dist-es/commands/ListSubChannelsCommand.js","../node_modules/@aws-sdk/client-chime-sdk-messaging/dist-es/commands/ListTagsForResourceCommand.js","../node_modules/@aws-sdk/client-chime-sdk-messaging/dist-es/commands/PutChannelExpirationSettingsCommand.js","../node_modules/@aws-sdk/client-chime-sdk-messaging/dist-es/commands/PutChannelMembershipPreferencesCommand.js","../node_modules/@aws-sdk/client-chime-sdk-messaging/dist-es/commands/PutMessagingStreamingConfigurationsCommand.js","../node_modules/@aws-sdk/client-chime-sdk-messaging/dist-es/commands/RedactChannelMessageCommand.js","../node_modules/@aws-sdk/client-chime-sdk-messaging/dist-es/commands/SearchChannelsCommand.js","../node_modules/@aws-sdk/client-chime-sdk-messaging/dist-es/commands/SendChannelMessageCommand.js","../node_modules/@aws-sdk/client-chime-sdk-messaging/dist-es/commands/TagResourceCommand.js","../node_modules/@aws-sdk/client-chime-sdk-messaging/dist-es/commands/UntagResourceCommand.js","../node_modules/@aws-sdk/client-chime-sdk-messaging/dist-es/commands/UpdateChannelCommand.js","../node_modules/@aws-sdk/client-chime-sdk-messaging/dist-es/commands/UpdateChannelFlowCommand.js","../node_modules/@aws-sdk/client-chime-sdk-messaging/dist-es/commands/UpdateChannelMessageCommand.js","../node_modules/@aws-sdk/client-chime-sdk-messaging/dist-es/commands/UpdateChannelReadMarkerCommand.js","../node_modules/@aws-sdk/client-chime-sdk-messaging/dist-es/ChimeSDKMessaging.js","../node_modules/@smithy/smithy-client/dist-es/create-aggregated-client.js","../node_modules/@aws-sdk/client-chime-sdk-messaging/dist-es/pagination/ListChannelBansPaginator.js","../node_modules/@aws-sdk/client-chime-sdk-messaging/dist-es/pagination/ListChannelFlowsPaginator.js","../node_modules/@aws-sdk/client-chime-sdk-messaging/dist-es/pagination/ListChannelMembershipsForAppInstanceUserPaginator.js","../node_modules/@aws-sdk/client-chime-sdk-messaging/dist-es/pagination/ListChannelMembershipsPaginator.js","../node_modules/@aws-sdk/client-chime-sdk-messaging/dist-es/pagination/ListChannelMessagesPaginator.js","../node_modules/@aws-sdk/client-chime-sdk-messaging/dist-es/pagination/ListChannelModeratorsPaginator.js","../node_modules/@aws-sdk/client-chime-sdk-messaging/dist-es/pagination/ListChannelsAssociatedWithChannelFlowPaginator.js","../node_modules/@aws-sdk/client-chime-sdk-messaging/dist-es/pagination/ListChannelsModeratedByAppInstanceUserPaginator.js","../node_modules/@aws-sdk/client-chime-sdk-messaging/dist-es/pagination/ListChannelsPaginator.js","../node_modules/@aws-sdk/client-chime-sdk-messaging/dist-es/pagination/ListSubChannelsPaginator.js","../node_modules/@aws-sdk/client-chime-sdk-messaging/dist-es/pagination/SearchChannelsPaginator.js","../node_modules/amazon-chime-sdk-js/src/eventcontroller/DefaultEventController.ts","../node_modules/aws-sdk/clients/devicefarm.js","../node_modules/react-app-polyfill/ie9.js","../node_modules/node-forge/lib/mgf.js","../node_modules/aws-sdk/clients/workdocs.js","../node_modules/pako/lib/zlib/inffast.js","../node_modules/core-js/internals/environment-v8-version.js","../node_modules/aws-sdk/clients/kinesisvideomedia.js","../node_modules/core-js/modules/esnext.map.map-values.js","../node_modules/aws-sdk/lib/model/operation.js","../node_modules/core-js/internals/shared.js","../node_modules/amazon-chime-sdk-js/src/sdp/SDPCandidateType.ts","../node_modules/core-js/modules/esnext.set.is-subset-of.js","../node_modules/aws-sdk/lib/dynamodb/set.js","../node_modules/core-js/internals/set-is-subset-of.js","../node_modules/aws-sdk/clients/elb.js","../node_modules/aws-sdk/lib/services/cloudfront.js","../node_modules/amazon-chime-sdk-js/src/devicecontroller/PermissionDeniedError.ts","../node_modules/core-js/modules/esnext.set.difference.js","../node_modules/aws-sdk/clients/lexruntimev2.js","../node_modules/has-property-descriptors/index.js","../node_modules/axios/lib/helpers/normalizeHeaderName.js","../node_modules/amazon-chime-sdk-js/src/clientmetricreport/ClientVideoStreamReceivingReport.ts","../node_modules/node-forge/lib/md.all.js","../node_modules/amazon-chime-sdk-js/src/videodownlinkbandwidthpolicy/NoVideoDownlinkBandwidthPolicy.ts","../node_modules/amazon-chime-sdk-js/src/signalingclient/ServerSideNetworkAdaption.ts","../node_modules/aws-sdk/clients/firehose.js","../node_modules/aws-sdk/clients/ssm.js","../node_modules/core-js/internals/is-null-or-undefined.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/core-js/internals/is-array-iterator-method.js","../node_modules/amazon-chime-sdk-js/src/eventreporter/DefaultMeetingEventReporter.ts","../node_modules/node-forge/lib/kem.js","../node_modules/aws-sdk/lib/browserCryptoLib.js","../node_modules/amazon-chime-sdk-js/src/devicecontroller/DefaultDeviceController.ts","../node_modules/amazon-chime-sdk-js/src/backgroundfilter/BackgroundFilterVideoFrameProcessor.ts","../node_modules/@aws-crypto/util/src/index.ts","../node_modules/amazon-chime-sdk-js/src/backoff/FullJitterBackoff.ts","../node_modules/node-forge/lib/util.js","../node_modules/querystring/encode.js","../node_modules/node-forge/lib/pss.js","../node_modules/react/cjs/react.production.min.js","../node_modules/amazon-chime-sdk-js/src/destroyable/Destroyable.ts","../node_modules/core-js/internals/iterators.js","../node_modules/core-js/modules/web.immediate.js","../node_modules/core-js/internals/shared-key.js","../node_modules/amazon-chime-sdk-js/src/scheduler/AsyncScheduler.ts","../node_modules/core-js/internals/global-this.js","../node_modules/aws-sdk/lib/signers/v2.js","../node_modules/amazon-chime-sdk-js/src/videostreamindex/DefaultVideoStreamIndex.ts","../node_modules/core-js/internals/inspect-source.js","../node_modules/aws-sdk/clients/sns.js","../node_modules/node-forge/lib/asn1.js","../node_modules/aws-sdk/lib/cloudfront/signer.js","../node_modules/core-js/internals/define-built-in.js","../node_modules/core-js/internals/copy-constructor-properties.js","../node_modules/pako/lib/zlib/crc32.js","../node_modules/amazon-chime-sdk-js/src/datamessage/DataMessage.ts","../node_modules/core-js/internals/classof-raw.js","../node_modules/call-bind-apply-helpers/actualApply.js","../node_modules/amazon-chime-sdk-js/src/voicefocus/VoiceFocusTransformDevice.ts","../node_modules/aws-sdk/node_modules/uuid/dist/index.js","../node_modules/protobufjs/src/util/longbits.js","../node_modules/amazon-chime-sdk-js/src/sessionstatecontroller/SessionStateControllerState.ts","../node_modules/core-js/internals/enum-bug-keys.js","../node_modules/core-js/modules/esnext.set.is-superset-of.js","../node_modules/aws-sdk/lib/s3/managed_upload.js","../node_modules/aws-sdk/clients/codebuild.js","../node_modules/aws-sdk/clients/cloudhsm.js","../node_modules/react-phone-input-2/lib/lib.js","../node_modules/core-js/internals/object-get-own-property-names.js","../node_modules/aws-sdk/lib/realclock/browserClock.js","../node_modules/shallowequal/index.js","../node_modules/core-js/internals/is-pure.js","../node_modules/axios/lib/core/buildFullPath.js","../node_modules/function-bind/implementation.js","../node_modules/side-channel-map/index.js","../node_modules/node-forge/lib/pbkdf2.js","../node_modules/amazon-chime-sdk-js/src/eventcontroller/flattenEventAttributes.ts","../node_modules/aws-sdk/clients/cloudwatch.js","../node_modules/node-forge/lib/prime.js","../node_modules/amazon-chime-sdk-js/src/transcript/TranscriptLanguageWithScore.ts","../node_modules/amazon-chime-sdk-js/src/videotile/VideoTileState.ts","../node_modules/querystring/decode.js","../node_modules/aws-sdk/clients/iotanalytics.js","../node_modules/side-channel/index.js","../node_modules/core-js/internals/weak-map-basic-detection.js","../node_modules/amazon-chime-sdk-js/src/task/PromoteToPrimaryMeetingTask.ts","../node_modules/amazon-chime-sdk-js/src/task/ReceiveVideoStreamIndexTask.ts","../node_modules/node-forge/lib/jsbn.js","../node_modules/node-forge/lib/ed25519.js","../node_modules/aws-sdk/lib/credentials.js","../node_modules/aws-sdk/lib/services/iotdata.js","../node_modules/aws-sdk/node_modules/uuid/dist/sha1-browser.js","../node_modules/amazon-chime-sdk-js/src/videodownlinkbandwidthpolicy/VideoPreferences.ts","../node_modules/core-js/modules/esnext.set.join.js","../node_modules/amazon-chime-sdk-js/src/task/ParallelGroupTask.ts","../node_modules/amazon-chime-sdk-js/src/clientmetricreport/StreamMetricReport.ts","../node_modules/@aws-crypto/sha256-js/src/jsSha256.ts","../node_modules/axios/lib/axios.js","../node_modules/axios/lib/helpers/isURLSameOrigin.js","../node_modules/aws-sdk/lib/signers/v4.js","../node_modules/core-js/internals/get-iterator.js","../node_modules/pako/lib/inflate.js","../node_modules/amazon-chime-sdk-js/src/clientmetricreport/RedundantAudioRecoveryMetricReport.ts","../node_modules/protobufjs/minimal.js","../node_modules/amazon-chime-sdk-js/src/videodownlinkbandwidthpolicy/VideoPriorityBasedPolicy.ts","../node_modules/aws-sdk/lib/protocol/rest_xml.js","../node_modules/protobufjs/src/roots.js","../node_modules/amazon-chime-sdk-js/src/websocketadapter/WebSocketReadyState.ts","../node_modules/aws-sdk/clients/cognitoidentity.js","../node_modules/amazon-chime-sdk-js/libs/voicefocus/support.js","../node_modules/amazon-chime-sdk-js/src/task/FinishGatheringICECandidatesTask.ts","../node_modules/node-forge/lib/pkcs7.js","../node_modules/qs/lib/index.js","../node_modules/aws-sdk/clients/kms.js","../node_modules/node-forge/lib/des.js","../node_modules/core-js/modules/esnext.set.intersection.js","../node_modules/core-js/internals/to-property-key.js","../node_modules/aws-sdk/lib/event-stream/parse-message.js","../node_modules/amazon-chime-sdk-js/src/videouplinkbandwidthpolicy/BitrateParameters.ts","../node_modules/amazon-chime-sdk-js/src/connectionhealthpolicy/UnusableAudioWarningConnectionHealthPolicy.ts","../node_modules/amazon-chime-sdk-js/src/transceivercontroller/VideoOnlyTransceiverController.ts","../node_modules/aws-sdk/clients/elbv2.js","../node_modules/aws-sdk/lib/signers/s3.js","../node_modules/redux-persist/lib/storage/getStorage.js","../node_modules/aws-sdk/lib/protocol/query.js","../node_modules/core-js/internals/use-symbol-as-uid.js","../node_modules/amazon-chime-sdk-js/src/task/SerialGroupTask.ts","../node_modules/core-js/internals/is-callable.js","../node_modules/@semantic-ui-react/event-stack/lib/cjs/event-stack.production.js","../node_modules/amazon-chime-sdk-js/src/meetingsession/MeetingSessionLifecycleEvent.ts","../node_modules/pako/lib/utils/common.js","../node_modules/aws-sdk/clients/directconnect.js","../node_modules/amazon-chime-sdk-js/src/devicecontroller/NoOpDeviceController.ts","../node_modules/amazon-chime-sdk-js/src/signalingclient/SignalingClientVideoSubscriptionConfiguration.ts","../node_modules/amazon-chime-sdk-js/src/connectionhealthpolicy/ConnectionHealthData.ts","../node_modules/buffer/index.js","../node_modules/react-push-notification/dist/notifications/Storage.js","../node_modules/node-forge/lib/md5.js","../node_modules/aws-sdk/clients/forecastservice.js","../node_modules/amazon-chime-sdk-js/src/videoelementfactory/NoOpVideoElementFactory.ts","../node_modules/core-js/internals/to-indexed-object.js","../node_modules/amazon-chime-sdk-js/src/backgroundblurprocessor/ModelSpecBuilder.ts","../node_modules/amazon-chime-sdk-js/src/signalingclient/SignalingClientJoin.ts","../node_modules/axios/lib/helpers/bind.js","../node_modules/scheduler/cjs/scheduler.production.min.js","../node_modules/events/events.js","../node_modules/node-forge/lib/pkcs1.js","../node_modules/axios/lib/cancel/CancelToken.js","../node_modules/core-js/internals/function-uncurry-this.js","../node_modules/amazon-chime-sdk-js/libs/voicefocus/loader.js","../node_modules/amazon-chime-sdk-js/src/audiomixcontroller/DefaultAudioMixController.ts","../node_modules/aws-sdk/clients/cognitoidentityserviceprovider.js","../node_modules/amazon-chime-sdk-js/src/videostreamindex/VideoStreamDescription.ts","../node_modules/core-js/internals/uid.js","../node_modules/core-js/internals/fails.js","../node_modules/amazon-chime-sdk-js/src/backgroundblurprocessor/BackgroundBlurStrength.ts","../node_modules/amazon-chime-sdk-js/src/scheduler/IntervalScheduler.ts","../node_modules/amazon-chime-sdk-js/src/task/CleanStoppedSessionTask.ts","../node_modules/amazon-chime-sdk-js/src/task/CreateSDPTask.ts","../node_modules/amazon-chime-sdk-js/src/devicecontroller/VideoQualitySettings.ts","../node_modules/aws-sdk/lib/credentials/chainable_temporary_credentials.js","../node_modules/amazon-chime-sdk-js/src/versioning/Versioning.ts","../node_modules/amazon-chime-sdk-js/src/devicecontroller/OverconstrainedError.ts","../node_modules/es-errors/index.js","../node_modules/amazon-chime-sdk-js/src/connectionhealthpolicy/ReconnectionHealthPolicy.ts","../node_modules/core-js/internals/ie8-dom-define.js","../node_modules/amazon-chime-sdk-js/src/videodownlinkbandwidthpolicy/VideoPreference.ts","../node_modules/node-forge/lib/forge.js","../node_modules/core-js/internals/environment-user-agent.js","../node_modules/core-js/internals/html.js","../node_modules/aws-sdk/clients/browser_default.js","../node_modules/core-js/internals/iterate.js","../node_modules/react-push-notification/dist/notifications/Notifications.js","../node_modules/aws-sdk/lib/credentials/cognito_identity_credentials.js","../node_modules/core-js/internals/an-object.js","../node_modules/node-forge/lib/cipherModes.js","../node_modules/aws-sdk/lib/model/shape.js","../node_modules/amazon-chime-sdk-js/src/attendee/Attendee.ts","../node_modules/amazon-chime-sdk-js/src/videotilecontroller/DefaultVideoTileController.ts","../node_modules/math-intrinsics/floor.js","../node_modules/aws-sdk/clients/acm.js","../node_modules/aws-sdk/clients/resourcegroups.js","../node_modules/amazon-chime-sdk-js/src/devicecontroller/NotReadableError.ts","../node_modules/core-js/internals/function-name.js","../node_modules/react-push-notification/dist/index.js","../node_modules/core-js/internals/ordinary-to-primitive.js","../node_modules/aws-sdk/lib/services/sqs.js","../node_modules/redux-persist/lib/storage/session.js","../node_modules/react-redux/node_modules/react-is/index.js","../node_modules/core-js/modules/esnext.set.reduce.js","../node_modules/core-js/internals/document-create-element.js","../node_modules/amazon-chime-sdk-js/src/audiovideofacade/DefaultAudioVideoFacade.ts","../node_modules/core-js/internals/set-difference.js","../node_modules/pako/lib/deflate.js","../node_modules/@aws-crypto/util/src/convertToBuffer.ts","../node_modules/protobufjs/src/writer_buffer.js","../node_modules/amazon-chime-sdk-js/src/task/LeaveAndReceiveLeaveAckTask.ts","../node_modules/core-js/modules/esnext.set.filter.js","../node_modules/hasown/index.js","../node_modules/base64-js/index.js","../node_modules/aws-sdk/clients/route53.js","../node_modules/amazon-chime-sdk-js/src/meetingsession/MeetingSessionStatusCode.ts","../node_modules/aws-sdk/lib/signers/v3.js","../node_modules/aws-sdk/clients/cognitosync.js","../node_modules/aws-sdk/lib/credentials/web_identity_credentials.js","../node_modules/amazon-chime-sdk-js/src/clientmetricreport/ClientMetricReportDirection.ts","../node_modules/amazon-chime-sdk-js/src/logger/NoOpLogger.ts","../node_modules/@aws-sdk/util-hex-encoding/dist-es/index.js","../node_modules/core-js/modules/esnext.symbol.pattern-match.js","../node_modules/amazon-chime-sdk-js/src/clientmetricreport/GlobalMetricReport.ts","../node_modules/protobufjs/src/writer.js","../node_modules/amazon-chime-sdk-js/src/sdp/SDP.ts","../node_modules/aws-sdk/clients/location.js","../node_modules/amazon-chime-sdk-js/libs/voicefocus/worklet-worker-postMessage-node.js","../node_modules/amazon-chime-sdk-js/src/reconnectcontroller/DefaultReconnectController.ts","../node_modules/core-js/modules/esnext.map.map-keys.js","../node_modules/amazon-chime-sdk-js/src/task/OpenSignalingConnectionTask.ts","../node_modules/possible-typed-array-names/index.js","../node_modules/aws-sdk/node_modules/punycode/punycode.js","../node_modules/dunder-proto/get.js","../node_modules/core-js/internals/well-known-symbol-wrapped.js","../node_modules/amazon-chime-sdk-js/src/transceivercontroller/DefaultTransceiverController.ts","../node_modules/get-proto/Object.getPrototypeOf.js","../node_modules/pako/index.js","../node_modules/promise/lib/es6-extensions.js","../node_modules/aws-sdk/clients/elastictranscoder.js","../node_modules/amazon-chime-sdk-js/src/messagingsession/PrefetchOn.ts","../node_modules/aws-sdk/clients/redshift.js","../node_modules/amazon-chime-sdk-js/src/logger/POSTLogger.ts","../node_modules/amazon-chime-sdk-js/src/devicecontroller/SingleNodeAudioTransformDevice.ts","../node_modules/core-js/internals/to-length.js","../node_modules/@protobufjs/utf8/index.js","../node_modules/core-js/modules/esnext.set.of.js","../node_modules/core-js/internals/function-bind-context.js","../node_modules/qs/lib/formats.js","../node_modules/util/support/types.js","../node_modules/asap/browser-raw.js","../node_modules/safe-regex-test/index.js","../node_modules/core-js/internals/to-integer-or-infinity.js","../node_modules/core-js/internals/set-iterate.js","../node_modules/axios/index.js","../node_modules/aws-sdk/lib/browserHmac.js","../node_modules/core-js/internals/array-includes.js","../node_modules/core-js/modules/esnext.map.delete-all.js","../node_modules/core-js/modules/esnext.map.find-key.js","../node_modules/amazon-chime-sdk-js/src/sigv4/DefaultSigV4.ts","../node_modules/amazon-chime-sdk-js/src/meetingsession/MeetingSessionConfiguration.ts","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/protobufjs/src/util/minimal.js","../node_modules/axios/lib/helpers/combineURLs.js","../node_modules/core-js/internals/array-slice.js","../node_modules/amazon-chime-sdk-js/src/backgroundblurprocessor/BackgroundBlurProcessorBuiltIn.ts","../node_modules/aws-sdk/clients/cloudwatchevents.js","../node_modules/amazon-chime-sdk-js/src/utils/Types.ts","../node_modules/node-forge/lib/log.js","../node_modules/object-assign/index.js","../node_modules/amazon-chime-sdk-js/src/task/SetLocalDescriptionTask.ts","../node_modules/aws-sdk/lib/region_config.js","../node_modules/axios/lib/helpers/validator.js","../node_modules/amazon-chime-sdk-js/src/mediastreambroker/NoOpMediaStreamBroker.ts","../node_modules/aws-sdk/lib/resource_waiter.js","../node_modules/core-js/modules/es.map.group-by.js","../node_modules/math-intrinsics/isNaN.js","../node_modules/aws-sdk/lib/signers/v3https.js","../node_modules/amazon-chime-sdk-js/src/task/RunnableTask.ts","../node_modules/amazon-chime-sdk-js/libs/voicefocus/voicefocus.js","../node_modules/core-js/internals/hidden-keys.js","../node_modules/is-regex/index.js","../node_modules/aws-sdk/lib/dynamodb/numberValue.js","../node_modules/core-js/modules/esnext.map.key-by.js","../node_modules/aws-sdk/lib/services/rdsutil.js","../node_modules/pako/lib/zlib/constants.js","../node_modules/amazon-chime-sdk-js/src/videocaptureandencodeparameter/DefaultVideoCaptureAndEncodeParameter.ts","../node_modules/aws-sdk/clients/mobileanalytics.js","../node_modules/amazon-chime-sdk-js/src/sessionstatecontroller/SessionStateControllerTransitionResult.ts","../node_modules/core-js/modules/esnext.symbol.observable.js","../node_modules/amazon-chime-sdk-js/src/meetingsession/MeetingSessionLifecycleEventCondition.ts","../node_modules/aws-sdk/clients/chimesdkmessaging.js","../node_modules/amazon-chime-sdk-js/src/signalingclient/SignalingClientEvent.ts","../node_modules/amazon-chime-sdk-js/libs/voicefocus/decider.js","../node_modules/core-js/internals/set-is-disjoint-from.js","../node_modules/amazon-chime-sdk-js/src/backgroundfilter/BackgroundFilterVideoFrameProcessorDelegate.ts","../node_modules/amazon-chime-sdk-js/src/meetingreadinesschecker/CheckNetworkTCPConnectivityFeedback.ts","../node_modules/amazon-chime-sdk-js/src/task/SetRemoteDescriptionTask.ts","../node_modules/aws-sdk/lib/browserHashUtils.js","../node_modules/node-forge/lib/md.js","../node_modules/core-js/modules/web.clear-immediate.js","../node_modules/amazon-chime-sdk-js/src/videouplinkbandwidthpolicy/DefaultSimulcastUplinkPolicy.ts","../node_modules/amazon-chime-sdk-js/src/task/ListenForVolumeIndicatorsTask.ts","../node_modules/redux-persist/lib/storage/createWebStorage.js","../node_modules/amazon-chime-sdk-js/src/videouplinkbandwidthpolicy/NoVideoUplinkBandwidthPolicy.ts","../node_modules/amazon-chime-sdk-js/src/task/AttachMediaInputTask.ts","../node_modules/amazon-chime-sdk-js/src/signalingclient/SignalingClientSubscribe.ts","../node_modules/amazon-chime-sdk-js/src/useragentparser/DefaultUserAgentParser.ts","../node_modules/core-js/modules/esnext.set.find.js","../node_modules/react-redux/node_modules/react-is/cjs/react-is.production.min.js","../node_modules/amazon-chime-sdk-js/src/statscollector/AudioLogEvent.ts","../node_modules/aws-sdk/lib/xml/builder.js","../node_modules/aws-sdk/clients/rds.js","../node_modules/pako/lib/utils/strings.js","../node_modules/aws-sdk/lib/protocol/helpers.js","../node_modules/axios/lib/helpers/cookies.js","../node_modules/amazon-chime-sdk-js/src/transcript/TranscriptEntity.ts","../node_modules/amazon-chime-sdk-js/src/signalingclient/SignalingClientConnectionRequest.ts","../node_modules/amazon-chime-sdk-js/src/transcript/Transcript.ts","../node_modules/amazon-chime-sdk-js/src/meetingsession/MeetingSessionURLs.ts","../node_modules/aws-sdk/clients/elasticache.js","../node_modules/amazon-chime-sdk-js/libs/voicefocus/types.js","../node_modules/aws-sdk/clients/dynamodb.js","../node_modules/node-forge/lib/pkcs7asn1.js","../node_modules/aws-sdk/clients/mturk.js","../node_modules/axios/lib/core/enhanceError.js","../node_modules/core-js/modules/es.regexp.flags.js","../node_modules/amazon-chime-sdk-js/src/sessionstatecontroller/SessionStateControllerDeferPriority.ts","../node_modules/amazon-chime-sdk-js/src/transceivercontroller/SimulcastTransceiverController.ts","../node_modules/core-js/modules/esnext.map.merge.js","../node_modules/aws-sdk/clients/cloudwatchlogs.js","../node_modules/core-js/modules/esnext.map.group-by.js","../node_modules/amazon-chime-sdk-js/src/backgroundblurprocessor/BackgroundBlurProcessorProvided.ts","../node_modules/node-forge/lib/aesCipherSuites.js","../node_modules/aws-sdk/lib/response.js","../node_modules/react/cjs/react-jsx-runtime.production.min.js","../node_modules/core-js/modules/esnext.map.every.js","../node_modules/es-object-atoms/index.js","../node_modules/get-proto/index.js","../node_modules/aws-sdk/lib/services/rds.js","../node_modules/core-js/internals/get-iterator-method.js","../node_modules/core-js/internals/length-of-array-like.js","../node_modules/core-js/internals/schedulers-fix.js","../node_modules/aws-sdk/node_modules/isarray/index.js","../node_modules/for-each/index.js","../node_modules/core-js/internals/to-absolute-index.js","../node_modules/core-js/internals/internal-state.js","../node_modules/amazon-chime-sdk-js/src/videodownlinkbandwidthpolicy/VideoPriorityBasedPolicyConfig.ts","../node_modules/node-forge/lib/random.js","../node_modules/amazon-chime-sdk-js/src/task/ReceiveAudioInputTask.ts","../node_modules/amazon-chime-sdk-js/src/signalingclient/SignalingClientEventType.ts","../node_modules/protobufjs/src/rpc/service.js","../node_modules/math-intrinsics/abs.js","../node_modules/amazon-chime-sdk-js/src/meetingreadinesschecker/CheckAudioConnectivityFeedback.ts","../node_modules/aws-sdk/clients/comprehendmedical.js","../node_modules/core-js/modules/esnext.set.is-disjoint-from.js","../node_modules/aws-sdk/clients/lambda.js","../node_modules/core-js/internals/object-property-is-enumerable.js","../node_modules/ua-parser-js/src/ua-parser.js","../node_modules/amazon-chime-sdk-js/src/clientmetricreport/ClientMetricReport.ts","../node_modules/amazon-chime-sdk-js/src/activespeakerdetector/DefaultActiveSpeakerDetector.ts","../node_modules/aws-sdk/lib/services/sts.js","../node_modules/core-js/internals/well-known-symbol.js","../node_modules/amazon-chime-sdk-js/src/contentsharecontroller/DefaultContentShareController.ts","../node_modules/amazon-chime-sdk-js/src/videouplinkbandwidthpolicy/DefaultSimulcastUplinkPolicyForContentShare.ts","../node_modules/core-js/modules/esnext.map.update.js","../node_modules/amazon-chime-sdk-js/src/connectionhealthpolicy/ConnectionHealthPolicyConfiguration.ts","../node_modules/core-js/internals/function-call.js","../node_modules/es-errors/type.js","../node_modules/core-js/internals/object-get-own-property-descriptor.js","../node_modules/node-forge/lib/pem.js","../node_modules/axios/lib/cancel/Cancel.js","../node_modules/aws-sdk/clients/connect.js","../node_modules/pako/lib/zlib/inftrees.js","../node_modules/amazon-chime-sdk-js/src/redundantaudioencoder/RedundantAudioEncoder.ts","../node_modules/aws-sdk/clients/iam.js","../node_modules/amazon-chime-sdk-js/src/meetingreadinesschecker/CheckAudioOutputFeedback.ts","../node_modules/aws-sdk/clients/ses.js","../node_modules/call-bind-apply-helpers/applyBind.js","../node_modules/core-js/internals/has-own-property.js","../node_modules/amazon-chime-sdk-js/src/videofx/VideoFxCanvasOpsManager.ts","../node_modules/inherits/inherits_browser.js","../node_modules/axios/lib/core/mergeConfig.js","../node_modules/amazon-chime-sdk-js/src/realtimecontroller/RealtimeState.ts","../node_modules/@protobufjs/pool/index.js","../node_modules/amazon-chime-sdk-js/src/devicecontroller/AudioTransformDevice.ts","../node_modules/core-js/internals/collection-from.js","../node_modules/amazon-chime-sdk-js/src/voicefocus/VoiceFocusDeviceTransformer.ts","../node_modules/aws-sdk/lib/service.js","../node_modules/performance-now/src/performance-now.coffee","../node_modules/amazon-chime-sdk-js/libs/voicefocus/worklet-worker-sab-node.js","../node_modules/which-typed-array/index.js","../node_modules/amazon-chime-sdk-js/src/contentsharecontroller/ContentShareMediaStreamBroker.ts","../node_modules/aws-sdk/lib/model/resource_waiter.js","../node_modules/amazon-chime-sdk-js/src/clientmetricreport/ClientMetricReportMediaType.ts","assets|lazy|/^/.*$/|groupOptions: {}|namespace object","../node_modules/aws-sdk/lib/config_regional_endpoint.js","../node_modules/amazon-chime-sdk-js/libs/voicefocus/fetch.js","../node_modules/aws-sdk/clients/iot.js","../node_modules/amazon-chime-sdk-js/src/cspmonitor/CSPMonitor.ts","../node_modules/core-js/internals/environment-is-ios.js","../node_modules/core-js/internals/create-non-enumerable-property.js","../node_modules/node-forge/lib/aes.js","../node_modules/aws-sdk/clients/rekognition.js","../node_modules/node-forge/lib/rsa.js","../node_modules/amazon-chime-sdk-js/src/modality/DefaultModality.ts","../node_modules/core-js/internals/descriptors.js","../node_modules/amazon-chime-sdk-js/src/task/NoOpTask.ts","../node_modules/amazon-chime-sdk-js/src/transcript/TranscriptEvent.ts","../node_modules/aws-sdk/lib/event_listeners.js","../node_modules/amazon-chime-sdk-js/src/logger/MultiLogger.ts","../node_modules/amazon-chime-sdk-js/src/videoframeprocessor/NoOpVideoFrameProcessor.ts","../node_modules/aws-sdk/lib/model/api.js","../node_modules/amazon-chime-sdk-js/src/transcript/TranscriptionStatusType.ts","../node_modules/is-typed-array/index.js","../node_modules/aws-sdk/lib/core.js","../node_modules/get-intrinsic/index.js","../node_modules/core-js/internals/is-iterable.js","../node_modules/aws-sdk/clients/waf.js","../node_modules/core-js/internals/collection-of.js","../node_modules/core-js/internals/function-uncurry-this-accessor.js","../node_modules/qs/lib/utils.js","../node_modules/aws-sdk/clients/cur.js","../node_modules/amazon-chime-sdk-js/src/task/CreatePeerConnectionTask.ts","../node_modules/core-js/internals/map-iterate.js","../node_modules/aws-sdk/lib/model/paginator.js","../node_modules/get-proto/Reflect.getPrototypeOf.js","../node_modules/amazon-chime-sdk-js/src/transcript/TranscriptItemType.ts","../node_modules/math-intrinsics/round.js","../node_modules/amazon-chime-sdk-js/src/transcript/TranscriptAlternative.ts","../node_modules/node-forge/lib/prng.js","../node_modules/math-intrinsics/min.js","../node_modules/amazon-chime-sdk-js/src/websocketadapter/DefaultWebSocketAdapter.ts","../node_modules/aws-sdk/lib/signers/v4_credentials.js","../node_modules/call-bind/index.js","../node_modules/amazon-chime-sdk-js/src/meetingsession/DefaultMeetingSession.ts","../node_modules/amazon-chime-sdk-js/src/backgroundreplacementprocessor/BackgroundReplacementFilter.ts","../node_modules/amazon-chime-sdk-js/src/videoframeprocessor/CanvasVideoFrameBuffer.ts","../node_modules/aws-sdk/lib/event-stream/int64.js","../node_modules/aws-sdk/lib/polly/presigner.js","../node_modules/es-errors/syntax.js","../node_modules/amazon-chime-sdk-js/src/utils/PromiseQueue.ts","../node_modules/aws-sdk/clients/apigateway.js","../node_modules/amazon-chime-sdk-js/src/browserbehavior/DefaultBrowserBehavior.ts","../node_modules/aws-sdk/node_modules/uuid/dist/v5.js","../node_modules/aws-sdk/lib/protocol/rest.js","../node_modules/aws-sdk/clients/cloudformation.js","../node_modules/amazon-chime-sdk-js/src/videoframeprocessor/DefaultVideoTransformDevice.ts","../node_modules/@aws-crypto/sha256-js/src/constants.ts","../node_modules/es-errors/uri.js","../node_modules/axios/lib/helpers/parseHeaders.js","../node_modules/aws-sdk/clients/personalizeruntime.js","../node_modules/aws-sdk/clients/servicecatalog.js","../node_modules/amazon-chime-sdk-js/src/task/SendAndReceiveDataMessagesTask.ts","../node_modules/amazon-chime-sdk-js/src/backgroundfilter/BackgroundFilterProcessor.ts","../node_modules/aws-sdk/lib/http/xhr.js","../node_modules/aws-sdk/lib/http.js","../node_modules/core-js/internals/set-union.js","../node_modules/node-forge/lib/pbe.js","../node_modules/amazon-chime-sdk-js/src/task/CleanRestartedSessionTask.ts","../node_modules/function-bind/index.js","../node_modules/aws-sdk/lib/credentials/temporary_credentials.js","../node_modules/amazon-chime-sdk-js/src/videofx/DeferredPromise.ts","../node_modules/aws-sdk/lib/dynamodb/types.js","../node_modules/core-js/modules/esnext.map.filter.js","../node_modules/axios/lib/core/dispatchRequest.js","webpack://private-channel-portal/./node_modules/react-push-notification/dist/notifications/Notification.css?466f","../node_modules/aws-sdk/node_modules/buffer/index.js","../node_modules/has-tostringtag/shams.js","../node_modules/amazon-chime-sdk-js/src/connectionhealthpolicy/VideoEncodingCpuConnectionHealthPolicy.ts","../node_modules/@aws-crypto/util/src/uint32ArrayFrom.ts","../node_modules/react/index.js","../node_modules/prop-types/index.js","../node_modules/amazon-chime-sdk-js/src/voicefocus/LoggerAdapter.ts","../node_modules/aws-sdk/lib/event-stream/parse-event.js","../node_modules/core-js/internals/set-intersection.js","../node_modules/core-js/internals/shared-store.js","../node_modules/amazon-chime-sdk-js/src/transcript/DefaultTranscriptionController.ts","../node_modules/aws-sdk/node_modules/uuid/dist/rng-browser.js","../node_modules/core-js/internals/is-forced.js","../node_modules/core-js/modules/esnext.symbol.dispose.js","../node_modules/aws-sdk/clients/kinesis.js","../node_modules/react-fast-compare/index.js","../node_modules/aws-sdk/node_modules/uuid/dist/v3.js","../node_modules/aws-sdk/lib/region/utils.js","../node_modules/@aws-crypto/sha256-js/src/index.ts","../node_modules/aws-sdk/clients/applicationautoscaling.js","../node_modules/@aws-sdk/util-utf8-browser/dist-es/index.js","../node_modules/@aws-sdk/util-utf8-browser/dist-es/whatwgEncodingApi.js","../node_modules/@aws-sdk/util-utf8-browser/dist-es/pureJs.js","../node_modules/aws-sdk/clients/marketplacecommerceanalytics.js","../node_modules/amazon-chime-sdk-js/src/audioprofile/AudioProfile.ts","../node_modules/protobufjs/src/reader_buffer.js","../node_modules/aws-sdk/clients/secretsmanager.js","../node_modules/core-js/internals/function-uncurry-this-clause.js","../node_modules/node-forge/lib/hmac.js","../node_modules/object-inspect/index.js","../node_modules/gopd/gOPD.js","../node_modules/amazon-chime-sdk-js/src/redundantaudioencoderworkercode/RedundantAudioEncoderWorkerCode.ts","../node_modules/is-arguments/index.js","../node_modules/amazon-chime-sdk-js/src/videodownlinkbandwidthpolicy/TargetDisplaySize.ts","../node_modules/amazon-chime-sdk-js/src/statscollector/VideoLogEvent.ts","../node_modules/aws-sdk/lib/state_machine.js","../node_modules/side-channel-list/index.js","../node_modules/aws-sdk/lib/credentials/saml_credentials.js","../node_modules/amazon-chime-sdk-js/src/sessionstatecontroller/SessionStateControllerAction.ts","../node_modules/aws-sdk/clients/comprehend.js","../node_modules/node-forge/lib/cipher.js","../node_modules/amazon-chime-sdk-js/src/signalingclient/DefaultSignalingClient.ts","../node_modules/aws-sdk/lib/browserSha1.js","../node_modules/amazon-chime-sdk-js/src/devicecontroller/NotFoundError.ts","../node_modules/amazon-chime-sdk-js/src/meetingsession/MeetingSessionStatus.ts","../node_modules/amazon-chime-sdk-js/src/messagingsession/MessagingSessionConfiguration.ts","../node_modules/detect-browser/es/index.js","../node_modules/aws-sdk/lib/api_loader.js","../node_modules/core-js/internals/validate-arguments-length.js","../node_modules/aws-sdk/lib/signers/bearer.js","../node_modules/core-js/internals/require-object-coercible.js","../node_modules/core-js/modules/esnext.set.delete-all.js","../node_modules/core-js/modules/esnext.set.add-all.js","../node_modules/aws-sdk/lib/signers/presign.js","../node_modules/react/jsx-runtime.js","../node_modules/aws-sdk/node_modules/uuid/dist/v4.js","../node_modules/amazon-chime-sdk-js/src/videouplinkbandwidthpolicy/NScaleVideoUplinkBandwidthPolicy.ts","../node_modules/axios/lib/core/createError.js","../node_modules/core-js/internals/indexed-object.js","../node_modules/amazon-chime-sdk-js/src/backgroundreplacementprocessor/BackgroundReplacementVideoFrameProcessor.ts","../node_modules/aws-sdk/lib/browserMd5.js","../node_modules/amazon-chime-sdk-js/src/meetingreadinesschecker/CheckAudioInputFeedback.ts","../node_modules/is-generator-function/index.js","../node_modules/aws-sdk/clients/ecs.js","../node_modules/node-forge/lib/mgf1.js","../node_modules/aws-sdk/clients/translate.js","../node_modules/amazon-chime-sdk-js/src/logger/ConsoleLogger.ts","../node_modules/axios/lib/adapters/xhr.js","../node_modules/aws-sdk/lib/util.js","../node_modules/has-symbols/index.js","../node_modules/aws-sdk/lib/model/collection.js","../node_modules/core-js/internals/set-clone.js","../node_modules/amazon-chime-sdk-js/src/connectionhealthpolicy/VideoEncodingConnectionHealthPolicyName.ts","../node_modules/amazon-chime-sdk-js/src/backoff/FullJitterBackoffFactory.ts","../node_modules/amazon-chime-sdk-js/src/videosource/VideoSource.ts","../node_modules/axios/lib/helpers/isAbsoluteURL.js","../node_modules/amazon-chime-sdk-js/src/videodownlinkbandwidthpolicy/VideoAdaptiveProbePolicy.ts","../node_modules/core-js/modules/esnext.set.union.js","../node_modules/amazon-chime-sdk-js/src/task/MonitorTask.ts","../node_modules/aws-sdk/clients/sts.js","../node_modules/@aws-crypto/sha256-js/node_modules/tslib/tslib.es6.js","../node_modules/pako/lib/zlib/trees.js","../node_modules/amazon-chime-sdk-js/libs/voicefocus/worklet-inline-node.js","../node_modules/core-js/internals/get-built-in.js","../node_modules/core-js/internals/object-define-property.js","../node_modules/node-forge/lib/pkcs12.js","../node_modules/aws-sdk/lib/discover_endpoint.js","../node_modules/aws-sdk/clients/cloudfront.js","../node_modules/amazon-chime-sdk-js/src/simulcastlayers/SimulcastLayers.ts","../node_modules/aws-sdk/clients/gamelift.js","../node_modules/react-app-polyfill/ie11.js","../node_modules/aws-sdk/clients/lexmodelbuildingservice.js","../node_modules/aws-sdk/lib/services/s3util.js","../node_modules/core-js/internals/environment-is-node.js","../node_modules/aws-sdk/lib/browser_loader.js","../node_modules/amazon-chime-sdk-js/src/connectionmonitor/SignalingAndMetricsConnectionMonitor.ts","../node_modules/core-js/internals/to-string.js","../node_modules/amazon-chime-sdk-js/src/task/ReceiveVideoInputTask.ts","../node_modules/define-data-property/index.js","../node_modules/es-errors/ref.js","../node_modules/amazon-chime-sdk-js/src/sdp/VideoCodecCapability.ts","../node_modules/set-function-length/index.js","../node_modules/core-js/internals/try-to-string.js","../node_modules/node-forge/lib/tls.js","../node_modules/core-js/internals/function-bind-native.js","../node_modules/aws-sdk/vendor/endpoint-cache/index.js","../node_modules/crypto-js/sha256.js","../node_modules/aws-sdk/clients/polly.js","../node_modules/amazon-chime-sdk-js/src/logger/Log.ts","../node_modules/amazon-chime-sdk-js/src/meetingsession/MeetingSessionVideoAvailability.ts","../node_modules/aws-sdk/lib/protocol/rest_json.js","../node_modules/amazon-chime-sdk-js/src/devicecontroller/GetUserMediaError.ts","../node_modules/@protobufjs/eventemitter/index.js","../node_modules/exenv/index.js","../node_modules/react-app-polyfill/stable.js","../node_modules/aws-sdk/lib/rds/signer.js","../node_modules/aws-sdk/clients/amp.js","../node_modules/aws-sdk/clients/kinesisvideoarchivedmedia.js","../node_modules/protobufjs/src/rpc.js","../node_modules/buffer/node_modules/ieee754/index.js","../node_modules/amazon-chime-sdk-js/src/realtimecontroller/RealtimeVolumeIndicator.ts","../node_modules/crypto-js/enc-base64.js","../node_modules/is-callable/index.js","../node_modules/scheduler/index.js","../node_modules/aws-sdk/clients/emr.js","../node_modules/core-js/modules/web.set-immediate.js","../node_modules/core-js/internals/math-trunc.js","../node_modules/core-js/modules/esnext.set.map.js","../node_modules/amazon-chime-sdk-js/src/meetingreadinesschecker/CheckCameraResolutionFeedback.ts","../node_modules/core-js/internals/task.js","../node_modules/aws-sdk/clients/chimesdkidentity.js","../node_modules/aws-sdk/lib/xml/browser_parser.js","../node_modules/es-errors/eval.js","../node_modules/@aws-crypto/sha256-js/src/RawSha256.ts","../node_modules/aws-sdk/clients/cloudtrail.js","../node_modules/@protobufjs/float/index.js","../node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","../node_modules/core-js/internals/set-size.js","../node_modules/amazon-chime-sdk-js/src/devicecontroller/VideoTransformDevice.ts","../node_modules/core-js/modules/esnext.map.of.js","../node_modules/aws-sdk/clients/configservice.js","../node_modules/core-js/modules/esnext.map.reduce.js","../node_modules/amazon-chime-sdk-js/src/videotile/DefaultVideoTile.ts","../node_modules/axios/lib/defaults.js","../node_modules/node-forge/lib/rc2.js","../node_modules/aws-sdk/clients/machinelearning.js","../node_modules/aws-sdk/lib/dynamodb/converter.js","../node_modules/es-define-property/index.js","../node_modules/qs/lib/stringify.js","../node_modules/node-forge/lib/ssh.js","../node_modules/aws-sdk/clients/elasticbeanstalk.js","../node_modules/core-js/modules/esnext.map.find.js","../node_modules/react-dom/cjs/react-dom.production.min.js","../node_modules/available-typed-arrays/index.js","../node_modules/core-js/internals/get-iterator-direct.js","../node_modules/amazon-chime-sdk-js/src/logger/NoOpDebugLogger.ts","../node_modules/core-js/internals/set-helpers.js","../node_modules/aws-sdk/lib/xml/xml-node.js","../node_modules/querystring/index.js","../node_modules/amazon-chime-sdk-js/src/connectionhealthpolicy/BaseConnectionHealthPolicy.ts","../node_modules/aws-sdk/vendor/endpoint-cache/utils/LRU.js","../node_modules/node-forge/lib/sha256.js","../node_modules/amazon-chime-sdk-js/src/task/TimeoutTask.ts","../node_modules/amazon-chime-sdk-js/src/mediadevicefactory/DefaultMediaDeviceFactory.ts","../node_modules/core-js/internals/symbol-constructor-detection.js","../node_modules/amazon-chime-sdk-js/src/devicepixelratiomonitor/DefaultDevicePixelRatioMonitor.ts","../node_modules/aws-sdk/clients/ecr.js","../node_modules/core-js/internals/make-built-in.js","../node_modules/crypto-js/core.js","../node_modules/aws-sdk/clients/personalize.js","../node_modules/amazon-chime-sdk-js/src/backgroundblurprocessor/BackgroundBlurVideoFrameProcessorDelegate.ts","../node_modules/@protobufjs/inquire/index.js","../node_modules/aws-sdk/lib/param_validator.js","../node_modules/amazon-chime-sdk-js/src/meetingsession/MeetingSessionCredentials.ts","../node_modules/amazon-chime-sdk-js/src/connectionhealthpolicy/VideoEncodingFramerateConnectionHealthPolicy.ts","../node_modules/aws-sdk/lib/browserSha256.js","../node_modules/amazon-chime-sdk-js/src/videofx/VideoFxProcessor.ts","../node_modules/amazon-chime-sdk-js/src/realtimecontroller/DefaultRealtimeController.ts","../node_modules/aws-sdk/lib/credentials/credential_provider_chain.js","../node_modules/aws-sdk/clients/opsworks.js","../node_modules/aws-sdk/lib/xml/escape-element.js","../node_modules/axios/lib/utils.js","../node_modules/amazon-chime-sdk-js/src/task/BaseTask.ts","../node_modules/core-js/internals/create-property-descriptor.js","../node_modules/node-forge/lib/baseN.js","../node_modules/aws-sdk/node_modules/uuid/dist/v1.js","../node_modules/core-js/internals/function-apply.js","../node_modules/util/util.js","../node_modules/amazon-chime-sdk-js/src/meetingsession/MeetingFeatures.ts","../node_modules/amazon-chime-sdk-js/src/applicationmetadata/ApplicationMetadata.ts","../node_modules/axios/lib/helpers/buildURL.js","../node_modules/amazon-chime-sdk-js/src/task/SubscribeAndReceiveSubscribeAckTask.ts","../node_modules/core-js/internals/object-is-prototype-of.js","../node_modules/core-js/internals/get-method.js","../node_modules/aws-sdk/lib/xml/xml-text.js","../node_modules/amazon-chime-sdk-js/src/voicefocus/VoiceFocusTransformDeviceDelegate.ts","../node_modules/math-intrinsics/pow.js","../node_modules/aws-sdk/lib/signers/request_signer.js","../node_modules/amazon-chime-sdk-js/src/audiovideocontroller/DefaultAudioVideoController.ts","../node_modules/axios/lib/cancel/isCancel.js","../node_modules/aws-sdk/clients/codedeploy.js","../node_modules/core-js/modules/esnext.map.includes.js","../node_modules/core-js/internals/classof.js","../node_modules/call-bound/index.js","../node_modules/path-to-regexp/index.js","../node_modules/pako/lib/zlib/messages.js","../node_modules/amazon-chime-sdk-js/src/meetingreadinesschecker/DefaultMeetingReadinessChecker.ts","../node_modules/aws-sdk/lib/json/builder.js","../node_modules/pako/lib/zlib/adler32.js","../node_modules/aws-sdk/lib/services/s3.js","../node_modules/core-js/internals/set-is-superset-of.js","../node_modules/amazon-chime-sdk-js/src/utils/Utils.ts","../node_modules/aws-sdk/lib/json/parser.js","../node_modules/core-js/modules/esnext.map.some.js","../node_modules/axios/lib/core/Axios.js","../node_modules/@aws-crypto/util/src/isEmptyData.ts","../node_modules/aws-sdk/lib/sequential_executor.js","../node_modules/core-js/internals/iterate-simple.js","../node_modules/pako/lib/zlib/deflate.js","../node_modules/node-forge/lib/asn1-validator.js","../node_modules/protobufjs/src/index-minimal.js","../node_modules/core-js/internals/path.js","../node_modules/core-js/internals/regexp-flags.js","../node_modules/aws-sdk/clients/storagegateway.js","../node_modules/bowser/es5.js","../node_modules/node-forge/lib/index.js","../node_modules/node-forge/lib/pki.js","../node_modules/aws-sdk/clients/pricing.js","../node_modules/amazon-chime-sdk-js/src/transcript/TranscriptResult.ts","../node_modules/qs/lib/parse.js","../node_modules/aws-sdk/clients/mediastoredata.js","../node_modules/aws-sdk/node_modules/uuid/dist/v35.js","../node_modules/amazon-chime-sdk-js/src/task/WaitForAttendeePresenceTask.ts","../node_modules/isarray/index.js","../node_modules/amazon-chime-sdk-js/src/eventbufferconfiguration/EventBufferConfiguration.ts","../node_modules/core-js/internals/a-callable.js","../node_modules/amazon-chime-sdk-js/src/connectionhealthpolicy/SendingAudioFailureConnectionHealthPolicy.ts","../node_modules/amazon-chime-sdk-js/src/eventbuffer/InMemoryJSONEventBuffer.ts","../node_modules/core-js/internals/a-set.js","../node_modules/aws-sdk/lib/config.js","../node_modules/amazon-chime-sdk-js/src/backgroundreplacementprocessor/BackgroundReplacementVideoFrameProcessorDelegate.ts","../node_modules/aws-sdk/clients/ec2.js","../node_modules/amazon-chime-sdk-js/src/task/ReceiveRemoteVideoPauseResumeTask.ts","../node_modules/amazon-chime-sdk-js/src/message/Message.ts","../node_modules/aws-sdk/clients/xray.js","../node_modules/amazon-chime-sdk-js/src/devicecontroller/TypeError.ts","../node_modules/amazon-chime-sdk-js/src/eventingestionconfiguration/EventIngestionConfiguration.ts","../node_modules/core-js/internals/well-known-symbol-define.js","../node_modules/amazon-chime-sdk-js/src/logger/LogLevel.ts","../node_modules/core-js/internals/to-object.js","../node_modules/amazon-chime-sdk-js/src/videodownlinkbandwidthpolicy/AllHighestVideoBandwidthPolicy.ts","../node_modules/aws-sdk/clients/lexruntime.js","../node_modules/aws-sdk/lib/browser.js","../node_modules/core-js/internals/own-keys.js","../node_modules/amazon-chime-sdk-js/src/task/JoinAndReceiveIndexTask.ts","../node_modules/amazon-chime-sdk-js/src/index.ts","../node_modules/jmespath/jmespath.js","../node_modules/aws-sdk/clients/s3.js","../node_modules/core-js/internals/define-global-property.js","../node_modules/keyboard-key/src/keyboardKey.js","../node_modules/axios/lib/core/settle.js","../node_modules/aws-sdk/clients/athena.js","../node_modules/protobufjs/src/reader.js","../node_modules/aws-sdk/lib/request.js","../node_modules/amazon-chime-sdk-js/src/eventreporter/NoOpEventReporter.ts","../node_modules/amazon-chime-sdk-js/src/messagingsession/PrefetchSortBy.ts","../node_modules/amazon-chime-sdk-js/src/devicepixelratiosource/DevicePixelRatioWindowSource.ts","../node_modules/core-js/internals/iterator-close.js","../node_modules/amazon-chime-sdk-js/src/transcript/TranscriptItem.ts","../node_modules/amazon-chime-sdk-js/src/transcript/TranscriptionStatus.ts","../node_modules/amazon-chime-sdk-js/src/videostreamindex/SimulcastVideoStreamIndex.ts","../node_modules/amazon-chime-sdk-js/src/meetingreadinesschecker/MeetingReadinessCheckerConfiguration.ts","../node_modules/aws-sdk/clients/route53domains.js","../node_modules/pako/lib/zlib/gzheader.js","../node_modules/call-bind-apply-helpers/reflectApply.js","../node_modules/@protobufjs/aspromise/index.js","../node_modules/amazon-chime-sdk-js/src/backgroundblurprocessor/BackgroundBlurVideoFrameProcessor.ts","../node_modules/whatwg-fetch/fetch.js","../node_modules/react-is/cjs/react-is.production.min.js","../node_modules/aws-sdk/clients/codepipeline.js","../node_modules/side-channel-weakmap/index.js","../node_modules/gopd/index.js","../node_modules/core-js/internals/get-set-record.js","../node_modules/amazon-chime-sdk-js/src/volumeindicatoradapter/DefaultVolumeIndicatorAdapter.ts","../node_modules/core-js/internals/a-map.js","../node_modules/amazon-chime-sdk-js/src/videoframeprocessor/DefaultVideoFrameProcessorPipeline.ts","../node_modules/core-js/internals/map-helpers.js","../node_modules/core-js/modules/esnext.set.every.js","../node_modules/core-js/internals/export.js","../node_modules/@protobufjs/base64/index.js","../node_modules/core-js/internals/is-object.js","../node_modules/core-js/internals/object-get-own-property-symbols.js","../node_modules/aws-sdk/node_modules/uuid/dist/md5-browser.js","../node_modules/aws-sdk/clients/kinesisvideo.js","../node_modules/aws-sdk/lib/services/ec2.js","../node_modules/amazon-chime-sdk-js/build/signalingprotocol/SignalingProtocol.js","../node_modules/math-intrinsics/sign.js","../node_modules/react-dom/index.js","../node_modules/amazon-chime-sdk-js/src/backoff/FullJitterLimitedBackoff.ts","../node_modules/node-forge/lib/sha512.js","../node_modules/aws-sdk/lib/services/machinelearning.js","../node_modules/core-js/modules/esnext.set.from.js","../node_modules/amazon-chime-sdk-js/src/videostreamidset/DefaultVideoStreamIdSet.ts","../node_modules/amazon-chime-sdk-js/src/versioning/version.ts","../node_modules/aws-sdk/node_modules/uuid/dist/bytesToUuid.js","../node_modules/aws-sdk/clients/sqs.js","../node_modules/react-push-notification/dist/notifications/PushNotification.js","../node_modules/axios/lib/helpers/isAxiosError.js","../node_modules/aws-sdk/clients/autoscaling.js","../node_modules/core-js/internals/set-symmetric-difference.js","../node_modules/core-js/internals/to-primitive.js","../node_modules/amazon-chime-sdk-js/src/messagingsession/DefaultMessagingSession.ts","../node_modules/smile2emoji/lib/index.js","../node_modules/amazon-chime-sdk-js/src/mediadevicefactory/MediaDeviceProxyHandler.ts","../node_modules/aws-sdk/lib/event-stream/split-message.js","../node_modules/has-symbols/shams.js","../node_modules/amazon-chime-sdk-js/src/realtimecontroller/RealtimeAttendeePositionInFrame.ts","../node_modules/amazon-chime-sdk-js/src/sdp/ZLIBTextCompressor.ts","../webpack/bootstrap","../webpack/runtime/amd options","../webpack/runtime/compat get default export","../webpack/runtime/create fake namespace object","../webpack/runtime/define property getters","../webpack/runtime/ensure chunk","../webpack/runtime/get javascript chunk filename","../webpack/runtime/get mini-css chunk filename","../webpack/runtime/global","../webpack/runtime/hasOwnProperty shorthand","../webpack/runtime/load script","../webpack/runtime/make namespace object","../webpack/runtime/node module decorator","../webpack/runtime/publicPath","../webpack/runtime/css loading","../webpack/runtime/jsonp chunk loading","../webpack/runtime/nonce","../node_modules/react-redux/es/components/Context.js","../node_modules/react-redux/es/utils/batch.js","../node_modules/react-redux/es/utils/Subscription.js","../node_modules/react-redux/es/utils/useIsomorphicLayoutEffect.js","../node_modules/react-redux/es/components/Provider.js","../node_modules/@babel/runtime/helpers/esm/extends.js","../node_modules/react-redux/es/hooks/useReduxContext.js","../node_modules/react-redux/es/hooks/useStore.js","../node_modules/react-redux/es/hooks/useDispatch.js","../node_modules/react-redux/es/hooks/useSelector.js","../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","../node_modules/react-redux/es/index.js","../node_modules/resolve-pathname/esm/resolve-pathname.js","../node_modules/tiny-invariant/dist/esm/tiny-invariant.js","../node_modules/history/esm/history.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/react-router/modules/miniCreateReactContext.js","../node_modules/react-router/modules/createContext.js","../node_modules/react-router/modules/createNamedContext.js","../node_modules/react-router/modules/HistoryContext.js","../node_modules/react-router/modules/RouterContext.js","../node_modules/react-router/modules/Router.js","../node_modules/react-router/modules/MemoryRouter.js","../node_modules/react-router/modules/Lifecycle.js","../node_modules/react-router/modules/matchPath.js","../node_modules/react-router/modules/Route.js","../node_modules/react-router/modules/StaticRouter.js","../node_modules/react-router/modules/Switch.js","../node_modules/react-router/modules/hooks.js","../node_modules/react-router-dom/modules/BrowserRouter.js","../node_modules/react-router-dom/modules/HashRouter.js","../node_modules/react-router-dom/modules/utils/locationUtils.js","../node_modules/react-router-dom/modules/Link.js","../node_modules/react-router-dom/modules/NavLink.js","../node_modules/@emotion/stylis/dist/stylis.browser.esm.js","../node_modules/styled-components/node_modules/@emotion/unitless/dist/unitless.browser.esm.js","../node_modules/@emotion/memoize/dist/emotion-memoize.esm.js","../node_modules/@emotion/is-prop-valid/dist/emotion-is-prop-valid.esm.js","../node_modules/styled-components/src/utils/interleave.js","../node_modules/styled-components/src/utils/isPlainObject.js","../node_modules/styled-components/src/utils/empties.js","../node_modules/styled-components/src/utils/isFunction.js","../node_modules/styled-components/src/utils/getComponentName.js","../node_modules/styled-components/src/utils/isStyledComponent.js","../node_modules/styled-components/src/constants.js","../node_modules/styled-components/src/utils/error.js","../node_modules/styled-components/src/sheet/GroupedTag.js","../node_modules/styled-components/src/sheet/GroupIDAllocator.js","../node_modules/styled-components/src/sheet/Rehydration.js","../node_modules/styled-components/src/utils/nonce.js","../node_modules/styled-components/src/sheet/dom.js","../node_modules/styled-components/src/sheet/Tag.js","../node_modules/styled-components/src/sheet/Sheet.js","../node_modules/styled-components/src/utils/generateAlphabeticName.js","../node_modules/styled-components/src/utils/hash.js","../node_modules/styled-components/src/utils/isStaticRules.js","../node_modules/styled-components/src/models/ComponentStyle.js","../node_modules/styled-components/src/utils/stylis.js","../node_modules/styled-components/src/utils/stylisPluginInsertRule.js","../node_modules/styled-components/src/models/StyleSheetManager.js","../node_modules/styled-components/src/models/Keyframes.js","../node_modules/styled-components/src/utils/hyphenateStyleName.js","../node_modules/styled-components/src/utils/flatten.js","../node_modules/styled-components/src/utils/isStatelessFunction.js","../node_modules/styled-components/src/utils/addUnitIfNeeded.js","../node_modules/styled-components/src/constructors/css.js","../node_modules/styled-components/src/utils/checkDynamicCreation.js","../node_modules/styled-components/src/utils/determineTheme.js","../node_modules/styled-components/src/utils/escape.js","../node_modules/styled-components/src/utils/generateComponentId.js","../node_modules/styled-components/src/utils/isTag.js","../node_modules/styled-components/src/utils/mixinDeep.js","../node_modules/styled-components/src/models/ThemeProvider.js","../node_modules/styled-components/src/models/StyledComponent.js","../node_modules/styled-components/src/utils/generateDisplayName.js","../node_modules/styled-components/src/utils/joinStrings.js","../node_modules/styled-components/src/utils/domElements.js","../node_modules/styled-components/src/constructors/styled.js","../node_modules/styled-components/src/constructors/constructWithOptions.js","../node_modules/styled-components/src/models/GlobalStyle.js","../node_modules/styled-components/src/constructors/keyframes.js","../node_modules/styled-components/src/models/ServerStyleSheet.js","../node_modules/styled-components/src/base.js","../node_modules/@styled-system/core/dist/index.esm.js","../node_modules/@styled-system/layout/dist/index.esm.js","../node_modules/@styled-system/color/dist/index.esm.js","../node_modules/@styled-system/typography/dist/index.esm.js","../node_modules/@styled-system/flexbox/dist/index.esm.js","../node_modules/@styled-system/grid/dist/index.esm.js","../node_modules/@styled-system/border/dist/index.esm.js","../node_modules/@styled-system/background/dist/index.esm.js","../node_modules/@styled-system/position/dist/index.esm.js","../node_modules/@styled-system/space/dist/index.esm.js","../node_modules/@styled-system/shadow/dist/index.esm.js","../node_modules/@styled-system/css/dist/index.esm.js","../node_modules/@styled-system/variant/dist/index.esm.js","../node_modules/styled-system/dist/index.esm.js","../node_modules/uuid/dist/esm-browser/rng.js","../node_modules/uuid/dist/esm-browser/regex.js","../node_modules/uuid/dist/esm-browser/validate.js","../node_modules/uuid/dist/esm-browser/stringify.js","../node_modules/uuid/dist/esm-browser/v4.js","../node_modules/amazon-chime-sdk-component-library-react/node_modules/tslib/tslib.es6.js","../node_modules/amazon-chime-sdk-component-library-react/node_modules/@emotion/memoize/dist/emotion-memoize.esm.js","../node_modules/amazon-chime-sdk-component-library-react/node_modules/@emotion/is-prop-valid/dist/emotion-is-prop-valid.esm.js","../node_modules/amazon-chime-sdk-component-library-react/src/utils/style.ts","../node_modules/amazon-chime-sdk-component-library-react/src/components/ui/Base/index.ts","../node_modules/amazon-chime-sdk-component-library-react/src/components/ui/Badge/Styled.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/components/ui/Badge/index.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/components/ui/Button/Styled.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/components/ui/Button/index.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/components/ui/Button/SecondaryButton.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/components/ui/Button/PrimaryButton.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/components/ui/Button/IconButton.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/components/ui/icons/Svg.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/components/ui/icons/Arrow/index.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/components/ui/icons/Camera/index.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/components/ui/icons/Caret/index.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/components/ui/icons/Caution/styled.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/components/ui/icons/Caution/index.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/components/ui/icons/Chat/index.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/components/ui/icons/Check/index.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/components/ui/icons/CheckRound/index.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/components/ui/icons/Clear/index.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/components/ui/icons/Clock/index.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/components/ui/icons/Cog/index.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/components/ui/icons/ConnectionProblem/index.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/components/ui/icons/ScreenShare/index.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/components/ui/icons/Crown/index.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/components/ui/icons/Dots/index.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/components/ui/icons/Dock/index.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/components/ui/icons/Document/index.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/components/ui/icons/HandRaise/Styled.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/components/ui/icons/Echo/index.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/components/ui/icons/Information/index.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/components/ui/icons/Laptop/index.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/components/ui/icons/Microphone/Styled.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/components/ui/icons/Microphone/index.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/components/ui/icons/Pause/index.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/components/ui/icons/Phone/index.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/components/ui/icons/Play/index.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/components/ui/icons/Remove/index.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/components/ui/icons/Rooms/index.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/components/ui/icons/Search/index.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/components/ui/icons/Share/index.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/components/ui/icons/Sound/index.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/components/ui/icons/Spinner/index.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/components/ui/icons/UpAndDownCaret/index.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/components/ui/icons/ZoomIn/index.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/components/ui/Checkbox/Styled.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/components/ui/Checkbox/index.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/components/ui/ControlBar/ControlBarContext.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/components/ui/ControlBar/Styled.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/components/ui/ControlBar/index.tsx","../node_modules/amazon-chime-sdk-component-library-react/node_modules/classnames/index.js","../node_modules/amazon-chime-sdk-component-library-react/node_modules/react-popper/lib/esm/Manager.js","../node_modules/amazon-chime-sdk-component-library-react/node_modules/react-popper/lib/esm/utils.js","../node_modules/amazon-chime-sdk-component-library-react/node_modules/@popperjs/core/lib/enums.js","../node_modules/amazon-chime-sdk-component-library-react/node_modules/@popperjs/core/lib/dom-utils/getNodeName.js","../node_modules/amazon-chime-sdk-component-library-react/node_modules/@popperjs/core/lib/dom-utils/getWindow.js","../node_modules/amazon-chime-sdk-component-library-react/node_modules/@popperjs/core/lib/dom-utils/instanceOf.js","../node_modules/amazon-chime-sdk-component-library-react/node_modules/@popperjs/core/lib/modifiers/applyStyles.js","../node_modules/amazon-chime-sdk-component-library-react/node_modules/@popperjs/core/lib/utils/getBasePlacement.js","../node_modules/amazon-chime-sdk-component-library-react/node_modules/@popperjs/core/lib/utils/math.js","../node_modules/amazon-chime-sdk-component-library-react/node_modules/@popperjs/core/lib/utils/userAgent.js","../node_modules/amazon-chime-sdk-component-library-react/node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js","../node_modules/amazon-chime-sdk-component-library-react/node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js","../node_modules/amazon-chime-sdk-component-library-react/node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js","../node_modules/amazon-chime-sdk-component-library-react/node_modules/@popperjs/core/lib/dom-utils/contains.js","../node_modules/amazon-chime-sdk-component-library-react/node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js","../node_modules/amazon-chime-sdk-component-library-react/node_modules/@popperjs/core/lib/dom-utils/isTableElement.js","../node_modules/amazon-chime-sdk-component-library-react/node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js","../node_modules/amazon-chime-sdk-component-library-react/node_modules/@popperjs/core/lib/dom-utils/getParentNode.js","../node_modules/amazon-chime-sdk-component-library-react/node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js","../node_modules/amazon-chime-sdk-component-library-react/node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js","../node_modules/amazon-chime-sdk-component-library-react/node_modules/@popperjs/core/lib/utils/within.js","../node_modules/amazon-chime-sdk-component-library-react/node_modules/@popperjs/core/lib/utils/mergePaddingObject.js","../node_modules/amazon-chime-sdk-component-library-react/node_modules/@popperjs/core/lib/utils/getFreshSideObject.js","../node_modules/amazon-chime-sdk-component-library-react/node_modules/@popperjs/core/lib/utils/expandToHashMap.js","../node_modules/amazon-chime-sdk-component-library-react/node_modules/@popperjs/core/lib/utils/getVariation.js","../node_modules/amazon-chime-sdk-component-library-react/node_modules/@popperjs/core/lib/modifiers/computeStyles.js","../node_modules/amazon-chime-sdk-component-library-react/node_modules/@popperjs/core/lib/modifiers/eventListeners.js","../node_modules/amazon-chime-sdk-component-library-react/node_modules/@popperjs/core/lib/utils/getOppositePlacement.js","../node_modules/amazon-chime-sdk-component-library-react/node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js","../node_modules/amazon-chime-sdk-component-library-react/node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js","../node_modules/amazon-chime-sdk-component-library-react/node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js","../node_modules/amazon-chime-sdk-component-library-react/node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js","../node_modules/amazon-chime-sdk-component-library-react/node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js","../node_modules/amazon-chime-sdk-component-library-react/node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js","../node_modules/amazon-chime-sdk-component-library-react/node_modules/@popperjs/core/lib/utils/rectToClientRect.js","../node_modules/amazon-chime-sdk-component-library-react/node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js","../node_modules/amazon-chime-sdk-component-library-react/node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js","../node_modules/amazon-chime-sdk-component-library-react/node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js","../node_modules/amazon-chime-sdk-component-library-react/node_modules/@popperjs/core/lib/utils/computeOffsets.js","../node_modules/amazon-chime-sdk-component-library-react/node_modules/@popperjs/core/lib/utils/detectOverflow.js","../node_modules/amazon-chime-sdk-component-library-react/node_modules/@popperjs/core/lib/modifiers/hide.js","../node_modules/amazon-chime-sdk-component-library-react/node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js","../node_modules/amazon-chime-sdk-component-library-react/node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js","../node_modules/amazon-chime-sdk-component-library-react/node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js","../node_modules/amazon-chime-sdk-component-library-react/node_modules/@popperjs/core/lib/utils/orderModifiers.js","../node_modules/amazon-chime-sdk-component-library-react/node_modules/@popperjs/core/lib/utils/debounce.js","../node_modules/amazon-chime-sdk-component-library-react/node_modules/@popperjs/core/lib/createPopper.js","../node_modules/amazon-chime-sdk-component-library-react/node_modules/@popperjs/core/lib/utils/mergeByName.js","../node_modules/amazon-chime-sdk-component-library-react/node_modules/@popperjs/core/lib/popper.js","../node_modules/amazon-chime-sdk-component-library-react/node_modules/@popperjs/core/lib/modifiers/popperOffsets.js","../node_modules/amazon-chime-sdk-component-library-react/node_modules/@popperjs/core/lib/modifiers/offset.js","../node_modules/amazon-chime-sdk-component-library-react/node_modules/@popperjs/core/lib/modifiers/flip.js","../node_modules/amazon-chime-sdk-component-library-react/node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js","../node_modules/amazon-chime-sdk-component-library-react/node_modules/@popperjs/core/lib/modifiers/preventOverflow.js","../node_modules/amazon-chime-sdk-component-library-react/node_modules/@popperjs/core/lib/utils/getAltAxis.js","../node_modules/amazon-chime-sdk-component-library-react/node_modules/@popperjs/core/lib/modifiers/arrow.js","../node_modules/amazon-chime-sdk-component-library-react/node_modules/react-fast-compare/index.js","../node_modules/amazon-chime-sdk-component-library-react/node_modules/react-popper/lib/esm/usePopper.js","../node_modules/amazon-chime-sdk-component-library-react/node_modules/react-popper/lib/esm/Popper.js","../node_modules/amazon-chime-sdk-component-library-react/node_modules/warning/warning.js","../node_modules/amazon-chime-sdk-component-library-react/node_modules/react-popper/lib/esm/Reference.js","../node_modules/amazon-chime-sdk-component-library-react/src/constants/index.ts","../node_modules/amazon-chime-sdk-component-library-react/src/hooks/useClickOutside/index.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/hooks/useTabOutside/index.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/components/ui/PopOver/Styled.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/components/ui/PopOver/index.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/components/ui/PopOver/PopOverItem.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/providers/LoggerProvider/index.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/components/ui/WithTooltip/Styled.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/components/ui/WithTooltip/index.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/components/ui/ControlBar/ControlBarButton.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/components/ui/Flex/Styled.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/components/ui/Flex/index.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/hooks/useUniqueId/index.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/components/ui/Label/Styled.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/components/ui/Label/index.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/components/ui/FormField/Styled.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/components/ui/FormField/index.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/components/ui/Heading/Styled.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/components/ui/Input/Styled.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/components/ui/Heading/index.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/components/ui/Input/InputWrapper.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/components/ui/Input/index.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/components/ui/Input/SearchInput.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/components/ui/Modal/ModalContext.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/utils/animations.ts","../node_modules/amazon-chime-sdk-component-library-react/src/components/ui/Navbar/Styled.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/components/ui/Modal/Styled.ts","../node_modules/amazon-chime-sdk-component-library-react/src/components/ui/Notification/Styled.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/components/ui/Notification/index.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/providers/NotificationProvider/state.ts","../node_modules/amazon-chime-sdk-component-library-react/src/components/ui/PopOver/PopOverHeader.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/providers/NotificationProvider/index.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/components/ui/NotificationGroup/Styled.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/components/ui/PopOver/PopOverSeparator.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/components/ui/Radio/Styled.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/components/ui/Radio/index.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/components/ui/RadioGroup/index.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/components/ui/Select/Styled.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/components/ui/Select/index.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/components/ui/Textarea/Styled.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/components/ui/Textarea/index.tsx","../node_modules/amazon-chime-sdk-component-library-react/node_modules/resize-observer-polyfill/dist/ResizeObserver.es.js","../node_modules/amazon-chime-sdk-component-library-react/node_modules/throttle-debounce/index.umd.js","../node_modules/amazon-chime-sdk-component-library-react/src/hooks/useElementAspectRatio/index.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/components/ui/VideoGrid/Styled.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/components/ui/VideoGrid/index.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/components/ui/VideoTile/Styled.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/components/ui/VideoTile/index.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/components/ui/Roster/Styled.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/components/ui/Grid/Styled.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/components/ui/Roster/PopOverMenu.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/components/ui/Roster/RosterGroup.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/components/ui/Roster/RosterName.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/components/ui/Roster/RosterCell/Styled.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/components/ui/Roster/RosterCell/LateMessage.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/components/ui/Roster/RosterCell/index.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/providers/UserActivityProvider/index.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/hooks/useFocusIn/index.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/hooks/useMouseMove/index.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/components/ui/UserActivityManager/Styled.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/components/ui/UserActivityManager/index.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/components/ui/Chat/ChannelList/Styled.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/components/ui/Chat/ChannelList/index.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/components/ui/Chat/ChatBubble/Styled.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/components/ui/Chat/ChatBubble/index.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/components/ui/Chat/ChatBubble/ChatBubbleContainer.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/components/ui/Chat/InfiniteList/Styled.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/components/ui/Chat/InfiniteList/index.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/components/ui/Chat/MessageAttachment/Styled.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/components/ui/Chat/MessageAttachment/index.tsx","../node_modules/amazon-chime-sdk-component-library-react/node_modules/fast-memoize/src/index.js","../node_modules/amazon-chime-sdk-component-library-react/src/components/ui/Utilities/formatDate.ts","../node_modules/amazon-chime-sdk-component-library-react/src/types/index.ts","../node_modules/amazon-chime-sdk-component-library-react/src/providers/ContentShareProvider/state.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/providers/ContentShareProvider/index.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/providers/RemoteVideoTileProvider/state.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/providers/RemoteVideoTileProvider/index.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/providers/FeaturedVideoTileProvider/index.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/providers/LocalAudioOutputProvider/index.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/providers/LocalVideoProvider/index.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/providers/MeetingEventProvider/index.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/providers/RosterProvider/index.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/providers/MeetingProvider/MeetingManager.ts","../node_modules/amazon-chime-sdk-component-library-react/src/providers/MeetingProvider/index.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/providers/AudioVideoProvider/index.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/providers/DevicesProvider/AudioInputProvider.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/providers/DevicesProvider/AudioOutputProvider.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/providers/DevicesProvider/VideoInputProvider.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/providers/DevicesProvider/index.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/utils/device-utils.ts","../node_modules/amazon-chime-sdk-component-library-react/src/components/sdk/DeviceSelection/DeviceInput.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/components/sdk/DeviceSelection/CameraSelection/index.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/utils/use-memo-compare.ts","../node_modules/amazon-chime-sdk-component-library-react/src/providers/BackgroundBlurProvider/index.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/components/sdk/DeviceSelection/CameraSelection/QualitySelection.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/hooks/sdk/useSelectVideoQuality.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/components/sdk/DeviceSelection/MicSelection/index.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/components/sdk/DeviceSelection/SpeakerSelection/index.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/hooks/sdk/useToggleLocalMute.tsx","../node_modules/amazon-chime-sdk-component-library-react/node_modules/lodash.isequal/index.js","../node_modules/amazon-chime-sdk-component-library-react/src/providers/VoiceFocusProvider/index.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/components/sdk/MeetingControls/AudioInputVFControl.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/components/sdk/MeetingControls/AudioOutputControl.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/components/sdk/MeetingControls/ContentShareControl.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/components/sdk/MeetingControls/VideoInputControl.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/components/ui/ContentTile/index.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/components/sdk/ContentShare/index.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/hooks/useApplyVideoObjectFit/index.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/components/sdk/LocalVideo/index.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/components/sdk/PreviewVideo/index.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/components/sdk/RemoteVideo/index.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/components/sdk/RemoteVideos/index.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/components/sdk/FeaturedRemoteVideos/index.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/components/sdk/VideoTileGrid/index.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/hooks/sdk/useAttendeeAudioStatus.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/components/ui/MicVolumeIndicator/Styled.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/components/ui/MicVolumeIndicator/index.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/components/sdk/MicrophoneActivity/index.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/hooks/sdk/useAttendeeStatus.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/components/sdk/RosterAttendee/index.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/providers/BackgroundReplacementProvider/index.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/hooks/sdk/useMeetingStatus.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/hooks/sdk/useLocalAudioInputActivityPreview.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/hooks/sdk/useLocalAudioInputActivity.tsx","../node_modules/amazon-chime-sdk-component-library-react/src/theme/default.ts","../node_modules/amazon-chime-sdk-component-library-react/src/theme/light.ts","../node_modules/amazon-chime-sdk-component-library-react/src/theme/dark.ts","../node_modules/amazon-chime-sdk-component-library-react/src/theme/GlobalStyles.ts","../node_modules/styled-components/src/constructors/createGlobalStyle.js","../node_modules/amazon-chime-sdk-component-library-react/src/theme/StyledReset.ts","routes.tsx","../node_modules/lodash-es/isNil.js","../node_modules/clsx/dist/clsx.m.js","../node_modules/semantic-ui-react/dist/es/lib/numberToWord.js","../node_modules/semantic-ui-react/dist/es/lib/classNameBuilders.js","../node_modules/semantic-ui-react/dist/es/lib/getUnhandledProps.js","../node_modules/lodash-es/_baseFindIndex.js","../node_modules/lodash-es/_baseIsNaN.js","../node_modules/lodash-es/_strictIndexOf.js","../node_modules/lodash-es/_baseIndexOf.js","../node_modules/lodash-es/_freeGlobal.js","../node_modules/lodash-es/_root.js","../node_modules/lodash-es/_Symbol.js","../node_modules/lodash-es/_getRawTag.js","../node_modules/lodash-es/_objectToString.js","../node_modules/lodash-es/_baseGetTag.js","../node_modules/lodash-es/isObject.js","../node_modules/lodash-es/isFunction.js","../node_modules/lodash-es/isLength.js","../node_modules/lodash-es/isArrayLike.js","../node_modules/lodash-es/isArray.js","../node_modules/lodash-es/isObjectLike.js","../node_modules/lodash-es/isString.js","../node_modules/lodash-es/_trimmedEndIndex.js","../node_modules/lodash-es/_baseTrim.js","../node_modules/lodash-es/isSymbol.js","../node_modules/lodash-es/toNumber.js","../node_modules/lodash-es/toFinite.js","../node_modules/lodash-es/toInteger.js","../node_modules/lodash-es/_arrayMap.js","../node_modules/lodash-es/_baseValues.js","../node_modules/lodash-es/_baseTimes.js","../node_modules/lodash-es/_baseIsArguments.js","../node_modules/lodash-es/isArguments.js","../node_modules/lodash-es/stubFalse.js","../node_modules/lodash-es/isBuffer.js","../node_modules/lodash-es/_isIndex.js","../node_modules/lodash-es/_baseIsTypedArray.js","../node_modules/lodash-es/_baseUnary.js","../node_modules/lodash-es/_nodeUtil.js","../node_modules/lodash-es/isTypedArray.js","../node_modules/lodash-es/_arrayLikeKeys.js","../node_modules/lodash-es/_isPrototype.js","../node_modules/lodash-es/_overArg.js","../node_modules/lodash-es/_nativeKeys.js","../node_modules/lodash-es/_baseKeys.js","../node_modules/lodash-es/keys.js","../node_modules/lodash-es/values.js","../node_modules/lodash-es/includes.js","../node_modules/lodash-es/_arrayEach.js","../node_modules/lodash-es/_baseFor.js","../node_modules/lodash-es/_createBaseFor.js","../node_modules/lodash-es/_baseForOwn.js","../node_modules/lodash-es/_baseEach.js","../node_modules/lodash-es/_createBaseEach.js","../node_modules/lodash-es/identity.js","../node_modules/lodash-es/_castFunction.js","../node_modules/lodash-es/forEach.js","../node_modules/semantic-ui-react/dist/es/lib/htmlPropsUtils.js","../node_modules/semantic-ui-react/dist/es/lib/getElementType.js","../node_modules/lodash-es/_arraySome.js","../node_modules/lodash-es/_listCacheClear.js","../node_modules/lodash-es/eq.js","../node_modules/lodash-es/_assocIndexOf.js","../node_modules/lodash-es/_listCacheDelete.js","../node_modules/lodash-es/_listCacheGet.js","../node_modules/lodash-es/_listCacheHas.js","../node_modules/lodash-es/_listCacheSet.js","../node_modules/lodash-es/_ListCache.js","../node_modules/lodash-es/_stackClear.js","../node_modules/lodash-es/_stackDelete.js","../node_modules/lodash-es/_stackGet.js","../node_modules/lodash-es/_stackHas.js","../node_modules/lodash-es/_coreJsData.js","../node_modules/lodash-es/_isMasked.js","../node_modules/lodash-es/_toSource.js","../node_modules/lodash-es/_baseIsNative.js","../node_modules/lodash-es/_getValue.js","../node_modules/lodash-es/_getNative.js","../node_modules/lodash-es/_Map.js","../node_modules/lodash-es/_nativeCreate.js","../node_modules/lodash-es/_hashClear.js","../node_modules/lodash-es/_hashDelete.js","../node_modules/lodash-es/_hashGet.js","../node_modules/lodash-es/_hashHas.js","../node_modules/lodash-es/_hashSet.js","../node_modules/lodash-es/_Hash.js","../node_modules/lodash-es/_mapCacheClear.js","../node_modules/lodash-es/_isKeyable.js","../node_modules/lodash-es/_getMapData.js","../node_modules/lodash-es/_mapCacheDelete.js","../node_modules/lodash-es/_mapCacheGet.js","../node_modules/lodash-es/_mapCacheHas.js","../node_modules/lodash-es/_mapCacheSet.js","../node_modules/lodash-es/_MapCache.js","../node_modules/lodash-es/_stackSet.js","../node_modules/lodash-es/_Stack.js","../node_modules/lodash-es/_setCacheAdd.js","../node_modules/lodash-es/_setCacheHas.js","../node_modules/lodash-es/_SetCache.js","../node_modules/lodash-es/_cacheHas.js","../node_modules/lodash-es/_equalArrays.js","../node_modules/lodash-es/_Uint8Array.js","../node_modules/lodash-es/_mapToArray.js","../node_modules/lodash-es/_setToArray.js","../node_modules/lodash-es/_equalByTag.js","../node_modules/lodash-es/_arrayPush.js","../node_modules/lodash-es/_baseGetAllKeys.js","../node_modules/lodash-es/_arrayFilter.js","../node_modules/lodash-es/stubArray.js","../node_modules/lodash-es/_getSymbols.js","../node_modules/lodash-es/_getAllKeys.js","../node_modules/lodash-es/_equalObjects.js","../node_modules/lodash-es/_DataView.js","../node_modules/lodash-es/_Promise.js","../node_modules/lodash-es/_Set.js","../node_modules/lodash-es/_WeakMap.js","../node_modules/lodash-es/_getTag.js","../node_modules/lodash-es/_baseIsEqualDeep.js","../node_modules/lodash-es/_baseIsEqual.js","../node_modules/lodash-es/_baseIsMatch.js","../node_modules/lodash-es/_isStrictComparable.js","../node_modules/lodash-es/_getMatchData.js","../node_modules/lodash-es/_matchesStrictComparable.js","../node_modules/lodash-es/_baseMatches.js","../node_modules/lodash-es/_isKey.js","../node_modules/lodash-es/memoize.js","../node_modules/lodash-es/_stringToPath.js","../node_modules/lodash-es/_memoizeCapped.js","../node_modules/lodash-es/_baseToString.js","../node_modules/lodash-es/toString.js","../node_modules/lodash-es/_castPath.js","../node_modules/lodash-es/_toKey.js","../node_modules/lodash-es/_baseGet.js","../node_modules/lodash-es/get.js","../node_modules/lodash-es/_baseHasIn.js","../node_modules/lodash-es/_hasPath.js","../node_modules/lodash-es/hasIn.js","../node_modules/lodash-es/_baseMatchesProperty.js","../node_modules/lodash-es/_baseProperty.js","../node_modules/lodash-es/_basePropertyDeep.js","../node_modules/lodash-es/property.js","../node_modules/lodash-es/_baseIteratee.js","../node_modules/lodash-es/_baseSome.js","../node_modules/lodash-es/_isIterateeCall.js","../node_modules/lodash-es/some.js","../node_modules/semantic-ui-react/dist/es/lib/childrenUtils.js","../node_modules/lodash-es/_arrayIncludes.js","../node_modules/lodash-es/_arrayIncludesWith.js","../node_modules/lodash-es/noop.js","../node_modules/lodash-es/_createSet.js","../node_modules/lodash-es/_baseUniq.js","../node_modules/lodash-es/uniq.js","../node_modules/lodash-es/_getPrototype.js","../node_modules/lodash-es/isPlainObject.js","../node_modules/lodash-es/isNumber.js","../node_modules/lodash-es/isBoolean.js","../node_modules/semantic-ui-react/dist/es/lib/factories.js","../node_modules/semantic-ui-react/dist/es/lib/isBrowser.js","../node_modules/lodash-es/_apply.js","../node_modules/lodash-es/last.js","../node_modules/lodash-es/_baseSlice.js","../node_modules/lodash-es/_parent.js","../node_modules/lodash-es/_baseInvoke.js","../node_modules/lodash-es/_overRest.js","../node_modules/lodash-es/constant.js","../node_modules/lodash-es/_defineProperty.js","../node_modules/lodash-es/_baseSetToString.js","../node_modules/lodash-es/_shortOut.js","../node_modules/lodash-es/_setToString.js","../node_modules/lodash-es/_baseRest.js","../node_modules/lodash-es/invoke.js","../node_modules/semantic-ui-react/node_modules/@fluentui/react-component-ref/dist/es/utils.ts","../node_modules/semantic-ui-react/node_modules/@fluentui/react-component-ref/dist/es/RefFindNode.tsx","../node_modules/semantic-ui-react/node_modules/@fluentui/react-component-ref/dist/es/RefForward.tsx","../node_modules/semantic-ui-react/node_modules/@fluentui/react-component-ref/dist/es/Ref.tsx","../node_modules/lodash-es/_baseInRange.js","../node_modules/lodash-es/inRange.js","../node_modules/lodash-es/head.js","../node_modules/semantic-ui-react/dist/es/lib/doesNodeContainClick.js","../node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../node_modules/lodash-es/isUndefined.js","../node_modules/semantic-ui-react/dist/es/lib/ModernAutoControlledComponent.js","../node_modules/semantic-ui-react/dist/es/addons/Portal/PortalInner.js","../node_modules/semantic-ui-react/dist/es/addons/Portal/Portal.js","../node_modules/semantic-ui-react/dist/es/modules/Dimmer/DimmerDimmable.js","../node_modules/semantic-ui-react/dist/es/modules/Dimmer/DimmerInner.js","../node_modules/semantic-ui-react/dist/es/modules/Dimmer/Dimmer.js","../node_modules/semantic-ui-react/dist/es/elements/Icon/IconGroup.js","../node_modules/semantic-ui-react/dist/es/elements/Icon/Icon.js","../node_modules/semantic-ui-react/dist/es/elements/Label/LabelDetail.js","../node_modules/semantic-ui-react/dist/es/elements/Label/LabelGroup.js","../node_modules/semantic-ui-react/dist/es/elements/Label/Label.js","../node_modules/semantic-ui-react/dist/es/elements/Image/ImageGroup.js","../node_modules/semantic-ui-react/dist/es/elements/Image/Image.js","../node_modules/jwt-decode/lib/atob.js","../node_modules/jwt-decode/lib/index.js","../node_modules/jwt-decode/lib/base64_url_decode.js","../node_modules/oidc-client-ts/src/utils/Logger.ts","../node_modules/oidc-client-ts/src/utils/CryptoUtils.ts","../node_modules/oidc-client-ts/src/utils/Event.ts","../node_modules/oidc-client-ts/src/utils/JwtUtils.ts","../node_modules/oidc-client-ts/src/utils/PopupUtils.ts","../node_modules/oidc-client-ts/src/utils/Timer.ts","../node_modules/oidc-client-ts/src/utils/UrlUtils.ts","../node_modules/oidc-client-ts/src/errors/ErrorResponse.ts","../node_modules/oidc-client-ts/src/errors/ErrorTimeout.ts","../node_modules/oidc-client-ts/src/AccessTokenEvents.ts","../node_modules/oidc-client-ts/src/CheckSessionIFrame.ts","../node_modules/oidc-client-ts/src/InMemoryWebStorage.ts","../node_modules/oidc-client-ts/src/JsonService.ts","../node_modules/oidc-client-ts/src/MetadataService.ts","../node_modules/oidc-client-ts/src/WebStorageStateStore.ts","../node_modules/oidc-client-ts/src/OidcClientSettings.ts","../node_modules/oidc-client-ts/src/UserInfoService.ts","../node_modules/oidc-client-ts/src/TokenClient.ts","../node_modules/oidc-client-ts/src/ResponseValidator.ts","../node_modules/oidc-client-ts/src/State.ts","../node_modules/oidc-client-ts/src/SigninState.ts","../node_modules/oidc-client-ts/src/SigninRequest.ts","../node_modules/oidc-client-ts/src/SigninResponse.ts","../node_modules/oidc-client-ts/src/SignoutRequest.ts","../node_modules/oidc-client-ts/src/SignoutResponse.ts","../node_modules/oidc-client-ts/src/ClaimsService.ts","../node_modules/oidc-client-ts/src/OidcClient.ts","../node_modules/oidc-client-ts/src/SessionMonitor.ts","../node_modules/oidc-client-ts/src/User.ts","../node_modules/oidc-client-ts/src/navigators/AbstractChildWindow.ts","../node_modules/oidc-client-ts/src/UserManagerSettings.ts","../node_modules/oidc-client-ts/src/navigators/IFrameWindow.ts","../node_modules/oidc-client-ts/src/navigators/IFrameNavigator.ts","../node_modules/oidc-client-ts/src/navigators/PopupWindow.ts","../node_modules/oidc-client-ts/src/navigators/PopupNavigator.ts","../node_modules/oidc-client-ts/src/navigators/RedirectNavigator.ts","../node_modules/oidc-client-ts/src/UserManagerEvents.ts","../node_modules/oidc-client-ts/src/SilentRenewService.ts","../node_modules/oidc-client-ts/src/RefreshState.ts","../node_modules/oidc-client-ts/src/UserManager.ts","helpers/RedirectHelper.tsx","../node_modules/immer/src/utils/errors.ts","../node_modules/immer/src/utils/common.ts","../node_modules/immer/src/utils/plugins.ts","../node_modules/immer/src/core/scope.ts","../node_modules/immer/src/core/finalize.ts","../node_modules/immer/src/core/proxy.ts","../node_modules/immer/src/core/immerClass.ts","../node_modules/immer/src/core/current.ts","../node_modules/immer/src/plugins/es5.ts","../node_modules/immer/src/immer.ts","../node_modules/immer/src/utils/env.ts","../node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","../node_modules/@babel/runtime/helpers/esm/toPrimitive.js","../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../node_modules/@babel/runtime/helpers/esm/objectSpread2.js","../node_modules/redux/es/redux.js","../node_modules/redux-thunk/es/index.js","../node_modules/@reduxjs/toolkit/src/devtoolsExtension.ts","../node_modules/@reduxjs/toolkit/src/isPlainObject.ts","../node_modules/@reduxjs/toolkit/src/createAction.ts","../node_modules/@reduxjs/toolkit/src/utils.ts","../node_modules/@reduxjs/toolkit/src/getDefaultMiddleware.ts","../node_modules/@reduxjs/toolkit/src/mapBuilders.ts","../node_modules/@reduxjs/toolkit/src/createSlice.ts","../node_modules/@reduxjs/toolkit/src/createReducer.ts","../node_modules/@reduxjs/toolkit/src/nanoid.ts","../node_modules/@reduxjs/toolkit/src/createAsyncThunk.ts","../node_modules/@reduxjs/toolkit/src/listenerMiddleware/index.ts","../node_modules/@reduxjs/toolkit/src/listenerMiddleware/task.ts","../node_modules/@reduxjs/toolkit/src/autoBatchEnhancer.ts","../node_modules/@reduxjs/toolkit/src/index.ts","services/HttpServicePCS.ts","redux/account.ts","redux/auth.ts","services/AuthService.ts","../node_modules/redux-persist/es/constants.js","../node_modules/redux-persist/es/stateReconciler/autoMergeLevel1.js","../node_modules/redux-persist/es/createPersistoid.js","../node_modules/redux-persist/es/getStoredState.js","../node_modules/redux-persist/es/purgeStoredState.js","../node_modules/redux-persist/es/persistReducer.js","../node_modules/redux-persist/es/persistStore.js","reducers/AccountReducer.ts","redux/chimeSlide.tsx","redux/ticket.ts","services/HttpServicePCSPublic.ts","redux/meeting.ts","redux/channel.ts","redux/visualConnect.ts","redux/assistantBot.ts","redux/store.ts","../node_modules/@reduxjs/toolkit/src/configureStore.ts","../node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","../node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","../node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","../node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","../node_modules/@babel/runtime/helpers/esm/slicedToArray.js","../node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","../node_modules/@babel/runtime/helpers/esm/classCallCheck.js","../node_modules/@babel/runtime/helpers/esm/createClass.js","../node_modules/react-i18next/dist/es/unescape.js","../node_modules/react-i18next/dist/es/context.js","../node_modules/react-i18next/dist/es/utils.js","../node_modules/react-i18next/dist/es/useTranslation.js","../node_modules/semantic-ui-react/dist/es/elements/Button/ButtonContent.js","../node_modules/lodash-es/_baseMap.js","../node_modules/lodash-es/map.js","../node_modules/semantic-ui-react/dist/es/elements/Button/ButtonGroup.js","../node_modules/semantic-ui-react/dist/es/elements/Button/ButtonOr.js","../node_modules/semantic-ui-react/dist/es/elements/Button/Button.js","../node_modules/lodash-es/compact.js","../node_modules/lodash-es/_arrayEvery.js","../node_modules/lodash-es/_baseEvery.js","../node_modules/lodash-es/every.js","../node_modules/lodash-es/_baseDifference.js","../node_modules/lodash-es/isArrayLikeObject.js","../node_modules/lodash-es/without.js","../node_modules/lodash-es/_createFind.js","../node_modules/lodash-es/findIndex.js","../node_modules/lodash-es/find.js","../node_modules/lodash-es/dropRight.js","../node_modules/lodash-es/isEmpty.js","../node_modules/lodash-es/_asciiSize.js","../node_modules/lodash-es/_hasUnicode.js","../node_modules/lodash-es/_unicodeSize.js","../node_modules/lodash-es/_stringSize.js","../node_modules/lodash-es/size.js","../node_modules/lodash-es/_isFlattenable.js","../node_modules/lodash-es/_baseFlatten.js","../node_modules/lodash-es/difference.js","../node_modules/lodash-es/union.js","../node_modules/lodash-es/isEqual.js","../node_modules/lodash-es/_baseAssignValue.js","../node_modules/lodash-es/_assignValue.js","../node_modules/lodash-es/_baseSet.js","../node_modules/lodash-es/_basePickBy.js","../node_modules/lodash-es/_basePick.js","../node_modules/lodash-es/flatten.js","../node_modules/lodash-es/pick.js","../node_modules/lodash-es/_flatRest.js","../node_modules/semantic-ui-react/dist/es/elements/Flag/Flag.js","../node_modules/semantic-ui-react/dist/es/modules/Dropdown/DropdownDivider.js","../node_modules/semantic-ui-react/dist/es/modules/Dropdown/DropdownItem.js","../node_modules/semantic-ui-react/dist/es/modules/Dropdown/DropdownHeader.js","../node_modules/semantic-ui-react/dist/es/modules/Dropdown/DropdownMenu.js","../node_modules/semantic-ui-react/dist/es/modules/Dropdown/DropdownSearchInput.js","../node_modules/semantic-ui-react/dist/es/modules/Dropdown/DropdownText.js","../node_modules/lodash-es/escapeRegExp.js","../node_modules/lodash-es/_deburrLetter.js","../node_modules/lodash-es/_basePropertyOf.js","../node_modules/lodash-es/deburr.js","../node_modules/lodash-es/_baseFilter.js","../node_modules/lodash-es/filter.js","../node_modules/semantic-ui-react/dist/es/modules/Dropdown/utils/getMenuOptions.js","../node_modules/lodash-es/_arrayReduce.js","../node_modules/lodash-es/_baseReduce.js","../node_modules/lodash-es/reduce.js","../node_modules/semantic-ui-react/dist/es/modules/Dropdown/utils/getSelectedIndex.js","../node_modules/semantic-ui-react/dist/es/modules/Dropdown/Dropdown.js","../node_modules/semantic-ui-react/dist/es/lib/eventStack/index.js","../node_modules/semantic-ui-react/dist/es/modules/Modal/ModalActions.js","../node_modules/semantic-ui-react/dist/es/modules/Modal/ModalContent.js","../node_modules/semantic-ui-react/dist/es/modules/Modal/ModalDescription.js","../node_modules/semantic-ui-react/dist/es/lib/hooks/useIsomorphicLayoutEffect.js","../node_modules/semantic-ui-react/dist/es/lib/hooks/useClassNamesOnNode.js","../node_modules/semantic-ui-react/dist/es/modules/Modal/ModalDimmer.js","../node_modules/semantic-ui-react/dist/es/modules/Modal/ModalHeader.js","../node_modules/semantic-ui-react/dist/es/modules/Modal/utils/index.js","../node_modules/semantic-ui-react/dist/es/modules/Modal/Modal.js","assets/svg/profile.svg","assets/svg/languagePopup.svg","../node_modules/@babel/runtime/helpers/esm/inherits.js","../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/toArray.js","../node_modules/@babel/runtime/helpers/esm/iterableToArray.js","../node_modules/i18next/dist/esm/i18next.js","translations/languageOptions.tsx","components/layout/AccountButton.tsx","components/layout/Header.tsx","../node_modules/semantic-ui-react/dist/es/collections/Grid/GridColumn.js","../node_modules/semantic-ui-react/dist/es/collections/Grid/GridRow.js","../node_modules/semantic-ui-react/dist/es/collections/Grid/Grid.js","components/modals/ErrorModal.tsx","common-components/RDComponents/CustomLoader.tsx","scenes/SignInCallback/index.tsx","services/Common.ts","services/RSA_Encrypt.ts","api/ChimeAPI.js","services/MessagingService.tsx","../node_modules/semantic-ui-react/dist/es/elements/Loader/Loader.js","utilities/insertDateHeaders.jsx","services/AttachmentService.ts","containers/InputChat/Attachment.tsx","helpers/api.ts","../node_modules/i18next-browser-languagedetector/dist/esm/i18nextBrowserLanguageDetector.js","translations/en/translations.tsx","translations/i18n.tsx","translations/es/translations.tsx","translations/de/translations.tsx","translations/pt/translations.tsx","translations/da/translations.tsx","translations/fi/translations.tsx","translations/no/translations.tsx","translations/sv/translations.tsx","translations/nl/translations.tsx","translations/fr/translations.tsx","translations/it/translations.tsx","translations/cz/translations.tsx","translations/sk/translations.tsx","translations/pl/translations.tsx","translations/lt/translations.tsx","translations/lv/translations.tsx","translations/et/translations.tsx","translations/nn/translations.tsx","translations/sw/translations.tsx","services/FormatTime.ts","webpack://private-channel-portal/./src/common-components/EditMessageArea/EditMessageArea.module.scss?f5f0","common-components/boschIcon/Boschicon.tsx","../node_modules/flairup/src/utils/asArray.ts","../node_modules/flairup/src/utils/is.ts","../node_modules/flairup/src/utils/joinTruthy.ts","../node_modules/flairup/src/utils/stableHash.ts","../node_modules/flairup/src/utils/stringManipulators.ts","../node_modules/flairup/src/Rule.ts","../node_modules/emoji-picker-react/src/DomUtils/classNames.ts","../node_modules/flairup/src/Sheet.ts","../node_modules/flairup/src/utils/forIn.ts","../node_modules/flairup/src/cx.ts","../node_modules/flairup/src/index.ts","../node_modules/emoji-picker-react/src/Stylesheet/stylesheet.tsx","../node_modules/emoji-picker-react/src/config/compareConfig.ts","../node_modules/emoji-picker-react/src/components/Reactions/DEFAULT_REACTIONS.ts","../node_modules/emoji-picker-react/src/types/exposedTypes.ts","../node_modules/emoji-picker-react/src/config/categoryConfig.ts","../node_modules/emoji-picker-react/src/dataUtils/DataTypes.ts","../node_modules/emoji-picker-react/src/data/skinToneVariations.ts","../node_modules/emoji-picker-react/src/dataUtils/alphaNumericEmojiIndex.ts","../node_modules/emoji-picker-react/src/dataUtils/emojiSelectors.ts","../node_modules/emoji-picker-react/src/config/cdnUrls.ts","../node_modules/emoji-picker-react/src/config/config.ts","../node_modules/emoji-picker-react/src/components/context/PickerConfigContext.tsx","../node_modules/emoji-picker-react/src/config/mutableConfig.ts","../node_modules/emoji-picker-react/src/config/useConfig.ts","../node_modules/emoji-picker-react/src/hooks/useDebouncedState.ts","../node_modules/emoji-picker-react/src/hooks/useHideEmojisByUniocode.ts","../node_modules/emoji-picker-react/src/hooks/useDisallowedEmojis.ts","../node_modules/emoji-picker-react/src/components/context/PickerContext.tsx","../node_modules/emoji-picker-react/src/hooks/useInitialLoad.ts","../node_modules/emoji-picker-react/src/hooks/useIsSearchMode.ts","../node_modules/emoji-picker-react/src/DomUtils/focusElement.ts","../node_modules/emoji-picker-react/src/DomUtils/getActiveElement.ts","../node_modules/emoji-picker-react/src/components/context/ElementRefContext.tsx","../node_modules/emoji-picker-react/src/hooks/useKeyboardNavigation.ts","../node_modules/emoji-picker-react/src/DomUtils/scrollTo.ts","../node_modules/emoji-picker-react/src/DomUtils/selectors.ts","../node_modules/emoji-picker-react/src/DomUtils/keyboardNavigation.ts","../node_modules/emoji-picker-react/src/DomUtils/elementPositionInRow.ts","../node_modules/emoji-picker-react/src/hooks/useCloseAllOpenToggles.ts","../node_modules/emoji-picker-react/src/hooks/useDisallowMouseMove.ts","../node_modules/emoji-picker-react/src/hooks/useFocus.ts","../node_modules/emoji-picker-react/src/hooks/useFilter.ts","../node_modules/emoji-picker-react/src/hooks/useSetVariationPicker.ts","../node_modules/emoji-picker-react/src/hooks/useShouldShowSkinTonePicker.ts","../node_modules/emoji-picker-react/src/hooks/preloadEmoji.ts","../node_modules/emoji-picker-react/src/components/main/PickerMain.tsx","../node_modules/emoji-picker-react/src/hooks/useOnFocus.ts","../node_modules/emoji-picker-react/src/dataUtils/parseNativeEmoji.ts","../node_modules/emoji-picker-react/src/dataUtils/suggested.ts","../node_modules/emoji-picker-react/src/typeRefinements/typeRefinements.ts","../node_modules/emoji-picker-react/src/hooks/useMouseDownHandlers.ts","../node_modules/emoji-picker-react/src/components/atoms/Button.tsx","../node_modules/emoji-picker-react/src/components/emoji/ClickableEmojiButton.tsx","../node_modules/emoji-picker-react/src/components/emoji/emojiStyles.ts","../node_modules/emoji-picker-react/src/components/emoji/EmojiImg.tsx","../node_modules/emoji-picker-react/src/components/emoji/NativeEmoji.tsx","../node_modules/emoji-picker-react/src/components/emoji/ViewOnlyEmoji.tsx","../node_modules/emoji-picker-react/src/components/emoji/Emoji.tsx","../node_modules/emoji-picker-react/src/components/Reactions/BtnPlus.tsx","../node_modules/emoji-picker-react/src/components/Reactions/Reactions.tsx","../node_modules/emoji-picker-react/src/hooks/useIsEmojiHidden.ts","../node_modules/emoji-picker-react/src/components/body/EmojiCategory.tsx","../node_modules/emoji-picker-react/src/hooks/useIsEverMounted.ts","../node_modules/emoji-picker-react/src/components/body/Suggested.tsx","../node_modules/emoji-picker-react/src/components/body/EmojiList.tsx","../node_modules/emoji-picker-react/src/components/body/EmojiVariationPicker.tsx","../node_modules/emoji-picker-react/src/components/body/Body.tsx","../node_modules/emoji-picker-react/src/hooks/useOnScroll.ts","../node_modules/emoji-picker-react/src/components/Layout/Flex.tsx","../node_modules/emoji-picker-react/src/hooks/useEmojiPreviewEvents.ts","../node_modules/emoji-picker-react/src/DomUtils/detectEmojyPartiallyBelowFold.ts","../node_modules/emoji-picker-react/src/components/Layout/Space.tsx","../node_modules/emoji-picker-react/src/components/Layout/Absolute.tsx","../node_modules/emoji-picker-react/src/components/Layout/Relative.tsx","../node_modules/emoji-picker-react/src/components/header/SkinTonePicker/BtnSkinToneVariation.tsx","../node_modules/emoji-picker-react/src/components/header/SkinTonePicker/SkinTonePicker.tsx","../node_modules/emoji-picker-react/src/components/footer/Preview.tsx","../node_modules/emoji-picker-react/src/DomUtils/categoryNameFromDom.ts","../node_modules/emoji-picker-react/src/hooks/useShouldHideCustomEmojis.ts","../node_modules/emoji-picker-react/src/components/navigation/CategoryButton.tsx","../node_modules/emoji-picker-react/src/components/navigation/CategoryNavigation.tsx","../node_modules/emoji-picker-react/src/hooks/useScrollCategoryIntoView.ts","../node_modules/emoji-picker-react/src/hooks/useActiveCategoryScrollDetection.ts","../node_modules/emoji-picker-react/src/components/header/Search/BtnClearSearch.tsx","../node_modules/emoji-picker-react/src/components/header/Search/CssSearch.tsx","../node_modules/emoji-picker-react/src/components/header/Search/IcnSearch.tsx","../node_modules/emoji-picker-react/src/components/header/Search/Search.tsx","../node_modules/emoji-picker-react/src/components/header/Header.tsx","../node_modules/emoji-picker-react/src/EmojiPickerReact.tsx","../node_modules/emoji-picker-react/src/components/ErrorBoundary.tsx","../node_modules/emoji-picker-react/src/index.tsx","components/modals/ModalGetEmoji.tsx","components/modals/ConfirmCancelDialog.tsx","common-components/EditMessageArea/EditMessageArea.tsx","components/messages/Messages.tsx","../node_modules/semantic-ui-react/dist/es/collections/Message/MessageContent.js","../node_modules/semantic-ui-react/dist/es/collections/Message/MessageHeader.js","../node_modules/semantic-ui-react/dist/es/collections/Message/MessageItem.js","../node_modules/semantic-ui-react/dist/es/collections/Message/MessageList.js","../node_modules/semantic-ui-react/dist/es/collections/Message/Message.js","../node_modules/lodash-es/_createRound.js","../node_modules/lodash-es/round.js","../node_modules/lodash-es/_baseClamp.js","../node_modules/lodash-es/clamp.js","../node_modules/semantic-ui-react/dist/es/modules/Progress/Progress.js","../node_modules/lodash-es/isElement.js","../node_modules/react-popper/lib/esm/Manager.js","../node_modules/react-popper/lib/esm/utils.js","../node_modules/@popperjs/core/lib/dom-utils/getWindow.js","../node_modules/@popperjs/core/lib/dom-utils/instanceOf.js","../node_modules/@popperjs/core/lib/utils/math.js","../node_modules/@popperjs/core/lib/utils/userAgent.js","../node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js","../node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js","../node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js","../node_modules/@popperjs/core/lib/dom-utils/getNodeName.js","../node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js","../node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js","../node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js","../node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js","../node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js","../node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js","../node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js","../node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js","../node_modules/@popperjs/core/lib/dom-utils/getParentNode.js","../node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js","../node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js","../node_modules/@popperjs/core/lib/dom-utils/isTableElement.js","../node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js","../node_modules/@popperjs/core/lib/enums.js","../node_modules/@popperjs/core/lib/utils/orderModifiers.js","../node_modules/@popperjs/core/lib/utils/debounce.js","../node_modules/@popperjs/core/lib/createPopper.js","../node_modules/@popperjs/core/lib/utils/mergeByName.js","../node_modules/@popperjs/core/lib/modifiers/eventListeners.js","../node_modules/@popperjs/core/lib/utils/getBasePlacement.js","../node_modules/@popperjs/core/lib/utils/getVariation.js","../node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js","../node_modules/@popperjs/core/lib/utils/computeOffsets.js","../node_modules/@popperjs/core/lib/modifiers/computeStyles.js","../node_modules/@popperjs/core/lib/utils/getOppositePlacement.js","../node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js","../node_modules/@popperjs/core/lib/dom-utils/contains.js","../node_modules/@popperjs/core/lib/utils/rectToClientRect.js","../node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js","../node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js","../node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js","../node_modules/@popperjs/core/lib/utils/mergePaddingObject.js","../node_modules/@popperjs/core/lib/utils/getFreshSideObject.js","../node_modules/@popperjs/core/lib/utils/expandToHashMap.js","../node_modules/@popperjs/core/lib/utils/detectOverflow.js","../node_modules/@popperjs/core/lib/utils/within.js","../node_modules/@popperjs/core/lib/modifiers/hide.js","../node_modules/@popperjs/core/lib/popper.js","../node_modules/@popperjs/core/lib/modifiers/popperOffsets.js","../node_modules/@popperjs/core/lib/modifiers/applyStyles.js","../node_modules/@popperjs/core/lib/modifiers/offset.js","../node_modules/@popperjs/core/lib/modifiers/flip.js","../node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js","../node_modules/@popperjs/core/lib/modifiers/preventOverflow.js","../node_modules/@popperjs/core/lib/utils/getAltAxis.js","../node_modules/@popperjs/core/lib/modifiers/arrow.js","../node_modules/react-popper/lib/esm/usePopper.js","../node_modules/react-popper/lib/esm/Popper.js","../node_modules/lodash-es/_baseInverter.js","../node_modules/lodash-es/_createInverter.js","../node_modules/lodash-es/invert.js","../node_modules/semantic-ui-react/dist/es/modules/Popup/lib/positions.js","../node_modules/semantic-ui-react/dist/es/modules/Popup/lib/createReferenceProxy.js","../node_modules/semantic-ui-react/dist/es/modules/Popup/PopupContent.js","../node_modules/semantic-ui-react/dist/es/modules/Popup/PopupHeader.js","../node_modules/semantic-ui-react/dist/es/modules/Popup/Popup.js","assets/svg/document-plain.svg","assets/svg/emoji-happy.svg","../node_modules/autosize/dist/autosize.esm.js","containers/InputChat/InputMessage.tsx","../node_modules/semantic-ui-react/dist/es/elements/List/ListDescription.js","../node_modules/semantic-ui-react/dist/es/elements/List/ListHeader.js","../node_modules/semantic-ui-react/dist/es/elements/List/ListContent.js","../node_modules/semantic-ui-react/dist/es/elements/List/ListIcon.js","../node_modules/semantic-ui-react/dist/es/elements/List/ListItem.js","../node_modules/semantic-ui-react/dist/es/elements/List/ListList.js","../node_modules/semantic-ui-react/dist/es/elements/List/List.js","assets/svg/shield-stop.svg","helpers/AppConstants.ts","../node_modules/@microsoft/signalr/src/DefaultReconnectPolicy.ts","../node_modules/@microsoft/signalr/src/HeaderNames.ts","../node_modules/@microsoft/signalr/src/HttpClient.ts","../node_modules/@microsoft/signalr/src/AccessTokenHttpClient.ts","../node_modules/@microsoft/signalr/src/Errors.ts","../node_modules/@microsoft/signalr/src/ILogger.ts","../node_modules/@microsoft/signalr/src/Loggers.ts","../node_modules/@microsoft/signalr/src/Utils.ts","../node_modules/@microsoft/signalr/src/FetchHttpClient.ts","../node_modules/@microsoft/signalr/src/XhrHttpClient.ts","../node_modules/@microsoft/signalr/src/DefaultHttpClient.ts","../node_modules/@microsoft/signalr/src/ITransport.ts","../node_modules/@microsoft/signalr/src/AbortController.ts","../node_modules/@microsoft/signalr/src/LongPollingTransport.ts","../node_modules/@microsoft/signalr/src/ServerSentEventsTransport.ts","../node_modules/@microsoft/signalr/src/WebSocketTransport.ts","../node_modules/@microsoft/signalr/src/HttpConnection.ts","../node_modules/@microsoft/signalr/src/TextMessageFormat.ts","../node_modules/@microsoft/signalr/src/HandshakeProtocol.ts","../node_modules/@microsoft/signalr/src/IHubProtocol.ts","../node_modules/@microsoft/signalr/src/Subject.ts","../node_modules/@microsoft/signalr/src/MessageBuffer.ts","../node_modules/@microsoft/signalr/src/HubConnection.ts","../node_modules/@microsoft/signalr/src/JsonHubProtocol.ts","../node_modules/@microsoft/signalr/src/HubConnectionBuilder.ts","services/SignalRService.ts","components/modals/ListMemberChannelModal.tsx","assets/svg/livechat.svg","assets/svg/call.svg","assets/svg/call_black.svg","assets/svg/close.svg","assets/svg/notification.svg","../node_modules/semantic-ui-react/dist/es/elements/Input/Input.js","components/modals/ModalSendInviteChattingChannel.tsx","components/modals/ModalSendInviteVisualConnect.tsx","components/modals/ModalNotiEndMeetting.tsx","assets/svg/user-mouth-spreechless.svg","../node_modules/@azure/msal-common/src/utils/Constants.ts","../node_modules/@azure/msal-common/src/logger/Logger.ts","../node_modules/@azure/msal-common/src/authority/ProtocolMode.ts","../node_modules/@azure/msal-common/src/authority/AuthorityOptions.ts","../node_modules/@azure/msal-common/src/error/AuthErrorCodes.ts","../node_modules/@azure/msal-common/src/error/AuthError.ts","../node_modules/@azure/msal-common/src/error/ClientAuthErrorCodes.ts","../node_modules/@azure/msal-common/src/error/ClientAuthError.ts","../node_modules/@azure/msal-common/src/crypto/ICrypto.ts","../node_modules/@azure/msal-common/src/packageMetadata.ts","../node_modules/@azure/msal-common/src/account/AuthToken.ts","../node_modules/@azure/msal-common/src/utils/TimeUtils.ts","../node_modules/@azure/msal-common/src/cache/utils/CacheHelpers.ts","../node_modules/@azure/msal-common/src/error/ClientConfigurationErrorCodes.ts","../node_modules/@azure/msal-common/src/error/ClientConfigurationError.ts","../node_modules/@azure/msal-common/src/utils/StringUtils.ts","../node_modules/@azure/msal-common/src/request/ScopeSet.ts","../node_modules/@azure/msal-common/src/account/ClientInfo.ts","../node_modules/@azure/msal-common/src/account/AccountInfo.ts","../node_modules/@azure/msal-common/src/authority/AuthorityType.ts","../node_modules/@azure/msal-common/src/account/TokenClaims.ts","../node_modules/@azure/msal-common/src/cache/entities/AccountEntity.ts","../node_modules/@azure/msal-common/src/utils/UrlUtils.ts","../node_modules/@azure/msal-common/src/url/UrlString.ts","../node_modules/@azure/msal-common/src/authority/AuthorityMetadata.ts","../node_modules/@azure/msal-common/src/error/CacheErrorCodes.ts","../node_modules/@azure/msal-common/src/error/CacheError.ts","../node_modules/@azure/msal-common/src/cache/CacheManager.ts","../node_modules/@azure/msal-common/src/config/ClientConfiguration.ts","../node_modules/@azure/msal-common/src/network/INetworkModule.ts","../node_modules/@azure/msal-common/src/telemetry/performance/PerformanceEvent.ts","../node_modules/@azure/msal-common/src/telemetry/performance/StubPerformanceClient.ts","../node_modules/@azure/msal-browser/src/utils/BrowserConstants.ts","../node_modules/@azure/msal-browser/src/navigation/NavigationClient.ts","../node_modules/@azure/msal-common/src/error/NetworkError.ts","../node_modules/@azure/msal-browser/src/error/BrowserAuthErrorCodes.ts","../node_modules/@azure/msal-browser/src/error/BrowserAuthError.ts","../node_modules/@azure/msal-browser/src/network/FetchClient.ts","../node_modules/@azure/msal-browser/src/encode/Base64Encode.ts","../node_modules/@azure/msal-browser/src/crypto/BrowserCrypto.ts","../node_modules/@azure/msal-browser/src/error/BrowserConfigurationAuthErrorCodes.ts","../node_modules/@azure/msal-browser/src/error/BrowserConfigurationAuthError.ts","../node_modules/@azure/msal-browser/src/utils/BrowserUtils.ts","../node_modules/@azure/msal-browser/src/config/Configuration.ts","../node_modules/@azure/msal-browser/src/packageMetadata.ts","../node_modules/@azure/msal-browser/src/operatingcontext/BaseOperatingContext.ts","../node_modules/@azure/msal-browser/src/operatingcontext/StandardOperatingContext.ts","../node_modules/@azure/msal-common/src/error/JoseHeaderErrorCodes.ts","../node_modules/@azure/msal-common/src/error/JoseHeaderError.ts","../node_modules/@azure/msal-common/src/crypto/JoseHeader.ts","../node_modules/@azure/msal-browser/src/encode/Base64Decode.ts","../node_modules/@azure/msal-browser/src/cache/DatabaseStorage.ts","../node_modules/@azure/msal-browser/src/cache/MemoryStorage.ts","../node_modules/@azure/msal-browser/src/cache/AsyncMemoryStorage.ts","../node_modules/@azure/msal-browser/src/crypto/CryptoOps.ts","../node_modules/@azure/msal-common/src/utils/FunctionWrappers.ts","../node_modules/@azure/msal-common/src/authority/RegionDiscovery.ts","../node_modules/@azure/msal-common/src/authority/Authority.ts","../node_modules/@azure/msal-common/src/authority/OpenIdConfigResponse.ts","../node_modules/@azure/msal-common/src/authority/CloudInstanceDiscoveryResponse.ts","../node_modules/@azure/msal-common/src/authority/CloudInstanceDiscoveryErrorResponse.ts","../node_modules/@azure/msal-common/src/error/InteractionRequiredAuthErrorCodes.ts","../node_modules/@azure/msal-common/src/error/InteractionRequiredAuthError.ts","../node_modules/@azure/msal-common/src/utils/ProtocolUtils.ts","../node_modules/@azure/msal-common/src/account/CcsCredential.ts","../node_modules/@azure/msal-browser/src/cache/LocalStorage.ts","../node_modules/@azure/msal-browser/src/cache/SessionStorage.ts","../node_modules/@azure/msal-browser/src/utils/BrowserProtocolUtils.ts","../node_modules/@azure/msal-browser/src/cache/CookieStorage.ts","../node_modules/@azure/msal-browser/src/cache/BrowserCacheManager.ts","../node_modules/@azure/msal-browser/src/event/EventType.ts","../node_modules/@azure/msal-browser/src/event/EventHandler.ts","../node_modules/@azure/msal-common/src/error/ServerError.ts","../node_modules/@azure/msal-common/src/network/ThrottlingUtils.ts","../node_modules/@azure/msal-common/src/constants/AADServerParamKeys.ts","../node_modules/@azure/msal-common/src/request/RequestValidator.ts","../node_modules/@azure/msal-common/src/request/RequestParameterBuilder.ts","../node_modules/@azure/msal-common/src/authority/AuthorityFactory.ts","../node_modules/@azure/msal-common/src/client/BaseClient.ts","../node_modules/@azure/msal-common/src/crypto/PopTokenGenerator.ts","../node_modules/@azure/msal-common/src/cache/persistence/TokenCacheContext.ts","../node_modules/@azure/msal-common/src/response/ResponseHandler.ts","../node_modules/@azure/msal-common/src/utils/ClientAssertionUtils.ts","../node_modules/@azure/msal-common/src/client/AuthorizationCodeClient.ts","../node_modules/@azure/msal-common/src/telemetry/server/ServerTelemetryManager.ts","../node_modules/@azure/msal-browser/src/interaction_client/BaseInteractionClient.ts","../node_modules/@azure/msal-browser/src/crypto/PkceGenerator.ts","../node_modules/@azure/msal-browser/src/request/RequestHelpers.ts","../node_modules/@azure/msal-browser/src/interaction_client/StandardInteractionClient.ts","../node_modules/@azure/msal-browser/src/error/NativeAuthErrorCodes.ts","../node_modules/@azure/msal-browser/src/error/NativeAuthError.ts","../node_modules/@azure/msal-browser/src/broker/nativeBroker/NativeStatusCodes.ts","../node_modules/@azure/msal-common/src/client/RefreshTokenClient.ts","../node_modules/@azure/msal-common/src/client/SilentFlowClient.ts","../node_modules/@azure/msal-browser/src/interaction_client/SilentCacheClient.ts","../node_modules/@azure/msal-browser/src/interaction_client/NativeInteractionClient.ts","../node_modules/@azure/msal-browser/src/broker/nativeBroker/NativeMessageHandler.ts","../node_modules/@azure/msal-browser/src/interaction_handler/InteractionHandler.ts","../node_modules/@azure/msal-browser/src/response/ResponseHandler.ts","../node_modules/@azure/msal-browser/src/interaction_client/PopupClient.ts","../node_modules/@azure/msal-browser/src/interaction_handler/RedirectHandler.ts","../node_modules/@azure/msal-browser/src/interaction_client/RedirectClient.ts","../node_modules/@azure/msal-browser/src/interaction_handler/SilentHandler.ts","../node_modules/@azure/msal-browser/src/interaction_client/SilentIframeClient.ts","../node_modules/@azure/msal-browser/src/interaction_client/SilentRefreshClient.ts","../node_modules/@azure/msal-browser/src/cache/TokenCache.ts","../node_modules/@azure/msal-browser/src/interaction_client/HybridSpaAuthorizationCodeClient.ts","../node_modules/@azure/msal-browser/src/interaction_client/SilentAuthCodeClient.ts","../node_modules/@azure/msal-browser/src/controllers/StandardController.ts","../node_modules/@azure/msal-browser/src/cache/AccountManager.ts","../node_modules/@azure/msal-browser/src/app/PublicClientApplication.ts","../node_modules/@azure/msal-browser/src/controllers/ControllerFactory.ts","authConfig.ts","hooks/useBroadcast.ts","views/Messages/index.tsx","graph.ts","components/modals/ModalJoinCurrentChannel.tsx","components/modals/ModalCreateNewChannel.tsx","webpack://private-channel-portal/./src/components/modals/css/ModalTranlationOptionsPublic.module.css?881b","webpack://private-channel-portal/./src/common-components/RDComponents/RDButton.module.css?0dd4","common-components/RDComponents/RDButton.tsx","webpack://private-channel-portal/./src/common-components/RDComponents/RDDropdown.module.css?e93c","common-components/RDComponents/RDDropdown.tsx","components/modals/publicChannelModal/ModalTranlationOptionsPublic.tsx","components/modals/ModalShowRandomId.tsx","webpack://private-channel-portal/./src/common-components/RDComponents/RDNotification.module.css?3741","common-components/RDComponents/RDNotification.tsx","components/views/DashBoard/DashBoard.tsx","scenes/SignOutCallback/index.tsx","scenes/SessionTimeout/index.tsx","types/index.ts","services/MeetingConfig.ts","components/DeviceSelection/CameraDevices/index.tsx","components/ActivityBar/index.tsx","components/DeviceSelection/MicrophoneDevices/MicrophoneActivityPreviewBar.tsx","components/DeviceSelection/MicrophoneDevices/MicrophoneActivityPreview.tsx","components/DeviceSelection/MicrophoneDevices/index.tsx","components/DeviceSelection/SpeakerDevices/index.tsx","components/DeviceSelection/index.tsx","components/views/DeviceSetup/DeviceSetup.tsx","components/MeetingRoster/RosterAttendeeWrapper.tsx","components/MeetingRoster/MeetingRoster.tsx","containers/MeetingDetails/index.tsx","assets/svg/lightbulb-halogen-cracked-disabled-light.svg","components/modals/ModalShowContentOCR.tsx","containers/MeetingControls/MeetingControls.tsx","../node_modules/semantic-ui-react/dist/es/elements/Header/HeaderSubheader.js","../node_modules/semantic-ui-react/dist/es/elements/Header/HeaderContent.js","../node_modules/semantic-ui-react/dist/es/elements/Header/Header.js","components/views/Meeting/index.tsx","containers/MeetingForm/MeetingForm.tsx","components/views/WindowMeeting/WindowMeeting.tsx","components/views/LandingPage/Header/TranslateButton.tsx","components/views/LandingPage/Header/HeaderLandingPage.tsx","utilities/insertDateHeadersPublic.jsx","components/views/PublicDashBoard/PublicInputChat/Attachment.tsx","components/views/PublicDashBoard/PublicMessages/PublicMessages.tsx","components/views/PublicDashBoard/PublicInputChat/PublicInputMessage.tsx","components/views/PublicDashBoard/PublicMessageBox/PublicMessageBox.tsx","components/modals/publicChannelModal/SessionNotStartedModal.tsx","components/modals/publicChannelModal/DeletedChannelModal.tsx","components/views/PublicDashBoard/PublicDashBoard.tsx","containers/MeetingFormPublic/MeetingFormPublic.tsx","components/views/WindowMeeting/PublicWindowMeeting/PublicWindowMeeting.tsx","webpack://private-channel-portal/./src/components/views/AssistantDashBoard/AssistantDashBoard.module.css?3c41","webpack://private-channel-portal/./src/components/views/LandingPage/botWidgetLauncher/styles/message.module.css?9f7a","webpack://private-channel-portal/./src/common-components/loading-dots/Loading-dots.module.css?03a6","common-components/loading-dots/Loading-dots.tsx","components/views/LandingPage/botWidgetLauncher/MessageList.tsx","webpack://private-channel-portal/./src/components/views/LandingPage/botWidgetLauncher/InputComponent/button-action.module.css?7c3b","components/views/LandingPage/botWidgetLauncher/InputComponent/ButtonAction.tsx","webpack://private-channel-portal/./src/components/views/LandingPage/botWidgetLauncher/InputComponent/input-action.module.css?a16e","../node_modules/lodash-es/set.js","../node_modules/semantic-ui-react/dist/es/modules/Checkbox/Checkbox.js","../node_modules/semantic-ui-react/dist/es/addons/Radio/Radio.js","../node_modules/semantic-ui-react/dist/es/collections/Form/FormField.js","../node_modules/semantic-ui-react/dist/es/collections/Form/FormButton.js","../node_modules/semantic-ui-react/dist/es/collections/Form/FormCheckbox.js","../node_modules/semantic-ui-react/dist/es/collections/Form/FormDropdown.js","../node_modules/semantic-ui-react/dist/es/collections/Form/FormGroup.js","../node_modules/semantic-ui-react/dist/es/collections/Form/FormInput.js","../node_modules/semantic-ui-react/dist/es/collections/Form/FormRadio.js","../node_modules/semantic-ui-react/dist/es/addons/Select/Select.js","../node_modules/semantic-ui-react/dist/es/collections/Form/FormSelect.js","../node_modules/semantic-ui-react/dist/es/addons/TextArea/TextArea.js","../node_modules/semantic-ui-react/dist/es/collections/Form/FormTextArea.js","../node_modules/semantic-ui-react/dist/es/collections/Form/Form.js","components/views/LandingPage/botWidgetLauncher/InputComponent/InputAction.tsx","components/views/LandingPage/botWidgetLauncher/UserInput.tsx","webpack://private-channel-portal/./src/common-components/RDComponents/RDAlert.module.css?7dbf","common-components/RDComponents/RDAlert.tsx","components/views/AssistantDashBoard/AssistantDashBoard.tsx","webpack://private-channel-portal/./src/components/views/LandingPage/LandingPage.module.css?2442","webpack://private-channel-portal/./src/common-components/ProductsCard/ProductCard.module.css?8f96","common-components/ProductsCard/ProductsCardCom.tsx","webpack://private-channel-portal/./src/components/views/LandingPage/botWidgetLauncher/styles/bot-widget.module.css?bf16","components/views/LandingPage/botWidgetLauncher/assets/robothead.svg","webpack://private-channel-portal/./src/components/views/LandingPage/botWidgetLauncher/styles/chat-window.module.css?edc9","webpack://private-channel-portal/./src/components/views/LandingPage/botWidgetLauncher/styles/header.module.css?dc35","components/views/LandingPage/botWidgetLauncher/Header.tsx","components/views/LandingPage/botWidgetLauncher/ChatWindow.tsx","components/views/LandingPage/botWidgetLauncher/BotWidget.tsx","components/views/LandingPage/LandingPage.tsx","context/WebChatComponentContext.tsx","components/views/PrivateChatAnonymous/ChatComponent/Chat.tsx","components/views/PrivateChatAnonymous/PrivateChatAnonymous.tsx","components/views/LandingPageForQr/DeepLinkForQR.tsx","App.tsx","../node_modules/redux-persist/es/integration/react.js","../node_modules/@azure/msal-browser/src/app/IPublicClientApplication.ts","../node_modules/@azure/msal-react/src/MsalContext.ts","../node_modules/@azure/msal-browser/src/event/EventMessage.ts","../node_modules/@azure/msal-react/src/utils/utilities.ts","../node_modules/@azure/msal-react/src/packageMetadata.ts","../node_modules/@azure/msal-react/src/MsalProvider.tsx","index.tsx"],"sourcesContent":["'use strict';\n\nvar asap = require('asap/raw');\n\nfunction noop() {}\n\n// States:\n//\n// 0 - pending\n// 1 - fulfilled with _value\n// 2 - rejected with _value\n// 3 - adopted the state of another promise, _value\n//\n// once the state is no longer pending (0) it is immutable\n\n// All `_` prefixed properties will be reduced to `_{random number}`\n// at build time to obfuscate them and discourage their use.\n// We don't use symbols or Object.defineProperty to fully hide them\n// because the performance isn't good enough.\n\n\n// to avoid using try/catch inside critical functions, we\n// extract them to here.\nvar LAST_ERROR = null;\nvar IS_ERROR = {};\nfunction getThen(obj) {\n try {\n return obj.then;\n } catch (ex) {\n LAST_ERROR = ex;\n return IS_ERROR;\n }\n}\n\nfunction tryCallOne(fn, a) {\n try {\n return fn(a);\n } catch (ex) {\n LAST_ERROR = ex;\n return IS_ERROR;\n }\n}\nfunction tryCallTwo(fn, a, b) {\n try {\n fn(a, b);\n } catch (ex) {\n LAST_ERROR = ex;\n return IS_ERROR;\n }\n}\n\nmodule.exports = Promise;\n\nfunction Promise(fn) {\n if (typeof this !== 'object') {\n throw new TypeError('Promises must be constructed via new');\n }\n if (typeof fn !== 'function') {\n throw new TypeError('Promise constructor\\'s argument is not a function');\n }\n this._x = 0;\n this._y = 0;\n this._z = null;\n this._A = null;\n if (fn === noop) return;\n doResolve(fn, this);\n}\nPromise._B = null;\nPromise._C = null;\nPromise._D = noop;\n\nPromise.prototype.then = function(onFulfilled, onRejected) {\n if (this.constructor !== Promise) {\n return safeThen(this, onFulfilled, onRejected);\n }\n var res = new Promise(noop);\n handle(this, new Handler(onFulfilled, onRejected, res));\n return res;\n};\n\nfunction safeThen(self, onFulfilled, onRejected) {\n return new self.constructor(function (resolve, reject) {\n var res = new Promise(noop);\n res.then(resolve, reject);\n handle(self, new Handler(onFulfilled, onRejected, res));\n });\n}\nfunction handle(self, deferred) {\n while (self._y === 3) {\n self = self._z;\n }\n if (Promise._B) {\n Promise._B(self);\n }\n if (self._y === 0) {\n if (self._x === 0) {\n self._x = 1;\n self._A = deferred;\n return;\n }\n if (self._x === 1) {\n self._x = 2;\n self._A = [self._A, deferred];\n return;\n }\n self._A.push(deferred);\n return;\n }\n handleResolved(self, deferred);\n}\n\nfunction handleResolved(self, deferred) {\n asap(function() {\n var cb = self._y === 1 ? deferred.onFulfilled : deferred.onRejected;\n if (cb === null) {\n if (self._y === 1) {\n resolve(deferred.promise, self._z);\n } else {\n reject(deferred.promise, self._z);\n }\n return;\n }\n var ret = tryCallOne(cb, self._z);\n if (ret === IS_ERROR) {\n reject(deferred.promise, LAST_ERROR);\n } else {\n resolve(deferred.promise, ret);\n }\n });\n}\nfunction resolve(self, newValue) {\n // Promise Resolution Procedure: https://github.com/promises-aplus/promises-spec#the-promise-resolution-procedure\n if (newValue === self) {\n return reject(\n self,\n new TypeError('A promise cannot be resolved with itself.')\n );\n }\n if (\n newValue &&\n (typeof newValue === 'object' || typeof newValue === 'function')\n ) {\n var then = getThen(newValue);\n if (then === IS_ERROR) {\n return reject(self, LAST_ERROR);\n }\n if (\n then === self.then &&\n newValue instanceof Promise\n ) {\n self._y = 3;\n self._z = newValue;\n finale(self);\n return;\n } else if (typeof then === 'function') {\n doResolve(then.bind(newValue), self);\n return;\n }\n }\n self._y = 1;\n self._z = newValue;\n finale(self);\n}\n\nfunction reject(self, newValue) {\n self._y = 2;\n self._z = newValue;\n if (Promise._C) {\n Promise._C(self, newValue);\n }\n finale(self);\n}\nfunction finale(self) {\n if (self._x === 1) {\n handle(self, self._A);\n self._A = null;\n }\n if (self._x === 2) {\n for (var i = 0; i < self._A.length; i++) {\n handle(self, self._A[i]);\n }\n self._A = null;\n }\n}\n\nfunction Handler(onFulfilled, onRejected, promise){\n this.onFulfilled = typeof onFulfilled === 'function' ? onFulfilled : null;\n this.onRejected = typeof onRejected === 'function' ? onRejected : null;\n this.promise = promise;\n}\n\n/**\n * Take a potentially misbehaving resolver function and make sure\n * onFulfilled and onRejected are only called once.\n *\n * Makes no guarantees about asynchrony.\n */\nfunction doResolve(fn, promise) {\n var done = false;\n var res = tryCallTwo(fn, function (value) {\n if (done) return;\n done = true;\n resolve(promise, value);\n }, function (reason) {\n if (done) return;\n done = true;\n reject(promise, reason);\n });\n if (!done && res === IS_ERROR) {\n done = true;\n reject(promise, LAST_ERROR);\n }\n}\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['codecommit'] = {};\nAWS.CodeCommit = Service.defineService('codecommit', ['2015-04-13']);\nObject.defineProperty(apiLoader.services['codecommit'], '2015-04-13', {\n get: function get() {\n var model = require('../apis/codecommit-2015-04-13.min.json');\n model.paginators = require('../apis/codecommit-2015-04-13.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.CodeCommit;\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\n\n// V8 ~ Chrome 36-\n// https://bugs.chromium.org/p/v8/issues/detail?id=3334\nmodule.exports = DESCRIPTORS && fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty(function () { /* empty */ }, 'prototype', {\n value: 42,\n writable: false\n }).prototype !== 42;\n});\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nfunction ZStream() {\n /* next input byte */\n this.input = null; // JS specific, because we have no pointers\n this.next_in = 0;\n /* number of bytes available at input */\n this.avail_in = 0;\n /* total number of input bytes read so far */\n this.total_in = 0;\n /* next output byte should be put there */\n this.output = null; // JS specific, because we have no pointers\n this.next_out = 0;\n /* remaining free space at output */\n this.avail_out = 0;\n /* total number of bytes output so far */\n this.total_out = 0;\n /* last error message, NULL if no error */\n this.msg = ''/*Z_NULL*/;\n /* not visible by applications */\n this.state = null;\n /* best guess about the data type: binary or text */\n this.data_type = 2/*Z_UNKNOWN*/;\n /* adler32 value of the uncompressed data */\n this.adler = 0;\n}\n\nmodule.exports = ZStream;\n",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\treturn CryptoJS.enc.Utf8;\n\n}));","'use strict';\nvar $ = require('../internals/export');\nvar aMap = require('../internals/a-map');\nvar iterate = require('../internals/map-iterate');\n\n// `Map.prototype.keyOf` method\n// https://github.com/tc39/proposal-collection-methods\n$({ target: 'Map', proto: true, real: true, forced: true }, {\n keyOf: function keyOf(searchElement) {\n var result = iterate(aMap(this), function (value, key) {\n if (value === searchElement) return { key: key };\n }, true);\n return result && result.key;\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar MapHelpers = require('../internals/map-helpers');\nvar createCollectionFrom = require('../internals/collection-from');\n\n// `Map.from` method\n// https://tc39.github.io/proposal-setmap-offrom/#sec-map.from\n$({ target: 'Map', stat: true, forced: true }, {\n from: createCollectionFrom(MapHelpers.Map, MapHelpers.set, true)\n});\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport ActiveSpeakerPolicy from './ActiveSpeakerPolicy';\n\nexport default class DefaultActiveSpeakerPolicy implements ActiveSpeakerPolicy {\n /**\n * The map of attendeeIds to their active speaker score values\n */\n private volumes: { [attendeeId: string]: number } = {};\n\n /** Creates active speaker policy with speakerWeight, cutoffThreshold, silenceThreshold, and takeoverRate.\n *\n * @param speakerWeight\n * The number used to calculate new active speaker score for current attendee.\n * ```js\n * Formula:\n * updatedCurrentAttendeeScore = currentAttendeeExistingScore * speakerWeight + currentReceivedVolume * (1 - speakerWeight)\n * ```\n *\n * @param cutoffThreshold\n * The threshold number compared with updated active speaker score.\n * If the updated active speaker score is less than this threshold value,\n * the updated score is returned as 0, else the updated score is returned.\n *\n * @param silenceThreshold\n * The threshold number compared with current received volume.\n * While calculating the new active speaker score, if the current received\n * volume is less than this threshold value, the current received volume is considered as 0,\n * else 1.\n *\n * @param takeoverRate\n * The number used to calculate other attendee's active speaker score, other than the current attendee.\n * ```js\n * Formula:\n * updatedOtherAttendeeActiveSpeakerScore = Math.max(\n * existingOtherAttendeeActiveSpeakerScore - takeoverRate * currentReceivedVolume,\n * 0\n * );\n * ```\n */\n constructor(\n private speakerWeight: number = 0.9,\n private cutoffThreshold: number = 0.01,\n private silenceThreshold = 0.2,\n private takeoverRate = 0.2\n ) {}\n\n calculateScore(attendeeId: string, volume: number | null, muted: boolean | null): number {\n if (muted || volume === null) {\n volume = 0;\n }\n if (!this.volumes.hasOwnProperty(attendeeId)) {\n this.volumes[attendeeId] = 0;\n }\n if (volume > this.silenceThreshold) {\n volume = 1.0;\n } else {\n volume = 0.0;\n }\n const score = this.volumes[attendeeId] * this.speakerWeight + volume * (1 - this.speakerWeight);\n this.volumes[attendeeId] = score;\n for (const otherAttendeeId in this.volumes) {\n if (otherAttendeeId !== attendeeId) {\n this.volumes[otherAttendeeId] = Math.max(\n this.volumes[otherAttendeeId] - this.takeoverRate * volume,\n 0\n );\n }\n }\n if (score < this.cutoffThreshold) {\n return 0;\n }\n return score;\n }\n\n prioritizeVideoSendBandwidthForActiveSpeaker(): boolean {\n return true;\n }\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar punycode = require('punycode');\n\nexports.parse = urlParse;\nexports.resolve = urlResolve;\nexports.resolveObject = urlResolveObject;\nexports.format = urlFormat;\n\nexports.Url = Url;\n\nfunction Url() {\n this.protocol = null;\n this.slashes = null;\n this.auth = null;\n this.host = null;\n this.port = null;\n this.hostname = null;\n this.hash = null;\n this.search = null;\n this.query = null;\n this.pathname = null;\n this.path = null;\n this.href = null;\n}\n\n// Reference: RFC 3986, RFC 1808, RFC 2396\n\n// define these here so at least they only have to be\n// compiled once on the first module load.\nvar protocolPattern = /^([a-z0-9.+-]+:)/i,\n portPattern = /:[0-9]*$/,\n\n // RFC 2396: characters reserved for delimiting URLs.\n // We actually just auto-escape these.\n delims = ['<', '>', '\"', '`', ' ', '\\r', '\\n', '\\t'],\n\n // RFC 2396: characters not allowed for various reasons.\n unwise = ['{', '}', '|', '\\\\', '^', '`'].concat(delims),\n\n // Allowed by RFCs, but cause of XSS attacks. Always escape these.\n autoEscape = ['\\''].concat(unwise),\n // Characters that are never ever allowed in a hostname.\n // Note that any invalid chars are also handled, but these\n // are the ones that are *expected* to be seen, so we fast-path\n // them.\n nonHostChars = ['%', '/', '?', ';', '#'].concat(autoEscape),\n hostEndingChars = ['/', '?', '#'],\n hostnameMaxLen = 255,\n hostnamePartPattern = /^[a-z0-9A-Z_-]{0,63}$/,\n hostnamePartStart = /^([a-z0-9A-Z_-]{0,63})(.*)$/,\n // protocols that can allow \"unsafe\" and \"unwise\" chars.\n unsafeProtocol = {\n 'javascript': true,\n 'javascript:': true\n },\n // protocols that never have a hostname.\n hostlessProtocol = {\n 'javascript': true,\n 'javascript:': true\n },\n // protocols that always contain a // bit.\n slashedProtocol = {\n 'http': true,\n 'https': true,\n 'ftp': true,\n 'gopher': true,\n 'file': true,\n 'http:': true,\n 'https:': true,\n 'ftp:': true,\n 'gopher:': true,\n 'file:': true\n },\n querystring = require('querystring');\n\nfunction urlParse(url, parseQueryString, slashesDenoteHost) {\n if (url && isObject(url) && url instanceof Url) return url;\n\n var u = new Url;\n u.parse(url, parseQueryString, slashesDenoteHost);\n return u;\n}\n\nUrl.prototype.parse = function(url, parseQueryString, slashesDenoteHost) {\n if (!isString(url)) {\n throw new TypeError(\"Parameter 'url' must be a string, not \" + typeof url);\n }\n\n var rest = url;\n\n // trim before proceeding.\n // This is to support parse stuff like \" http://foo.com \\n\"\n rest = rest.trim();\n\n var proto = protocolPattern.exec(rest);\n if (proto) {\n proto = proto[0];\n var lowerProto = proto.toLowerCase();\n this.protocol = lowerProto;\n rest = rest.substr(proto.length);\n }\n\n // figure out if it's got a host\n // user@server is *always* interpreted as a hostname, and url\n // resolution will treat //foo/bar as host=foo,path=bar because that's\n // how the browser resolves relative URLs.\n if (slashesDenoteHost || proto || rest.match(/^\\/\\/[^@\\/]+@[^@\\/]+/)) {\n var slashes = rest.substr(0, 2) === '//';\n if (slashes && !(proto && hostlessProtocol[proto])) {\n rest = rest.substr(2);\n this.slashes = true;\n }\n }\n\n if (!hostlessProtocol[proto] &&\n (slashes || (proto && !slashedProtocol[proto]))) {\n\n // there's a hostname.\n // the first instance of /, ?, ;, or # ends the host.\n //\n // If there is an @ in the hostname, then non-host chars *are* allowed\n // to the left of the last @ sign, unless some host-ending character\n // comes *before* the @-sign.\n // URLs are obnoxious.\n //\n // ex:\n // http://a@b@c/ => user:a@b host:c\n // http://a@b?@c => user:a host:c path:/?@c\n\n // v0.12 TODO(isaacs): This is not quite how Chrome does things.\n // Review our test case against browsers more comprehensively.\n\n // find the first instance of any hostEndingChars\n var hostEnd = -1;\n for (var i = 0; i < hostEndingChars.length; i++) {\n var hec = rest.indexOf(hostEndingChars[i]);\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd))\n hostEnd = hec;\n }\n\n // at this point, either we have an explicit point where the\n // auth portion cannot go past, or the last @ char is the decider.\n var auth, atSign;\n if (hostEnd === -1) {\n // atSign can be anywhere.\n atSign = rest.lastIndexOf('@');\n } else {\n // atSign must be in auth portion.\n // http://a@b/c@d => host:b auth:a path:/c@d\n atSign = rest.lastIndexOf('@', hostEnd);\n }\n\n // Now we have a portion which is definitely the auth.\n // Pull that off.\n if (atSign !== -1) {\n auth = rest.slice(0, atSign);\n rest = rest.slice(atSign + 1);\n this.auth = decodeURIComponent(auth);\n }\n\n // the host is the remaining to the left of the first non-host char\n hostEnd = -1;\n for (var i = 0; i < nonHostChars.length; i++) {\n var hec = rest.indexOf(nonHostChars[i]);\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd))\n hostEnd = hec;\n }\n // if we still have not hit it, then the entire thing is a host.\n if (hostEnd === -1)\n hostEnd = rest.length;\n\n this.host = rest.slice(0, hostEnd);\n rest = rest.slice(hostEnd);\n\n // pull out port.\n this.parseHost();\n\n // we've indicated that there is a hostname,\n // so even if it's empty, it has to be present.\n this.hostname = this.hostname || '';\n\n // if hostname begins with [ and ends with ]\n // assume that it's an IPv6 address.\n var ipv6Hostname = this.hostname[0] === '[' &&\n this.hostname[this.hostname.length - 1] === ']';\n\n // validate a little.\n if (!ipv6Hostname) {\n var hostparts = this.hostname.split(/\\./);\n for (var i = 0, l = hostparts.length; i < l; i++) {\n var part = hostparts[i];\n if (!part) continue;\n if (!part.match(hostnamePartPattern)) {\n var newpart = '';\n for (var j = 0, k = part.length; j < k; j++) {\n if (part.charCodeAt(j) > 127) {\n // we replace non-ASCII char with a temporary placeholder\n // we need this to make sure size of hostname is not\n // broken by replacing non-ASCII by nothing\n newpart += 'x';\n } else {\n newpart += part[j];\n }\n }\n // we test again with ASCII char only\n if (!newpart.match(hostnamePartPattern)) {\n var validParts = hostparts.slice(0, i);\n var notHost = hostparts.slice(i + 1);\n var bit = part.match(hostnamePartStart);\n if (bit) {\n validParts.push(bit[1]);\n notHost.unshift(bit[2]);\n }\n if (notHost.length) {\n rest = '/' + notHost.join('.') + rest;\n }\n this.hostname = validParts.join('.');\n break;\n }\n }\n }\n }\n\n if (this.hostname.length > hostnameMaxLen) {\n this.hostname = '';\n } else {\n // hostnames are always lower case.\n this.hostname = this.hostname.toLowerCase();\n }\n\n if (!ipv6Hostname) {\n // IDNA Support: Returns a puny coded representation of \"domain\".\n // It only converts the part of the domain name that\n // has non ASCII characters. I.e. it dosent matter if\n // you call it with a domain that already is in ASCII.\n var domainArray = this.hostname.split('.');\n var newOut = [];\n for (var i = 0; i < domainArray.length; ++i) {\n var s = domainArray[i];\n newOut.push(s.match(/[^A-Za-z0-9_-]/) ?\n 'xn--' + punycode.encode(s) : s);\n }\n this.hostname = newOut.join('.');\n }\n\n var p = this.port ? ':' + this.port : '';\n var h = this.hostname || '';\n this.host = h + p;\n this.href += this.host;\n\n // strip [ and ] from the hostname\n // the host field still retains them, though\n if (ipv6Hostname) {\n this.hostname = this.hostname.substr(1, this.hostname.length - 2);\n if (rest[0] !== '/') {\n rest = '/' + rest;\n }\n }\n }\n\n // now rest is set to the post-host stuff.\n // chop off any delim chars.\n if (!unsafeProtocol[lowerProto]) {\n\n // First, make 100% sure that any \"autoEscape\" chars get\n // escaped, even if encodeURIComponent doesn't think they\n // need to be.\n for (var i = 0, l = autoEscape.length; i < l; i++) {\n var ae = autoEscape[i];\n var esc = encodeURIComponent(ae);\n if (esc === ae) {\n esc = escape(ae);\n }\n rest = rest.split(ae).join(esc);\n }\n }\n\n\n // chop off from the tail first.\n var hash = rest.indexOf('#');\n if (hash !== -1) {\n // got a fragment string.\n this.hash = rest.substr(hash);\n rest = rest.slice(0, hash);\n }\n var qm = rest.indexOf('?');\n if (qm !== -1) {\n this.search = rest.substr(qm);\n this.query = rest.substr(qm + 1);\n if (parseQueryString) {\n this.query = querystring.parse(this.query);\n }\n rest = rest.slice(0, qm);\n } else if (parseQueryString) {\n // no query string, but parseQueryString still requested\n this.search = '';\n this.query = {};\n }\n if (rest) this.pathname = rest;\n if (slashedProtocol[lowerProto] &&\n this.hostname && !this.pathname) {\n this.pathname = '/';\n }\n\n //to support http.request\n if (this.pathname || this.search) {\n var p = this.pathname || '';\n var s = this.search || '';\n this.path = p + s;\n }\n\n // finally, reconstruct the href based on what has been validated.\n this.href = this.format();\n return this;\n};\n\n// format a parsed object into a url string\nfunction urlFormat(obj) {\n // ensure it's an object, and not a string url.\n // If it's an obj, this is a no-op.\n // this way, you can call url_format() on strings\n // to clean up potentially wonky urls.\n if (isString(obj)) obj = urlParse(obj);\n if (!(obj instanceof Url)) return Url.prototype.format.call(obj);\n return obj.format();\n}\n\nUrl.prototype.format = function() {\n var auth = this.auth || '';\n if (auth) {\n auth = encodeURIComponent(auth);\n auth = auth.replace(/%3A/i, ':');\n auth += '@';\n }\n\n var protocol = this.protocol || '',\n pathname = this.pathname || '',\n hash = this.hash || '',\n host = false,\n query = '';\n\n if (this.host) {\n host = auth + this.host;\n } else if (this.hostname) {\n host = auth + (this.hostname.indexOf(':') === -1 ?\n this.hostname :\n '[' + this.hostname + ']');\n if (this.port) {\n host += ':' + this.port;\n }\n }\n\n if (this.query &&\n isObject(this.query) &&\n Object.keys(this.query).length) {\n query = querystring.stringify(this.query);\n }\n\n var search = this.search || (query && ('?' + query)) || '';\n\n if (protocol && protocol.substr(-1) !== ':') protocol += ':';\n\n // only the slashedProtocols get the //. Not mailto:, xmpp:, etc.\n // unless they had them to begin with.\n if (this.slashes ||\n (!protocol || slashedProtocol[protocol]) && host !== false) {\n host = '//' + (host || '');\n if (pathname && pathname.charAt(0) !== '/') pathname = '/' + pathname;\n } else if (!host) {\n host = '';\n }\n\n if (hash && hash.charAt(0) !== '#') hash = '#' + hash;\n if (search && search.charAt(0) !== '?') search = '?' + search;\n\n pathname = pathname.replace(/[?#]/g, function(match) {\n return encodeURIComponent(match);\n });\n search = search.replace('#', '%23');\n\n return protocol + host + pathname + search + hash;\n};\n\nfunction urlResolve(source, relative) {\n return urlParse(source, false, true).resolve(relative);\n}\n\nUrl.prototype.resolve = function(relative) {\n return this.resolveObject(urlParse(relative, false, true)).format();\n};\n\nfunction urlResolveObject(source, relative) {\n if (!source) return relative;\n return urlParse(source, false, true).resolveObject(relative);\n}\n\nUrl.prototype.resolveObject = function(relative) {\n if (isString(relative)) {\n var rel = new Url();\n rel.parse(relative, false, true);\n relative = rel;\n }\n\n var result = new Url();\n Object.keys(this).forEach(function(k) {\n result[k] = this[k];\n }, this);\n\n // hash is always overridden, no matter what.\n // even href=\"\" will remove it.\n result.hash = relative.hash;\n\n // if the relative url is empty, then there's nothing left to do here.\n if (relative.href === '') {\n result.href = result.format();\n return result;\n }\n\n // hrefs like //foo/bar always cut to the protocol.\n if (relative.slashes && !relative.protocol) {\n // take everything except the protocol from relative\n Object.keys(relative).forEach(function(k) {\n if (k !== 'protocol')\n result[k] = relative[k];\n });\n\n //urlParse appends trailing / to urls like http://www.example.com\n if (slashedProtocol[result.protocol] &&\n result.hostname && !result.pathname) {\n result.path = result.pathname = '/';\n }\n\n result.href = result.format();\n return result;\n }\n\n if (relative.protocol && relative.protocol !== result.protocol) {\n // if it's a known url protocol, then changing\n // the protocol does weird things\n // first, if it's not file:, then we MUST have a host,\n // and if there was a path\n // to begin with, then we MUST have a path.\n // if it is file:, then the host is dropped,\n // because that's known to be hostless.\n // anything else is assumed to be absolute.\n if (!slashedProtocol[relative.protocol]) {\n Object.keys(relative).forEach(function(k) {\n result[k] = relative[k];\n });\n result.href = result.format();\n return result;\n }\n\n result.protocol = relative.protocol;\n if (!relative.host && !hostlessProtocol[relative.protocol]) {\n var relPath = (relative.pathname || '').split('/');\n while (relPath.length && !(relative.host = relPath.shift()));\n if (!relative.host) relative.host = '';\n if (!relative.hostname) relative.hostname = '';\n if (relPath[0] !== '') relPath.unshift('');\n if (relPath.length < 2) relPath.unshift('');\n result.pathname = relPath.join('/');\n } else {\n result.pathname = relative.pathname;\n }\n result.search = relative.search;\n result.query = relative.query;\n result.host = relative.host || '';\n result.auth = relative.auth;\n result.hostname = relative.hostname || relative.host;\n result.port = relative.port;\n // to support http.request\n if (result.pathname || result.search) {\n var p = result.pathname || '';\n var s = result.search || '';\n result.path = p + s;\n }\n result.slashes = result.slashes || relative.slashes;\n result.href = result.format();\n return result;\n }\n\n var isSourceAbs = (result.pathname && result.pathname.charAt(0) === '/'),\n isRelAbs = (\n relative.host ||\n relative.pathname && relative.pathname.charAt(0) === '/'\n ),\n mustEndAbs = (isRelAbs || isSourceAbs ||\n (result.host && relative.pathname)),\n removeAllDots = mustEndAbs,\n srcPath = result.pathname && result.pathname.split('/') || [],\n relPath = relative.pathname && relative.pathname.split('/') || [],\n psychotic = result.protocol && !slashedProtocol[result.protocol];\n\n // if the url is a non-slashed url, then relative\n // links like ../.. should be able\n // to crawl up to the hostname, as well. This is strange.\n // result.protocol has already been set by now.\n // Later on, put the first path part into the host field.\n if (psychotic) {\n result.hostname = '';\n result.port = null;\n if (result.host) {\n if (srcPath[0] === '') srcPath[0] = result.host;\n else srcPath.unshift(result.host);\n }\n result.host = '';\n if (relative.protocol) {\n relative.hostname = null;\n relative.port = null;\n if (relative.host) {\n if (relPath[0] === '') relPath[0] = relative.host;\n else relPath.unshift(relative.host);\n }\n relative.host = null;\n }\n mustEndAbs = mustEndAbs && (relPath[0] === '' || srcPath[0] === '');\n }\n\n if (isRelAbs) {\n // it's absolute.\n result.host = (relative.host || relative.host === '') ?\n relative.host : result.host;\n result.hostname = (relative.hostname || relative.hostname === '') ?\n relative.hostname : result.hostname;\n result.search = relative.search;\n result.query = relative.query;\n srcPath = relPath;\n // fall through to the dot-handling below.\n } else if (relPath.length) {\n // it's relative\n // throw away the existing file, and take the new path instead.\n if (!srcPath) srcPath = [];\n srcPath.pop();\n srcPath = srcPath.concat(relPath);\n result.search = relative.search;\n result.query = relative.query;\n } else if (!isNullOrUndefined(relative.search)) {\n // just pull out the search.\n // like href='?foo'.\n // Put this after the other two cases because it simplifies the booleans\n if (psychotic) {\n result.hostname = result.host = srcPath.shift();\n //occationaly the auth can get stuck only in host\n //this especialy happens in cases like\n //url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n var authInHost = result.host && result.host.indexOf('@') > 0 ?\n result.host.split('@') : false;\n if (authInHost) {\n result.auth = authInHost.shift();\n result.host = result.hostname = authInHost.shift();\n }\n }\n result.search = relative.search;\n result.query = relative.query;\n //to support http.request\n if (!isNull(result.pathname) || !isNull(result.search)) {\n result.path = (result.pathname ? result.pathname : '') +\n (result.search ? result.search : '');\n }\n result.href = result.format();\n return result;\n }\n\n if (!srcPath.length) {\n // no path at all. easy.\n // we've already handled the other stuff above.\n result.pathname = null;\n //to support http.request\n if (result.search) {\n result.path = '/' + result.search;\n } else {\n result.path = null;\n }\n result.href = result.format();\n return result;\n }\n\n // if a url ENDs in . or .., then it must get a trailing slash.\n // however, if it ends in anything else non-slashy,\n // then it must NOT get a trailing slash.\n var last = srcPath.slice(-1)[0];\n var hasTrailingSlash = (\n (result.host || relative.host) && (last === '.' || last === '..') ||\n last === '');\n\n // strip single dots, resolve double dots to parent dir\n // if the path tries to go above the root, `up` ends up > 0\n var up = 0;\n for (var i = srcPath.length; i >= 0; i--) {\n last = srcPath[i];\n if (last == '.') {\n srcPath.splice(i, 1);\n } else if (last === '..') {\n srcPath.splice(i, 1);\n up++;\n } else if (up) {\n srcPath.splice(i, 1);\n up--;\n }\n }\n\n // if the path is allowed to go above the root, restore leading ..s\n if (!mustEndAbs && !removeAllDots) {\n for (; up--; up) {\n srcPath.unshift('..');\n }\n }\n\n if (mustEndAbs && srcPath[0] !== '' &&\n (!srcPath[0] || srcPath[0].charAt(0) !== '/')) {\n srcPath.unshift('');\n }\n\n if (hasTrailingSlash && (srcPath.join('/').substr(-1) !== '/')) {\n srcPath.push('');\n }\n\n var isAbsolute = srcPath[0] === '' ||\n (srcPath[0] && srcPath[0].charAt(0) === '/');\n\n // put the host back\n if (psychotic) {\n result.hostname = result.host = isAbsolute ? '' :\n srcPath.length ? srcPath.shift() : '';\n //occationaly the auth can get stuck only in host\n //this especialy happens in cases like\n //url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n var authInHost = result.host && result.host.indexOf('@') > 0 ?\n result.host.split('@') : false;\n if (authInHost) {\n result.auth = authInHost.shift();\n result.host = result.hostname = authInHost.shift();\n }\n }\n\n mustEndAbs = mustEndAbs || (result.host && srcPath.length);\n\n if (mustEndAbs && !isAbsolute) {\n srcPath.unshift('');\n }\n\n if (!srcPath.length) {\n result.pathname = null;\n result.path = null;\n } else {\n result.pathname = srcPath.join('/');\n }\n\n //to support request.http\n if (!isNull(result.pathname) || !isNull(result.search)) {\n result.path = (result.pathname ? result.pathname : '') +\n (result.search ? result.search : '');\n }\n result.auth = relative.auth || result.auth;\n result.slashes = result.slashes || relative.slashes;\n result.href = result.format();\n return result;\n};\n\nUrl.prototype.parseHost = function() {\n var host = this.host;\n var port = portPattern.exec(host);\n if (port) {\n port = port[0];\n if (port !== ':') {\n this.port = port.substr(1);\n }\n host = host.substr(0, host.length - port.length);\n }\n if (host) this.hostname = host;\n};\n\nfunction isString(arg) {\n return typeof arg === \"string\";\n}\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\n\nfunction isNull(arg) {\n return arg === null;\n}\nfunction isNullOrUndefined(arg) {\n return arg == null;\n}\n","var util = require('../core').util;\nvar convert = require('./converter');\n\nvar Translator = function(options) {\n options = options || {};\n this.attrValue = options.attrValue;\n this.convertEmptyValues = Boolean(options.convertEmptyValues);\n this.wrapNumbers = Boolean(options.wrapNumbers);\n};\n\nTranslator.prototype.translateInput = function(value, shape) {\n this.mode = 'input';\n return this.translate(value, shape);\n};\n\nTranslator.prototype.translateOutput = function(value, shape) {\n this.mode = 'output';\n return this.translate(value, shape);\n};\n\nTranslator.prototype.translate = function(value, shape) {\n var self = this;\n if (!shape || value === undefined) return undefined;\n\n if (shape.shape === self.attrValue) {\n return convert[self.mode](value, {\n convertEmptyValues: self.convertEmptyValues,\n wrapNumbers: self.wrapNumbers,\n });\n }\n switch (shape.type) {\n case 'structure': return self.translateStructure(value, shape);\n case 'map': return self.translateMap(value, shape);\n case 'list': return self.translateList(value, shape);\n default: return self.translateScalar(value, shape);\n }\n};\n\nTranslator.prototype.translateStructure = function(structure, shape) {\n var self = this;\n if (structure == null) return undefined;\n\n var struct = {};\n util.each(structure, function(name, value) {\n var memberShape = shape.members[name];\n if (memberShape) {\n var result = self.translate(value, memberShape);\n if (result !== undefined) struct[name] = result;\n }\n });\n return struct;\n};\n\nTranslator.prototype.translateList = function(list, shape) {\n var self = this;\n if (list == null) return undefined;\n\n var out = [];\n util.arrayEach(list, function(value) {\n var result = self.translate(value, shape.member);\n if (result === undefined) out.push(null);\n else out.push(result);\n });\n return out;\n};\n\nTranslator.prototype.translateMap = function(map, shape) {\n var self = this;\n if (map == null) return undefined;\n\n var out = {};\n util.each(map, function(key, value) {\n var result = self.translate(value, shape.value);\n if (result === undefined) out[key] = null;\n else out[key] = result;\n });\n return out;\n};\n\nTranslator.prototype.translateScalar = function(value, shape) {\n return shape.toType(value);\n};\n\n/**\n * @api private\n */\nmodule.exports = Translator;\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport Logger from '../logger/Logger';\nimport SessionStateController from './SessionStateController';\nimport { SessionStateControllerAction } from './SessionStateControllerAction';\nimport { SessionStateControllerDeferPriority } from './SessionStateControllerDeferPriority';\nimport { SessionStateControllerState } from './SessionStateControllerState';\nimport { SessionStateControllerTransitionResult } from './SessionStateControllerTransitionResult';\n\nexport default class DefaultSessionStateController implements SessionStateController {\n constructor(private logger: Logger) {}\n\n perform(\n action: SessionStateControllerAction,\n work: () => void\n ): SessionStateControllerTransitionResult {\n const state = this.currentState;\n if (\n state === SessionStateControllerState.NotConnected &&\n action === SessionStateControllerAction.Connect\n ) {\n this.transition(SessionStateControllerState.Connecting, action);\n } else if (\n state === SessionStateControllerState.Connecting &&\n action === SessionStateControllerAction.Fail\n ) {\n this.transition(SessionStateControllerState.Disconnecting, action);\n } else if (\n state === SessionStateControllerState.Connecting &&\n action === SessionStateControllerAction.FinishConnecting\n ) {\n this.transition(SessionStateControllerState.Connected, action);\n } else if (\n state === SessionStateControllerState.Connected &&\n action === SessionStateControllerAction.Disconnect\n ) {\n this.transition(SessionStateControllerState.Disconnecting, action);\n } else if (\n state === SessionStateControllerState.Connected &&\n action === SessionStateControllerAction.Reconnect\n ) {\n this.transition(SessionStateControllerState.Connecting, action);\n } else if (\n state === SessionStateControllerState.Connected &&\n action === SessionStateControllerAction.Fail\n ) {\n this.transition(SessionStateControllerState.Disconnecting, action);\n } else if (\n state === SessionStateControllerState.Connected &&\n action === SessionStateControllerAction.Update\n ) {\n this.transition(SessionStateControllerState.Updating, action);\n } else if (\n state === SessionStateControllerState.Updating &&\n action === SessionStateControllerAction.Fail\n ) {\n this.transition(SessionStateControllerState.Disconnecting, action);\n } else if (\n state === SessionStateControllerState.Updating &&\n action === SessionStateControllerAction.FinishUpdating\n ) {\n this.transition(SessionStateControllerState.Connected, action);\n } else if (\n state === SessionStateControllerState.Disconnecting &&\n action === SessionStateControllerAction.FinishDisconnecting\n ) {\n this.transition(SessionStateControllerState.NotConnected, action);\n } else if (this.canDefer(action)) {\n this.logger.info(\n `deferring transition from ${SessionStateControllerState[this.currentState]} with ${\n SessionStateControllerAction[action]\n }`\n );\n this.deferAction(action, work);\n return SessionStateControllerTransitionResult.DeferredTransition;\n } else {\n this.logger.warn(\n `no transition found from ${SessionStateControllerState[this.currentState]} with ${\n SessionStateControllerAction[action]\n }`\n );\n return SessionStateControllerTransitionResult.NoTransitionAvailable;\n }\n try {\n work();\n } catch (e) {\n this.logger.error(\n `error during state ${SessionStateControllerState[this.currentState]} with action ${\n SessionStateControllerAction[action]\n }: ${e}`\n );\n this.logger.info(`rolling back transition to ${SessionStateControllerState[state]}`);\n this.currentState = state;\n return SessionStateControllerTransitionResult.TransitionFailed;\n }\n this.performDeferredAction();\n return SessionStateControllerTransitionResult.Transitioned;\n }\n\n state(): SessionStateControllerState {\n return this.currentState;\n }\n\n private currentState: SessionStateControllerState = SessionStateControllerState.NotConnected;\n private deferredAction: SessionStateControllerAction | null = null;\n private deferredWork: () => void | null = null;\n\n private transition(\n newState: SessionStateControllerState,\n action: SessionStateControllerAction\n ): void {\n this.logger.info(\n `transitioning from ${SessionStateControllerState[this.currentState]} to ${\n SessionStateControllerState[newState]\n } with ${SessionStateControllerAction[action]}`\n );\n this.currentState = newState;\n }\n\n private deferPriority(action: SessionStateControllerAction): SessionStateControllerDeferPriority {\n switch (action) {\n case SessionStateControllerAction.Disconnect:\n return SessionStateControllerDeferPriority.VeryHigh;\n case SessionStateControllerAction.Fail:\n return SessionStateControllerDeferPriority.High;\n case SessionStateControllerAction.Reconnect:\n return SessionStateControllerDeferPriority.Medium;\n case SessionStateControllerAction.Update:\n return SessionStateControllerDeferPriority.Low;\n default:\n return SessionStateControllerDeferPriority.DoNotDefer;\n }\n }\n\n private deferAction(action: SessionStateControllerAction, work: () => void): void {\n if (\n this.deferredAction !== null &&\n this.deferPriority(this.deferredAction) > this.deferPriority(action)\n ) {\n return;\n }\n this.deferredAction = action;\n this.deferredWork = work;\n }\n\n private canDefer(action: SessionStateControllerAction): boolean {\n return (\n this.deferPriority(action) !== SessionStateControllerDeferPriority.DoNotDefer &&\n (this.currentState === SessionStateControllerState.Connecting ||\n this.currentState === SessionStateControllerState.Updating)\n );\n }\n\n private performDeferredAction(): SessionStateControllerTransitionResult {\n if (!this.deferredAction) {\n return;\n }\n const deferredAction = this.deferredAction;\n const deferredWork = this.deferredWork;\n this.deferredAction = null;\n this.deferredWork = null;\n this.logger.info(`performing deferred action ${SessionStateControllerAction[deferredAction]}`);\n if (\n this.perform(deferredAction, deferredWork) !==\n SessionStateControllerTransitionResult.Transitioned\n ) {\n this.logger.info(\n `unable to perform deferred action ${\n SessionStateControllerAction[deferredAction]\n } in state ${SessionStateControllerState[this.currentState]}`\n );\n }\n }\n}\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['personalizeevents'] = {};\nAWS.PersonalizeEvents = Service.defineService('personalizeevents', ['2018-03-22']);\nObject.defineProperty(apiLoader.services['personalizeevents'], '2018-03-22', {\n get: function get() {\n var model = require('../apis/personalize-events-2018-03-22.min.json');\n model.paginators = require('../apis/personalize-events-2018-03-22.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.PersonalizeEvents;\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport DevicePixelRatioMonitor from '../devicepixelratiomonitor/DevicePixelRatioMonitor';\nimport DefaultVideoTile from '../videotile/DefaultVideoTile';\nimport VideoElementResolutionMonitor from '../videotile/VideoElementResolutionMonitor';\nimport VideoTile from '../videotile/VideoTile';\nimport VideoTileController from '../videotilecontroller/VideoTileController';\nimport VideoTileFactory from './VideoTileFactory';\n\nexport default class DefaultVideoTileFactory implements VideoTileFactory {\n makeTile(\n tileId: number,\n localTile: boolean,\n tileController: VideoTileController,\n devicePixelRatioMonitor: DevicePixelRatioMonitor,\n resolutionMonitor: VideoElementResolutionMonitor\n ): VideoTile {\n return new DefaultVideoTile(\n tileId,\n localTile,\n tileController,\n devicePixelRatioMonitor,\n resolutionMonitor\n );\n }\n}\n","'use strict';\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\n\ntest[TO_STRING_TAG] = 'z';\n\nmodule.exports = String(test) === '[object z]';\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\n/**\n * [[VideoQualityAdaptationPreference]] represents options in how to degrade/reduce quality when end-users\n * encounter network constraints that limit the bandwidth available to the SDK. Different resolutions and\n * framerates have different but sometimes similar bitrates (e.g. a 480p/30fps stream may have similar bitrate\n * to 720p/15fps), so the prefence selected will impact the visual experience of end-users on impairment and recovery,\n * as not all resolution/framerate combinations will be used.\n *\n * The SDK will follow the same path of resolution/framerate choices in recovery as it will during constraint.\n *\n * This preference will have no effect unless the sender is encoding in a way such that there\n * are both variable framerate and resolution options available. See the\n * [Priority based downlink policy guide](https://aws.github.io/amazon-chime-sdk-js/modules/prioritybased_downlink_policy.html)\n * for more detailed information and diagrams.\n */\nexport enum VideoQualityAdaptationPreference {\n /**\n * Compromises between reducing resolution and framerate, with a slight preference towards framerate\n * as framerate changes may be possible without a keyframe request to the sender. This value\n * should be used in most use cases.\n */\n Balanced,\n\n /**\n * Give preference to framerate under network constraint. This can be used, e.g.\n * if the receiver is known to be displaying the video at a low resolution.\n */\n MaintainFramerate,\n\n /**\n * Give preference to resolution under network constraint. This can be used, e.g.\n * for screen share, or camera feed from a conference room or class room, that\n * is displayed on a large screen\n */\n MaintainResolution,\n}\n\nexport default VideoQualityAdaptationPreference;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['dynamodbstreams'] = {};\nAWS.DynamoDBStreams = Service.defineService('dynamodbstreams', ['2012-08-10']);\nObject.defineProperty(apiLoader.services['dynamodbstreams'], '2012-08-10', {\n get: function get() {\n var model = require('../apis/streams.dynamodb-2012-08-10.min.json');\n model.paginators = require('../apis/streams.dynamodb-2012-08-10.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.DynamoDBStreams;\n","var util = require('../util');\nvar JsonBuilder = require('../json/builder');\nvar JsonParser = require('../json/parser');\nvar populateHostPrefix = require('./helpers').populateHostPrefix;\n\nfunction buildRequest(req) {\n var httpRequest = req.httpRequest;\n var api = req.service.api;\n var target = api.targetPrefix + '.' + api.operations[req.operation].name;\n var version = api.jsonVersion || '1.0';\n var input = api.operations[req.operation].input;\n var builder = new JsonBuilder();\n\n if (version === 1) version = '1.0';\n\n if (api.awsQueryCompatible) {\n if (!httpRequest.params) {\n httpRequest.params = {};\n }\n // because Query protocol does this.\n Object.assign(httpRequest.params, req.params);\n }\n\n httpRequest.body = builder.build(req.params || {}, input);\n httpRequest.headers['Content-Type'] = 'application/x-amz-json-' + version;\n httpRequest.headers['X-Amz-Target'] = target;\n\n populateHostPrefix(req);\n}\n\nfunction extractError(resp) {\n var error = {};\n var httpResponse = resp.httpResponse;\n\n error.code = httpResponse.headers['x-amzn-errortype'] || 'UnknownError';\n if (typeof error.code === 'string') {\n error.code = error.code.split(':')[0];\n }\n\n if (httpResponse.body.length > 0) {\n try {\n var e = JSON.parse(httpResponse.body.toString());\n\n var code = e.__type || e.code || e.Code;\n if (code) {\n error.code = code.split('#').pop();\n }\n if (error.code === 'RequestEntityTooLarge') {\n error.message = 'Request body must be less than 1 MB';\n } else {\n error.message = (e.message || e.Message || null);\n }\n\n // The minimized models do not have error shapes, so\n // without expanding the model size, it's not possible\n // to validate the response shape (members) or\n // check if any are sensitive to logging.\n\n // Assign the fields as non-enumerable, allowing specific access only.\n for (var key in e || {}) {\n if (key === 'code' || key === 'message') {\n continue;\n }\n error['[' + key + ']'] = 'See error.' + key + ' for details.';\n Object.defineProperty(error, key, {\n value: e[key],\n enumerable: false,\n writable: true\n });\n }\n } catch (e) {\n error.statusCode = httpResponse.statusCode;\n error.message = httpResponse.statusMessage;\n }\n } else {\n error.statusCode = httpResponse.statusCode;\n error.message = httpResponse.statusCode.toString();\n }\n\n resp.error = util.error(new Error(), error);\n}\n\nfunction extractData(resp) {\n var body = resp.httpResponse.body.toString() || '{}';\n if (resp.request.service.config.convertResponseTypes === false) {\n resp.data = JSON.parse(body);\n } else {\n var operation = resp.request.service.api.operations[resp.request.operation];\n var shape = operation.output || {};\n var parser = new JsonParser();\n resp.data = parser.parse(body, shape);\n }\n}\n\n/**\n * @api private\n */\nmodule.exports = {\n buildRequest: buildRequest,\n extractError: extractError,\n extractData: extractData\n};\n","'use strict';\n\n/** @type {import('./range')} */\nmodule.exports = RangeError;\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport VideoElementResolutionMonitor, {\n VideoElementResolutionObserver,\n} from './VideoElementResolutionMonitor';\nexport default class DefaultVideoElementResolutionMonitor implements VideoElementResolutionMonitor {\n private observerQueue = new Set();\n private resizeObserver: ResizeObserver;\n private element: HTMLVideoElement | null = null;\n\n constructor() {\n this.resizeObserver = new ResizeObserver(entries => {\n for (const entry of entries) {\n const { width, height } = entry.contentRect;\n this.notifyObservers(width, height);\n }\n });\n }\n\n private notifyObservers(newWidth: number, newHeight: number): void {\n for (const observer of this.observerQueue) {\n observer.videoElementResolutionChanged(newWidth, newHeight);\n }\n }\n\n registerObserver(observer: VideoElementResolutionObserver): void {\n this.observerQueue.add(observer);\n }\n\n removeObserver(observer: VideoElementResolutionObserver): void {\n this.observerQueue.delete(observer);\n }\n\n bindVideoElement(newElement: HTMLVideoElement | null): void {\n if (this.element === newElement) {\n return;\n }\n if (this.element) {\n this.resizeObserver.unobserve(this.element);\n }\n this.element = newElement;\n if (this.element) {\n this.resizeObserver.observe(this.element);\n }\n }\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nexport enum CheckNetworkUDPConnectivityFeedback {\n Succeeded,\n MeetingSessionURLsNotInitialized,\n ConnectionFailed,\n ICENegotiationFailed,\n}\n\nexport default CheckNetworkUDPConnectivityFeedback;\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nexport enum CheckVideoConnectivityFeedback {\n Succeeded,\n VideoInputRequestFailed,\n VideoInputPermissionDenied,\n ConnectionFailed,\n VideoNotSent,\n}\n\nexport default CheckVideoConnectivityFeedback;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport VideoFrameProcessorTimer from './VideoFrameProcessorTimer';\n\nexport default class DefaultVideoFrameProcessorTimer implements VideoFrameProcessorTimer {\n private workerTimer: Worker | undefined = undefined;\n private lastTimeout: ReturnType | undefined;\n private callback: (() => void) | undefined = undefined;\n\n constructor() {\n this.workerTimer = this.createWorkerTimer();\n }\n\n // Create a timer that exists within a web worker. This timer will be used to\n // retrigger the process call whenever time expires.\n private createWorkerTimer(): Worker {\n try {\n // Blob representing a script that will start a timer for the length\n // of the message posted to it. After timer expiration, it will post\n // a message back to the main thread holding the timerID\n const timerBlob = new Blob(\n [\n `self.onmessage = async function(e){ \n var timerID = null;\n const awaitTimeout = delay => new Promise( resolve => {\n timerID = setTimeout(resolve, delay);\n })\n await awaitTimeout(e.data);\n postMessage(timerID);\n }`,\n ],\n { type: 'application/javascript' }\n );\n // Create the worker and link our process call to execute on\n // every message it posts\n const worker = new Worker(window.URL.createObjectURL(timerBlob));\n return worker;\n } catch (error) {\n // If blob: is not passed as a worker-src to csp, then the\n // worker timer will fail... therefore no support\n }\n }\n\n async start(delay: number, callback: () => void): Promise {\n this.callback = callback;\n\n if (this.workerTimer) {\n this.workerTimer.onmessage = event => {\n this.lastTimeout = event.data;\n this.callback();\n };\n this.workerTimer.postMessage(delay);\n } else {\n this.lastTimeout = setTimeout(() => {\n this.callback();\n }, delay);\n }\n }\n\n async destroy(): Promise {\n this.callback = undefined;\n if (this.lastTimeout) {\n clearTimeout(this.lastTimeout);\n this.lastTimeout = undefined;\n }\n if (this.workerTimer) {\n this.workerTimer.terminate();\n this.workerTimer = undefined;\n }\n }\n}\n","var AWS = require('../core');\n\nAWS.util.update(AWS.APIGateway.prototype, {\n/**\n * Sets the Accept header to application/json.\n *\n * @api private\n */\n setAcceptHeader: function setAcceptHeader(req) {\n var httpRequest = req.httpRequest;\n if (!httpRequest.headers.Accept) {\n httpRequest.headers['Accept'] = 'application/json';\n }\n },\n\n /**\n * @api private\n */\n setupRequestListeners: function setupRequestListeners(request) {\n request.addListener('build', this.setAcceptHeader);\n if (request.operation === 'getExport') {\n var params = request.params || {};\n if (params.exportType === 'swagger') {\n request.addListener('extractData', AWS.util.convertPayloadToString);\n }\n }\n }\n});\n\n","/**\n * Takes in a buffer of event messages and splits them into individual messages.\n * @param {Buffer} buffer\n * @api private\n */\nfunction eventMessageChunker(buffer) {\n /** @type Buffer[] */\n var messages = [];\n var offset = 0;\n\n while (offset < buffer.length) {\n var totalLength = buffer.readInt32BE(offset);\n\n // create new buffer for individual message (shares memory with original)\n var message = buffer.slice(offset, totalLength + offset);\n // increment offset to it starts at the next message\n offset += totalLength;\n\n messages.push(message);\n }\n\n return messages;\n}\n\n/**\n * @api private\n */\nmodule.exports = {\n eventMessageChunker: eventMessageChunker\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport AudioMixController from '../audiomixcontroller/AudioMixController';\nimport AudioProfile from '../audioprofile/AudioProfile';\nimport AudioVideoController from '../audiovideocontroller/AudioVideoController';\nimport ExtendedBrowserBehavior from '../browserbehavior/ExtendedBrowserBehavior';\nimport ConnectionMonitor from '../connectionmonitor/ConnectionMonitor';\nimport EventController from '../eventcontroller/EventController';\nimport Logger from '../logger/Logger';\nimport MediaStreamBroker from '../mediastreambroker/MediaStreamBroker';\nimport MeetingSessionConfiguration from '../meetingsession/MeetingSessionConfiguration';\nimport MeetingSessionTURNCredentials from '../meetingsession/MeetingSessionTURNCredentials';\nimport MeetingSessionVideoAvailability from '../meetingsession/MeetingSessionVideoAvailability';\nimport RealtimeController from '../realtimecontroller/RealtimeController';\nimport ReconnectController from '../reconnectcontroller/ReconnectController';\nimport RemovableObserver from '../removableobserver/RemovableObserver';\nimport SDP from '../sdp/SDP';\nimport VideoCodecCapability from '../sdp/VideoCodecCapability';\nimport SignalingClient from '../signalingclient/SignalingClient';\nimport SignalingClientVideoSubscriptionConfiguration from '../signalingclient/SignalingClientVideoSubscriptionConfiguration';\nimport { SdkIndexFrame, SdkStreamServiceType } from '../signalingprotocol/SignalingProtocol.js';\nimport StatsCollector from '../statscollector/StatsCollector';\nimport TransceiverController from '../transceivercontroller/TransceiverController';\nimport VideoCaptureAndEncodeParameter from '../videocaptureandencodeparameter/VideoCaptureAndEncodeParameter';\nimport VideoDownlinkBandwidthPolicy from '../videodownlinkbandwidthpolicy/VideoDownlinkBandwidthPolicy';\nimport VideoStreamIdSet from '../videostreamidset/VideoStreamIdSet';\nimport VideoStreamIndex from '../videostreamindex/VideoStreamIndex';\nimport VideoTileController from '../videotilecontroller/VideoTileController';\nimport VideoUplinkBandwidthPolicy from '../videouplinkbandwidthpolicy/VideoUplinkBandwidthPolicy';\nimport VolumeIndicatorAdapter from '../volumeindicatoradapter/VolumeIndicatorAdapter';\n\nexport const DEFAULT_VIDEO_SUBSCRIPTION_LIMIT = 25;\n\n/**\n * [[AudioVideoControllerState]] includes the compute resources shared by [[DefaultAudioVideoController]] and any running [[Task]].\n *\n * **Note**: Any additions to this class need to consider whether they need to be reset in `resetConnectionSpecificState`, `CleanStoppedSessionTask`, or\n * `CleanRestartedSessionTask`, e.g. if it is relies on backend state and will go stale across reconnections. Failing\n * to reset state may lead to unexpected behavior.\n */\nexport default class AudioVideoControllerState {\n logger: Logger | null = null;\n\n browserBehavior: ExtendedBrowserBehavior | null = null;\n\n meetingSessionConfiguration: MeetingSessionConfiguration | null = null;\n\n signalingClient: SignalingClient | null = null;\n\n peer: RTCPeerConnection | null = null;\n\n previousSdpOffer: SDP | null = null;\n\n sdpOfferInit: RTCSessionDescriptionInit | null = null;\n\n audioVideoController: AudioVideoController | null = null;\n\n realtimeController: RealtimeController | null = null;\n\n videoTileController: VideoTileController | null = null;\n\n mediaStreamBroker: MediaStreamBroker | null = null;\n\n activeAudioInput: MediaStream | undefined = undefined;\n\n activeVideoInput: MediaStream | undefined = undefined;\n\n audioMixController: AudioMixController | null = null;\n\n transceiverController: TransceiverController | null = null;\n\n indexFrame: SdkIndexFrame | null = null;\n\n iceCandidates: RTCIceCandidate[] = [];\n\n iceCandidateHandler: ((event: RTCPeerConnectionIceEvent) => void) | null = null;\n\n iceGatheringStateEventHandler: (() => void) | null = null;\n\n sdpAnswer: string | null = null;\n\n turnCredentials: MeetingSessionTURNCredentials | null = null;\n\n reconnectController: ReconnectController | null = null;\n\n removableObservers: RemovableObserver[] = [];\n\n audioProfile: AudioProfile | null = null;\n\n videoStreamIndex: VideoStreamIndex | null = null;\n\n videoDownlinkBandwidthPolicy: VideoDownlinkBandwidthPolicy | null = null;\n\n videoUplinkBandwidthPolicy: VideoUplinkBandwidthPolicy | null = null;\n\n lastKnownVideoAvailability: MeetingSessionVideoAvailability | null = null;\n\n videoCaptureAndEncodeParameter: VideoCaptureAndEncodeParameter | null = null;\n\n // An unordered list of IDs provided by the downlink policy that\n // we will eventually subscribe to.\n videosToReceive: VideoStreamIdSet | null = null;\n\n // The last processed set of IDs provided by the policy, so that we can\n // compare what changes were additions, stream switches, or removals.\n lastVideosToReceive: VideoStreamIdSet | null = null;\n\n // An ordered list corresponding to `videosToReceive` where the order\n // itself correspond to transceivers; 0 in this list corresponds to an inactive tranceiver.\n videoSubscriptions: number[] | null = null;\n\n // The last calculated list of subscription configuration used to send a remote video\n // update (i.e. not necessarily related to what is in subscribe). This is used to make the remote\n // video update a differential message (i.e. only sending changes)\n //\n // This is stored as a map keyed by group ID for convenience\n lastVideoSubscriptionConfiguration: Map<\n number,\n SignalingClientVideoSubscriptionConfiguration\n > = new Map();\n\n // The video subscription limit is set by the backend and is subject to change in future.\n // This value is set in the `JoinAndReceiveIndexTask` when we process the `SdkJoinAckFrame`\n // and is used in the `ReceiveVideoStreamIndexTask` to limit the total number of streams\n // that we include in the `videosToReceive`.\n videoSubscriptionLimit: number = DEFAULT_VIDEO_SUBSCRIPTION_LIMIT;\n\n // The previous SDP answer will be used as a dictionary to seed the compression library\n // during decompressing the compressed SDP answer.\n previousSdpAnswerAsString: string = '';\n\n // This flag indicates if the backend supports compression for the client.\n serverSupportsCompression: boolean = false;\n\n // Values set by `setVideoCodecSendPreferences`.\n videoSendCodecPreferences: VideoCodecCapability[] = [];\n\n // Calculated as the highest priority available codec set in the (possibly munged) SDP answer\n // that is provide to the peer connection, which will be what is sent.\n currentVideoSendCodec: VideoCodecCapability | undefined = undefined;\n\n // Intersection of `videoSendCodecPreferences` and the supported receive codecs of\n // all the other clients in the meeting.\n meetingSupportedVideoSendCodecPreferences: VideoCodecCapability[] | undefined = undefined;\n\n // Calculated as the list of available codec set in the (possibly munged) SDP answer\n // that is provided to the peer connection, which will be ordered by priority.\n prioritizedSendVideoCodecCapabilities: VideoCodecCapability[] = [];\n\n // Video codecs that we have detected encoding issues with that we will\n // avoid using even if they are provided in `videoSendCodecPreferences`\n degradedVideoSendCodecs: VideoCodecCapability[] = [];\n\n videosPaused: VideoStreamIdSet | null = null;\n\n videoDuplexMode: SdkStreamServiceType | null = null;\n\n volumeIndicatorAdapter: VolumeIndicatorAdapter | null = null;\n\n statsCollector: StatsCollector | null = null;\n\n connectionMonitor: ConnectionMonitor | null = null;\n\n // This state is deprecated and unused.\n videoInputAttachedTimestampMs: number = 0;\n\n // This state is deprecated and unused.\n audioDeviceInformation: { [id: string]: string } = {};\n\n // This state is deprecated and unused.\n videoDeviceInformation: { [id: string]: string } = {};\n\n enableSimulcast: boolean = false;\n\n // If set to true, the client will actively try to use Scalable Video Coding (SVC) features\n // if possible. The availability of these features depends dynamically on the video codec used;\n // static browser availability and any competing features (e.g. simulcast) should\n // have already been checked before this is set to true.\n enableSVC: boolean = false;\n\n eventController: EventController | null = null;\n\n signalingOpenDurationMs: number | null = null;\n\n iceGatheringDurationMs: number | null = null;\n\n startAudioVideoTimestamp: number | null = null;\n\n attendeePresenceDurationMs: number | null = null;\n\n meetingStartDurationMs: number | null = null;\n\n poorConnectionCount: number = 0;\n\n maxVideoTileCount: number = 0;\n\n startTimeMs: number | null = null;\n\n // Indicates whether the session has completed initial connection (i.e. signal channel open and first subscribe\n // and subscribe-ack)\n isSessionConnected: boolean = false;\n\n /*\n * Reset state corresponding to state that is dependent on a individual connection\n * and may not be valid for others, e.g. on a reconnection.\n */\n resetConnectionSpecificState(): void {\n // For auditing reasons, we will comment on the state that we do not touch here. Note that `DefaultAudioVideoController.actionConnect`\n // also resets certain state, some to cached members:\n // Reset to empty/null/new state: `browserBehavior`, `transceiverController`, `volumeIndicatorAdapter`, `enableSimulcast`\n // `signalingOpenDurationMs`, `iceGatheringDurationMs`, `startAudioVideoTimestamp`, `attendeePresenceDurationMs`\n // `meetingStartDurationMs`, `startTimeMs`, `lastKnownVideoAvailability`, `videoCaptureAndEncodeParameter`, `videosToReceive`\n // `videosPaused`, `videoStreamIndex`, `statsCollector`, `connectionMonitor`\n // Reset to existing/cached values: `logger`, `meetingSessionConfiguration`, `realtimeController`, `mediaStreamBroker`,\n // `audioMixController`, `reconnectController, `audioProfile`, `eventController`\n\n // `signalingClient` can be reused from a failed/disconnected state.\n\n if (this.peer) {\n this.peer.close();\n }\n this.peer = null;\n this.previousSdpOffer = null;\n this.sdpOfferInit = null;\n\n // `audioVideoController` members should either be reusable, or moved to `AudioVideoControllerState` and\n // cleaned up here.\n\n // We don't want to mutate `videoTileController` as most video tiles will still be there on reconnect. We can remove tiles on the\n // first index we receive if they no longer exist\n\n // `mediaStreamBroker`, `activeAudioInput`, and `activeVideoInput` are cleaned up seperately in `DefaultAudioVideoController.cleanUpMediaStreamsAfterStop`\n // but only on `stop` or non-reconnectable failures. They are also set to cached `DefaultAudioVideoController` members on restart.\n\n if (this.transceiverController !== undefined) {\n this.transceiverController.reset();\n }\n this.indexFrame = null;\n this.iceCandidates = [];\n this.iceCandidateHandler = null;\n this.sdpAnswer = null;\n this.turnCredentials = null;\n\n this.videoDownlinkBandwidthPolicy.reset();\n if (this.videoUplinkBandwidthPolicy.reset) {\n this.videoUplinkBandwidthPolicy.reset();\n }\n\n this.lastVideosToReceive = null;\n this.lastVideoSubscriptionConfiguration = new Map();\n this.videoSubscriptions = null;\n this.videoSubscriptionLimit = DEFAULT_VIDEO_SUBSCRIPTION_LIMIT;\n this.previousSdpAnswerAsString = '';\n this.serverSupportsCompression = false;\n\n // `videoSendCodecPreferences` is set by builder and needs to stay consistent.\n\n this.currentVideoSendCodec = undefined;\n this.meetingSupportedVideoSendCodecPreferences = undefined;\n this.videoDuplexMode = null;\n\n // `poorConnectionCount`and `maxVideoTileCount` is intentionally not set to 0 across reconnections.\n\n this.isSessionConnected = false;\n }\n}\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['iotdata'] = {};\nAWS.IotData = Service.defineService('iotdata', ['2015-05-28']);\nrequire('../lib/services/iotdata');\nObject.defineProperty(apiLoader.services['iotdata'], '2015-05-28', {\n get: function get() {\n var model = require('../apis/iot-data-2015-05-28.min.json');\n model.paginators = require('../apis/iot-data-2015-05-28.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.IotData;\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar isCallable = require('../internals/is-callable');\nvar isIterable = require('../internals/is-iterable');\nvar isObject = require('../internals/is-object');\n\nvar Set = getBuiltIn('Set');\n\nvar isSetLike = function (it) {\n return isObject(it)\n && typeof it.size == 'number'\n && isCallable(it.has)\n && isCallable(it.keys);\n};\n\n// fallback old -> new set methods proposal arguments\nmodule.exports = function (it) {\n if (isSetLike(it)) return it;\n return isIterable(it) ? new Set(it) : it;\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport Logger from '../logger/Logger';\nimport { RESOURCE_CONSTRAINTS } from './VideoFxConstants';\n\n/**\n * [[VideoFxSegmentationRateManager]] Mechanism that can be used to maximize\n * frequency of the segmentation operations while maintaining a target amount\n * of resource utilization.\n */\nexport class VideoFxSegmentationRateManager {\n private logger: Logger;\n // Target segmentation percentage is defined as the amount of time spent performing\n // segmentations divided by the total duration of time that has passed\n private targetSegmentationCyclePercentage: number;\n private frameCountOverSamplingPeriod: number;\n private framesPerSegmentation: number;\n // Measure the start time of a single segmentation\n private frameSegmentationStartTime: number;\n // The running sum of single frame segmentation durations over a sampling period\n private totalSegmentationDurationOverSamplingPeriod: number;\n // The time that the segmentation period started\n private samplingPeriodStartTime: number;\n\n constructor(logger: Logger, targetSegmentationCycleTime: number) {\n this.logger = logger;\n // Max amount of compute we want to offer to action (converted from\n // percentage to decimal)\n this.targetSegmentationCyclePercentage = targetSegmentationCycleTime / 100;\n // Variables for recording timing within cycle\n this.frameCountOverSamplingPeriod = 0;\n this.totalSegmentationDurationOverSamplingPeriod = 0;\n this.samplingPeriodStartTime = performance.now();\n this.framesPerSegmentation = RESOURCE_CONSTRAINTS.SEGMENTATION_DEFAULT_FRAMES_PER_SEGMENTATION;\n }\n\n /**\n * Invoked on every frame to increment the running count of frames being processed\n */\n submitFrame(): void {\n this.frameCountOverSamplingPeriod++;\n }\n\n /**\n * Invoked on every frame to coordinate when the segmentation should be\n * executed so that we are maintaing a segmentation rate of once per every\n * framesPerSegmentation frames.\n * @returns boolean for whether or not we want to perform an action on the current\n * frame\n */\n shouldApplySegmentation(): boolean {\n return this.frameCountOverSamplingPeriod % this.framesPerSegmentation === 0;\n }\n\n /**\n * Starts the timing of the current action\n */\n startSegmentation(): void {\n this.frameSegmentationStartTime = performance.now();\n }\n\n /**\n * Invoked after the action to notify the compute manager. Afterwards the\n * manager will make adjustments to action rates to maintain a value below compute\n * ceiling\n */\n completeSegmentation(): void {\n this.totalSegmentationDurationOverSamplingPeriod +=\n performance.now() - this.frameSegmentationStartTime;\n // Check if the sampling period has ended. If so, check if frames per\n // segmentation needs to be updated\n if (\n this.frameCountOverSamplingPeriod >=\n RESOURCE_CONSTRAINTS.SEGMENTATION_SAMPLING_PERIOD_FRAME_COUNT\n ) {\n this.adjustFramesPerSegmentation(\n this.totalSegmentationDurationOverSamplingPeriod /\n (performance.now() - this.samplingPeriodStartTime)\n );\n }\n }\n\n /**\n * Increase or decrease the frames per segmentation so that we remain as performant as possible,\n * but also below the targetSegmentationCycleTime\n * @param currentSegmentationCycleTime Current ratio of frame processing allocated to a specific action\n */\n private adjustFramesPerSegmentation(currentSegmentationCycleTime: number): void {\n // Compute is too high -> increase action period (slow down)\n if (currentSegmentationCycleTime > this.targetSegmentationCyclePercentage) {\n this.framesPerSegmentation++;\n this.logger.info(\n `Segmentation cycle percentage above the configured maximal value. ` +\n `Decreasing segmentation rate to 1 segmentation per ` +\n `${this.framesPerSegmentation} frames`\n );\n // Compute is too low -> decrease action period (speed up)\n } else if (\n this.framesPerSegmentation > 1 &&\n currentSegmentationCycleTime < this.targetSegmentationCyclePercentage\n ) {\n this.framesPerSegmentation--;\n this.logger.info(\n `Segmentation cycle percentage below the configured maximal value. ` +\n `Increasing segmentation rate to 1 segmentation per ` +\n `${this.framesPerSegmentation} frames`\n );\n }\n // Reset for next compute sample/cycle\n this.totalSegmentationDurationOverSamplingPeriod = 0;\n this.frameCountOverSamplingPeriod = 0;\n this.samplingPeriodStartTime = performance.now();\n }\n}\n","'use strict';\n\nvar utils = require('./../utils');\nvar defaults = require('./../defaults');\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\nmodule.exports = function transformData(data, headers, fns) {\n var context = this || defaults;\n /*eslint no-param-reassign:0*/\n utils.forEach(fns, function transform(fn) {\n data = fn.call(context, data, headers);\n });\n\n return data;\n};\n","var AWS = require('../core');\n\nAWS.util.update(AWS.Route53.prototype, {\n /**\n * @api private\n */\n setupRequestListeners: function setupRequestListeners(request) {\n request.on('build', this.sanitizeUrl);\n },\n\n /**\n * @api private\n */\n sanitizeUrl: function sanitizeUrl(request) {\n var path = request.httpRequest.path;\n request.httpRequest.path = path.replace(/\\/%2F\\w+%2F/, '/');\n },\n\n /**\n * @return [Boolean] whether the error can be retried\n * @api private\n */\n retryableError: function retryableError(error) {\n if (error.code === 'PriorRequestNotComplete' &&\n error.statusCode === 400) {\n return true;\n } else {\n var _super = AWS.Service.prototype.retryableError;\n return _super.call(this, error);\n }\n }\n});\n","'use strict';\nvar makeBuiltIn = require('../internals/make-built-in');\nvar defineProperty = require('../internals/object-define-property');\n\nmodule.exports = function (target, name, descriptor) {\n if (descriptor.get) makeBuiltIn(descriptor.get, name, { getter: true });\n if (descriptor.set) makeBuiltIn(descriptor.set, name, { setter: true });\n return defineProperty.f(target, name, descriptor);\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nenum TaskStatus {\n IDLE = 'IDLE',\n RUNNING = 'RUNNING',\n CANCELED = 'CANCELED',\n FINISHED = 'FINISHED',\n}\n\nexport default TaskStatus;\n","/**\n * Object IDs for ASN.1.\n *\n * @author Dave Longley\n *\n * Copyright (c) 2010-2013 Digital Bazaar, Inc.\n */\nvar forge = require('./forge');\n\nforge.pki = forge.pki || {};\nvar oids = module.exports = forge.pki.oids = forge.oids = forge.oids || {};\n\n// set id to name mapping and name to id mapping\nfunction _IN(id, name) {\n oids[id] = name;\n oids[name] = id;\n}\n// set id to name mapping only\nfunction _I_(id, name) {\n oids[id] = name;\n}\n\n// algorithm OIDs\n_IN('1.2.840.113549.1.1.1', 'rsaEncryption');\n// Note: md2 & md4 not implemented\n//_IN('1.2.840.113549.1.1.2', 'md2WithRSAEncryption');\n//_IN('1.2.840.113549.1.1.3', 'md4WithRSAEncryption');\n_IN('1.2.840.113549.1.1.4', 'md5WithRSAEncryption');\n_IN('1.2.840.113549.1.1.5', 'sha1WithRSAEncryption');\n_IN('1.2.840.113549.1.1.7', 'RSAES-OAEP');\n_IN('1.2.840.113549.1.1.8', 'mgf1');\n_IN('1.2.840.113549.1.1.9', 'pSpecified');\n_IN('1.2.840.113549.1.1.10', 'RSASSA-PSS');\n_IN('1.2.840.113549.1.1.11', 'sha256WithRSAEncryption');\n_IN('1.2.840.113549.1.1.12', 'sha384WithRSAEncryption');\n_IN('1.2.840.113549.1.1.13', 'sha512WithRSAEncryption');\n// Edwards-curve Digital Signature Algorithm (EdDSA) Ed25519\n_IN('1.3.101.112', 'EdDSA25519');\n\n_IN('1.2.840.10040.4.3', 'dsa-with-sha1');\n\n_IN('1.3.14.3.2.7', 'desCBC');\n\n_IN('1.3.14.3.2.26', 'sha1');\n// Deprecated equivalent of sha1WithRSAEncryption\n_IN('1.3.14.3.2.29', 'sha1WithRSASignature');\n_IN('2.16.840.1.101.3.4.2.1', 'sha256');\n_IN('2.16.840.1.101.3.4.2.2', 'sha384');\n_IN('2.16.840.1.101.3.4.2.3', 'sha512');\n_IN('2.16.840.1.101.3.4.2.4', 'sha224');\n_IN('2.16.840.1.101.3.4.2.5', 'sha512-224');\n_IN('2.16.840.1.101.3.4.2.6', 'sha512-256');\n_IN('1.2.840.113549.2.2', 'md2');\n_IN('1.2.840.113549.2.5', 'md5');\n\n// pkcs#7 content types\n_IN('1.2.840.113549.1.7.1', 'data');\n_IN('1.2.840.113549.1.7.2', 'signedData');\n_IN('1.2.840.113549.1.7.3', 'envelopedData');\n_IN('1.2.840.113549.1.7.4', 'signedAndEnvelopedData');\n_IN('1.2.840.113549.1.7.5', 'digestedData');\n_IN('1.2.840.113549.1.7.6', 'encryptedData');\n\n// pkcs#9 oids\n_IN('1.2.840.113549.1.9.1', 'emailAddress');\n_IN('1.2.840.113549.1.9.2', 'unstructuredName');\n_IN('1.2.840.113549.1.9.3', 'contentType');\n_IN('1.2.840.113549.1.9.4', 'messageDigest');\n_IN('1.2.840.113549.1.9.5', 'signingTime');\n_IN('1.2.840.113549.1.9.6', 'counterSignature');\n_IN('1.2.840.113549.1.9.7', 'challengePassword');\n_IN('1.2.840.113549.1.9.8', 'unstructuredAddress');\n_IN('1.2.840.113549.1.9.14', 'extensionRequest');\n\n_IN('1.2.840.113549.1.9.20', 'friendlyName');\n_IN('1.2.840.113549.1.9.21', 'localKeyId');\n_IN('1.2.840.113549.1.9.22.1', 'x509Certificate');\n\n// pkcs#12 safe bags\n_IN('1.2.840.113549.1.12.10.1.1', 'keyBag');\n_IN('1.2.840.113549.1.12.10.1.2', 'pkcs8ShroudedKeyBag');\n_IN('1.2.840.113549.1.12.10.1.3', 'certBag');\n_IN('1.2.840.113549.1.12.10.1.4', 'crlBag');\n_IN('1.2.840.113549.1.12.10.1.5', 'secretBag');\n_IN('1.2.840.113549.1.12.10.1.6', 'safeContentsBag');\n\n// password-based-encryption for pkcs#12\n_IN('1.2.840.113549.1.5.13', 'pkcs5PBES2');\n_IN('1.2.840.113549.1.5.12', 'pkcs5PBKDF2');\n\n_IN('1.2.840.113549.1.12.1.1', 'pbeWithSHAAnd128BitRC4');\n_IN('1.2.840.113549.1.12.1.2', 'pbeWithSHAAnd40BitRC4');\n_IN('1.2.840.113549.1.12.1.3', 'pbeWithSHAAnd3-KeyTripleDES-CBC');\n_IN('1.2.840.113549.1.12.1.4', 'pbeWithSHAAnd2-KeyTripleDES-CBC');\n_IN('1.2.840.113549.1.12.1.5', 'pbeWithSHAAnd128BitRC2-CBC');\n_IN('1.2.840.113549.1.12.1.6', 'pbewithSHAAnd40BitRC2-CBC');\n\n// hmac OIDs\n_IN('1.2.840.113549.2.7', 'hmacWithSHA1');\n_IN('1.2.840.113549.2.8', 'hmacWithSHA224');\n_IN('1.2.840.113549.2.9', 'hmacWithSHA256');\n_IN('1.2.840.113549.2.10', 'hmacWithSHA384');\n_IN('1.2.840.113549.2.11', 'hmacWithSHA512');\n\n// symmetric key algorithm oids\n_IN('1.2.840.113549.3.7', 'des-EDE3-CBC');\n_IN('2.16.840.1.101.3.4.1.2', 'aes128-CBC');\n_IN('2.16.840.1.101.3.4.1.22', 'aes192-CBC');\n_IN('2.16.840.1.101.3.4.1.42', 'aes256-CBC');\n\n// certificate issuer/subject OIDs\n_IN('2.5.4.3', 'commonName');\n_IN('2.5.4.4', 'surname');\n_IN('2.5.4.5', 'serialNumber');\n_IN('2.5.4.6', 'countryName');\n_IN('2.5.4.7', 'localityName');\n_IN('2.5.4.8', 'stateOrProvinceName');\n_IN('2.5.4.9', 'streetAddress');\n_IN('2.5.4.10', 'organizationName');\n_IN('2.5.4.11', 'organizationalUnitName');\n_IN('2.5.4.12', 'title');\n_IN('2.5.4.13', 'description');\n_IN('2.5.4.15', 'businessCategory');\n_IN('2.5.4.17', 'postalCode');\n_IN('2.5.4.42', 'givenName');\n_IN('1.3.6.1.4.1.311.60.2.1.2', 'jurisdictionOfIncorporationStateOrProvinceName');\n_IN('1.3.6.1.4.1.311.60.2.1.3', 'jurisdictionOfIncorporationCountryName');\n\n// X.509 extension OIDs\n_IN('2.16.840.1.113730.1.1', 'nsCertType');\n_IN('2.16.840.1.113730.1.13', 'nsComment'); // deprecated in theory; still widely used\n_I_('2.5.29.1', 'authorityKeyIdentifier'); // deprecated, use .35\n_I_('2.5.29.2', 'keyAttributes'); // obsolete use .37 or .15\n_I_('2.5.29.3', 'certificatePolicies'); // deprecated, use .32\n_I_('2.5.29.4', 'keyUsageRestriction'); // obsolete use .37 or .15\n_I_('2.5.29.5', 'policyMapping'); // deprecated use .33\n_I_('2.5.29.6', 'subtreesConstraint'); // obsolete use .30\n_I_('2.5.29.7', 'subjectAltName'); // deprecated use .17\n_I_('2.5.29.8', 'issuerAltName'); // deprecated use .18\n_I_('2.5.29.9', 'subjectDirectoryAttributes');\n_I_('2.5.29.10', 'basicConstraints'); // deprecated use .19\n_I_('2.5.29.11', 'nameConstraints'); // deprecated use .30\n_I_('2.5.29.12', 'policyConstraints'); // deprecated use .36\n_I_('2.5.29.13', 'basicConstraints'); // deprecated use .19\n_IN('2.5.29.14', 'subjectKeyIdentifier');\n_IN('2.5.29.15', 'keyUsage');\n_I_('2.5.29.16', 'privateKeyUsagePeriod');\n_IN('2.5.29.17', 'subjectAltName');\n_IN('2.5.29.18', 'issuerAltName');\n_IN('2.5.29.19', 'basicConstraints');\n_I_('2.5.29.20', 'cRLNumber');\n_I_('2.5.29.21', 'cRLReason');\n_I_('2.5.29.22', 'expirationDate');\n_I_('2.5.29.23', 'instructionCode');\n_I_('2.5.29.24', 'invalidityDate');\n_I_('2.5.29.25', 'cRLDistributionPoints'); // deprecated use .31\n_I_('2.5.29.26', 'issuingDistributionPoint'); // deprecated use .28\n_I_('2.5.29.27', 'deltaCRLIndicator');\n_I_('2.5.29.28', 'issuingDistributionPoint');\n_I_('2.5.29.29', 'certificateIssuer');\n_I_('2.5.29.30', 'nameConstraints');\n_IN('2.5.29.31', 'cRLDistributionPoints');\n_IN('2.5.29.32', 'certificatePolicies');\n_I_('2.5.29.33', 'policyMappings');\n_I_('2.5.29.34', 'policyConstraints'); // deprecated use .36\n_IN('2.5.29.35', 'authorityKeyIdentifier');\n_I_('2.5.29.36', 'policyConstraints');\n_IN('2.5.29.37', 'extKeyUsage');\n_I_('2.5.29.46', 'freshestCRL');\n_I_('2.5.29.54', 'inhibitAnyPolicy');\n\n// extKeyUsage purposes\n_IN('1.3.6.1.4.1.11129.2.4.2', 'timestampList');\n_IN('1.3.6.1.5.5.7.1.1', 'authorityInfoAccess');\n_IN('1.3.6.1.5.5.7.3.1', 'serverAuth');\n_IN('1.3.6.1.5.5.7.3.2', 'clientAuth');\n_IN('1.3.6.1.5.5.7.3.3', 'codeSigning');\n_IN('1.3.6.1.5.5.7.3.4', 'emailProtection');\n_IN('1.3.6.1.5.5.7.3.8', 'timeStamping');\n","/**\n * Escapes characters that can not be in an XML attribute.\n */\nfunction escapeAttribute(value) {\n return value.replace(/&/g, '&').replace(/'/g, ''').replace(//g, '>').replace(/\"/g, '"');\n}\n\n/**\n * @api private\n */\nmodule.exports = {\n escapeAttribute: escapeAttribute\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport Scheduler from './Scheduler';\n/**\n * [[TimeoutScheduler]] calls the callback once after timeoutMs milliseconds.\n */\nexport default class TimeoutScheduler implements Scheduler {\n // eslint-disable-next-line\n private timer: any = null;\n\n constructor(private timeoutMs: number) {}\n\n start(callback: () => void): void {\n this.stop();\n this.timer = setTimeout(() => {\n clearTimeout(this.timer);\n callback();\n }, this.timeoutMs);\n }\n\n stop(): void {\n if (this.timer !== null) {\n clearTimeout(this.timer);\n this.timer = null;\n }\n }\n}\n","/**\n * Secure Hash Algorithm with 160-bit digest (SHA-1) implementation.\n *\n * @author Dave Longley\n *\n * Copyright (c) 2010-2015 Digital Bazaar, Inc.\n */\nvar forge = require('./forge');\nrequire('./md');\nrequire('./util');\n\nvar sha1 = module.exports = forge.sha1 = forge.sha1 || {};\nforge.md.sha1 = forge.md.algorithms.sha1 = sha1;\n\n/**\n * Creates a SHA-1 message digest object.\n *\n * @return a message digest object.\n */\nsha1.create = function() {\n // do initialization as necessary\n if(!_initialized) {\n _init();\n }\n\n // SHA-1 state contains five 32-bit integers\n var _state = null;\n\n // input buffer\n var _input = forge.util.createBuffer();\n\n // used for word storage\n var _w = new Array(80);\n\n // message digest object\n var md = {\n algorithm: 'sha1',\n blockLength: 64,\n digestLength: 20,\n // 56-bit length of message so far (does not including padding)\n messageLength: 0,\n // true message length\n fullMessageLength: null,\n // size of message length in bytes\n messageLengthSize: 8\n };\n\n /**\n * Starts the digest.\n *\n * @return this digest object.\n */\n md.start = function() {\n // up to 56-bit message length for convenience\n md.messageLength = 0;\n\n // full message length (set md.messageLength64 for backwards-compatibility)\n md.fullMessageLength = md.messageLength64 = [];\n var int32s = md.messageLengthSize / 4;\n for(var i = 0; i < int32s; ++i) {\n md.fullMessageLength.push(0);\n }\n _input = forge.util.createBuffer();\n _state = {\n h0: 0x67452301,\n h1: 0xEFCDAB89,\n h2: 0x98BADCFE,\n h3: 0x10325476,\n h4: 0xC3D2E1F0\n };\n return md;\n };\n // start digest automatically for first time\n md.start();\n\n /**\n * Updates the digest with the given message input. The given input can\n * treated as raw input (no encoding will be applied) or an encoding of\n * 'utf8' maybe given to encode the input using UTF-8.\n *\n * @param msg the message input to update with.\n * @param encoding the encoding to use (default: 'raw', other: 'utf8').\n *\n * @return this digest object.\n */\n md.update = function(msg, encoding) {\n if(encoding === 'utf8') {\n msg = forge.util.encodeUtf8(msg);\n }\n\n // update message length\n var len = msg.length;\n md.messageLength += len;\n len = [(len / 0x100000000) >>> 0, len >>> 0];\n for(var i = md.fullMessageLength.length - 1; i >= 0; --i) {\n md.fullMessageLength[i] += len[1];\n len[1] = len[0] + ((md.fullMessageLength[i] / 0x100000000) >>> 0);\n md.fullMessageLength[i] = md.fullMessageLength[i] >>> 0;\n len[0] = ((len[1] / 0x100000000) >>> 0);\n }\n\n // add bytes to input buffer\n _input.putBytes(msg);\n\n // process bytes\n _update(_state, _w, _input);\n\n // compact input buffer every 2K or if empty\n if(_input.read > 2048 || _input.length() === 0) {\n _input.compact();\n }\n\n return md;\n };\n\n /**\n * Produces the digest.\n *\n * @return a byte buffer containing the digest value.\n */\n md.digest = function() {\n /* Note: Here we copy the remaining bytes in the input buffer and\n add the appropriate SHA-1 padding. Then we do the final update\n on a copy of the state so that if the user wants to get\n intermediate digests they can do so. */\n\n /* Determine the number of bytes that must be added to the message\n to ensure its length is congruent to 448 mod 512. In other words,\n the data to be digested must be a multiple of 512 bits (or 128 bytes).\n This data includes the message, some padding, and the length of the\n message. Since the length of the message will be encoded as 8 bytes (64\n bits), that means that the last segment of the data must have 56 bytes\n (448 bits) of message and padding. Therefore, the length of the message\n plus the padding must be congruent to 448 mod 512 because\n 512 - 128 = 448.\n\n In order to fill up the message length it must be filled with\n padding that begins with 1 bit followed by all 0 bits. Padding\n must *always* be present, so if the message length is already\n congruent to 448 mod 512, then 512 padding bits must be added. */\n\n var finalBlock = forge.util.createBuffer();\n finalBlock.putBytes(_input.bytes());\n\n // compute remaining size to be digested (include message length size)\n var remaining = (\n md.fullMessageLength[md.fullMessageLength.length - 1] +\n md.messageLengthSize);\n\n // add padding for overflow blockSize - overflow\n // _padding starts with 1 byte with first bit is set (byte value 128), then\n // there may be up to (blockSize - 1) other pad bytes\n var overflow = remaining & (md.blockLength - 1);\n finalBlock.putBytes(_padding.substr(0, md.blockLength - overflow));\n\n // serialize message length in bits in big-endian order; since length\n // is stored in bytes we multiply by 8 and add carry from next int\n var next, carry;\n var bits = md.fullMessageLength[0] * 8;\n for(var i = 0; i < md.fullMessageLength.length - 1; ++i) {\n next = md.fullMessageLength[i + 1] * 8;\n carry = (next / 0x100000000) >>> 0;\n bits += carry;\n finalBlock.putInt32(bits >>> 0);\n bits = next >>> 0;\n }\n finalBlock.putInt32(bits);\n\n var s2 = {\n h0: _state.h0,\n h1: _state.h1,\n h2: _state.h2,\n h3: _state.h3,\n h4: _state.h4\n };\n _update(s2, _w, finalBlock);\n var rval = forge.util.createBuffer();\n rval.putInt32(s2.h0);\n rval.putInt32(s2.h1);\n rval.putInt32(s2.h2);\n rval.putInt32(s2.h3);\n rval.putInt32(s2.h4);\n return rval;\n };\n\n return md;\n};\n\n// sha-1 padding bytes not initialized yet\nvar _padding = null;\nvar _initialized = false;\n\n/**\n * Initializes the constant tables.\n */\nfunction _init() {\n // create padding\n _padding = String.fromCharCode(128);\n _padding += forge.util.fillString(String.fromCharCode(0x00), 64);\n\n // now initialized\n _initialized = true;\n}\n\n/**\n * Updates a SHA-1 state with the given byte buffer.\n *\n * @param s the SHA-1 state to update.\n * @param w the array to use to store words.\n * @param bytes the byte buffer to update with.\n */\nfunction _update(s, w, bytes) {\n // consume 512 bit (64 byte) chunks\n var t, a, b, c, d, e, f, i;\n var len = bytes.length();\n while(len >= 64) {\n // the w array will be populated with sixteen 32-bit big-endian words\n // and then extended into 80 32-bit words according to SHA-1 algorithm\n // and for 32-79 using Max Locktyukhin's optimization\n\n // initialize hash value for this chunk\n a = s.h0;\n b = s.h1;\n c = s.h2;\n d = s.h3;\n e = s.h4;\n\n // round 1\n for(i = 0; i < 16; ++i) {\n t = bytes.getInt32();\n w[i] = t;\n f = d ^ (b & (c ^ d));\n t = ((a << 5) | (a >>> 27)) + f + e + 0x5A827999 + t;\n e = d;\n d = c;\n // `>>> 0` necessary to avoid iOS/Safari 10 optimization bug\n c = ((b << 30) | (b >>> 2)) >>> 0;\n b = a;\n a = t;\n }\n for(; i < 20; ++i) {\n t = (w[i - 3] ^ w[i - 8] ^ w[i - 14] ^ w[i - 16]);\n t = (t << 1) | (t >>> 31);\n w[i] = t;\n f = d ^ (b & (c ^ d));\n t = ((a << 5) | (a >>> 27)) + f + e + 0x5A827999 + t;\n e = d;\n d = c;\n // `>>> 0` necessary to avoid iOS/Safari 10 optimization bug\n c = ((b << 30) | (b >>> 2)) >>> 0;\n b = a;\n a = t;\n }\n // round 2\n for(; i < 32; ++i) {\n t = (w[i - 3] ^ w[i - 8] ^ w[i - 14] ^ w[i - 16]);\n t = (t << 1) | (t >>> 31);\n w[i] = t;\n f = b ^ c ^ d;\n t = ((a << 5) | (a >>> 27)) + f + e + 0x6ED9EBA1 + t;\n e = d;\n d = c;\n // `>>> 0` necessary to avoid iOS/Safari 10 optimization bug\n c = ((b << 30) | (b >>> 2)) >>> 0;\n b = a;\n a = t;\n }\n for(; i < 40; ++i) {\n t = (w[i - 6] ^ w[i - 16] ^ w[i - 28] ^ w[i - 32]);\n t = (t << 2) | (t >>> 30);\n w[i] = t;\n f = b ^ c ^ d;\n t = ((a << 5) | (a >>> 27)) + f + e + 0x6ED9EBA1 + t;\n e = d;\n d = c;\n // `>>> 0` necessary to avoid iOS/Safari 10 optimization bug\n c = ((b << 30) | (b >>> 2)) >>> 0;\n b = a;\n a = t;\n }\n // round 3\n for(; i < 60; ++i) {\n t = (w[i - 6] ^ w[i - 16] ^ w[i - 28] ^ w[i - 32]);\n t = (t << 2) | (t >>> 30);\n w[i] = t;\n f = (b & c) | (d & (b ^ c));\n t = ((a << 5) | (a >>> 27)) + f + e + 0x8F1BBCDC + t;\n e = d;\n d = c;\n // `>>> 0` necessary to avoid iOS/Safari 10 optimization bug\n c = ((b << 30) | (b >>> 2)) >>> 0;\n b = a;\n a = t;\n }\n // round 4\n for(; i < 80; ++i) {\n t = (w[i - 6] ^ w[i - 16] ^ w[i - 28] ^ w[i - 32]);\n t = (t << 2) | (t >>> 30);\n w[i] = t;\n f = b ^ c ^ d;\n t = ((a << 5) | (a >>> 27)) + f + e + 0xCA62C1D6 + t;\n e = d;\n d = c;\n // `>>> 0` necessary to avoid iOS/Safari 10 optimization bug\n c = ((b << 30) | (b >>> 2)) >>> 0;\n b = a;\n a = t;\n }\n\n // update hash state\n s.h0 = (s.h0 + a) | 0;\n s.h1 = (s.h1 + b) | 0;\n s.h2 = (s.h2 + c) | 0;\n s.h3 = (s.h3 + d) | 0;\n s.h4 = (s.h4 + e) | 0;\n\n len -= 64;\n }\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\n/**\n * Represents parsed attributes of a media section (i.e. associated with a single m-line)\n */\nexport default class SDPMediaSection {\n mediaType: 'audio' | 'video';\n mid: string;\n direction: RTCRtpTransceiverDirection;\n}\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar hasOwn = require('../internals/has-own-property');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar indexOf = require('../internals/array-includes').indexOf;\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar push = uncurryThis([].push);\n\nmodule.exports = function (object, names) {\n var O = toIndexedObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) !hasOwn(hiddenKeys, key) && hasOwn(O, key) && push(result, key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (hasOwn(O, key = names[i++])) {\n ~indexOf(result, key) || push(result, key);\n }\n return result;\n};\n","\n'use strict';\n\nvar stack;\n\nif (process.env.NODE_ENV === 'production') {\n stack = require('./cjs/event-stack.production.js');\n} else {\n stack = require('./cjs/event-stack.development.js');\n}\n\nmodule.exports = stack.default;\nmodule.exports.instance = stack.instance;\n","var util = require('../util');\n\nfunction QueryParamSerializer() {\n}\n\nQueryParamSerializer.prototype.serialize = function(params, shape, fn) {\n serializeStructure('', params, shape, fn);\n};\n\nfunction ucfirst(shape) {\n if (shape.isQueryName || shape.api.protocol !== 'ec2') {\n return shape.name;\n } else {\n return shape.name[0].toUpperCase() + shape.name.substr(1);\n }\n}\n\nfunction serializeStructure(prefix, struct, rules, fn) {\n util.each(rules.members, function(name, member) {\n var value = struct[name];\n if (value === null || value === undefined) return;\n\n var memberName = ucfirst(member);\n memberName = prefix ? prefix + '.' + memberName : memberName;\n serializeMember(memberName, value, member, fn);\n });\n}\n\nfunction serializeMap(name, map, rules, fn) {\n var i = 1;\n util.each(map, function (key, value) {\n var prefix = rules.flattened ? '.' : '.entry.';\n var position = prefix + (i++) + '.';\n var keyName = position + (rules.key.name || 'key');\n var valueName = position + (rules.value.name || 'value');\n serializeMember(name + keyName, key, rules.key, fn);\n serializeMember(name + valueName, value, rules.value, fn);\n });\n}\n\nfunction serializeList(name, list, rules, fn) {\n var memberRules = rules.member || {};\n\n if (list.length === 0) {\n if (rules.api.protocol !== 'ec2') {\n fn.call(this, name, null);\n }\n return;\n }\n\n util.arrayEach(list, function (v, n) {\n var suffix = '.' + (n + 1);\n if (rules.api.protocol === 'ec2') {\n // Do nothing for EC2\n suffix = suffix + ''; // make linter happy\n } else if (rules.flattened) {\n if (memberRules.name) {\n var parts = name.split('.');\n parts.pop();\n parts.push(ucfirst(memberRules));\n name = parts.join('.');\n }\n } else {\n suffix = '.' + (memberRules.name ? memberRules.name : 'member') + suffix;\n }\n serializeMember(name + suffix, v, memberRules, fn);\n });\n}\n\nfunction serializeMember(name, value, rules, fn) {\n if (value === null || value === undefined) return;\n if (rules.type === 'structure') {\n serializeStructure(name, value, rules, fn);\n } else if (rules.type === 'list') {\n serializeList(name, value, rules, fn);\n } else if (rules.type === 'map') {\n serializeMap(name, value, rules, fn);\n } else {\n fn(name, rules.toWireFormat(value).toString());\n }\n}\n\n/**\n * @api private\n */\nmodule.exports = QueryParamSerializer;\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\n// These are constants relating to communication between the VideoFxProcessor\n// and the VideoFxEngine\nimport VideoFxSpec from './VideoFxSpec';\n\nexport const WORKER_MSG = {\n BUILD_ENGINE_REQUEST: 'BuildEngineRequest',\n BUILD_ENGINE_RESPONSE: 'BuildEngineResponse',\n\n PERFORM_SEGMENTATION_REQUEST: 'PerformSegmentationRequest',\n PERFORM_SEGMENTATION_RESPONSE: 'PerformSegmentationResponse',\n\n PERFORM_SEGMENTATION_SAB_REQUEST: 'PerformSegmentationSABRequest',\n PERFORM_SEGMENTATION_SAB_RESPONSE: 'PerformSegmentationSABResponse',\n\n DESTROY_ASSETS_REQUEST: 'DestroyAssetsRequest',\n DESTROY_ASSETS_RESPONSE: 'DestroyAssetsResponse',\n\n CLOSE_WORKER_REQUEST: 'CloseWorkerRequest',\n};\n\n// These are constants relating to the input stream/frames that are being used transformed\n// by the VideoFxProcessor\ninterface DefaultStreamParametersType {\n FRAMES_PER_SECOND: number;\n WIDTH_IN_PIXEL: number;\n HEIGHT_IN_PIXEL: number;\n CHANNEL_COUNT: number;\n}\n\nexport const DEFAULT_STREAM_PARAMETERS: DefaultStreamParametersType = {\n FRAMES_PER_SECOND: 15,\n WIDTH_IN_PIXEL: 960,\n HEIGHT_IN_PIXEL: 540,\n CHANNEL_COUNT: 4,\n};\n\n// These are constants relating to the status of different processes that get returned\n// by the VideoFxEngine\nexport const SEGMENTATION_MODEL = {\n LOAD_SUCCESS: 2,\n WIDTH_IN_PIXELS: 176,\n HEIGHT_IN_PIXELS: 160,\n};\n\n// These are constants relating to resource constraints\nexport const RESOURCE_CONSTRAINTS = {\n DEFAULT_PROCESSING_BUDGET_PER_FRAME: 50,\n\n // Segmenation throttling constants\n SEGMENTATION_DEFAULT_FRAMES_PER_SEGMENTATION: 1,\n SEGMENTATION_SAMPLING_PERIOD_FRAME_COUNT: 500,\n\n // Blur throttling constants\n BLUR_DEFAULT_CYCLE_PERCENTAGE: 10,\n BLUR_SAMPLING_PERIOD_FRAME_COUNT: 1000,\n\n // General constants for throttling blur and segmentation\n MIN_PROCESSING_BUDGET: 0,\n MAX_PROCESSING_BUDGET: 100,\n};\n\nexport const CDN_BASE_PATH: string = 'https://static.sdkassets.chime.aws';\nconst MFX_ASSET_PATH = '/ml_media_fx/otherassets';\nexport const WORKER_PATH: string = `${MFX_ASSET_PATH}/worker.js`;\nexport const FXLIB_PATH: string = `${MFX_ASSET_PATH}/fxlib.js`;\n\nexport const DEFAULT_VIDEO_FX_SPEC: VideoFxSpec = {\n paths: {\n cdnBasePath: CDN_BASE_PATH,\n workerPath: WORKER_PATH,\n fxLibPath: FXLIB_PATH,\n },\n};\n","'use strict';\n\nvar Promise = require('./core');\n\nvar DEFAULT_WHITELIST = [\n ReferenceError,\n TypeError,\n RangeError\n];\n\nvar enabled = false;\nexports.disable = disable;\nfunction disable() {\n enabled = false;\n Promise._B = null;\n Promise._C = null;\n}\n\nexports.enable = enable;\nfunction enable(options) {\n options = options || {};\n if (enabled) disable();\n enabled = true;\n var id = 0;\n var displayId = 0;\n var rejections = {};\n Promise._B = function (promise) {\n if (\n promise._y === 2 && // IS REJECTED\n rejections[promise._E]\n ) {\n if (rejections[promise._E].logged) {\n onHandled(promise._E);\n } else {\n clearTimeout(rejections[promise._E].timeout);\n }\n delete rejections[promise._E];\n }\n };\n Promise._C = function (promise, err) {\n if (promise._x === 0) { // not yet handled\n promise._E = id++;\n rejections[promise._E] = {\n displayId: null,\n error: err,\n timeout: setTimeout(\n onUnhandled.bind(null, promise._E),\n // For reference errors and type errors, this almost always\n // means the programmer made a mistake, so log them after just\n // 100ms\n // otherwise, wait 2 seconds to see if they get handled\n matchWhitelist(err, DEFAULT_WHITELIST)\n ? 100\n : 2000\n ),\n logged: false\n };\n }\n };\n function onUnhandled(id) {\n if (\n options.allRejections ||\n matchWhitelist(\n rejections[id].error,\n options.whitelist || DEFAULT_WHITELIST\n )\n ) {\n rejections[id].displayId = displayId++;\n if (options.onUnhandled) {\n rejections[id].logged = true;\n options.onUnhandled(\n rejections[id].displayId,\n rejections[id].error\n );\n } else {\n rejections[id].logged = true;\n logError(\n rejections[id].displayId,\n rejections[id].error\n );\n }\n }\n }\n function onHandled(id) {\n if (rejections[id].logged) {\n if (options.onHandled) {\n options.onHandled(rejections[id].displayId, rejections[id].error);\n } else if (!rejections[id].onUnhandled) {\n console.warn(\n 'Promise Rejection Handled (id: ' + rejections[id].displayId + '):'\n );\n console.warn(\n ' This means you can ignore any previous messages of the form \"Possible Unhandled Promise Rejection\" with id ' +\n rejections[id].displayId + '.'\n );\n }\n }\n }\n}\n\nfunction logError(id, error) {\n console.warn('Possible Unhandled Promise Rejection (id: ' + id + '):');\n var errStr = (error && (error.stack || error)) + '';\n errStr.split('\\n').forEach(function (line) {\n console.warn(' ' + line);\n });\n}\n\nfunction matchWhitelist(error, list) {\n return list.some(function (cls) {\n return error instanceof cls;\n });\n}","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar toSetLike = require('../internals/to-set-like');\nvar $symmetricDifference = require('../internals/set-symmetric-difference');\n\n// `Set.prototype.symmetricDifference` method\n// https://github.com/tc39/proposal-set-methods\n// TODO: Obsolete version, remove from `core-js@4`\n$({ target: 'Set', proto: true, real: true, forced: true }, {\n symmetricDifference: function symmetricDifference(other) {\n return call($symmetricDifference, this, toSetLike(other));\n }\n});\n","'use strict';\n\n/** @type {import('./max')} */\nmodule.exports = Math.max;\n","/**\n * Javascript implementation of X.509 and related components (such as\n * Certification Signing Requests) of a Public Key Infrastructure.\n *\n * @author Dave Longley\n *\n * Copyright (c) 2010-2014 Digital Bazaar, Inc.\n *\n * The ASN.1 representation of an X.509v3 certificate is as follows\n * (see RFC 2459):\n *\n * Certificate ::= SEQUENCE {\n * tbsCertificate TBSCertificate,\n * signatureAlgorithm AlgorithmIdentifier,\n * signatureValue BIT STRING\n * }\n *\n * TBSCertificate ::= SEQUENCE {\n * version [0] EXPLICIT Version DEFAULT v1,\n * serialNumber CertificateSerialNumber,\n * signature AlgorithmIdentifier,\n * issuer Name,\n * validity Validity,\n * subject Name,\n * subjectPublicKeyInfo SubjectPublicKeyInfo,\n * issuerUniqueID [1] IMPLICIT UniqueIdentifier OPTIONAL,\n * -- If present, version shall be v2 or v3\n * subjectUniqueID [2] IMPLICIT UniqueIdentifier OPTIONAL,\n * -- If present, version shall be v2 or v3\n * extensions [3] EXPLICIT Extensions OPTIONAL\n * -- If present, version shall be v3\n * }\n *\n * Version ::= INTEGER { v1(0), v2(1), v3(2) }\n *\n * CertificateSerialNumber ::= INTEGER\n *\n * Name ::= CHOICE {\n * // only one possible choice for now\n * RDNSequence\n * }\n *\n * RDNSequence ::= SEQUENCE OF RelativeDistinguishedName\n *\n * RelativeDistinguishedName ::= SET OF AttributeTypeAndValue\n *\n * AttributeTypeAndValue ::= SEQUENCE {\n * type AttributeType,\n * value AttributeValue\n * }\n * AttributeType ::= OBJECT IDENTIFIER\n * AttributeValue ::= ANY DEFINED BY AttributeType\n *\n * Validity ::= SEQUENCE {\n * notBefore Time,\n * notAfter Time\n * }\n *\n * Time ::= CHOICE {\n * utcTime UTCTime,\n * generalTime GeneralizedTime\n * }\n *\n * UniqueIdentifier ::= BIT STRING\n *\n * SubjectPublicKeyInfo ::= SEQUENCE {\n * algorithm AlgorithmIdentifier,\n * subjectPublicKey BIT STRING\n * }\n *\n * Extensions ::= SEQUENCE SIZE (1..MAX) OF Extension\n *\n * Extension ::= SEQUENCE {\n * extnID OBJECT IDENTIFIER,\n * critical BOOLEAN DEFAULT FALSE,\n * extnValue OCTET STRING\n * }\n *\n * The only key algorithm currently supported for PKI is RSA.\n *\n * RSASSA-PSS signatures are described in RFC 3447 and RFC 4055.\n *\n * PKCS#10 v1.7 describes certificate signing requests:\n *\n * CertificationRequestInfo:\n *\n * CertificationRequestInfo ::= SEQUENCE {\n * version INTEGER { v1(0) } (v1,...),\n * subject Name,\n * subjectPKInfo SubjectPublicKeyInfo{{ PKInfoAlgorithms }},\n * attributes [0] Attributes{{ CRIAttributes }}\n * }\n *\n * Attributes { ATTRIBUTE:IOSet } ::= SET OF Attribute{{ IOSet }}\n *\n * CRIAttributes ATTRIBUTE ::= {\n * ... -- add any locally defined attributes here -- }\n *\n * Attribute { ATTRIBUTE:IOSet } ::= SEQUENCE {\n * type ATTRIBUTE.&id({IOSet}),\n * values SET SIZE(1..MAX) OF ATTRIBUTE.&Type({IOSet}{@type})\n * }\n *\n * CertificationRequest ::= SEQUENCE {\n * certificationRequestInfo CertificationRequestInfo,\n * signatureAlgorithm AlgorithmIdentifier{{ SignatureAlgorithms }},\n * signature BIT STRING\n * }\n */\nvar forge = require('./forge');\nrequire('./aes');\nrequire('./asn1');\nrequire('./des');\nrequire('./md');\nrequire('./mgf');\nrequire('./oids');\nrequire('./pem');\nrequire('./pss');\nrequire('./rsa');\nrequire('./util');\n\n// shortcut for asn.1 API\nvar asn1 = forge.asn1;\n\n/* Public Key Infrastructure (PKI) implementation. */\nvar pki = module.exports = forge.pki = forge.pki || {};\nvar oids = pki.oids;\n\n// short name OID mappings\nvar _shortNames = {};\n_shortNames['CN'] = oids['commonName'];\n_shortNames['commonName'] = 'CN';\n_shortNames['C'] = oids['countryName'];\n_shortNames['countryName'] = 'C';\n_shortNames['L'] = oids['localityName'];\n_shortNames['localityName'] = 'L';\n_shortNames['ST'] = oids['stateOrProvinceName'];\n_shortNames['stateOrProvinceName'] = 'ST';\n_shortNames['O'] = oids['organizationName'];\n_shortNames['organizationName'] = 'O';\n_shortNames['OU'] = oids['organizationalUnitName'];\n_shortNames['organizationalUnitName'] = 'OU';\n_shortNames['E'] = oids['emailAddress'];\n_shortNames['emailAddress'] = 'E';\n\n// validator for an SubjectPublicKeyInfo structure\n// Note: Currently only works with an RSA public key\nvar publicKeyValidator = forge.pki.rsa.publicKeyValidator;\n\n// validator for an X.509v3 certificate\nvar x509CertificateValidator = {\n name: 'Certificate',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n value: [{\n name: 'Certificate.TBSCertificate',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n captureAsn1: 'tbsCertificate',\n value: [{\n name: 'Certificate.TBSCertificate.version',\n tagClass: asn1.Class.CONTEXT_SPECIFIC,\n type: 0,\n constructed: true,\n optional: true,\n value: [{\n name: 'Certificate.TBSCertificate.version.integer',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.INTEGER,\n constructed: false,\n capture: 'certVersion'\n }]\n }, {\n name: 'Certificate.TBSCertificate.serialNumber',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.INTEGER,\n constructed: false,\n capture: 'certSerialNumber'\n }, {\n name: 'Certificate.TBSCertificate.signature',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n value: [{\n name: 'Certificate.TBSCertificate.signature.algorithm',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.OID,\n constructed: false,\n capture: 'certinfoSignatureOid'\n }, {\n name: 'Certificate.TBSCertificate.signature.parameters',\n tagClass: asn1.Class.UNIVERSAL,\n optional: true,\n captureAsn1: 'certinfoSignatureParams'\n }]\n }, {\n name: 'Certificate.TBSCertificate.issuer',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n captureAsn1: 'certIssuer'\n }, {\n name: 'Certificate.TBSCertificate.validity',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n // Note: UTC and generalized times may both appear so the capture\n // names are based on their detected order, the names used below\n // are only for the common case, which validity time really means\n // \"notBefore\" and which means \"notAfter\" will be determined by order\n value: [{\n // notBefore (Time) (UTC time case)\n name: 'Certificate.TBSCertificate.validity.notBefore (utc)',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.UTCTIME,\n constructed: false,\n optional: true,\n capture: 'certValidity1UTCTime'\n }, {\n // notBefore (Time) (generalized time case)\n name: 'Certificate.TBSCertificate.validity.notBefore (generalized)',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.GENERALIZEDTIME,\n constructed: false,\n optional: true,\n capture: 'certValidity2GeneralizedTime'\n }, {\n // notAfter (Time) (only UTC time is supported)\n name: 'Certificate.TBSCertificate.validity.notAfter (utc)',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.UTCTIME,\n constructed: false,\n optional: true,\n capture: 'certValidity3UTCTime'\n }, {\n // notAfter (Time) (only UTC time is supported)\n name: 'Certificate.TBSCertificate.validity.notAfter (generalized)',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.GENERALIZEDTIME,\n constructed: false,\n optional: true,\n capture: 'certValidity4GeneralizedTime'\n }]\n }, {\n // Name (subject) (RDNSequence)\n name: 'Certificate.TBSCertificate.subject',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n captureAsn1: 'certSubject'\n },\n // SubjectPublicKeyInfo\n publicKeyValidator,\n {\n // issuerUniqueID (optional)\n name: 'Certificate.TBSCertificate.issuerUniqueID',\n tagClass: asn1.Class.CONTEXT_SPECIFIC,\n type: 1,\n constructed: true,\n optional: true,\n value: [{\n name: 'Certificate.TBSCertificate.issuerUniqueID.id',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.BITSTRING,\n constructed: false,\n // TODO: support arbitrary bit length ids\n captureBitStringValue: 'certIssuerUniqueId'\n }]\n }, {\n // subjectUniqueID (optional)\n name: 'Certificate.TBSCertificate.subjectUniqueID',\n tagClass: asn1.Class.CONTEXT_SPECIFIC,\n type: 2,\n constructed: true,\n optional: true,\n value: [{\n name: 'Certificate.TBSCertificate.subjectUniqueID.id',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.BITSTRING,\n constructed: false,\n // TODO: support arbitrary bit length ids\n captureBitStringValue: 'certSubjectUniqueId'\n }]\n }, {\n // Extensions (optional)\n name: 'Certificate.TBSCertificate.extensions',\n tagClass: asn1.Class.CONTEXT_SPECIFIC,\n type: 3,\n constructed: true,\n captureAsn1: 'certExtensions',\n optional: true\n }]\n }, {\n // AlgorithmIdentifier (signature algorithm)\n name: 'Certificate.signatureAlgorithm',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n value: [{\n // algorithm\n name: 'Certificate.signatureAlgorithm.algorithm',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.OID,\n constructed: false,\n capture: 'certSignatureOid'\n }, {\n name: 'Certificate.TBSCertificate.signature.parameters',\n tagClass: asn1.Class.UNIVERSAL,\n optional: true,\n captureAsn1: 'certSignatureParams'\n }]\n }, {\n // SignatureValue\n name: 'Certificate.signatureValue',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.BITSTRING,\n constructed: false,\n captureBitStringValue: 'certSignature'\n }]\n};\n\nvar rsassaPssParameterValidator = {\n name: 'rsapss',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n value: [{\n name: 'rsapss.hashAlgorithm',\n tagClass: asn1.Class.CONTEXT_SPECIFIC,\n type: 0,\n constructed: true,\n value: [{\n name: 'rsapss.hashAlgorithm.AlgorithmIdentifier',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Class.SEQUENCE,\n constructed: true,\n optional: true,\n value: [{\n name: 'rsapss.hashAlgorithm.AlgorithmIdentifier.algorithm',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.OID,\n constructed: false,\n capture: 'hashOid'\n /* parameter block omitted, for SHA1 NULL anyhow. */\n }]\n }]\n }, {\n name: 'rsapss.maskGenAlgorithm',\n tagClass: asn1.Class.CONTEXT_SPECIFIC,\n type: 1,\n constructed: true,\n value: [{\n name: 'rsapss.maskGenAlgorithm.AlgorithmIdentifier',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Class.SEQUENCE,\n constructed: true,\n optional: true,\n value: [{\n name: 'rsapss.maskGenAlgorithm.AlgorithmIdentifier.algorithm',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.OID,\n constructed: false,\n capture: 'maskGenOid'\n }, {\n name: 'rsapss.maskGenAlgorithm.AlgorithmIdentifier.params',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n value: [{\n name: 'rsapss.maskGenAlgorithm.AlgorithmIdentifier.params.algorithm',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.OID,\n constructed: false,\n capture: 'maskGenHashOid'\n /* parameter block omitted, for SHA1 NULL anyhow. */\n }]\n }]\n }]\n }, {\n name: 'rsapss.saltLength',\n tagClass: asn1.Class.CONTEXT_SPECIFIC,\n type: 2,\n optional: true,\n value: [{\n name: 'rsapss.saltLength.saltLength',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Class.INTEGER,\n constructed: false,\n capture: 'saltLength'\n }]\n }, {\n name: 'rsapss.trailerField',\n tagClass: asn1.Class.CONTEXT_SPECIFIC,\n type: 3,\n optional: true,\n value: [{\n name: 'rsapss.trailer.trailer',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Class.INTEGER,\n constructed: false,\n capture: 'trailer'\n }]\n }]\n};\n\n// validator for a CertificationRequestInfo structure\nvar certificationRequestInfoValidator = {\n name: 'CertificationRequestInfo',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n captureAsn1: 'certificationRequestInfo',\n value: [{\n name: 'CertificationRequestInfo.integer',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.INTEGER,\n constructed: false,\n capture: 'certificationRequestInfoVersion'\n }, {\n // Name (subject) (RDNSequence)\n name: 'CertificationRequestInfo.subject',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n captureAsn1: 'certificationRequestInfoSubject'\n },\n // SubjectPublicKeyInfo\n publicKeyValidator,\n {\n name: 'CertificationRequestInfo.attributes',\n tagClass: asn1.Class.CONTEXT_SPECIFIC,\n type: 0,\n constructed: true,\n optional: true,\n capture: 'certificationRequestInfoAttributes',\n value: [{\n name: 'CertificationRequestInfo.attributes',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n value: [{\n name: 'CertificationRequestInfo.attributes.type',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.OID,\n constructed: false\n }, {\n name: 'CertificationRequestInfo.attributes.value',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SET,\n constructed: true\n }]\n }]\n }]\n};\n\n// validator for a CertificationRequest structure\nvar certificationRequestValidator = {\n name: 'CertificationRequest',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n captureAsn1: 'csr',\n value: [\n certificationRequestInfoValidator, {\n // AlgorithmIdentifier (signature algorithm)\n name: 'CertificationRequest.signatureAlgorithm',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n value: [{\n // algorithm\n name: 'CertificationRequest.signatureAlgorithm.algorithm',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.OID,\n constructed: false,\n capture: 'csrSignatureOid'\n }, {\n name: 'CertificationRequest.signatureAlgorithm.parameters',\n tagClass: asn1.Class.UNIVERSAL,\n optional: true,\n captureAsn1: 'csrSignatureParams'\n }]\n }, {\n // signature\n name: 'CertificationRequest.signature',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.BITSTRING,\n constructed: false,\n captureBitStringValue: 'csrSignature'\n }\n ]\n};\n\n/**\n * Converts an RDNSequence of ASN.1 DER-encoded RelativeDistinguishedName\n * sets into an array with objects that have type and value properties.\n *\n * @param rdn the RDNSequence to convert.\n * @param md a message digest to append type and value to if provided.\n */\npki.RDNAttributesAsArray = function(rdn, md) {\n var rval = [];\n\n // each value in 'rdn' in is a SET of RelativeDistinguishedName\n var set, attr, obj;\n for(var si = 0; si < rdn.value.length; ++si) {\n // get the RelativeDistinguishedName set\n set = rdn.value[si];\n\n // each value in the SET is an AttributeTypeAndValue sequence\n // containing first a type (an OID) and second a value (defined by\n // the OID)\n for(var i = 0; i < set.value.length; ++i) {\n obj = {};\n attr = set.value[i];\n obj.type = asn1.derToOid(attr.value[0].value);\n obj.value = attr.value[1].value;\n obj.valueTagClass = attr.value[1].type;\n // if the OID is known, get its name and short name\n if(obj.type in oids) {\n obj.name = oids[obj.type];\n if(obj.name in _shortNames) {\n obj.shortName = _shortNames[obj.name];\n }\n }\n if(md) {\n md.update(obj.type);\n md.update(obj.value);\n }\n rval.push(obj);\n }\n }\n\n return rval;\n};\n\n/**\n * Converts ASN.1 CRIAttributes into an array with objects that have type and\n * value properties.\n *\n * @param attributes the CRIAttributes to convert.\n */\npki.CRIAttributesAsArray = function(attributes) {\n var rval = [];\n\n // each value in 'attributes' in is a SEQUENCE with an OID and a SET\n for(var si = 0; si < attributes.length; ++si) {\n // get the attribute sequence\n var seq = attributes[si];\n\n // each value in the SEQUENCE containing first a type (an OID) and\n // second a set of values (defined by the OID)\n var type = asn1.derToOid(seq.value[0].value);\n var values = seq.value[1].value;\n for(var vi = 0; vi < values.length; ++vi) {\n var obj = {};\n obj.type = type;\n obj.value = values[vi].value;\n obj.valueTagClass = values[vi].type;\n // if the OID is known, get its name and short name\n if(obj.type in oids) {\n obj.name = oids[obj.type];\n if(obj.name in _shortNames) {\n obj.shortName = _shortNames[obj.name];\n }\n }\n // parse extensions\n if(obj.type === oids.extensionRequest) {\n obj.extensions = [];\n for(var ei = 0; ei < obj.value.length; ++ei) {\n obj.extensions.push(pki.certificateExtensionFromAsn1(obj.value[ei]));\n }\n }\n rval.push(obj);\n }\n }\n\n return rval;\n};\n\n/**\n * Gets an issuer or subject attribute from its name, type, or short name.\n *\n * @param obj the issuer or subject object.\n * @param options a short name string or an object with:\n * shortName the short name for the attribute.\n * name the name for the attribute.\n * type the type for the attribute.\n *\n * @return the attribute.\n */\nfunction _getAttribute(obj, options) {\n if(typeof options === 'string') {\n options = {shortName: options};\n }\n\n var rval = null;\n var attr;\n for(var i = 0; rval === null && i < obj.attributes.length; ++i) {\n attr = obj.attributes[i];\n if(options.type && options.type === attr.type) {\n rval = attr;\n } else if(options.name && options.name === attr.name) {\n rval = attr;\n } else if(options.shortName && options.shortName === attr.shortName) {\n rval = attr;\n }\n }\n return rval;\n}\n\n/**\n * Converts signature parameters from ASN.1 structure.\n *\n * Currently only RSASSA-PSS supported. The PKCS#1 v1.5 signature scheme had\n * no parameters.\n *\n * RSASSA-PSS-params ::= SEQUENCE {\n * hashAlgorithm [0] HashAlgorithm DEFAULT\n * sha1Identifier,\n * maskGenAlgorithm [1] MaskGenAlgorithm DEFAULT\n * mgf1SHA1Identifier,\n * saltLength [2] INTEGER DEFAULT 20,\n * trailerField [3] INTEGER DEFAULT 1\n * }\n *\n * HashAlgorithm ::= AlgorithmIdentifier\n *\n * MaskGenAlgorithm ::= AlgorithmIdentifier\n *\n * AlgorithmIdentifer ::= SEQUENCE {\n * algorithm OBJECT IDENTIFIER,\n * parameters ANY DEFINED BY algorithm OPTIONAL\n * }\n *\n * @param oid The OID specifying the signature algorithm\n * @param obj The ASN.1 structure holding the parameters\n * @param fillDefaults Whether to use return default values where omitted\n * @return signature parameter object\n */\nvar _readSignatureParameters = function(oid, obj, fillDefaults) {\n var params = {};\n\n if(oid !== oids['RSASSA-PSS']) {\n return params;\n }\n\n if(fillDefaults) {\n params = {\n hash: {\n algorithmOid: oids['sha1']\n },\n mgf: {\n algorithmOid: oids['mgf1'],\n hash: {\n algorithmOid: oids['sha1']\n }\n },\n saltLength: 20\n };\n }\n\n var capture = {};\n var errors = [];\n if(!asn1.validate(obj, rsassaPssParameterValidator, capture, errors)) {\n var error = new Error('Cannot read RSASSA-PSS parameter block.');\n error.errors = errors;\n throw error;\n }\n\n if(capture.hashOid !== undefined) {\n params.hash = params.hash || {};\n params.hash.algorithmOid = asn1.derToOid(capture.hashOid);\n }\n\n if(capture.maskGenOid !== undefined) {\n params.mgf = params.mgf || {};\n params.mgf.algorithmOid = asn1.derToOid(capture.maskGenOid);\n params.mgf.hash = params.mgf.hash || {};\n params.mgf.hash.algorithmOid = asn1.derToOid(capture.maskGenHashOid);\n }\n\n if(capture.saltLength !== undefined) {\n params.saltLength = capture.saltLength.charCodeAt(0);\n }\n\n return params;\n};\n\n/**\n * Create signature digest for OID.\n *\n * @param options\n * signatureOid: the OID specifying the signature algorithm.\n * type: a human readable type for error messages\n * @return a created md instance. throws if unknown oid.\n */\nvar _createSignatureDigest = function(options) {\n switch(oids[options.signatureOid]) {\n case 'sha1WithRSAEncryption':\n // deprecated alias\n case 'sha1WithRSASignature':\n return forge.md.sha1.create();\n case 'md5WithRSAEncryption':\n return forge.md.md5.create();\n case 'sha256WithRSAEncryption':\n return forge.md.sha256.create();\n case 'sha384WithRSAEncryption':\n return forge.md.sha384.create();\n case 'sha512WithRSAEncryption':\n return forge.md.sha512.create();\n case 'RSASSA-PSS':\n return forge.md.sha256.create();\n default:\n var error = new Error(\n 'Could not compute ' + options.type + ' digest. ' +\n 'Unknown signature OID.');\n error.signatureOid = options.signatureOid;\n throw error;\n }\n};\n\n/**\n * Verify signature on certificate or CSR.\n *\n * @param options:\n * certificate the certificate or CSR to verify.\n * md the signature digest.\n * signature the signature\n * @return a created md instance. throws if unknown oid.\n */\nvar _verifySignature = function(options) {\n var cert = options.certificate;\n var scheme;\n\n switch(cert.signatureOid) {\n case oids.sha1WithRSAEncryption:\n // deprecated alias\n case oids.sha1WithRSASignature:\n /* use PKCS#1 v1.5 padding scheme */\n break;\n case oids['RSASSA-PSS']:\n var hash, mgf;\n\n /* initialize mgf */\n hash = oids[cert.signatureParameters.mgf.hash.algorithmOid];\n if(hash === undefined || forge.md[hash] === undefined) {\n var error = new Error('Unsupported MGF hash function.');\n error.oid = cert.signatureParameters.mgf.hash.algorithmOid;\n error.name = hash;\n throw error;\n }\n\n mgf = oids[cert.signatureParameters.mgf.algorithmOid];\n if(mgf === undefined || forge.mgf[mgf] === undefined) {\n var error = new Error('Unsupported MGF function.');\n error.oid = cert.signatureParameters.mgf.algorithmOid;\n error.name = mgf;\n throw error;\n }\n\n mgf = forge.mgf[mgf].create(forge.md[hash].create());\n\n /* initialize hash function */\n hash = oids[cert.signatureParameters.hash.algorithmOid];\n if(hash === undefined || forge.md[hash] === undefined) {\n var error = new Error('Unsupported RSASSA-PSS hash function.');\n error.oid = cert.signatureParameters.hash.algorithmOid;\n error.name = hash;\n throw error;\n }\n\n scheme = forge.pss.create(\n forge.md[hash].create(), mgf, cert.signatureParameters.saltLength\n );\n break;\n }\n\n // verify signature on cert using public key\n return cert.publicKey.verify(\n options.md.digest().getBytes(), options.signature, scheme\n );\n};\n\n/**\n * Converts an X.509 certificate from PEM format.\n *\n * Note: If the certificate is to be verified then compute hash should\n * be set to true. This will scan the TBSCertificate part of the ASN.1\n * object while it is converted so it doesn't need to be converted back\n * to ASN.1-DER-encoding later.\n *\n * @param pem the PEM-formatted certificate.\n * @param computeHash true to compute the hash for verification.\n * @param strict true to be strict when checking ASN.1 value lengths, false to\n * allow truncated values (default: true).\n *\n * @return the certificate.\n */\npki.certificateFromPem = function(pem, computeHash, strict) {\n var msg = forge.pem.decode(pem)[0];\n\n if(msg.type !== 'CERTIFICATE' &&\n msg.type !== 'X509 CERTIFICATE' &&\n msg.type !== 'TRUSTED CERTIFICATE') {\n var error = new Error(\n 'Could not convert certificate from PEM; PEM header type ' +\n 'is not \"CERTIFICATE\", \"X509 CERTIFICATE\", or \"TRUSTED CERTIFICATE\".');\n error.headerType = msg.type;\n throw error;\n }\n if(msg.procType && msg.procType.type === 'ENCRYPTED') {\n throw new Error(\n 'Could not convert certificate from PEM; PEM is encrypted.');\n }\n\n // convert DER to ASN.1 object\n var obj = asn1.fromDer(msg.body, strict);\n\n return pki.certificateFromAsn1(obj, computeHash);\n};\n\n/**\n * Converts an X.509 certificate to PEM format.\n *\n * @param cert the certificate.\n * @param maxline the maximum characters per line, defaults to 64.\n *\n * @return the PEM-formatted certificate.\n */\npki.certificateToPem = function(cert, maxline) {\n // convert to ASN.1, then DER, then PEM-encode\n var msg = {\n type: 'CERTIFICATE',\n body: asn1.toDer(pki.certificateToAsn1(cert)).getBytes()\n };\n return forge.pem.encode(msg, {maxline: maxline});\n};\n\n/**\n * Converts an RSA public key from PEM format.\n *\n * @param pem the PEM-formatted public key.\n *\n * @return the public key.\n */\npki.publicKeyFromPem = function(pem) {\n var msg = forge.pem.decode(pem)[0];\n\n if(msg.type !== 'PUBLIC KEY' && msg.type !== 'RSA PUBLIC KEY') {\n var error = new Error('Could not convert public key from PEM; PEM header ' +\n 'type is not \"PUBLIC KEY\" or \"RSA PUBLIC KEY\".');\n error.headerType = msg.type;\n throw error;\n }\n if(msg.procType && msg.procType.type === 'ENCRYPTED') {\n throw new Error('Could not convert public key from PEM; PEM is encrypted.');\n }\n\n // convert DER to ASN.1 object\n var obj = asn1.fromDer(msg.body);\n\n return pki.publicKeyFromAsn1(obj);\n};\n\n/**\n * Converts an RSA public key to PEM format (using a SubjectPublicKeyInfo).\n *\n * @param key the public key.\n * @param maxline the maximum characters per line, defaults to 64.\n *\n * @return the PEM-formatted public key.\n */\npki.publicKeyToPem = function(key, maxline) {\n // convert to ASN.1, then DER, then PEM-encode\n var msg = {\n type: 'PUBLIC KEY',\n body: asn1.toDer(pki.publicKeyToAsn1(key)).getBytes()\n };\n return forge.pem.encode(msg, {maxline: maxline});\n};\n\n/**\n * Converts an RSA public key to PEM format (using an RSAPublicKey).\n *\n * @param key the public key.\n * @param maxline the maximum characters per line, defaults to 64.\n *\n * @return the PEM-formatted public key.\n */\npki.publicKeyToRSAPublicKeyPem = function(key, maxline) {\n // convert to ASN.1, then DER, then PEM-encode\n var msg = {\n type: 'RSA PUBLIC KEY',\n body: asn1.toDer(pki.publicKeyToRSAPublicKey(key)).getBytes()\n };\n return forge.pem.encode(msg, {maxline: maxline});\n};\n\n/**\n * Gets a fingerprint for the given public key.\n *\n * @param options the options to use.\n * [md] the message digest object to use (defaults to forge.md.sha1).\n * [type] the type of fingerprint, such as 'RSAPublicKey',\n * 'SubjectPublicKeyInfo' (defaults to 'RSAPublicKey').\n * [encoding] an alternative output encoding, such as 'hex'\n * (defaults to none, outputs a byte buffer).\n * [delimiter] the delimiter to use between bytes for 'hex' encoded\n * output, eg: ':' (defaults to none).\n *\n * @return the fingerprint as a byte buffer or other encoding based on options.\n */\npki.getPublicKeyFingerprint = function(key, options) {\n options = options || {};\n var md = options.md || forge.md.sha1.create();\n var type = options.type || 'RSAPublicKey';\n\n var bytes;\n switch(type) {\n case 'RSAPublicKey':\n bytes = asn1.toDer(pki.publicKeyToRSAPublicKey(key)).getBytes();\n break;\n case 'SubjectPublicKeyInfo':\n bytes = asn1.toDer(pki.publicKeyToAsn1(key)).getBytes();\n break;\n default:\n throw new Error('Unknown fingerprint type \"' + options.type + '\".');\n }\n\n // hash public key bytes\n md.start();\n md.update(bytes);\n var digest = md.digest();\n if(options.encoding === 'hex') {\n var hex = digest.toHex();\n if(options.delimiter) {\n return hex.match(/.{2}/g).join(options.delimiter);\n }\n return hex;\n } else if(options.encoding === 'binary') {\n return digest.getBytes();\n } else if(options.encoding) {\n throw new Error('Unknown encoding \"' + options.encoding + '\".');\n }\n return digest;\n};\n\n/**\n * Converts a PKCS#10 certification request (CSR) from PEM format.\n *\n * Note: If the certification request is to be verified then compute hash\n * should be set to true. This will scan the CertificationRequestInfo part of\n * the ASN.1 object while it is converted so it doesn't need to be converted\n * back to ASN.1-DER-encoding later.\n *\n * @param pem the PEM-formatted certificate.\n * @param computeHash true to compute the hash for verification.\n * @param strict true to be strict when checking ASN.1 value lengths, false to\n * allow truncated values (default: true).\n *\n * @return the certification request (CSR).\n */\npki.certificationRequestFromPem = function(pem, computeHash, strict) {\n var msg = forge.pem.decode(pem)[0];\n\n if(msg.type !== 'CERTIFICATE REQUEST') {\n var error = new Error('Could not convert certification request from PEM; ' +\n 'PEM header type is not \"CERTIFICATE REQUEST\".');\n error.headerType = msg.type;\n throw error;\n }\n if(msg.procType && msg.procType.type === 'ENCRYPTED') {\n throw new Error('Could not convert certification request from PEM; ' +\n 'PEM is encrypted.');\n }\n\n // convert DER to ASN.1 object\n var obj = asn1.fromDer(msg.body, strict);\n\n return pki.certificationRequestFromAsn1(obj, computeHash);\n};\n\n/**\n * Converts a PKCS#10 certification request (CSR) to PEM format.\n *\n * @param csr the certification request.\n * @param maxline the maximum characters per line, defaults to 64.\n *\n * @return the PEM-formatted certification request.\n */\npki.certificationRequestToPem = function(csr, maxline) {\n // convert to ASN.1, then DER, then PEM-encode\n var msg = {\n type: 'CERTIFICATE REQUEST',\n body: asn1.toDer(pki.certificationRequestToAsn1(csr)).getBytes()\n };\n return forge.pem.encode(msg, {maxline: maxline});\n};\n\n/**\n * Creates an empty X.509v3 RSA certificate.\n *\n * @return the certificate.\n */\npki.createCertificate = function() {\n var cert = {};\n cert.version = 0x02;\n cert.serialNumber = '00';\n cert.signatureOid = null;\n cert.signature = null;\n cert.siginfo = {};\n cert.siginfo.algorithmOid = null;\n cert.validity = {};\n cert.validity.notBefore = new Date();\n cert.validity.notAfter = new Date();\n\n cert.issuer = {};\n cert.issuer.getField = function(sn) {\n return _getAttribute(cert.issuer, sn);\n };\n cert.issuer.addField = function(attr) {\n _fillMissingFields([attr]);\n cert.issuer.attributes.push(attr);\n };\n cert.issuer.attributes = [];\n cert.issuer.hash = null;\n\n cert.subject = {};\n cert.subject.getField = function(sn) {\n return _getAttribute(cert.subject, sn);\n };\n cert.subject.addField = function(attr) {\n _fillMissingFields([attr]);\n cert.subject.attributes.push(attr);\n };\n cert.subject.attributes = [];\n cert.subject.hash = null;\n\n cert.extensions = [];\n cert.publicKey = null;\n cert.md = null;\n\n /**\n * Sets the subject of this certificate.\n *\n * @param attrs the array of subject attributes to use.\n * @param uniqueId an optional a unique ID to use.\n */\n cert.setSubject = function(attrs, uniqueId) {\n // set new attributes, clear hash\n _fillMissingFields(attrs);\n cert.subject.attributes = attrs;\n delete cert.subject.uniqueId;\n if(uniqueId) {\n // TODO: support arbitrary bit length ids\n cert.subject.uniqueId = uniqueId;\n }\n cert.subject.hash = null;\n };\n\n /**\n * Sets the issuer of this certificate.\n *\n * @param attrs the array of issuer attributes to use.\n * @param uniqueId an optional a unique ID to use.\n */\n cert.setIssuer = function(attrs, uniqueId) {\n // set new attributes, clear hash\n _fillMissingFields(attrs);\n cert.issuer.attributes = attrs;\n delete cert.issuer.uniqueId;\n if(uniqueId) {\n // TODO: support arbitrary bit length ids\n cert.issuer.uniqueId = uniqueId;\n }\n cert.issuer.hash = null;\n };\n\n /**\n * Sets the extensions of this certificate.\n *\n * @param exts the array of extensions to use.\n */\n cert.setExtensions = function(exts) {\n for(var i = 0; i < exts.length; ++i) {\n _fillMissingExtensionFields(exts[i], {cert: cert});\n }\n // set new extensions\n cert.extensions = exts;\n };\n\n /**\n * Gets an extension by its name or id.\n *\n * @param options the name to use or an object with:\n * name the name to use.\n * id the id to use.\n *\n * @return the extension or null if not found.\n */\n cert.getExtension = function(options) {\n if(typeof options === 'string') {\n options = {name: options};\n }\n\n var rval = null;\n var ext;\n for(var i = 0; rval === null && i < cert.extensions.length; ++i) {\n ext = cert.extensions[i];\n if(options.id && ext.id === options.id) {\n rval = ext;\n } else if(options.name && ext.name === options.name) {\n rval = ext;\n }\n }\n return rval;\n };\n\n /**\n * Signs this certificate using the given private key.\n *\n * @param key the private key to sign with.\n * @param md the message digest object to use (defaults to forge.md.sha1).\n */\n cert.sign = function(key, md) {\n // TODO: get signature OID from private key\n cert.md = md || forge.md.sha1.create();\n var algorithmOid = oids[cert.md.algorithm + 'WithRSAEncryption'];\n if(!algorithmOid) {\n var error = new Error('Could not compute certificate digest. ' +\n 'Unknown message digest algorithm OID.');\n error.algorithm = cert.md.algorithm;\n throw error;\n }\n cert.signatureOid = cert.siginfo.algorithmOid = algorithmOid;\n\n // get TBSCertificate, convert to DER\n cert.tbsCertificate = pki.getTBSCertificate(cert);\n var bytes = asn1.toDer(cert.tbsCertificate);\n\n // digest and sign\n cert.md.update(bytes.getBytes());\n cert.signature = key.sign(cert.md);\n };\n\n /**\n * Attempts verify the signature on the passed certificate using this\n * certificate's public key.\n *\n * @param child the certificate to verify.\n *\n * @return true if verified, false if not.\n */\n cert.verify = function(child) {\n var rval = false;\n\n if(!cert.issued(child)) {\n var issuer = child.issuer;\n var subject = cert.subject;\n var error = new Error(\n 'The parent certificate did not issue the given child ' +\n 'certificate; the child certificate\\'s issuer does not match the ' +\n 'parent\\'s subject.');\n error.expectedIssuer = subject.attributes;\n error.actualIssuer = issuer.attributes;\n throw error;\n }\n\n var md = child.md;\n if(md === null) {\n // create digest for OID signature types\n md = _createSignatureDigest({\n signatureOid: child.signatureOid,\n type: 'certificate'\n });\n\n // produce DER formatted TBSCertificate and digest it\n var tbsCertificate = child.tbsCertificate || pki.getTBSCertificate(child);\n var bytes = asn1.toDer(tbsCertificate);\n md.update(bytes.getBytes());\n }\n\n if(md !== null) {\n rval = _verifySignature({\n certificate: cert, md: md, signature: child.signature\n });\n }\n\n return rval;\n };\n\n /**\n * Returns true if this certificate's issuer matches the passed\n * certificate's subject. Note that no signature check is performed.\n *\n * @param parent the certificate to check.\n *\n * @return true if this certificate's issuer matches the passed certificate's\n * subject.\n */\n cert.isIssuer = function(parent) {\n var rval = false;\n\n var i = cert.issuer;\n var s = parent.subject;\n\n // compare hashes if present\n if(i.hash && s.hash) {\n rval = (i.hash === s.hash);\n } else if(i.attributes.length === s.attributes.length) {\n // all attributes are the same so issuer matches subject\n rval = true;\n var iattr, sattr;\n for(var n = 0; rval && n < i.attributes.length; ++n) {\n iattr = i.attributes[n];\n sattr = s.attributes[n];\n if(iattr.type !== sattr.type || iattr.value !== sattr.value) {\n // attribute mismatch\n rval = false;\n }\n }\n }\n\n return rval;\n };\n\n /**\n * Returns true if this certificate's subject matches the issuer of the\n * given certificate). Note that not signature check is performed.\n *\n * @param child the certificate to check.\n *\n * @return true if this certificate's subject matches the passed\n * certificate's issuer.\n */\n cert.issued = function(child) {\n return child.isIssuer(cert);\n };\n\n /**\n * Generates the subjectKeyIdentifier for this certificate as byte buffer.\n *\n * @return the subjectKeyIdentifier for this certificate as byte buffer.\n */\n cert.generateSubjectKeyIdentifier = function() {\n /* See: 4.2.1.2 section of the the RFC3280, keyIdentifier is either:\n\n (1) The keyIdentifier is composed of the 160-bit SHA-1 hash of the\n value of the BIT STRING subjectPublicKey (excluding the tag,\n length, and number of unused bits).\n\n (2) The keyIdentifier is composed of a four bit type field with\n the value 0100 followed by the least significant 60 bits of the\n SHA-1 hash of the value of the BIT STRING subjectPublicKey\n (excluding the tag, length, and number of unused bit string bits).\n */\n\n // skipping the tag, length, and number of unused bits is the same\n // as just using the RSAPublicKey (for RSA keys, which are the\n // only ones supported)\n return pki.getPublicKeyFingerprint(cert.publicKey, {type: 'RSAPublicKey'});\n };\n\n /**\n * Verifies the subjectKeyIdentifier extension value for this certificate\n * against its public key. If no extension is found, false will be\n * returned.\n *\n * @return true if verified, false if not.\n */\n cert.verifySubjectKeyIdentifier = function() {\n var oid = oids['subjectKeyIdentifier'];\n for(var i = 0; i < cert.extensions.length; ++i) {\n var ext = cert.extensions[i];\n if(ext.id === oid) {\n var ski = cert.generateSubjectKeyIdentifier().getBytes();\n return (forge.util.hexToBytes(ext.subjectKeyIdentifier) === ski);\n }\n }\n return false;\n };\n\n return cert;\n};\n\n/**\n * Converts an X.509v3 RSA certificate from an ASN.1 object.\n *\n * Note: If the certificate is to be verified then compute hash should\n * be set to true. There is currently no implementation for converting\n * a certificate back to ASN.1 so the TBSCertificate part of the ASN.1\n * object needs to be scanned before the cert object is created.\n *\n * @param obj the asn1 representation of an X.509v3 RSA certificate.\n * @param computeHash true to compute the hash for verification.\n *\n * @return the certificate.\n */\npki.certificateFromAsn1 = function(obj, computeHash) {\n // validate certificate and capture data\n var capture = {};\n var errors = [];\n if(!asn1.validate(obj, x509CertificateValidator, capture, errors)) {\n var error = new Error('Cannot read X.509 certificate. ' +\n 'ASN.1 object is not an X509v3 Certificate.');\n error.errors = errors;\n throw error;\n }\n\n // get oid\n var oid = asn1.derToOid(capture.publicKeyOid);\n if(oid !== pki.oids.rsaEncryption) {\n throw new Error('Cannot read public key. OID is not RSA.');\n }\n\n // create certificate\n var cert = pki.createCertificate();\n cert.version = capture.certVersion ?\n capture.certVersion.charCodeAt(0) : 0;\n var serial = forge.util.createBuffer(capture.certSerialNumber);\n cert.serialNumber = serial.toHex();\n cert.signatureOid = forge.asn1.derToOid(capture.certSignatureOid);\n cert.signatureParameters = _readSignatureParameters(\n cert.signatureOid, capture.certSignatureParams, true);\n cert.siginfo.algorithmOid = forge.asn1.derToOid(capture.certinfoSignatureOid);\n cert.siginfo.parameters = _readSignatureParameters(cert.siginfo.algorithmOid,\n capture.certinfoSignatureParams, false);\n cert.signature = capture.certSignature;\n\n var validity = [];\n if(capture.certValidity1UTCTime !== undefined) {\n validity.push(asn1.utcTimeToDate(capture.certValidity1UTCTime));\n }\n if(capture.certValidity2GeneralizedTime !== undefined) {\n validity.push(asn1.generalizedTimeToDate(\n capture.certValidity2GeneralizedTime));\n }\n if(capture.certValidity3UTCTime !== undefined) {\n validity.push(asn1.utcTimeToDate(capture.certValidity3UTCTime));\n }\n if(capture.certValidity4GeneralizedTime !== undefined) {\n validity.push(asn1.generalizedTimeToDate(\n capture.certValidity4GeneralizedTime));\n }\n if(validity.length > 2) {\n throw new Error('Cannot read notBefore/notAfter validity times; more ' +\n 'than two times were provided in the certificate.');\n }\n if(validity.length < 2) {\n throw new Error('Cannot read notBefore/notAfter validity times; they ' +\n 'were not provided as either UTCTime or GeneralizedTime.');\n }\n cert.validity.notBefore = validity[0];\n cert.validity.notAfter = validity[1];\n\n // keep TBSCertificate to preserve signature when exporting\n cert.tbsCertificate = capture.tbsCertificate;\n\n if(computeHash) {\n // create digest for OID signature type\n cert.md = _createSignatureDigest({\n signatureOid: cert.signatureOid,\n type: 'certificate'\n });\n\n // produce DER formatted TBSCertificate and digest it\n var bytes = asn1.toDer(cert.tbsCertificate);\n cert.md.update(bytes.getBytes());\n }\n\n // handle issuer, build issuer message digest\n var imd = forge.md.sha1.create();\n var ibytes = asn1.toDer(capture.certIssuer);\n imd.update(ibytes.getBytes());\n cert.issuer.getField = function(sn) {\n return _getAttribute(cert.issuer, sn);\n };\n cert.issuer.addField = function(attr) {\n _fillMissingFields([attr]);\n cert.issuer.attributes.push(attr);\n };\n cert.issuer.attributes = pki.RDNAttributesAsArray(capture.certIssuer);\n if(capture.certIssuerUniqueId) {\n cert.issuer.uniqueId = capture.certIssuerUniqueId;\n }\n cert.issuer.hash = imd.digest().toHex();\n\n // handle subject, build subject message digest\n var smd = forge.md.sha1.create();\n var sbytes = asn1.toDer(capture.certSubject);\n smd.update(sbytes.getBytes());\n cert.subject.getField = function(sn) {\n return _getAttribute(cert.subject, sn);\n };\n cert.subject.addField = function(attr) {\n _fillMissingFields([attr]);\n cert.subject.attributes.push(attr);\n };\n cert.subject.attributes = pki.RDNAttributesAsArray(capture.certSubject);\n if(capture.certSubjectUniqueId) {\n cert.subject.uniqueId = capture.certSubjectUniqueId;\n }\n cert.subject.hash = smd.digest().toHex();\n\n // handle extensions\n if(capture.certExtensions) {\n cert.extensions = pki.certificateExtensionsFromAsn1(capture.certExtensions);\n } else {\n cert.extensions = [];\n }\n\n // convert RSA public key from ASN.1\n cert.publicKey = pki.publicKeyFromAsn1(capture.subjectPublicKeyInfo);\n\n return cert;\n};\n\n/**\n * Converts an ASN.1 extensions object (with extension sequences as its\n * values) into an array of extension objects with types and values.\n *\n * Supported extensions:\n *\n * id-ce-keyUsage OBJECT IDENTIFIER ::= { id-ce 15 }\n * KeyUsage ::= BIT STRING {\n * digitalSignature (0),\n * nonRepudiation (1),\n * keyEncipherment (2),\n * dataEncipherment (3),\n * keyAgreement (4),\n * keyCertSign (5),\n * cRLSign (6),\n * encipherOnly (7),\n * decipherOnly (8)\n * }\n *\n * id-ce-basicConstraints OBJECT IDENTIFIER ::= { id-ce 19 }\n * BasicConstraints ::= SEQUENCE {\n * cA BOOLEAN DEFAULT FALSE,\n * pathLenConstraint INTEGER (0..MAX) OPTIONAL\n * }\n *\n * subjectAltName EXTENSION ::= {\n * SYNTAX GeneralNames\n * IDENTIFIED BY id-ce-subjectAltName\n * }\n *\n * GeneralNames ::= SEQUENCE SIZE (1..MAX) OF GeneralName\n *\n * GeneralName ::= CHOICE {\n * otherName [0] INSTANCE OF OTHER-NAME,\n * rfc822Name [1] IA5String,\n * dNSName [2] IA5String,\n * x400Address [3] ORAddress,\n * directoryName [4] Name,\n * ediPartyName [5] EDIPartyName,\n * uniformResourceIdentifier [6] IA5String,\n * IPAddress [7] OCTET STRING,\n * registeredID [8] OBJECT IDENTIFIER\n * }\n *\n * OTHER-NAME ::= TYPE-IDENTIFIER\n *\n * EDIPartyName ::= SEQUENCE {\n * nameAssigner [0] DirectoryString {ub-name} OPTIONAL,\n * partyName [1] DirectoryString {ub-name}\n * }\n *\n * @param exts the extensions ASN.1 with extension sequences to parse.\n *\n * @return the array.\n */\npki.certificateExtensionsFromAsn1 = function(exts) {\n var rval = [];\n for(var i = 0; i < exts.value.length; ++i) {\n // get extension sequence\n var extseq = exts.value[i];\n for(var ei = 0; ei < extseq.value.length; ++ei) {\n rval.push(pki.certificateExtensionFromAsn1(extseq.value[ei]));\n }\n }\n\n return rval;\n};\n\n/**\n * Parses a single certificate extension from ASN.1.\n *\n * @param ext the extension in ASN.1 format.\n *\n * @return the parsed extension as an object.\n */\npki.certificateExtensionFromAsn1 = function(ext) {\n // an extension has:\n // [0] extnID OBJECT IDENTIFIER\n // [1] critical BOOLEAN DEFAULT FALSE\n // [2] extnValue OCTET STRING\n var e = {};\n e.id = asn1.derToOid(ext.value[0].value);\n e.critical = false;\n if(ext.value[1].type === asn1.Type.BOOLEAN) {\n e.critical = (ext.value[1].value.charCodeAt(0) !== 0x00);\n e.value = ext.value[2].value;\n } else {\n e.value = ext.value[1].value;\n }\n // if the oid is known, get its name\n if(e.id in oids) {\n e.name = oids[e.id];\n\n // handle key usage\n if(e.name === 'keyUsage') {\n // get value as BIT STRING\n var ev = asn1.fromDer(e.value);\n var b2 = 0x00;\n var b3 = 0x00;\n if(ev.value.length > 1) {\n // skip first byte, just indicates unused bits which\n // will be padded with 0s anyway\n // get bytes with flag bits\n b2 = ev.value.charCodeAt(1);\n b3 = ev.value.length > 2 ? ev.value.charCodeAt(2) : 0;\n }\n // set flags\n e.digitalSignature = (b2 & 0x80) === 0x80;\n e.nonRepudiation = (b2 & 0x40) === 0x40;\n e.keyEncipherment = (b2 & 0x20) === 0x20;\n e.dataEncipherment = (b2 & 0x10) === 0x10;\n e.keyAgreement = (b2 & 0x08) === 0x08;\n e.keyCertSign = (b2 & 0x04) === 0x04;\n e.cRLSign = (b2 & 0x02) === 0x02;\n e.encipherOnly = (b2 & 0x01) === 0x01;\n e.decipherOnly = (b3 & 0x80) === 0x80;\n } else if(e.name === 'basicConstraints') {\n // handle basic constraints\n // get value as SEQUENCE\n var ev = asn1.fromDer(e.value);\n // get cA BOOLEAN flag (defaults to false)\n if(ev.value.length > 0 && ev.value[0].type === asn1.Type.BOOLEAN) {\n e.cA = (ev.value[0].value.charCodeAt(0) !== 0x00);\n } else {\n e.cA = false;\n }\n // get path length constraint\n var value = null;\n if(ev.value.length > 0 && ev.value[0].type === asn1.Type.INTEGER) {\n value = ev.value[0].value;\n } else if(ev.value.length > 1) {\n value = ev.value[1].value;\n }\n if(value !== null) {\n e.pathLenConstraint = asn1.derToInteger(value);\n }\n } else if(e.name === 'extKeyUsage') {\n // handle extKeyUsage\n // value is a SEQUENCE of OIDs\n var ev = asn1.fromDer(e.value);\n for(var vi = 0; vi < ev.value.length; ++vi) {\n var oid = asn1.derToOid(ev.value[vi].value);\n if(oid in oids) {\n e[oids[oid]] = true;\n } else {\n e[oid] = true;\n }\n }\n } else if(e.name === 'nsCertType') {\n // handle nsCertType\n // get value as BIT STRING\n var ev = asn1.fromDer(e.value);\n var b2 = 0x00;\n if(ev.value.length > 1) {\n // skip first byte, just indicates unused bits which\n // will be padded with 0s anyway\n // get bytes with flag bits\n b2 = ev.value.charCodeAt(1);\n }\n // set flags\n e.client = (b2 & 0x80) === 0x80;\n e.server = (b2 & 0x40) === 0x40;\n e.email = (b2 & 0x20) === 0x20;\n e.objsign = (b2 & 0x10) === 0x10;\n e.reserved = (b2 & 0x08) === 0x08;\n e.sslCA = (b2 & 0x04) === 0x04;\n e.emailCA = (b2 & 0x02) === 0x02;\n e.objCA = (b2 & 0x01) === 0x01;\n } else if(\n e.name === 'subjectAltName' ||\n e.name === 'issuerAltName') {\n // handle subjectAltName/issuerAltName\n e.altNames = [];\n\n // ev is a SYNTAX SEQUENCE\n var gn;\n var ev = asn1.fromDer(e.value);\n for(var n = 0; n < ev.value.length; ++n) {\n // get GeneralName\n gn = ev.value[n];\n\n var altName = {\n type: gn.type,\n value: gn.value\n };\n e.altNames.push(altName);\n\n // Note: Support for types 1,2,6,7,8\n switch(gn.type) {\n // rfc822Name\n case 1:\n // dNSName\n case 2:\n // uniformResourceIdentifier (URI)\n case 6:\n break;\n // IPAddress\n case 7:\n // convert to IPv4/IPv6 string representation\n altName.ip = forge.util.bytesToIP(gn.value);\n break;\n // registeredID\n case 8:\n altName.oid = asn1.derToOid(gn.value);\n break;\n default:\n // unsupported\n }\n }\n } else if(e.name === 'subjectKeyIdentifier') {\n // value is an OCTETSTRING w/the hash of the key-type specific\n // public key structure (eg: RSAPublicKey)\n var ev = asn1.fromDer(e.value);\n e.subjectKeyIdentifier = forge.util.bytesToHex(ev.value);\n }\n }\n return e;\n};\n\n/**\n * Converts a PKCS#10 certification request (CSR) from an ASN.1 object.\n *\n * Note: If the certification request is to be verified then compute hash\n * should be set to true. There is currently no implementation for converting\n * a certificate back to ASN.1 so the CertificationRequestInfo part of the\n * ASN.1 object needs to be scanned before the csr object is created.\n *\n * @param obj the asn1 representation of a PKCS#10 certification request (CSR).\n * @param computeHash true to compute the hash for verification.\n *\n * @return the certification request (CSR).\n */\npki.certificationRequestFromAsn1 = function(obj, computeHash) {\n // validate certification request and capture data\n var capture = {};\n var errors = [];\n if(!asn1.validate(obj, certificationRequestValidator, capture, errors)) {\n var error = new Error('Cannot read PKCS#10 certificate request. ' +\n 'ASN.1 object is not a PKCS#10 CertificationRequest.');\n error.errors = errors;\n throw error;\n }\n\n // get oid\n var oid = asn1.derToOid(capture.publicKeyOid);\n if(oid !== pki.oids.rsaEncryption) {\n throw new Error('Cannot read public key. OID is not RSA.');\n }\n\n // create certification request\n var csr = pki.createCertificationRequest();\n csr.version = capture.csrVersion ? capture.csrVersion.charCodeAt(0) : 0;\n csr.signatureOid = forge.asn1.derToOid(capture.csrSignatureOid);\n csr.signatureParameters = _readSignatureParameters(\n csr.signatureOid, capture.csrSignatureParams, true);\n csr.siginfo.algorithmOid = forge.asn1.derToOid(capture.csrSignatureOid);\n csr.siginfo.parameters = _readSignatureParameters(\n csr.siginfo.algorithmOid, capture.csrSignatureParams, false);\n csr.signature = capture.csrSignature;\n\n // keep CertificationRequestInfo to preserve signature when exporting\n csr.certificationRequestInfo = capture.certificationRequestInfo;\n\n if(computeHash) {\n // create digest for OID signature type\n csr.md = _createSignatureDigest({\n signatureOid: csr.signatureOid,\n type: 'certification request'\n });\n\n // produce DER formatted CertificationRequestInfo and digest it\n var bytes = asn1.toDer(csr.certificationRequestInfo);\n csr.md.update(bytes.getBytes());\n }\n\n // handle subject, build subject message digest\n var smd = forge.md.sha1.create();\n csr.subject.getField = function(sn) {\n return _getAttribute(csr.subject, sn);\n };\n csr.subject.addField = function(attr) {\n _fillMissingFields([attr]);\n csr.subject.attributes.push(attr);\n };\n csr.subject.attributes = pki.RDNAttributesAsArray(\n capture.certificationRequestInfoSubject, smd);\n csr.subject.hash = smd.digest().toHex();\n\n // convert RSA public key from ASN.1\n csr.publicKey = pki.publicKeyFromAsn1(capture.subjectPublicKeyInfo);\n\n // convert attributes from ASN.1\n csr.getAttribute = function(sn) {\n return _getAttribute(csr, sn);\n };\n csr.addAttribute = function(attr) {\n _fillMissingFields([attr]);\n csr.attributes.push(attr);\n };\n csr.attributes = pki.CRIAttributesAsArray(\n capture.certificationRequestInfoAttributes || []);\n\n return csr;\n};\n\n/**\n * Creates an empty certification request (a CSR or certificate signing\n * request). Once created, its public key and attributes can be set and then\n * it can be signed.\n *\n * @return the empty certification request.\n */\npki.createCertificationRequest = function() {\n var csr = {};\n csr.version = 0x00;\n csr.signatureOid = null;\n csr.signature = null;\n csr.siginfo = {};\n csr.siginfo.algorithmOid = null;\n\n csr.subject = {};\n csr.subject.getField = function(sn) {\n return _getAttribute(csr.subject, sn);\n };\n csr.subject.addField = function(attr) {\n _fillMissingFields([attr]);\n csr.subject.attributes.push(attr);\n };\n csr.subject.attributes = [];\n csr.subject.hash = null;\n\n csr.publicKey = null;\n csr.attributes = [];\n csr.getAttribute = function(sn) {\n return _getAttribute(csr, sn);\n };\n csr.addAttribute = function(attr) {\n _fillMissingFields([attr]);\n csr.attributes.push(attr);\n };\n csr.md = null;\n\n /**\n * Sets the subject of this certification request.\n *\n * @param attrs the array of subject attributes to use.\n */\n csr.setSubject = function(attrs) {\n // set new attributes\n _fillMissingFields(attrs);\n csr.subject.attributes = attrs;\n csr.subject.hash = null;\n };\n\n /**\n * Sets the attributes of this certification request.\n *\n * @param attrs the array of attributes to use.\n */\n csr.setAttributes = function(attrs) {\n // set new attributes\n _fillMissingFields(attrs);\n csr.attributes = attrs;\n };\n\n /**\n * Signs this certification request using the given private key.\n *\n * @param key the private key to sign with.\n * @param md the message digest object to use (defaults to forge.md.sha1).\n */\n csr.sign = function(key, md) {\n // TODO: get signature OID from private key\n csr.md = md || forge.md.sha1.create();\n var algorithmOid = oids[csr.md.algorithm + 'WithRSAEncryption'];\n if(!algorithmOid) {\n var error = new Error('Could not compute certification request digest. ' +\n 'Unknown message digest algorithm OID.');\n error.algorithm = csr.md.algorithm;\n throw error;\n }\n csr.signatureOid = csr.siginfo.algorithmOid = algorithmOid;\n\n // get CertificationRequestInfo, convert to DER\n csr.certificationRequestInfo = pki.getCertificationRequestInfo(csr);\n var bytes = asn1.toDer(csr.certificationRequestInfo);\n\n // digest and sign\n csr.md.update(bytes.getBytes());\n csr.signature = key.sign(csr.md);\n };\n\n /**\n * Attempts verify the signature on the passed certification request using\n * its public key.\n *\n * A CSR that has been exported to a file in PEM format can be verified using\n * OpenSSL using this command:\n *\n * openssl req -in -verify -noout -text\n *\n * @return true if verified, false if not.\n */\n csr.verify = function() {\n var rval = false;\n\n var md = csr.md;\n if(md === null) {\n md = _createSignatureDigest({\n signatureOid: csr.signatureOid,\n type: 'certification request'\n });\n\n // produce DER formatted CertificationRequestInfo and digest it\n var cri = csr.certificationRequestInfo ||\n pki.getCertificationRequestInfo(csr);\n var bytes = asn1.toDer(cri);\n md.update(bytes.getBytes());\n }\n\n if(md !== null) {\n rval = _verifySignature({\n certificate: csr, md: md, signature: csr.signature\n });\n }\n\n return rval;\n };\n\n return csr;\n};\n\n/**\n * Converts an X.509 subject or issuer to an ASN.1 RDNSequence.\n *\n * @param obj the subject or issuer (distinguished name).\n *\n * @return the ASN.1 RDNSequence.\n */\nfunction _dnToAsn1(obj) {\n // create an empty RDNSequence\n var rval = asn1.create(\n asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, []);\n\n // iterate over attributes\n var attr, set;\n var attrs = obj.attributes;\n for(var i = 0; i < attrs.length; ++i) {\n attr = attrs[i];\n var value = attr.value;\n\n // reuse tag class for attribute value if available\n var valueTagClass = asn1.Type.PRINTABLESTRING;\n if('valueTagClass' in attr) {\n valueTagClass = attr.valueTagClass;\n\n if(valueTagClass === asn1.Type.UTF8) {\n value = forge.util.encodeUtf8(value);\n }\n // FIXME: handle more encodings\n }\n\n // create a RelativeDistinguishedName set\n // each value in the set is an AttributeTypeAndValue first\n // containing the type (an OID) and second the value\n set = asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SET, true, [\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n // AttributeType\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false,\n asn1.oidToDer(attr.type).getBytes()),\n // AttributeValue\n asn1.create(asn1.Class.UNIVERSAL, valueTagClass, false, value)\n ])\n ]);\n rval.value.push(set);\n }\n\n return rval;\n}\n\n/**\n * Gets all printable attributes (typically of an issuer or subject) in a\n * simplified JSON format for display.\n *\n * @param attrs the attributes.\n *\n * @return the JSON for display.\n */\nfunction _getAttributesAsJson(attrs) {\n var rval = {};\n for(var i = 0; i < attrs.length; ++i) {\n var attr = attrs[i];\n if(attr.shortName && (\n attr.valueTagClass === asn1.Type.UTF8 ||\n attr.valueTagClass === asn1.Type.PRINTABLESTRING ||\n attr.valueTagClass === asn1.Type.IA5STRING)) {\n var value = attr.value;\n if(attr.valueTagClass === asn1.Type.UTF8) {\n value = forge.util.encodeUtf8(attr.value);\n }\n if(!(attr.shortName in rval)) {\n rval[attr.shortName] = value;\n } else if(forge.util.isArray(rval[attr.shortName])) {\n rval[attr.shortName].push(value);\n } else {\n rval[attr.shortName] = [rval[attr.shortName], value];\n }\n }\n }\n return rval;\n}\n\n/**\n * Fills in missing fields in attributes.\n *\n * @param attrs the attributes to fill missing fields in.\n */\nfunction _fillMissingFields(attrs) {\n var attr;\n for(var i = 0; i < attrs.length; ++i) {\n attr = attrs[i];\n\n // populate missing name\n if(typeof attr.name === 'undefined') {\n if(attr.type && attr.type in pki.oids) {\n attr.name = pki.oids[attr.type];\n } else if(attr.shortName && attr.shortName in _shortNames) {\n attr.name = pki.oids[_shortNames[attr.shortName]];\n }\n }\n\n // populate missing type (OID)\n if(typeof attr.type === 'undefined') {\n if(attr.name && attr.name in pki.oids) {\n attr.type = pki.oids[attr.name];\n } else {\n var error = new Error('Attribute type not specified.');\n error.attribute = attr;\n throw error;\n }\n }\n\n // populate missing shortname\n if(typeof attr.shortName === 'undefined') {\n if(attr.name && attr.name in _shortNames) {\n attr.shortName = _shortNames[attr.name];\n }\n }\n\n // convert extensions to value\n if(attr.type === oids.extensionRequest) {\n attr.valueConstructed = true;\n attr.valueTagClass = asn1.Type.SEQUENCE;\n if(!attr.value && attr.extensions) {\n attr.value = [];\n for(var ei = 0; ei < attr.extensions.length; ++ei) {\n attr.value.push(pki.certificateExtensionToAsn1(\n _fillMissingExtensionFields(attr.extensions[ei])));\n }\n }\n }\n\n if(typeof attr.value === 'undefined') {\n var error = new Error('Attribute value not specified.');\n error.attribute = attr;\n throw error;\n }\n }\n}\n\n/**\n * Fills in missing fields in certificate extensions.\n *\n * @param e the extension.\n * @param [options] the options to use.\n * [cert] the certificate the extensions are for.\n *\n * @return the extension.\n */\nfunction _fillMissingExtensionFields(e, options) {\n options = options || {};\n\n // populate missing name\n if(typeof e.name === 'undefined') {\n if(e.id && e.id in pki.oids) {\n e.name = pki.oids[e.id];\n }\n }\n\n // populate missing id\n if(typeof e.id === 'undefined') {\n if(e.name && e.name in pki.oids) {\n e.id = pki.oids[e.name];\n } else {\n var error = new Error('Extension ID not specified.');\n error.extension = e;\n throw error;\n }\n }\n\n if(typeof e.value !== 'undefined') {\n return e;\n }\n\n // handle missing value:\n\n // value is a BIT STRING\n if(e.name === 'keyUsage') {\n // build flags\n var unused = 0;\n var b2 = 0x00;\n var b3 = 0x00;\n if(e.digitalSignature) {\n b2 |= 0x80;\n unused = 7;\n }\n if(e.nonRepudiation) {\n b2 |= 0x40;\n unused = 6;\n }\n if(e.keyEncipherment) {\n b2 |= 0x20;\n unused = 5;\n }\n if(e.dataEncipherment) {\n b2 |= 0x10;\n unused = 4;\n }\n if(e.keyAgreement) {\n b2 |= 0x08;\n unused = 3;\n }\n if(e.keyCertSign) {\n b2 |= 0x04;\n unused = 2;\n }\n if(e.cRLSign) {\n b2 |= 0x02;\n unused = 1;\n }\n if(e.encipherOnly) {\n b2 |= 0x01;\n unused = 0;\n }\n if(e.decipherOnly) {\n b3 |= 0x80;\n unused = 7;\n }\n\n // create bit string\n var value = String.fromCharCode(unused);\n if(b3 !== 0) {\n value += String.fromCharCode(b2) + String.fromCharCode(b3);\n } else if(b2 !== 0) {\n value += String.fromCharCode(b2);\n }\n e.value = asn1.create(\n asn1.Class.UNIVERSAL, asn1.Type.BITSTRING, false, value);\n } else if(e.name === 'basicConstraints') {\n // basicConstraints is a SEQUENCE\n e.value = asn1.create(\n asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, []);\n // cA BOOLEAN flag defaults to false\n if(e.cA) {\n e.value.value.push(asn1.create(\n asn1.Class.UNIVERSAL, asn1.Type.BOOLEAN, false,\n String.fromCharCode(0xFF)));\n }\n if('pathLenConstraint' in e) {\n e.value.value.push(asn1.create(\n asn1.Class.UNIVERSAL, asn1.Type.INTEGER, false,\n asn1.integerToDer(e.pathLenConstraint).getBytes()));\n }\n } else if(e.name === 'extKeyUsage') {\n // extKeyUsage is a SEQUENCE of OIDs\n e.value = asn1.create(\n asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, []);\n var seq = e.value.value;\n for(var key in e) {\n if(e[key] !== true) {\n continue;\n }\n // key is name in OID map\n if(key in oids) {\n seq.push(asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID,\n false, asn1.oidToDer(oids[key]).getBytes()));\n } else if(key.indexOf('.') !== -1) {\n // assume key is an OID\n seq.push(asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID,\n false, asn1.oidToDer(key).getBytes()));\n }\n }\n } else if(e.name === 'nsCertType') {\n // nsCertType is a BIT STRING\n // build flags\n var unused = 0;\n var b2 = 0x00;\n\n if(e.client) {\n b2 |= 0x80;\n unused = 7;\n }\n if(e.server) {\n b2 |= 0x40;\n unused = 6;\n }\n if(e.email) {\n b2 |= 0x20;\n unused = 5;\n }\n if(e.objsign) {\n b2 |= 0x10;\n unused = 4;\n }\n if(e.reserved) {\n b2 |= 0x08;\n unused = 3;\n }\n if(e.sslCA) {\n b2 |= 0x04;\n unused = 2;\n }\n if(e.emailCA) {\n b2 |= 0x02;\n unused = 1;\n }\n if(e.objCA) {\n b2 |= 0x01;\n unused = 0;\n }\n\n // create bit string\n var value = String.fromCharCode(unused);\n if(b2 !== 0) {\n value += String.fromCharCode(b2);\n }\n e.value = asn1.create(\n asn1.Class.UNIVERSAL, asn1.Type.BITSTRING, false, value);\n } else if(e.name === 'subjectAltName' || e.name === 'issuerAltName') {\n // SYNTAX SEQUENCE\n e.value = asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, []);\n\n var altName;\n for(var n = 0; n < e.altNames.length; ++n) {\n altName = e.altNames[n];\n var value = altName.value;\n // handle IP\n if(altName.type === 7 && altName.ip) {\n value = forge.util.bytesFromIP(altName.ip);\n if(value === null) {\n var error = new Error(\n 'Extension \"ip\" value is not a valid IPv4 or IPv6 address.');\n error.extension = e;\n throw error;\n }\n } else if(altName.type === 8) {\n // handle OID\n if(altName.oid) {\n value = asn1.oidToDer(asn1.oidToDer(altName.oid));\n } else {\n // deprecated ... convert value to OID\n value = asn1.oidToDer(value);\n }\n }\n e.value.value.push(asn1.create(\n asn1.Class.CONTEXT_SPECIFIC, altName.type, false,\n value));\n }\n } else if(e.name === 'nsComment' && options.cert) {\n // sanity check value is ASCII (req'd) and not too big\n if(!(/^[\\x00-\\x7F]*$/.test(e.comment)) ||\n (e.comment.length < 1) || (e.comment.length > 128)) {\n throw new Error('Invalid \"nsComment\" content.');\n }\n // IA5STRING opaque comment\n e.value = asn1.create(\n asn1.Class.UNIVERSAL, asn1.Type.IA5STRING, false, e.comment);\n } else if(e.name === 'subjectKeyIdentifier' && options.cert) {\n var ski = options.cert.generateSubjectKeyIdentifier();\n e.subjectKeyIdentifier = ski.toHex();\n // OCTETSTRING w/digest\n e.value = asn1.create(\n asn1.Class.UNIVERSAL, asn1.Type.OCTETSTRING, false, ski.getBytes());\n } else if(e.name === 'authorityKeyIdentifier' && options.cert) {\n // SYNTAX SEQUENCE\n e.value = asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, []);\n var seq = e.value.value;\n\n if(e.keyIdentifier) {\n var keyIdentifier = (e.keyIdentifier === true ?\n options.cert.generateSubjectKeyIdentifier().getBytes() :\n e.keyIdentifier);\n seq.push(\n asn1.create(asn1.Class.CONTEXT_SPECIFIC, 0, false, keyIdentifier));\n }\n\n if(e.authorityCertIssuer) {\n var authorityCertIssuer = [\n asn1.create(asn1.Class.CONTEXT_SPECIFIC, 4, true, [\n _dnToAsn1(e.authorityCertIssuer === true ?\n options.cert.issuer : e.authorityCertIssuer)\n ])\n ];\n seq.push(\n asn1.create(asn1.Class.CONTEXT_SPECIFIC, 1, true, authorityCertIssuer));\n }\n\n if(e.serialNumber) {\n var serialNumber = forge.util.hexToBytes(e.serialNumber === true ?\n options.cert.serialNumber : e.serialNumber);\n seq.push(\n asn1.create(asn1.Class.CONTEXT_SPECIFIC, 2, false, serialNumber));\n }\n } else if(e.name === 'cRLDistributionPoints') {\n e.value = asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, []);\n var seq = e.value.value;\n\n // Create sub SEQUENCE of DistributionPointName\n var subSeq = asn1.create(\n asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, []);\n\n // Create fullName CHOICE\n var fullNameGeneralNames = asn1.create(\n asn1.Class.CONTEXT_SPECIFIC, 0, true, []);\n var altName;\n for(var n = 0; n < e.altNames.length; ++n) {\n altName = e.altNames[n];\n var value = altName.value;\n // handle IP\n if(altName.type === 7 && altName.ip) {\n value = forge.util.bytesFromIP(altName.ip);\n if(value === null) {\n var error = new Error(\n 'Extension \"ip\" value is not a valid IPv4 or IPv6 address.');\n error.extension = e;\n throw error;\n }\n } else if(altName.type === 8) {\n // handle OID\n if(altName.oid) {\n value = asn1.oidToDer(asn1.oidToDer(altName.oid));\n } else {\n // deprecated ... convert value to OID\n value = asn1.oidToDer(value);\n }\n }\n fullNameGeneralNames.value.push(asn1.create(\n asn1.Class.CONTEXT_SPECIFIC, altName.type, false,\n value));\n }\n\n // Add to the parent SEQUENCE\n subSeq.value.push(asn1.create(\n asn1.Class.CONTEXT_SPECIFIC, 0, true, [fullNameGeneralNames]));\n seq.push(subSeq);\n }\n\n // ensure value has been defined by now\n if(typeof e.value === 'undefined') {\n var error = new Error('Extension value not specified.');\n error.extension = e;\n throw error;\n }\n\n return e;\n}\n\n/**\n * Convert signature parameters object to ASN.1\n *\n * @param {String} oid Signature algorithm OID\n * @param params The signature parametrs object\n * @return ASN.1 object representing signature parameters\n */\nfunction _signatureParametersToAsn1(oid, params) {\n switch(oid) {\n case oids['RSASSA-PSS']:\n var parts = [];\n\n if(params.hash.algorithmOid !== undefined) {\n parts.push(asn1.create(asn1.Class.CONTEXT_SPECIFIC, 0, true, [\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false,\n asn1.oidToDer(params.hash.algorithmOid).getBytes()),\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.NULL, false, '')\n ])\n ]));\n }\n\n if(params.mgf.algorithmOid !== undefined) {\n parts.push(asn1.create(asn1.Class.CONTEXT_SPECIFIC, 1, true, [\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false,\n asn1.oidToDer(params.mgf.algorithmOid).getBytes()),\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false,\n asn1.oidToDer(params.mgf.hash.algorithmOid).getBytes()),\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.NULL, false, '')\n ])\n ])\n ]));\n }\n\n if(params.saltLength !== undefined) {\n parts.push(asn1.create(asn1.Class.CONTEXT_SPECIFIC, 2, true, [\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.INTEGER, false,\n asn1.integerToDer(params.saltLength).getBytes())\n ]));\n }\n\n return asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, parts);\n\n default:\n return asn1.create(asn1.Class.UNIVERSAL, asn1.Type.NULL, false, '');\n }\n}\n\n/**\n * Converts a certification request's attributes to an ASN.1 set of\n * CRIAttributes.\n *\n * @param csr certification request.\n *\n * @return the ASN.1 set of CRIAttributes.\n */\nfunction _CRIAttributesToAsn1(csr) {\n // create an empty context-specific container\n var rval = asn1.create(asn1.Class.CONTEXT_SPECIFIC, 0, true, []);\n\n // no attributes, return empty container\n if(csr.attributes.length === 0) {\n return rval;\n }\n\n // each attribute has a sequence with a type and a set of values\n var attrs = csr.attributes;\n for(var i = 0; i < attrs.length; ++i) {\n var attr = attrs[i];\n var value = attr.value;\n\n // reuse tag class for attribute value if available\n var valueTagClass = asn1.Type.UTF8;\n if('valueTagClass' in attr) {\n valueTagClass = attr.valueTagClass;\n }\n if(valueTagClass === asn1.Type.UTF8) {\n value = forge.util.encodeUtf8(value);\n }\n var valueConstructed = false;\n if('valueConstructed' in attr) {\n valueConstructed = attr.valueConstructed;\n }\n // FIXME: handle more encodings\n\n // create a RelativeDistinguishedName set\n // each value in the set is an AttributeTypeAndValue first\n // containing the type (an OID) and second the value\n var seq = asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n // AttributeType\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false,\n asn1.oidToDer(attr.type).getBytes()),\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SET, true, [\n // AttributeValue\n asn1.create(\n asn1.Class.UNIVERSAL, valueTagClass, valueConstructed, value)\n ])\n ]);\n rval.value.push(seq);\n }\n\n return rval;\n}\n\nvar jan_1_1950 = new Date('1950-01-01T00:00:00Z');\nvar jan_1_2050 = new Date('2050-01-01T00:00:00Z');\n\n/**\n * Converts a Date object to ASN.1\n * Handles the different format before and after 1st January 2050\n *\n * @param date date object.\n *\n * @return the ASN.1 object representing the date.\n */\nfunction _dateToAsn1(date) {\n if(date >= jan_1_1950 && date < jan_1_2050) {\n return asn1.create(\n asn1.Class.UNIVERSAL, asn1.Type.UTCTIME, false,\n asn1.dateToUtcTime(date));\n } else {\n return asn1.create(\n asn1.Class.UNIVERSAL, asn1.Type.GENERALIZEDTIME, false,\n asn1.dateToGeneralizedTime(date));\n }\n}\n\n/**\n * Gets the ASN.1 TBSCertificate part of an X.509v3 certificate.\n *\n * @param cert the certificate.\n *\n * @return the asn1 TBSCertificate.\n */\npki.getTBSCertificate = function(cert) {\n // TBSCertificate\n var notBefore = _dateToAsn1(cert.validity.notBefore);\n var notAfter = _dateToAsn1(cert.validity.notAfter);\n var tbs = asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n // version\n asn1.create(asn1.Class.CONTEXT_SPECIFIC, 0, true, [\n // integer\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.INTEGER, false,\n asn1.integerToDer(cert.version).getBytes())\n ]),\n // serialNumber\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.INTEGER, false,\n forge.util.hexToBytes(cert.serialNumber)),\n // signature\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n // algorithm\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false,\n asn1.oidToDer(cert.siginfo.algorithmOid).getBytes()),\n // parameters\n _signatureParametersToAsn1(\n cert.siginfo.algorithmOid, cert.siginfo.parameters)\n ]),\n // issuer\n _dnToAsn1(cert.issuer),\n // validity\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n notBefore,\n notAfter\n ]),\n // subject\n _dnToAsn1(cert.subject),\n // SubjectPublicKeyInfo\n pki.publicKeyToAsn1(cert.publicKey)\n ]);\n\n if(cert.issuer.uniqueId) {\n // issuerUniqueID (optional)\n tbs.value.push(\n asn1.create(asn1.Class.CONTEXT_SPECIFIC, 1, true, [\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.BITSTRING, false,\n // TODO: support arbitrary bit length ids\n String.fromCharCode(0x00) +\n cert.issuer.uniqueId\n )\n ])\n );\n }\n if(cert.subject.uniqueId) {\n // subjectUniqueID (optional)\n tbs.value.push(\n asn1.create(asn1.Class.CONTEXT_SPECIFIC, 2, true, [\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.BITSTRING, false,\n // TODO: support arbitrary bit length ids\n String.fromCharCode(0x00) +\n cert.subject.uniqueId\n )\n ])\n );\n }\n\n if(cert.extensions.length > 0) {\n // extensions (optional)\n tbs.value.push(pki.certificateExtensionsToAsn1(cert.extensions));\n }\n\n return tbs;\n};\n\n/**\n * Gets the ASN.1 CertificationRequestInfo part of a\n * PKCS#10 CertificationRequest.\n *\n * @param csr the certification request.\n *\n * @return the asn1 CertificationRequestInfo.\n */\npki.getCertificationRequestInfo = function(csr) {\n // CertificationRequestInfo\n var cri = asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n // version\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.INTEGER, false,\n asn1.integerToDer(csr.version).getBytes()),\n // subject\n _dnToAsn1(csr.subject),\n // SubjectPublicKeyInfo\n pki.publicKeyToAsn1(csr.publicKey),\n // attributes\n _CRIAttributesToAsn1(csr)\n ]);\n\n return cri;\n};\n\n/**\n * Converts a DistinguishedName (subject or issuer) to an ASN.1 object.\n *\n * @param dn the DistinguishedName.\n *\n * @return the asn1 representation of a DistinguishedName.\n */\npki.distinguishedNameToAsn1 = function(dn) {\n return _dnToAsn1(dn);\n};\n\n/**\n * Converts an X.509v3 RSA certificate to an ASN.1 object.\n *\n * @param cert the certificate.\n *\n * @return the asn1 representation of an X.509v3 RSA certificate.\n */\npki.certificateToAsn1 = function(cert) {\n // prefer cached TBSCertificate over generating one\n var tbsCertificate = cert.tbsCertificate || pki.getTBSCertificate(cert);\n\n // Certificate\n return asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n // TBSCertificate\n tbsCertificate,\n // AlgorithmIdentifier (signature algorithm)\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n // algorithm\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false,\n asn1.oidToDer(cert.signatureOid).getBytes()),\n // parameters\n _signatureParametersToAsn1(cert.signatureOid, cert.signatureParameters)\n ]),\n // SignatureValue\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.BITSTRING, false,\n String.fromCharCode(0x00) + cert.signature)\n ]);\n};\n\n/**\n * Converts X.509v3 certificate extensions to ASN.1.\n *\n * @param exts the extensions to convert.\n *\n * @return the extensions in ASN.1 format.\n */\npki.certificateExtensionsToAsn1 = function(exts) {\n // create top-level extension container\n var rval = asn1.create(asn1.Class.CONTEXT_SPECIFIC, 3, true, []);\n\n // create extension sequence (stores a sequence for each extension)\n var seq = asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, []);\n rval.value.push(seq);\n\n for(var i = 0; i < exts.length; ++i) {\n seq.value.push(pki.certificateExtensionToAsn1(exts[i]));\n }\n\n return rval;\n};\n\n/**\n * Converts a single certificate extension to ASN.1.\n *\n * @param ext the extension to convert.\n *\n * @return the extension in ASN.1 format.\n */\npki.certificateExtensionToAsn1 = function(ext) {\n // create a sequence for each extension\n var extseq = asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, []);\n\n // extnID (OID)\n extseq.value.push(asn1.create(\n asn1.Class.UNIVERSAL, asn1.Type.OID, false,\n asn1.oidToDer(ext.id).getBytes()));\n\n // critical defaults to false\n if(ext.critical) {\n // critical BOOLEAN DEFAULT FALSE\n extseq.value.push(asn1.create(\n asn1.Class.UNIVERSAL, asn1.Type.BOOLEAN, false,\n String.fromCharCode(0xFF)));\n }\n\n var value = ext.value;\n if(typeof ext.value !== 'string') {\n // value is asn.1\n value = asn1.toDer(value).getBytes();\n }\n\n // extnValue (OCTET STRING)\n extseq.value.push(asn1.create(\n asn1.Class.UNIVERSAL, asn1.Type.OCTETSTRING, false, value));\n\n return extseq;\n};\n\n/**\n * Converts a PKCS#10 certification request to an ASN.1 object.\n *\n * @param csr the certification request.\n *\n * @return the asn1 representation of a certification request.\n */\npki.certificationRequestToAsn1 = function(csr) {\n // prefer cached CertificationRequestInfo over generating one\n var cri = csr.certificationRequestInfo ||\n pki.getCertificationRequestInfo(csr);\n\n // Certificate\n return asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n // CertificationRequestInfo\n cri,\n // AlgorithmIdentifier (signature algorithm)\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n // algorithm\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false,\n asn1.oidToDer(csr.signatureOid).getBytes()),\n // parameters\n _signatureParametersToAsn1(csr.signatureOid, csr.signatureParameters)\n ]),\n // signature\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.BITSTRING, false,\n String.fromCharCode(0x00) + csr.signature)\n ]);\n};\n\n/**\n * Creates a CA store.\n *\n * @param certs an optional array of certificate objects or PEM-formatted\n * certificate strings to add to the CA store.\n *\n * @return the CA store.\n */\npki.createCaStore = function(certs) {\n // create CA store\n var caStore = {\n // stored certificates\n certs: {}\n };\n\n /**\n * Gets the certificate that issued the passed certificate or its\n * 'parent'.\n *\n * @param cert the certificate to get the parent for.\n *\n * @return the parent certificate or null if none was found.\n */\n caStore.getIssuer = function(cert) {\n var rval = getBySubject(cert.issuer);\n\n // see if there are multiple matches\n /*if(forge.util.isArray(rval)) {\n // TODO: resolve multiple matches by checking\n // authorityKey/subjectKey/issuerUniqueID/other identifiers, etc.\n // FIXME: or alternatively do authority key mapping\n // if possible (X.509v1 certs can't work?)\n throw new Error('Resolving multiple issuer matches not implemented yet.');\n }*/\n\n return rval;\n };\n\n /**\n * Adds a trusted certificate to the store.\n *\n * @param cert the certificate to add as a trusted certificate (either a\n * pki.certificate object or a PEM-formatted certificate).\n */\n caStore.addCertificate = function(cert) {\n // convert from pem if necessary\n if(typeof cert === 'string') {\n cert = forge.pki.certificateFromPem(cert);\n }\n\n ensureSubjectHasHash(cert.subject);\n\n if(!caStore.hasCertificate(cert)) { // avoid duplicate certificates in store\n if(cert.subject.hash in caStore.certs) {\n // subject hash already exists, append to array\n var tmp = caStore.certs[cert.subject.hash];\n if(!forge.util.isArray(tmp)) {\n tmp = [tmp];\n }\n tmp.push(cert);\n caStore.certs[cert.subject.hash] = tmp;\n } else {\n caStore.certs[cert.subject.hash] = cert;\n }\n }\n };\n\n /**\n * Checks to see if the given certificate is in the store.\n *\n * @param cert the certificate to check (either a pki.certificate or a\n * PEM-formatted certificate).\n *\n * @return true if the certificate is in the store, false if not.\n */\n caStore.hasCertificate = function(cert) {\n // convert from pem if necessary\n if(typeof cert === 'string') {\n cert = forge.pki.certificateFromPem(cert);\n }\n\n var match = getBySubject(cert.subject);\n if(!match) {\n return false;\n }\n if(!forge.util.isArray(match)) {\n match = [match];\n }\n // compare DER-encoding of certificates\n var der1 = asn1.toDer(pki.certificateToAsn1(cert)).getBytes();\n for(var i = 0; i < match.length; ++i) {\n var der2 = asn1.toDer(pki.certificateToAsn1(match[i])).getBytes();\n if(der1 === der2) {\n return true;\n }\n }\n return false;\n };\n\n /**\n * Lists all of the certificates kept in the store.\n *\n * @return an array of all of the pki.certificate objects in the store.\n */\n caStore.listAllCertificates = function() {\n var certList = [];\n\n for(var hash in caStore.certs) {\n if(caStore.certs.hasOwnProperty(hash)) {\n var value = caStore.certs[hash];\n if(!forge.util.isArray(value)) {\n certList.push(value);\n } else {\n for(var i = 0; i < value.length; ++i) {\n certList.push(value[i]);\n }\n }\n }\n }\n\n return certList;\n };\n\n /**\n * Removes a certificate from the store.\n *\n * @param cert the certificate to remove (either a pki.certificate or a\n * PEM-formatted certificate).\n *\n * @return the certificate that was removed or null if the certificate\n * wasn't in store.\n */\n caStore.removeCertificate = function(cert) {\n var result;\n\n // convert from pem if necessary\n if(typeof cert === 'string') {\n cert = forge.pki.certificateFromPem(cert);\n }\n ensureSubjectHasHash(cert.subject);\n if(!caStore.hasCertificate(cert)) {\n return null;\n }\n\n var match = getBySubject(cert.subject);\n\n if(!forge.util.isArray(match)) {\n result = caStore.certs[cert.subject.hash];\n delete caStore.certs[cert.subject.hash];\n return result;\n }\n\n // compare DER-encoding of certificates\n var der1 = asn1.toDer(pki.certificateToAsn1(cert)).getBytes();\n for(var i = 0; i < match.length; ++i) {\n var der2 = asn1.toDer(pki.certificateToAsn1(match[i])).getBytes();\n if(der1 === der2) {\n result = match[i];\n match.splice(i, 1);\n }\n }\n if(match.length === 0) {\n delete caStore.certs[cert.subject.hash];\n }\n\n return result;\n };\n\n function getBySubject(subject) {\n ensureSubjectHasHash(subject);\n return caStore.certs[subject.hash] || null;\n }\n\n function ensureSubjectHasHash(subject) {\n // produce subject hash if it doesn't exist\n if(!subject.hash) {\n var md = forge.md.sha1.create();\n subject.attributes = pki.RDNAttributesAsArray(_dnToAsn1(subject), md);\n subject.hash = md.digest().toHex();\n }\n }\n\n // auto-add passed in certs\n if(certs) {\n // parse PEM-formatted certificates as necessary\n for(var i = 0; i < certs.length; ++i) {\n var cert = certs[i];\n caStore.addCertificate(cert);\n }\n }\n\n return caStore;\n};\n\n/**\n * Certificate verification errors, based on TLS.\n */\npki.certificateError = {\n bad_certificate: 'forge.pki.BadCertificate',\n unsupported_certificate: 'forge.pki.UnsupportedCertificate',\n certificate_revoked: 'forge.pki.CertificateRevoked',\n certificate_expired: 'forge.pki.CertificateExpired',\n certificate_unknown: 'forge.pki.CertificateUnknown',\n unknown_ca: 'forge.pki.UnknownCertificateAuthority'\n};\n\n/**\n * Verifies a certificate chain against the given Certificate Authority store\n * with an optional custom verify callback.\n *\n * @param caStore a certificate store to verify against.\n * @param chain the certificate chain to verify, with the root or highest\n * authority at the end (an array of certificates).\n * @param options a callback to be called for every certificate in the chain or\n * an object with:\n * verify a callback to be called for every certificate in the\n * chain\n * validityCheckDate the date against which the certificate\n * validity period should be checked. Pass null to not check\n * the validity period. By default, the current date is used.\n *\n * The verify callback has the following signature:\n *\n * verified - Set to true if certificate was verified, otherwise the\n * pki.certificateError for why the certificate failed.\n * depth - The current index in the chain, where 0 is the end point's cert.\n * certs - The certificate chain, *NOTE* an empty chain indicates an anonymous\n * end point.\n *\n * The function returns true on success and on failure either the appropriate\n * pki.certificateError or an object with 'error' set to the appropriate\n * pki.certificateError and 'message' set to a custom error message.\n *\n * @return true if successful, error thrown if not.\n */\npki.verifyCertificateChain = function(caStore, chain, options) {\n /* From: RFC3280 - Internet X.509 Public Key Infrastructure Certificate\n Section 6: Certification Path Validation\n See inline parentheticals related to this particular implementation.\n\n The primary goal of path validation is to verify the binding between\n a subject distinguished name or a subject alternative name and subject\n public key, as represented in the end entity certificate, based on the\n public key of the trust anchor. This requires obtaining a sequence of\n certificates that support that binding. That sequence should be provided\n in the passed 'chain'. The trust anchor should be in the given CA\n store. The 'end entity' certificate is the certificate provided by the\n end point (typically a server) and is the first in the chain.\n\n To meet this goal, the path validation process verifies, among other\n things, that a prospective certification path (a sequence of n\n certificates or a 'chain') satisfies the following conditions:\n\n (a) for all x in {1, ..., n-1}, the subject of certificate x is\n the issuer of certificate x+1;\n\n (b) certificate 1 is issued by the trust anchor;\n\n (c) certificate n is the certificate to be validated; and\n\n (d) for all x in {1, ..., n}, the certificate was valid at the\n time in question.\n\n Note that here 'n' is index 0 in the chain and 1 is the last certificate\n in the chain and it must be signed by a certificate in the connection's\n CA store.\n\n The path validation process also determines the set of certificate\n policies that are valid for this path, based on the certificate policies\n extension, policy mapping extension, policy constraints extension, and\n inhibit any-policy extension.\n\n Note: Policy mapping extension not supported (Not Required).\n\n Note: If the certificate has an unsupported critical extension, then it\n must be rejected.\n\n Note: A certificate is self-issued if the DNs that appear in the subject\n and issuer fields are identical and are not empty.\n\n The path validation algorithm assumes the following seven inputs are\n provided to the path processing logic. What this specific implementation\n will use is provided parenthetically:\n\n (a) a prospective certification path of length n (the 'chain')\n (b) the current date/time: ('now').\n (c) user-initial-policy-set: A set of certificate policy identifiers\n naming the policies that are acceptable to the certificate user.\n The user-initial-policy-set contains the special value any-policy\n if the user is not concerned about certificate policy\n (Not implemented. Any policy is accepted).\n (d) trust anchor information, describing a CA that serves as a trust\n anchor for the certification path. The trust anchor information\n includes:\n\n (1) the trusted issuer name,\n (2) the trusted public key algorithm,\n (3) the trusted public key, and\n (4) optionally, the trusted public key parameters associated\n with the public key.\n\n (Trust anchors are provided via certificates in the CA store).\n\n The trust anchor information may be provided to the path processing\n procedure in the form of a self-signed certificate. The trusted anchor\n information is trusted because it was delivered to the path processing\n procedure by some trustworthy out-of-band procedure. If the trusted\n public key algorithm requires parameters, then the parameters are\n provided along with the trusted public key (No parameters used in this\n implementation).\n\n (e) initial-policy-mapping-inhibit, which indicates if policy mapping is\n allowed in the certification path.\n (Not implemented, no policy checking)\n\n (f) initial-explicit-policy, which indicates if the path must be valid\n for at least one of the certificate policies in the user-initial-\n policy-set.\n (Not implemented, no policy checking)\n\n (g) initial-any-policy-inhibit, which indicates whether the\n anyPolicy OID should be processed if it is included in a\n certificate.\n (Not implemented, so any policy is valid provided that it is\n not marked as critical) */\n\n /* Basic Path Processing:\n\n For each certificate in the 'chain', the following is checked:\n\n 1. The certificate validity period includes the current time.\n 2. The certificate was signed by its parent (where the parent is either\n the next in the chain or from the CA store). Allow processing to\n continue to the next step if no parent is found but the certificate is\n in the CA store.\n 3. TODO: The certificate has not been revoked.\n 4. The certificate issuer name matches the parent's subject name.\n 5. TODO: If the certificate is self-issued and not the final certificate\n in the chain, skip this step, otherwise verify that the subject name\n is within one of the permitted subtrees of X.500 distinguished names\n and that each of the alternative names in the subjectAltName extension\n (critical or non-critical) is within one of the permitted subtrees for\n that name type.\n 6. TODO: If the certificate is self-issued and not the final certificate\n in the chain, skip this step, otherwise verify that the subject name\n is not within one of the excluded subtrees for X.500 distinguished\n names and none of the subjectAltName extension names are excluded for\n that name type.\n 7. The other steps in the algorithm for basic path processing involve\n handling the policy extension which is not presently supported in this\n implementation. Instead, if a critical policy extension is found, the\n certificate is rejected as not supported.\n 8. If the certificate is not the first or if its the only certificate in\n the chain (having no parent from the CA store or is self-signed) and it\n has a critical key usage extension, verify that the keyCertSign bit is\n set. If the key usage extension exists, verify that the basic\n constraints extension exists. If the basic constraints extension exists,\n verify that the cA flag is set. If pathLenConstraint is set, ensure that\n the number of certificates that precede in the chain (come earlier\n in the chain as implemented below), excluding the very first in the\n chain (typically the end-entity one), isn't greater than the\n pathLenConstraint. This constraint limits the number of intermediate\n CAs that may appear below a CA before only end-entity certificates\n may be issued. */\n\n // if a verify callback is passed as the third parameter, package it within\n // the options object. This is to support a legacy function signature that\n // expected the verify callback as the third parameter.\n if(typeof options === 'function') {\n options = {verify: options};\n }\n options = options || {};\n\n // copy cert chain references to another array to protect against changes\n // in verify callback\n chain = chain.slice(0);\n var certs = chain.slice(0);\n\n var validityCheckDate = options.validityCheckDate;\n // if no validityCheckDate is specified, default to the current date. Make\n // sure to maintain the value null because it indicates that the validity\n // period should not be checked.\n if(typeof validityCheckDate === 'undefined') {\n validityCheckDate = new Date();\n }\n\n // verify each cert in the chain using its parent, where the parent\n // is either the next in the chain or from the CA store\n var first = true;\n var error = null;\n var depth = 0;\n do {\n var cert = chain.shift();\n var parent = null;\n var selfSigned = false;\n\n if(validityCheckDate) {\n // 1. check valid time\n if(validityCheckDate < cert.validity.notBefore ||\n validityCheckDate > cert.validity.notAfter) {\n error = {\n message: 'Certificate is not valid yet or has expired.',\n error: pki.certificateError.certificate_expired,\n notBefore: cert.validity.notBefore,\n notAfter: cert.validity.notAfter,\n // TODO: we might want to reconsider renaming 'now' to\n // 'validityCheckDate' should this API be changed in the future.\n now: validityCheckDate\n };\n }\n }\n\n // 2. verify with parent from chain or CA store\n if(error === null) {\n parent = chain[0] || caStore.getIssuer(cert);\n if(parent === null) {\n // check for self-signed cert\n if(cert.isIssuer(cert)) {\n selfSigned = true;\n parent = cert;\n }\n }\n\n if(parent) {\n // FIXME: current CA store implementation might have multiple\n // certificates where the issuer can't be determined from the\n // certificate (happens rarely with, eg: old certificates) so normalize\n // by always putting parents into an array\n // TODO: there's may be an extreme degenerate case currently uncovered\n // where an old intermediate certificate seems to have a matching parent\n // but none of the parents actually verify ... but the intermediate\n // is in the CA and it should pass this check; needs investigation\n var parents = parent;\n if(!forge.util.isArray(parents)) {\n parents = [parents];\n }\n\n // try to verify with each possible parent (typically only one)\n var verified = false;\n while(!verified && parents.length > 0) {\n parent = parents.shift();\n try {\n verified = parent.verify(cert);\n } catch(ex) {\n // failure to verify, don't care why, try next one\n }\n }\n\n if(!verified) {\n error = {\n message: 'Certificate signature is invalid.',\n error: pki.certificateError.bad_certificate\n };\n }\n }\n\n if(error === null && (!parent || selfSigned) &&\n !caStore.hasCertificate(cert)) {\n // no parent issuer and certificate itself is not trusted\n error = {\n message: 'Certificate is not trusted.',\n error: pki.certificateError.unknown_ca\n };\n }\n }\n\n // TODO: 3. check revoked\n\n // 4. check for matching issuer/subject\n if(error === null && parent && !cert.isIssuer(parent)) {\n // parent is not issuer\n error = {\n message: 'Certificate issuer is invalid.',\n error: pki.certificateError.bad_certificate\n };\n }\n\n // 5. TODO: check names with permitted names tree\n\n // 6. TODO: check names against excluded names tree\n\n // 7. check for unsupported critical extensions\n if(error === null) {\n // supported extensions\n var se = {\n keyUsage: true,\n basicConstraints: true\n };\n for(var i = 0; error === null && i < cert.extensions.length; ++i) {\n var ext = cert.extensions[i];\n if(ext.critical && !(ext.name in se)) {\n error = {\n message:\n 'Certificate has an unsupported critical extension.',\n error: pki.certificateError.unsupported_certificate\n };\n }\n }\n }\n\n // 8. check for CA if cert is not first or is the only certificate\n // remaining in chain with no parent or is self-signed\n if(error === null &&\n (!first || (chain.length === 0 && (!parent || selfSigned)))) {\n // first check keyUsage extension and then basic constraints\n var bcExt = cert.getExtension('basicConstraints');\n var keyUsageExt = cert.getExtension('keyUsage');\n if(keyUsageExt !== null) {\n // keyCertSign must be true and there must be a basic\n // constraints extension\n if(!keyUsageExt.keyCertSign || bcExt === null) {\n // bad certificate\n error = {\n message:\n 'Certificate keyUsage or basicConstraints conflict ' +\n 'or indicate that the certificate is not a CA. ' +\n 'If the certificate is the only one in the chain or ' +\n 'isn\\'t the first then the certificate must be a ' +\n 'valid CA.',\n error: pki.certificateError.bad_certificate\n };\n }\n }\n // basic constraints cA flag must be set\n if(error === null && bcExt !== null && !bcExt.cA) {\n // bad certificate\n error = {\n message:\n 'Certificate basicConstraints indicates the certificate ' +\n 'is not a CA.',\n error: pki.certificateError.bad_certificate\n };\n }\n // if error is not null and keyUsage is available, then we know it\n // has keyCertSign and there is a basic constraints extension too,\n // which means we can check pathLenConstraint (if it exists)\n if(error === null && keyUsageExt !== null &&\n 'pathLenConstraint' in bcExt) {\n // pathLen is the maximum # of intermediate CA certs that can be\n // found between the current certificate and the end-entity (depth 0)\n // certificate; this number does not include the end-entity (depth 0,\n // last in the chain) even if it happens to be a CA certificate itself\n var pathLen = depth - 1;\n if(pathLen > bcExt.pathLenConstraint) {\n // pathLenConstraint violated, bad certificate\n error = {\n message:\n 'Certificate basicConstraints pathLenConstraint violated.',\n error: pki.certificateError.bad_certificate\n };\n }\n }\n }\n\n // call application callback\n var vfd = (error === null) ? true : error.error;\n var ret = options.verify ? options.verify(vfd, depth, certs) : vfd;\n if(ret === true) {\n // clear any set error\n error = null;\n } else {\n // if passed basic tests, set default message and alert\n if(vfd === true) {\n error = {\n message: 'The application rejected the certificate.',\n error: pki.certificateError.bad_certificate\n };\n }\n\n // check for custom error info\n if(ret || ret === 0) {\n // set custom message and error\n if(typeof ret === 'object' && !forge.util.isArray(ret)) {\n if(ret.message) {\n error.message = ret.message;\n }\n if(ret.error) {\n error.error = ret.error;\n }\n } else if(typeof ret === 'string') {\n // set custom error\n error.error = ret;\n }\n }\n\n // throw error\n throw error;\n }\n\n // no longer first cert in chain\n first = false;\n ++depth;\n } while(chain.length > 0);\n\n return true;\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nenum ContentShareConstants {\n Modality = '#content',\n}\n\nexport default ContentShareConstants;\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","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport Logger from '../logger/Logger';\nimport BackgroundFilterVideoFrameProcessorDelegate from './BackgroundFilterVideoFrameProcessorDelegate';\n\nconst FILTER_DURATION_FACTOR = 0.8;\n\n/**\n * The frame counter tracks frame rates of video and segmentation.\n */\n/** @internal */\nexport default class BackgroundFilterFrameCounter {\n private _processingFilter: boolean = true;\n\n private lastReportedEventTimestamp: number = 0;\n private lastFilterCompleteTimestamp: number = 0;\n private filterTotalMillis: number = 0;\n\n private filterCount: number = 0;\n private framerate: number = 0;\n private filterDurationNotifyMillis = 0;\n\n constructor(\n private delegate: BackgroundFilterVideoFrameProcessorDelegate,\n private reportingPeriodMillis: number,\n private filterCPUUtilization: number,\n private logger: Logger\n ) {\n this.setSegmentationDuration();\n }\n\n /**\n * Report events once per period.\n */\n private reportEvent(timestamp: number): void {\n const timeDiff = timestamp - this.lastReportedEventTimestamp;\n if (timeDiff >= this.reportingPeriodMillis) {\n const currentFilterCount = this.filterCount;\n const currentFilterTotalMillis = this.filterTotalMillis;\n\n this.filterCount = 0;\n this.filterTotalMillis = 0;\n this.lastReportedEventTimestamp = timestamp;\n\n // Do not send notification unless a valid framerate or segment count is set.\n if (this.framerate === 0 || currentFilterCount === 0) {\n return;\n }\n\n const avgFilterDurationMillis = Math.round(currentFilterTotalMillis / currentFilterCount);\n const framesDropped = Math.round(this.framerate * (timeDiff / 1000)) - currentFilterCount;\n const cpuUtilization = Math.round((100 * currentFilterTotalMillis) / timeDiff);\n\n if (avgFilterDurationMillis >= this.filterDurationNotifyMillis) {\n this.delegate.filterFrameDurationHigh({\n framesDropped,\n avgFilterDurationMillis,\n framerate: this.framerate,\n periodMillis: timeDiff,\n });\n }\n\n if (cpuUtilization >= this.filterCPUUtilization) {\n this.delegate.filterCPUUtilizationHigh({\n cpuUtilization,\n filterMillis: currentFilterTotalMillis,\n periodMillis: timeDiff,\n });\n }\n }\n }\n\n private setSegmentationDuration(): void {\n // allow filtering to take up to 80% of the expected frame duration\n this.filterDurationNotifyMillis = Math.round((1000 / this.framerate) * FILTER_DURATION_FACTOR);\n }\n\n frameReceived(framerate: number): void {\n if (framerate !== this.framerate) {\n this.framerate = framerate;\n this.logger.info(`frame counter setting frame rate to ${this.framerate}`);\n this.setSegmentationDuration();\n }\n const timestamp = Date.now();\n this.reportEvent(timestamp);\n }\n\n filterSubmitted(): void {\n this._processingFilter = true;\n this.lastFilterCompleteTimestamp = Date.now();\n }\n\n filterComplete(): void {\n this.filterTotalMillis += Date.now() - this.lastFilterCompleteTimestamp;\n this._processingFilter = false;\n this.filterCount++;\n }\n\n get processingSegment(): boolean {\n return this._processingFilter;\n }\n}\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['marketplacecatalog'] = {};\nAWS.MarketplaceCatalog = Service.defineService('marketplacecatalog', ['2018-09-17']);\nObject.defineProperty(apiLoader.services['marketplacecatalog'], '2018-09-17', {\n get: function get() {\n var model = require('../apis/marketplace-catalog-2018-09-17.min.json');\n model.paginators = require('../apis/marketplace-catalog-2018-09-17.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.MarketplaceCatalog;\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nexport enum CheckContentShareConnectivityFeedback {\n Succeeded,\n Failed,\n PermissionDenied,\n TimedOut,\n ConnectionFailed,\n}\n\nexport default CheckContentShareConnectivityFeedback;\n","'use strict';\n\n/** @type {import('./functionCall')} */\nmodule.exports = Function.prototype.call;\n","'use strict';\n\n/** @type {import('./functionApply')} */\nmodule.exports = Function.prototype.apply;\n","'use strict';\n// `SameValueZero` abstract operation\n// https://tc39.es/ecma262/#sec-samevaluezero\nmodule.exports = function (x, y) {\n // eslint-disable-next-line no-self-compare -- NaN check\n return x === y || x !== x && y !== y;\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport Logger from '../logger/Logger';\nimport LogLevel from '../logger/LogLevel';\nimport AsyncScheduler from '../scheduler/AsyncScheduler';\nimport Task from './Task';\n\n/**\n * A task that wraps another task and ensures it is run only once,\n * regardless of how many times `run` is called.\n *\n * This allows you to implement a kind of barrier synchronization.\n */\nexport default class OnceTask implements Task {\n // Our dependencies or the inner task.\n private ongoing: Promise | undefined;\n\n // The output promise, so that we can cancel.\n private promise: Promise | undefined;\n\n private cancelPromise: ((e: Error) => void) | undefined;\n\n // Whether we have canceled.\n private canceled = false;\n\n constructor(\n private logger: Logger,\n private task: Task,\n private dependencies?: (Task | undefined)[]\n ) {}\n\n name(): string {\n return `${this.task.name()} (once)`;\n }\n\n cancel(): void {\n // We want to preserve one interesting property: the deepest dependency that hasn't\n // already finished or been canceled is the first to be canceled, and its failure\n // will propagate back up the promise chain.\n //\n // We can't just cancel ourselves with cancelPromise -- we will cut off the rest of\n // the tree. Nor can we necessarily do it on the same event loop tick, because the\n // cancelation might be subtly async.\n //\n // Instead, we immediately cancel each dependency, and then we cancel the current\n // task (if it's running), and then we cancel via our promise escape hatch if needed.\n\n /* istanbul ignore if */\n if (this.canceled) {\n return;\n }\n\n if (this.dependencies) {\n for (const dep of this.dependencies) {\n dep.cancel();\n }\n }\n\n // Do this on the next tick so that our canceled dependencies cascade.\n this.logger.info(`Canceling ${this.name()}`);\n AsyncScheduler.nextTick(() => this.task.cancel());\n this.canceled = true;\n\n if (this.cancelPromise) {\n AsyncScheduler.nextTick(() => this.cancelPromise(new Error(`canceling ${this.name()}`)));\n }\n }\n\n logDependencies(): void {\n if (this.logger.getLogLevel() > LogLevel.INFO) {\n return;\n }\n if (!this.dependencies) {\n return;\n }\n const names = this.dependencies\n .filter(d => d)\n .map(d => d.name())\n .join(', ');\n this.logger.info(`${this.task.name()} waiting for dependencies: ${names}`);\n }\n\n run(): Promise {\n if (this.promise) {\n return this.promise;\n }\n\n const dependencies = this.dependencies\n ? Promise.all(this.dependencies.map(d => d?.run()))\n : Promise.resolve();\n\n this.logDependencies();\n\n this.ongoing = dependencies.then(() => this.task.run());\n\n return (this.promise = new Promise((resolve, reject) => {\n this.cancelPromise = reject;\n this.ongoing.then(resolve).catch(reject);\n }));\n }\n\n setParent(parentTask: Task): void {\n this.task.setParent(parentTask);\n }\n}\n","require('../polly/presigner');\n","module.exports = function isBuffer(arg) {\n return arg && typeof arg === 'object'\n && typeof arg.copy === 'function'\n && typeof arg.fill === 'function'\n && typeof arg.readUInt8 === 'function';\n}","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['costexplorer'] = {};\nAWS.CostExplorer = Service.defineService('costexplorer', ['2017-10-25']);\nObject.defineProperty(apiLoader.services['costexplorer'], '2017-10-25', {\n get: function get() {\n var model = require('../apis/ce-2017-10-25.min.json');\n model.paginators = require('../apis/ce-2017-10-25.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.CostExplorer;\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nexport default class DeviceSelection {\n constraints: MediaStreamConstraints;\n stream: MediaStream;\n groupId: string = '';\n\n endedCallback?: undefined | (() => void);\n trackMuteCallback?: undefined | (() => void);\n trackUnmuteCallback?: undefined | (() => void);\n\n matchesConstraints(constraints: MediaStreamConstraints): boolean {\n return JSON.stringify(this.constraints) === JSON.stringify(constraints);\n }\n}\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['efs'] = {};\nAWS.EFS = Service.defineService('efs', ['2015-02-01']);\nObject.defineProperty(apiLoader.services['efs'], '2015-02-01', {\n get: function get() {\n var model = require('../apis/elasticfilesystem-2015-02-01.min.json');\n model.paginators = require('../apis/elasticfilesystem-2015-02-01.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.EFS;\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport AudioProfile from '../audioprofile/AudioProfile';\nimport FullJitterBackoff from '../backoff/FullJitterBackoff';\nimport DefaultEventController from '../eventcontroller/DefaultEventController';\nimport NoOpDebugLogger from '../logger/NoOpDebugLogger';\nimport NoOpMediaStreamBroker from '../mediastreambroker/NoOpMediaStreamBroker';\nimport MeetingSessionConfiguration from '../meetingsession/MeetingSessionConfiguration';\nimport MeetingSessionCredentials from '../meetingsession/MeetingSessionCredentials';\nimport MeetingSessionStatus from '../meetingsession/MeetingSessionStatus';\nimport MeetingSessionStatusCode from '../meetingsession/MeetingSessionStatusCode';\nimport MeetingSessionURLs from '../meetingsession/MeetingSessionURLs';\nimport DefaultReconnectController from '../reconnectcontroller/DefaultReconnectController';\nimport DefaultWebSocketAdapter from '../websocketadapter/DefaultWebSocketAdapter';\nimport DefaultAudioVideoController from './DefaultAudioVideoController';\n\nexport default class NoOpAudioVideoController extends DefaultAudioVideoController {\n constructor(configuration?: MeetingSessionConfiguration) {\n const emptyConfiguration = new MeetingSessionConfiguration();\n emptyConfiguration.meetingId = '';\n emptyConfiguration.externalMeetingId = '';\n emptyConfiguration.credentials = new MeetingSessionCredentials();\n emptyConfiguration.credentials.attendeeId = '';\n emptyConfiguration.credentials.joinToken = '';\n emptyConfiguration.urls = new MeetingSessionURLs();\n emptyConfiguration.urls.turnControlURL = '';\n emptyConfiguration.urls.audioHostURL = '';\n emptyConfiguration.urls.signalingURL = 'wss://localhost/';\n const noOpLogger = new NoOpDebugLogger();\n super(\n configuration ? configuration : emptyConfiguration,\n noOpLogger,\n new DefaultWebSocketAdapter(new NoOpDebugLogger()),\n new NoOpMediaStreamBroker(),\n new DefaultReconnectController(0, new FullJitterBackoff(0, 0, 0)),\n new DefaultEventController(configuration ? configuration : emptyConfiguration, noOpLogger)\n );\n }\n\n setAudioProfile(_audioProfile: AudioProfile): void {}\n\n start(): void {}\n\n stop(): void {}\n\n promoteToPrimaryMeeting(_: MeetingSessionCredentials): Promise {\n return Promise.resolve(new MeetingSessionStatus(MeetingSessionStatusCode.OK));\n }\n\n demoteFromPrimaryMeeting(): void {}\n}\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nconst adler32 = require('./adler32');\nconst crc32 = require('./crc32');\nconst inflate_fast = require('./inffast');\nconst inflate_table = require('./inftrees');\n\nconst CODES = 0;\nconst LENS = 1;\nconst DISTS = 2;\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\nconst {\n Z_FINISH, Z_BLOCK, Z_TREES,\n Z_OK, Z_STREAM_END, Z_NEED_DICT, Z_STREAM_ERROR, Z_DATA_ERROR, Z_MEM_ERROR, Z_BUF_ERROR,\n Z_DEFLATED\n} = require('./constants');\n\n\n/* STATES ====================================================================*/\n/* ===========================================================================*/\n\n\nconst HEAD = 16180; /* i: waiting for magic header */\nconst FLAGS = 16181; /* i: waiting for method and flags (gzip) */\nconst TIME = 16182; /* i: waiting for modification time (gzip) */\nconst OS = 16183; /* i: waiting for extra flags and operating system (gzip) */\nconst EXLEN = 16184; /* i: waiting for extra length (gzip) */\nconst EXTRA = 16185; /* i: waiting for extra bytes (gzip) */\nconst NAME = 16186; /* i: waiting for end of file name (gzip) */\nconst COMMENT = 16187; /* i: waiting for end of comment (gzip) */\nconst HCRC = 16188; /* i: waiting for header crc (gzip) */\nconst DICTID = 16189; /* i: waiting for dictionary check value */\nconst DICT = 16190; /* waiting for inflateSetDictionary() call */\nconst TYPE = 16191; /* i: waiting for type bits, including last-flag bit */\nconst TYPEDO = 16192; /* i: same, but skip check to exit inflate on new block */\nconst STORED = 16193; /* i: waiting for stored size (length and complement) */\nconst COPY_ = 16194; /* i/o: same as COPY below, but only first time in */\nconst COPY = 16195; /* i/o: waiting for input or output to copy stored block */\nconst TABLE = 16196; /* i: waiting for dynamic block table lengths */\nconst LENLENS = 16197; /* i: waiting for code length code lengths */\nconst CODELENS = 16198; /* i: waiting for length/lit and distance code lengths */\nconst LEN_ = 16199; /* i: same as LEN below, but only first time in */\nconst LEN = 16200; /* i: waiting for length/lit/eob code */\nconst LENEXT = 16201; /* i: waiting for length extra bits */\nconst DIST = 16202; /* i: waiting for distance code */\nconst DISTEXT = 16203; /* i: waiting for distance extra bits */\nconst MATCH = 16204; /* o: waiting for output space to copy string */\nconst LIT = 16205; /* o: waiting for output space to write literal */\nconst CHECK = 16206; /* i: waiting for 32-bit check value */\nconst LENGTH = 16207; /* i: waiting for 32-bit length (gzip) */\nconst DONE = 16208; /* finished check, done -- remain here until reset */\nconst BAD = 16209; /* got a data error -- remain here until reset */\nconst MEM = 16210; /* got an inflate() memory error -- remain here until reset */\nconst SYNC = 16211; /* looking for synchronization bytes to restart inflate() */\n\n/* ===========================================================================*/\n\n\n\nconst ENOUGH_LENS = 852;\nconst ENOUGH_DISTS = 592;\n//const ENOUGH = (ENOUGH_LENS+ENOUGH_DISTS);\n\nconst MAX_WBITS = 15;\n/* 32K LZ77 window */\nconst DEF_WBITS = MAX_WBITS;\n\n\nconst zswap32 = (q) => {\n\n return (((q >>> 24) & 0xff) +\n ((q >>> 8) & 0xff00) +\n ((q & 0xff00) << 8) +\n ((q & 0xff) << 24));\n};\n\n\nfunction InflateState() {\n this.strm = null; /* pointer back to this zlib stream */\n this.mode = 0; /* current inflate mode */\n this.last = false; /* true if processing last block */\n this.wrap = 0; /* bit 0 true for zlib, bit 1 true for gzip,\n bit 2 true to validate check value */\n this.havedict = false; /* true if dictionary provided */\n this.flags = 0; /* gzip header method and flags (0 if zlib), or\n -1 if raw or no header yet */\n this.dmax = 0; /* zlib header max distance (INFLATE_STRICT) */\n this.check = 0; /* protected copy of check value */\n this.total = 0; /* protected copy of output count */\n // TODO: may be {}\n this.head = null; /* where to save gzip header information */\n\n /* sliding window */\n this.wbits = 0; /* log base 2 of requested window size */\n this.wsize = 0; /* window size or zero if not using window */\n this.whave = 0; /* valid bytes in the window */\n this.wnext = 0; /* window write index */\n this.window = null; /* allocated sliding window, if needed */\n\n /* bit accumulator */\n this.hold = 0; /* input bit accumulator */\n this.bits = 0; /* number of bits in \"in\" */\n\n /* for string and stored block copying */\n this.length = 0; /* literal or length of data to copy */\n this.offset = 0; /* distance back to copy string from */\n\n /* for table and code decoding */\n this.extra = 0; /* extra bits needed */\n\n /* fixed and dynamic code tables */\n this.lencode = null; /* starting table for length/literal codes */\n this.distcode = null; /* starting table for distance codes */\n this.lenbits = 0; /* index bits for lencode */\n this.distbits = 0; /* index bits for distcode */\n\n /* dynamic table building */\n this.ncode = 0; /* number of code length code lengths */\n this.nlen = 0; /* number of length code lengths */\n this.ndist = 0; /* number of distance code lengths */\n this.have = 0; /* number of code lengths in lens[] */\n this.next = null; /* next available space in codes[] */\n\n this.lens = new Uint16Array(320); /* temporary storage for code lengths */\n this.work = new Uint16Array(288); /* work area for code table building */\n\n /*\n because we don't have pointers in js, we use lencode and distcode directly\n as buffers so we don't need codes\n */\n //this.codes = new Int32Array(ENOUGH); /* space for code tables */\n this.lendyn = null; /* dynamic table for length/literal codes (JS specific) */\n this.distdyn = null; /* dynamic table for distance codes (JS specific) */\n this.sane = 0; /* if false, allow invalid distance too far */\n this.back = 0; /* bits back of last unprocessed length/lit */\n this.was = 0; /* initial length of match */\n}\n\n\nconst inflateStateCheck = (strm) => {\n\n if (!strm) {\n return 1;\n }\n const state = strm.state;\n if (!state || state.strm !== strm ||\n state.mode < HEAD || state.mode > SYNC) {\n return 1;\n }\n return 0;\n};\n\n\nconst inflateResetKeep = (strm) => {\n\n if (inflateStateCheck(strm)) { return Z_STREAM_ERROR; }\n const state = strm.state;\n strm.total_in = strm.total_out = state.total = 0;\n strm.msg = ''; /*Z_NULL*/\n if (state.wrap) { /* to support ill-conceived Java test suite */\n strm.adler = state.wrap & 1;\n }\n state.mode = HEAD;\n state.last = 0;\n state.havedict = 0;\n state.flags = -1;\n state.dmax = 32768;\n state.head = null/*Z_NULL*/;\n state.hold = 0;\n state.bits = 0;\n //state.lencode = state.distcode = state.next = state.codes;\n state.lencode = state.lendyn = new Int32Array(ENOUGH_LENS);\n state.distcode = state.distdyn = new Int32Array(ENOUGH_DISTS);\n\n state.sane = 1;\n state.back = -1;\n //Tracev((stderr, \"inflate: reset\\n\"));\n return Z_OK;\n};\n\n\nconst inflateReset = (strm) => {\n\n if (inflateStateCheck(strm)) { return Z_STREAM_ERROR; }\n const state = strm.state;\n state.wsize = 0;\n state.whave = 0;\n state.wnext = 0;\n return inflateResetKeep(strm);\n\n};\n\n\nconst inflateReset2 = (strm, windowBits) => {\n let wrap;\n\n /* get the state */\n if (inflateStateCheck(strm)) { return Z_STREAM_ERROR; }\n const state = strm.state;\n\n /* extract wrap request from windowBits parameter */\n if (windowBits < 0) {\n wrap = 0;\n windowBits = -windowBits;\n }\n else {\n wrap = (windowBits >> 4) + 5;\n if (windowBits < 48) {\n windowBits &= 15;\n }\n }\n\n /* set number of window bits, free window if different */\n if (windowBits && (windowBits < 8 || windowBits > 15)) {\n return Z_STREAM_ERROR;\n }\n if (state.window !== null && state.wbits !== windowBits) {\n state.window = null;\n }\n\n /* update state and reset the rest of it */\n state.wrap = wrap;\n state.wbits = windowBits;\n return inflateReset(strm);\n};\n\n\nconst inflateInit2 = (strm, windowBits) => {\n\n if (!strm) { return Z_STREAM_ERROR; }\n //strm.msg = Z_NULL; /* in case we return an error */\n\n const state = new InflateState();\n\n //if (state === Z_NULL) return Z_MEM_ERROR;\n //Tracev((stderr, \"inflate: allocated\\n\"));\n strm.state = state;\n state.strm = strm;\n state.window = null/*Z_NULL*/;\n state.mode = HEAD; /* to pass state test in inflateReset2() */\n const ret = inflateReset2(strm, windowBits);\n if (ret !== Z_OK) {\n strm.state = null/*Z_NULL*/;\n }\n return ret;\n};\n\n\nconst inflateInit = (strm) => {\n\n return inflateInit2(strm, DEF_WBITS);\n};\n\n\n/*\n Return state with length and distance decoding tables and index sizes set to\n fixed code decoding. Normally this returns fixed tables from inffixed.h.\n If BUILDFIXED is defined, then instead this routine builds the tables the\n first time it's called, and returns those tables the first time and\n thereafter. This reduces the size of the code by about 2K bytes, in\n exchange for a little execution time. However, BUILDFIXED should not be\n used for threaded applications, since the rewriting of the tables and virgin\n may not be thread-safe.\n */\nlet virgin = true;\n\nlet lenfix, distfix; // We have no pointers in JS, so keep tables separate\n\n\nconst fixedtables = (state) => {\n\n /* build fixed huffman tables if first call (may not be thread safe) */\n if (virgin) {\n lenfix = new Int32Array(512);\n distfix = new Int32Array(32);\n\n /* literal/length table */\n let sym = 0;\n while (sym < 144) { state.lens[sym++] = 8; }\n while (sym < 256) { state.lens[sym++] = 9; }\n while (sym < 280) { state.lens[sym++] = 7; }\n while (sym < 288) { state.lens[sym++] = 8; }\n\n inflate_table(LENS, state.lens, 0, 288, lenfix, 0, state.work, { bits: 9 });\n\n /* distance table */\n sym = 0;\n while (sym < 32) { state.lens[sym++] = 5; }\n\n inflate_table(DISTS, state.lens, 0, 32, distfix, 0, state.work, { bits: 5 });\n\n /* do this just once */\n virgin = false;\n }\n\n state.lencode = lenfix;\n state.lenbits = 9;\n state.distcode = distfix;\n state.distbits = 5;\n};\n\n\n/*\n Update the window with the last wsize (normally 32K) bytes written before\n returning. If window does not exist yet, create it. This is only called\n when a window is already in use, or when output has been written during this\n inflate call, but the end of the deflate stream has not been reached yet.\n It is also called to create a window for dictionary data when a dictionary\n is loaded.\n\n Providing output buffers larger than 32K to inflate() should provide a speed\n advantage, since only the last 32K of output is copied to the sliding window\n upon return from inflate(), and since all distances after the first 32K of\n output will fall in the output data, making match copies simpler and faster.\n The advantage may be dependent on the size of the processor's data caches.\n */\nconst updatewindow = (strm, src, end, copy) => {\n\n let dist;\n const state = strm.state;\n\n /* if it hasn't been done already, allocate space for the window */\n if (state.window === null) {\n state.wsize = 1 << state.wbits;\n state.wnext = 0;\n state.whave = 0;\n\n state.window = new Uint8Array(state.wsize);\n }\n\n /* copy state->wsize or less output bytes into the circular window */\n if (copy >= state.wsize) {\n state.window.set(src.subarray(end - state.wsize, end), 0);\n state.wnext = 0;\n state.whave = state.wsize;\n }\n else {\n dist = state.wsize - state.wnext;\n if (dist > copy) {\n dist = copy;\n }\n //zmemcpy(state->window + state->wnext, end - copy, dist);\n state.window.set(src.subarray(end - copy, end - copy + dist), state.wnext);\n copy -= dist;\n if (copy) {\n //zmemcpy(state->window, end - copy, copy);\n state.window.set(src.subarray(end - copy, end), 0);\n state.wnext = copy;\n state.whave = state.wsize;\n }\n else {\n state.wnext += dist;\n if (state.wnext === state.wsize) { state.wnext = 0; }\n if (state.whave < state.wsize) { state.whave += dist; }\n }\n }\n return 0;\n};\n\n\nconst inflate = (strm, flush) => {\n\n let state;\n let input, output; // input/output buffers\n let next; /* next input INDEX */\n let put; /* next output INDEX */\n let have, left; /* available input and output */\n let hold; /* bit buffer */\n let bits; /* bits in bit buffer */\n let _in, _out; /* save starting available input and output */\n let copy; /* number of stored or match bytes to copy */\n let from; /* where to copy match bytes from */\n let from_source;\n let here = 0; /* current decoding table entry */\n let here_bits, here_op, here_val; // paked \"here\" denormalized (JS specific)\n //let last; /* parent table entry */\n let last_bits, last_op, last_val; // paked \"last\" denormalized (JS specific)\n let len; /* length to copy for repeats, bits to drop */\n let ret; /* return code */\n const hbuf = new Uint8Array(4); /* buffer for gzip header crc calculation */\n let opts;\n\n let n; // temporary variable for NEED_BITS\n\n const order = /* permutation of code lengths */\n new Uint8Array([ 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 ]);\n\n\n if (inflateStateCheck(strm) || !strm.output ||\n (!strm.input && strm.avail_in !== 0)) {\n return Z_STREAM_ERROR;\n }\n\n state = strm.state;\n if (state.mode === TYPE) { state.mode = TYPEDO; } /* skip check */\n\n\n //--- LOAD() ---\n put = strm.next_out;\n output = strm.output;\n left = strm.avail_out;\n next = strm.next_in;\n input = strm.input;\n have = strm.avail_in;\n hold = state.hold;\n bits = state.bits;\n //---\n\n _in = have;\n _out = left;\n ret = Z_OK;\n\n inf_leave: // goto emulation\n for (;;) {\n switch (state.mode) {\n case HEAD:\n if (state.wrap === 0) {\n state.mode = TYPEDO;\n break;\n }\n //=== NEEDBITS(16);\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if ((state.wrap & 2) && hold === 0x8b1f) { /* gzip header */\n if (state.wbits === 0) {\n state.wbits = 15;\n }\n state.check = 0/*crc32(0L, Z_NULL, 0)*/;\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32(state.check, hbuf, 2, 0);\n //===//\n\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = FLAGS;\n break;\n }\n if (state.head) {\n state.head.done = false;\n }\n if (!(state.wrap & 1) || /* check if zlib header allowed */\n (((hold & 0xff)/*BITS(8)*/ << 8) + (hold >> 8)) % 31) {\n strm.msg = 'incorrect header check';\n state.mode = BAD;\n break;\n }\n if ((hold & 0x0f)/*BITS(4)*/ !== Z_DEFLATED) {\n strm.msg = 'unknown compression method';\n state.mode = BAD;\n break;\n }\n //--- DROPBITS(4) ---//\n hold >>>= 4;\n bits -= 4;\n //---//\n len = (hold & 0x0f)/*BITS(4)*/ + 8;\n if (state.wbits === 0) {\n state.wbits = len;\n }\n if (len > 15 || len > state.wbits) {\n strm.msg = 'invalid window size';\n state.mode = BAD;\n break;\n }\n\n // !!! pako patch. Force use `options.windowBits` if passed.\n // Required to always use max window size by default.\n state.dmax = 1 << state.wbits;\n //state.dmax = 1 << len;\n\n state.flags = 0; /* indicate zlib header */\n //Tracev((stderr, \"inflate: zlib header ok\\n\"));\n strm.adler = state.check = 1/*adler32(0L, Z_NULL, 0)*/;\n state.mode = hold & 0x200 ? DICTID : TYPE;\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n break;\n case FLAGS:\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.flags = hold;\n if ((state.flags & 0xff) !== Z_DEFLATED) {\n strm.msg = 'unknown compression method';\n state.mode = BAD;\n break;\n }\n if (state.flags & 0xe000) {\n strm.msg = 'unknown header flags set';\n state.mode = BAD;\n break;\n }\n if (state.head) {\n state.head.text = ((hold >> 8) & 1);\n }\n if ((state.flags & 0x0200) && (state.wrap & 4)) {\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32(state.check, hbuf, 2, 0);\n //===//\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = TIME;\n /* falls through */\n case TIME:\n //=== NEEDBITS(32); */\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (state.head) {\n state.head.time = hold;\n }\n if ((state.flags & 0x0200) && (state.wrap & 4)) {\n //=== CRC4(state.check, hold)\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n hbuf[2] = (hold >>> 16) & 0xff;\n hbuf[3] = (hold >>> 24) & 0xff;\n state.check = crc32(state.check, hbuf, 4, 0);\n //===\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = OS;\n /* falls through */\n case OS:\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (state.head) {\n state.head.xflags = (hold & 0xff);\n state.head.os = (hold >> 8);\n }\n if ((state.flags & 0x0200) && (state.wrap & 4)) {\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32(state.check, hbuf, 2, 0);\n //===//\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = EXLEN;\n /* falls through */\n case EXLEN:\n if (state.flags & 0x0400) {\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.length = hold;\n if (state.head) {\n state.head.extra_len = hold;\n }\n if ((state.flags & 0x0200) && (state.wrap & 4)) {\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32(state.check, hbuf, 2, 0);\n //===//\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n }\n else if (state.head) {\n state.head.extra = null/*Z_NULL*/;\n }\n state.mode = EXTRA;\n /* falls through */\n case EXTRA:\n if (state.flags & 0x0400) {\n copy = state.length;\n if (copy > have) { copy = have; }\n if (copy) {\n if (state.head) {\n len = state.head.extra_len - state.length;\n if (!state.head.extra) {\n // Use untyped array for more convenient processing later\n state.head.extra = new Uint8Array(state.head.extra_len);\n }\n state.head.extra.set(\n input.subarray(\n next,\n // extra field is limited to 65536 bytes\n // - no need for additional size check\n next + copy\n ),\n /*len + copy > state.head.extra_max - len ? state.head.extra_max : copy,*/\n len\n );\n //zmemcpy(state.head.extra + len, next,\n // len + copy > state.head.extra_max ?\n // state.head.extra_max - len : copy);\n }\n if ((state.flags & 0x0200) && (state.wrap & 4)) {\n state.check = crc32(state.check, input, copy, next);\n }\n have -= copy;\n next += copy;\n state.length -= copy;\n }\n if (state.length) { break inf_leave; }\n }\n state.length = 0;\n state.mode = NAME;\n /* falls through */\n case NAME:\n if (state.flags & 0x0800) {\n if (have === 0) { break inf_leave; }\n copy = 0;\n do {\n // TODO: 2 or 1 bytes?\n len = input[next + copy++];\n /* use constant limit because in js we should not preallocate memory */\n if (state.head && len &&\n (state.length < 65536 /*state.head.name_max*/)) {\n state.head.name += String.fromCharCode(len);\n }\n } while (len && copy < have);\n\n if ((state.flags & 0x0200) && (state.wrap & 4)) {\n state.check = crc32(state.check, input, copy, next);\n }\n have -= copy;\n next += copy;\n if (len) { break inf_leave; }\n }\n else if (state.head) {\n state.head.name = null;\n }\n state.length = 0;\n state.mode = COMMENT;\n /* falls through */\n case COMMENT:\n if (state.flags & 0x1000) {\n if (have === 0) { break inf_leave; }\n copy = 0;\n do {\n len = input[next + copy++];\n /* use constant limit because in js we should not preallocate memory */\n if (state.head && len &&\n (state.length < 65536 /*state.head.comm_max*/)) {\n state.head.comment += String.fromCharCode(len);\n }\n } while (len && copy < have);\n if ((state.flags & 0x0200) && (state.wrap & 4)) {\n state.check = crc32(state.check, input, copy, next);\n }\n have -= copy;\n next += copy;\n if (len) { break inf_leave; }\n }\n else if (state.head) {\n state.head.comment = null;\n }\n state.mode = HCRC;\n /* falls through */\n case HCRC:\n if (state.flags & 0x0200) {\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if ((state.wrap & 4) && hold !== (state.check & 0xffff)) {\n strm.msg = 'header crc mismatch';\n state.mode = BAD;\n break;\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n }\n if (state.head) {\n state.head.hcrc = ((state.flags >> 9) & 1);\n state.head.done = true;\n }\n strm.adler = state.check = 0;\n state.mode = TYPE;\n break;\n case DICTID:\n //=== NEEDBITS(32); */\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n strm.adler = state.check = zswap32(hold);\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = DICT;\n /* falls through */\n case DICT:\n if (state.havedict === 0) {\n //--- RESTORE() ---\n strm.next_out = put;\n strm.avail_out = left;\n strm.next_in = next;\n strm.avail_in = have;\n state.hold = hold;\n state.bits = bits;\n //---\n return Z_NEED_DICT;\n }\n strm.adler = state.check = 1/*adler32(0L, Z_NULL, 0)*/;\n state.mode = TYPE;\n /* falls through */\n case TYPE:\n if (flush === Z_BLOCK || flush === Z_TREES) { break inf_leave; }\n /* falls through */\n case TYPEDO:\n if (state.last) {\n //--- BYTEBITS() ---//\n hold >>>= bits & 7;\n bits -= bits & 7;\n //---//\n state.mode = CHECK;\n break;\n }\n //=== NEEDBITS(3); */\n while (bits < 3) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.last = (hold & 0x01)/*BITS(1)*/;\n //--- DROPBITS(1) ---//\n hold >>>= 1;\n bits -= 1;\n //---//\n\n switch ((hold & 0x03)/*BITS(2)*/) {\n case 0: /* stored block */\n //Tracev((stderr, \"inflate: stored block%s\\n\",\n // state.last ? \" (last)\" : \"\"));\n state.mode = STORED;\n break;\n case 1: /* fixed block */\n fixedtables(state);\n //Tracev((stderr, \"inflate: fixed codes block%s\\n\",\n // state.last ? \" (last)\" : \"\"));\n state.mode = LEN_; /* decode codes */\n if (flush === Z_TREES) {\n //--- DROPBITS(2) ---//\n hold >>>= 2;\n bits -= 2;\n //---//\n break inf_leave;\n }\n break;\n case 2: /* dynamic block */\n //Tracev((stderr, \"inflate: dynamic codes block%s\\n\",\n // state.last ? \" (last)\" : \"\"));\n state.mode = TABLE;\n break;\n case 3:\n strm.msg = 'invalid block type';\n state.mode = BAD;\n }\n //--- DROPBITS(2) ---//\n hold >>>= 2;\n bits -= 2;\n //---//\n break;\n case STORED:\n //--- BYTEBITS() ---// /* go to byte boundary */\n hold >>>= bits & 7;\n bits -= bits & 7;\n //---//\n //=== NEEDBITS(32); */\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if ((hold & 0xffff) !== ((hold >>> 16) ^ 0xffff)) {\n strm.msg = 'invalid stored block lengths';\n state.mode = BAD;\n break;\n }\n state.length = hold & 0xffff;\n //Tracev((stderr, \"inflate: stored length %u\\n\",\n // state.length));\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = COPY_;\n if (flush === Z_TREES) { break inf_leave; }\n /* falls through */\n case COPY_:\n state.mode = COPY;\n /* falls through */\n case COPY:\n copy = state.length;\n if (copy) {\n if (copy > have) { copy = have; }\n if (copy > left) { copy = left; }\n if (copy === 0) { break inf_leave; }\n //--- zmemcpy(put, next, copy); ---\n output.set(input.subarray(next, next + copy), put);\n //---//\n have -= copy;\n next += copy;\n left -= copy;\n put += copy;\n state.length -= copy;\n break;\n }\n //Tracev((stderr, \"inflate: stored end\\n\"));\n state.mode = TYPE;\n break;\n case TABLE:\n //=== NEEDBITS(14); */\n while (bits < 14) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.nlen = (hold & 0x1f)/*BITS(5)*/ + 257;\n //--- DROPBITS(5) ---//\n hold >>>= 5;\n bits -= 5;\n //---//\n state.ndist = (hold & 0x1f)/*BITS(5)*/ + 1;\n //--- DROPBITS(5) ---//\n hold >>>= 5;\n bits -= 5;\n //---//\n state.ncode = (hold & 0x0f)/*BITS(4)*/ + 4;\n //--- DROPBITS(4) ---//\n hold >>>= 4;\n bits -= 4;\n //---//\n//#ifndef PKZIP_BUG_WORKAROUND\n if (state.nlen > 286 || state.ndist > 30) {\n strm.msg = 'too many length or distance symbols';\n state.mode = BAD;\n break;\n }\n//#endif\n //Tracev((stderr, \"inflate: table sizes ok\\n\"));\n state.have = 0;\n state.mode = LENLENS;\n /* falls through */\n case LENLENS:\n while (state.have < state.ncode) {\n //=== NEEDBITS(3);\n while (bits < 3) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.lens[order[state.have++]] = (hold & 0x07);//BITS(3);\n //--- DROPBITS(3) ---//\n hold >>>= 3;\n bits -= 3;\n //---//\n }\n while (state.have < 19) {\n state.lens[order[state.have++]] = 0;\n }\n // We have separate tables & no pointers. 2 commented lines below not needed.\n //state.next = state.codes;\n //state.lencode = state.next;\n // Switch to use dynamic table\n state.lencode = state.lendyn;\n state.lenbits = 7;\n\n opts = { bits: state.lenbits };\n ret = inflate_table(CODES, state.lens, 0, 19, state.lencode, 0, state.work, opts);\n state.lenbits = opts.bits;\n\n if (ret) {\n strm.msg = 'invalid code lengths set';\n state.mode = BAD;\n break;\n }\n //Tracev((stderr, \"inflate: code lengths ok\\n\"));\n state.have = 0;\n state.mode = CODELENS;\n /* falls through */\n case CODELENS:\n while (state.have < state.nlen + state.ndist) {\n for (;;) {\n here = state.lencode[hold & ((1 << state.lenbits) - 1)];/*BITS(state.lenbits)*/\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n if (here_val < 16) {\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n state.lens[state.have++] = here_val;\n }\n else {\n if (here_val === 16) {\n //=== NEEDBITS(here.bits + 2);\n n = here_bits + 2;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n if (state.have === 0) {\n strm.msg = 'invalid bit length repeat';\n state.mode = BAD;\n break;\n }\n len = state.lens[state.have - 1];\n copy = 3 + (hold & 0x03);//BITS(2);\n //--- DROPBITS(2) ---//\n hold >>>= 2;\n bits -= 2;\n //---//\n }\n else if (here_val === 17) {\n //=== NEEDBITS(here.bits + 3);\n n = here_bits + 3;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n len = 0;\n copy = 3 + (hold & 0x07);//BITS(3);\n //--- DROPBITS(3) ---//\n hold >>>= 3;\n bits -= 3;\n //---//\n }\n else {\n //=== NEEDBITS(here.bits + 7);\n n = here_bits + 7;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n len = 0;\n copy = 11 + (hold & 0x7f);//BITS(7);\n //--- DROPBITS(7) ---//\n hold >>>= 7;\n bits -= 7;\n //---//\n }\n if (state.have + copy > state.nlen + state.ndist) {\n strm.msg = 'invalid bit length repeat';\n state.mode = BAD;\n break;\n }\n while (copy--) {\n state.lens[state.have++] = len;\n }\n }\n }\n\n /* handle error breaks in while */\n if (state.mode === BAD) { break; }\n\n /* check for end-of-block code (better have one) */\n if (state.lens[256] === 0) {\n strm.msg = 'invalid code -- missing end-of-block';\n state.mode = BAD;\n break;\n }\n\n /* build code tables -- note: do not change the lenbits or distbits\n values here (9 and 6) without reading the comments in inftrees.h\n concerning the ENOUGH constants, which depend on those values */\n state.lenbits = 9;\n\n opts = { bits: state.lenbits };\n ret = inflate_table(LENS, state.lens, 0, state.nlen, state.lencode, 0, state.work, opts);\n // We have separate tables & no pointers. 2 commented lines below not needed.\n // state.next_index = opts.table_index;\n state.lenbits = opts.bits;\n // state.lencode = state.next;\n\n if (ret) {\n strm.msg = 'invalid literal/lengths set';\n state.mode = BAD;\n break;\n }\n\n state.distbits = 6;\n //state.distcode.copy(state.codes);\n // Switch to use dynamic table\n state.distcode = state.distdyn;\n opts = { bits: state.distbits };\n ret = inflate_table(DISTS, state.lens, state.nlen, state.ndist, state.distcode, 0, state.work, opts);\n // We have separate tables & no pointers. 2 commented lines below not needed.\n // state.next_index = opts.table_index;\n state.distbits = opts.bits;\n // state.distcode = state.next;\n\n if (ret) {\n strm.msg = 'invalid distances set';\n state.mode = BAD;\n break;\n }\n //Tracev((stderr, 'inflate: codes ok\\n'));\n state.mode = LEN_;\n if (flush === Z_TREES) { break inf_leave; }\n /* falls through */\n case LEN_:\n state.mode = LEN;\n /* falls through */\n case LEN:\n if (have >= 6 && left >= 258) {\n //--- RESTORE() ---\n strm.next_out = put;\n strm.avail_out = left;\n strm.next_in = next;\n strm.avail_in = have;\n state.hold = hold;\n state.bits = bits;\n //---\n inflate_fast(strm, _out);\n //--- LOAD() ---\n put = strm.next_out;\n output = strm.output;\n left = strm.avail_out;\n next = strm.next_in;\n input = strm.input;\n have = strm.avail_in;\n hold = state.hold;\n bits = state.bits;\n //---\n\n if (state.mode === TYPE) {\n state.back = -1;\n }\n break;\n }\n state.back = 0;\n for (;;) {\n here = state.lencode[hold & ((1 << state.lenbits) - 1)]; /*BITS(state.lenbits)*/\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if (here_bits <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n if (here_op && (here_op & 0xf0) === 0) {\n last_bits = here_bits;\n last_op = here_op;\n last_val = here_val;\n for (;;) {\n here = state.lencode[last_val +\n ((hold & ((1 << (last_bits + last_op)) - 1))/*BITS(last.bits + last.op)*/ >> last_bits)];\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((last_bits + here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n //--- DROPBITS(last.bits) ---//\n hold >>>= last_bits;\n bits -= last_bits;\n //---//\n state.back += last_bits;\n }\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n state.back += here_bits;\n state.length = here_val;\n if (here_op === 0) {\n //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?\n // \"inflate: literal '%c'\\n\" :\n // \"inflate: literal 0x%02x\\n\", here.val));\n state.mode = LIT;\n break;\n }\n if (here_op & 32) {\n //Tracevv((stderr, \"inflate: end of block\\n\"));\n state.back = -1;\n state.mode = TYPE;\n break;\n }\n if (here_op & 64) {\n strm.msg = 'invalid literal/length code';\n state.mode = BAD;\n break;\n }\n state.extra = here_op & 15;\n state.mode = LENEXT;\n /* falls through */\n case LENEXT:\n if (state.extra) {\n //=== NEEDBITS(state.extra);\n n = state.extra;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.length += hold & ((1 << state.extra) - 1)/*BITS(state.extra)*/;\n //--- DROPBITS(state.extra) ---//\n hold >>>= state.extra;\n bits -= state.extra;\n //---//\n state.back += state.extra;\n }\n //Tracevv((stderr, \"inflate: length %u\\n\", state.length));\n state.was = state.length;\n state.mode = DIST;\n /* falls through */\n case DIST:\n for (;;) {\n here = state.distcode[hold & ((1 << state.distbits) - 1)];/*BITS(state.distbits)*/\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n if ((here_op & 0xf0) === 0) {\n last_bits = here_bits;\n last_op = here_op;\n last_val = here_val;\n for (;;) {\n here = state.distcode[last_val +\n ((hold & ((1 << (last_bits + last_op)) - 1))/*BITS(last.bits + last.op)*/ >> last_bits)];\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((last_bits + here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n //--- DROPBITS(last.bits) ---//\n hold >>>= last_bits;\n bits -= last_bits;\n //---//\n state.back += last_bits;\n }\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n state.back += here_bits;\n if (here_op & 64) {\n strm.msg = 'invalid distance code';\n state.mode = BAD;\n break;\n }\n state.offset = here_val;\n state.extra = (here_op) & 15;\n state.mode = DISTEXT;\n /* falls through */\n case DISTEXT:\n if (state.extra) {\n //=== NEEDBITS(state.extra);\n n = state.extra;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.offset += hold & ((1 << state.extra) - 1)/*BITS(state.extra)*/;\n //--- DROPBITS(state.extra) ---//\n hold >>>= state.extra;\n bits -= state.extra;\n //---//\n state.back += state.extra;\n }\n//#ifdef INFLATE_STRICT\n if (state.offset > state.dmax) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD;\n break;\n }\n//#endif\n //Tracevv((stderr, \"inflate: distance %u\\n\", state.offset));\n state.mode = MATCH;\n /* falls through */\n case MATCH:\n if (left === 0) { break inf_leave; }\n copy = _out - left;\n if (state.offset > copy) { /* copy from window */\n copy = state.offset - copy;\n if (copy > state.whave) {\n if (state.sane) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD;\n break;\n }\n// (!) This block is disabled in zlib defaults,\n// don't enable it for binary compatibility\n//#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR\n// Trace((stderr, \"inflate.c too far\\n\"));\n// copy -= state.whave;\n// if (copy > state.length) { copy = state.length; }\n// if (copy > left) { copy = left; }\n// left -= copy;\n// state.length -= copy;\n// do {\n// output[put++] = 0;\n// } while (--copy);\n// if (state.length === 0) { state.mode = LEN; }\n// break;\n//#endif\n }\n if (copy > state.wnext) {\n copy -= state.wnext;\n from = state.wsize - copy;\n }\n else {\n from = state.wnext - copy;\n }\n if (copy > state.length) { copy = state.length; }\n from_source = state.window;\n }\n else { /* copy from output */\n from_source = output;\n from = put - state.offset;\n copy = state.length;\n }\n if (copy > left) { copy = left; }\n left -= copy;\n state.length -= copy;\n do {\n output[put++] = from_source[from++];\n } while (--copy);\n if (state.length === 0) { state.mode = LEN; }\n break;\n case LIT:\n if (left === 0) { break inf_leave; }\n output[put++] = state.length;\n left--;\n state.mode = LEN;\n break;\n case CHECK:\n if (state.wrap) {\n //=== NEEDBITS(32);\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n // Use '|' instead of '+' to make sure that result is signed\n hold |= input[next++] << bits;\n bits += 8;\n }\n //===//\n _out -= left;\n strm.total_out += _out;\n state.total += _out;\n if ((state.wrap & 4) && _out) {\n strm.adler = state.check =\n /*UPDATE_CHECK(state.check, put - _out, _out);*/\n (state.flags ? crc32(state.check, output, _out, put - _out) : adler32(state.check, output, _out, put - _out));\n\n }\n _out = left;\n // NB: crc32 stored as signed 32-bit int, zswap32 returns signed too\n if ((state.wrap & 4) && (state.flags ? hold : zswap32(hold)) !== state.check) {\n strm.msg = 'incorrect data check';\n state.mode = BAD;\n break;\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n //Tracev((stderr, \"inflate: check matches trailer\\n\"));\n }\n state.mode = LENGTH;\n /* falls through */\n case LENGTH:\n if (state.wrap && state.flags) {\n //=== NEEDBITS(32);\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if ((state.wrap & 4) && hold !== (state.total & 0xffffffff)) {\n strm.msg = 'incorrect length check';\n state.mode = BAD;\n break;\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n //Tracev((stderr, \"inflate: length matches trailer\\n\"));\n }\n state.mode = DONE;\n /* falls through */\n case DONE:\n ret = Z_STREAM_END;\n break inf_leave;\n case BAD:\n ret = Z_DATA_ERROR;\n break inf_leave;\n case MEM:\n return Z_MEM_ERROR;\n case SYNC:\n /* falls through */\n default:\n return Z_STREAM_ERROR;\n }\n }\n\n // inf_leave <- here is real place for \"goto inf_leave\", emulated via \"break inf_leave\"\n\n /*\n Return from inflate(), updating the total counts and the check value.\n If there was no progress during the inflate() call, return a buffer\n error. Call updatewindow() to create and/or update the window state.\n Note: a memory error from inflate() is non-recoverable.\n */\n\n //--- RESTORE() ---\n strm.next_out = put;\n strm.avail_out = left;\n strm.next_in = next;\n strm.avail_in = have;\n state.hold = hold;\n state.bits = bits;\n //---\n\n if (state.wsize || (_out !== strm.avail_out && state.mode < BAD &&\n (state.mode < CHECK || flush !== Z_FINISH))) {\n if (updatewindow(strm, strm.output, strm.next_out, _out - strm.avail_out)) {\n state.mode = MEM;\n return Z_MEM_ERROR;\n }\n }\n _in -= strm.avail_in;\n _out -= strm.avail_out;\n strm.total_in += _in;\n strm.total_out += _out;\n state.total += _out;\n if ((state.wrap & 4) && _out) {\n strm.adler = state.check = /*UPDATE_CHECK(state.check, strm.next_out - _out, _out);*/\n (state.flags ? crc32(state.check, output, _out, strm.next_out - _out) : adler32(state.check, output, _out, strm.next_out - _out));\n }\n strm.data_type = state.bits + (state.last ? 64 : 0) +\n (state.mode === TYPE ? 128 : 0) +\n (state.mode === LEN_ || state.mode === COPY_ ? 256 : 0);\n if (((_in === 0 && _out === 0) || flush === Z_FINISH) && ret === Z_OK) {\n ret = Z_BUF_ERROR;\n }\n return ret;\n};\n\n\nconst inflateEnd = (strm) => {\n\n if (inflateStateCheck(strm)) {\n return Z_STREAM_ERROR;\n }\n\n let state = strm.state;\n if (state.window) {\n state.window = null;\n }\n strm.state = null;\n return Z_OK;\n};\n\n\nconst inflateGetHeader = (strm, head) => {\n\n /* check state */\n if (inflateStateCheck(strm)) { return Z_STREAM_ERROR; }\n const state = strm.state;\n if ((state.wrap & 2) === 0) { return Z_STREAM_ERROR; }\n\n /* save header structure */\n state.head = head;\n head.done = false;\n return Z_OK;\n};\n\n\nconst inflateSetDictionary = (strm, dictionary) => {\n const dictLength = dictionary.length;\n\n let state;\n let dictid;\n let ret;\n\n /* check state */\n if (inflateStateCheck(strm)) { return Z_STREAM_ERROR; }\n state = strm.state;\n\n if (state.wrap !== 0 && state.mode !== DICT) {\n return Z_STREAM_ERROR;\n }\n\n /* check for correct dictionary identifier */\n if (state.mode === DICT) {\n dictid = 1; /* adler32(0, null, 0)*/\n /* dictid = adler32(dictid, dictionary, dictLength); */\n dictid = adler32(dictid, dictionary, dictLength, 0);\n if (dictid !== state.check) {\n return Z_DATA_ERROR;\n }\n }\n /* copy dictionary to window using updatewindow(), which will amend the\n existing dictionary if appropriate */\n ret = updatewindow(strm, dictionary, dictLength, dictLength);\n if (ret) {\n state.mode = MEM;\n return Z_MEM_ERROR;\n }\n state.havedict = 1;\n // Tracev((stderr, \"inflate: dictionary set\\n\"));\n return Z_OK;\n};\n\n\nmodule.exports.inflateReset = inflateReset;\nmodule.exports.inflateReset2 = inflateReset2;\nmodule.exports.inflateResetKeep = inflateResetKeep;\nmodule.exports.inflateInit = inflateInit;\nmodule.exports.inflateInit2 = inflateInit2;\nmodule.exports.inflate = inflate;\nmodule.exports.inflateEnd = inflateEnd;\nmodule.exports.inflateGetHeader = inflateGetHeader;\nmodule.exports.inflateSetDictionary = inflateSetDictionary;\nmodule.exports.inflateInfo = 'pako inflate (from Nodeca project)';\n\n/* Not implemented\nmodule.exports.inflateCodesUsed = inflateCodesUsed;\nmodule.exports.inflateCopy = inflateCopy;\nmodule.exports.inflateGetDictionary = inflateGetDictionary;\nmodule.exports.inflateMark = inflateMark;\nmodule.exports.inflatePrime = inflatePrime;\nmodule.exports.inflateSync = inflateSync;\nmodule.exports.inflateSyncPoint = inflateSyncPoint;\nmodule.exports.inflateUndermine = inflateUndermine;\nmodule.exports.inflateValidate = inflateValidate;\n*/\n","// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nexport function numToUint8(num: number) {\n return new Uint8Array([\n (num & 0xff000000) >> 24,\n (num & 0x00ff0000) >> 16,\n (num & 0x0000ff00) >> 8,\n num & 0x000000ff,\n ]);\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport AudioVideoControllerState from '../audiovideocontroller/AudioVideoControllerState';\nimport BrowserBehavior from '../browserbehavior/BrowserBehavior';\nimport Logger from '../logger/Logger';\nimport SimulcastTransceiverController from './SimulcastTransceiverController';\n\nexport default class SimulcastContentShareTransceiverController extends SimulcastTransceiverController {\n static readonly NAME_ARR_ASCENDING = ['low', 'hi'];\n static readonly BITRATE_ARR_ASCENDING = [300, 1200];\n\n constructor(\n logger: Logger,\n browserBehavior: BrowserBehavior,\n meetingSessionContext?: AudioVideoControllerState\n ) {\n super(logger, browserBehavior, meetingSessionContext);\n let scale = 2;\n this.videoQualityControlParameterMap = new Map();\n for (let i = 0; i < SimulcastContentShareTransceiverController.NAME_ARR_ASCENDING.length; i++) {\n const ridName = SimulcastContentShareTransceiverController.NAME_ARR_ASCENDING[i];\n this.videoQualityControlParameterMap.set(ridName, {\n rid: ridName,\n scaleResolutionDownBy: scale,\n maxBitrate: SimulcastContentShareTransceiverController.BITRATE_ARR_ASCENDING[i] * 1000,\n });\n scale = scale / 2;\n }\n }\n\n // Note: `scaleResolutionDownBy` has only been tested with values 1, 2, and 4.\n async setEncodingParameters(\n encodingParamMap: Map\n ): Promise {\n if (!this._localCameraTransceiver || this._localCameraTransceiver.direction !== 'sendrecv') {\n return;\n }\n\n const sender = this._localCameraTransceiver.sender;\n const newEncodingParams = Array.from(encodingParamMap.values());\n if (newEncodingParams.length <= 0) {\n return;\n }\n\n const oldParam: RTCRtpSendParameters = sender.getParameters();\n if (!oldParam.encodings) {\n oldParam.encodings = newEncodingParams;\n } else {\n for (let i = 0; i < oldParam.encodings.length; i++) {\n if (oldParam.encodings[i].rid === SimulcastTransceiverController.LOW_LEVEL_NAME) {\n this.copyEncodingParams(\n encodingParamMap.get(SimulcastTransceiverController.LOW_LEVEL_NAME),\n oldParam.encodings[i]\n );\n }\n if (oldParam.encodings[i].rid === SimulcastTransceiverController.HIGH_LEVEL_NAME) {\n this.copyEncodingParams(\n encodingParamMap.get(SimulcastTransceiverController.HIGH_LEVEL_NAME),\n oldParam.encodings[i]\n );\n }\n }\n }\n\n await sender.setParameters(oldParam);\n\n this.logVideoTransceiverParameters();\n }\n}\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['forecastqueryservice'] = {};\nAWS.ForecastQueryService = Service.defineService('forecastqueryservice', ['2018-06-26']);\nObject.defineProperty(apiLoader.services['forecastqueryservice'], '2018-06-26', {\n get: function get() {\n var model = require('../apis/forecastquery-2018-06-26.min.json');\n model.paginators = require('../apis/forecastquery-2018-06-26.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.ForecastQueryService;\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport Logger from '../logger/Logger';\nimport PingPongObserver from '../pingpongobserver/PingPongObserver';\nimport AsyncScheduler from '../scheduler/AsyncScheduler';\nimport IntervalScheduler from '../scheduler/IntervalScheduler';\nimport SignalingClient from '../signalingclient/SignalingClient';\nimport SignalingClientEvent from '../signalingclient/SignalingClientEvent';\nimport SignalingClientEventType from '../signalingclient/SignalingClientEventType';\nimport SignalingClientObserver from '../signalingclientobserver/SignalingClientObserver';\nimport {\n SdkPingPongFrame,\n SdkPingPongType,\n SdkSignalFrame,\n} from '../signalingprotocol/SignalingProtocol.js';\nimport { Maybe } from '../utils/Types';\nimport PingPong from './PingPong';\n\n/**\n * [[DefaultPingPong]] implements the PingPong and SignalingClientObserver interface.\n */\nexport default class DefaultPingPong implements SignalingClientObserver, PingPong {\n private observerQueue: Set = new Set();\n intervalScheduler: IntervalScheduler;\n pingTimestampLocalMs: number;\n pingId: number;\n consecutivePongsUnaccountedFor = 0;\n\n constructor(\n private signalingClient: SignalingClient,\n private intervalMs: number,\n private logger: Logger\n ) {\n this.intervalScheduler = new IntervalScheduler(this.intervalMs);\n this.pingId = 0;\n }\n\n addObserver(observer: PingPongObserver): void {\n this.logger.info('adding a ping-pong observer');\n this.observerQueue.add(observer);\n }\n\n removeObserver(observer: PingPongObserver): void {\n this.logger.info('removing a ping-pong observer');\n this.observerQueue.delete(observer);\n }\n\n forEachObserver(observerFunc: (observer: PingPongObserver) => void): void {\n for (const observer of this.observerQueue) {\n AsyncScheduler.nextTick(() => {\n if (this.observerQueue.has(observer)) {\n observerFunc(observer);\n }\n });\n }\n }\n\n start(): void {\n this.stop();\n this.signalingClient.registerObserver(this);\n if (this.signalingClient.ready()) {\n this.startPingInterval();\n }\n }\n\n stop(): void {\n this.stopPingInterval();\n this.signalingClient.removeObserver(this);\n }\n\n private startPingInterval(): void {\n this.intervalScheduler.start(() => {\n this.ping();\n });\n this.ping();\n }\n\n private stopPingInterval(): void {\n this.intervalScheduler.stop();\n this.pingId = 0;\n this.consecutivePongsUnaccountedFor = 0;\n }\n\n private ping(): void {\n if (this.consecutivePongsUnaccountedFor > 0) {\n this.logger.warn(`missed pong ${this.consecutivePongsUnaccountedFor} time(s)`);\n this.forEachObserver((observer: PingPongObserver) => {\n Maybe.of(observer.didMissPongs).map(f =>\n f.bind(observer)(this.consecutivePongsUnaccountedFor)\n );\n });\n }\n this.consecutivePongsUnaccountedFor += 1;\n this.pingId = (this.pingId + 1) & 0xffffffff;\n const ping = SdkPingPongFrame.create();\n ping.pingId = this.pingId;\n ping.type = SdkPingPongType.PING;\n this.pingTimestampLocalMs = this.signalingClient.pingPong(ping);\n this.logger.debug(() => {\n return `sent ping ${this.pingId}`;\n });\n }\n\n private pong(pingId: number): void {\n const pong = SdkPingPongFrame.create();\n pong.pingId = pingId;\n pong.type = SdkPingPongType.PONG;\n this.signalingClient.pingPong(pong);\n }\n\n handleSignalingClientEvent(event: SignalingClientEvent): void {\n switch (event.type) {\n case SignalingClientEventType.WebSocketOpen:\n this.startPingInterval();\n break;\n case SignalingClientEventType.WebSocketFailed:\n case SignalingClientEventType.WebSocketError:\n this.logger.warn(`stopped pinging (${SignalingClientEventType[event.type]})`);\n this.stopPingInterval();\n break;\n case SignalingClientEventType.WebSocketClosing:\n case SignalingClientEventType.WebSocketClosed:\n this.logger.info(`stopped pinging (${SignalingClientEventType[event.type]})`);\n this.stopPingInterval();\n break;\n case SignalingClientEventType.ReceivedSignalFrame:\n if (event.message.type !== SdkSignalFrame.Type.PING_PONG) {\n break;\n }\n if (event.message.pingPong.type === SdkPingPongType.PONG) {\n const pingId = event.message.pingPong.pingId;\n if (pingId !== this.pingId) {\n this.logger.warn(`unexpected ping id ${pingId} (expected ${this.pingId})`);\n break;\n }\n this.consecutivePongsUnaccountedFor = 0;\n let pongTimestampRemoteMs: number;\n if (typeof event.message.timestampMs === 'number') {\n pongTimestampRemoteMs = event.message.timestampMs;\n } else {\n break;\n }\n this.logger.debug(() => {\n return `received pong ${pingId} with timestamp ${pongTimestampRemoteMs}`;\n });\n const pongTimestampLocalMs = event.timestampMs;\n const pingPongLocalIntervalMs = pongTimestampLocalMs - this.pingTimestampLocalMs;\n const estimatedPingTimestampRemoteMs = Math.round(\n pongTimestampRemoteMs - pingPongLocalIntervalMs / 2\n );\n const estimatedClockSkewMs = this.pingTimestampLocalMs - estimatedPingTimestampRemoteMs;\n this.logger.info(\n `local clock skew estimate=${estimatedClockSkewMs}ms from ping-pong time=${pingPongLocalIntervalMs}ms`\n );\n this.forEachObserver((observer: PingPongObserver) => {\n Maybe.of(observer.didReceivePong).map(f =>\n f.bind(observer)(pingId, estimatedClockSkewMs, pingPongLocalIntervalMs)\n );\n });\n } else {\n this.pong(event.message.pingPong.pingId);\n }\n break;\n }\n }\n}\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction InterceptorManager() {\n this.handlers = [];\n}\n\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\nInterceptorManager.prototype.use = function use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled: fulfilled,\n rejected: rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n};\n\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\nInterceptorManager.prototype.eject = function eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n};\n\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n};\n\nmodule.exports = InterceptorManager;\n","exports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport EventsClientConfiguration from './EventsClientConfiguration';\nimport MeetingEventsClientConfigurationAttributes from './MeetingEventsClientConfigurationAttributes';\n\n/**\n * [[MeetingEventsClientConfiguration]] contains necessary information to\n * report meeting events metadata to each event while sending events to the ingestion service.\n */\nexport default class MeetingEventsClientConfiguration implements EventsClientConfiguration {\n readonly type = 'Meet';\n readonly v = 1;\n private readonly authenticationToken: string;\n private readonly meetingId: string;\n private readonly attendeeId: string;\n readonly eventsToIgnore: string[];\n\n constructor(\n meetingId: string,\n attendeeId: string,\n authenticationToken: string,\n eventsToIgnore: string[] = []\n ) {\n this.meetingId = meetingId;\n this.attendeeId = attendeeId;\n this.eventsToIgnore = eventsToIgnore;\n this.authenticationToken = authenticationToken;\n }\n\n getAuthenticationToken(): string {\n return this.authenticationToken;\n }\n\n toJSON(): MeetingEventsClientConfigurationAttributes {\n const attributes: MeetingEventsClientConfigurationAttributes = {};\n attributes.type = this.type;\n attributes.v = this.v;\n attributes.meetingId = this.meetingId;\n attributes.attendeeId = this.attendeeId;\n return attributes;\n }\n}\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['cloudhsmv2'] = {};\nAWS.CloudHSMV2 = Service.defineService('cloudhsmv2', ['2017-04-28']);\nObject.defineProperty(apiLoader.services['cloudhsmv2'], '2017-04-28', {\n get: function get() {\n var model = require('../apis/cloudhsmv2-2017-04-28.min.json');\n model.paginators = require('../apis/cloudhsmv2-2017-04-28.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.CloudHSMV2;\n","var eventMessageChunker = require('../event-stream/event-message-chunker').eventMessageChunker;\nvar parseEvent = require('./parse-event').parseEvent;\n\nfunction createEventStream(body, parser, model) {\n var eventMessages = eventMessageChunker(body);\n\n var events = [];\n\n for (var i = 0; i < eventMessages.length; i++) {\n events.push(parseEvent(parser, eventMessages[i], model));\n }\n\n return events;\n}\n\n/**\n * @api private\n */\nmodule.exports = {\n createEventStream: createEventStream\n};\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['kinesisvideosignalingchannels'] = {};\nAWS.KinesisVideoSignalingChannels = Service.defineService('kinesisvideosignalingchannels', ['2019-12-04']);\nObject.defineProperty(apiLoader.services['kinesisvideosignalingchannels'], '2019-12-04', {\n get: function get() {\n var model = require('../apis/kinesis-video-signaling-2019-12-04.min.json');\n model.paginators = require('../apis/kinesis-video-signaling-2019-12-04.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.KinesisVideoSignalingChannels;\n","var AWS = require('../core');\nvar Translator = require('./translator');\nvar DynamoDBSet = require('./set');\n\n/**\n * The document client simplifies working with items in Amazon DynamoDB\n * by abstracting away the notion of attribute values. This abstraction\n * annotates native JavaScript types supplied as input parameters, as well\n * as converts annotated response data to native JavaScript types.\n *\n * ## Marshalling Input and Unmarshalling Response Data\n *\n * The document client affords developers the use of native JavaScript types\n * instead of `AttributeValue`s to simplify the JavaScript development\n * experience with Amazon DynamoDB. JavaScript objects passed in as parameters\n * are marshalled into `AttributeValue` shapes required by Amazon DynamoDB.\n * Responses from DynamoDB are unmarshalled into plain JavaScript objects\n * by the `DocumentClient`. The `DocumentClient`, does not accept\n * `AttributeValue`s in favor of native JavaScript types.\n *\n * | JavaScript Type | DynamoDB AttributeValue |\n * |:----------------------------------------------------------------------:|-------------------------|\n * | String | S |\n * | Number | N |\n * | Boolean | BOOL |\n * | null | NULL |\n * | Array | L |\n * | Object | M |\n * | Buffer, File, Blob, ArrayBuffer, DataView, and JavaScript typed arrays | B |\n *\n * ## Support for Sets\n *\n * The `DocumentClient` offers a convenient way to create sets from\n * JavaScript Arrays. The type of set is inferred from the first element\n * in the array. DynamoDB supports string, number, and binary sets. To\n * learn more about supported types see the\n * [Amazon DynamoDB Data Model Documentation](http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DataModel.html)\n * For more information see {AWS.DynamoDB.DocumentClient.createSet}\n *\n */\nAWS.DynamoDB.DocumentClient = AWS.util.inherit({\n\n /**\n * Creates a DynamoDB document client with a set of configuration options.\n *\n * @option options params [map] An optional map of parameters to bind to every\n * request sent by this service object.\n * @option options service [AWS.DynamoDB] An optional pre-configured instance\n * of the AWS.DynamoDB service object. This instance's config will be\n * copied to a new instance used by this client. You should not need to\n * retain a reference to the input object, and may destroy it or allow it\n * to be garbage collected.\n * @option options convertEmptyValues [Boolean] set to true if you would like\n * the document client to convert empty values (0-length strings, binary\n * buffers, and sets) to be converted to NULL types when persisting to\n * DynamoDB.\n * @option options wrapNumbers [Boolean] Set to true to return numbers as a\n * NumberValue object instead of converting them to native JavaScript numbers.\n * This allows for the safe round-trip transport of numbers of arbitrary size.\n * @see AWS.DynamoDB.constructor\n *\n */\n constructor: function DocumentClient(options) {\n var self = this;\n self.options = options || {};\n self.configure(self.options);\n },\n\n /**\n * @api private\n */\n configure: function configure(options) {\n var self = this;\n self.service = options.service;\n self.bindServiceObject(options);\n self.attrValue = options.attrValue =\n self.service.api.operations.putItem.input.members.Item.value.shape;\n },\n\n /**\n * @api private\n */\n bindServiceObject: function bindServiceObject(options) {\n var self = this;\n options = options || {};\n\n if (!self.service) {\n self.service = new AWS.DynamoDB(options);\n } else {\n var config = AWS.util.copy(self.service.config);\n self.service = new self.service.constructor.__super__(config);\n self.service.config.params =\n AWS.util.merge(self.service.config.params || {}, options.params);\n }\n },\n\n /**\n * @api private\n */\n makeServiceRequest: function(operation, params, callback) {\n var self = this;\n var request = self.service[operation](params);\n self.setupRequest(request);\n self.setupResponse(request);\n if (typeof callback === 'function') {\n request.send(callback);\n }\n return request;\n },\n\n /**\n * @api private\n */\n serviceClientOperationsMap: {\n batchGet: 'batchGetItem',\n batchWrite: 'batchWriteItem',\n delete: 'deleteItem',\n get: 'getItem',\n put: 'putItem',\n query: 'query',\n scan: 'scan',\n update: 'updateItem',\n transactGet: 'transactGetItems',\n transactWrite: 'transactWriteItems'\n },\n\n /**\n * Returns the attributes of one or more items from one or more tables\n * by delegating to `AWS.DynamoDB.batchGetItem()`.\n *\n * Supply the same parameters as {AWS.DynamoDB.batchGetItem} with\n * `AttributeValue`s substituted by native JavaScript types.\n *\n * @see AWS.DynamoDB.batchGetItem\n * @example Get items from multiple tables\n * var params = {\n * RequestItems: {\n * 'Table-1': {\n * Keys: [\n * {\n * HashKey: 'haskey',\n * NumberRangeKey: 1\n * }\n * ]\n * },\n * 'Table-2': {\n * Keys: [\n * { foo: 'bar' },\n * ]\n * }\n * }\n * };\n *\n * var documentClient = new AWS.DynamoDB.DocumentClient();\n *\n * documentClient.batchGet(params, function(err, data) {\n * if (err) console.log(err);\n * else console.log(data);\n * });\n *\n */\n batchGet: function(params, callback) {\n var operation = this.serviceClientOperationsMap['batchGet'];\n return this.makeServiceRequest(operation, params, callback);\n },\n\n /**\n * Puts or deletes multiple items in one or more tables by delegating\n * to `AWS.DynamoDB.batchWriteItem()`.\n *\n * Supply the same parameters as {AWS.DynamoDB.batchWriteItem} with\n * `AttributeValue`s substituted by native JavaScript types.\n *\n * @see AWS.DynamoDB.batchWriteItem\n * @example Write to and delete from a table\n * var params = {\n * RequestItems: {\n * 'Table-1': [\n * {\n * DeleteRequest: {\n * Key: { HashKey: 'someKey' }\n * }\n * },\n * {\n * PutRequest: {\n * Item: {\n * HashKey: 'anotherKey',\n * NumAttribute: 1,\n * BoolAttribute: true,\n * ListAttribute: [1, 'two', false],\n * MapAttribute: { foo: 'bar' }\n * }\n * }\n * }\n * ]\n * }\n * };\n *\n * var documentClient = new AWS.DynamoDB.DocumentClient();\n *\n * documentClient.batchWrite(params, function(err, data) {\n * if (err) console.log(err);\n * else console.log(data);\n * });\n *\n */\n batchWrite: function(params, callback) {\n var operation = this.serviceClientOperationsMap['batchWrite'];\n return this.makeServiceRequest(operation, params, callback);\n },\n\n /**\n * Deletes a single item in a table by primary key by delegating to\n * `AWS.DynamoDB.deleteItem()`\n *\n * Supply the same parameters as {AWS.DynamoDB.deleteItem} with\n * `AttributeValue`s substituted by native JavaScript types.\n *\n * @see AWS.DynamoDB.deleteItem\n * @example Delete an item from a table\n * var params = {\n * TableName : 'Table',\n * Key: {\n * HashKey: 'hashkey',\n * NumberRangeKey: 1\n * }\n * };\n *\n * var documentClient = new AWS.DynamoDB.DocumentClient();\n *\n * documentClient.delete(params, function(err, data) {\n * if (err) console.log(err);\n * else console.log(data);\n * });\n *\n */\n delete: function(params, callback) {\n var operation = this.serviceClientOperationsMap['delete'];\n return this.makeServiceRequest(operation, params, callback);\n },\n\n /**\n * Returns a set of attributes for the item with the given primary key\n * by delegating to `AWS.DynamoDB.getItem()`.\n *\n * Supply the same parameters as {AWS.DynamoDB.getItem} with\n * `AttributeValue`s substituted by native JavaScript types.\n *\n * @see AWS.DynamoDB.getItem\n * @example Get an item from a table\n * var params = {\n * TableName : 'Table',\n * Key: {\n * HashKey: 'hashkey'\n * }\n * };\n *\n * var documentClient = new AWS.DynamoDB.DocumentClient();\n *\n * documentClient.get(params, function(err, data) {\n * if (err) console.log(err);\n * else console.log(data);\n * });\n *\n */\n get: function(params, callback) {\n var operation = this.serviceClientOperationsMap['get'];\n return this.makeServiceRequest(operation, params, callback);\n },\n\n /**\n * Creates a new item, or replaces an old item with a new item by\n * delegating to `AWS.DynamoDB.putItem()`.\n *\n * Supply the same parameters as {AWS.DynamoDB.putItem} with\n * `AttributeValue`s substituted by native JavaScript types.\n *\n * @see AWS.DynamoDB.putItem\n * @example Create a new item in a table\n * var params = {\n * TableName : 'Table',\n * Item: {\n * HashKey: 'haskey',\n * NumAttribute: 1,\n * BoolAttribute: true,\n * ListAttribute: [1, 'two', false],\n * MapAttribute: { foo: 'bar'},\n * NullAttribute: null\n * }\n * };\n *\n * var documentClient = new AWS.DynamoDB.DocumentClient();\n *\n * documentClient.put(params, function(err, data) {\n * if (err) console.log(err);\n * else console.log(data);\n * });\n *\n */\n put: function(params, callback) {\n var operation = this.serviceClientOperationsMap['put'];\n return this.makeServiceRequest(operation, params, callback);\n },\n\n /**\n * Edits an existing item's attributes, or adds a new item to the table if\n * it does not already exist by delegating to `AWS.DynamoDB.updateItem()`.\n *\n * Supply the same parameters as {AWS.DynamoDB.updateItem} with\n * `AttributeValue`s substituted by native JavaScript types.\n *\n * @see AWS.DynamoDB.updateItem\n * @example Update an item with expressions\n * var params = {\n * TableName: 'Table',\n * Key: { HashKey : 'hashkey' },\n * UpdateExpression: 'set #a = :x + :y',\n * ConditionExpression: '#a < :MAX',\n * ExpressionAttributeNames: {'#a' : 'Sum'},\n * ExpressionAttributeValues: {\n * ':x' : 20,\n * ':y' : 45,\n * ':MAX' : 100,\n * }\n * };\n *\n * var documentClient = new AWS.DynamoDB.DocumentClient();\n *\n * documentClient.update(params, function(err, data) {\n * if (err) console.log(err);\n * else console.log(data);\n * });\n *\n */\n update: function(params, callback) {\n var operation = this.serviceClientOperationsMap['update'];\n return this.makeServiceRequest(operation, params, callback);\n },\n\n /**\n * Returns one or more items and item attributes by accessing every item\n * in a table or a secondary index.\n *\n * Supply the same parameters as {AWS.DynamoDB.scan} with\n * `AttributeValue`s substituted by native JavaScript types.\n *\n * @see AWS.DynamoDB.scan\n * @example Scan the table with a filter expression\n * var params = {\n * TableName : 'Table',\n * FilterExpression : 'Year = :this_year',\n * ExpressionAttributeValues : {':this_year' : 2015}\n * };\n *\n * var documentClient = new AWS.DynamoDB.DocumentClient();\n *\n * documentClient.scan(params, function(err, data) {\n * if (err) console.log(err);\n * else console.log(data);\n * });\n *\n */\n scan: function(params, callback) {\n var operation = this.serviceClientOperationsMap['scan'];\n return this.makeServiceRequest(operation, params, callback);\n },\n\n /**\n * Directly access items from a table by primary key or a secondary index.\n *\n * Supply the same parameters as {AWS.DynamoDB.query} with\n * `AttributeValue`s substituted by native JavaScript types.\n *\n * @see AWS.DynamoDB.query\n * @example Query an index\n * var params = {\n * TableName: 'Table',\n * IndexName: 'Index',\n * KeyConditionExpression: 'HashKey = :hkey and RangeKey > :rkey',\n * ExpressionAttributeValues: {\n * ':hkey': 'key',\n * ':rkey': 2015\n * }\n * };\n *\n * var documentClient = new AWS.DynamoDB.DocumentClient();\n *\n * documentClient.query(params, function(err, data) {\n * if (err) console.log(err);\n * else console.log(data);\n * });\n *\n */\n query: function(params, callback) {\n var operation = this.serviceClientOperationsMap['query'];\n return this.makeServiceRequest(operation, params, callback);\n },\n\n /**\n * Synchronous write operation that groups up to 100 action requests.\n *\n * Supply the same parameters as {AWS.DynamoDB.transactWriteItems} with\n * `AttributeValue`s substituted by native JavaScript types.\n *\n * @see AWS.DynamoDB.transactWriteItems\n * @example Get items from multiple tables\n * var params = {\n * TransactItems: [{\n * Put: {\n * TableName : 'Table0',\n * Item: {\n * HashKey: 'haskey',\n * NumAttribute: 1,\n * BoolAttribute: true,\n * ListAttribute: [1, 'two', false],\n * MapAttribute: { foo: 'bar'},\n * NullAttribute: null\n * }\n * }\n * }, {\n * Update: {\n * TableName: 'Table1',\n * Key: { HashKey : 'hashkey' },\n * UpdateExpression: 'set #a = :x + :y',\n * ConditionExpression: '#a < :MAX',\n * ExpressionAttributeNames: {'#a' : 'Sum'},\n * ExpressionAttributeValues: {\n * ':x' : 20,\n * ':y' : 45,\n * ':MAX' : 100,\n * }\n * }\n * }]\n * };\n *\n * documentClient.transactWrite(params, function(err, data) {\n * if (err) console.log(err);\n * else console.log(data);\n * });\n */\n transactWrite: function(params, callback) {\n var operation = this.serviceClientOperationsMap['transactWrite'];\n return this.makeServiceRequest(operation, params, callback);\n },\n\n /**\n * Atomically retrieves multiple items from one or more tables (but not from indexes)\n * in a single account and region.\n *\n * Supply the same parameters as {AWS.DynamoDB.transactGetItems} with\n * `AttributeValue`s substituted by native JavaScript types.\n *\n * @see AWS.DynamoDB.transactGetItems\n * @example Get items from multiple tables\n * var params = {\n * TransactItems: [{\n * Get: {\n * TableName : 'Table0',\n * Key: {\n * HashKey: 'hashkey0'\n * }\n * }\n * }, {\n * Get: {\n * TableName : 'Table1',\n * Key: {\n * HashKey: 'hashkey1'\n * }\n * }\n * }]\n * };\n *\n * documentClient.transactGet(params, function(err, data) {\n * if (err) console.log(err);\n * else console.log(data);\n * });\n */\n transactGet: function(params, callback) {\n var operation = this.serviceClientOperationsMap['transactGet'];\n return this.makeServiceRequest(operation, params, callback);\n },\n\n /**\n * Creates a set of elements inferring the type of set from\n * the type of the first element. Amazon DynamoDB currently supports\n * the number sets, string sets, and binary sets. For more information\n * about DynamoDB data types see the documentation on the\n * [Amazon DynamoDB Data Model](http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DataModel.html#DataModel.DataTypes).\n *\n * @param list [Array] Collection to represent your DynamoDB Set\n * @param options [map]\n * * **validate** [Boolean] set to true if you want to validate the type\n * of each element in the set. Defaults to `false`.\n * @example Creating a number set\n * var documentClient = new AWS.DynamoDB.DocumentClient();\n *\n * var params = {\n * Item: {\n * hashkey: 'hashkey'\n * numbers: documentClient.createSet([1, 2, 3]);\n * }\n * };\n *\n * documentClient.put(params, function(err, data) {\n * if (err) console.log(err);\n * else console.log(data);\n * });\n *\n */\n createSet: function(list, options) {\n options = options || {};\n return new DynamoDBSet(list, options);\n },\n\n /**\n * @api private\n */\n getTranslator: function() {\n return new Translator(this.options);\n },\n\n /**\n * @api private\n */\n setupRequest: function setupRequest(request) {\n var self = this;\n var translator = self.getTranslator();\n var operation = request.operation;\n var inputShape = request.service.api.operations[operation].input;\n request._events.validate.unshift(function(req) {\n req.rawParams = AWS.util.copy(req.params);\n req.params = translator.translateInput(req.rawParams, inputShape);\n });\n },\n\n /**\n * @api private\n */\n setupResponse: function setupResponse(request) {\n var self = this;\n var translator = self.getTranslator();\n var outputShape = self.service.api.operations[request.operation].output;\n request.on('extractData', function(response) {\n response.data = translator.translateOutput(response.data, outputShape);\n });\n\n var response = request.response;\n response.nextPage = function(cb) {\n var resp = this;\n var req = resp.request;\n var config;\n var service = req.service;\n var operation = req.operation;\n try {\n config = service.paginationConfig(operation, true);\n } catch (e) { resp.error = e; }\n\n if (!resp.hasNextPage()) {\n if (cb) cb(resp.error, null);\n else if (resp.error) throw resp.error;\n return null;\n }\n\n var params = AWS.util.copy(req.rawParams);\n if (!resp.nextPageTokens) {\n return cb ? cb(null, null) : null;\n } else {\n var inputTokens = config.inputToken;\n if (typeof inputTokens === 'string') inputTokens = [inputTokens];\n for (var i = 0; i < inputTokens.length; i++) {\n params[inputTokens[i]] = resp.nextPageTokens[i];\n }\n return self[operation](params, cb);\n }\n };\n }\n\n});\n\n/**\n * @api private\n */\nmodule.exports = AWS.DynamoDB.DocumentClient;\n","'use strict';\n/* global Bun, Deno -- detection */\nvar globalThis = require('../internals/global-this');\nvar userAgent = require('../internals/environment-user-agent');\nvar classof = require('../internals/classof-raw');\n\nvar userAgentStartsWith = function (string) {\n return userAgent.slice(0, string.length) === string;\n};\n\nmodule.exports = (function () {\n if (userAgentStartsWith('Bun/')) return 'BUN';\n if (userAgentStartsWith('Cloudflare-Workers')) return 'CLOUDFLARE';\n if (userAgentStartsWith('Deno/')) return 'DENO';\n if (userAgentStartsWith('Node.js/')) return 'NODE';\n if (globalThis.Bun && typeof Bun.version == 'string') return 'BUN';\n if (globalThis.Deno && typeof Deno.version == 'object') return 'DENO';\n if (classof(globalThis.process) === 'process') return 'NODE';\n if (globalThis.window && globalThis.document) return 'BROWSER';\n return 'REST';\n})();\n","'use strict';\nvar $ = require('../internals/export');\nvar bind = require('../internals/function-bind-context');\nvar aSet = require('../internals/a-set');\nvar iterate = require('../internals/set-iterate');\n\n// `Set.prototype.some` method\n// https://github.com/tc39/proposal-collection-methods\n$({ target: 'Set', proto: true, real: true, forced: true }, {\n some: function some(callbackfn /* , thisArg */) {\n var set = aSet(this);\n var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n return iterate(set, function (value) {\n if (boundFunction(value, value, set)) return true;\n }, true) === true;\n }\n});\n","var AWS = require('../core');\nrequire('../dynamodb/document_client');\n\nAWS.util.update(AWS.DynamoDB.prototype, {\n /**\n * @api private\n */\n setupRequestListeners: function setupRequestListeners(request) {\n if (request.service.config.dynamoDbCrc32) {\n request.removeListener('extractData', AWS.EventListeners.Json.EXTRACT_DATA);\n request.addListener('extractData', this.checkCrc32);\n request.addListener('extractData', AWS.EventListeners.Json.EXTRACT_DATA);\n }\n },\n\n /**\n * @api private\n */\n checkCrc32: function checkCrc32(resp) {\n if (!resp.httpResponse.streaming && !resp.request.service.crc32IsValid(resp)) {\n resp.data = null;\n resp.error = AWS.util.error(new Error(), {\n code: 'CRC32CheckFailed',\n message: 'CRC32 integrity check failed',\n retryable: true\n });\n resp.request.haltHandlersOnError();\n throw (resp.error);\n }\n },\n\n /**\n * @api private\n */\n crc32IsValid: function crc32IsValid(resp) {\n var crc = resp.httpResponse.headers['x-amz-crc32'];\n if (!crc) return true; // no (valid) CRC32 header\n return parseInt(crc, 10) === AWS.util.crypto.crc32(resp.httpResponse.body);\n },\n\n /**\n * @api private\n */\n defaultRetryCount: 10,\n\n /**\n * @api private\n */\n retryDelays: function retryDelays(retryCount, err) {\n var retryDelayOptions = AWS.util.copy(this.config.retryDelayOptions);\n\n if (typeof retryDelayOptions.base !== 'number') {\n retryDelayOptions.base = 50; // default for dynamodb\n }\n var delay = AWS.util.calculateRetryDelay(retryCount, retryDelayOptions, err);\n return delay;\n }\n});\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport AudioVideoController from '../audiovideocontroller/AudioVideoController';\nimport ClientMetricReport from '../clientmetricreport/ClientMetricReport';\nimport { CustomStatsReport } from '../clientmetricreport/ClientMetricReport';\nimport Direction from '../clientmetricreport/ClientMetricReportDirection';\nimport MediaType from '../clientmetricreport/ClientMetricReportMediaType';\nimport RedundantAudioRecoveryMetricReport from '../clientmetricreport/RedundantAudioRecoveryMetricReport';\nimport StreamMetricReport from '../clientmetricreport/StreamMetricReport';\nimport Logger from '../logger/Logger';\nimport MeetingSessionLifecycleEvent from '../meetingsession/MeetingSessionLifecycleEvent';\nimport MeetingSessionLifecycleEventCondition from '../meetingsession/MeetingSessionLifecycleEventCondition';\nimport MeetingSessionStatus from '../meetingsession/MeetingSessionStatus';\nimport RedundantAudioRecoveryMetricsObserver from '../redundantaudiorecoverymetricsobserver/RedundantAudioRecoveryMetricsObserver';\nimport IntervalScheduler from '../scheduler/IntervalScheduler';\nimport SignalingClient from '../signalingclient/SignalingClient';\nimport {\n SdkClientMetricFrame,\n SdkDimensionValue,\n SdkMetric,\n SdkStreamDimension,\n SdkStreamMediaType,\n SdkStreamMetricFrame,\n} from '../signalingprotocol/SignalingProtocol.js';\nimport { Maybe } from '../utils/Types';\nimport VideoStreamIndex from '../videostreamindex/VideoStreamIndex';\nimport { VideoTileResolutionObserver } from '../videotilecontroller/VideoTileController';\nimport AudioLogEvent from './AudioLogEvent';\nimport VideoLogEvent from './VideoLogEvent';\n\n// eslint-disable-next-line\ntype RawMetricReport = any;\n\n// eslint-disable-next-line\ntype StatsReportItem = any;\n\n/**\n * [[StatsCollector]] gathers statistics and sends metrics.\n */\nexport default class StatsCollector\n implements RedundantAudioRecoveryMetricsObserver, VideoTileResolutionObserver {\n private static readonly INTERVAL_MS = 1000;\n private static readonly CLIENT_TYPE = 'amazon-chime-sdk-js';\n\n private intervalScheduler: IntervalScheduler | null = null;\n private signalingClient: SignalingClient;\n private videoStreamIndex: VideoStreamIndex;\n private clientMetricReport: ClientMetricReport;\n private redRecoveryMetricReport: RedundantAudioRecoveryMetricReport = new RedundantAudioRecoveryMetricReport();\n private lastRedRecoveryMetricReportConsumedTimestampMs: number = 0;\n private videoCodecDegradationHighEncodeCpuCount: number = 0;\n private videoCodecDegradationEncodeFailureCount: number = 0;\n private resolutionMap = new Map();\n\n constructor(\n private audioVideoController: AudioVideoController,\n private logger: Logger,\n private readonly interval: number = StatsCollector.INTERVAL_MS\n ) {}\n\n // TODO: Update toAttribute() and toSuffix() methods to convert raw data to a required type.\n /**\n * Converts string to attribute format.\n */\n toAttribute(str: string): string {\n return this.toSuffix(str).substring(1);\n }\n\n /**\n * Converts string to suffix format.\n */\n private toSuffix(str: string): string {\n if (str.toLowerCase() === str) {\n // e.g. lower_case -> _lower_case\n return `_${str}`;\n } else if (str.toUpperCase() === str) {\n // e.g. UPPER_CASE -> _upper_case\n return `_${str.toLowerCase()}`;\n } else {\n // e.g. CamelCaseWithCAPS -> _camel_case_with_caps\n return str\n .replace(/([A-Z][a-z]+)/g, function ($1) {\n return `_${$1}`;\n })\n .replace(/([A-Z][A-Z]+)/g, function ($1) {\n return `_${$1}`;\n })\n .toLowerCase();\n }\n }\n\n // TODO: Implement metricsAddTime() and metricsLogEvent().\n metricsAddTime = (\n _name: string,\n _duration: number,\n _attributes?: { [id: string]: string }\n ): void => {};\n metricsLogEvent = (_name: string, _attributes: { [id: string]: string }): void => {};\n\n /**\n * Logs the latency.\n */\n logLatency(eventName: string, timeMs: number, attributes?: { [id: string]: string }): void {\n const event = this.toSuffix(eventName);\n this.logEventTime('meeting' + event, timeMs, attributes);\n }\n\n /**\n * Logs the state timeout.\n */\n logStateTimeout(stateName: string, attributes?: { [id: string]: string }): void {\n const state = this.toSuffix(stateName);\n this.logEvent('meeting_session_state_timeout', {\n ...attributes,\n state: `state${state}`,\n });\n }\n\n /**\n * Logs the audio event.\n */\n logAudioEvent(eventName: AudioLogEvent, attributes?: { [id: string]: string }): void {\n const event = 'audio' + this.toSuffix(AudioLogEvent[eventName]);\n this.logEvent(event, attributes);\n }\n\n /**\n * Logs the video event.\n */\n logVideoEvent(eventName: VideoLogEvent, attributes?: { [id: string]: string }): void {\n const event = 'video' + this.toSuffix(VideoLogEvent[eventName]);\n this.logEvent(event, attributes);\n }\n\n private logEventTime(\n eventName: string,\n timeMs: number,\n attributes: { [id: string]: string } = {}\n ): void {\n const finalAttributes = {\n ...attributes,\n call_id: this.audioVideoController.configuration.meetingId,\n client_type: StatsCollector.CLIENT_TYPE,\n metric_type: 'latency',\n };\n this.logger.debug(() => {\n return `[StatsCollector] ${eventName}: ${JSON.stringify(finalAttributes)}`;\n });\n this.metricsAddTime(eventName, timeMs, finalAttributes);\n }\n\n /**\n * Logs the session status.\n */\n logMeetingSessionStatus(status: MeetingSessionStatus): void {\n // TODO: Generate the status event name given the status code.\n const statusEventName = `${status.statusCode()}`;\n\n this.logEvent(statusEventName);\n const statusAttribute: { [id: string]: string } = {\n status: statusEventName,\n status_code: `${status.statusCode()}`,\n };\n this.logEvent('meeting_session_status', statusAttribute);\n if (status.isTerminal()) {\n this.logEvent('meeting_session_stopped', statusAttribute);\n }\n if (status.isAudioConnectionFailure()) {\n this.logEvent('meeting_session_audio_failed', statusAttribute);\n }\n if (status.isFailure()) {\n this.logEvent('meeting_session_failed', statusAttribute);\n }\n }\n\n /**\n * Logs the lifecycle event.\n */\n logLifecycleEvent(\n lifecycleEvent: MeetingSessionLifecycleEvent,\n condition: MeetingSessionLifecycleEventCondition\n ): void {\n const attributes: { [id: string]: string } = {\n lifecycle_event: `lifecycle${this.toSuffix(MeetingSessionLifecycleEvent[lifecycleEvent])}`,\n lifecycle_event_code: `${lifecycleEvent}`,\n lifecycle_event_condition: `condition${this.toSuffix(\n MeetingSessionLifecycleEventCondition[condition]\n )}`,\n lifecycle_event_condition_code: `${condition}`,\n };\n this.logEvent('meeting_session_lifecycle', attributes);\n }\n\n /**\n * Logs the events.\n */\n private logEvent(eventName: string, attributes: { [id: string]: string } = {}): void {\n const finalAttributes = {\n ...attributes,\n call_id: this.audioVideoController.configuration.meetingId,\n client_type: StatsCollector.CLIENT_TYPE,\n };\n this.logger.debug(() => {\n return `[StatsCollector] ${eventName}: ${JSON.stringify(finalAttributes)}`;\n });\n this.metricsLogEvent(eventName, finalAttributes);\n }\n\n /**\n * Starts collecting statistics.\n */\n start(signalingClient: SignalingClient, videoStreamIndex: VideoStreamIndex): boolean {\n if (this.intervalScheduler) {\n return false;\n }\n this.logger.info('Starting StatsCollector');\n this.signalingClient = signalingClient;\n this.videoStreamIndex = videoStreamIndex;\n this.clientMetricReport = new ClientMetricReport(\n this.logger,\n this.videoStreamIndex,\n this.audioVideoController.configuration.credentials.attendeeId\n );\n this.intervalScheduler = new IntervalScheduler(this.interval);\n this.intervalScheduler.start(async () => {\n await this.getStatsWrapper();\n });\n return true;\n }\n\n /*\n * Stops the stats collector.\n */\n stop(): void {\n this.logger.info('Stopping StatsCollector');\n if (this.intervalScheduler) {\n this.intervalScheduler.stop();\n }\n this.intervalScheduler = null;\n }\n\n videoTileResolutionDidChange(attendeeId: string, newWidth: number, newHeight: number): void {\n this.resolutionMap.set(attendeeId, { width: newWidth, height: newHeight });\n }\n\n videoTileUnbound(attendeeId: string): void {\n this.resolutionMap.delete(attendeeId);\n }\n\n /**\n * Convert raw metrics to client metric report.\n */\n private updateMetricValues(rawMetricReport: RawMetricReport, isStream: boolean): void {\n const metricReport = isStream\n ? this.clientMetricReport.streamMetricReports[Number(rawMetricReport.ssrc)]\n : this.clientMetricReport.globalMetricReport;\n\n let metricMap: {\n [id: string]: {\n transform?: (metricName?: string, ssrc?: number) => number;\n type?: SdkMetric.Type;\n source?: string;\n };\n };\n if (isStream) {\n const mediaType = (metricReport as StreamMetricReport).mediaType;\n const direction = (metricReport as StreamMetricReport).direction;\n metricMap = this.clientMetricReport.getMetricMap(mediaType, direction);\n if (mediaType === MediaType.VIDEO && direction === Direction.DOWNSTREAM) {\n this.addRenderResolutionToVideoDownstreamMetrics(\n metricReport as StreamMetricReport,\n rawMetricReport.ssrc\n );\n }\n } else {\n metricMap = this.clientMetricReport.getMetricMap();\n }\n\n for (const rawMetric in rawMetricReport) {\n if (rawMetric in metricMap) {\n if (typeof rawMetricReport[rawMetric] === 'number') {\n metricReport.previousMetrics[rawMetric] = metricReport.currentMetrics[rawMetric];\n metricReport.currentMetrics[rawMetric] = rawMetricReport[rawMetric];\n } else if (typeof rawMetricReport[rawMetric] === 'string') {\n metricReport.currentStringMetrics[rawMetric] = rawMetricReport[rawMetric];\n } else if (typeof rawMetricReport[rawMetric] === 'object') {\n metricReport.previousObjectMetrics[rawMetric] =\n metricReport.currentObjectMetrics[rawMetric] === undefined\n ? rawMetricReport[rawMetric]\n : metricReport.currentObjectMetrics[rawMetric];\n metricReport.currentObjectMetrics[rawMetric] = rawMetricReport[rawMetric];\n } else {\n this.logger.error(\n `Unknown metric value type ${typeof rawMetricReport[rawMetric]} for metric ${rawMetric}`\n );\n }\n }\n }\n }\n\n /**\n * Converts RawMetricReport to StreamMetricReport and GlobalMetricReport and stores them as clientMetricReport.\n */\n private processRawMetricReports(rawMetricReports: RawMetricReport[]): void {\n this.clientMetricReport.currentSsrcs = {};\n const timeStamp = Date.now();\n for (const rawMetricReport of rawMetricReports) {\n if (this.isVideoSourceMetricReport(rawMetricReport)) {\n // Video source metrics will be added to all uplink video streams,\n // so this will be handled after all uplink metrics are processed.\n continue;\n }\n const isStream = this.isStreamRawMetricReport(rawMetricReport);\n if (isStream) {\n const existingStreamMetricReport = this.clientMetricReport.streamMetricReports[\n Number(rawMetricReport.ssrc)\n ];\n if (!existingStreamMetricReport) {\n const streamMetricReport = new StreamMetricReport();\n streamMetricReport.mediaType = this.getMediaType(rawMetricReport);\n streamMetricReport.direction = this.getDirectionType(rawMetricReport);\n if (\n streamMetricReport.mediaType === MediaType.VIDEO &&\n streamMetricReport.direction === Direction.UPSTREAM\n ) {\n streamMetricReport.streamId = this.videoStreamIndex.sendVideoStreamIdFromRid(\n rawMetricReport.rid\n );\n } else if (!this.videoStreamIndex.allStreams().empty()) {\n streamMetricReport.streamId = this.videoStreamIndex.streamIdForSSRC(\n Number(rawMetricReport.ssrc)\n );\n /* istanbul ignore else */\n if (this.videoStreamIndex.groupIdForSSRC !== undefined) {\n streamMetricReport.groupId = this.videoStreamIndex.groupIdForSSRC(\n Number(rawMetricReport.ssrc)\n );\n }\n }\n this.clientMetricReport.streamMetricReports[\n Number(rawMetricReport.ssrc)\n ] = streamMetricReport;\n } else {\n // Update stream ID in case we have overridden it locally in the case of remote video\n // updates completed without a negotiation\n if (\n existingStreamMetricReport.mediaType === MediaType.VIDEO &&\n existingStreamMetricReport.direction === Direction.UPSTREAM\n ) {\n existingStreamMetricReport.streamId = this.videoStreamIndex.sendVideoStreamIdFromRid(\n rawMetricReport.rid\n );\n } else {\n existingStreamMetricReport.streamId = this.videoStreamIndex.streamIdForSSRC(\n Number(rawMetricReport.ssrc)\n );\n }\n }\n this.clientMetricReport.currentSsrcs[Number(rawMetricReport.ssrc)] = 1;\n }\n this.updateMetricValues(rawMetricReport, isStream);\n }\n this.clientMetricReport.removeDestroyedSsrcs();\n this.clientMetricReport.previousTimestampMs = this.clientMetricReport.currentTimestampMs;\n this.clientMetricReport.currentTimestampMs = timeStamp;\n this.clientMetricReport.print();\n }\n\n /**\n * Add stream metric dimension frames derived from metrics\n */\n private addStreamMetricDimensionFrames(\n streamMetricFrame: SdkStreamMetricFrame,\n streamMetricReport: StreamMetricReport\n ): void {\n const streamDimensionMap = this.clientMetricReport.getStreamDimensionMap();\n for (const metricName in streamMetricReport.currentStringMetrics) {\n if (metricName in streamDimensionMap) {\n const dimensionFrame = SdkStreamDimension.create();\n dimensionFrame.type = streamDimensionMap[metricName];\n const dimensionValue = SdkDimensionValue.create();\n dimensionValue.stringValue = streamMetricReport.currentStringMetrics[metricName];\n dimensionFrame.value = dimensionValue;\n streamMetricFrame.dimensions.push(dimensionFrame);\n }\n }\n }\n\n /**\n * Packages a metric into the MetricFrame.\n */\n private addMetricFrame(\n metricName: string,\n clientMetricFrame: SdkClientMetricFrame,\n metricSpec: {\n transform?: (metricName?: string, ssrc?: number) => number;\n type?: SdkMetric.Type;\n source?: string;\n },\n ssrc?: number\n ): void {\n const type = metricSpec.type;\n const transform = metricSpec.transform;\n const sourceMetric = metricSpec.source;\n const streamMetricFramesLength = clientMetricFrame.streamMetricFrames.length;\n const latestStreamMetricFrame =\n clientMetricFrame.streamMetricFrames[streamMetricFramesLength - 1];\n if (type) {\n const metricFrame = SdkMetric.create();\n metricFrame.type = type;\n metricFrame.value = sourceMetric\n ? transform(sourceMetric, ssrc)\n : transform(metricName, ssrc);\n ssrc\n ? latestStreamMetricFrame.metrics.push(metricFrame)\n : clientMetricFrame.globalMetrics.push(metricFrame);\n }\n }\n\n /**\n * Packages metrics in GlobalMetricReport into the MetricFrame.\n */\n private addGlobalMetricsToProtobuf(clientMetricFrame: SdkClientMetricFrame): void {\n const metricMap = this.clientMetricReport.getMetricMap();\n for (const metricName in this.clientMetricReport.globalMetricReport.currentMetrics) {\n this.addMetricFrame(metricName, clientMetricFrame, metricMap[metricName]);\n }\n }\n\n /**\n * Packages metrics in StreamMetricReport into the MetricFrame.\n */\n private addStreamMetricsToProtobuf(clientMetricFrame: SdkClientMetricFrame): void {\n for (const ssrc in this.clientMetricReport.streamMetricReports) {\n const streamMetricReport = this.clientMetricReport.streamMetricReports[ssrc];\n const streamMetricFrame = SdkStreamMetricFrame.create();\n streamMetricFrame.streamId = streamMetricReport.streamId;\n streamMetricFrame.mediaType =\n streamMetricReport.mediaType === MediaType.AUDIO\n ? SdkStreamMediaType.AUDIO\n : SdkStreamMediaType.VIDEO;\n streamMetricFrame.metrics = [];\n this.addStreamMetricDimensionFrames(streamMetricFrame, streamMetricReport);\n clientMetricFrame.streamMetricFrames.push(streamMetricFrame);\n const metricMap = this.clientMetricReport.getMetricMap(\n streamMetricReport.mediaType,\n streamMetricReport.direction\n );\n\n // We loop over 'metricMap' instead of the members of 'streamMetricReport' because\n // the latter does not include metrics (e.g. audio downstream 'decoderLoss') that are\n // entirely dependent on other metrics (in this case 'concealedSamples' and 'totalSamplesReceived')\n // for their calculation\n for (const metricName in metricMap) {\n if (this.hasMetricDependenciesInReport(metricName, streamMetricReport)) {\n this.addMetricFrame(metricName, clientMetricFrame, metricMap[metricName], Number(ssrc));\n }\n }\n }\n }\n\n private hasMetricDependenciesInReport(\n metricName: string,\n streamMetricReport: StreamMetricReport\n ): boolean {\n // Unfortunately the metrics maps do not expose their dependencies so we have to manually\n // hard code them for metrics we know have them\n const isSpecialMetricAndHasDependencies =\n (metricName === 'decoderLoss' &&\n streamMetricReport.currentMetrics['concealedSamples'] !== undefined &&\n streamMetricReport.currentMetrics['totalSamplesReceived'] !== undefined) ||\n (metricName === 'jitterBufferMs' &&\n streamMetricReport.currentMetrics['jitterBufferDelay'] !== undefined &&\n streamMetricReport.currentMetrics['jitterBufferEmittedCount'] !== undefined);\n\n return (\n isSpecialMetricAndHasDependencies ||\n metricName in streamMetricReport.currentMetrics ||\n metricName in streamMetricReport.currentStringMetrics ||\n metricName in streamMetricReport.currentObjectMetrics\n );\n }\n\n /**\n * Packages all metrics into the MetricFrame.\n */\n private makeClientMetricProtobuf(): SdkClientMetricFrame {\n const clientMetricFrame = SdkClientMetricFrame.create();\n clientMetricFrame.globalMetrics = [];\n clientMetricFrame.streamMetricFrames = [];\n this.addGlobalMetricsToProtobuf(clientMetricFrame);\n this.addStreamMetricsToProtobuf(clientMetricFrame);\n return clientMetricFrame;\n }\n\n /**\n * Sends the MetricFrame to media backend via ProtoBuf.\n */\n private sendClientMetricProtobuf(clientMetricFrame: SdkClientMetricFrame): void {\n this.signalingClient.sendClientMetrics(clientMetricFrame);\n }\n\n /**\n * Checks if the type of RawMetricReport is stream related.\n */\n private isStreamRawMetricReport(rawMetricReport: RawMetricReport): boolean {\n return (\n [\n 'inbound-rtp',\n 'inbound-rtp-red',\n 'outbound-rtp',\n 'remote-inbound-rtp',\n 'remote-outbound-rtp',\n ].includes(rawMetricReport.type) || this.isVideoSourceMetricReport(rawMetricReport)\n );\n }\n\n /**\n * Returns the MediaType for a RawMetricReport.\n */\n private getMediaType(rawMetricReport: RawMetricReport): MediaType {\n return rawMetricReport.kind === 'audio' ? MediaType.AUDIO : MediaType.VIDEO;\n }\n\n /**\n * Returns the Direction for a RawMetricReport.\n */\n private getDirectionType(rawMetricReport: RawMetricReport): Direction {\n const { type } = rawMetricReport;\n return type === 'inbound-rtp' || type === 'remote-outbound-rtp' || type === 'inbound-rtp-red'\n ? Direction.DOWNSTREAM\n : Direction.UPSTREAM;\n }\n\n /**\n * Checks if a RawMetricReport belongs to certain types.\n */\n isValidStandardRawMetric(rawMetricReport: RawMetricReport): boolean {\n return (\n rawMetricReport.type === 'inbound-rtp' ||\n rawMetricReport.type === 'inbound-rtp-red' ||\n rawMetricReport.type === 'outbound-rtp' ||\n rawMetricReport.type === 'remote-inbound-rtp' ||\n rawMetricReport.type === 'remote-outbound-rtp' ||\n (rawMetricReport.type === 'candidate-pair' && rawMetricReport.state === 'succeeded') ||\n rawMetricReport.type === 'media-source'\n );\n }\n\n /**\n * Checks if a RawMetricReport is stream related.\n */\n isValidSsrc(rawMetricReport: RawMetricReport): boolean {\n let validSsrc = true;\n if (\n this.isStreamRawMetricReport(rawMetricReport) &&\n this.getDirectionType(rawMetricReport) === Direction.DOWNSTREAM &&\n this.getMediaType(rawMetricReport) === MediaType.VIDEO\n ) {\n validSsrc = this.videoStreamIndex.streamIdForSSRC(Number(rawMetricReport.ssrc)) > 0;\n }\n return validSsrc;\n }\n\n /**\n * Checks if a RawMetricReport is valid.\n */\n isValidRawMetricReport(rawMetricReport: RawMetricReport): boolean {\n return this.isValidStandardRawMetric(rawMetricReport) && this.isValidSsrc(rawMetricReport);\n }\n\n /**\n * Filters RawMetricReports and keeps the required parts.\n */\n filterRawMetricReports(rawMetricReports: RawMetricReport[]): RawMetricReport[] {\n const filteredRawMetricReports = [];\n for (const rawMetricReport of rawMetricReports) {\n if (this.isValidRawMetricReport(rawMetricReport)) {\n filteredRawMetricReports.push(rawMetricReport);\n }\n }\n return filteredRawMetricReports;\n }\n\n /**\n * Performs a series operation on RawMetricReport.\n */\n private handleRawMetricReports(rawMetricReports: RawMetricReport[]): void {\n const filteredRawMetricReports = this.filterRawMetricReports(rawMetricReports);\n this.logger.debug(() => {\n return `Filtered raw metrics : ${JSON.stringify(filteredRawMetricReports)}`;\n });\n\n // Add custom stats for reporting.\n const customStatsReports: CustomStatsReport[] = [];\n this.maybeAddRedRecoveryMetrics(customStatsReports);\n // We cannot use 'this.clientMetricsReport.getVideoUpstreamSsrc()' because the value\n // is dependent on the call to 'this.processRawMetricReports()' below, i.e. it depends on\n // the previous handling of raw metrics reports. This would lead to the addition of custom metrics\n // for streams that may no longer exist, e.g. after a reconnection, which will then stick around\n // perpetually\n const videoUpstreamSsrc = this.getVideoUpstreamSsrcFromRawMetricReports(\n filteredRawMetricReports\n );\n if (videoUpstreamSsrc !== null) {\n this.addVideoCodecDegradationMetrics(customStatsReports, videoUpstreamSsrc);\n }\n this.clientMetricReport.customStatsReports = customStatsReports;\n filteredRawMetricReports.push(...customStatsReports);\n\n this.processRawMetricReports(filteredRawMetricReports);\n this.updateVideoSourceMetrics(filteredRawMetricReports);\n\n const clientMetricFrame = this.makeClientMetricProtobuf();\n this.sendClientMetricProtobuf(clientMetricFrame);\n this.audioVideoController.forEachObserver(observer => {\n Maybe.of(observer.metricsDidReceive).map(f =>\n f.bind(observer)(this.clientMetricReport.clone())\n );\n });\n }\n\n /**\n * Gets raw WebRTC metrics.\n */\n private async getStatsWrapper(): Promise {\n if (!this.audioVideoController.rtcPeerConnection) {\n return;\n }\n\n const rawMetricReports: RawMetricReport[] = [];\n\n // @ts-ignore\n try {\n const report = await this.audioVideoController.rtcPeerConnection.getStats();\n this.clientMetricReport.rtcStatsReport = report;\n report.forEach((item: StatsReportItem) => {\n rawMetricReports.push(item);\n });\n this.handleRawMetricReports(rawMetricReports);\n } catch (error) {\n this.logger.error(error.message);\n }\n }\n\n overrideObservableMetric(name: string, value: number): void {\n this.clientMetricReport.overrideObservableMetric(name, value);\n }\n /**\n * Receives the red recovery metrics from DefaultTransceiver.\n */\n recoveryMetricsDidReceive(metricReport: RedundantAudioRecoveryMetricReport): void {\n this.redRecoveryMetricReport = metricReport;\n }\n\n /**\n * Adds RED recovery metrics to the raw webrtc stats report.\n */\n private maybeAddRedRecoveryMetrics(customStatsReports: CustomStatsReport[]): void {\n if (\n this.redRecoveryMetricReport.currentTimestampMs ===\n this.lastRedRecoveryMetricReportConsumedTimestampMs\n ) {\n // We have already sent the latest RED metrics.\n return;\n }\n\n // @ts-ignore\n customStatsReports.push({\n kind: 'audio',\n type: 'inbound-rtp-red',\n ssrc: this.redRecoveryMetricReport.ssrc,\n timestamp: this.redRecoveryMetricReport.currentTimestampMs,\n totalAudioPacketsLost: this.redRecoveryMetricReport.totalAudioPacketsLost,\n totalAudioPacketsExpected: this.redRecoveryMetricReport.totalAudioPacketsExpected,\n totalAudioPacketsRecoveredRed: this.redRecoveryMetricReport.totalAudioPacketsRecoveredRed,\n totalAudioPacketsRecoveredFec: this.redRecoveryMetricReport.totalAudioPacketsRecoveredFec,\n });\n\n this.lastRedRecoveryMetricReportConsumedTimestampMs = this.redRecoveryMetricReport.currentTimestampMs;\n }\n\n /**\n * Receive video codec degradation event due to high encode CPU usage\n * from MonitorTask and increment counter\n */\n videoCodecDegradationHighEncodeCpuDidReceive(): void {\n this.videoCodecDegradationHighEncodeCpuCount += 1;\n }\n\n /**\n * Receive video codec degradation event due to hardware encoder failure\n * from MonitorTask and increment counter\n */\n videoCodecDegradationEncodeFailureDidReceive(): void {\n this.videoCodecDegradationEncodeFailureCount += 1;\n }\n\n private addVideoCodecDegradationMetrics(\n customStatsReports: CustomStatsReport[],\n videoUpstreamSsrc: number\n ): void {\n customStatsReports.push({\n kind: 'video',\n type: 'outbound-rtp',\n ssrc: videoUpstreamSsrc,\n timestamp: Date.now(),\n videoCodecDegradationHighEncodeCpu: this.videoCodecDegradationHighEncodeCpuCount,\n videoCodecDegradationEncodeFailure: this.videoCodecDegradationEncodeFailureCount,\n });\n this.videoCodecDegradationHighEncodeCpuCount = 0;\n this.videoCodecDegradationEncodeFailureCount = 0;\n }\n\n private getVideoUpstreamSsrcFromRawMetricReports(\n rawMetricReports: RawMetricReport[]\n ): number | null {\n for (const rawMetricReport of rawMetricReports) {\n if (\n this.isStreamRawMetricReport(rawMetricReport) &&\n this.getMediaType(rawMetricReport) === MediaType.VIDEO &&\n this.getDirectionType(rawMetricReport) === Direction.UPSTREAM\n ) {\n return rawMetricReport.ssrc;\n }\n }\n return null;\n }\n\n private isVideoSourceMetricReport(rawMetricReport: RawMetricReport): boolean {\n return rawMetricReport.type === 'media-source' && rawMetricReport.kind === 'video';\n }\n\n private addRenderResolutionToVideoDownstreamMetrics(\n metricReport: StreamMetricReport,\n ssrc: number\n ): void {\n const streamId = this.videoStreamIndex.streamIdForSSRC(Number(ssrc));\n const attendeeId = this.videoStreamIndex.attendeeIdForStreamId(streamId);\n if (streamId === undefined || attendeeId === '') {\n this.logger.warn(`No attendee found for ssrc ${ssrc}`);\n return;\n }\n if (this.resolutionMap.has(attendeeId)) {\n metricReport.currentMetrics['videoRenderWidth'] = this.resolutionMap.get(attendeeId).width;\n metricReport.currentMetrics['videoRenderHeight'] = this.resolutionMap.get(attendeeId).height;\n }\n }\n\n private updateVideoSourceMetrics(rawMetricReports: RawMetricReport[]): void {\n for (const rawMetricReport of rawMetricReports) {\n if (this.isVideoSourceMetricReport(rawMetricReport)) {\n const videoUpstreamSsrcs = this.clientMetricReport.getVideoUpstreamSsrcs();\n if (videoUpstreamSsrcs.length === 0) {\n this.logger.warn('No video upstream ssrcs found');\n return;\n }\n for (const ssrc of videoUpstreamSsrcs) {\n this.clientMetricReport.streamMetricReports[ssrc].currentMetrics['videoInputWidth'] =\n rawMetricReport['width'];\n this.clientMetricReport.streamMetricReports[ssrc].currentMetrics['videoInputHeight'] =\n rawMetricReport['height'];\n }\n }\n }\n }\n}\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['inspector'] = {};\nAWS.Inspector = Service.defineService('inspector', ['2015-08-18*', '2016-02-16']);\nObject.defineProperty(apiLoader.services['inspector'], '2016-02-16', {\n get: function get() {\n var model = require('../apis/inspector-2016-02-16.min.json');\n model.paginators = require('../apis/inspector-2016-02-16.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.Inspector;\n","var AWS = require('../core');\n\nAWS.util.update(AWS.Lambda.prototype, {\n /**\n * @api private\n */\n setupRequestListeners: function setupRequestListeners(request) {\n if (request.operation === 'invoke') {\n request.addListener('extractData', AWS.util.convertPayloadToString);\n }\n }\n});\n\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar isCallable = require('../internals/is-callable');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar $Object = Object;\n\nmodule.exports = USE_SYMBOL_AS_UID ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n var $Symbol = getBuiltIn('Symbol');\n return isCallable($Symbol) && isPrototypeOf($Symbol.prototype, $Object(it));\n};\n","var now = require('performance-now')\n , root = typeof window === 'undefined' ? global : window\n , vendors = ['moz', 'webkit']\n , suffix = 'AnimationFrame'\n , raf = root['request' + suffix]\n , caf = root['cancel' + suffix] || root['cancelRequest' + suffix]\n\nfor(var i = 0; !raf && i < vendors.length; i++) {\n raf = root[vendors[i] + 'Request' + suffix]\n caf = root[vendors[i] + 'Cancel' + suffix]\n || root[vendors[i] + 'CancelRequest' + suffix]\n}\n\n// Some versions of FF have rAF but not cAF\nif(!raf || !caf) {\n var last = 0\n , id = 0\n , queue = []\n , frameDuration = 1000 / 60\n\n raf = function(callback) {\n if(queue.length === 0) {\n var _now = now()\n , next = Math.max(0, frameDuration - (_now - last))\n last = next + _now\n setTimeout(function() {\n var cp = queue.slice(0)\n // Clear queue here to prevent\n // callbacks from appending listeners\n // to the current frame's queue\n queue.length = 0\n for(var i = 0; i < cp.length; i++) {\n if(!cp[i].cancelled) {\n try{\n cp[i].callback(last)\n } catch(e) {\n setTimeout(function() { throw e }, 0)\n }\n }\n }\n }, Math.round(next))\n }\n queue.push({\n handle: ++id,\n callback: callback,\n cancelled: false\n })\n return id\n }\n\n caf = function(handle) {\n for(var i = 0; i < queue.length; i++) {\n if(queue[i].handle === handle) {\n queue[i].cancelled = true\n }\n }\n }\n}\n\nmodule.exports = function(fn) {\n // Wrap in a new function to prevent\n // `cancel` potentially being assigned\n // to the native rAF function\n return raf.call(root, fn)\n}\nmodule.exports.cancel = function() {\n caf.apply(root, arguments)\n}\nmodule.exports.polyfill = function(object) {\n if (!object) {\n object = root;\n }\n object.requestAnimationFrame = raf\n object.cancelAnimationFrame = caf\n}\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\nmodule.exports = function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n};\n","var warning = [\n 'The AWS SDK for JavaScript (v2) is in maintenance mode.',\n ' SDK releases are limited to address critical bug fixes and security issues only.\\n',\n 'Please migrate your code to use AWS SDK for JavaScript (v3).',\n 'For more information, check the blog post at https://a.co/cUPnyil'\n].join('\\n');\n\nmodule.exports = {\n suppress: false\n};\n\n/**\n * To suppress this message:\n * @example\n * require('aws-sdk/lib/maintenance_mode_message').suppress = true;\n */\nfunction emitWarning() {\n if (typeof process === 'undefined')\n return;\n\n // Skip maintenance mode message in Lambda environments\n if (\n typeof process.env === 'object' &&\n typeof process.env.AWS_EXECUTION_ENV !== 'undefined' &&\n process.env.AWS_EXECUTION_ENV.indexOf('AWS_Lambda_') === 0\n ) {\n return;\n }\n\n if (\n typeof process.env === 'object' &&\n typeof process.env.AWS_SDK_JS_SUPPRESS_MAINTENANCE_MODE_MESSAGE !== 'undefined'\n ) {\n return;\n }\n\n if (typeof process.emitWarning === 'function') {\n process.emitWarning(warning, {\n type: 'NOTE'\n });\n }\n}\n\nsetTimeout(function () {\n if (!module.exports.suppress) {\n emitWarning();\n }\n}, 0);\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\n/**\n * [[MeetingSessionTURNCredentials]] contains TURN credentials from the TURN server.\n */\nexport default class MeetingSessionTURNCredentials {\n username: string | null = null;\n password: string | null = null;\n ttl: number | null = null;\n uris: string[] | null = null;\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nexport enum CheckVideoInputFeedback {\n Succeeded,\n Failed,\n PermissionDenied,\n}\n\nexport default CheckVideoInputFeedback;\n","export var HttpAuthLocation;\n(function (HttpAuthLocation) {\n HttpAuthLocation[\"HEADER\"] = \"header\";\n HttpAuthLocation[\"QUERY\"] = \"query\";\n})(HttpAuthLocation || (HttpAuthLocation = {}));\n","export var HttpApiKeyAuthLocation;\n(function (HttpApiKeyAuthLocation) {\n HttpApiKeyAuthLocation[\"HEADER\"] = \"header\";\n HttpApiKeyAuthLocation[\"QUERY\"] = \"query\";\n})(HttpApiKeyAuthLocation || (HttpApiKeyAuthLocation = {}));\n","export var EndpointURLScheme;\n(function (EndpointURLScheme) {\n EndpointURLScheme[\"HTTP\"] = \"http\";\n EndpointURLScheme[\"HTTPS\"] = \"https\";\n})(EndpointURLScheme || (EndpointURLScheme = {}));\n","export var AlgorithmId;\n(function (AlgorithmId) {\n AlgorithmId[\"MD5\"] = \"md5\";\n AlgorithmId[\"CRC32\"] = \"crc32\";\n AlgorithmId[\"CRC32C\"] = \"crc32c\";\n AlgorithmId[\"SHA1\"] = \"sha1\";\n AlgorithmId[\"SHA256\"] = \"sha256\";\n})(AlgorithmId || (AlgorithmId = {}));\nexport const getChecksumConfiguration = (runtimeConfig) => {\n const checksumAlgorithms = [];\n if (runtimeConfig.sha256 !== undefined) {\n checksumAlgorithms.push({\n algorithmId: () => AlgorithmId.SHA256,\n checksumConstructor: () => runtimeConfig.sha256,\n });\n }\n if (runtimeConfig.md5 != undefined) {\n checksumAlgorithms.push({\n algorithmId: () => AlgorithmId.MD5,\n checksumConstructor: () => runtimeConfig.md5,\n });\n }\n return {\n addChecksumAlgorithm(algo) {\n checksumAlgorithms.push(algo);\n },\n checksumAlgorithms() {\n return checksumAlgorithms;\n },\n };\n};\nexport const resolveChecksumRuntimeConfig = (clientConfig) => {\n const runtimeConfig = {};\n clientConfig.checksumAlgorithms().forEach((checksumAlgorithm) => {\n runtimeConfig[checksumAlgorithm.algorithmId()] = checksumAlgorithm.checksumConstructor();\n });\n return runtimeConfig;\n};\n","export var FieldPosition;\n(function (FieldPosition) {\n FieldPosition[FieldPosition[\"HEADER\"] = 0] = \"HEADER\";\n FieldPosition[FieldPosition[\"TRAILER\"] = 1] = \"TRAILER\";\n})(FieldPosition || (FieldPosition = {}));\n","export const SMITHY_CONTEXT_KEY = \"__smithy_context\";\n","export var IniSectionType;\n(function (IniSectionType) {\n IniSectionType[\"PROFILE\"] = \"profile\";\n IniSectionType[\"SSO_SESSION\"] = \"sso-session\";\n IniSectionType[\"SERVICES\"] = \"services\";\n})(IniSectionType || (IniSectionType = {}));\n","export var RequestHandlerProtocol;\n(function (RequestHandlerProtocol) {\n RequestHandlerProtocol[\"HTTP_0_9\"] = \"http/0.9\";\n RequestHandlerProtocol[\"HTTP_1_0\"] = \"http/1.0\";\n RequestHandlerProtocol[\"TDS_8_0\"] = \"tds/8.0\";\n})(RequestHandlerProtocol || (RequestHandlerProtocol = {}));\n","export class HttpRequest {\n constructor(options) {\n this.method = options.method || \"GET\";\n this.hostname = options.hostname || \"localhost\";\n this.port = options.port;\n this.query = options.query || {};\n this.headers = options.headers || {};\n this.body = options.body;\n this.protocol = options.protocol\n ? options.protocol.slice(-1) !== \":\"\n ? `${options.protocol}:`\n : options.protocol\n : \"https:\";\n this.path = options.path ? (options.path.charAt(0) !== \"/\" ? `/${options.path}` : options.path) : \"/\";\n this.username = options.username;\n this.password = options.password;\n this.fragment = options.fragment;\n }\n static clone(request) {\n const cloned = new HttpRequest({\n ...request,\n headers: { ...request.headers },\n });\n if (cloned.query) {\n cloned.query = cloneQuery(cloned.query);\n }\n return cloned;\n }\n static isInstance(request) {\n if (!request) {\n return false;\n }\n const req = request;\n return (\"method\" in req &&\n \"protocol\" in req &&\n \"hostname\" in req &&\n \"path\" in req &&\n typeof req[\"query\"] === \"object\" &&\n typeof req[\"headers\"] === \"object\");\n }\n clone() {\n return HttpRequest.clone(this);\n }\n}\nfunction cloneQuery(query) {\n return Object.keys(query).reduce((carry, paramName) => {\n const param = query[paramName];\n return {\n ...carry,\n [paramName]: Array.isArray(param) ? [...param] : param,\n };\n }, {});\n}\n","export class HttpResponse {\n constructor(options) {\n this.statusCode = options.statusCode;\n this.reason = options.reason;\n this.headers = options.headers || {};\n this.body = options.body;\n }\n static isInstance(response) {\n if (!response)\n return false;\n const resp = response;\n return typeof resp.statusCode === \"number\" && typeof resp.headers === \"object\";\n }\n}\n","import { HttpRequest } from \"@smithy/protocol-http\";\nexport function resolveHostHeaderConfig(input) {\n return input;\n}\nexport const hostHeaderMiddleware = (options) => (next) => async (args) => {\n if (!HttpRequest.isInstance(args.request))\n return next(args);\n const { request } = args;\n const { handlerProtocol = \"\" } = options.requestHandler.metadata || {};\n if (handlerProtocol.indexOf(\"h2\") >= 0 && !request.headers[\":authority\"]) {\n delete request.headers[\"host\"];\n request.headers[\":authority\"] = request.hostname + (request.port ? \":\" + request.port : \"\");\n }\n else if (!request.headers[\"host\"]) {\n let host = request.hostname;\n if (request.port != null)\n host += `:${request.port}`;\n request.headers[\"host\"] = host;\n }\n return next(args);\n};\nexport const hostHeaderMiddlewareOptions = {\n name: \"hostHeaderMiddleware\",\n step: \"build\",\n priority: \"low\",\n tags: [\"HOST\"],\n override: true,\n};\nexport const getHostHeaderPlugin = (options) => ({\n applyToStack: (clientStack) => {\n clientStack.add(hostHeaderMiddleware(options), hostHeaderMiddlewareOptions);\n },\n});\n","export const loggerMiddleware = () => (next, context) => async (args) => {\n try {\n const response = await next(args);\n const { clientName, commandName, logger, dynamoDbDocumentClientOptions = {} } = context;\n const { overrideInputFilterSensitiveLog, overrideOutputFilterSensitiveLog } = dynamoDbDocumentClientOptions;\n const inputFilterSensitiveLog = overrideInputFilterSensitiveLog ?? context.inputFilterSensitiveLog;\n const outputFilterSensitiveLog = overrideOutputFilterSensitiveLog ?? context.outputFilterSensitiveLog;\n const { $metadata, ...outputWithoutMetadata } = response.output;\n logger?.info?.({\n clientName,\n commandName,\n input: inputFilterSensitiveLog(args.input),\n output: outputFilterSensitiveLog(outputWithoutMetadata),\n metadata: $metadata,\n });\n return response;\n }\n catch (error) {\n const { clientName, commandName, logger, dynamoDbDocumentClientOptions = {} } = context;\n const { overrideInputFilterSensitiveLog } = dynamoDbDocumentClientOptions;\n const inputFilterSensitiveLog = overrideInputFilterSensitiveLog ?? context.inputFilterSensitiveLog;\n logger?.error?.({\n clientName,\n commandName,\n input: inputFilterSensitiveLog(args.input),\n error,\n metadata: error.$metadata,\n });\n throw error;\n }\n};\nexport const loggerMiddlewareOptions = {\n name: \"loggerMiddleware\",\n tags: [\"LOGGER\"],\n step: \"initialize\",\n override: true,\n};\nexport const getLoggerPlugin = (options) => ({\n applyToStack: (clientStack) => {\n clientStack.add(loggerMiddleware(), loggerMiddlewareOptions);\n },\n});\n","import { HttpRequest } from \"@smithy/protocol-http\";\nconst TRACE_ID_HEADER_NAME = \"X-Amzn-Trace-Id\";\nconst ENV_LAMBDA_FUNCTION_NAME = \"AWS_LAMBDA_FUNCTION_NAME\";\nconst ENV_TRACE_ID = \"_X_AMZN_TRACE_ID\";\nexport const recursionDetectionMiddleware = (options) => (next) => async (args) => {\n const { request } = args;\n if (!HttpRequest.isInstance(request) || options.runtime !== \"node\") {\n return next(args);\n }\n const traceIdHeader = Object.keys(request.headers ?? {}).find((h) => h.toLowerCase() === TRACE_ID_HEADER_NAME.toLowerCase()) ??\n TRACE_ID_HEADER_NAME;\n if (request.headers.hasOwnProperty(traceIdHeader)) {\n return next(args);\n }\n const functionName = process.env[ENV_LAMBDA_FUNCTION_NAME];\n const traceId = process.env[ENV_TRACE_ID];\n const nonEmptyString = (str) => typeof str === \"string\" && str.length > 0;\n if (nonEmptyString(functionName) && nonEmptyString(traceId)) {\n request.headers[TRACE_ID_HEADER_NAME] = traceId;\n }\n return next({\n ...args,\n request,\n });\n};\nexport const addRecursionDetectionMiddlewareOptions = {\n step: \"build\",\n tags: [\"RECURSION_DETECTION\"],\n name: \"recursionDetectionMiddleware\",\n override: true,\n priority: \"low\",\n};\nexport const getRecursionDetectionPlugin = (options) => ({\n applyToStack: (clientStack) => {\n clientStack.add(recursionDetectionMiddleware(options), addRecursionDetectionMiddlewareOptions);\n },\n});\n","import { SMITHY_CONTEXT_KEY } from \"@smithy/types\";\nexport const getSmithyContext = (context) => context[SMITHY_CONTEXT_KEY] || (context[SMITHY_CONTEXT_KEY] = {});\n","export const normalizeProvider = (input) => {\n if (typeof input === \"function\")\n return input;\n const promisified = Promise.resolve(input);\n return () => promisified;\n};\n","import { SMITHY_CONTEXT_KEY, } from \"@smithy/types\";\nimport { getSmithyContext } from \"@smithy/util-middleware\";\nfunction convertHttpAuthSchemesToMap(httpAuthSchemes) {\n const map = new Map();\n for (const scheme of httpAuthSchemes) {\n map.set(scheme.schemeId, scheme);\n }\n return map;\n}\nexport const httpAuthSchemeMiddleware = (config, mwOptions) => (next, context) => async (args) => {\n const options = config.httpAuthSchemeProvider(await mwOptions.httpAuthSchemeParametersProvider(config, context, args.input));\n const authSchemes = convertHttpAuthSchemesToMap(config.httpAuthSchemes);\n const smithyContext = getSmithyContext(context);\n const failureReasons = [];\n for (const option of options) {\n const scheme = authSchemes.get(option.schemeId);\n if (!scheme) {\n failureReasons.push(`HttpAuthScheme \\`${option.schemeId}\\` was not enabled for this service.`);\n continue;\n }\n const identityProvider = scheme.identityProvider(await mwOptions.identityProviderConfigProvider(config));\n if (!identityProvider) {\n failureReasons.push(`HttpAuthScheme \\`${option.schemeId}\\` did not have an IdentityProvider configured.`);\n continue;\n }\n const { identityProperties = {}, signingProperties = {} } = option.propertiesExtractor?.(config, context) || {};\n option.identityProperties = Object.assign(option.identityProperties || {}, identityProperties);\n option.signingProperties = Object.assign(option.signingProperties || {}, signingProperties);\n smithyContext.selectedHttpAuthScheme = {\n httpAuthOption: option,\n identity: await identityProvider(option.identityProperties),\n signer: scheme.signer,\n };\n break;\n }\n if (!smithyContext.selectedHttpAuthScheme) {\n throw new Error(failureReasons.join(\"\\n\"));\n }\n return next(args);\n};\n","import { httpAuthSchemeMiddleware } from \"./httpAuthSchemeMiddleware\";\nexport const httpAuthSchemeEndpointRuleSetMiddlewareOptions = {\n step: \"serialize\",\n tags: [\"HTTP_AUTH_SCHEME\"],\n name: \"httpAuthSchemeMiddleware\",\n override: true,\n relation: \"before\",\n toMiddleware: \"endpointV2Middleware\",\n};\nexport const getHttpAuthSchemeEndpointRuleSetPlugin = (config, { httpAuthSchemeParametersProvider, identityProviderConfigProvider, }) => ({\n applyToStack: (clientStack) => {\n clientStack.addRelativeTo(httpAuthSchemeMiddleware(config, {\n httpAuthSchemeParametersProvider,\n identityProviderConfigProvider,\n }), httpAuthSchemeEndpointRuleSetMiddlewareOptions);\n },\n});\n","import { deserializerMiddleware } from \"./deserializerMiddleware\";\nimport { serializerMiddleware } from \"./serializerMiddleware\";\nexport const deserializerMiddlewareOption = {\n name: \"deserializerMiddleware\",\n step: \"deserialize\",\n tags: [\"DESERIALIZER\"],\n override: true,\n};\nexport const serializerMiddlewareOption = {\n name: \"serializerMiddleware\",\n step: \"serialize\",\n tags: [\"SERIALIZER\"],\n override: true,\n};\nexport function getSerdePlugin(config, serializer, deserializer) {\n return {\n applyToStack: (commandStack) => {\n commandStack.add(deserializerMiddleware(config, deserializer), deserializerMiddlewareOption);\n commandStack.add(serializerMiddleware(config, serializer), serializerMiddlewareOption);\n },\n };\n}\n","export const deserializerMiddleware = (options, deserializer) => (next, context) => async (args) => {\n const { response } = await next(args);\n try {\n const parsed = await deserializer(response, options);\n return {\n response,\n output: parsed,\n };\n }\n catch (error) {\n Object.defineProperty(error, \"$response\", {\n value: response,\n });\n if (!(\"$metadata\" in error)) {\n const hint = `Deserialization error: to see the raw response, inspect the hidden field {error}.$response on this object.`;\n try {\n error.message += \"\\n \" + hint;\n }\n catch (e) {\n if (!context.logger || context.logger?.constructor?.name === \"NoOpLogger\") {\n console.warn(hint);\n }\n else {\n context.logger?.warn?.(hint);\n }\n }\n if (typeof error.$responseBodyText !== \"undefined\") {\n if (error.$response) {\n error.$response.body = error.$responseBodyText;\n }\n }\n }\n throw error;\n }\n};\n","export const serializerMiddleware = (options, serializer) => (next, context) => async (args) => {\n const endpoint = context.endpointV2?.url && options.urlParser\n ? async () => options.urlParser(context.endpointV2.url)\n : options.endpoint;\n if (!endpoint) {\n throw new Error(\"No valid endpoint provider available.\");\n }\n const request = await serializer(args.input, { ...options, endpoint });\n return next({\n ...args,\n request,\n });\n};\n","import { serializerMiddlewareOption } from \"@smithy/middleware-serde\";\nimport { httpAuthSchemeMiddleware } from \"./httpAuthSchemeMiddleware\";\nexport const httpAuthSchemeMiddlewareOptions = {\n step: \"serialize\",\n tags: [\"HTTP_AUTH_SCHEME\"],\n name: \"httpAuthSchemeMiddleware\",\n override: true,\n relation: \"before\",\n toMiddleware: serializerMiddlewareOption.name,\n};\nexport const getHttpAuthSchemePlugin = (config, { httpAuthSchemeParametersProvider, identityProviderConfigProvider, }) => ({\n applyToStack: (clientStack) => {\n clientStack.addRelativeTo(httpAuthSchemeMiddleware(config, {\n httpAuthSchemeParametersProvider,\n identityProviderConfigProvider,\n }), httpAuthSchemeMiddlewareOptions);\n },\n});\n","import { HttpRequest } from \"@smithy/protocol-http\";\nimport { SMITHY_CONTEXT_KEY, } from \"@smithy/types\";\nimport { getSmithyContext } from \"@smithy/util-middleware\";\nconst defaultErrorHandler = (signingProperties) => (error) => {\n throw error;\n};\nconst defaultSuccessHandler = (httpResponse, signingProperties) => { };\nexport const httpSigningMiddleware = (config) => (next, context) => async (args) => {\n if (!HttpRequest.isInstance(args.request)) {\n return next(args);\n }\n const smithyContext = getSmithyContext(context);\n const scheme = smithyContext.selectedHttpAuthScheme;\n if (!scheme) {\n throw new Error(`No HttpAuthScheme was selected: unable to sign request`);\n }\n const { httpAuthOption: { signingProperties = {} }, identity, signer, } = scheme;\n const output = await next({\n ...args,\n request: await signer.sign(args.request, identity, signingProperties),\n }).catch((signer.errorHandler || defaultErrorHandler)(signingProperties));\n (signer.successHandler || defaultSuccessHandler)(output.response, signingProperties);\n return output;\n};\n","import { httpSigningMiddleware } from \"./httpSigningMiddleware\";\nexport const httpSigningMiddlewareOptions = {\n step: \"finalizeRequest\",\n tags: [\"HTTP_SIGNING\"],\n name: \"httpSigningMiddleware\",\n aliases: [\"apiKeyMiddleware\", \"tokenMiddleware\", \"awsAuthMiddleware\"],\n override: true,\n relation: \"after\",\n toMiddleware: \"retryMiddleware\",\n};\nexport const getHttpSigningPlugin = (config) => ({\n applyToStack: (clientStack) => {\n clientStack.addRelativeTo(httpSigningMiddleware(config), httpSigningMiddlewareOptions);\n },\n});\n","export const normalizeProvider = (input) => {\n if (typeof input === \"function\")\n return input;\n const promisified = Promise.resolve(input);\n return () => promisified;\n};\n","const makePagedClientRequest = async (CommandCtor, client, input, withCommand = (_) => _, ...args) => {\n let command = new CommandCtor(input);\n command = withCommand(command) ?? command;\n return await client.send(command, ...args);\n};\nexport function createPaginator(ClientCtor, CommandCtor, inputTokenName, outputTokenName, pageSizeTokenName) {\n return async function* paginateOperation(config, input, ...additionalArguments) {\n const _input = input;\n let token = config.startingToken ?? _input[inputTokenName];\n let hasNext = true;\n let page;\n while (hasNext) {\n _input[inputTokenName] = token;\n if (pageSizeTokenName) {\n _input[pageSizeTokenName] = _input[pageSizeTokenName] ?? config.pageSize;\n }\n if (config.client instanceof ClientCtor) {\n page = await makePagedClientRequest(CommandCtor, config.client, input, config.withCommand, ...additionalArguments);\n }\n else {\n throw new Error(`Invalid client, expected instance of ${ClientCtor.name}`);\n }\n yield page;\n const prevToken = token;\n token = get(page, outputTokenName);\n hasNext = !!(token && (!config.stopOnSameToken || token !== prevToken));\n }\n return undefined;\n };\n}\nconst get = (fromObject, path) => {\n let cursor = fromObject;\n const pathComponents = path.split(\".\");\n for (const step of pathComponents) {\n if (!cursor || typeof cursor !== \"object\") {\n return undefined;\n }\n cursor = cursor[step];\n }\n return cursor;\n};\n","const alphabetByEncoding = {};\nconst alphabetByValue = new Array(64);\nfor (let i = 0, start = \"A\".charCodeAt(0), limit = \"Z\".charCodeAt(0); i + start <= limit; i++) {\n const char = String.fromCharCode(i + start);\n alphabetByEncoding[char] = i;\n alphabetByValue[i] = char;\n}\nfor (let i = 0, start = \"a\".charCodeAt(0), limit = \"z\".charCodeAt(0); i + start <= limit; i++) {\n const char = String.fromCharCode(i + start);\n const index = i + 26;\n alphabetByEncoding[char] = index;\n alphabetByValue[index] = char;\n}\nfor (let i = 0; i < 10; i++) {\n alphabetByEncoding[i.toString(10)] = i + 52;\n const char = i.toString(10);\n const index = i + 52;\n alphabetByEncoding[char] = index;\n alphabetByValue[index] = char;\n}\nalphabetByEncoding[\"+\"] = 62;\nalphabetByValue[62] = \"+\";\nalphabetByEncoding[\"/\"] = 63;\nalphabetByValue[63] = \"/\";\nconst bitsPerLetter = 6;\nconst bitsPerByte = 8;\nconst maxLetterValue = 0b111111;\nexport { alphabetByEncoding, alphabetByValue, bitsPerLetter, bitsPerByte, maxLetterValue };\n","import { alphabetByEncoding, bitsPerByte, bitsPerLetter } from \"./constants.browser\";\nexport const fromBase64 = (input) => {\n let totalByteLength = (input.length / 4) * 3;\n if (input.slice(-2) === \"==\") {\n totalByteLength -= 2;\n }\n else if (input.slice(-1) === \"=\") {\n totalByteLength--;\n }\n const out = new ArrayBuffer(totalByteLength);\n const dataView = new DataView(out);\n for (let i = 0; i < input.length; i += 4) {\n let bits = 0;\n let bitLength = 0;\n for (let j = i, limit = i + 3; j <= limit; j++) {\n if (input[j] !== \"=\") {\n if (!(input[j] in alphabetByEncoding)) {\n throw new TypeError(`Invalid character ${input[j]} in base64 string.`);\n }\n bits |= alphabetByEncoding[input[j]] << ((limit - j) * bitsPerLetter);\n bitLength += bitsPerLetter;\n }\n else {\n bits >>= bitsPerLetter;\n }\n }\n const chunkOffset = (i / 4) * 3;\n bits >>= bitLength % bitsPerByte;\n const byteLength = Math.floor(bitLength / bitsPerByte);\n for (let k = 0; k < byteLength; k++) {\n const offset = (byteLength - k - 1) * bitsPerByte;\n dataView.setUint8(chunkOffset + k, (bits & (255 << offset)) >> offset);\n }\n }\n return new Uint8Array(out);\n};\n","export const fromUtf8 = (input) => new TextEncoder().encode(input);\n","import { fromUtf8 } from \"@smithy/util-utf8\";\nimport { alphabetByValue, bitsPerByte, bitsPerLetter, maxLetterValue } from \"./constants.browser\";\nexport function toBase64(_input) {\n let input;\n if (typeof _input === \"string\") {\n input = fromUtf8(_input);\n }\n else {\n input = _input;\n }\n const isArrayLike = typeof input === \"object\" && typeof input.length === \"number\";\n const isUint8Array = typeof input === \"object\" &&\n typeof input.byteOffset === \"number\" &&\n typeof input.byteLength === \"number\";\n if (!isArrayLike && !isUint8Array) {\n throw new Error(\"@smithy/util-base64: toBase64 encoder function only accepts string | Uint8Array.\");\n }\n let str = \"\";\n for (let i = 0; i < input.length; i += 3) {\n let bits = 0;\n let bitLength = 0;\n for (let j = i, limit = Math.min(i + 3, input.length); j < limit; j++) {\n bits |= input[j] << ((limit - j - 1) * bitsPerByte);\n bitLength += bitsPerByte;\n }\n const bitClusterCount = Math.ceil(bitLength / bitsPerLetter);\n bits <<= bitClusterCount * bitsPerLetter - bitLength;\n for (let k = 1; k <= bitClusterCount; k++) {\n const offset = (bitClusterCount - k) * bitsPerLetter;\n str += alphabetByValue[(bits & (maxLetterValue << offset)) >> offset];\n }\n str += \"==\".slice(0, 4 - bitClusterCount);\n }\n return str;\n}\n","export const toUtf8 = (input) => {\n if (typeof input === \"string\") {\n return input;\n }\n if (typeof input !== \"object\" || typeof input.byteOffset !== \"number\" || typeof input.byteLength !== \"number\") {\n throw new Error(\"@smithy/util-utf8: toUtf8 encoder function only accepts string | Uint8Array.\");\n }\n return new TextDecoder(\"utf-8\").decode(input);\n};\n","import { transformFromString, transformToString } from \"./transforms\";\nexport class Uint8ArrayBlobAdapter extends Uint8Array {\n static fromString(source, encoding = \"utf-8\") {\n switch (typeof source) {\n case \"string\":\n return transformFromString(source, encoding);\n default:\n throw new Error(`Unsupported conversion from ${typeof source} to Uint8ArrayBlobAdapter.`);\n }\n }\n static mutate(source) {\n Object.setPrototypeOf(source, Uint8ArrayBlobAdapter.prototype);\n return source;\n }\n transformToString(encoding = \"utf-8\") {\n return transformToString(this, encoding);\n }\n}\n","import { fromBase64, toBase64 } from \"@smithy/util-base64\";\nimport { fromUtf8, toUtf8 } from \"@smithy/util-utf8\";\nimport { Uint8ArrayBlobAdapter } from \"./Uint8ArrayBlobAdapter\";\nexport function transformToString(payload, encoding = \"utf-8\") {\n if (encoding === \"base64\") {\n return toBase64(payload);\n }\n return toUtf8(payload);\n}\nexport function transformFromString(str, encoding) {\n if (encoding === \"base64\") {\n return Uint8ArrayBlobAdapter.mutate(fromBase64(str));\n }\n return Uint8ArrayBlobAdapter.mutate(fromUtf8(str));\n}\n","const ReadableStreamRef = typeof ReadableStream === \"function\" ? ReadableStream : function () { };\nexport class ChecksumStream extends ReadableStreamRef {\n}\n","import { toBase64 } from \"@smithy/util-base64\";\nimport { isReadableStream } from \"../stream-type-check\";\nimport { ChecksumStream } from \"./ChecksumStream.browser\";\nexport const createChecksumStream = ({ expectedChecksum, checksum, source, checksumSourceLocation, base64Encoder, }) => {\n if (!isReadableStream(source)) {\n throw new Error(`@smithy/util-stream: unsupported source type ${source?.constructor?.name ?? source} in ChecksumStream.`);\n }\n const encoder = base64Encoder ?? toBase64;\n if (typeof TransformStream !== \"function\") {\n throw new Error(\"@smithy/util-stream: unable to instantiate ChecksumStream because API unavailable: ReadableStream/TransformStream.\");\n }\n const transform = new TransformStream({\n start() { },\n async transform(chunk, controller) {\n checksum.update(chunk);\n controller.enqueue(chunk);\n },\n async flush(controller) {\n const digest = await checksum.digest();\n const received = encoder(digest);\n if (expectedChecksum !== received) {\n const error = new Error(`Checksum mismatch: expected \"${expectedChecksum}\" but received \"${received}\"` +\n ` in response header \"${checksumSourceLocation}\".`);\n controller.error(error);\n }\n else {\n controller.terminate();\n }\n },\n });\n source.pipeThrough(transform);\n const readable = transform.readable;\n Object.setPrototypeOf(readable, ChecksumStream.prototype);\n return readable;\n};\n","export const escapeUri = (uri) => encodeURIComponent(uri).replace(/[!'()*]/g, hexEncode);\nconst hexEncode = (c) => `%${c.charCodeAt(0).toString(16).toUpperCase()}`;\n","export function createRequest(url, requestOptions) {\n return new Request(url, requestOptions);\n}\n","export function requestTimeout(timeoutInMs = 0) {\n return new Promise((resolve, reject) => {\n if (timeoutInMs) {\n setTimeout(() => {\n const timeoutError = new Error(`Request did not complete within ${timeoutInMs} ms`);\n timeoutError.name = \"TimeoutError\";\n reject(timeoutError);\n }, timeoutInMs);\n }\n });\n}\n","import { HttpResponse } from \"@smithy/protocol-http\";\nimport { buildQueryString } from \"@smithy/querystring-builder\";\nimport { createRequest } from \"./create-request\";\nimport { requestTimeout } from \"./request-timeout\";\nexport const keepAliveSupport = {\n supported: undefined,\n};\nexport class FetchHttpHandler {\n static create(instanceOrOptions) {\n if (typeof instanceOrOptions?.handle === \"function\") {\n return instanceOrOptions;\n }\n return new FetchHttpHandler(instanceOrOptions);\n }\n constructor(options) {\n if (typeof options === \"function\") {\n this.configProvider = options().then((opts) => opts || {});\n }\n else {\n this.config = options ?? {};\n this.configProvider = Promise.resolve(this.config);\n }\n if (keepAliveSupport.supported === undefined) {\n keepAliveSupport.supported = Boolean(typeof Request !== \"undefined\" && \"keepalive\" in createRequest(\"https://[::1]\"));\n }\n }\n destroy() {\n }\n async handle(request, { abortSignal } = {}) {\n if (!this.config) {\n this.config = await this.configProvider;\n }\n const requestTimeoutInMs = this.config.requestTimeout;\n const keepAlive = this.config.keepAlive === true;\n const credentials = this.config.credentials;\n if (abortSignal?.aborted) {\n const abortError = new Error(\"Request aborted\");\n abortError.name = \"AbortError\";\n return Promise.reject(abortError);\n }\n let path = request.path;\n const queryString = buildQueryString(request.query || {});\n if (queryString) {\n path += `?${queryString}`;\n }\n if (request.fragment) {\n path += `#${request.fragment}`;\n }\n let auth = \"\";\n if (request.username != null || request.password != null) {\n const username = request.username ?? \"\";\n const password = request.password ?? \"\";\n auth = `${username}:${password}@`;\n }\n const { port, method } = request;\n const url = `${request.protocol}//${auth}${request.hostname}${port ? `:${port}` : \"\"}${path}`;\n const body = method === \"GET\" || method === \"HEAD\" ? undefined : request.body;\n const requestOptions = {\n body,\n headers: new Headers(request.headers),\n method: method,\n credentials,\n };\n if (this.config?.cache) {\n requestOptions.cache = this.config.cache;\n }\n if (body) {\n requestOptions.duplex = \"half\";\n }\n if (typeof AbortController !== \"undefined\") {\n requestOptions.signal = abortSignal;\n }\n if (keepAliveSupport.supported) {\n requestOptions.keepalive = keepAlive;\n }\n if (typeof this.config.requestInit === \"function\") {\n Object.assign(requestOptions, this.config.requestInit(request));\n }\n let removeSignalEventListener = () => { };\n const fetchRequest = createRequest(url, requestOptions);\n const raceOfPromises = [\n fetch(fetchRequest).then((response) => {\n const fetchHeaders = response.headers;\n const transformedHeaders = {};\n for (const pair of fetchHeaders.entries()) {\n transformedHeaders[pair[0]] = pair[1];\n }\n const hasReadableStream = response.body != undefined;\n if (!hasReadableStream) {\n return response.blob().then((body) => ({\n response: new HttpResponse({\n headers: transformedHeaders,\n reason: response.statusText,\n statusCode: response.status,\n body,\n }),\n }));\n }\n return {\n response: new HttpResponse({\n headers: transformedHeaders,\n reason: response.statusText,\n statusCode: response.status,\n body: response.body,\n }),\n };\n }),\n requestTimeout(requestTimeoutInMs),\n ];\n if (abortSignal) {\n raceOfPromises.push(new Promise((resolve, reject) => {\n const onAbort = () => {\n const abortError = new Error(\"Request aborted\");\n abortError.name = \"AbortError\";\n reject(abortError);\n };\n if (typeof abortSignal.addEventListener === \"function\") {\n const signal = abortSignal;\n signal.addEventListener(\"abort\", onAbort, { once: true });\n removeSignalEventListener = () => signal.removeEventListener(\"abort\", onAbort);\n }\n else {\n abortSignal.onabort = onAbort;\n }\n }));\n }\n return Promise.race(raceOfPromises).finally(removeSignalEventListener);\n }\n updateHttpClientConfig(key, value) {\n this.config = undefined;\n this.configProvider = this.configProvider.then((config) => {\n config[key] = value;\n return config;\n });\n }\n httpHandlerConfigs() {\n return this.config ?? {};\n }\n}\n","import { escapeUri } from \"@smithy/util-uri-escape\";\nexport function buildQueryString(query) {\n const parts = [];\n for (let key of Object.keys(query).sort()) {\n const value = query[key];\n key = escapeUri(key);\n if (Array.isArray(value)) {\n for (let i = 0, iLen = value.length; i < iLen; i++) {\n parts.push(`${key}=${escapeUri(value[i])}`);\n }\n }\n else {\n let qsEntry = key;\n if (value || typeof value === \"string\") {\n qsEntry += `=${escapeUri(value)}`;\n }\n parts.push(qsEntry);\n }\n }\n return parts.join(\"&\");\n}\n","import { fromBase64 } from \"@smithy/util-base64\";\nexport const streamCollector = async (stream) => {\n if ((typeof Blob === \"function\" && stream instanceof Blob) || stream.constructor?.name === \"Blob\") {\n if (Blob.prototype.arrayBuffer !== undefined) {\n return new Uint8Array(await stream.arrayBuffer());\n }\n return collectBlob(stream);\n }\n return collectStream(stream);\n};\nasync function collectBlob(blob) {\n const base64 = await readToBase64(blob);\n const arrayBuffer = fromBase64(base64);\n return new Uint8Array(arrayBuffer);\n}\nasync function collectStream(stream) {\n const chunks = [];\n const reader = stream.getReader();\n let isDone = false;\n let length = 0;\n while (!isDone) {\n const { done, value } = await reader.read();\n if (value) {\n chunks.push(value);\n length += value.length;\n }\n isDone = done;\n }\n const collected = new Uint8Array(length);\n let offset = 0;\n for (const chunk of chunks) {\n collected.set(chunk, offset);\n offset += chunk.length;\n }\n return collected;\n}\nfunction readToBase64(blob) {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.onloadend = () => {\n if (reader.readyState !== 2) {\n return reject(new Error(\"Reader aborted too early\"));\n }\n const result = (reader.result ?? \"\");\n const commaIndex = result.indexOf(\",\");\n const dataOffset = commaIndex > -1 ? commaIndex + 1 : result.length;\n resolve(result.substring(dataOffset));\n };\n reader.onabort = () => reject(new Error(\"Read aborted\"));\n reader.onerror = () => reject(reader.error);\n reader.readAsDataURL(blob);\n });\n}\n","const SHORT_TO_HEX = {};\nconst HEX_TO_SHORT = {};\nfor (let i = 0; i < 256; i++) {\n let encodedByte = i.toString(16).toLowerCase();\n if (encodedByte.length === 1) {\n encodedByte = `0${encodedByte}`;\n }\n SHORT_TO_HEX[i] = encodedByte;\n HEX_TO_SHORT[encodedByte] = i;\n}\nexport function fromHex(encoded) {\n if (encoded.length % 2 !== 0) {\n throw new Error(\"Hex encoded strings must have an even number length\");\n }\n const out = new Uint8Array(encoded.length / 2);\n for (let i = 0; i < encoded.length; i += 2) {\n const encodedByte = encoded.slice(i, i + 2).toLowerCase();\n if (encodedByte in HEX_TO_SHORT) {\n out[i / 2] = HEX_TO_SHORT[encodedByte];\n }\n else {\n throw new Error(`Cannot decode unrecognized sequence ${encodedByte} as hexadecimal`);\n }\n }\n return out;\n}\nexport function toHex(bytes) {\n let out = \"\";\n for (let i = 0; i < bytes.byteLength; i++) {\n out += SHORT_TO_HEX[bytes[i]];\n }\n return out;\n}\n","import { streamCollector } from \"@smithy/fetch-http-handler\";\nimport { toBase64 } from \"@smithy/util-base64\";\nimport { toHex } from \"@smithy/util-hex-encoding\";\nimport { toUtf8 } from \"@smithy/util-utf8\";\nimport { isReadableStream } from \"./stream-type-check\";\nconst ERR_MSG_STREAM_HAS_BEEN_TRANSFORMED = \"The stream has already been transformed.\";\nexport const sdkStreamMixin = (stream) => {\n if (!isBlobInstance(stream) && !isReadableStream(stream)) {\n const name = stream?.__proto__?.constructor?.name || stream;\n throw new Error(`Unexpected stream implementation, expect Blob or ReadableStream, got ${name}`);\n }\n let transformed = false;\n const transformToByteArray = async () => {\n if (transformed) {\n throw new Error(ERR_MSG_STREAM_HAS_BEEN_TRANSFORMED);\n }\n transformed = true;\n return await streamCollector(stream);\n };\n const blobToWebStream = (blob) => {\n if (typeof blob.stream !== \"function\") {\n throw new Error(\"Cannot transform payload Blob to web stream. Please make sure the Blob.stream() is polyfilled.\\n\" +\n \"If you are using React Native, this API is not yet supported, see: https://react-native.canny.io/feature-requests/p/fetch-streaming-body\");\n }\n return blob.stream();\n };\n return Object.assign(stream, {\n transformToByteArray: transformToByteArray,\n transformToString: async (encoding) => {\n const buf = await transformToByteArray();\n if (encoding === \"base64\") {\n return toBase64(buf);\n }\n else if (encoding === \"hex\") {\n return toHex(buf);\n }\n else if (encoding === undefined || encoding === \"utf8\" || encoding === \"utf-8\") {\n return toUtf8(buf);\n }\n else if (typeof TextDecoder === \"function\") {\n return new TextDecoder(encoding).decode(buf);\n }\n else {\n throw new Error(\"TextDecoder is not available, please make sure polyfill is provided.\");\n }\n },\n transformToWebStream: () => {\n if (transformed) {\n throw new Error(ERR_MSG_STREAM_HAS_BEEN_TRANSFORMED);\n }\n transformed = true;\n if (isBlobInstance(stream)) {\n return blobToWebStream(stream);\n }\n else if (isReadableStream(stream)) {\n return stream;\n }\n else {\n throw new Error(`Cannot transform payload to web stream, got ${stream}`);\n }\n },\n });\n};\nconst isBlobInstance = (stream) => typeof Blob === \"function\" && stream instanceof Blob;\n","import { Uint8ArrayBlobAdapter } from \"@smithy/util-stream\";\nexport const collectBody = async (streamBody = new Uint8Array(), context) => {\n if (streamBody instanceof Uint8Array) {\n return Uint8ArrayBlobAdapter.mutate(streamBody);\n }\n if (!streamBody) {\n return Uint8ArrayBlobAdapter.mutate(new Uint8Array());\n }\n const fromContext = context.streamCollector(streamBody);\n return Uint8ArrayBlobAdapter.mutate(await fromContext);\n};\n","export function extendedEncodeURIComponent(str) {\n return encodeURIComponent(str).replace(/[!'()*]/g, function (c) {\n return \"%\" + c.charCodeAt(0).toString(16).toUpperCase();\n });\n}\n","import { HttpRequest } from \"@smithy/protocol-http\";\nimport { resolvedPath } from \"./resolve-path\";\nexport function requestBuilder(input, context) {\n return new RequestBuilder(input, context);\n}\nexport class RequestBuilder {\n constructor(input, context) {\n this.input = input;\n this.context = context;\n this.query = {};\n this.method = \"\";\n this.headers = {};\n this.path = \"\";\n this.body = null;\n this.hostname = \"\";\n this.resolvePathStack = [];\n }\n async build() {\n const { hostname, protocol = \"https\", port, path: basePath } = await this.context.endpoint();\n this.path = basePath;\n for (const resolvePath of this.resolvePathStack) {\n resolvePath(this.path);\n }\n return new HttpRequest({\n protocol,\n hostname: this.hostname || hostname,\n port,\n method: this.method,\n path: this.path,\n query: this.query,\n body: this.body,\n headers: this.headers,\n });\n }\n hn(hostname) {\n this.hostname = hostname;\n return this;\n }\n bp(uriLabel) {\n this.resolvePathStack.push((basePath) => {\n this.path = `${basePath?.endsWith(\"/\") ? basePath.slice(0, -1) : basePath || \"\"}` + uriLabel;\n });\n return this;\n }\n p(memberName, labelValueProvider, uriLabel, isGreedyLabel) {\n this.resolvePathStack.push((path) => {\n this.path = resolvedPath(path, this.input, memberName, labelValueProvider, uriLabel, isGreedyLabel);\n });\n return this;\n }\n h(headers) {\n this.headers = headers;\n return this;\n }\n q(query) {\n this.query = query;\n return this;\n }\n b(body) {\n this.body = body;\n return this;\n }\n m(method) {\n this.method = method;\n return this;\n }\n}\n","import { extendedEncodeURIComponent } from \"./extended-encode-uri-component\";\nexport const resolvedPath = (resolvedPath, input, memberName, labelValueProvider, uriLabel, isGreedyLabel) => {\n if (input != null && input[memberName] !== undefined) {\n const labelValue = labelValueProvider();\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: \" + memberName + \".\");\n }\n resolvedPath = resolvedPath.replace(uriLabel, isGreedyLabel\n ? labelValue\n .split(\"/\")\n .map((segment) => extendedEncodeURIComponent(segment))\n .join(\"/\")\n : extendedEncodeURIComponent(labelValue));\n }\n else {\n throw new Error(\"No value provided for input HTTP label: \" + memberName + \".\");\n }\n return resolvedPath;\n};\n","export class DefaultIdentityProviderConfig {\n constructor(config) {\n this.authSchemes = new Map();\n for (const [key, value] of Object.entries(config)) {\n if (value !== undefined) {\n this.authSchemes.set(key, value);\n }\n }\n }\n getIdentityProvider(schemeId) {\n return this.authSchemes.get(schemeId);\n }\n}\n","export const createIsIdentityExpiredFunction = (expirationMs) => (identity) => doesIdentityRequireRefresh(identity) && identity.expiration.getTime() - Date.now() < expirationMs;\nexport const EXPIRATION_MS = 300000;\nexport const isIdentityExpired = createIsIdentityExpiredFunction(EXPIRATION_MS);\nexport const doesIdentityRequireRefresh = (identity) => identity.expiration !== undefined;\nexport const memoizeIdentityProvider = (provider, isExpired, requiresRefresh) => {\n if (provider === undefined) {\n return undefined;\n }\n const normalizedProvider = typeof provider !== \"function\" ? async () => Promise.resolve(provider) : provider;\n let resolved;\n let pending;\n let hasResult;\n let isConstant = false;\n const coalesceProvider = async (options) => {\n if (!pending) {\n pending = normalizedProvider(options);\n }\n try {\n resolved = await pending;\n hasResult = true;\n isConstant = false;\n }\n finally {\n pending = undefined;\n }\n return resolved;\n };\n if (isExpired === undefined) {\n return async (options) => {\n if (!hasResult || options?.forceRefresh) {\n resolved = await coalesceProvider(options);\n }\n return resolved;\n };\n }\n return async (options) => {\n if (!hasResult || options?.forceRefresh) {\n resolved = await coalesceProvider(options);\n }\n if (isConstant) {\n return resolved;\n }\n if (!requiresRefresh(resolved)) {\n isConstant = true;\n return resolved;\n }\n if (isExpired(resolved)) {\n await coalesceProvider(options);\n return resolved;\n }\n return resolved;\n };\n};\n","const IP_V4_REGEX = new RegExp(`^(?:25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]\\\\d|\\\\d)(?:\\\\.(?:25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]\\\\d|\\\\d)){3}$`);\nexport const isIpAddress = (value) => IP_V4_REGEX.test(value) || (value.startsWith(\"[\") && value.endsWith(\"]\"));\n","const VALID_HOST_LABEL_REGEX = new RegExp(`^(?!.*-$)(?!-)[a-zA-Z0-9-]{1,63}$`);\nexport const isValidHostLabel = (value, allowSubDomains = false) => {\n if (!allowSubDomains) {\n return VALID_HOST_LABEL_REGEX.test(value);\n }\n const labels = value.split(\".\");\n for (const label of labels) {\n if (!isValidHostLabel(label)) {\n return false;\n }\n }\n return true;\n};\n","export const customEndpointFunctions = {};\n","export const debugId = \"endpoints\";\n","export function toDebugString(input) {\n if (typeof input !== \"object\" || input == null) {\n return input;\n }\n if (\"ref\" in input) {\n return `$${toDebugString(input.ref)}`;\n }\n if (\"fn\" in input) {\n return `${input.fn}(${(input.argv || []).map(toDebugString).join(\", \")})`;\n }\n return JSON.stringify(input, null, 2);\n}\n","export class EndpointError extends Error {\n constructor(message) {\n super(message);\n this.name = \"EndpointError\";\n }\n}\n","export const booleanEquals = (value1, value2) => value1 === value2;\n","import { EndpointError } from \"../types\";\nimport { getAttrPathList } from \"./getAttrPathList\";\nexport const getAttr = (value, path) => getAttrPathList(path).reduce((acc, index) => {\n if (typeof acc !== \"object\") {\n throw new EndpointError(`Index '${index}' in '${path}' not found in '${JSON.stringify(value)}'`);\n }\n else if (Array.isArray(acc)) {\n return acc[parseInt(index)];\n }\n return acc[index];\n}, value);\n","import { EndpointError } from \"../types\";\nexport const getAttrPathList = (path) => {\n const parts = path.split(\".\");\n const pathList = [];\n for (const part of parts) {\n const squareBracketIndex = part.indexOf(\"[\");\n if (squareBracketIndex !== -1) {\n if (part.indexOf(\"]\") !== part.length - 1) {\n throw new EndpointError(`Path: '${path}' does not end with ']'`);\n }\n const arrayIndex = part.slice(squareBracketIndex + 1, -1);\n if (Number.isNaN(parseInt(arrayIndex))) {\n throw new EndpointError(`Invalid array index: '${arrayIndex}' in path: '${path}'`);\n }\n if (squareBracketIndex !== 0) {\n pathList.push(part.slice(0, squareBracketIndex));\n }\n pathList.push(arrayIndex);\n }\n else {\n pathList.push(part);\n }\n }\n return pathList;\n};\n","import { EndpointURLScheme } from \"@smithy/types\";\nimport { isIpAddress } from \"./isIpAddress\";\nconst DEFAULT_PORTS = {\n [EndpointURLScheme.HTTP]: 80,\n [EndpointURLScheme.HTTPS]: 443,\n};\nexport const parseURL = (value) => {\n const whatwgURL = (() => {\n try {\n if (value instanceof URL) {\n return value;\n }\n if (typeof value === \"object\" && \"hostname\" in value) {\n const { hostname, port, protocol = \"\", path = \"\", query = {} } = value;\n const url = new URL(`${protocol}//${hostname}${port ? `:${port}` : \"\"}${path}`);\n url.search = Object.entries(query)\n .map(([k, v]) => `${k}=${v}`)\n .join(\"&\");\n return url;\n }\n return new URL(value);\n }\n catch (error) {\n return null;\n }\n })();\n if (!whatwgURL) {\n console.error(`Unable to parse ${JSON.stringify(value)} as a whatwg URL.`);\n return null;\n }\n const urlString = whatwgURL.href;\n const { host, hostname, pathname, protocol, search } = whatwgURL;\n if (search) {\n return null;\n }\n const scheme = protocol.slice(0, -1);\n if (!Object.values(EndpointURLScheme).includes(scheme)) {\n return null;\n }\n const isIp = isIpAddress(hostname);\n const inputContainsDefaultPort = urlString.includes(`${host}:${DEFAULT_PORTS[scheme]}`) ||\n (typeof value === \"string\" && value.includes(`${host}:${DEFAULT_PORTS[scheme]}`));\n const authority = `${host}${inputContainsDefaultPort ? `:${DEFAULT_PORTS[scheme]}` : ``}`;\n return {\n scheme,\n authority,\n path: pathname,\n normalizedPath: pathname.endsWith(\"/\") ? pathname : `${pathname}/`,\n isIp,\n };\n};\n","import { booleanEquals, getAttr, isSet, isValidHostLabel, not, parseURL, stringEquals, substring, uriEncode, } from \"../lib\";\nexport const endpointFunctions = {\n booleanEquals,\n getAttr,\n isSet,\n isValidHostLabel,\n not,\n parseURL,\n stringEquals,\n substring,\n uriEncode,\n};\n","export const isSet = (value) => value != null;\n","export const not = (value) => !value;\n","export const stringEquals = (value1, value2) => value1 === value2;\n","export const substring = (input, start, stop, reverse) => {\n if (start >= stop || input.length < stop) {\n return null;\n }\n if (!reverse) {\n return input.substring(start, stop);\n }\n return input.substring(input.length - stop, input.length - start);\n};\n","export const uriEncode = (value) => encodeURIComponent(value).replace(/[!*'()]/g, (c) => `%${c.charCodeAt(0).toString(16).toUpperCase()}`);\n","import { getAttr } from \"../lib\";\nexport const evaluateTemplate = (template, options) => {\n const evaluatedTemplateArr = [];\n const templateContext = {\n ...options.endpointParams,\n ...options.referenceRecord,\n };\n let currentIndex = 0;\n while (currentIndex < template.length) {\n const openingBraceIndex = template.indexOf(\"{\", currentIndex);\n if (openingBraceIndex === -1) {\n evaluatedTemplateArr.push(template.slice(currentIndex));\n break;\n }\n evaluatedTemplateArr.push(template.slice(currentIndex, openingBraceIndex));\n const closingBraceIndex = template.indexOf(\"}\", openingBraceIndex);\n if (closingBraceIndex === -1) {\n evaluatedTemplateArr.push(template.slice(openingBraceIndex));\n break;\n }\n if (template[openingBraceIndex + 1] === \"{\" && template[closingBraceIndex + 1] === \"}\") {\n evaluatedTemplateArr.push(template.slice(openingBraceIndex + 1, closingBraceIndex));\n currentIndex = closingBraceIndex + 2;\n }\n const parameterName = template.substring(openingBraceIndex + 1, closingBraceIndex);\n if (parameterName.includes(\"#\")) {\n const [refName, attrName] = parameterName.split(\"#\");\n evaluatedTemplateArr.push(getAttr(templateContext[refName], attrName));\n }\n else {\n evaluatedTemplateArr.push(templateContext[parameterName]);\n }\n currentIndex = closingBraceIndex + 1;\n }\n return evaluatedTemplateArr.join(\"\");\n};\n","import { EndpointError } from \"../types\";\nimport { callFunction } from \"./callFunction\";\nimport { evaluateTemplate } from \"./evaluateTemplate\";\nimport { getReferenceValue } from \"./getReferenceValue\";\nexport const evaluateExpression = (obj, keyName, options) => {\n if (typeof obj === \"string\") {\n return evaluateTemplate(obj, options);\n }\n else if (obj[\"fn\"]) {\n return callFunction(obj, options);\n }\n else if (obj[\"ref\"]) {\n return getReferenceValue(obj, options);\n }\n throw new EndpointError(`'${keyName}': ${String(obj)} is not a string, function or reference.`);\n};\n","export const getReferenceValue = ({ ref }, options) => {\n const referenceRecord = {\n ...options.endpointParams,\n ...options.referenceRecord,\n };\n return referenceRecord[ref];\n};\n","import { customEndpointFunctions } from \"./customEndpointFunctions\";\nimport { endpointFunctions } from \"./endpointFunctions\";\nimport { evaluateExpression } from \"./evaluateExpression\";\nexport const callFunction = ({ fn, argv }, options) => {\n const evaluatedArgs = argv.map((arg) => [\"boolean\", \"number\"].includes(typeof arg) ? arg : evaluateExpression(arg, \"arg\", options));\n const fnSegments = fn.split(\".\");\n if (fnSegments[0] in customEndpointFunctions && fnSegments[1] != null) {\n return customEndpointFunctions[fnSegments[0]][fnSegments[1]](...evaluatedArgs);\n }\n return endpointFunctions[fn](...evaluatedArgs);\n};\n","import { debugId, toDebugString } from \"../debug\";\nimport { EndpointError } from \"../types\";\nimport { callFunction } from \"./callFunction\";\nexport const evaluateCondition = ({ assign, ...fnArgs }, options) => {\n if (assign && assign in options.referenceRecord) {\n throw new EndpointError(`'${assign}' is already defined in Reference Record.`);\n }\n const value = callFunction(fnArgs, options);\n options.logger?.debug?.(`${debugId} evaluateCondition: ${toDebugString(fnArgs)} = ${toDebugString(value)}`);\n return {\n result: value === \"\" ? true : !!value,\n ...(assign != null && { toAssign: { name: assign, value } }),\n };\n};\n","import { debugId, toDebugString } from \"../debug\";\nimport { evaluateCondition } from \"./evaluateCondition\";\nexport const evaluateConditions = (conditions = [], options) => {\n const conditionsReferenceRecord = {};\n for (const condition of conditions) {\n const { result, toAssign } = evaluateCondition(condition, {\n ...options,\n referenceRecord: {\n ...options.referenceRecord,\n ...conditionsReferenceRecord,\n },\n });\n if (!result) {\n return { result };\n }\n if (toAssign) {\n conditionsReferenceRecord[toAssign.name] = toAssign.value;\n options.logger?.debug?.(`${debugId} assign: ${toAssign.name} := ${toDebugString(toAssign.value)}`);\n }\n }\n return { result: true, referenceRecord: conditionsReferenceRecord };\n};\n","import { EndpointError } from \"../types\";\nimport { evaluateExpression } from \"./evaluateExpression\";\nexport const getEndpointHeaders = (headers, options) => Object.entries(headers).reduce((acc, [headerKey, headerVal]) => ({\n ...acc,\n [headerKey]: headerVal.map((headerValEntry) => {\n const processedExpr = evaluateExpression(headerValEntry, \"Header value entry\", options);\n if (typeof processedExpr !== \"string\") {\n throw new EndpointError(`Header '${headerKey}' value '${processedExpr}' is not a string`);\n }\n return processedExpr;\n }),\n}), {});\n","import { EndpointError } from \"../types\";\nimport { evaluateTemplate } from \"./evaluateTemplate\";\nimport { getEndpointProperties } from \"./getEndpointProperties\";\nexport const getEndpointProperty = (property, options) => {\n if (Array.isArray(property)) {\n return property.map((propertyEntry) => getEndpointProperty(propertyEntry, options));\n }\n switch (typeof property) {\n case \"string\":\n return evaluateTemplate(property, options);\n case \"object\":\n if (property === null) {\n throw new EndpointError(`Unexpected endpoint property: ${property}`);\n }\n return getEndpointProperties(property, options);\n case \"boolean\":\n return property;\n default:\n throw new EndpointError(`Unexpected endpoint property type: ${typeof property}`);\n }\n};\n","import { getEndpointProperty } from \"./getEndpointProperty\";\nexport const getEndpointProperties = (properties, options) => Object.entries(properties).reduce((acc, [propertyKey, propertyVal]) => ({\n ...acc,\n [propertyKey]: getEndpointProperty(propertyVal, options),\n}), {});\n","import { EndpointError } from \"../types\";\nimport { evaluateExpression } from \"./evaluateExpression\";\nexport const getEndpointUrl = (endpointUrl, options) => {\n const expression = evaluateExpression(endpointUrl, \"Endpoint URL\", options);\n if (typeof expression === \"string\") {\n try {\n return new URL(expression);\n }\n catch (error) {\n console.error(`Failed to construct URL with ${expression}`, error);\n throw error;\n }\n }\n throw new EndpointError(`Endpoint URL must be a string, got ${typeof expression}`);\n};\n","import { debugId, toDebugString } from \"../debug\";\nimport { evaluateConditions } from \"./evaluateConditions\";\nimport { getEndpointHeaders } from \"./getEndpointHeaders\";\nimport { getEndpointProperties } from \"./getEndpointProperties\";\nimport { getEndpointUrl } from \"./getEndpointUrl\";\nexport const evaluateEndpointRule = (endpointRule, options) => {\n const { conditions, endpoint } = endpointRule;\n const { result, referenceRecord } = evaluateConditions(conditions, options);\n if (!result) {\n return;\n }\n const endpointRuleOptions = {\n ...options,\n referenceRecord: { ...options.referenceRecord, ...referenceRecord },\n };\n const { url, properties, headers } = endpoint;\n options.logger?.debug?.(`${debugId} Resolving endpoint from template: ${toDebugString(endpoint)}`);\n return {\n ...(headers != undefined && {\n headers: getEndpointHeaders(headers, endpointRuleOptions),\n }),\n ...(properties != undefined && {\n properties: getEndpointProperties(properties, endpointRuleOptions),\n }),\n url: getEndpointUrl(url, endpointRuleOptions),\n };\n};\n","import { EndpointError } from \"../types\";\nimport { evaluateConditions } from \"./evaluateConditions\";\nimport { evaluateExpression } from \"./evaluateExpression\";\nexport const evaluateErrorRule = (errorRule, options) => {\n const { conditions, error } = errorRule;\n const { result, referenceRecord } = evaluateConditions(conditions, options);\n if (!result) {\n return;\n }\n throw new EndpointError(evaluateExpression(error, \"Error\", {\n ...options,\n referenceRecord: { ...options.referenceRecord, ...referenceRecord },\n }));\n};\n","import { evaluateConditions } from \"./evaluateConditions\";\nimport { evaluateRules } from \"./evaluateRules\";\nexport const evaluateTreeRule = (treeRule, options) => {\n const { conditions, rules } = treeRule;\n const { result, referenceRecord } = evaluateConditions(conditions, options);\n if (!result) {\n return;\n }\n return evaluateRules(rules, {\n ...options,\n referenceRecord: { ...options.referenceRecord, ...referenceRecord },\n });\n};\n","import { EndpointError } from \"../types\";\nimport { evaluateEndpointRule } from \"./evaluateEndpointRule\";\nimport { evaluateErrorRule } from \"./evaluateErrorRule\";\nimport { evaluateTreeRule } from \"./evaluateTreeRule\";\nexport const evaluateRules = (rules, options) => {\n for (const rule of rules) {\n if (rule.type === \"endpoint\") {\n const endpointOrUndefined = evaluateEndpointRule(rule, options);\n if (endpointOrUndefined) {\n return endpointOrUndefined;\n }\n }\n else if (rule.type === \"error\") {\n evaluateErrorRule(rule, options);\n }\n else if (rule.type === \"tree\") {\n const endpointOrUndefined = evaluateTreeRule(rule, options);\n if (endpointOrUndefined) {\n return endpointOrUndefined;\n }\n }\n else {\n throw new EndpointError(`Unknown endpoint rule: ${rule}`);\n }\n }\n throw new EndpointError(`Rules evaluation failed`);\n};\n","import { isValidHostLabel } from \"@smithy/util-endpoints\";\nimport { isIpAddress } from \"../isIpAddress\";\nexport const isVirtualHostableS3Bucket = (value, allowSubDomains = false) => {\n if (allowSubDomains) {\n for (const label of value.split(\".\")) {\n if (!isVirtualHostableS3Bucket(label)) {\n return false;\n }\n }\n return true;\n }\n if (!isValidHostLabel(value)) {\n return false;\n }\n if (value.length < 3 || value.length > 63) {\n return false;\n }\n if (value !== value.toLowerCase()) {\n return false;\n }\n if (isIpAddress(value)) {\n return false;\n }\n return true;\n};\n","import partitionsInfo from \"./partitions.json\";\nlet selectedPartitionsInfo = partitionsInfo;\nlet selectedUserAgentPrefix = \"\";\nexport const partition = (value) => {\n const { partitions } = selectedPartitionsInfo;\n for (const partition of partitions) {\n const { regions, outputs } = partition;\n for (const [region, regionData] of Object.entries(regions)) {\n if (region === value) {\n return {\n ...outputs,\n ...regionData,\n };\n }\n }\n }\n for (const partition of partitions) {\n const { regionRegex, outputs } = partition;\n if (new RegExp(regionRegex).test(value)) {\n return {\n ...outputs,\n };\n }\n }\n const DEFAULT_PARTITION = partitions.find((partition) => partition.id === \"aws\");\n if (!DEFAULT_PARTITION) {\n throw new Error(\"Provided region was not found in the partition array or regex,\" +\n \" and default partition with id 'aws' doesn't exist.\");\n }\n return {\n ...DEFAULT_PARTITION.outputs,\n };\n};\nexport const setPartitionInfo = (partitionsInfo, userAgentPrefix = \"\") => {\n selectedPartitionsInfo = partitionsInfo;\n selectedUserAgentPrefix = userAgentPrefix;\n};\nexport const useDefaultPartitionInfo = () => {\n setPartitionInfo(partitionsInfo, \"\");\n};\nexport const getUserAgentPrefix = () => selectedUserAgentPrefix;\n","import { customEndpointFunctions } from \"@smithy/util-endpoints\";\nimport { isVirtualHostableS3Bucket } from \"./lib/aws/isVirtualHostableS3Bucket\";\nimport { parseArn } from \"./lib/aws/parseArn\";\nimport { partition } from \"./lib/aws/partition\";\nexport const awsEndpointFunctions = {\n isVirtualHostableS3Bucket: isVirtualHostableS3Bucket,\n parseArn: parseArn,\n partition: partition,\n};\ncustomEndpointFunctions.aws = awsEndpointFunctions;\n","const ARN_DELIMITER = \":\";\nconst RESOURCE_DELIMITER = \"/\";\nexport const parseArn = (value) => {\n const segments = value.split(ARN_DELIMITER);\n if (segments.length < 6)\n return null;\n const [arn, partition, service, region, accountId, ...resourcePath] = segments;\n if (arn !== \"arn\" || partition === \"\" || service === \"\" || resourcePath.join(ARN_DELIMITER) === \"\")\n return null;\n const resourceId = resourcePath.map((resource) => resource.split(RESOURCE_DELIMITER)).flat();\n return {\n partition,\n service,\n region,\n accountId,\n resourceId,\n };\n};\n","export function setFeature(context, feature, value) {\n if (!context.__aws_sdk_context) {\n context.__aws_sdk_context = {\n features: {},\n };\n }\n else if (!context.__aws_sdk_context.features) {\n context.__aws_sdk_context.features = {};\n }\n context.__aws_sdk_context.features[feature] = value;\n}\n","import { setFeature } from \"@aws-sdk/core\";\nconst ACCOUNT_ID_ENDPOINT_REGEX = /\\d{12}\\.ddb/;\nexport async function checkFeatures(context, config, args) {\n const request = args.request;\n if (request?.headers?.[\"smithy-protocol\"] === \"rpc-v2-cbor\") {\n setFeature(context, \"PROTOCOL_RPC_V2_CBOR\", \"M\");\n }\n if (typeof config.retryStrategy === \"function\") {\n const retryStrategy = await config.retryStrategy();\n if (typeof retryStrategy.acquireInitialRetryToken === \"function\") {\n if (retryStrategy.constructor?.name?.includes(\"Adaptive\")) {\n setFeature(context, \"RETRY_MODE_ADAPTIVE\", \"F\");\n }\n else {\n setFeature(context, \"RETRY_MODE_STANDARD\", \"E\");\n }\n }\n else {\n setFeature(context, \"RETRY_MODE_LEGACY\", \"D\");\n }\n }\n if (typeof config.accountIdEndpointMode === \"function\") {\n const endpointV2 = context.endpointV2;\n if (String(endpointV2?.url?.hostname).match(ACCOUNT_ID_ENDPOINT_REGEX)) {\n setFeature(context, \"ACCOUNT_ID_ENDPOINT\", \"O\");\n }\n switch (await config.accountIdEndpointMode?.()) {\n case \"disabled\":\n setFeature(context, \"ACCOUNT_ID_MODE_DISABLED\", \"Q\");\n break;\n case \"preferred\":\n setFeature(context, \"ACCOUNT_ID_MODE_PREFERRED\", \"P\");\n break;\n case \"required\":\n setFeature(context, \"ACCOUNT_ID_MODE_REQUIRED\", \"R\");\n break;\n }\n }\n const identity = context.__smithy_context?.selectedHttpAuthScheme?.identity;\n if (identity?.$source) {\n const credentials = identity;\n if (credentials.accountId) {\n setFeature(context, \"RESOLVED_ACCOUNT_ID\", \"T\");\n }\n for (const [key, value] of Object.entries(credentials.$source ?? {})) {\n setFeature(context, key, value);\n }\n }\n}\n","export const USER_AGENT = \"user-agent\";\nexport const X_AMZ_USER_AGENT = \"x-amz-user-agent\";\nexport const SPACE = \" \";\nexport const UA_NAME_SEPARATOR = \"/\";\nexport const UA_NAME_ESCAPE_REGEX = /[^\\!\\$\\%\\&\\'\\*\\+\\-\\.\\^\\_\\`\\|\\~\\d\\w]/g;\nexport const UA_VALUE_ESCAPE_REGEX = /[^\\!\\$\\%\\&\\'\\*\\+\\-\\.\\^\\_\\`\\|\\~\\d\\w\\#]/g;\nexport const UA_ESCAPE_CHAR = \"-\";\n","import { getUserAgentPrefix } from \"@aws-sdk/util-endpoints\";\nimport { HttpRequest } from \"@smithy/protocol-http\";\nimport { checkFeatures } from \"./check-features\";\nimport { SPACE, UA_ESCAPE_CHAR, UA_NAME_ESCAPE_REGEX, UA_NAME_SEPARATOR, UA_VALUE_ESCAPE_REGEX, USER_AGENT, X_AMZ_USER_AGENT, } from \"./constants\";\nimport { encodeFeatures } from \"./encode-features\";\nexport const userAgentMiddleware = (options) => (next, context) => async (args) => {\n const { request } = args;\n if (!HttpRequest.isInstance(request)) {\n return next(args);\n }\n const { headers } = request;\n const userAgent = context?.userAgent?.map(escapeUserAgent) || [];\n const defaultUserAgent = (await options.defaultUserAgentProvider()).map(escapeUserAgent);\n await checkFeatures(context, options, args);\n const awsContext = context;\n defaultUserAgent.push(`m/${encodeFeatures(Object.assign({}, context.__smithy_context?.features, awsContext.__aws_sdk_context?.features))}`);\n const customUserAgent = options?.customUserAgent?.map(escapeUserAgent) || [];\n const appId = await options.userAgentAppId();\n if (appId) {\n defaultUserAgent.push(escapeUserAgent([`app/${appId}`]));\n }\n const prefix = getUserAgentPrefix();\n const sdkUserAgentValue = (prefix ? [prefix] : [])\n .concat([...defaultUserAgent, ...userAgent, ...customUserAgent])\n .join(SPACE);\n const normalUAValue = [\n ...defaultUserAgent.filter((section) => section.startsWith(\"aws-sdk-\")),\n ...customUserAgent,\n ].join(SPACE);\n if (options.runtime !== \"browser\") {\n if (normalUAValue) {\n headers[X_AMZ_USER_AGENT] = headers[X_AMZ_USER_AGENT]\n ? `${headers[USER_AGENT]} ${normalUAValue}`\n : normalUAValue;\n }\n headers[USER_AGENT] = sdkUserAgentValue;\n }\n else {\n headers[X_AMZ_USER_AGENT] = sdkUserAgentValue;\n }\n return next({\n ...args,\n request,\n });\n};\nconst escapeUserAgent = (userAgentPair) => {\n const name = userAgentPair[0]\n .split(UA_NAME_SEPARATOR)\n .map((part) => part.replace(UA_NAME_ESCAPE_REGEX, UA_ESCAPE_CHAR))\n .join(UA_NAME_SEPARATOR);\n const version = userAgentPair[1]?.replace(UA_VALUE_ESCAPE_REGEX, UA_ESCAPE_CHAR);\n const prefixSeparatorIndex = name.indexOf(UA_NAME_SEPARATOR);\n const prefix = name.substring(0, prefixSeparatorIndex);\n let uaName = name.substring(prefixSeparatorIndex + 1);\n if (prefix === \"api\") {\n uaName = uaName.toLowerCase();\n }\n return [prefix, uaName, version]\n .filter((item) => item && item.length > 0)\n .reduce((acc, item, index) => {\n switch (index) {\n case 0:\n return item;\n case 1:\n return `${acc}/${item}`;\n default:\n return `${acc}#${item}`;\n }\n }, \"\");\n};\nexport const getUserAgentMiddlewareOptions = {\n name: \"getUserAgentMiddleware\",\n step: \"build\",\n priority: \"low\",\n tags: [\"SET_USER_AGENT\", \"USER_AGENT\"],\n override: true,\n};\nexport const getUserAgentPlugin = (config) => ({\n applyToStack: (clientStack) => {\n clientStack.add(userAgentMiddleware(config), getUserAgentMiddlewareOptions);\n },\n});\n","const BYTE_LIMIT = 1024;\nexport function encodeFeatures(features) {\n let buffer = \"\";\n for (const key in features) {\n const val = features[key];\n if (buffer.length + val.length + 1 <= BYTE_LIMIT) {\n if (buffer.length) {\n buffer += \",\" + val;\n }\n else {\n buffer += val;\n }\n continue;\n }\n break;\n }\n return buffer;\n}\n","export var SelectorType;\n(function (SelectorType) {\n SelectorType[\"ENV\"] = \"env\";\n SelectorType[\"CONFIG\"] = \"shared config entry\";\n})(SelectorType || (SelectorType = {}));\n","import { booleanSelector, SelectorType } from \"@smithy/util-config-provider\";\nexport const ENV_USE_DUALSTACK_ENDPOINT = \"AWS_USE_DUALSTACK_ENDPOINT\";\nexport const CONFIG_USE_DUALSTACK_ENDPOINT = \"use_dualstack_endpoint\";\nexport const DEFAULT_USE_DUALSTACK_ENDPOINT = false;\nexport const NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS = {\n environmentVariableSelector: (env) => booleanSelector(env, ENV_USE_DUALSTACK_ENDPOINT, SelectorType.ENV),\n configFileSelector: (profile) => booleanSelector(profile, CONFIG_USE_DUALSTACK_ENDPOINT, SelectorType.CONFIG),\n default: false,\n};\n","export const isFipsRegion = (region) => typeof region === \"string\" && (region.startsWith(\"fips-\") || region.endsWith(\"-fips\"));\n","import { isFipsRegion } from \"./isFipsRegion\";\nexport const getRealRegion = (region) => isFipsRegion(region)\n ? [\"fips-aws-global\", \"aws-fips\"].includes(region)\n ? \"us-east-1\"\n : region.replace(/fips-(dkr-|prod-)?|-fips/, \"\")\n : region;\n","import { HttpRequest } from \"@smithy/protocol-http\";\nconst CONTENT_LENGTH_HEADER = \"content-length\";\nexport function contentLengthMiddleware(bodyLengthChecker) {\n return (next) => async (args) => {\n const request = args.request;\n if (HttpRequest.isInstance(request)) {\n const { body, headers } = request;\n if (body &&\n Object.keys(headers)\n .map((str) => str.toLowerCase())\n .indexOf(CONTENT_LENGTH_HEADER) === -1) {\n try {\n const length = bodyLengthChecker(body);\n request.headers = {\n ...request.headers,\n [CONTENT_LENGTH_HEADER]: String(length),\n };\n }\n catch (error) {\n }\n }\n }\n return next({\n ...args,\n request,\n });\n };\n}\nexport const contentLengthMiddlewareOptions = {\n step: \"build\",\n tags: [\"SET_CONTENT_LENGTH\", \"CONTENT_LENGTH\"],\n name: \"contentLengthMiddleware\",\n override: true,\n};\nexport const getContentLengthPlugin = (options) => ({\n applyToStack: (clientStack) => {\n clientStack.add(contentLengthMiddleware(options.bodyLengthChecker), contentLengthMiddlewareOptions);\n },\n});\n","export const resolveParamsForS3 = async (endpointParams) => {\n const bucket = endpointParams?.Bucket || \"\";\n if (typeof endpointParams.Bucket === \"string\") {\n endpointParams.Bucket = bucket.replace(/#/g, encodeURIComponent(\"#\")).replace(/\\?/g, encodeURIComponent(\"?\"));\n }\n if (isArnBucketName(bucket)) {\n if (endpointParams.ForcePathStyle === true) {\n throw new Error(\"Path-style addressing cannot be used with ARN buckets\");\n }\n }\n else if (!isDnsCompatibleBucketName(bucket) ||\n (bucket.indexOf(\".\") !== -1 && !String(endpointParams.Endpoint).startsWith(\"http:\")) ||\n bucket.toLowerCase() !== bucket ||\n bucket.length < 3) {\n endpointParams.ForcePathStyle = true;\n }\n if (endpointParams.DisableMultiRegionAccessPoints) {\n endpointParams.disableMultiRegionAccessPoints = true;\n endpointParams.DisableMRAP = true;\n }\n return endpointParams;\n};\nconst DOMAIN_PATTERN = /^[a-z0-9][a-z0-9\\.\\-]{1,61}[a-z0-9]$/;\nconst IP_ADDRESS_PATTERN = /(\\d+\\.){3}\\d+/;\nconst DOTS_PATTERN = /\\.\\./;\nexport const DOT_PATTERN = /\\./;\nexport const S3_HOSTNAME_PATTERN = /^(.+\\.)?s3(-fips)?(\\.dualstack)?[.-]([a-z0-9-]+)\\./;\nexport const isDnsCompatibleBucketName = (bucketName) => DOMAIN_PATTERN.test(bucketName) && !IP_ADDRESS_PATTERN.test(bucketName) && !DOTS_PATTERN.test(bucketName);\nexport const isArnBucketName = (bucketName) => {\n const [arn, partition, service, , , bucket] = bucketName.split(\":\");\n const isArn = arn === \"arn\" && bucketName.split(\":\").length >= 6;\n const isValidArn = Boolean(isArn && partition && service && bucket);\n if (isArn && !isValidArn) {\n throw new Error(`Invalid ARN: ${bucketName} was an invalid ARN.`);\n }\n return isValidArn;\n};\n","export const createConfigValueProvider = (configKey, canonicalEndpointParamKey, config) => {\n const configProvider = async () => {\n const configValue = config[configKey] ?? config[canonicalEndpointParamKey];\n if (typeof configValue === \"function\") {\n return configValue();\n }\n return configValue;\n };\n if (configKey === \"credentialScope\" || canonicalEndpointParamKey === \"CredentialScope\") {\n return async () => {\n const credentials = typeof config.credentials === \"function\" ? await config.credentials() : config.credentials;\n const configValue = credentials?.credentialScope ?? credentials?.CredentialScope;\n return configValue;\n };\n }\n if (configKey === \"accountId\" || canonicalEndpointParamKey === \"AccountId\") {\n return async () => {\n const credentials = typeof config.credentials === \"function\" ? await config.credentials() : config.credentials;\n const configValue = credentials?.accountId ?? credentials?.AccountId;\n return configValue;\n };\n }\n if (configKey === \"endpoint\" || canonicalEndpointParamKey === \"endpoint\") {\n return async () => {\n const endpoint = await configProvider();\n if (endpoint && typeof endpoint === \"object\") {\n if (\"url\" in endpoint) {\n return endpoint.url.href;\n }\n if (\"hostname\" in endpoint) {\n const { protocol, hostname, port, path } = endpoint;\n return `${protocol}//${hostname}${port ? \":\" + port : \"\"}${path}`;\n }\n }\n return endpoint;\n };\n }\n return configProvider;\n};\n","export const getEndpointFromConfig = async (serviceId) => undefined;\n","import { parseQueryString } from \"@smithy/querystring-parser\";\nexport const parseUrl = (url) => {\n if (typeof url === \"string\") {\n return parseUrl(new URL(url));\n }\n const { hostname, pathname, port, protocol, search } = url;\n let query;\n if (search) {\n query = parseQueryString(search);\n }\n return {\n hostname,\n port: port ? parseInt(port) : undefined,\n protocol,\n path: pathname,\n query,\n };\n};\n","export function parseQueryString(querystring) {\n const query = {};\n querystring = querystring.replace(/^\\?/, \"\");\n if (querystring) {\n for (const pair of querystring.split(\"&\")) {\n let [key, value = null] = pair.split(\"=\");\n key = decodeURIComponent(key);\n if (value) {\n value = decodeURIComponent(value);\n }\n if (!(key in query)) {\n query[key] = value;\n }\n else if (Array.isArray(query[key])) {\n query[key].push(value);\n }\n else {\n query[key] = [query[key], value];\n }\n }\n }\n return query;\n}\n","import { parseUrl } from \"@smithy/url-parser\";\nexport const toEndpointV1 = (endpoint) => {\n if (typeof endpoint === \"object\") {\n if (\"url\" in endpoint) {\n return parseUrl(endpoint.url);\n }\n return endpoint;\n }\n return parseUrl(endpoint);\n};\n","import { resolveParamsForS3 } from \"../service-customizations\";\nimport { createConfigValueProvider } from \"./createConfigValueProvider\";\nimport { getEndpointFromConfig } from \"./getEndpointFromConfig\";\nimport { toEndpointV1 } from \"./toEndpointV1\";\nexport const getEndpointFromInstructions = async (commandInput, instructionsSupplier, clientConfig, context) => {\n if (!clientConfig.endpoint) {\n let endpointFromConfig;\n if (clientConfig.serviceConfiguredEndpoint) {\n endpointFromConfig = await clientConfig.serviceConfiguredEndpoint();\n }\n else {\n endpointFromConfig = await getEndpointFromConfig(clientConfig.serviceId);\n }\n if (endpointFromConfig) {\n clientConfig.endpoint = () => Promise.resolve(toEndpointV1(endpointFromConfig));\n }\n }\n const endpointParams = await resolveParams(commandInput, instructionsSupplier, clientConfig);\n if (typeof clientConfig.endpointProvider !== \"function\") {\n throw new Error(\"config.endpointProvider is not set.\");\n }\n const endpoint = clientConfig.endpointProvider(endpointParams, context);\n return endpoint;\n};\nexport const resolveParams = async (commandInput, instructionsSupplier, clientConfig) => {\n const endpointParams = {};\n const instructions = instructionsSupplier?.getEndpointParameterInstructions?.() || {};\n for (const [name, instruction] of Object.entries(instructions)) {\n switch (instruction.type) {\n case \"staticContextParams\":\n endpointParams[name] = instruction.value;\n break;\n case \"contextParams\":\n endpointParams[name] = commandInput[instruction.name];\n break;\n case \"clientContextParams\":\n case \"builtInParams\":\n endpointParams[name] = await createConfigValueProvider(instruction.name, name, clientConfig)();\n break;\n case \"operationContextParams\":\n endpointParams[name] = instruction.get(commandInput);\n break;\n default:\n throw new Error(\"Unrecognized endpoint parameter instruction: \" + JSON.stringify(instruction));\n }\n }\n if (Object.keys(instructions).length === 0) {\n Object.assign(endpointParams, clientConfig);\n }\n if (String(clientConfig.serviceId).toLowerCase() === \"s3\") {\n await resolveParamsForS3(endpointParams);\n }\n return endpointParams;\n};\n","import { setFeature } from \"@smithy/core\";\nimport { getSmithyContext } from \"@smithy/util-middleware\";\nimport { getEndpointFromInstructions } from \"./adaptors/getEndpointFromInstructions\";\nexport const endpointMiddleware = ({ config, instructions, }) => {\n return (next, context) => async (args) => {\n if (config.endpoint) {\n setFeature(context, \"ENDPOINT_OVERRIDE\", \"N\");\n }\n const endpoint = await getEndpointFromInstructions(args.input, {\n getEndpointParameterInstructions() {\n return instructions;\n },\n }, { ...config }, context);\n context.endpointV2 = endpoint;\n context.authSchemes = endpoint.properties?.authSchemes;\n const authScheme = context.authSchemes?.[0];\n if (authScheme) {\n context[\"signing_region\"] = authScheme.signingRegion;\n context[\"signing_service\"] = authScheme.signingName;\n const smithyContext = getSmithyContext(context);\n const httpAuthOption = smithyContext?.selectedHttpAuthScheme?.httpAuthOption;\n if (httpAuthOption) {\n httpAuthOption.signingProperties = Object.assign(httpAuthOption.signingProperties || {}, {\n signing_region: authScheme.signingRegion,\n signingRegion: authScheme.signingRegion,\n signing_service: authScheme.signingName,\n signingName: authScheme.signingName,\n signingRegionSet: authScheme.signingRegionSet,\n }, authScheme.properties);\n }\n }\n return next({\n ...args,\n });\n };\n};\n","export function setFeature(context, feature, value) {\n if (!context.__smithy_context) {\n context.__smithy_context = {\n features: {},\n };\n }\n else if (!context.__smithy_context.features) {\n context.__smithy_context.features = {};\n }\n context.__smithy_context.features[feature] = value;\n}\n","import { serializerMiddlewareOption } from \"@smithy/middleware-serde\";\nimport { endpointMiddleware } from \"./endpointMiddleware\";\nexport const endpointMiddlewareOptions = {\n step: \"serialize\",\n tags: [\"ENDPOINT_PARAMETERS\", \"ENDPOINT_V2\", \"ENDPOINT\"],\n name: \"endpointV2Middleware\",\n override: true,\n relation: \"before\",\n toMiddleware: serializerMiddlewareOption.name,\n};\nexport const getEndpointPlugin = (config, instructions) => ({\n applyToStack: (clientStack) => {\n clientStack.addRelativeTo(endpointMiddleware({\n config,\n instructions,\n }), endpointMiddlewareOptions);\n },\n});\n","export var RETRY_MODES;\n(function (RETRY_MODES) {\n RETRY_MODES[\"STANDARD\"] = \"standard\";\n RETRY_MODES[\"ADAPTIVE\"] = \"adaptive\";\n})(RETRY_MODES || (RETRY_MODES = {}));\nexport const DEFAULT_MAX_ATTEMPTS = 3;\nexport const DEFAULT_RETRY_MODE = RETRY_MODES.STANDARD;\n","export const CLOCK_SKEW_ERROR_CODES = [\n \"AuthFailure\",\n \"InvalidSignatureException\",\n \"RequestExpired\",\n \"RequestInTheFuture\",\n \"RequestTimeTooSkewed\",\n \"SignatureDoesNotMatch\",\n];\nexport const THROTTLING_ERROR_CODES = [\n \"BandwidthLimitExceeded\",\n \"EC2ThrottledException\",\n \"LimitExceededException\",\n \"PriorRequestNotComplete\",\n \"ProvisionedThroughputExceededException\",\n \"RequestLimitExceeded\",\n \"RequestThrottled\",\n \"RequestThrottledException\",\n \"SlowDown\",\n \"ThrottledException\",\n \"Throttling\",\n \"ThrottlingException\",\n \"TooManyRequestsException\",\n \"TransactionInProgressException\",\n];\nexport const TRANSIENT_ERROR_CODES = [\"TimeoutError\", \"RequestTimeout\", \"RequestTimeoutException\"];\nexport const TRANSIENT_ERROR_STATUS_CODES = [500, 502, 503, 504];\nexport const NODEJS_TIMEOUT_ERROR_CODES = [\"ECONNRESET\", \"ECONNREFUSED\", \"EPIPE\", \"ETIMEDOUT\"];\n","import { CLOCK_SKEW_ERROR_CODES, NODEJS_TIMEOUT_ERROR_CODES, THROTTLING_ERROR_CODES, TRANSIENT_ERROR_CODES, TRANSIENT_ERROR_STATUS_CODES, } from \"./constants\";\nexport const isRetryableByTrait = (error) => error.$retryable !== undefined;\nexport const isClockSkewError = (error) => CLOCK_SKEW_ERROR_CODES.includes(error.name);\nexport const isClockSkewCorrectedError = (error) => error.$metadata?.clockSkewCorrected;\nexport const isThrottlingError = (error) => error.$metadata?.httpStatusCode === 429 ||\n THROTTLING_ERROR_CODES.includes(error.name) ||\n error.$retryable?.throttling == true;\nexport const isTransientError = (error, depth = 0) => isClockSkewCorrectedError(error) ||\n TRANSIENT_ERROR_CODES.includes(error.name) ||\n NODEJS_TIMEOUT_ERROR_CODES.includes(error?.code || \"\") ||\n TRANSIENT_ERROR_STATUS_CODES.includes(error.$metadata?.httpStatusCode || 0) ||\n (error.cause !== undefined && depth <= 10 && isTransientError(error.cause, depth + 1));\nexport const isServerError = (error) => {\n if (error.$metadata?.httpStatusCode !== undefined) {\n const statusCode = error.$metadata.httpStatusCode;\n if (500 <= statusCode && statusCode <= 599 && !isTransientError(error)) {\n return true;\n }\n return false;\n }\n return false;\n};\n","import { isThrottlingError } from \"@smithy/service-error-classification\";\nexport class DefaultRateLimiter {\n constructor(options) {\n this.currentCapacity = 0;\n this.enabled = false;\n this.lastMaxRate = 0;\n this.measuredTxRate = 0;\n this.requestCount = 0;\n this.lastTimestamp = 0;\n this.timeWindow = 0;\n this.beta = options?.beta ?? 0.7;\n this.minCapacity = options?.minCapacity ?? 1;\n this.minFillRate = options?.minFillRate ?? 0.5;\n this.scaleConstant = options?.scaleConstant ?? 0.4;\n this.smooth = options?.smooth ?? 0.8;\n const currentTimeInSeconds = this.getCurrentTimeInSeconds();\n this.lastThrottleTime = currentTimeInSeconds;\n this.lastTxRateBucket = Math.floor(this.getCurrentTimeInSeconds());\n this.fillRate = this.minFillRate;\n this.maxCapacity = this.minCapacity;\n }\n getCurrentTimeInSeconds() {\n return Date.now() / 1000;\n }\n async getSendToken() {\n return this.acquireTokenBucket(1);\n }\n async acquireTokenBucket(amount) {\n if (!this.enabled) {\n return;\n }\n this.refillTokenBucket();\n if (amount > this.currentCapacity) {\n const delay = ((amount - this.currentCapacity) / this.fillRate) * 1000;\n await new Promise((resolve) => DefaultRateLimiter.setTimeoutFn(resolve, delay));\n }\n this.currentCapacity = this.currentCapacity - amount;\n }\n refillTokenBucket() {\n const timestamp = this.getCurrentTimeInSeconds();\n if (!this.lastTimestamp) {\n this.lastTimestamp = timestamp;\n return;\n }\n const fillAmount = (timestamp - this.lastTimestamp) * this.fillRate;\n this.currentCapacity = Math.min(this.maxCapacity, this.currentCapacity + fillAmount);\n this.lastTimestamp = timestamp;\n }\n updateClientSendingRate(response) {\n let calculatedRate;\n this.updateMeasuredRate();\n if (isThrottlingError(response)) {\n const rateToUse = !this.enabled ? this.measuredTxRate : Math.min(this.measuredTxRate, this.fillRate);\n this.lastMaxRate = rateToUse;\n this.calculateTimeWindow();\n this.lastThrottleTime = this.getCurrentTimeInSeconds();\n calculatedRate = this.cubicThrottle(rateToUse);\n this.enableTokenBucket();\n }\n else {\n this.calculateTimeWindow();\n calculatedRate = this.cubicSuccess(this.getCurrentTimeInSeconds());\n }\n const newRate = Math.min(calculatedRate, 2 * this.measuredTxRate);\n this.updateTokenBucketRate(newRate);\n }\n calculateTimeWindow() {\n this.timeWindow = this.getPrecise(Math.pow((this.lastMaxRate * (1 - this.beta)) / this.scaleConstant, 1 / 3));\n }\n cubicThrottle(rateToUse) {\n return this.getPrecise(rateToUse * this.beta);\n }\n cubicSuccess(timestamp) {\n return this.getPrecise(this.scaleConstant * Math.pow(timestamp - this.lastThrottleTime - this.timeWindow, 3) + this.lastMaxRate);\n }\n enableTokenBucket() {\n this.enabled = true;\n }\n updateTokenBucketRate(newRate) {\n this.refillTokenBucket();\n this.fillRate = Math.max(newRate, this.minFillRate);\n this.maxCapacity = Math.max(newRate, this.minCapacity);\n this.currentCapacity = Math.min(this.currentCapacity, this.maxCapacity);\n }\n updateMeasuredRate() {\n const t = this.getCurrentTimeInSeconds();\n const timeBucket = Math.floor(t * 2) / 2;\n this.requestCount++;\n if (timeBucket > this.lastTxRateBucket) {\n const currentRate = this.requestCount / (timeBucket - this.lastTxRateBucket);\n this.measuredTxRate = this.getPrecise(currentRate * this.smooth + this.measuredTxRate * (1 - this.smooth));\n this.requestCount = 0;\n this.lastTxRateBucket = timeBucket;\n }\n }\n getPrecise(num) {\n return parseFloat(num.toFixed(8));\n }\n}\nDefaultRateLimiter.setTimeoutFn = setTimeout;\n","export const DEFAULT_RETRY_DELAY_BASE = 100;\nexport const MAXIMUM_RETRY_DELAY = 20 * 1000;\nexport const THROTTLING_RETRY_DELAY_BASE = 500;\nexport const INITIAL_RETRY_TOKENS = 500;\nexport const RETRY_COST = 5;\nexport const TIMEOUT_RETRY_COST = 10;\nexport const NO_RETRY_INCREMENT = 1;\nexport const INVOCATION_ID_HEADER = \"amz-sdk-invocation-id\";\nexport const REQUEST_HEADER = \"amz-sdk-request\";\n","import { MAXIMUM_RETRY_DELAY } from \"./constants\";\nexport const createDefaultRetryToken = ({ retryDelay, retryCount, retryCost, }) => {\n const getRetryCount = () => retryCount;\n const getRetryDelay = () => Math.min(MAXIMUM_RETRY_DELAY, retryDelay);\n const getRetryCost = () => retryCost;\n return {\n getRetryCount,\n getRetryDelay,\n getRetryCost,\n };\n};\n","import { DEFAULT_MAX_ATTEMPTS, RETRY_MODES } from \"./config\";\nimport { DEFAULT_RETRY_DELAY_BASE, INITIAL_RETRY_TOKENS, NO_RETRY_INCREMENT, RETRY_COST, THROTTLING_RETRY_DELAY_BASE, TIMEOUT_RETRY_COST, } from \"./constants\";\nimport { getDefaultRetryBackoffStrategy } from \"./defaultRetryBackoffStrategy\";\nimport { createDefaultRetryToken } from \"./defaultRetryToken\";\nexport class StandardRetryStrategy {\n constructor(maxAttempts) {\n this.maxAttempts = maxAttempts;\n this.mode = RETRY_MODES.STANDARD;\n this.capacity = INITIAL_RETRY_TOKENS;\n this.retryBackoffStrategy = getDefaultRetryBackoffStrategy();\n this.maxAttemptsProvider = typeof maxAttempts === \"function\" ? maxAttempts : async () => maxAttempts;\n }\n async acquireInitialRetryToken(retryTokenScope) {\n return createDefaultRetryToken({\n retryDelay: DEFAULT_RETRY_DELAY_BASE,\n retryCount: 0,\n });\n }\n async refreshRetryTokenForRetry(token, errorInfo) {\n const maxAttempts = await this.getMaxAttempts();\n if (this.shouldRetry(token, errorInfo, maxAttempts)) {\n const errorType = errorInfo.errorType;\n this.retryBackoffStrategy.setDelayBase(errorType === \"THROTTLING\" ? THROTTLING_RETRY_DELAY_BASE : DEFAULT_RETRY_DELAY_BASE);\n const delayFromErrorType = this.retryBackoffStrategy.computeNextBackoffDelay(token.getRetryCount());\n const retryDelay = errorInfo.retryAfterHint\n ? Math.max(errorInfo.retryAfterHint.getTime() - Date.now() || 0, delayFromErrorType)\n : delayFromErrorType;\n const capacityCost = this.getCapacityCost(errorType);\n this.capacity -= capacityCost;\n return createDefaultRetryToken({\n retryDelay,\n retryCount: token.getRetryCount() + 1,\n retryCost: capacityCost,\n });\n }\n throw new Error(\"No retry token available\");\n }\n recordSuccess(token) {\n this.capacity = Math.max(INITIAL_RETRY_TOKENS, this.capacity + (token.getRetryCost() ?? NO_RETRY_INCREMENT));\n }\n getCapacity() {\n return this.capacity;\n }\n async getMaxAttempts() {\n try {\n return await this.maxAttemptsProvider();\n }\n catch (error) {\n console.warn(`Max attempts provider could not resolve. Using default of ${DEFAULT_MAX_ATTEMPTS}`);\n return DEFAULT_MAX_ATTEMPTS;\n }\n }\n shouldRetry(tokenToRenew, errorInfo, maxAttempts) {\n const attempts = tokenToRenew.getRetryCount() + 1;\n return (attempts < maxAttempts &&\n this.capacity >= this.getCapacityCost(errorInfo.errorType) &&\n this.isRetryableError(errorInfo.errorType));\n }\n getCapacityCost(errorType) {\n return errorType === \"TRANSIENT\" ? TIMEOUT_RETRY_COST : RETRY_COST;\n }\n isRetryableError(errorType) {\n return errorType === \"THROTTLING\" || errorType === \"TRANSIENT\";\n }\n}\n","import { DEFAULT_RETRY_DELAY_BASE, MAXIMUM_RETRY_DELAY } from \"./constants\";\nexport const getDefaultRetryBackoffStrategy = () => {\n let delayBase = DEFAULT_RETRY_DELAY_BASE;\n const computeNextBackoffDelay = (attempts) => {\n return Math.floor(Math.min(MAXIMUM_RETRY_DELAY, Math.random() * 2 ** attempts * delayBase));\n };\n const setDelayBase = (delay) => {\n delayBase = delay;\n };\n return {\n computeNextBackoffDelay,\n setDelayBase,\n };\n};\n","import { RETRY_MODES } from \"./config\";\nimport { DefaultRateLimiter } from \"./DefaultRateLimiter\";\nimport { StandardRetryStrategy } from \"./StandardRetryStrategy\";\nexport class AdaptiveRetryStrategy {\n constructor(maxAttemptsProvider, options) {\n this.maxAttemptsProvider = maxAttemptsProvider;\n this.mode = RETRY_MODES.ADAPTIVE;\n const { rateLimiter } = options ?? {};\n this.rateLimiter = rateLimiter ?? new DefaultRateLimiter();\n this.standardRetryStrategy = new StandardRetryStrategy(maxAttemptsProvider);\n }\n async acquireInitialRetryToken(retryTokenScope) {\n await this.rateLimiter.getSendToken();\n return this.standardRetryStrategy.acquireInitialRetryToken(retryTokenScope);\n }\n async refreshRetryTokenForRetry(tokenToRenew, errorInfo) {\n this.rateLimiter.updateClientSendingRate(errorInfo);\n return this.standardRetryStrategy.refreshRetryTokenForRetry(tokenToRenew, errorInfo);\n }\n recordSuccess(token) {\n this.rateLimiter.updateClientSendingRate({});\n this.standardRetryStrategy.recordSuccess(token);\n }\n}\n","const randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);\nexport default {\n randomUUID\n};","// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\nlet getRandomValues;\nconst rnds8 = new Uint8Array(16);\nexport default function rng() {\n // lazy load so that environments that need to polyfill have a chance to do so\n if (!getRandomValues) {\n // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation.\n getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto);\n\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n }\n\n return getRandomValues(rnds8);\n}","import validate from './validate.js';\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nconst byteToHex = [];\n\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).slice(1));\n}\n\nexport function unsafeStringify(arr, offset = 0) {\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n return byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]];\n}\n\nfunction stringify(arr, offset = 0) {\n const uuid = unsafeStringify(arr, offset); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nexport default stringify;","import native from './native.js';\nimport rng from './rng.js';\nimport { unsafeStringify } from './stringify.js';\n\nfunction v4(options, buf, offset) {\n if (native.randomUUID && !buf && !options) {\n return native.randomUUID();\n }\n\n options = options || {};\n const rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n offset = offset || 0;\n\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return unsafeStringify(rnds);\n}\n\nexport default v4;","export const asSdkError = (error) => {\n if (error instanceof Error)\n return error;\n if (error instanceof Object)\n return Object.assign(new Error(), error);\n if (typeof error === \"string\")\n return new Error(error);\n return new Error(`AWS SDK error wrapper for ${error}`);\n};\n","import { normalizeProvider } from \"@smithy/util-middleware\";\nimport { AdaptiveRetryStrategy, DEFAULT_MAX_ATTEMPTS, DEFAULT_RETRY_MODE, RETRY_MODES, StandardRetryStrategy, } from \"@smithy/util-retry\";\nexport const ENV_MAX_ATTEMPTS = \"AWS_MAX_ATTEMPTS\";\nexport const CONFIG_MAX_ATTEMPTS = \"max_attempts\";\nexport const NODE_MAX_ATTEMPT_CONFIG_OPTIONS = {\n environmentVariableSelector: (env) => {\n const value = env[ENV_MAX_ATTEMPTS];\n if (!value)\n return undefined;\n const maxAttempt = parseInt(value);\n if (Number.isNaN(maxAttempt)) {\n throw new Error(`Environment variable ${ENV_MAX_ATTEMPTS} mast be a number, got \"${value}\"`);\n }\n return maxAttempt;\n },\n configFileSelector: (profile) => {\n const value = profile[CONFIG_MAX_ATTEMPTS];\n if (!value)\n return undefined;\n const maxAttempt = parseInt(value);\n if (Number.isNaN(maxAttempt)) {\n throw new Error(`Shared config file entry ${CONFIG_MAX_ATTEMPTS} mast be a number, got \"${value}\"`);\n }\n return maxAttempt;\n },\n default: DEFAULT_MAX_ATTEMPTS,\n};\nexport const resolveRetryConfig = (input) => {\n const { retryStrategy, retryMode: _retryMode, maxAttempts: _maxAttempts } = input;\n const maxAttempts = normalizeProvider(_maxAttempts ?? DEFAULT_MAX_ATTEMPTS);\n return Object.assign(input, {\n maxAttempts,\n retryStrategy: async () => {\n if (retryStrategy) {\n return retryStrategy;\n }\n const retryMode = await normalizeProvider(_retryMode)();\n if (retryMode === RETRY_MODES.ADAPTIVE) {\n return new AdaptiveRetryStrategy(maxAttempts);\n }\n return new StandardRetryStrategy(maxAttempts);\n },\n });\n};\nexport const ENV_RETRY_MODE = \"AWS_RETRY_MODE\";\nexport const CONFIG_RETRY_MODE = \"retry_mode\";\nexport const NODE_RETRY_MODE_CONFIG_OPTIONS = {\n environmentVariableSelector: (env) => env[ENV_RETRY_MODE],\n configFileSelector: (profile) => profile[CONFIG_RETRY_MODE],\n default: DEFAULT_RETRY_MODE,\n};\n","const getAllAliases = (name, aliases) => {\n const _aliases = [];\n if (name) {\n _aliases.push(name);\n }\n if (aliases) {\n for (const alias of aliases) {\n _aliases.push(alias);\n }\n }\n return _aliases;\n};\nconst getMiddlewareNameWithAliases = (name, aliases) => {\n return `${name || \"anonymous\"}${aliases && aliases.length > 0 ? ` (a.k.a. ${aliases.join(\",\")})` : \"\"}`;\n};\nexport const constructStack = () => {\n let absoluteEntries = [];\n let relativeEntries = [];\n let identifyOnResolve = false;\n const entriesNameSet = new Set();\n const sort = (entries) => entries.sort((a, b) => stepWeights[b.step] - stepWeights[a.step] ||\n priorityWeights[b.priority || \"normal\"] - priorityWeights[a.priority || \"normal\"]);\n const removeByName = (toRemove) => {\n let isRemoved = false;\n const filterCb = (entry) => {\n const aliases = getAllAliases(entry.name, entry.aliases);\n if (aliases.includes(toRemove)) {\n isRemoved = true;\n for (const alias of aliases) {\n entriesNameSet.delete(alias);\n }\n return false;\n }\n return true;\n };\n absoluteEntries = absoluteEntries.filter(filterCb);\n relativeEntries = relativeEntries.filter(filterCb);\n return isRemoved;\n };\n const removeByReference = (toRemove) => {\n let isRemoved = false;\n const filterCb = (entry) => {\n if (entry.middleware === toRemove) {\n isRemoved = true;\n for (const alias of getAllAliases(entry.name, entry.aliases)) {\n entriesNameSet.delete(alias);\n }\n return false;\n }\n return true;\n };\n absoluteEntries = absoluteEntries.filter(filterCb);\n relativeEntries = relativeEntries.filter(filterCb);\n return isRemoved;\n };\n const cloneTo = (toStack) => {\n absoluteEntries.forEach((entry) => {\n toStack.add(entry.middleware, { ...entry });\n });\n relativeEntries.forEach((entry) => {\n toStack.addRelativeTo(entry.middleware, { ...entry });\n });\n toStack.identifyOnResolve?.(stack.identifyOnResolve());\n return toStack;\n };\n const expandRelativeMiddlewareList = (from) => {\n const expandedMiddlewareList = [];\n from.before.forEach((entry) => {\n if (entry.before.length === 0 && entry.after.length === 0) {\n expandedMiddlewareList.push(entry);\n }\n else {\n expandedMiddlewareList.push(...expandRelativeMiddlewareList(entry));\n }\n });\n expandedMiddlewareList.push(from);\n from.after.reverse().forEach((entry) => {\n if (entry.before.length === 0 && entry.after.length === 0) {\n expandedMiddlewareList.push(entry);\n }\n else {\n expandedMiddlewareList.push(...expandRelativeMiddlewareList(entry));\n }\n });\n return expandedMiddlewareList;\n };\n const getMiddlewareList = (debug = false) => {\n const normalizedAbsoluteEntries = [];\n const normalizedRelativeEntries = [];\n const normalizedEntriesNameMap = {};\n absoluteEntries.forEach((entry) => {\n const normalizedEntry = {\n ...entry,\n before: [],\n after: [],\n };\n for (const alias of getAllAliases(normalizedEntry.name, normalizedEntry.aliases)) {\n normalizedEntriesNameMap[alias] = normalizedEntry;\n }\n normalizedAbsoluteEntries.push(normalizedEntry);\n });\n relativeEntries.forEach((entry) => {\n const normalizedEntry = {\n ...entry,\n before: [],\n after: [],\n };\n for (const alias of getAllAliases(normalizedEntry.name, normalizedEntry.aliases)) {\n normalizedEntriesNameMap[alias] = normalizedEntry;\n }\n normalizedRelativeEntries.push(normalizedEntry);\n });\n normalizedRelativeEntries.forEach((entry) => {\n if (entry.toMiddleware) {\n const toMiddleware = normalizedEntriesNameMap[entry.toMiddleware];\n if (toMiddleware === undefined) {\n if (debug) {\n return;\n }\n throw new Error(`${entry.toMiddleware} is not found when adding ` +\n `${getMiddlewareNameWithAliases(entry.name, entry.aliases)} ` +\n `middleware ${entry.relation} ${entry.toMiddleware}`);\n }\n if (entry.relation === \"after\") {\n toMiddleware.after.push(entry);\n }\n if (entry.relation === \"before\") {\n toMiddleware.before.push(entry);\n }\n }\n });\n const mainChain = sort(normalizedAbsoluteEntries)\n .map(expandRelativeMiddlewareList)\n .reduce((wholeList, expandedMiddlewareList) => {\n wholeList.push(...expandedMiddlewareList);\n return wholeList;\n }, []);\n return mainChain;\n };\n const stack = {\n add: (middleware, options = {}) => {\n const { name, override, aliases: _aliases } = options;\n const entry = {\n step: \"initialize\",\n priority: \"normal\",\n middleware,\n ...options,\n };\n const aliases = getAllAliases(name, _aliases);\n if (aliases.length > 0) {\n if (aliases.some((alias) => entriesNameSet.has(alias))) {\n if (!override)\n throw new Error(`Duplicate middleware name '${getMiddlewareNameWithAliases(name, _aliases)}'`);\n for (const alias of aliases) {\n const toOverrideIndex = absoluteEntries.findIndex((entry) => entry.name === alias || entry.aliases?.some((a) => a === alias));\n if (toOverrideIndex === -1) {\n continue;\n }\n const toOverride = absoluteEntries[toOverrideIndex];\n if (toOverride.step !== entry.step || entry.priority !== toOverride.priority) {\n throw new Error(`\"${getMiddlewareNameWithAliases(toOverride.name, toOverride.aliases)}\" middleware with ` +\n `${toOverride.priority} priority in ${toOverride.step} step cannot ` +\n `be overridden by \"${getMiddlewareNameWithAliases(name, _aliases)}\" middleware with ` +\n `${entry.priority} priority in ${entry.step} step.`);\n }\n absoluteEntries.splice(toOverrideIndex, 1);\n }\n }\n for (const alias of aliases) {\n entriesNameSet.add(alias);\n }\n }\n absoluteEntries.push(entry);\n },\n addRelativeTo: (middleware, options) => {\n const { name, override, aliases: _aliases } = options;\n const entry = {\n middleware,\n ...options,\n };\n const aliases = getAllAliases(name, _aliases);\n if (aliases.length > 0) {\n if (aliases.some((alias) => entriesNameSet.has(alias))) {\n if (!override)\n throw new Error(`Duplicate middleware name '${getMiddlewareNameWithAliases(name, _aliases)}'`);\n for (const alias of aliases) {\n const toOverrideIndex = relativeEntries.findIndex((entry) => entry.name === alias || entry.aliases?.some((a) => a === alias));\n if (toOverrideIndex === -1) {\n continue;\n }\n const toOverride = relativeEntries[toOverrideIndex];\n if (toOverride.toMiddleware !== entry.toMiddleware || toOverride.relation !== entry.relation) {\n throw new Error(`\"${getMiddlewareNameWithAliases(toOverride.name, toOverride.aliases)}\" middleware ` +\n `${toOverride.relation} \"${toOverride.toMiddleware}\" middleware cannot be overridden ` +\n `by \"${getMiddlewareNameWithAliases(name, _aliases)}\" middleware ${entry.relation} ` +\n `\"${entry.toMiddleware}\" middleware.`);\n }\n relativeEntries.splice(toOverrideIndex, 1);\n }\n }\n for (const alias of aliases) {\n entriesNameSet.add(alias);\n }\n }\n relativeEntries.push(entry);\n },\n clone: () => cloneTo(constructStack()),\n use: (plugin) => {\n plugin.applyToStack(stack);\n },\n remove: (toRemove) => {\n if (typeof toRemove === \"string\")\n return removeByName(toRemove);\n else\n return removeByReference(toRemove);\n },\n removeByTag: (toRemove) => {\n let isRemoved = false;\n const filterCb = (entry) => {\n const { tags, name, aliases: _aliases } = entry;\n if (tags && tags.includes(toRemove)) {\n const aliases = getAllAliases(name, _aliases);\n for (const alias of aliases) {\n entriesNameSet.delete(alias);\n }\n isRemoved = true;\n return false;\n }\n return true;\n };\n absoluteEntries = absoluteEntries.filter(filterCb);\n relativeEntries = relativeEntries.filter(filterCb);\n return isRemoved;\n },\n concat: (from) => {\n const cloned = cloneTo(constructStack());\n cloned.use(from);\n cloned.identifyOnResolve(identifyOnResolve || cloned.identifyOnResolve() || (from.identifyOnResolve?.() ?? false));\n return cloned;\n },\n applyToStack: cloneTo,\n identify: () => {\n return getMiddlewareList(true).map((mw) => {\n const step = mw.step ??\n mw.relation +\n \" \" +\n mw.toMiddleware;\n return getMiddlewareNameWithAliases(mw.name, mw.aliases) + \" - \" + step;\n });\n },\n identifyOnResolve(toggle) {\n if (typeof toggle === \"boolean\")\n identifyOnResolve = toggle;\n return identifyOnResolve;\n },\n resolve: (handler, context) => {\n for (const middleware of getMiddlewareList()\n .map((entry) => entry.middleware)\n .reverse()) {\n handler = middleware(handler, context);\n }\n if (identifyOnResolve) {\n console.log(stack.identify());\n }\n return handler;\n },\n };\n return stack;\n};\nconst stepWeights = {\n initialize: 5,\n serialize: 4,\n build: 3,\n finalizeRequest: 2,\n deserialize: 1,\n};\nconst priorityWeights = {\n high: 3,\n normal: 2,\n low: 1,\n};\n","import { constructStack } from \"@smithy/middleware-stack\";\nexport class Client {\n constructor(config) {\n this.config = config;\n this.middlewareStack = constructStack();\n }\n send(command, optionsOrCb, cb) {\n const options = typeof optionsOrCb !== \"function\" ? optionsOrCb : undefined;\n const callback = typeof optionsOrCb === \"function\" ? optionsOrCb : cb;\n const useHandlerCache = options === undefined && this.config.cacheMiddleware === true;\n let handler;\n if (useHandlerCache) {\n if (!this.handlers) {\n this.handlers = new WeakMap();\n }\n const handlers = this.handlers;\n if (handlers.has(command.constructor)) {\n handler = handlers.get(command.constructor);\n }\n else {\n handler = command.resolveMiddleware(this.middlewareStack, this.config, options);\n handlers.set(command.constructor, handler);\n }\n }\n else {\n delete this.handlers;\n handler = command.resolveMiddleware(this.middlewareStack, this.config, options);\n }\n if (callback) {\n handler(command)\n .then((result) => callback(null, result.output), (err) => callback(err))\n .catch(() => { });\n }\n else {\n return handler(command).then((result) => result.output);\n }\n }\n destroy() {\n this.config?.requestHandler?.destroy?.();\n delete this.handlers;\n }\n}\n","import { constructStack } from \"@smithy/middleware-stack\";\nimport { SMITHY_CONTEXT_KEY } from \"@smithy/types\";\nexport class Command {\n constructor() {\n this.middlewareStack = constructStack();\n }\n static classBuilder() {\n return new ClassBuilder();\n }\n resolveMiddlewareWithContext(clientStack, configuration, options, { middlewareFn, clientName, commandName, inputFilterSensitiveLog, outputFilterSensitiveLog, smithyContext, additionalContext, CommandCtor, }) {\n for (const mw of middlewareFn.bind(this)(CommandCtor, clientStack, configuration, options)) {\n this.middlewareStack.use(mw);\n }\n const stack = clientStack.concat(this.middlewareStack);\n const { logger } = configuration;\n const handlerExecutionContext = {\n logger,\n clientName,\n commandName,\n inputFilterSensitiveLog,\n outputFilterSensitiveLog,\n [SMITHY_CONTEXT_KEY]: {\n commandInstance: this,\n ...smithyContext,\n },\n ...additionalContext,\n };\n const { requestHandler } = configuration;\n return stack.resolve((request) => requestHandler.handle(request.request, options || {}), handlerExecutionContext);\n }\n}\nclass ClassBuilder {\n constructor() {\n this._init = () => { };\n this._ep = {};\n this._middlewareFn = () => [];\n this._commandName = \"\";\n this._clientName = \"\";\n this._additionalContext = {};\n this._smithyContext = {};\n this._inputFilterSensitiveLog = (_) => _;\n this._outputFilterSensitiveLog = (_) => _;\n this._serializer = null;\n this._deserializer = null;\n }\n init(cb) {\n this._init = cb;\n }\n ep(endpointParameterInstructions) {\n this._ep = endpointParameterInstructions;\n return this;\n }\n m(middlewareSupplier) {\n this._middlewareFn = middlewareSupplier;\n return this;\n }\n s(service, operation, smithyContext = {}) {\n this._smithyContext = {\n service,\n operation,\n ...smithyContext,\n };\n return this;\n }\n c(additionalContext = {}) {\n this._additionalContext = additionalContext;\n return this;\n }\n n(clientName, commandName) {\n this._clientName = clientName;\n this._commandName = commandName;\n return this;\n }\n f(inputFilter = (_) => _, outputFilter = (_) => _) {\n this._inputFilterSensitiveLog = inputFilter;\n this._outputFilterSensitiveLog = outputFilter;\n return this;\n }\n ser(serializer) {\n this._serializer = serializer;\n return this;\n }\n de(deserializer) {\n this._deserializer = deserializer;\n return this;\n }\n build() {\n const closure = this;\n let CommandRef;\n return (CommandRef = class extends Command {\n static getEndpointParameterInstructions() {\n return closure._ep;\n }\n constructor(...[input]) {\n super();\n this.serialize = closure._serializer;\n this.deserialize = closure._deserializer;\n this.input = input ?? {};\n closure._init(this);\n }\n resolveMiddleware(stack, configuration, options) {\n return this.resolveMiddlewareWithContext(stack, configuration, options, {\n CommandCtor: CommandRef,\n middlewareFn: closure._middlewareFn,\n clientName: closure._clientName,\n commandName: closure._commandName,\n inputFilterSensitiveLog: closure._inputFilterSensitiveLog,\n outputFilterSensitiveLog: closure._outputFilterSensitiveLog,\n smithyContext: closure._smithyContext,\n additionalContext: closure._additionalContext,\n });\n }\n });\n }\n}\n","export const SENSITIVE_STRING = \"***SensitiveInformation***\";\n","export const parseBoolean = (value) => {\n switch (value) {\n case \"true\":\n return true;\n case \"false\":\n return false;\n default:\n throw new Error(`Unable to parse boolean value \"${value}\"`);\n }\n};\nexport const expectBoolean = (value) => {\n if (value === null || value === undefined) {\n return undefined;\n }\n if (typeof value === \"number\") {\n if (value === 0 || value === 1) {\n logger.warn(stackTraceWarning(`Expected boolean, got ${typeof value}: ${value}`));\n }\n if (value === 0) {\n return false;\n }\n if (value === 1) {\n return true;\n }\n }\n if (typeof value === \"string\") {\n const lower = value.toLowerCase();\n if (lower === \"false\" || lower === \"true\") {\n logger.warn(stackTraceWarning(`Expected boolean, got ${typeof value}: ${value}`));\n }\n if (lower === \"false\") {\n return false;\n }\n if (lower === \"true\") {\n return true;\n }\n }\n if (typeof value === \"boolean\") {\n return value;\n }\n throw new TypeError(`Expected boolean, got ${typeof value}: ${value}`);\n};\nexport const expectNumber = (value) => {\n if (value === null || value === undefined) {\n return undefined;\n }\n if (typeof value === \"string\") {\n const parsed = parseFloat(value);\n if (!Number.isNaN(parsed)) {\n if (String(parsed) !== String(value)) {\n logger.warn(stackTraceWarning(`Expected number but observed string: ${value}`));\n }\n return parsed;\n }\n }\n if (typeof value === \"number\") {\n return value;\n }\n throw new TypeError(`Expected number, got ${typeof value}: ${value}`);\n};\nconst MAX_FLOAT = Math.ceil(2 ** 127 * (2 - 2 ** -23));\nexport const expectFloat32 = (value) => {\n const expected = expectNumber(value);\n if (expected !== undefined && !Number.isNaN(expected) && expected !== Infinity && expected !== -Infinity) {\n if (Math.abs(expected) > MAX_FLOAT) {\n throw new TypeError(`Expected 32-bit float, got ${value}`);\n }\n }\n return expected;\n};\nexport const expectLong = (value) => {\n if (value === null || value === undefined) {\n return undefined;\n }\n if (Number.isInteger(value) && !Number.isNaN(value)) {\n return value;\n }\n throw new TypeError(`Expected integer, got ${typeof value}: ${value}`);\n};\nexport const expectInt = expectLong;\nexport const expectInt32 = (value) => expectSizedInt(value, 32);\nexport const expectShort = (value) => expectSizedInt(value, 16);\nexport const expectByte = (value) => expectSizedInt(value, 8);\nconst expectSizedInt = (value, size) => {\n const expected = expectLong(value);\n if (expected !== undefined && castInt(expected, size) !== expected) {\n throw new TypeError(`Expected ${size}-bit integer, got ${value}`);\n }\n return expected;\n};\nconst castInt = (value, size) => {\n switch (size) {\n case 32:\n return Int32Array.of(value)[0];\n case 16:\n return Int16Array.of(value)[0];\n case 8:\n return Int8Array.of(value)[0];\n }\n};\nexport const expectNonNull = (value, location) => {\n if (value === null || value === undefined) {\n if (location) {\n throw new TypeError(`Expected a non-null value for ${location}`);\n }\n throw new TypeError(\"Expected a non-null value\");\n }\n return value;\n};\nexport const expectObject = (value) => {\n if (value === null || value === undefined) {\n return undefined;\n }\n if (typeof value === \"object\" && !Array.isArray(value)) {\n return value;\n }\n const receivedType = Array.isArray(value) ? \"array\" : typeof value;\n throw new TypeError(`Expected object, got ${receivedType}: ${value}`);\n};\nexport const expectString = (value) => {\n if (value === null || value === undefined) {\n return undefined;\n }\n if (typeof value === \"string\") {\n return value;\n }\n if ([\"boolean\", \"number\", \"bigint\"].includes(typeof value)) {\n logger.warn(stackTraceWarning(`Expected string, got ${typeof value}: ${value}`));\n return String(value);\n }\n throw new TypeError(`Expected string, got ${typeof value}: ${value}`);\n};\nexport const expectUnion = (value) => {\n if (value === null || value === undefined) {\n return undefined;\n }\n const asObject = expectObject(value);\n const setKeys = Object.entries(asObject)\n .filter(([, v]) => v != null)\n .map(([k]) => k);\n if (setKeys.length === 0) {\n throw new TypeError(`Unions must have exactly one non-null member. None were found.`);\n }\n if (setKeys.length > 1) {\n throw new TypeError(`Unions must have exactly one non-null member. Keys ${setKeys} were not null.`);\n }\n return asObject;\n};\nexport const strictParseDouble = (value) => {\n if (typeof value == \"string\") {\n return expectNumber(parseNumber(value));\n }\n return expectNumber(value);\n};\nexport const strictParseFloat = strictParseDouble;\nexport const strictParseFloat32 = (value) => {\n if (typeof value == \"string\") {\n return expectFloat32(parseNumber(value));\n }\n return expectFloat32(value);\n};\nconst NUMBER_REGEX = /(-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?)|(-?Infinity)|(NaN)/g;\nconst parseNumber = (value) => {\n const matches = value.match(NUMBER_REGEX);\n if (matches === null || matches[0].length !== value.length) {\n throw new TypeError(`Expected real number, got implicit NaN`);\n }\n return parseFloat(value);\n};\nexport const limitedParseDouble = (value) => {\n if (typeof value == \"string\") {\n return parseFloatString(value);\n }\n return expectNumber(value);\n};\nexport const handleFloat = limitedParseDouble;\nexport const limitedParseFloat = limitedParseDouble;\nexport const limitedParseFloat32 = (value) => {\n if (typeof value == \"string\") {\n return parseFloatString(value);\n }\n return expectFloat32(value);\n};\nconst parseFloatString = (value) => {\n switch (value) {\n case \"NaN\":\n return NaN;\n case \"Infinity\":\n return Infinity;\n case \"-Infinity\":\n return -Infinity;\n default:\n throw new Error(`Unable to parse float value: ${value}`);\n }\n};\nexport const strictParseLong = (value) => {\n if (typeof value === \"string\") {\n return expectLong(parseNumber(value));\n }\n return expectLong(value);\n};\nexport const strictParseInt = strictParseLong;\nexport const strictParseInt32 = (value) => {\n if (typeof value === \"string\") {\n return expectInt32(parseNumber(value));\n }\n return expectInt32(value);\n};\nexport const strictParseShort = (value) => {\n if (typeof value === \"string\") {\n return expectShort(parseNumber(value));\n }\n return expectShort(value);\n};\nexport const strictParseByte = (value) => {\n if (typeof value === \"string\") {\n return expectByte(parseNumber(value));\n }\n return expectByte(value);\n};\nconst stackTraceWarning = (message) => {\n return String(new TypeError(message).stack || message)\n .split(\"\\n\")\n .slice(0, 5)\n .filter((s) => !s.includes(\"stackTraceWarning\"))\n .join(\"\\n\");\n};\nexport const logger = {\n warn: console.warn,\n};\n","import { strictParseByte, strictParseDouble, strictParseFloat32, strictParseShort } from \"./parse-utils\";\nconst DAYS = [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"];\nconst MONTHS = [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"];\nexport function dateToUtcString(date) {\n const year = date.getUTCFullYear();\n const month = date.getUTCMonth();\n const dayOfWeek = date.getUTCDay();\n const dayOfMonthInt = date.getUTCDate();\n const hoursInt = date.getUTCHours();\n const minutesInt = date.getUTCMinutes();\n const secondsInt = date.getUTCSeconds();\n const dayOfMonthString = dayOfMonthInt < 10 ? `0${dayOfMonthInt}` : `${dayOfMonthInt}`;\n const hoursString = hoursInt < 10 ? `0${hoursInt}` : `${hoursInt}`;\n const minutesString = minutesInt < 10 ? `0${minutesInt}` : `${minutesInt}`;\n const secondsString = secondsInt < 10 ? `0${secondsInt}` : `${secondsInt}`;\n return `${DAYS[dayOfWeek]}, ${dayOfMonthString} ${MONTHS[month]} ${year} ${hoursString}:${minutesString}:${secondsString} GMT`;\n}\nconst RFC3339 = new RegExp(/^(\\d{4})-(\\d{2})-(\\d{2})[tT](\\d{2}):(\\d{2}):(\\d{2})(?:\\.(\\d+))?[zZ]$/);\nexport const parseRfc3339DateTime = (value) => {\n if (value === null || value === undefined) {\n return undefined;\n }\n if (typeof value !== \"string\") {\n throw new TypeError(\"RFC-3339 date-times must be expressed as strings\");\n }\n const match = RFC3339.exec(value);\n if (!match) {\n throw new TypeError(\"Invalid RFC-3339 date-time value\");\n }\n const [_, yearStr, monthStr, dayStr, hours, minutes, seconds, fractionalMilliseconds] = match;\n const year = strictParseShort(stripLeadingZeroes(yearStr));\n const month = parseDateValue(monthStr, \"month\", 1, 12);\n const day = parseDateValue(dayStr, \"day\", 1, 31);\n return buildDate(year, month, day, { hours, minutes, seconds, fractionalMilliseconds });\n};\nconst RFC3339_WITH_OFFSET = new RegExp(/^(\\d{4})-(\\d{2})-(\\d{2})[tT](\\d{2}):(\\d{2}):(\\d{2})(?:\\.(\\d+))?(([-+]\\d{2}\\:\\d{2})|[zZ])$/);\nexport const parseRfc3339DateTimeWithOffset = (value) => {\n if (value === null || value === undefined) {\n return undefined;\n }\n if (typeof value !== \"string\") {\n throw new TypeError(\"RFC-3339 date-times must be expressed as strings\");\n }\n const match = RFC3339_WITH_OFFSET.exec(value);\n if (!match) {\n throw new TypeError(\"Invalid RFC-3339 date-time value\");\n }\n const [_, yearStr, monthStr, dayStr, hours, minutes, seconds, fractionalMilliseconds, offsetStr] = match;\n const year = strictParseShort(stripLeadingZeroes(yearStr));\n const month = parseDateValue(monthStr, \"month\", 1, 12);\n const day = parseDateValue(dayStr, \"day\", 1, 31);\n const date = buildDate(year, month, day, { hours, minutes, seconds, fractionalMilliseconds });\n if (offsetStr.toUpperCase() != \"Z\") {\n date.setTime(date.getTime() - parseOffsetToMilliseconds(offsetStr));\n }\n return date;\n};\nconst IMF_FIXDATE = new RegExp(/^(?:Mon|Tue|Wed|Thu|Fri|Sat|Sun), (\\d{2}) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) (\\d{4}) (\\d{1,2}):(\\d{2}):(\\d{2})(?:\\.(\\d+))? GMT$/);\nconst RFC_850_DATE = new RegExp(/^(?:Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday), (\\d{2})-(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)-(\\d{2}) (\\d{1,2}):(\\d{2}):(\\d{2})(?:\\.(\\d+))? GMT$/);\nconst ASC_TIME = new RegExp(/^(?:Mon|Tue|Wed|Thu|Fri|Sat|Sun) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) ( [1-9]|\\d{2}) (\\d{1,2}):(\\d{2}):(\\d{2})(?:\\.(\\d+))? (\\d{4})$/);\nexport const parseRfc7231DateTime = (value) => {\n if (value === null || value === undefined) {\n return undefined;\n }\n if (typeof value !== \"string\") {\n throw new TypeError(\"RFC-7231 date-times must be expressed as strings\");\n }\n let match = IMF_FIXDATE.exec(value);\n if (match) {\n const [_, dayStr, monthStr, yearStr, hours, minutes, seconds, fractionalMilliseconds] = match;\n return buildDate(strictParseShort(stripLeadingZeroes(yearStr)), parseMonthByShortName(monthStr), parseDateValue(dayStr, \"day\", 1, 31), { hours, minutes, seconds, fractionalMilliseconds });\n }\n match = RFC_850_DATE.exec(value);\n if (match) {\n const [_, dayStr, monthStr, yearStr, hours, minutes, seconds, fractionalMilliseconds] = match;\n return adjustRfc850Year(buildDate(parseTwoDigitYear(yearStr), parseMonthByShortName(monthStr), parseDateValue(dayStr, \"day\", 1, 31), {\n hours,\n minutes,\n seconds,\n fractionalMilliseconds,\n }));\n }\n match = ASC_TIME.exec(value);\n if (match) {\n const [_, monthStr, dayStr, hours, minutes, seconds, fractionalMilliseconds, yearStr] = match;\n return buildDate(strictParseShort(stripLeadingZeroes(yearStr)), parseMonthByShortName(monthStr), parseDateValue(dayStr.trimLeft(), \"day\", 1, 31), { hours, minutes, seconds, fractionalMilliseconds });\n }\n throw new TypeError(\"Invalid RFC-7231 date-time value\");\n};\nexport const parseEpochTimestamp = (value) => {\n if (value === null || value === undefined) {\n return undefined;\n }\n let valueAsDouble;\n if (typeof value === \"number\") {\n valueAsDouble = value;\n }\n else if (typeof value === \"string\") {\n valueAsDouble = strictParseDouble(value);\n }\n else if (typeof value === \"object\" && value.tag === 1) {\n valueAsDouble = value.value;\n }\n else {\n throw new TypeError(\"Epoch timestamps must be expressed as floating point numbers or their string representation\");\n }\n if (Number.isNaN(valueAsDouble) || valueAsDouble === Infinity || valueAsDouble === -Infinity) {\n throw new TypeError(\"Epoch timestamps must be valid, non-Infinite, non-NaN numerics\");\n }\n return new Date(Math.round(valueAsDouble * 1000));\n};\nconst buildDate = (year, month, day, time) => {\n const adjustedMonth = month - 1;\n validateDayOfMonth(year, adjustedMonth, day);\n return new Date(Date.UTC(year, adjustedMonth, day, parseDateValue(time.hours, \"hour\", 0, 23), parseDateValue(time.minutes, \"minute\", 0, 59), parseDateValue(time.seconds, \"seconds\", 0, 60), parseMilliseconds(time.fractionalMilliseconds)));\n};\nconst parseTwoDigitYear = (value) => {\n const thisYear = new Date().getUTCFullYear();\n const valueInThisCentury = Math.floor(thisYear / 100) * 100 + strictParseShort(stripLeadingZeroes(value));\n if (valueInThisCentury < thisYear) {\n return valueInThisCentury + 100;\n }\n return valueInThisCentury;\n};\nconst FIFTY_YEARS_IN_MILLIS = 50 * 365 * 24 * 60 * 60 * 1000;\nconst adjustRfc850Year = (input) => {\n if (input.getTime() - new Date().getTime() > FIFTY_YEARS_IN_MILLIS) {\n return new Date(Date.UTC(input.getUTCFullYear() - 100, input.getUTCMonth(), input.getUTCDate(), input.getUTCHours(), input.getUTCMinutes(), input.getUTCSeconds(), input.getUTCMilliseconds()));\n }\n return input;\n};\nconst parseMonthByShortName = (value) => {\n const monthIdx = MONTHS.indexOf(value);\n if (monthIdx < 0) {\n throw new TypeError(`Invalid month: ${value}`);\n }\n return monthIdx + 1;\n};\nconst DAYS_IN_MONTH = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\nconst validateDayOfMonth = (year, month, day) => {\n let maxDays = DAYS_IN_MONTH[month];\n if (month === 1 && isLeapYear(year)) {\n maxDays = 29;\n }\n if (day > maxDays) {\n throw new TypeError(`Invalid day for ${MONTHS[month]} in ${year}: ${day}`);\n }\n};\nconst isLeapYear = (year) => {\n return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);\n};\nconst parseDateValue = (value, type, lower, upper) => {\n const dateVal = strictParseByte(stripLeadingZeroes(value));\n if (dateVal < lower || dateVal > upper) {\n throw new TypeError(`${type} must be between ${lower} and ${upper}, inclusive`);\n }\n return dateVal;\n};\nconst parseMilliseconds = (value) => {\n if (value === null || value === undefined) {\n return 0;\n }\n return strictParseFloat32(\"0.\" + value) * 1000;\n};\nconst parseOffsetToMilliseconds = (value) => {\n const directionStr = value[0];\n let direction = 1;\n if (directionStr == \"+\") {\n direction = 1;\n }\n else if (directionStr == \"-\") {\n direction = -1;\n }\n else {\n throw new TypeError(`Offset direction, ${directionStr}, must be \"+\" or \"-\"`);\n }\n const hour = Number(value.substring(1, 3));\n const minute = Number(value.substring(4, 6));\n return direction * (hour * 60 + minute) * 60 * 1000;\n};\nconst stripLeadingZeroes = (value) => {\n let idx = 0;\n while (idx < value.length - 1 && value.charAt(idx) === \"0\") {\n idx++;\n }\n if (idx === 0) {\n return value;\n }\n return value.slice(idx);\n};\n","export class ServiceException extends Error {\n constructor(options) {\n super(options.message);\n Object.setPrototypeOf(this, Object.getPrototypeOf(this).constructor.prototype);\n this.name = options.name;\n this.$fault = options.$fault;\n this.$metadata = options.$metadata;\n }\n static isInstance(value) {\n if (!value)\n return false;\n const candidate = value;\n return (ServiceException.prototype.isPrototypeOf(candidate) ||\n (Boolean(candidate.$fault) &&\n Boolean(candidate.$metadata) &&\n (candidate.$fault === \"client\" || candidate.$fault === \"server\")));\n }\n static [Symbol.hasInstance](instance) {\n if (!instance)\n return false;\n const candidate = instance;\n if (this === ServiceException) {\n return ServiceException.isInstance(instance);\n }\n if (ServiceException.isInstance(instance)) {\n if (candidate.name && this.name) {\n return this.prototype.isPrototypeOf(instance) || candidate.name === this.name;\n }\n return this.prototype.isPrototypeOf(instance);\n }\n return false;\n }\n}\nexport const decorateServiceException = (exception, additions = {}) => {\n Object.entries(additions)\n .filter(([, v]) => v !== undefined)\n .forEach(([k, v]) => {\n if (exception[k] == undefined || exception[k] === \"\") {\n exception[k] = v;\n }\n });\n const message = exception.message || exception.Message || \"UnknownError\";\n exception.message = message;\n delete exception.Message;\n return exception;\n};\n","import { decorateServiceException } from \"./exceptions\";\nexport const throwDefaultError = ({ output, parsedBody, exceptionCtor, errorCode }) => {\n const $metadata = deserializeMetadata(output);\n const statusCode = $metadata.httpStatusCode ? $metadata.httpStatusCode + \"\" : undefined;\n const response = new exceptionCtor({\n name: parsedBody?.code || parsedBody?.Code || errorCode || statusCode || \"UnknownError\",\n $fault: \"client\",\n $metadata,\n });\n throw decorateServiceException(response, parsedBody);\n};\nexport const withBaseException = (ExceptionCtor) => {\n return ({ output, parsedBody, errorCode }) => {\n throwDefaultError({ output, parsedBody, exceptionCtor: ExceptionCtor, errorCode });\n };\n};\nconst deserializeMetadata = (output) => ({\n httpStatusCode: output.statusCode,\n requestId: output.headers[\"x-amzn-requestid\"] ?? output.headers[\"x-amzn-request-id\"] ?? output.headers[\"x-amz-request-id\"],\n extendedRequestId: output.headers[\"x-amz-id-2\"],\n cfId: output.headers[\"x-amz-cf-id\"],\n});\n","export const loadConfigsForDefaultMode = (mode) => {\n switch (mode) {\n case \"standard\":\n return {\n retryMode: \"standard\",\n connectionTimeout: 3100,\n };\n case \"in-region\":\n return {\n retryMode: \"standard\",\n connectionTimeout: 1100,\n };\n case \"cross-region\":\n return {\n retryMode: \"standard\",\n connectionTimeout: 3100,\n };\n case \"mobile\":\n return {\n retryMode: \"standard\",\n connectionTimeout: 30000,\n };\n default:\n return {};\n }\n};\n","import { getChecksumConfiguration, resolveChecksumRuntimeConfig } from \"./checksum\";\nimport { getRetryConfiguration, resolveRetryRuntimeConfig } from \"./retry\";\nexport const getDefaultExtensionConfiguration = (runtimeConfig) => {\n return Object.assign(getChecksumConfiguration(runtimeConfig), getRetryConfiguration(runtimeConfig));\n};\nexport const getDefaultClientConfiguration = getDefaultExtensionConfiguration;\nexport const resolveDefaultRuntimeConfig = (config) => {\n return Object.assign(resolveChecksumRuntimeConfig(config), resolveRetryRuntimeConfig(config));\n};\n","import { AlgorithmId } from \"@smithy/types\";\nexport { AlgorithmId };\nexport const getChecksumConfiguration = (runtimeConfig) => {\n const checksumAlgorithms = [];\n for (const id in AlgorithmId) {\n const algorithmId = AlgorithmId[id];\n if (runtimeConfig[algorithmId] === undefined) {\n continue;\n }\n checksumAlgorithms.push({\n algorithmId: () => algorithmId,\n checksumConstructor: () => runtimeConfig[algorithmId],\n });\n }\n return {\n addChecksumAlgorithm(algo) {\n checksumAlgorithms.push(algo);\n },\n checksumAlgorithms() {\n return checksumAlgorithms;\n },\n };\n};\nexport const resolveChecksumRuntimeConfig = (clientConfig) => {\n const runtimeConfig = {};\n clientConfig.checksumAlgorithms().forEach((checksumAlgorithm) => {\n runtimeConfig[checksumAlgorithm.algorithmId()] = checksumAlgorithm.checksumConstructor();\n });\n return runtimeConfig;\n};\n","export const getRetryConfiguration = (runtimeConfig) => {\n return {\n setRetryStrategy(retryStrategy) {\n runtimeConfig.retryStrategy = retryStrategy;\n },\n retryStrategy() {\n return runtimeConfig.retryStrategy;\n },\n };\n};\nexport const resolveRetryRuntimeConfig = (retryStrategyConfiguration) => {\n const runtimeConfig = {};\n runtimeConfig.retryStrategy = retryStrategyConfiguration.retryStrategy();\n return runtimeConfig;\n};\n","export const isSerializableHeaderValue = (value) => {\n return value != null;\n};\n","export const LazyJsonString = function LazyJsonString(val) {\n const str = Object.assign(new String(val), {\n deserializeJSON() {\n return JSON.parse(String(val));\n },\n toString() {\n return String(val);\n },\n toJSON() {\n return String(val);\n },\n });\n return str;\n};\nLazyJsonString.from = (object) => {\n if (object && typeof object === \"object\" && (object instanceof LazyJsonString || \"deserializeJSON\" in object)) {\n return object;\n }\n else if (typeof object === \"string\" || Object.getPrototypeOf(object) === String.prototype) {\n return LazyJsonString(String(object));\n }\n return LazyJsonString(JSON.stringify(object));\n};\nLazyJsonString.fromObject = LazyJsonString.from;\n","export class NoOpLogger {\n trace() { }\n debug() { }\n info() { }\n warn() { }\n error() { }\n}\n","export function map(arg0, arg1, arg2) {\n let target;\n let filter;\n let instructions;\n if (typeof arg1 === \"undefined\" && typeof arg2 === \"undefined\") {\n target = {};\n instructions = arg0;\n }\n else {\n target = arg0;\n if (typeof arg1 === \"function\") {\n filter = arg1;\n instructions = arg2;\n return mapWithFilter(target, filter, instructions);\n }\n else {\n instructions = arg1;\n }\n }\n for (const key of Object.keys(instructions)) {\n if (!Array.isArray(instructions[key])) {\n target[key] = instructions[key];\n continue;\n }\n applyInstruction(target, null, instructions, key);\n }\n return target;\n}\nexport const convertMap = (target) => {\n const output = {};\n for (const [k, v] of Object.entries(target || {})) {\n output[k] = [, v];\n }\n return output;\n};\nexport const take = (source, instructions) => {\n const out = {};\n for (const key in instructions) {\n applyInstruction(out, source, instructions, key);\n }\n return out;\n};\nconst mapWithFilter = (target, filter, instructions) => {\n return map(target, Object.entries(instructions).reduce((_instructions, [key, value]) => {\n if (Array.isArray(value)) {\n _instructions[key] = value;\n }\n else {\n if (typeof value === \"function\") {\n _instructions[key] = [filter, value()];\n }\n else {\n _instructions[key] = [filter, value];\n }\n }\n return _instructions;\n }, {}));\n};\nconst applyInstruction = (target, source, instructions, targetKey) => {\n if (source !== null) {\n let instruction = instructions[targetKey];\n if (typeof instruction === \"function\") {\n instruction = [, instruction];\n }\n const [filter = nonNullish, valueFn = pass, sourceKey = targetKey] = instruction;\n if ((typeof filter === \"function\" && filter(source[sourceKey])) || (typeof filter !== \"function\" && !!filter)) {\n target[targetKey] = valueFn(source[sourceKey]);\n }\n return;\n }\n let [filter, value] = instructions[targetKey];\n if (typeof value === \"function\") {\n let _value;\n const defaultFilterPassed = filter === undefined && (_value = value()) != null;\n const customFilterPassed = (typeof filter === \"function\" && !!filter(void 0)) || (typeof filter !== \"function\" && !!filter);\n if (defaultFilterPassed) {\n target[targetKey] = _value;\n }\n else if (customFilterPassed) {\n target[targetKey] = value();\n }\n }\n else {\n const defaultFilterPassed = filter === undefined && value != null;\n const customFilterPassed = (typeof filter === \"function\" && !!filter(value)) || (typeof filter !== \"function\" && !!filter);\n if (defaultFilterPassed || customFilterPassed) {\n target[targetKey] = value;\n }\n }\n};\nconst nonNullish = (_) => _ != null;\nconst pass = (_) => _;\n","export const serializeFloat = (value) => {\n if (value !== value) {\n return \"NaN\";\n }\n switch (value) {\n case Infinity:\n return \"Infinity\";\n case -Infinity:\n return \"-Infinity\";\n default:\n return value;\n }\n};\nexport const serializeDateTime = (date) => date.toISOString().replace(\".000Z\", \"Z\");\n","export const _json = (obj) => {\n if (obj == null) {\n return {};\n }\n if (Array.isArray(obj)) {\n return obj.filter((_) => _ != null).map(_json);\n }\n if (typeof obj === \"object\") {\n const target = {};\n for (const key of Object.keys(obj)) {\n if (obj[key] == null) {\n continue;\n }\n target[key] = _json(obj[key]);\n }\n return target;\n }\n return obj;\n};\n","export const isStreamingPayload = (request) => request?.body instanceof ReadableStream;\n","import { HttpRequest, HttpResponse } from \"@smithy/protocol-http\";\nimport { isServerError, isThrottlingError, isTransientError } from \"@smithy/service-error-classification\";\nimport { NoOpLogger } from \"@smithy/smithy-client\";\nimport { INVOCATION_ID_HEADER, REQUEST_HEADER } from \"@smithy/util-retry\";\nimport { v4 } from \"uuid\";\nimport { isStreamingPayload } from \"./isStreamingPayload/isStreamingPayload\";\nimport { asSdkError } from \"./util\";\nexport const retryMiddleware = (options) => (next, context) => async (args) => {\n let retryStrategy = await options.retryStrategy();\n const maxAttempts = await options.maxAttempts();\n if (isRetryStrategyV2(retryStrategy)) {\n retryStrategy = retryStrategy;\n let retryToken = await retryStrategy.acquireInitialRetryToken(context[\"partition_id\"]);\n let lastError = new Error();\n let attempts = 0;\n let totalRetryDelay = 0;\n const { request } = args;\n const isRequest = HttpRequest.isInstance(request);\n if (isRequest) {\n request.headers[INVOCATION_ID_HEADER] = v4();\n }\n while (true) {\n try {\n if (isRequest) {\n request.headers[REQUEST_HEADER] = `attempt=${attempts + 1}; max=${maxAttempts}`;\n }\n const { response, output } = await next(args);\n retryStrategy.recordSuccess(retryToken);\n output.$metadata.attempts = attempts + 1;\n output.$metadata.totalRetryDelay = totalRetryDelay;\n return { response, output };\n }\n catch (e) {\n const retryErrorInfo = getRetryErrorInfo(e);\n lastError = asSdkError(e);\n if (isRequest && isStreamingPayload(request)) {\n (context.logger instanceof NoOpLogger ? console : context.logger)?.warn(\"An error was encountered in a non-retryable streaming request.\");\n throw lastError;\n }\n try {\n retryToken = await retryStrategy.refreshRetryTokenForRetry(retryToken, retryErrorInfo);\n }\n catch (refreshError) {\n if (!lastError.$metadata) {\n lastError.$metadata = {};\n }\n lastError.$metadata.attempts = attempts + 1;\n lastError.$metadata.totalRetryDelay = totalRetryDelay;\n throw lastError;\n }\n attempts = retryToken.getRetryCount();\n const delay = retryToken.getRetryDelay();\n totalRetryDelay += delay;\n await new Promise((resolve) => setTimeout(resolve, delay));\n }\n }\n }\n else {\n retryStrategy = retryStrategy;\n if (retryStrategy?.mode)\n context.userAgent = [...(context.userAgent || []), [\"cfg/retry-mode\", retryStrategy.mode]];\n return retryStrategy.retry(next, args);\n }\n};\nconst isRetryStrategyV2 = (retryStrategy) => typeof retryStrategy.acquireInitialRetryToken !== \"undefined\" &&\n typeof retryStrategy.refreshRetryTokenForRetry !== \"undefined\" &&\n typeof retryStrategy.recordSuccess !== \"undefined\";\nconst getRetryErrorInfo = (error) => {\n const errorInfo = {\n error,\n errorType: getRetryErrorType(error),\n };\n const retryAfterHint = getRetryAfterHint(error.$response);\n if (retryAfterHint) {\n errorInfo.retryAfterHint = retryAfterHint;\n }\n return errorInfo;\n};\nconst getRetryErrorType = (error) => {\n if (isThrottlingError(error))\n return \"THROTTLING\";\n if (isTransientError(error))\n return \"TRANSIENT\";\n if (isServerError(error))\n return \"SERVER_ERROR\";\n return \"CLIENT_ERROR\";\n};\nexport const retryMiddlewareOptions = {\n name: \"retryMiddleware\",\n tags: [\"RETRY\"],\n step: \"finalizeRequest\",\n priority: \"high\",\n override: true,\n};\nexport const getRetryPlugin = (options) => ({\n applyToStack: (clientStack) => {\n clientStack.add(retryMiddleware(options), retryMiddlewareOptions);\n },\n});\nexport const getRetryAfterHint = (response) => {\n if (!HttpResponse.isInstance(response))\n return;\n const retryAfterHeaderName = Object.keys(response.headers).find((key) => key.toLowerCase() === \"retry-after\");\n if (!retryAfterHeaderName)\n return;\n const retryAfter = response.headers[retryAfterHeaderName];\n const retryAfterSeconds = Number(retryAfter);\n if (!Number.isNaN(retryAfterSeconds))\n return new Date(retryAfterSeconds * 1000);\n const retryAfterDate = new Date(retryAfter);\n return retryAfterDate;\n};\n","import { fromUtf8 } from \"./fromUtf8\";\nexport const toUint8Array = (data) => {\n if (typeof data === \"string\") {\n return fromUtf8(data);\n }\n if (ArrayBuffer.isView(data)) {\n return new Uint8Array(data.buffer, data.byteOffset, data.byteLength / Uint8Array.BYTES_PER_ELEMENT);\n }\n return new Uint8Array(data);\n};\n","export const ALGORITHM_QUERY_PARAM = \"X-Amz-Algorithm\";\nexport const CREDENTIAL_QUERY_PARAM = \"X-Amz-Credential\";\nexport const AMZ_DATE_QUERY_PARAM = \"X-Amz-Date\";\nexport const SIGNED_HEADERS_QUERY_PARAM = \"X-Amz-SignedHeaders\";\nexport const EXPIRES_QUERY_PARAM = \"X-Amz-Expires\";\nexport const SIGNATURE_QUERY_PARAM = \"X-Amz-Signature\";\nexport const TOKEN_QUERY_PARAM = \"X-Amz-Security-Token\";\nexport const REGION_SET_PARAM = \"X-Amz-Region-Set\";\nexport const AUTH_HEADER = \"authorization\";\nexport const AMZ_DATE_HEADER = AMZ_DATE_QUERY_PARAM.toLowerCase();\nexport const DATE_HEADER = \"date\";\nexport const GENERATED_HEADERS = [AUTH_HEADER, AMZ_DATE_HEADER, DATE_HEADER];\nexport const SIGNATURE_HEADER = SIGNATURE_QUERY_PARAM.toLowerCase();\nexport const SHA256_HEADER = \"x-amz-content-sha256\";\nexport const TOKEN_HEADER = TOKEN_QUERY_PARAM.toLowerCase();\nexport const HOST_HEADER = \"host\";\nexport const ALWAYS_UNSIGNABLE_HEADERS = {\n authorization: true,\n \"cache-control\": true,\n connection: true,\n expect: true,\n from: true,\n \"keep-alive\": true,\n \"max-forwards\": true,\n pragma: true,\n referer: true,\n te: true,\n trailer: true,\n \"transfer-encoding\": true,\n upgrade: true,\n \"user-agent\": true,\n \"x-amzn-trace-id\": true,\n};\nexport const PROXY_HEADER_PATTERN = /^proxy-/;\nexport const SEC_HEADER_PATTERN = /^sec-/;\nexport const UNSIGNABLE_PATTERNS = [/^proxy-/i, /^sec-/i];\nexport const ALGORITHM_IDENTIFIER = \"AWS4-HMAC-SHA256\";\nexport const ALGORITHM_IDENTIFIER_V4A = \"AWS4-ECDSA-P256-SHA256\";\nexport const EVENT_ALGORITHM_IDENTIFIER = \"AWS4-HMAC-SHA256-PAYLOAD\";\nexport const UNSIGNED_PAYLOAD = \"UNSIGNED-PAYLOAD\";\nexport const MAX_CACHE_SIZE = 50;\nexport const KEY_TYPE_IDENTIFIER = \"aws4_request\";\nexport const MAX_PRESIGNED_TTL = 60 * 60 * 24 * 7;\n","import { toHex } from \"@smithy/util-hex-encoding\";\nimport { toUint8Array } from \"@smithy/util-utf8\";\nimport { KEY_TYPE_IDENTIFIER, MAX_CACHE_SIZE } from \"./constants\";\nconst signingKeyCache = {};\nconst cacheQueue = [];\nexport const createScope = (shortDate, region, service) => `${shortDate}/${region}/${service}/${KEY_TYPE_IDENTIFIER}`;\nexport const getSigningKey = async (sha256Constructor, credentials, shortDate, region, service) => {\n const credsHash = await hmac(sha256Constructor, credentials.secretAccessKey, credentials.accessKeyId);\n const cacheKey = `${shortDate}:${region}:${service}:${toHex(credsHash)}:${credentials.sessionToken}`;\n if (cacheKey in signingKeyCache) {\n return signingKeyCache[cacheKey];\n }\n cacheQueue.push(cacheKey);\n while (cacheQueue.length > MAX_CACHE_SIZE) {\n delete signingKeyCache[cacheQueue.shift()];\n }\n let key = `AWS4${credentials.secretAccessKey}`;\n for (const signable of [shortDate, region, service, KEY_TYPE_IDENTIFIER]) {\n key = await hmac(sha256Constructor, key, signable);\n }\n return (signingKeyCache[cacheKey] = key);\n};\nexport const clearCredentialCache = () => {\n cacheQueue.length = 0;\n Object.keys(signingKeyCache).forEach((cacheKey) => {\n delete signingKeyCache[cacheKey];\n });\n};\nconst hmac = (ctor, secret, data) => {\n const hash = new ctor(secret);\n hash.update(toUint8Array(data));\n return hash.digest();\n};\n","import { ALWAYS_UNSIGNABLE_HEADERS, PROXY_HEADER_PATTERN, SEC_HEADER_PATTERN } from \"./constants\";\nexport const getCanonicalHeaders = ({ headers }, unsignableHeaders, signableHeaders) => {\n const canonical = {};\n for (const headerName of Object.keys(headers).sort()) {\n if (headers[headerName] == undefined) {\n continue;\n }\n const canonicalHeaderName = headerName.toLowerCase();\n if (canonicalHeaderName in ALWAYS_UNSIGNABLE_HEADERS ||\n unsignableHeaders?.has(canonicalHeaderName) ||\n PROXY_HEADER_PATTERN.test(canonicalHeaderName) ||\n SEC_HEADER_PATTERN.test(canonicalHeaderName)) {\n if (!signableHeaders || (signableHeaders && !signableHeaders.has(canonicalHeaderName))) {\n continue;\n }\n }\n canonical[canonicalHeaderName] = headers[headerName].trim().replace(/\\s+/g, \" \");\n }\n return canonical;\n};\n","import { isArrayBuffer } from \"@smithy/is-array-buffer\";\nimport { toHex } from \"@smithy/util-hex-encoding\";\nimport { toUint8Array } from \"@smithy/util-utf8\";\nimport { SHA256_HEADER, UNSIGNED_PAYLOAD } from \"./constants\";\nexport const getPayloadHash = async ({ headers, body }, hashConstructor) => {\n for (const headerName of Object.keys(headers)) {\n if (headerName.toLowerCase() === SHA256_HEADER) {\n return headers[headerName];\n }\n }\n if (body == undefined) {\n return \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\";\n }\n else if (typeof body === \"string\" || ArrayBuffer.isView(body) || isArrayBuffer(body)) {\n const hashCtor = new hashConstructor();\n hashCtor.update(toUint8Array(body));\n return toHex(await hashCtor.digest());\n }\n return UNSIGNED_PAYLOAD;\n};\n","export const isArrayBuffer = (arg) => (typeof ArrayBuffer === \"function\" && arg instanceof ArrayBuffer) ||\n Object.prototype.toString.call(arg) === \"[object ArrayBuffer]\";\n","import { fromHex, toHex } from \"@smithy/util-hex-encoding\";\nimport { fromUtf8 } from \"@smithy/util-utf8\";\nexport class HeaderFormatter {\n format(headers) {\n const chunks = [];\n for (const headerName of Object.keys(headers)) {\n const bytes = fromUtf8(headerName);\n chunks.push(Uint8Array.from([bytes.byteLength]), bytes, this.formatHeaderValue(headers[headerName]));\n }\n const out = new Uint8Array(chunks.reduce((carry, bytes) => carry + bytes.byteLength, 0));\n let position = 0;\n for (const chunk of chunks) {\n out.set(chunk, position);\n position += chunk.byteLength;\n }\n return out;\n }\n formatHeaderValue(header) {\n switch (header.type) {\n case \"boolean\":\n return Uint8Array.from([header.value ? 0 : 1]);\n case \"byte\":\n return Uint8Array.from([2, header.value]);\n case \"short\":\n const shortView = new DataView(new ArrayBuffer(3));\n shortView.setUint8(0, 3);\n shortView.setInt16(1, header.value, false);\n return new Uint8Array(shortView.buffer);\n case \"integer\":\n const intView = new DataView(new ArrayBuffer(5));\n intView.setUint8(0, 4);\n intView.setInt32(1, header.value, false);\n return new Uint8Array(intView.buffer);\n case \"long\":\n const longBytes = new Uint8Array(9);\n longBytes[0] = 5;\n longBytes.set(header.value.bytes, 1);\n return longBytes;\n case \"binary\":\n const binView = new DataView(new ArrayBuffer(3 + header.value.byteLength));\n binView.setUint8(0, 6);\n binView.setUint16(1, header.value.byteLength, false);\n const binBytes = new Uint8Array(binView.buffer);\n binBytes.set(header.value, 3);\n return binBytes;\n case \"string\":\n const utf8Bytes = fromUtf8(header.value);\n const strView = new DataView(new ArrayBuffer(3 + utf8Bytes.byteLength));\n strView.setUint8(0, 7);\n strView.setUint16(1, utf8Bytes.byteLength, false);\n const strBytes = new Uint8Array(strView.buffer);\n strBytes.set(utf8Bytes, 3);\n return strBytes;\n case \"timestamp\":\n const tsBytes = new Uint8Array(9);\n tsBytes[0] = 8;\n tsBytes.set(Int64.fromNumber(header.value.valueOf()).bytes, 1);\n return tsBytes;\n case \"uuid\":\n if (!UUID_PATTERN.test(header.value)) {\n throw new Error(`Invalid UUID received: ${header.value}`);\n }\n const uuidBytes = new Uint8Array(17);\n uuidBytes[0] = 9;\n uuidBytes.set(fromHex(header.value.replace(/\\-/g, \"\")), 1);\n return uuidBytes;\n }\n }\n}\nvar HEADER_VALUE_TYPE;\n(function (HEADER_VALUE_TYPE) {\n HEADER_VALUE_TYPE[HEADER_VALUE_TYPE[\"boolTrue\"] = 0] = \"boolTrue\";\n HEADER_VALUE_TYPE[HEADER_VALUE_TYPE[\"boolFalse\"] = 1] = \"boolFalse\";\n HEADER_VALUE_TYPE[HEADER_VALUE_TYPE[\"byte\"] = 2] = \"byte\";\n HEADER_VALUE_TYPE[HEADER_VALUE_TYPE[\"short\"] = 3] = \"short\";\n HEADER_VALUE_TYPE[HEADER_VALUE_TYPE[\"integer\"] = 4] = \"integer\";\n HEADER_VALUE_TYPE[HEADER_VALUE_TYPE[\"long\"] = 5] = \"long\";\n HEADER_VALUE_TYPE[HEADER_VALUE_TYPE[\"byteArray\"] = 6] = \"byteArray\";\n HEADER_VALUE_TYPE[HEADER_VALUE_TYPE[\"string\"] = 7] = \"string\";\n HEADER_VALUE_TYPE[HEADER_VALUE_TYPE[\"timestamp\"] = 8] = \"timestamp\";\n HEADER_VALUE_TYPE[HEADER_VALUE_TYPE[\"uuid\"] = 9] = \"uuid\";\n})(HEADER_VALUE_TYPE || (HEADER_VALUE_TYPE = {}));\nconst UUID_PATTERN = /^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$/;\nexport class Int64 {\n constructor(bytes) {\n this.bytes = bytes;\n if (bytes.byteLength !== 8) {\n throw new Error(\"Int64 buffers must be exactly 8 bytes\");\n }\n }\n static fromNumber(number) {\n if (number > 9223372036854776000 || number < -9223372036854776000) {\n throw new Error(`${number} is too large (or, if negative, too small) to represent as an Int64`);\n }\n const bytes = new Uint8Array(8);\n for (let i = 7, remaining = Math.abs(Math.round(number)); i > -1 && remaining > 0; i--, remaining /= 256) {\n bytes[i] = remaining;\n }\n if (number < 0) {\n negate(bytes);\n }\n return new Int64(bytes);\n }\n valueOf() {\n const bytes = this.bytes.slice(0);\n const negative = bytes[0] & 0b10000000;\n if (negative) {\n negate(bytes);\n }\n return parseInt(toHex(bytes), 16) * (negative ? -1 : 1);\n }\n toString() {\n return String(this.valueOf());\n }\n}\nfunction negate(bytes) {\n for (let i = 0; i < 8; i++) {\n bytes[i] ^= 0xff;\n }\n for (let i = 7; i > -1; i--) {\n bytes[i]++;\n if (bytes[i] !== 0)\n break;\n }\n}\n","export const hasHeader = (soughtHeader, headers) => {\n soughtHeader = soughtHeader.toLowerCase();\n for (const headerName of Object.keys(headers)) {\n if (soughtHeader === headerName.toLowerCase()) {\n return true;\n }\n }\n return false;\n};\nexport const getHeaderValue = (soughtHeader, headers) => {\n soughtHeader = soughtHeader.toLowerCase();\n for (const headerName of Object.keys(headers)) {\n if (soughtHeader === headerName.toLowerCase()) {\n return headers[headerName];\n }\n }\n return undefined;\n};\nexport const deleteHeader = (soughtHeader, headers) => {\n soughtHeader = soughtHeader.toLowerCase();\n for (const headerName of Object.keys(headers)) {\n if (soughtHeader === headerName.toLowerCase()) {\n delete headers[headerName];\n }\n }\n};\n","import { HttpRequest } from \"@smithy/protocol-http\";\nimport { GENERATED_HEADERS } from \"./constants\";\nexport const prepareRequest = (request) => {\n request = HttpRequest.clone(request);\n for (const headerName of Object.keys(request.headers)) {\n if (GENERATED_HEADERS.indexOf(headerName.toLowerCase()) > -1) {\n delete request.headers[headerName];\n }\n }\n return request;\n};\n","export const iso8601 = (time) => toDate(time)\n .toISOString()\n .replace(/\\.\\d{3}Z$/, \"Z\");\nexport const toDate = (time) => {\n if (typeof time === \"number\") {\n return new Date(time * 1000);\n }\n if (typeof time === \"string\") {\n if (Number(time)) {\n return new Date(Number(time) * 1000);\n }\n return new Date(time);\n }\n return time;\n};\n","import { toHex } from \"@smithy/util-hex-encoding\";\nimport { normalizeProvider } from \"@smithy/util-middleware\";\nimport { escapeUri } from \"@smithy/util-uri-escape\";\nimport { toUint8Array } from \"@smithy/util-utf8\";\nimport { ALGORITHM_IDENTIFIER, ALGORITHM_QUERY_PARAM, AMZ_DATE_HEADER, AMZ_DATE_QUERY_PARAM, AUTH_HEADER, CREDENTIAL_QUERY_PARAM, EVENT_ALGORITHM_IDENTIFIER, EXPIRES_QUERY_PARAM, MAX_PRESIGNED_TTL, SHA256_HEADER, SIGNATURE_QUERY_PARAM, SIGNED_HEADERS_QUERY_PARAM, TOKEN_HEADER, TOKEN_QUERY_PARAM, } from \"./constants\";\nimport { createScope, getSigningKey } from \"./credentialDerivation\";\nimport { getCanonicalHeaders } from \"./getCanonicalHeaders\";\nimport { getCanonicalQuery } from \"./getCanonicalQuery\";\nimport { getPayloadHash } from \"./getPayloadHash\";\nimport { HeaderFormatter } from \"./HeaderFormatter\";\nimport { hasHeader } from \"./headerUtil\";\nimport { moveHeadersToQuery } from \"./moveHeadersToQuery\";\nimport { prepareRequest } from \"./prepareRequest\";\nimport { iso8601 } from \"./utilDate\";\nexport class SignatureV4 {\n constructor({ applyChecksum, credentials, region, service, sha256, uriEscapePath = true, }) {\n this.headerFormatter = new HeaderFormatter();\n this.service = service;\n this.sha256 = sha256;\n this.uriEscapePath = uriEscapePath;\n this.applyChecksum = typeof applyChecksum === \"boolean\" ? applyChecksum : true;\n this.regionProvider = normalizeProvider(region);\n this.credentialProvider = normalizeProvider(credentials);\n }\n async presign(originalRequest, options = {}) {\n const { signingDate = new Date(), expiresIn = 3600, unsignableHeaders, unhoistableHeaders, signableHeaders, hoistableHeaders, signingRegion, signingService, } = options;\n const credentials = await this.credentialProvider();\n this.validateResolvedCredentials(credentials);\n const region = signingRegion ?? (await this.regionProvider());\n const { longDate, shortDate } = formatDate(signingDate);\n if (expiresIn > MAX_PRESIGNED_TTL) {\n return Promise.reject(\"Signature version 4 presigned URLs\" + \" must have an expiration date less than one week in\" + \" the future\");\n }\n const scope = createScope(shortDate, region, signingService ?? this.service);\n const request = moveHeadersToQuery(prepareRequest(originalRequest), { unhoistableHeaders, hoistableHeaders });\n if (credentials.sessionToken) {\n request.query[TOKEN_QUERY_PARAM] = credentials.sessionToken;\n }\n request.query[ALGORITHM_QUERY_PARAM] = ALGORITHM_IDENTIFIER;\n request.query[CREDENTIAL_QUERY_PARAM] = `${credentials.accessKeyId}/${scope}`;\n request.query[AMZ_DATE_QUERY_PARAM] = longDate;\n request.query[EXPIRES_QUERY_PARAM] = expiresIn.toString(10);\n const canonicalHeaders = getCanonicalHeaders(request, unsignableHeaders, signableHeaders);\n request.query[SIGNED_HEADERS_QUERY_PARAM] = getCanonicalHeaderList(canonicalHeaders);\n request.query[SIGNATURE_QUERY_PARAM] = await this.getSignature(longDate, scope, this.getSigningKey(credentials, region, shortDate, signingService), this.createCanonicalRequest(request, canonicalHeaders, await getPayloadHash(originalRequest, this.sha256)));\n return request;\n }\n async sign(toSign, options) {\n if (typeof toSign === \"string\") {\n return this.signString(toSign, options);\n }\n else if (toSign.headers && toSign.payload) {\n return this.signEvent(toSign, options);\n }\n else if (toSign.message) {\n return this.signMessage(toSign, options);\n }\n else {\n return this.signRequest(toSign, options);\n }\n }\n async signEvent({ headers, payload }, { signingDate = new Date(), priorSignature, signingRegion, signingService }) {\n const region = signingRegion ?? (await this.regionProvider());\n const { shortDate, longDate } = formatDate(signingDate);\n const scope = createScope(shortDate, region, signingService ?? this.service);\n const hashedPayload = await getPayloadHash({ headers: {}, body: payload }, this.sha256);\n const hash = new this.sha256();\n hash.update(headers);\n const hashedHeaders = toHex(await hash.digest());\n const stringToSign = [\n EVENT_ALGORITHM_IDENTIFIER,\n longDate,\n scope,\n priorSignature,\n hashedHeaders,\n hashedPayload,\n ].join(\"\\n\");\n return this.signString(stringToSign, { signingDate, signingRegion: region, signingService });\n }\n async signMessage(signableMessage, { signingDate = new Date(), signingRegion, signingService }) {\n const promise = this.signEvent({\n headers: this.headerFormatter.format(signableMessage.message.headers),\n payload: signableMessage.message.body,\n }, {\n signingDate,\n signingRegion,\n signingService,\n priorSignature: signableMessage.priorSignature,\n });\n return promise.then((signature) => {\n return { message: signableMessage.message, signature };\n });\n }\n async signString(stringToSign, { signingDate = new Date(), signingRegion, signingService } = {}) {\n const credentials = await this.credentialProvider();\n this.validateResolvedCredentials(credentials);\n const region = signingRegion ?? (await this.regionProvider());\n const { shortDate } = formatDate(signingDate);\n const hash = new this.sha256(await this.getSigningKey(credentials, region, shortDate, signingService));\n hash.update(toUint8Array(stringToSign));\n return toHex(await hash.digest());\n }\n async signRequest(requestToSign, { signingDate = new Date(), signableHeaders, unsignableHeaders, signingRegion, signingService, } = {}) {\n const credentials = await this.credentialProvider();\n this.validateResolvedCredentials(credentials);\n const region = signingRegion ?? (await this.regionProvider());\n const request = prepareRequest(requestToSign);\n const { longDate, shortDate } = formatDate(signingDate);\n const scope = createScope(shortDate, region, signingService ?? this.service);\n request.headers[AMZ_DATE_HEADER] = longDate;\n if (credentials.sessionToken) {\n request.headers[TOKEN_HEADER] = credentials.sessionToken;\n }\n const payloadHash = await getPayloadHash(request, this.sha256);\n if (!hasHeader(SHA256_HEADER, request.headers) && this.applyChecksum) {\n request.headers[SHA256_HEADER] = payloadHash;\n }\n const canonicalHeaders = getCanonicalHeaders(request, unsignableHeaders, signableHeaders);\n const signature = await this.getSignature(longDate, scope, this.getSigningKey(credentials, region, shortDate, signingService), this.createCanonicalRequest(request, canonicalHeaders, payloadHash));\n request.headers[AUTH_HEADER] =\n `${ALGORITHM_IDENTIFIER} ` +\n `Credential=${credentials.accessKeyId}/${scope}, ` +\n `SignedHeaders=${getCanonicalHeaderList(canonicalHeaders)}, ` +\n `Signature=${signature}`;\n return request;\n }\n createCanonicalRequest(request, canonicalHeaders, payloadHash) {\n const sortedHeaders = Object.keys(canonicalHeaders).sort();\n return `${request.method}\n${this.getCanonicalPath(request)}\n${getCanonicalQuery(request)}\n${sortedHeaders.map((name) => `${name}:${canonicalHeaders[name]}`).join(\"\\n\")}\n\n${sortedHeaders.join(\";\")}\n${payloadHash}`;\n }\n async createStringToSign(longDate, credentialScope, canonicalRequest) {\n const hash = new this.sha256();\n hash.update(toUint8Array(canonicalRequest));\n const hashedRequest = await hash.digest();\n return `${ALGORITHM_IDENTIFIER}\n${longDate}\n${credentialScope}\n${toHex(hashedRequest)}`;\n }\n getCanonicalPath({ path }) {\n if (this.uriEscapePath) {\n const normalizedPathSegments = [];\n for (const pathSegment of path.split(\"/\")) {\n if (pathSegment?.length === 0)\n continue;\n if (pathSegment === \".\")\n continue;\n if (pathSegment === \"..\") {\n normalizedPathSegments.pop();\n }\n else {\n normalizedPathSegments.push(pathSegment);\n }\n }\n const normalizedPath = `${path?.startsWith(\"/\") ? \"/\" : \"\"}${normalizedPathSegments.join(\"/\")}${normalizedPathSegments.length > 0 && path?.endsWith(\"/\") ? \"/\" : \"\"}`;\n const doubleEncoded = escapeUri(normalizedPath);\n return doubleEncoded.replace(/%2F/g, \"/\");\n }\n return path;\n }\n async getSignature(longDate, credentialScope, keyPromise, canonicalRequest) {\n const stringToSign = await this.createStringToSign(longDate, credentialScope, canonicalRequest);\n const hash = new this.sha256(await keyPromise);\n hash.update(toUint8Array(stringToSign));\n return toHex(await hash.digest());\n }\n getSigningKey(credentials, region, shortDate, service) {\n return getSigningKey(this.sha256, credentials, shortDate, region, service || this.service);\n }\n validateResolvedCredentials(credentials) {\n if (typeof credentials !== \"object\" ||\n typeof credentials.accessKeyId !== \"string\" ||\n typeof credentials.secretAccessKey !== \"string\") {\n throw new Error(\"Resolved credential object is not valid\");\n }\n }\n}\nconst formatDate = (now) => {\n const longDate = iso8601(now).replace(/[\\-:]/g, \"\");\n return {\n longDate,\n shortDate: longDate.slice(0, 8),\n };\n};\nconst getCanonicalHeaderList = (headers) => Object.keys(headers).sort().join(\";\");\n","import { HttpRequest } from \"@smithy/protocol-http\";\nexport const moveHeadersToQuery = (request, options = {}) => {\n const { headers, query = {} } = HttpRequest.clone(request);\n for (const name of Object.keys(headers)) {\n const lname = name.toLowerCase();\n if ((lname.slice(0, 6) === \"x-amz-\" && !options.unhoistableHeaders?.has(lname)) ||\n options.hoistableHeaders?.has(lname)) {\n query[name] = headers[name];\n delete headers[name];\n }\n }\n return {\n ...request,\n headers,\n query,\n };\n};\n","import { escapeUri } from \"@smithy/util-uri-escape\";\nimport { SIGNATURE_HEADER } from \"./constants\";\nexport const getCanonicalQuery = ({ query = {} }) => {\n const keys = [];\n const serialized = {};\n for (const key of Object.keys(query)) {\n if (key.toLowerCase() === SIGNATURE_HEADER) {\n continue;\n }\n const encodedKey = escapeUri(key);\n keys.push(encodedKey);\n const value = query[key];\n if (typeof value === \"string\") {\n serialized[encodedKey] = `${encodedKey}=${escapeUri(value)}`;\n }\n else if (Array.isArray(value)) {\n serialized[encodedKey] = value\n .slice(0)\n .reduce((encoded, value) => encoded.concat([`${encodedKey}=${escapeUri(value)}`]), [])\n .sort()\n .join(\"&\");\n }\n }\n return keys\n .sort()\n .map((key) => serialized[key])\n .filter((serialized) => serialized)\n .join(\"&\");\n};\n","import { setCredentialFeature } from \"@aws-sdk/core/client\";\nimport { doesIdentityRequireRefresh, isIdentityExpired, memoizeIdentityProvider, normalizeProvider, } from \"@smithy/core\";\nimport { SignatureV4 } from \"@smithy/signature-v4\";\nexport const resolveAwsSdkSigV4Config = (config) => {\n let inputCredentials = config.credentials;\n let isUserSupplied = !!config.credentials;\n let resolvedCredentials = undefined;\n Object.defineProperty(config, \"credentials\", {\n set(credentials) {\n if (credentials && credentials !== inputCredentials && credentials !== resolvedCredentials) {\n isUserSupplied = true;\n }\n inputCredentials = credentials;\n const memoizedProvider = normalizeCredentialProvider(config, {\n credentials: inputCredentials,\n credentialDefaultProvider: config.credentialDefaultProvider,\n });\n const boundProvider = bindCallerConfig(config, memoizedProvider);\n if (isUserSupplied && !boundProvider.attributed) {\n resolvedCredentials = async (options) => boundProvider(options).then((creds) => setCredentialFeature(creds, \"CREDENTIALS_CODE\", \"e\"));\n resolvedCredentials.memoized = boundProvider.memoized;\n resolvedCredentials.configBound = boundProvider.configBound;\n resolvedCredentials.attributed = true;\n }\n else {\n resolvedCredentials = boundProvider;\n }\n },\n get() {\n return resolvedCredentials;\n },\n enumerable: true,\n configurable: true,\n });\n config.credentials = inputCredentials;\n const { signingEscapePath = true, systemClockOffset = config.systemClockOffset || 0, sha256, } = config;\n let signer;\n if (config.signer) {\n signer = normalizeProvider(config.signer);\n }\n else if (config.regionInfoProvider) {\n signer = () => normalizeProvider(config.region)()\n .then(async (region) => [\n (await config.regionInfoProvider(region, {\n useFipsEndpoint: await config.useFipsEndpoint(),\n useDualstackEndpoint: await config.useDualstackEndpoint(),\n })) || {},\n region,\n ])\n .then(([regionInfo, region]) => {\n const { signingRegion, signingService } = regionInfo;\n config.signingRegion = config.signingRegion || signingRegion || region;\n config.signingName = config.signingName || signingService || config.serviceId;\n const params = {\n ...config,\n credentials: config.credentials,\n region: config.signingRegion,\n service: config.signingName,\n sha256,\n uriEscapePath: signingEscapePath,\n };\n const SignerCtor = config.signerConstructor || SignatureV4;\n return new SignerCtor(params);\n });\n }\n else {\n signer = async (authScheme) => {\n authScheme = Object.assign({}, {\n name: \"sigv4\",\n signingName: config.signingName || config.defaultSigningName,\n signingRegion: await normalizeProvider(config.region)(),\n properties: {},\n }, authScheme);\n const signingRegion = authScheme.signingRegion;\n const signingService = authScheme.signingName;\n config.signingRegion = config.signingRegion || signingRegion;\n config.signingName = config.signingName || signingService || config.serviceId;\n const params = {\n ...config,\n credentials: config.credentials,\n region: config.signingRegion,\n service: config.signingName,\n sha256,\n uriEscapePath: signingEscapePath,\n };\n const SignerCtor = config.signerConstructor || SignatureV4;\n return new SignerCtor(params);\n };\n }\n const resolvedConfig = Object.assign(config, {\n systemClockOffset,\n signingEscapePath,\n signer,\n });\n return resolvedConfig;\n};\nexport const resolveAWSSDKSigV4Config = resolveAwsSdkSigV4Config;\nfunction normalizeCredentialProvider(config, { credentials, credentialDefaultProvider, }) {\n let credentialsProvider;\n if (credentials) {\n if (!credentials?.memoized) {\n credentialsProvider = memoizeIdentityProvider(credentials, isIdentityExpired, doesIdentityRequireRefresh);\n }\n else {\n credentialsProvider = credentials;\n }\n }\n else {\n if (credentialDefaultProvider) {\n credentialsProvider = normalizeProvider(credentialDefaultProvider(Object.assign({}, config, {\n parentClientConfig: config,\n })));\n }\n else {\n credentialsProvider = async () => {\n throw new Error(\"@aws-sdk/core::resolveAwsSdkSigV4Config - `credentials` not provided and no credentialDefaultProvider was configured.\");\n };\n }\n }\n credentialsProvider.memoized = true;\n return credentialsProvider;\n}\nfunction bindCallerConfig(config, credentialsProvider) {\n if (credentialsProvider.configBound) {\n return credentialsProvider;\n }\n const fn = async (options) => credentialsProvider({ ...options, callerClientConfig: config });\n fn.memoized = credentialsProvider.memoized;\n fn.configBound = true;\n return fn;\n}\n","export function setCredentialFeature(credentials, feature, value) {\n if (!credentials.$source) {\n credentials.$source = {};\n }\n credentials.$source[feature] = value;\n return credentials;\n}\n","import { resolveAwsSdkSigV4Config, } from \"@aws-sdk/core\";\nimport { getSmithyContext, normalizeProvider } from \"@smithy/util-middleware\";\nexport const defaultChimeSDKMessagingHttpAuthSchemeParametersProvider = async (config, context, input) => {\n return {\n operation: getSmithyContext(context).operation,\n region: (await normalizeProvider(config.region)()) ||\n (() => {\n throw new Error(\"expected `region` to be configured for `aws.auth#sigv4`\");\n })(),\n };\n};\nfunction createAwsAuthSigv4HttpAuthOption(authParameters) {\n return {\n schemeId: \"aws.auth#sigv4\",\n signingProperties: {\n name: \"chime\",\n region: authParameters.region,\n },\n propertiesExtractor: (config, context) => ({\n signingProperties: {\n config,\n context,\n },\n }),\n };\n}\nexport const defaultChimeSDKMessagingHttpAuthSchemeProvider = (authParameters) => {\n const options = [];\n switch (authParameters.operation) {\n default: {\n options.push(createAwsAuthSigv4HttpAuthOption(authParameters));\n }\n }\n return options;\n};\nexport const resolveHttpAuthSchemeConfig = (config) => {\n const config_0 = resolveAwsSdkSigV4Config(config);\n return Object.assign(config_0, {});\n};\n","export const resolveClientEndpointParameters = (options) => {\n return Object.assign(options, {\n useDualstackEndpoint: options.useDualstackEndpoint ?? false,\n useFipsEndpoint: options.useFipsEndpoint ?? false,\n defaultSigningName: \"chime\",\n });\n};\nexport const commonParams = {\n UseFIPS: { type: \"builtInParams\", name: \"useFipsEndpoint\" },\n Endpoint: { type: \"builtInParams\", name: \"endpoint\" },\n Region: { type: \"builtInParams\", name: \"region\" },\n UseDualStack: { type: \"builtInParams\", name: \"useDualstackEndpoint\" },\n};\n","// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { SourceData } from \"@aws-sdk/types\";\nimport { fromUtf8 as fromUtf8Browser } from \"@smithy/util-utf8\";\n\n// Quick polyfill\nconst fromUtf8 =\n typeof Buffer !== \"undefined\" && Buffer.from\n ? (input: string) => Buffer.from(input, \"utf8\")\n : fromUtf8Browser;\n\nexport function convertToBuffer(data: SourceData): Uint8Array {\n // Already a Uint8, do nothing\n if (data instanceof Uint8Array) return data;\n\n if (typeof data === \"string\") {\n return fromUtf8(data);\n }\n\n if (ArrayBuffer.isView(data)) {\n return new Uint8Array(\n data.buffer,\n data.byteOffset,\n data.byteLength / Uint8Array.BYTES_PER_ELEMENT\n );\n }\n\n return new Uint8Array(data);\n}\n","export const fromUtf8 = (input) => new TextEncoder().encode(input);\n","// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { SourceData } from \"@aws-sdk/types\";\n\nexport function isEmptyData(data: SourceData): boolean {\n if (typeof data === \"string\") {\n return data.length === 0;\n }\n\n return data.byteLength === 0;\n}\n","export const SHA_256_HASH: { name: \"SHA-256\" } = { name: \"SHA-256\" };\n\nexport const SHA_256_HMAC_ALGO: { name: \"HMAC\"; hash: { name: \"SHA-256\" } } = {\n name: \"HMAC\",\n hash: SHA_256_HASH\n};\n\nexport const EMPTY_DATA_SHA_256 = new Uint8Array([\n 227,\n 176,\n 196,\n 66,\n 152,\n 252,\n 28,\n 20,\n 154,\n 251,\n 244,\n 200,\n 153,\n 111,\n 185,\n 36,\n 39,\n 174,\n 65,\n 228,\n 100,\n 155,\n 147,\n 76,\n 164,\n 149,\n 153,\n 27,\n 120,\n 82,\n 184,\n 85\n]);\n","const fallbackWindow = {};\nexport function locateWindow() {\n if (typeof window !== \"undefined\") {\n return window;\n }\n else if (typeof self !== \"undefined\") {\n return self;\n }\n return fallbackWindow;\n}\n","import { Checksum, SourceData } from \"@aws-sdk/types\";\nimport { isEmptyData, convertToBuffer } from \"@aws-crypto/util\";\nimport {\n EMPTY_DATA_SHA_256,\n SHA_256_HASH,\n SHA_256_HMAC_ALGO,\n} from \"./constants\";\nimport { locateWindow } from \"@aws-sdk/util-locate-window\";\n\nexport class Sha256 implements Checksum {\n private readonly secret?: SourceData;\n private key: Promise | undefined;\n private toHash: Uint8Array = new Uint8Array(0);\n\n constructor(secret?: SourceData) {\n this.secret = secret;\n this.reset();\n }\n\n update(data: SourceData): void {\n if (isEmptyData(data)) {\n return;\n }\n\n const update = convertToBuffer(data);\n const typedArray = new Uint8Array(\n this.toHash.byteLength + update.byteLength\n );\n typedArray.set(this.toHash, 0);\n typedArray.set(update, this.toHash.byteLength);\n this.toHash = typedArray;\n }\n\n digest(): Promise {\n if (this.key) {\n return this.key.then((key) =>\n locateWindow()\n .crypto.subtle.sign(SHA_256_HMAC_ALGO, key, this.toHash)\n .then((data) => new Uint8Array(data))\n );\n }\n\n if (isEmptyData(this.toHash)) {\n return Promise.resolve(EMPTY_DATA_SHA_256);\n }\n\n return Promise.resolve()\n .then(() =>\n locateWindow().crypto.subtle.digest(SHA_256_HASH, this.toHash)\n )\n .then((data) => Promise.resolve(new Uint8Array(data)));\n }\n\n reset(): void {\n this.toHash = new Uint8Array(0);\n if (this.secret && this.secret !== void 0) {\n this.key = new Promise((resolve, reject) => {\n locateWindow()\n .crypto.subtle.importKey(\n \"raw\",\n convertToBuffer(this.secret as SourceData),\n SHA_256_HMAC_ALGO,\n false,\n [\"sign\"]\n )\n .then(resolve, reject);\n });\n this.key.catch(() => {});\n }\n }\n}\n","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nvar ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n });\n }\n return path;\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __esDecorate,\n __runInitializers,\n __propKey,\n __setFunctionName,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n __rewriteRelativeImportExtension,\n};\n","/**\n * @internal\n */\nexport const BLOCK_SIZE: number = 64;\n\n/**\n * @internal\n */\nexport const DIGEST_LENGTH: number = 32;\n\n/**\n * @internal\n */\nexport const KEY = new Uint32Array([\n 0x428a2f98,\n 0x71374491,\n 0xb5c0fbcf,\n 0xe9b5dba5,\n 0x3956c25b,\n 0x59f111f1,\n 0x923f82a4,\n 0xab1c5ed5,\n 0xd807aa98,\n 0x12835b01,\n 0x243185be,\n 0x550c7dc3,\n 0x72be5d74,\n 0x80deb1fe,\n 0x9bdc06a7,\n 0xc19bf174,\n 0xe49b69c1,\n 0xefbe4786,\n 0x0fc19dc6,\n 0x240ca1cc,\n 0x2de92c6f,\n 0x4a7484aa,\n 0x5cb0a9dc,\n 0x76f988da,\n 0x983e5152,\n 0xa831c66d,\n 0xb00327c8,\n 0xbf597fc7,\n 0xc6e00bf3,\n 0xd5a79147,\n 0x06ca6351,\n 0x14292967,\n 0x27b70a85,\n 0x2e1b2138,\n 0x4d2c6dfc,\n 0x53380d13,\n 0x650a7354,\n 0x766a0abb,\n 0x81c2c92e,\n 0x92722c85,\n 0xa2bfe8a1,\n 0xa81a664b,\n 0xc24b8b70,\n 0xc76c51a3,\n 0xd192e819,\n 0xd6990624,\n 0xf40e3585,\n 0x106aa070,\n 0x19a4c116,\n 0x1e376c08,\n 0x2748774c,\n 0x34b0bcb5,\n 0x391c0cb3,\n 0x4ed8aa4a,\n 0x5b9cca4f,\n 0x682e6ff3,\n 0x748f82ee,\n 0x78a5636f,\n 0x84c87814,\n 0x8cc70208,\n 0x90befffa,\n 0xa4506ceb,\n 0xbef9a3f7,\n 0xc67178f2\n]);\n\n/**\n * @internal\n */\nexport const INIT = [\n 0x6a09e667,\n 0xbb67ae85,\n 0x3c6ef372,\n 0xa54ff53a,\n 0x510e527f,\n 0x9b05688c,\n 0x1f83d9ab,\n 0x5be0cd19\n];\n\n/**\n * @internal\n */\nexport const MAX_HASHABLE_LENGTH = 2 ** 53 - 1;\n","import {\n BLOCK_SIZE,\n DIGEST_LENGTH,\n INIT,\n KEY,\n MAX_HASHABLE_LENGTH\n} from \"./constants\";\n\n/**\n * @internal\n */\nexport class RawSha256 {\n private state: Int32Array = Int32Array.from(INIT);\n private temp: Int32Array = new Int32Array(64);\n private buffer: Uint8Array = new Uint8Array(64);\n private bufferLength: number = 0;\n private bytesHashed: number = 0;\n\n /**\n * @internal\n */\n finished: boolean = false;\n\n update(data: Uint8Array): void {\n if (this.finished) {\n throw new Error(\"Attempted to update an already finished hash.\");\n }\n\n let position = 0;\n let { byteLength } = data;\n this.bytesHashed += byteLength;\n\n if (this.bytesHashed * 8 > MAX_HASHABLE_LENGTH) {\n throw new Error(\"Cannot hash more than 2^53 - 1 bits\");\n }\n\n while (byteLength > 0) {\n this.buffer[this.bufferLength++] = data[position++];\n byteLength--;\n\n if (this.bufferLength === BLOCK_SIZE) {\n this.hashBuffer();\n this.bufferLength = 0;\n }\n }\n }\n\n digest(): Uint8Array {\n if (!this.finished) {\n const bitsHashed = this.bytesHashed * 8;\n const bufferView = new DataView(\n this.buffer.buffer,\n this.buffer.byteOffset,\n this.buffer.byteLength\n );\n\n const undecoratedLength = this.bufferLength;\n bufferView.setUint8(this.bufferLength++, 0x80);\n\n // Ensure the final block has enough room for the hashed length\n if (undecoratedLength % BLOCK_SIZE >= BLOCK_SIZE - 8) {\n for (let i = this.bufferLength; i < BLOCK_SIZE; i++) {\n bufferView.setUint8(i, 0);\n }\n this.hashBuffer();\n this.bufferLength = 0;\n }\n\n for (let i = this.bufferLength; i < BLOCK_SIZE - 8; i++) {\n bufferView.setUint8(i, 0);\n }\n bufferView.setUint32(\n BLOCK_SIZE - 8,\n Math.floor(bitsHashed / 0x100000000),\n true\n );\n bufferView.setUint32(BLOCK_SIZE - 4, bitsHashed);\n\n this.hashBuffer();\n\n this.finished = true;\n }\n\n // The value in state is little-endian rather than big-endian, so flip\n // each word into a new Uint8Array\n const out = new Uint8Array(DIGEST_LENGTH);\n for (let i = 0; i < 8; i++) {\n out[i * 4] = (this.state[i] >>> 24) & 0xff;\n out[i * 4 + 1] = (this.state[i] >>> 16) & 0xff;\n out[i * 4 + 2] = (this.state[i] >>> 8) & 0xff;\n out[i * 4 + 3] = (this.state[i] >>> 0) & 0xff;\n }\n\n return out;\n }\n\n private hashBuffer(): void {\n const { buffer, state } = this;\n\n let state0 = state[0],\n state1 = state[1],\n state2 = state[2],\n state3 = state[3],\n state4 = state[4],\n state5 = state[5],\n state6 = state[6],\n state7 = state[7];\n\n for (let i = 0; i < BLOCK_SIZE; i++) {\n if (i < 16) {\n this.temp[i] =\n ((buffer[i * 4] & 0xff) << 24) |\n ((buffer[i * 4 + 1] & 0xff) << 16) |\n ((buffer[i * 4 + 2] & 0xff) << 8) |\n (buffer[i * 4 + 3] & 0xff);\n } else {\n let u = this.temp[i - 2];\n const t1 =\n ((u >>> 17) | (u << 15)) ^ ((u >>> 19) | (u << 13)) ^ (u >>> 10);\n\n u = this.temp[i - 15];\n const t2 =\n ((u >>> 7) | (u << 25)) ^ ((u >>> 18) | (u << 14)) ^ (u >>> 3);\n\n this.temp[i] =\n ((t1 + this.temp[i - 7]) | 0) + ((t2 + this.temp[i - 16]) | 0);\n }\n\n const t1 =\n ((((((state4 >>> 6) | (state4 << 26)) ^\n ((state4 >>> 11) | (state4 << 21)) ^\n ((state4 >>> 25) | (state4 << 7))) +\n ((state4 & state5) ^ (~state4 & state6))) |\n 0) +\n ((state7 + ((KEY[i] + this.temp[i]) | 0)) | 0)) |\n 0;\n\n const t2 =\n ((((state0 >>> 2) | (state0 << 30)) ^\n ((state0 >>> 13) | (state0 << 19)) ^\n ((state0 >>> 22) | (state0 << 10))) +\n ((state0 & state1) ^ (state0 & state2) ^ (state1 & state2))) |\n 0;\n\n state7 = state6;\n state6 = state5;\n state5 = state4;\n state4 = (state3 + t1) | 0;\n state3 = state2;\n state2 = state1;\n state1 = state0;\n state0 = (t1 + t2) | 0;\n }\n\n state[0] += state0;\n state[1] += state1;\n state[2] += state2;\n state[3] += state3;\n state[4] += state4;\n state[5] += state5;\n state[6] += state6;\n state[7] += state7;\n }\n}\n","import { BLOCK_SIZE } from \"./constants\";\nimport { RawSha256 } from \"./RawSha256\";\nimport { Checksum, SourceData } from \"@aws-sdk/types\";\nimport { isEmptyData, convertToBuffer } from \"@aws-crypto/util\";\n\nexport class Sha256 implements Checksum {\n private readonly secret?: SourceData;\n private hash: RawSha256;\n private outer?: RawSha256;\n private error: any;\n\n constructor(secret?: SourceData) {\n this.secret = secret;\n this.hash = new RawSha256();\n this.reset();\n }\n\n update(toHash: SourceData): void {\n if (isEmptyData(toHash) || this.error) {\n return;\n }\n\n try {\n this.hash.update(convertToBuffer(toHash));\n } catch (e) {\n this.error = e;\n }\n }\n\n /* This synchronous method keeps compatibility\n * with the v2 aws-sdk.\n */\n digestSync(): Uint8Array {\n if (this.error) {\n throw this.error;\n }\n\n if (this.outer) {\n if (!this.outer.finished) {\n this.outer.update(this.hash.digest());\n }\n\n return this.outer.digest();\n }\n\n return this.hash.digest();\n }\n\n /* The underlying digest method here is synchronous.\n * To keep the same interface with the other hash functions\n * the default is to expose this as an async method.\n * However, it can sometimes be useful to have a sync method.\n */\n async digest(): Promise {\n return this.digestSync();\n }\n\n reset(): void {\n this.hash = new RawSha256();\n if (this.secret) {\n this.outer = new RawSha256();\n const inner = bufferFromSecret(this.secret);\n const outer = new Uint8Array(BLOCK_SIZE);\n outer.set(inner);\n\n for (let i = 0; i < BLOCK_SIZE; i++) {\n inner[i] ^= 0x36;\n outer[i] ^= 0x5c;\n }\n\n this.hash.update(inner);\n this.outer.update(outer);\n\n // overwrite the copied key in memory\n for (let i = 0; i < inner.byteLength; i++) {\n inner[i] = 0;\n }\n }\n }\n}\n\nfunction bufferFromSecret(secret: SourceData): Uint8Array {\n let input = convertToBuffer(secret);\n\n if (input.byteLength > BLOCK_SIZE) {\n const bufferHash = new RawSha256();\n bufferHash.update(input);\n input = bufferHash.digest();\n }\n\n const buffer = new Uint8Array(BLOCK_SIZE);\n buffer.set(input);\n return buffer;\n}\n","type SubtleCryptoMethod =\n | \"decrypt\"\n | \"digest\"\n | \"encrypt\"\n | \"exportKey\"\n | \"generateKey\"\n | \"importKey\"\n | \"sign\"\n | \"verify\";\n\nconst subtleCryptoMethods: Array = [\n \"decrypt\",\n \"digest\",\n \"encrypt\",\n \"exportKey\",\n \"generateKey\",\n \"importKey\",\n \"sign\",\n \"verify\"\n];\n\nexport function supportsWebCrypto(window: Window): boolean {\n if (\n supportsSecureRandom(window) &&\n typeof window.crypto.subtle === \"object\"\n ) {\n const { subtle } = window.crypto;\n\n return supportsSubtleCrypto(subtle);\n }\n\n return false;\n}\n\nexport function supportsSecureRandom(window: Window): boolean {\n if (typeof window === \"object\" && typeof window.crypto === \"object\") {\n const { getRandomValues } = window.crypto;\n\n return typeof getRandomValues === \"function\";\n }\n\n return false;\n}\n\nexport function supportsSubtleCrypto(subtle: SubtleCrypto) {\n return (\n subtle &&\n subtleCryptoMethods.every(\n methodName => typeof subtle[methodName] === \"function\"\n )\n );\n}\n\nexport async function supportsZeroByteGCM(subtle: SubtleCrypto) {\n if (!supportsSubtleCrypto(subtle)) return false;\n try {\n const key = await subtle.generateKey(\n { name: \"AES-GCM\", length: 128 },\n false,\n [\"encrypt\"]\n );\n const zeroByteAuthTag = await subtle.encrypt(\n {\n name: \"AES-GCM\",\n iv: new Uint8Array(Array(12)),\n additionalData: new Uint8Array(Array(16)),\n tagLength: 128\n },\n key,\n new Uint8Array(0)\n );\n return zeroByteAuthTag.byteLength === 16;\n } catch {\n return false;\n }\n}\n","import { Sha256 as WebCryptoSha256 } from \"./webCryptoSha256\";\nimport { Sha256 as JsSha256 } from \"@aws-crypto/sha256-js\";\nimport { Checksum, SourceData } from \"@aws-sdk/types\";\nimport { supportsWebCrypto } from \"@aws-crypto/supports-web-crypto\";\nimport { locateWindow } from \"@aws-sdk/util-locate-window\";\nimport { convertToBuffer } from \"@aws-crypto/util\";\n\nexport class Sha256 implements Checksum {\n private hash: Checksum;\n\n constructor(secret?: SourceData) {\n if (supportsWebCrypto(locateWindow())) {\n this.hash = new WebCryptoSha256(secret);\n } else {\n this.hash = new JsSha256(secret);\n }\n }\n\n update(data: SourceData, encoding?: \"utf8\" | \"ascii\" | \"latin1\"): void {\n this.hash.update(convertToBuffer(data));\n }\n\n digest(): Promise {\n return this.hash.digest();\n }\n\n reset(): void {\n this.hash.reset();\n }\n}\n","import bowser from \"bowser\";\nexport const createDefaultUserAgentProvider = ({ serviceId, clientVersion }) => async (config) => {\n const parsedUA = typeof window !== \"undefined\" && window?.navigator?.userAgent\n ? bowser.parse(window.navigator.userAgent)\n : undefined;\n const sections = [\n [\"aws-sdk-js\", clientVersion],\n [\"ua\", \"2.1\"],\n [`os/${parsedUA?.os?.name || \"other\"}`, parsedUA?.os?.version],\n [\"lang/js\"],\n [\"md/browser\", `${parsedUA?.browser?.name ?? \"unknown\"}_${parsedUA?.browser?.version ?? \"unknown\"}`],\n ];\n if (serviceId) {\n sections.push([`api/${serviceId}`, clientVersion]);\n }\n const appId = await config?.userAgentAppId?.();\n if (appId) {\n sections.push([`app/${appId}`]);\n }\n return sections;\n};\nexport const defaultUserAgent = createDefaultUserAgentProvider;\n","const TEXT_ENCODER = typeof TextEncoder == \"function\" ? new TextEncoder() : null;\nexport const calculateBodyLength = (body) => {\n if (typeof body === \"string\") {\n if (TEXT_ENCODER) {\n return TEXT_ENCODER.encode(body).byteLength;\n }\n let len = body.length;\n for (let i = len - 1; i >= 0; i--) {\n const code = body.charCodeAt(i);\n if (code > 0x7f && code <= 0x7ff)\n len++;\n else if (code > 0x7ff && code <= 0xffff)\n len += 2;\n if (code >= 0xdc00 && code <= 0xdfff)\n i--;\n }\n return len;\n }\n else if (typeof body.byteLength === \"number\") {\n return body.byteLength;\n }\n else if (typeof body.size === \"number\") {\n return body.size;\n }\n throw new Error(`Body Length computation failed for ${body}`);\n};\n","export const getSkewCorrectedDate = (systemClockOffset) => new Date(Date.now() + systemClockOffset);\n","import { HttpResponse } from \"@smithy/protocol-http\";\nexport const getDateHeader = (response) => HttpResponse.isInstance(response) ? response.headers?.date ?? response.headers?.Date : undefined;\n","import { isClockSkewed } from \"./isClockSkewed\";\nexport const getUpdatedSystemClockOffset = (clockTime, currentSystemClockOffset) => {\n const clockTimeInMs = Date.parse(clockTime);\n if (isClockSkewed(clockTimeInMs, currentSystemClockOffset)) {\n return clockTimeInMs - Date.now();\n }\n return currentSystemClockOffset;\n};\n","import { getSkewCorrectedDate } from \"./getSkewCorrectedDate\";\nexport const isClockSkewed = (clockTime, systemClockOffset) => Math.abs(getSkewCorrectedDate(systemClockOffset).getTime() - clockTime) >= 300000;\n","import { HttpRequest } from \"@smithy/protocol-http\";\nimport { getDateHeader, getSkewCorrectedDate, getUpdatedSystemClockOffset } from \"../utils\";\nconst throwSigningPropertyError = (name, property) => {\n if (!property) {\n throw new Error(`Property \\`${name}\\` is not resolved for AWS SDK SigV4Auth`);\n }\n return property;\n};\nexport const validateSigningProperties = async (signingProperties) => {\n const context = throwSigningPropertyError(\"context\", signingProperties.context);\n const config = throwSigningPropertyError(\"config\", signingProperties.config);\n const authScheme = context.endpointV2?.properties?.authSchemes?.[0];\n const signerFunction = throwSigningPropertyError(\"signer\", config.signer);\n const signer = await signerFunction(authScheme);\n const signingRegion = signingProperties?.signingRegion;\n const signingRegionSet = signingProperties?.signingRegionSet;\n const signingName = signingProperties?.signingName;\n return {\n config,\n signer,\n signingRegion,\n signingRegionSet,\n signingName,\n };\n};\nexport class AwsSdkSigV4Signer {\n async sign(httpRequest, identity, signingProperties) {\n if (!HttpRequest.isInstance(httpRequest)) {\n throw new Error(\"The request is not an instance of `HttpRequest` and cannot be signed\");\n }\n const validatedProps = await validateSigningProperties(signingProperties);\n const { config, signer } = validatedProps;\n let { signingRegion, signingName } = validatedProps;\n const handlerExecutionContext = signingProperties.context;\n if (handlerExecutionContext?.authSchemes?.length ?? 0 > 1) {\n const [first, second] = handlerExecutionContext.authSchemes;\n if (first?.name === \"sigv4a\" && second?.name === \"sigv4\") {\n signingRegion = second?.signingRegion ?? signingRegion;\n signingName = second?.signingName ?? signingName;\n }\n }\n const signedRequest = await signer.sign(httpRequest, {\n signingDate: getSkewCorrectedDate(config.systemClockOffset),\n signingRegion: signingRegion,\n signingService: signingName,\n });\n return signedRequest;\n }\n errorHandler(signingProperties) {\n return (error) => {\n const serverTime = error.ServerTime ?? getDateHeader(error.$response);\n if (serverTime) {\n const config = throwSigningPropertyError(\"config\", signingProperties.config);\n const initialSystemClockOffset = config.systemClockOffset;\n config.systemClockOffset = getUpdatedSystemClockOffset(serverTime, config.systemClockOffset);\n const clockSkewCorrected = config.systemClockOffset !== initialSystemClockOffset;\n if (clockSkewCorrected && error.$metadata) {\n error.$metadata.clockSkewCorrected = true;\n }\n }\n throw error;\n };\n }\n successHandler(httpResponse, signingProperties) {\n const dateHeader = getDateHeader(httpResponse);\n if (dateHeader) {\n const config = throwSigningPropertyError(\"config\", signingProperties.config);\n config.systemClockOffset = getUpdatedSystemClockOffset(dateHeader, config.systemClockOffset);\n }\n }\n}\nexport const AWSSDKSigV4Signer = AwsSdkSigV4Signer;\n","const s = \"required\", t = \"fn\", u = \"argv\", v = \"ref\";\nconst a = true, b = \"isSet\", c = \"booleanEquals\", d = \"error\", e = \"endpoint\", f = \"tree\", g = \"PartitionResult\", h = { [s]: false, \"type\": \"String\" }, i = { [s]: true, \"default\": false, \"type\": \"Boolean\" }, j = { [v]: \"Endpoint\" }, k = { [t]: c, [u]: [{ [v]: \"UseFIPS\" }, true] }, l = { [t]: c, [u]: [{ [v]: \"UseDualStack\" }, true] }, m = {}, n = { [t]: \"getAttr\", [u]: [{ [v]: g }, \"supportsFIPS\"] }, o = { [t]: c, [u]: [true, { [t]: \"getAttr\", [u]: [{ [v]: g }, \"supportsDualStack\"] }] }, p = [k], q = [l], r = [{ [v]: \"Region\" }];\nconst _data = { version: \"1.0\", parameters: { Region: h, UseDualStack: i, UseFIPS: i, Endpoint: h }, rules: [{ conditions: [{ [t]: b, [u]: [j] }], rules: [{ conditions: p, error: \"Invalid Configuration: FIPS and custom endpoint are not supported\", type: d }, { conditions: q, error: \"Invalid Configuration: Dualstack and custom endpoint are not supported\", type: d }, { endpoint: { url: j, properties: m, headers: m }, type: e }], type: f }, { conditions: [{ [t]: b, [u]: r }], rules: [{ conditions: [{ [t]: \"aws.partition\", [u]: r, assign: g }], rules: [{ conditions: [k, l], rules: [{ conditions: [{ [t]: c, [u]: [a, n] }, o], rules: [{ endpoint: { url: \"https://messaging-chime-fips.{Region}.{PartitionResult#dualStackDnsSuffix}\", properties: m, headers: m }, type: e }], type: f }, { error: \"FIPS and DualStack are enabled, but this partition does not support one or both\", type: d }], type: f }, { conditions: p, rules: [{ conditions: [{ [t]: c, [u]: [n, a] }], rules: [{ endpoint: { url: \"https://messaging-chime-fips.{Region}.{PartitionResult#dnsSuffix}\", properties: m, headers: m }, type: e }], type: f }, { error: \"FIPS is enabled but this partition does not support FIPS\", type: d }], type: f }, { conditions: q, rules: [{ conditions: [o], rules: [{ endpoint: { url: \"https://messaging-chime.{Region}.{PartitionResult#dualStackDnsSuffix}\", properties: m, headers: m }, type: e }], type: f }, { error: \"DualStack is enabled but this partition does not support DualStack\", type: d }], type: f }, { endpoint: { url: \"https://messaging-chime.{Region}.{PartitionResult#dnsSuffix}\", properties: m, headers: m }, type: e }], type: f }], type: f }, { error: \"Invalid Configuration: Missing Region\", type: d }] };\nexport const ruleSet = _data;\n","import { awsEndpointFunctions } from \"@aws-sdk/util-endpoints\";\nimport { customEndpointFunctions, EndpointCache, resolveEndpoint } from \"@smithy/util-endpoints\";\nimport { ruleSet } from \"./ruleset\";\nconst cache = new EndpointCache({\n size: 50,\n params: [\"Endpoint\", \"Region\", \"UseDualStack\", \"UseFIPS\"],\n});\nexport const defaultEndpointResolver = (endpointParams, context = {}) => {\n return cache.get(endpointParams, () => resolveEndpoint(ruleSet, {\n endpointParams: endpointParams,\n logger: context.logger,\n }));\n};\ncustomEndpointFunctions.aws = awsEndpointFunctions;\n","export class EndpointCache {\n constructor({ size, params }) {\n this.data = new Map();\n this.parameters = [];\n this.capacity = size ?? 50;\n if (params) {\n this.parameters = params;\n }\n }\n get(endpointParams, resolver) {\n const key = this.hash(endpointParams);\n if (key === false) {\n return resolver();\n }\n if (!this.data.has(key)) {\n if (this.data.size > this.capacity + 10) {\n const keys = this.data.keys();\n let i = 0;\n while (true) {\n const { value, done } = keys.next();\n this.data.delete(value);\n if (done || ++i > 10) {\n break;\n }\n }\n }\n this.data.set(key, resolver());\n }\n return this.data.get(key);\n }\n size() {\n return this.data.size;\n }\n hash(endpointParams) {\n let buffer = \"\";\n const { parameters } = this;\n if (parameters.length === 0) {\n return false;\n }\n for (const param of parameters) {\n const val = String(endpointParams[param] ?? \"\");\n if (val.includes(\"|;\")) {\n return false;\n }\n buffer += val + \"|;\";\n }\n return buffer;\n }\n}\n","import { debugId, toDebugString } from \"./debug\";\nimport { EndpointError } from \"./types\";\nimport { evaluateRules } from \"./utils\";\nexport const resolveEndpoint = (ruleSetObject, options) => {\n const { endpointParams, logger } = options;\n const { parameters, rules } = ruleSetObject;\n options.logger?.debug?.(`${debugId} Initial EndpointParams: ${toDebugString(endpointParams)}`);\n const paramsWithDefault = Object.entries(parameters)\n .filter(([, v]) => v.default != null)\n .map(([k, v]) => [k, v.default]);\n if (paramsWithDefault.length > 0) {\n for (const [paramKey, paramDefaultValue] of paramsWithDefault) {\n endpointParams[paramKey] = endpointParams[paramKey] ?? paramDefaultValue;\n }\n }\n const requiredParams = Object.entries(parameters)\n .filter(([, v]) => v.required)\n .map(([k]) => k);\n for (const requiredParam of requiredParams) {\n if (endpointParams[requiredParam] == null) {\n throw new EndpointError(`Missing required parameter: '${requiredParam}'`);\n }\n }\n const endpoint = evaluateRules(rules, { endpointParams, logger, referenceRecord: {} });\n options.logger?.debug?.(`${debugId} Resolved endpoint: ${toDebugString(endpoint)}`);\n return endpoint;\n};\n","export class ProviderError extends Error {\n constructor(message, options = true) {\n let logger;\n let tryNextLink = true;\n if (typeof options === \"boolean\") {\n logger = undefined;\n tryNextLink = options;\n }\n else if (options != null && typeof options === \"object\") {\n logger = options.logger;\n tryNextLink = options.tryNextLink ?? true;\n }\n super(message);\n this.name = \"ProviderError\";\n this.tryNextLink = tryNextLink;\n Object.setPrototypeOf(this, ProviderError.prototype);\n logger?.debug?.(`@smithy/property-provider ${tryNextLink ? \"->\" : \"(!)\"} ${message}`);\n }\n static from(error, options = true) {\n return Object.assign(new this(error.message, options), error);\n }\n}\n","import { ProviderError } from \"./ProviderError\";\nexport const chain = (...providers) => async () => {\n if (providers.length === 0) {\n throw new ProviderError(\"No providers in chain\");\n }\n let lastProviderError;\n for (const provider of providers) {\n try {\n const credentials = await provider();\n return credentials;\n }\n catch (err) {\n lastProviderError = err;\n if (err?.tryNextLink) {\n continue;\n }\n throw err;\n }\n }\n throw lastProviderError;\n};\n","export const DEFAULTS_MODE_OPTIONS = [\"in-region\", \"cross-region\", \"mobile\", \"standard\", \"legacy\"];\n","import { memoize } from \"@smithy/property-provider\";\nimport bowser from \"bowser\";\nimport { DEFAULTS_MODE_OPTIONS } from \"./constants\";\nexport const resolveDefaultsModeConfig = ({ defaultsMode, } = {}) => memoize(async () => {\n const mode = typeof defaultsMode === \"function\" ? await defaultsMode() : defaultsMode;\n switch (mode?.toLowerCase()) {\n case \"auto\":\n return Promise.resolve(isMobileBrowser() ? \"mobile\" : \"standard\");\n case \"mobile\":\n case \"in-region\":\n case \"cross-region\":\n case \"standard\":\n case \"legacy\":\n return Promise.resolve(mode?.toLocaleLowerCase());\n case undefined:\n return Promise.resolve(\"legacy\");\n default:\n throw new Error(`Invalid parameter for \"defaultsMode\", expect ${DEFAULTS_MODE_OPTIONS.join(\", \")}, got ${mode}`);\n }\n});\nconst isMobileBrowser = () => {\n const parsedUA = typeof window !== \"undefined\" && window?.navigator?.userAgent\n ? bowser.parse(window.navigator.userAgent)\n : undefined;\n const platform = parsedUA?.platform?.type;\n return platform === \"tablet\" || platform === \"mobile\";\n};\n","import packageInfo from \"../package.json\";\nimport { Sha256 } from \"@aws-crypto/sha256-browser\";\nimport { createDefaultUserAgentProvider } from \"@aws-sdk/util-user-agent-browser\";\nimport { DEFAULT_USE_DUALSTACK_ENDPOINT, DEFAULT_USE_FIPS_ENDPOINT } from \"@smithy/config-resolver\";\nimport { FetchHttpHandler as RequestHandler, streamCollector } from \"@smithy/fetch-http-handler\";\nimport { invalidProvider } from \"@smithy/invalid-dependency\";\nimport { calculateBodyLength } from \"@smithy/util-body-length-browser\";\nimport { DEFAULT_MAX_ATTEMPTS, DEFAULT_RETRY_MODE } from \"@smithy/util-retry\";\nimport { getRuntimeConfig as getSharedRuntimeConfig } from \"./runtimeConfig.shared\";\nimport { loadConfigsForDefaultMode } from \"@smithy/smithy-client\";\nimport { resolveDefaultsModeConfig } from \"@smithy/util-defaults-mode-browser\";\nexport const getRuntimeConfig = (config) => {\n const defaultsMode = resolveDefaultsModeConfig(config);\n const defaultConfigProvider = () => defaultsMode().then(loadConfigsForDefaultMode);\n const clientSharedValues = getSharedRuntimeConfig(config);\n return {\n ...clientSharedValues,\n ...config,\n runtime: \"browser\",\n defaultsMode,\n bodyLengthChecker: config?.bodyLengthChecker ?? calculateBodyLength,\n credentialDefaultProvider: config?.credentialDefaultProvider ?? ((_) => () => Promise.reject(new Error(\"Credential is missing\"))),\n defaultUserAgentProvider: config?.defaultUserAgentProvider ??\n createDefaultUserAgentProvider({ serviceId: clientSharedValues.serviceId, clientVersion: packageInfo.version }),\n maxAttempts: config?.maxAttempts ?? DEFAULT_MAX_ATTEMPTS,\n region: config?.region ?? invalidProvider(\"Region is missing\"),\n requestHandler: RequestHandler.create(config?.requestHandler ?? defaultConfigProvider),\n retryMode: config?.retryMode ?? (async () => (await defaultConfigProvider()).retryMode || DEFAULT_RETRY_MODE),\n sha256: config?.sha256 ?? Sha256,\n streamCollector: config?.streamCollector ?? streamCollector,\n useDualstackEndpoint: config?.useDualstackEndpoint ?? (() => Promise.resolve(DEFAULT_USE_DUALSTACK_ENDPOINT)),\n useFipsEndpoint: config?.useFipsEndpoint ?? (() => Promise.resolve(DEFAULT_USE_FIPS_ENDPOINT)),\n };\n};\n","export const memoize = (provider, isExpired, requiresRefresh) => {\n let resolved;\n let pending;\n let hasResult;\n let isConstant = false;\n const coalesceProvider = async () => {\n if (!pending) {\n pending = provider();\n }\n try {\n resolved = await pending;\n hasResult = true;\n isConstant = false;\n }\n finally {\n pending = undefined;\n }\n return resolved;\n };\n if (isExpired === undefined) {\n return async (options) => {\n if (!hasResult || options?.forceRefresh) {\n resolved = await coalesceProvider();\n }\n return resolved;\n };\n }\n return async (options) => {\n if (!hasResult || options?.forceRefresh) {\n resolved = await coalesceProvider();\n }\n if (isConstant) {\n return resolved;\n }\n if (requiresRefresh && !requiresRefresh(resolved)) {\n isConstant = true;\n return resolved;\n }\n if (isExpired(resolved)) {\n await coalesceProvider();\n return resolved;\n }\n return resolved;\n };\n};\n","import { AwsSdkSigV4Signer } from \"@aws-sdk/core\";\nimport { NoOpLogger } from \"@smithy/smithy-client\";\nimport { parseUrl } from \"@smithy/url-parser\";\nimport { fromBase64, toBase64 } from \"@smithy/util-base64\";\nimport { fromUtf8, toUtf8 } from \"@smithy/util-utf8\";\nimport { defaultChimeSDKMessagingHttpAuthSchemeProvider } from \"./auth/httpAuthSchemeProvider\";\nimport { defaultEndpointResolver } from \"./endpoint/endpointResolver\";\nexport const getRuntimeConfig = (config) => {\n return {\n apiVersion: \"2021-05-15\",\n base64Decoder: config?.base64Decoder ?? fromBase64,\n base64Encoder: config?.base64Encoder ?? toBase64,\n disableHostPrefix: config?.disableHostPrefix ?? false,\n endpointProvider: config?.endpointProvider ?? defaultEndpointResolver,\n extensions: config?.extensions ?? [],\n httpAuthSchemeProvider: config?.httpAuthSchemeProvider ?? defaultChimeSDKMessagingHttpAuthSchemeProvider,\n httpAuthSchemes: config?.httpAuthSchemes ?? [\n {\n schemeId: \"aws.auth#sigv4\",\n identityProvider: (ipc) => ipc.getIdentityProvider(\"aws.auth#sigv4\"),\n signer: new AwsSdkSigV4Signer(),\n },\n ],\n logger: config?.logger ?? new NoOpLogger(),\n serviceId: config?.serviceId ?? \"Chime SDK Messaging\",\n urlParser: config?.urlParser ?? parseUrl,\n utf8Decoder: config?.utf8Decoder ?? fromUtf8,\n utf8Encoder: config?.utf8Encoder ?? toUtf8,\n };\n};\n","export const invalidProvider = (message) => () => Promise.reject(message);\n","import { booleanSelector, SelectorType } from \"@smithy/util-config-provider\";\nexport const ENV_USE_FIPS_ENDPOINT = \"AWS_USE_FIPS_ENDPOINT\";\nexport const CONFIG_USE_FIPS_ENDPOINT = \"use_fips_endpoint\";\nexport const DEFAULT_USE_FIPS_ENDPOINT = false;\nexport const NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS = {\n environmentVariableSelector: (env) => booleanSelector(env, ENV_USE_FIPS_ENDPOINT, SelectorType.ENV),\n configFileSelector: (profile) => booleanSelector(profile, CONFIG_USE_FIPS_ENDPOINT, SelectorType.CONFIG),\n default: false,\n};\n","import { getAwsRegionExtensionConfiguration, resolveAwsRegionExtensionConfiguration, } from \"@aws-sdk/region-config-resolver\";\nimport { getHttpHandlerExtensionConfiguration, resolveHttpHandlerRuntimeConfig } from \"@smithy/protocol-http\";\nimport { getDefaultExtensionConfiguration, resolveDefaultRuntimeConfig } from \"@smithy/smithy-client\";\nimport { getHttpAuthExtensionConfiguration, resolveHttpAuthRuntimeConfig } from \"./auth/httpAuthExtensionConfiguration\";\nexport const resolveRuntimeExtensions = (runtimeConfig, extensions) => {\n const extensionConfiguration = Object.assign(getAwsRegionExtensionConfiguration(runtimeConfig), getDefaultExtensionConfiguration(runtimeConfig), getHttpHandlerExtensionConfiguration(runtimeConfig), getHttpAuthExtensionConfiguration(runtimeConfig));\n extensions.forEach((extension) => extension.configure(extensionConfiguration));\n return Object.assign(runtimeConfig, resolveAwsRegionExtensionConfiguration(extensionConfiguration), resolveDefaultRuntimeConfig(extensionConfiguration), resolveHttpHandlerRuntimeConfig(extensionConfiguration), resolveHttpAuthRuntimeConfig(extensionConfiguration));\n};\n","export const getAwsRegionExtensionConfiguration = (runtimeConfig) => {\n return {\n setRegion(region) {\n runtimeConfig.region = region;\n },\n region() {\n return runtimeConfig.region;\n },\n };\n};\nexport const resolveAwsRegionExtensionConfiguration = (awsRegionExtensionConfiguration) => {\n return {\n region: awsRegionExtensionConfiguration.region(),\n };\n};\n","export const getHttpHandlerExtensionConfiguration = (runtimeConfig) => {\n return {\n setHttpHandler(handler) {\n runtimeConfig.httpHandler = handler;\n },\n httpHandler() {\n return runtimeConfig.httpHandler;\n },\n updateHttpClientConfig(key, value) {\n runtimeConfig.httpHandler?.updateHttpClientConfig(key, value);\n },\n httpHandlerConfigs() {\n return runtimeConfig.httpHandler.httpHandlerConfigs();\n },\n };\n};\nexport const resolveHttpHandlerRuntimeConfig = (httpHandlerExtensionConfiguration) => {\n return {\n httpHandler: httpHandlerExtensionConfiguration.httpHandler(),\n };\n};\n","export const getHttpAuthExtensionConfiguration = (runtimeConfig) => {\n const _httpAuthSchemes = runtimeConfig.httpAuthSchemes;\n let _httpAuthSchemeProvider = runtimeConfig.httpAuthSchemeProvider;\n let _credentials = runtimeConfig.credentials;\n return {\n setHttpAuthScheme(httpAuthScheme) {\n const index = _httpAuthSchemes.findIndex((scheme) => scheme.schemeId === httpAuthScheme.schemeId);\n if (index === -1) {\n _httpAuthSchemes.push(httpAuthScheme);\n }\n else {\n _httpAuthSchemes.splice(index, 1, httpAuthScheme);\n }\n },\n httpAuthSchemes() {\n return _httpAuthSchemes;\n },\n setHttpAuthSchemeProvider(httpAuthSchemeProvider) {\n _httpAuthSchemeProvider = httpAuthSchemeProvider;\n },\n httpAuthSchemeProvider() {\n return _httpAuthSchemeProvider;\n },\n setCredentials(credentials) {\n _credentials = credentials;\n },\n credentials() {\n return _credentials;\n },\n };\n};\nexport const resolveHttpAuthRuntimeConfig = (config) => {\n return {\n httpAuthSchemes: config.httpAuthSchemes(),\n httpAuthSchemeProvider: config.httpAuthSchemeProvider(),\n credentials: config.credentials(),\n };\n};\n","import { getHostHeaderPlugin, resolveHostHeaderConfig, } from \"@aws-sdk/middleware-host-header\";\nimport { getLoggerPlugin } from \"@aws-sdk/middleware-logger\";\nimport { getRecursionDetectionPlugin } from \"@aws-sdk/middleware-recursion-detection\";\nimport { getUserAgentPlugin, resolveUserAgentConfig, } from \"@aws-sdk/middleware-user-agent\";\nimport { resolveRegionConfig } from \"@smithy/config-resolver\";\nimport { DefaultIdentityProviderConfig, getHttpAuthSchemeEndpointRuleSetPlugin, getHttpSigningPlugin, } from \"@smithy/core\";\nimport { getContentLengthPlugin } from \"@smithy/middleware-content-length\";\nimport { resolveEndpointConfig } from \"@smithy/middleware-endpoint\";\nimport { getRetryPlugin, resolveRetryConfig } from \"@smithy/middleware-retry\";\nimport { Client as __Client, } from \"@smithy/smithy-client\";\nimport { defaultChimeSDKMessagingHttpAuthSchemeParametersProvider, resolveHttpAuthSchemeConfig, } from \"./auth/httpAuthSchemeProvider\";\nimport { resolveClientEndpointParameters, } from \"./endpoint/EndpointParameters\";\nimport { getRuntimeConfig as __getRuntimeConfig } from \"./runtimeConfig\";\nimport { resolveRuntimeExtensions } from \"./runtimeExtensions\";\nexport { __Client };\nexport class ChimeSDKMessagingClient extends __Client {\n config;\n constructor(...[configuration]) {\n const _config_0 = __getRuntimeConfig(configuration || {});\n super(_config_0);\n this.initConfig = _config_0;\n const _config_1 = resolveClientEndpointParameters(_config_0);\n const _config_2 = resolveUserAgentConfig(_config_1);\n const _config_3 = resolveRetryConfig(_config_2);\n const _config_4 = resolveRegionConfig(_config_3);\n const _config_5 = resolveHostHeaderConfig(_config_4);\n const _config_6 = resolveEndpointConfig(_config_5);\n const _config_7 = resolveHttpAuthSchemeConfig(_config_6);\n const _config_8 = resolveRuntimeExtensions(_config_7, configuration?.extensions || []);\n this.config = _config_8;\n this.middlewareStack.use(getUserAgentPlugin(this.config));\n this.middlewareStack.use(getRetryPlugin(this.config));\n this.middlewareStack.use(getContentLengthPlugin(this.config));\n this.middlewareStack.use(getHostHeaderPlugin(this.config));\n this.middlewareStack.use(getLoggerPlugin(this.config));\n this.middlewareStack.use(getRecursionDetectionPlugin(this.config));\n this.middlewareStack.use(getHttpAuthSchemeEndpointRuleSetPlugin(this.config, {\n httpAuthSchemeParametersProvider: defaultChimeSDKMessagingHttpAuthSchemeParametersProvider,\n identityProviderConfigProvider: async (config) => new DefaultIdentityProviderConfig({\n \"aws.auth#sigv4\": config.credentials,\n }),\n }));\n this.middlewareStack.use(getHttpSigningPlugin(this.config));\n }\n destroy() {\n super.destroy();\n }\n}\n","import { normalizeProvider } from \"@smithy/core\";\nexport const DEFAULT_UA_APP_ID = undefined;\nfunction isValidUserAgentAppId(appId) {\n if (appId === undefined) {\n return true;\n }\n return typeof appId === \"string\" && appId.length <= 50;\n}\nexport function resolveUserAgentConfig(input) {\n const normalizedAppIdProvider = normalizeProvider(input.userAgentAppId ?? DEFAULT_UA_APP_ID);\n const { customUserAgent } = input;\n return Object.assign(input, {\n customUserAgent: typeof customUserAgent === \"string\" ? [[customUserAgent]] : customUserAgent,\n userAgentAppId: async () => {\n const appId = await normalizedAppIdProvider();\n if (!isValidUserAgentAppId(appId)) {\n const logger = input.logger?.constructor?.name === \"NoOpLogger\" || !input.logger ? console : input.logger;\n if (typeof appId !== \"string\") {\n logger?.warn(\"userAgentAppId must be a string or undefined.\");\n }\n else if (appId.length > 50) {\n logger?.warn(\"The provided userAgentAppId exceeds the maximum length of 50 characters.\");\n }\n }\n return appId;\n },\n });\n}\n","import { normalizeProvider } from \"@smithy/util-middleware\";\nimport { getEndpointFromConfig } from \"./adaptors/getEndpointFromConfig\";\nimport { toEndpointV1 } from \"./adaptors/toEndpointV1\";\nexport const resolveEndpointConfig = (input) => {\n const tls = input.tls ?? true;\n const { endpoint, useDualstackEndpoint, useFipsEndpoint } = input;\n const customEndpointProvider = endpoint != null ? async () => toEndpointV1(await normalizeProvider(endpoint)()) : undefined;\n const isCustomEndpoint = !!endpoint;\n const resolvedConfig = Object.assign(input, {\n endpoint: customEndpointProvider,\n tls,\n isCustomEndpoint,\n useDualstackEndpoint: normalizeProvider(useDualstackEndpoint ?? false),\n useFipsEndpoint: normalizeProvider(useFipsEndpoint ?? false),\n });\n let configuredEndpointPromise = undefined;\n resolvedConfig.serviceConfiguredEndpoint = async () => {\n if (input.serviceId && !configuredEndpointPromise) {\n configuredEndpointPromise = getEndpointFromConfig(input.serviceId);\n }\n return configuredEndpointPromise;\n };\n return resolvedConfig;\n};\n","import { getRealRegion } from \"./getRealRegion\";\nimport { isFipsRegion } from \"./isFipsRegion\";\nexport const resolveRegionConfig = (input) => {\n const { region, useFipsEndpoint } = input;\n if (!region) {\n throw new Error(\"Region is missing\");\n }\n return Object.assign(input, {\n region: async () => {\n if (typeof region === \"string\") {\n return getRealRegion(region);\n }\n const providedRegion = await region();\n return getRealRegion(providedRegion);\n },\n useFipsEndpoint: async () => {\n const providedRegion = typeof region === \"string\" ? region : await region();\n if (isFipsRegion(providedRegion)) {\n return true;\n }\n return typeof useFipsEndpoint !== \"function\" ? Promise.resolve(!!useFipsEndpoint) : useFipsEndpoint();\n },\n });\n};\n","import { collectBody } from \"@smithy/smithy-client\";\nexport const collectBodyString = (streamBody, context) => collectBody(streamBody, context).then((body) => context.utf8Encoder(body));\n","import { collectBodyString } from \"../common\";\nexport const parseJsonBody = (streamBody, context) => collectBodyString(streamBody, context).then((encoded) => {\n if (encoded.length) {\n try {\n return JSON.parse(encoded);\n }\n catch (e) {\n if (e?.name === \"SyntaxError\") {\n Object.defineProperty(e, \"$responseBodyText\", {\n value: encoded,\n });\n }\n throw e;\n }\n }\n return {};\n});\nexport const parseJsonErrorBody = async (errorBody, context) => {\n const value = await parseJsonBody(errorBody, context);\n value.message = value.message ?? value.Message;\n return value;\n};\nexport const loadRestJsonErrorCode = (output, data) => {\n const findKey = (object, key) => Object.keys(object).find((k) => k.toLowerCase() === key.toLowerCase());\n const sanitizeErrorCode = (rawValue) => {\n let cleanValue = rawValue;\n if (typeof cleanValue === \"number\") {\n cleanValue = cleanValue.toString();\n }\n if (cleanValue.indexOf(\",\") >= 0) {\n cleanValue = cleanValue.split(\",\")[0];\n }\n if (cleanValue.indexOf(\":\") >= 0) {\n cleanValue = cleanValue.split(\":\")[0];\n }\n if (cleanValue.indexOf(\"#\") >= 0) {\n cleanValue = cleanValue.split(\"#\")[1];\n }\n return cleanValue;\n };\n const headerKey = findKey(output.headers, \"x-amzn-errortype\");\n if (headerKey !== undefined) {\n return sanitizeErrorCode(output.headers[headerKey]);\n }\n if (data.code !== undefined) {\n return sanitizeErrorCode(data.code);\n }\n if (data[\"__type\"] !== undefined) {\n return sanitizeErrorCode(data[\"__type\"]);\n }\n};\n","const randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);\nexport default {\n randomUUID\n};","// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\nlet getRandomValues;\nconst rnds8 = new Uint8Array(16);\nexport default function rng() {\n // lazy load so that environments that need to polyfill have a chance to do so\n if (!getRandomValues) {\n // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation.\n getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto);\n\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n }\n\n return getRandomValues(rnds8);\n}","import validate from './validate.js';\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nconst byteToHex = [];\n\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).slice(1));\n}\n\nexport function unsafeStringify(arr, offset = 0) {\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n return byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]];\n}\n\nfunction stringify(arr, offset = 0) {\n const uuid = unsafeStringify(arr, offset); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nexport default stringify;","import native from './native.js';\nimport rng from './rng.js';\nimport { unsafeStringify } from './stringify.js';\n\nfunction v4(options, buf, offset) {\n if (native.randomUUID && !buf && !options) {\n return native.randomUUID();\n }\n\n options = options || {};\n const rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n offset = offset || 0;\n\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return unsafeStringify(rnds);\n}\n\nexport default v4;","import { ServiceException as __ServiceException, } from \"@smithy/smithy-client\";\nexport { __ServiceException };\nexport class ChimeSDKMessagingServiceException extends __ServiceException {\n constructor(options) {\n super(options);\n Object.setPrototypeOf(this, ChimeSDKMessagingServiceException.prototype);\n }\n}\n","import { SENSITIVE_STRING } from \"@smithy/smithy-client\";\nimport { ChimeSDKMessagingServiceException as __BaseException } from \"./ChimeSDKMessagingServiceException\";\nexport const AllowNotifications = {\n ALL: \"ALL\",\n FILTERED: \"FILTERED\",\n NONE: \"NONE\",\n};\nexport const ChannelMembershipType = {\n DEFAULT: \"DEFAULT\",\n HIDDEN: \"HIDDEN\",\n};\nexport const ErrorCode = {\n AccessDenied: \"AccessDenied\",\n BadRequest: \"BadRequest\",\n Conflict: \"Conflict\",\n Forbidden: \"Forbidden\",\n NotFound: \"NotFound\",\n PhoneNumberAssociationsExist: \"PhoneNumberAssociationsExist\",\n PreconditionFailed: \"PreconditionFailed\",\n ResourceLimitExceeded: \"ResourceLimitExceeded\",\n ServiceFailure: \"ServiceFailure\",\n ServiceUnavailable: \"ServiceUnavailable\",\n Throttled: \"Throttled\",\n Throttling: \"Throttling\",\n Unauthorized: \"Unauthorized\",\n Unprocessable: \"Unprocessable\",\n VoiceConnectorGroupAssociationsExist: \"VoiceConnectorGroupAssociationsExist\",\n};\nexport class BadRequestException extends __BaseException {\n name = \"BadRequestException\";\n $fault = \"client\";\n Code;\n Message;\n constructor(opts) {\n super({\n name: \"BadRequestException\",\n $fault: \"client\",\n ...opts,\n });\n Object.setPrototypeOf(this, BadRequestException.prototype);\n this.Code = opts.Code;\n this.Message = opts.Message;\n }\n}\nexport class ConflictException extends __BaseException {\n name = \"ConflictException\";\n $fault = \"client\";\n Code;\n Message;\n constructor(opts) {\n super({\n name: \"ConflictException\",\n $fault: \"client\",\n ...opts,\n });\n Object.setPrototypeOf(this, ConflictException.prototype);\n this.Code = opts.Code;\n this.Message = opts.Message;\n }\n}\nexport class ForbiddenException extends __BaseException {\n name = \"ForbiddenException\";\n $fault = \"client\";\n Code;\n Message;\n constructor(opts) {\n super({\n name: \"ForbiddenException\",\n $fault: \"client\",\n ...opts,\n });\n Object.setPrototypeOf(this, ForbiddenException.prototype);\n this.Code = opts.Code;\n this.Message = opts.Message;\n }\n}\nexport class NotFoundException extends __BaseException {\n name = \"NotFoundException\";\n $fault = \"client\";\n Code;\n Message;\n constructor(opts) {\n super({\n name: \"NotFoundException\",\n $fault: \"client\",\n ...opts,\n });\n Object.setPrototypeOf(this, NotFoundException.prototype);\n this.Code = opts.Code;\n this.Message = opts.Message;\n }\n}\nexport class ServiceFailureException extends __BaseException {\n name = \"ServiceFailureException\";\n $fault = \"server\";\n Code;\n Message;\n constructor(opts) {\n super({\n name: \"ServiceFailureException\",\n $fault: \"server\",\n ...opts,\n });\n Object.setPrototypeOf(this, ServiceFailureException.prototype);\n this.Code = opts.Code;\n this.Message = opts.Message;\n }\n}\nexport class ServiceUnavailableException extends __BaseException {\n name = \"ServiceUnavailableException\";\n $fault = \"server\";\n Code;\n Message;\n constructor(opts) {\n super({\n name: \"ServiceUnavailableException\",\n $fault: \"server\",\n ...opts,\n });\n Object.setPrototypeOf(this, ServiceUnavailableException.prototype);\n this.Code = opts.Code;\n this.Message = opts.Message;\n }\n}\nexport class ThrottledClientException extends __BaseException {\n name = \"ThrottledClientException\";\n $fault = \"client\";\n Code;\n Message;\n constructor(opts) {\n super({\n name: \"ThrottledClientException\",\n $fault: \"client\",\n ...opts,\n });\n Object.setPrototypeOf(this, ThrottledClientException.prototype);\n this.Code = opts.Code;\n this.Message = opts.Message;\n }\n}\nexport class UnauthorizedClientException extends __BaseException {\n name = \"UnauthorizedClientException\";\n $fault = \"client\";\n Code;\n Message;\n constructor(opts) {\n super({\n name: \"UnauthorizedClientException\",\n $fault: \"client\",\n ...opts,\n });\n Object.setPrototypeOf(this, UnauthorizedClientException.prototype);\n this.Code = opts.Code;\n this.Message = opts.Message;\n }\n}\nexport class ResourceLimitExceededException extends __BaseException {\n name = \"ResourceLimitExceededException\";\n $fault = \"client\";\n Code;\n Message;\n constructor(opts) {\n super({\n name: \"ResourceLimitExceededException\",\n $fault: \"client\",\n ...opts,\n });\n Object.setPrototypeOf(this, ResourceLimitExceededException.prototype);\n this.Code = opts.Code;\n this.Message = opts.Message;\n }\n}\nexport const ExpirationCriterion = {\n CREATED_TIMESTAMP: \"CREATED_TIMESTAMP\",\n LAST_MESSAGE_TIMESTAMP: \"LAST_MESSAGE_TIMESTAMP\",\n};\nexport const ChannelMode = {\n RESTRICTED: \"RESTRICTED\",\n UNRESTRICTED: \"UNRESTRICTED\",\n};\nexport const ChannelPrivacy = {\n PRIVATE: \"PRIVATE\",\n PUBLIC: \"PUBLIC\",\n};\nexport const InvocationType = {\n ASYNC: \"ASYNC\",\n};\nexport const FallbackAction = {\n ABORT: \"ABORT\",\n CONTINUE: \"CONTINUE\",\n};\nexport const PushNotificationType = {\n DEFAULT: \"DEFAULT\",\n VOIP: \"VOIP\",\n};\nexport const ChannelMessagePersistenceType = {\n NON_PERSISTENT: \"NON_PERSISTENT\",\n PERSISTENT: \"PERSISTENT\",\n};\nexport const ChannelMessageStatus = {\n DENIED: \"DENIED\",\n FAILED: \"FAILED\",\n PENDING: \"PENDING\",\n SENT: \"SENT\",\n};\nexport const ChannelMessageType = {\n CONTROL: \"CONTROL\",\n STANDARD: \"STANDARD\",\n};\nexport const MessagingDataType = {\n Channel: \"Channel\",\n ChannelMessage: \"ChannelMessage\",\n};\nexport const SortOrder = {\n ASCENDING: \"ASCENDING\",\n DESCENDING: \"DESCENDING\",\n};\nexport const SearchFieldKey = {\n MEMBERS: \"MEMBERS\",\n};\nexport const SearchFieldOperator = {\n EQUALS: \"EQUALS\",\n INCLUDES: \"INCLUDES\",\n};\nexport const IdentityFilterSensitiveLog = (obj) => ({\n ...obj,\n ...(obj.Name && { Name: SENSITIVE_STRING }),\n});\nexport const BatchChannelMembershipsFilterSensitiveLog = (obj) => ({\n ...obj,\n ...(obj.InvitedBy && { InvitedBy: IdentityFilterSensitiveLog(obj.InvitedBy) }),\n ...(obj.Members && { Members: obj.Members.map((item) => IdentityFilterSensitiveLog(item)) }),\n});\nexport const BatchCreateChannelMembershipResponseFilterSensitiveLog = (obj) => ({\n ...obj,\n ...(obj.BatchChannelMemberships && {\n BatchChannelMemberships: BatchChannelMembershipsFilterSensitiveLog(obj.BatchChannelMemberships),\n }),\n});\nexport const ChannelFilterSensitiveLog = (obj) => ({\n ...obj,\n ...(obj.Name && { Name: SENSITIVE_STRING }),\n ...(obj.Metadata && { Metadata: SENSITIVE_STRING }),\n ...(obj.CreatedBy && { CreatedBy: IdentityFilterSensitiveLog(obj.CreatedBy) }),\n});\nexport const ChannelAssociatedWithFlowSummaryFilterSensitiveLog = (obj) => ({\n ...obj,\n ...(obj.Name && { Name: SENSITIVE_STRING }),\n ...(obj.Metadata && { Metadata: SENSITIVE_STRING }),\n});\nexport const ChannelBanFilterSensitiveLog = (obj) => ({\n ...obj,\n ...(obj.Member && { Member: IdentityFilterSensitiveLog(obj.Member) }),\n ...(obj.CreatedBy && { CreatedBy: IdentityFilterSensitiveLog(obj.CreatedBy) }),\n});\nexport const ChannelBanSummaryFilterSensitiveLog = (obj) => ({\n ...obj,\n ...(obj.Member && { Member: IdentityFilterSensitiveLog(obj.Member) }),\n});\nexport const ProcessorFilterSensitiveLog = (obj) => ({\n ...obj,\n ...(obj.Name && { Name: SENSITIVE_STRING }),\n});\nexport const ChannelFlowFilterSensitiveLog = (obj) => ({\n ...obj,\n ...(obj.Processors && { Processors: obj.Processors.map((item) => ProcessorFilterSensitiveLog(item)) }),\n ...(obj.Name && { Name: SENSITIVE_STRING }),\n});\nexport const MessageAttributeValueFilterSensitiveLog = (obj) => ({\n ...obj,\n ...(obj.StringValues && { StringValues: SENSITIVE_STRING }),\n});\nexport const PushNotificationConfigurationFilterSensitiveLog = (obj) => ({\n ...obj,\n ...(obj.Title && { Title: SENSITIVE_STRING }),\n ...(obj.Body && { Body: SENSITIVE_STRING }),\n});\nexport const ChannelMessageCallbackFilterSensitiveLog = (obj) => ({\n ...obj,\n ...(obj.Content && { Content: SENSITIVE_STRING }),\n ...(obj.Metadata && { Metadata: SENSITIVE_STRING }),\n ...(obj.PushNotification && {\n PushNotification: PushNotificationConfigurationFilterSensitiveLog(obj.PushNotification),\n }),\n ...(obj.MessageAttributes && {\n MessageAttributes: Object.entries(obj.MessageAttributes).reduce((acc, [key, value]) => ((acc[key] = MessageAttributeValueFilterSensitiveLog(value)), acc), {}),\n }),\n ...(obj.ContentType && { ContentType: SENSITIVE_STRING }),\n});\nexport const ChannelFlowCallbackRequestFilterSensitiveLog = (obj) => ({\n ...obj,\n ...(obj.ChannelMessage && { ChannelMessage: ChannelMessageCallbackFilterSensitiveLog(obj.ChannelMessage) }),\n});\nexport const ChannelFlowSummaryFilterSensitiveLog = (obj) => ({\n ...obj,\n ...(obj.Name && { Name: SENSITIVE_STRING }),\n ...(obj.Processors && { Processors: obj.Processors.map((item) => ProcessorFilterSensitiveLog(item)) }),\n});\nexport const ChannelMembershipFilterSensitiveLog = (obj) => ({\n ...obj,\n ...(obj.InvitedBy && { InvitedBy: IdentityFilterSensitiveLog(obj.InvitedBy) }),\n ...(obj.Member && { Member: IdentityFilterSensitiveLog(obj.Member) }),\n});\nexport const ChannelSummaryFilterSensitiveLog = (obj) => ({\n ...obj,\n ...(obj.Name && { Name: SENSITIVE_STRING }),\n ...(obj.Metadata && { Metadata: SENSITIVE_STRING }),\n});\nexport const ChannelMembershipForAppInstanceUserSummaryFilterSensitiveLog = (obj) => ({\n ...obj,\n ...(obj.ChannelSummary && { ChannelSummary: ChannelSummaryFilterSensitiveLog(obj.ChannelSummary) }),\n});\nexport const PushNotificationPreferencesFilterSensitiveLog = (obj) => ({\n ...obj,\n ...(obj.FilterRule && { FilterRule: SENSITIVE_STRING }),\n});\nexport const ChannelMembershipPreferencesFilterSensitiveLog = (obj) => ({\n ...obj,\n ...(obj.PushNotifications && {\n PushNotifications: PushNotificationPreferencesFilterSensitiveLog(obj.PushNotifications),\n }),\n});\nexport const ChannelMembershipSummaryFilterSensitiveLog = (obj) => ({\n ...obj,\n ...(obj.Member && { Member: IdentityFilterSensitiveLog(obj.Member) }),\n});\nexport const ChannelMessageFilterSensitiveLog = (obj) => ({\n ...obj,\n ...(obj.Content && { Content: SENSITIVE_STRING }),\n ...(obj.Metadata && { Metadata: SENSITIVE_STRING }),\n ...(obj.Sender && { Sender: IdentityFilterSensitiveLog(obj.Sender) }),\n ...(obj.MessageAttributes && {\n MessageAttributes: Object.entries(obj.MessageAttributes).reduce((acc, [key, value]) => ((acc[key] = MessageAttributeValueFilterSensitiveLog(value)), acc), {}),\n }),\n ...(obj.ContentType && { ContentType: SENSITIVE_STRING }),\n});\nexport const ChannelMessageSummaryFilterSensitiveLog = (obj) => ({\n ...obj,\n ...(obj.Content && { Content: SENSITIVE_STRING }),\n ...(obj.Metadata && { Metadata: SENSITIVE_STRING }),\n ...(obj.Sender && { Sender: IdentityFilterSensitiveLog(obj.Sender) }),\n ...(obj.MessageAttributes && {\n MessageAttributes: Object.entries(obj.MessageAttributes).reduce((acc, [key, value]) => ((acc[key] = MessageAttributeValueFilterSensitiveLog(value)), acc), {}),\n }),\n ...(obj.ContentType && { ContentType: SENSITIVE_STRING }),\n});\nexport const ChannelModeratedByAppInstanceUserSummaryFilterSensitiveLog = (obj) => ({\n ...obj,\n ...(obj.ChannelSummary && { ChannelSummary: ChannelSummaryFilterSensitiveLog(obj.ChannelSummary) }),\n});\nexport const ChannelModeratorFilterSensitiveLog = (obj) => ({\n ...obj,\n ...(obj.Moderator && { Moderator: IdentityFilterSensitiveLog(obj.Moderator) }),\n ...(obj.CreatedBy && { CreatedBy: IdentityFilterSensitiveLog(obj.CreatedBy) }),\n});\nexport const ChannelModeratorSummaryFilterSensitiveLog = (obj) => ({\n ...obj,\n ...(obj.Moderator && { Moderator: IdentityFilterSensitiveLog(obj.Moderator) }),\n});\nexport const TagFilterSensitiveLog = (obj) => ({\n ...obj,\n ...(obj.Key && { Key: SENSITIVE_STRING }),\n ...(obj.Value && { Value: SENSITIVE_STRING }),\n});\nexport const CreateChannelRequestFilterSensitiveLog = (obj) => ({\n ...obj,\n ...(obj.Name && { Name: SENSITIVE_STRING }),\n ...(obj.Metadata && { Metadata: SENSITIVE_STRING }),\n ...(obj.ClientRequestToken && { ClientRequestToken: SENSITIVE_STRING }),\n ...(obj.Tags && { Tags: obj.Tags.map((item) => TagFilterSensitiveLog(item)) }),\n ...(obj.ChannelId && { ChannelId: SENSITIVE_STRING }),\n});\nexport const CreateChannelBanResponseFilterSensitiveLog = (obj) => ({\n ...obj,\n ...(obj.Member && { Member: IdentityFilterSensitiveLog(obj.Member) }),\n});\nexport const CreateChannelFlowRequestFilterSensitiveLog = (obj) => ({\n ...obj,\n ...(obj.Processors && { Processors: obj.Processors.map((item) => ProcessorFilterSensitiveLog(item)) }),\n ...(obj.Name && { Name: SENSITIVE_STRING }),\n ...(obj.Tags && { Tags: obj.Tags.map((item) => TagFilterSensitiveLog(item)) }),\n ...(obj.ClientRequestToken && { ClientRequestToken: SENSITIVE_STRING }),\n});\nexport const CreateChannelMembershipResponseFilterSensitiveLog = (obj) => ({\n ...obj,\n ...(obj.Member && { Member: IdentityFilterSensitiveLog(obj.Member) }),\n});\nexport const CreateChannelModeratorResponseFilterSensitiveLog = (obj) => ({\n ...obj,\n ...(obj.ChannelModerator && { ChannelModerator: IdentityFilterSensitiveLog(obj.ChannelModerator) }),\n});\nexport const DescribeChannelResponseFilterSensitiveLog = (obj) => ({\n ...obj,\n ...(obj.Channel && { Channel: ChannelFilterSensitiveLog(obj.Channel) }),\n});\nexport const DescribeChannelBanResponseFilterSensitiveLog = (obj) => ({\n ...obj,\n ...(obj.ChannelBan && { ChannelBan: ChannelBanFilterSensitiveLog(obj.ChannelBan) }),\n});\nexport const DescribeChannelFlowResponseFilterSensitiveLog = (obj) => ({\n ...obj,\n ...(obj.ChannelFlow && { ChannelFlow: ChannelFlowFilterSensitiveLog(obj.ChannelFlow) }),\n});\nexport const DescribeChannelMembershipResponseFilterSensitiveLog = (obj) => ({\n ...obj,\n ...(obj.ChannelMembership && { ChannelMembership: ChannelMembershipFilterSensitiveLog(obj.ChannelMembership) }),\n});\nexport const DescribeChannelMembershipForAppInstanceUserResponseFilterSensitiveLog = (obj) => ({\n ...obj,\n ...(obj.ChannelMembership && {\n ChannelMembership: ChannelMembershipForAppInstanceUserSummaryFilterSensitiveLog(obj.ChannelMembership),\n }),\n});\nexport const DescribeChannelModeratedByAppInstanceUserResponseFilterSensitiveLog = (obj) => ({\n ...obj,\n ...(obj.Channel && { Channel: ChannelModeratedByAppInstanceUserSummaryFilterSensitiveLog(obj.Channel) }),\n});\nexport const DescribeChannelModeratorResponseFilterSensitiveLog = (obj) => ({\n ...obj,\n ...(obj.ChannelModerator && { ChannelModerator: ChannelModeratorFilterSensitiveLog(obj.ChannelModerator) }),\n});\nexport const GetChannelMembershipPreferencesResponseFilterSensitiveLog = (obj) => ({\n ...obj,\n ...(obj.Member && { Member: IdentityFilterSensitiveLog(obj.Member) }),\n ...(obj.Preferences && { Preferences: ChannelMembershipPreferencesFilterSensitiveLog(obj.Preferences) }),\n});\nexport const GetChannelMessageResponseFilterSensitiveLog = (obj) => ({\n ...obj,\n ...(obj.ChannelMessage && { ChannelMessage: ChannelMessageFilterSensitiveLog(obj.ChannelMessage) }),\n});\nexport const ListChannelBansRequestFilterSensitiveLog = (obj) => ({\n ...obj,\n ...(obj.NextToken && { NextToken: SENSITIVE_STRING }),\n});\nexport const ListChannelBansResponseFilterSensitiveLog = (obj) => ({\n ...obj,\n ...(obj.NextToken && { NextToken: SENSITIVE_STRING }),\n ...(obj.ChannelBans && { ChannelBans: obj.ChannelBans.map((item) => ChannelBanSummaryFilterSensitiveLog(item)) }),\n});\nexport const ListChannelFlowsRequestFilterSensitiveLog = (obj) => ({\n ...obj,\n ...(obj.NextToken && { NextToken: SENSITIVE_STRING }),\n});\nexport const ListChannelFlowsResponseFilterSensitiveLog = (obj) => ({\n ...obj,\n ...(obj.ChannelFlows && { ChannelFlows: obj.ChannelFlows.map((item) => ChannelFlowSummaryFilterSensitiveLog(item)) }),\n ...(obj.NextToken && { NextToken: SENSITIVE_STRING }),\n});\nexport const ListChannelMembershipsRequestFilterSensitiveLog = (obj) => ({\n ...obj,\n ...(obj.NextToken && { NextToken: SENSITIVE_STRING }),\n});\nexport const ListChannelMembershipsResponseFilterSensitiveLog = (obj) => ({\n ...obj,\n ...(obj.ChannelMemberships && {\n ChannelMemberships: obj.ChannelMemberships.map((item) => ChannelMembershipSummaryFilterSensitiveLog(item)),\n }),\n ...(obj.NextToken && { NextToken: SENSITIVE_STRING }),\n});\nexport const ListChannelMembershipsForAppInstanceUserRequestFilterSensitiveLog = (obj) => ({\n ...obj,\n ...(obj.NextToken && { NextToken: SENSITIVE_STRING }),\n});\nexport const ListChannelMembershipsForAppInstanceUserResponseFilterSensitiveLog = (obj) => ({\n ...obj,\n ...(obj.ChannelMemberships && {\n ChannelMemberships: obj.ChannelMemberships.map((item) => ChannelMembershipForAppInstanceUserSummaryFilterSensitiveLog(item)),\n }),\n ...(obj.NextToken && { NextToken: SENSITIVE_STRING }),\n});\nexport const ListChannelMessagesRequestFilterSensitiveLog = (obj) => ({\n ...obj,\n ...(obj.NextToken && { NextToken: SENSITIVE_STRING }),\n});\nexport const ListChannelMessagesResponseFilterSensitiveLog = (obj) => ({\n ...obj,\n ...(obj.NextToken && { NextToken: SENSITIVE_STRING }),\n ...(obj.ChannelMessages && {\n ChannelMessages: obj.ChannelMessages.map((item) => ChannelMessageSummaryFilterSensitiveLog(item)),\n }),\n});\nexport const ListChannelModeratorsRequestFilterSensitiveLog = (obj) => ({\n ...obj,\n ...(obj.NextToken && { NextToken: SENSITIVE_STRING }),\n});\nexport const ListChannelModeratorsResponseFilterSensitiveLog = (obj) => ({\n ...obj,\n ...(obj.NextToken && { NextToken: SENSITIVE_STRING }),\n ...(obj.ChannelModerators && {\n ChannelModerators: obj.ChannelModerators.map((item) => ChannelModeratorSummaryFilterSensitiveLog(item)),\n }),\n});\nexport const ListChannelsRequestFilterSensitiveLog = (obj) => ({\n ...obj,\n ...(obj.NextToken && { NextToken: SENSITIVE_STRING }),\n});\nexport const ListChannelsResponseFilterSensitiveLog = (obj) => ({\n ...obj,\n ...(obj.Channels && { Channels: obj.Channels.map((item) => ChannelSummaryFilterSensitiveLog(item)) }),\n ...(obj.NextToken && { NextToken: SENSITIVE_STRING }),\n});\nexport const ListChannelsAssociatedWithChannelFlowRequestFilterSensitiveLog = (obj) => ({\n ...obj,\n ...(obj.NextToken && { NextToken: SENSITIVE_STRING }),\n});\nexport const ListChannelsAssociatedWithChannelFlowResponseFilterSensitiveLog = (obj) => ({\n ...obj,\n ...(obj.Channels && {\n Channels: obj.Channels.map((item) => ChannelAssociatedWithFlowSummaryFilterSensitiveLog(item)),\n }),\n ...(obj.NextToken && { NextToken: SENSITIVE_STRING }),\n});\nexport const ListChannelsModeratedByAppInstanceUserRequestFilterSensitiveLog = (obj) => ({\n ...obj,\n ...(obj.NextToken && { NextToken: SENSITIVE_STRING }),\n});\nexport const ListChannelsModeratedByAppInstanceUserResponseFilterSensitiveLog = (obj) => ({\n ...obj,\n ...(obj.Channels && {\n Channels: obj.Channels.map((item) => ChannelModeratedByAppInstanceUserSummaryFilterSensitiveLog(item)),\n }),\n ...(obj.NextToken && { NextToken: SENSITIVE_STRING }),\n});\nexport const ListSubChannelsRequestFilterSensitiveLog = (obj) => ({\n ...obj,\n ...(obj.NextToken && { NextToken: SENSITIVE_STRING }),\n});\nexport const ListSubChannelsResponseFilterSensitiveLog = (obj) => ({\n ...obj,\n ...(obj.NextToken && { NextToken: SENSITIVE_STRING }),\n});\nexport const ListTagsForResourceResponseFilterSensitiveLog = (obj) => ({\n ...obj,\n ...(obj.Tags && { Tags: obj.Tags.map((item) => TagFilterSensitiveLog(item)) }),\n});\nexport const PutChannelMembershipPreferencesRequestFilterSensitiveLog = (obj) => ({\n ...obj,\n ...(obj.Preferences && { Preferences: ChannelMembershipPreferencesFilterSensitiveLog(obj.Preferences) }),\n});\nexport const PutChannelMembershipPreferencesResponseFilterSensitiveLog = (obj) => ({\n ...obj,\n ...(obj.Member && { Member: IdentityFilterSensitiveLog(obj.Member) }),\n ...(obj.Preferences && { Preferences: ChannelMembershipPreferencesFilterSensitiveLog(obj.Preferences) }),\n});\nexport const SearchChannelsRequestFilterSensitiveLog = (obj) => ({\n ...obj,\n ...(obj.NextToken && { NextToken: SENSITIVE_STRING }),\n});\nexport const SearchChannelsResponseFilterSensitiveLog = (obj) => ({\n ...obj,\n ...(obj.Channels && { Channels: obj.Channels.map((item) => ChannelSummaryFilterSensitiveLog(item)) }),\n ...(obj.NextToken && { NextToken: SENSITIVE_STRING }),\n});\nexport const SendChannelMessageRequestFilterSensitiveLog = (obj) => ({\n ...obj,\n ...(obj.Content && { Content: SENSITIVE_STRING }),\n ...(obj.Metadata && { Metadata: SENSITIVE_STRING }),\n ...(obj.ClientRequestToken && { ClientRequestToken: SENSITIVE_STRING }),\n ...(obj.PushNotification && {\n PushNotification: PushNotificationConfigurationFilterSensitiveLog(obj.PushNotification),\n }),\n ...(obj.MessageAttributes && {\n MessageAttributes: Object.entries(obj.MessageAttributes).reduce((acc, [key, value]) => ((acc[key] = MessageAttributeValueFilterSensitiveLog(value)), acc), {}),\n }),\n ...(obj.ContentType && { ContentType: SENSITIVE_STRING }),\n});\nexport const TagResourceRequestFilterSensitiveLog = (obj) => ({\n ...obj,\n ...(obj.Tags && { Tags: obj.Tags.map((item) => TagFilterSensitiveLog(item)) }),\n});\nexport const UntagResourceRequestFilterSensitiveLog = (obj) => ({\n ...obj,\n ...(obj.TagKeys && { TagKeys: SENSITIVE_STRING }),\n});\nexport const UpdateChannelRequestFilterSensitiveLog = (obj) => ({\n ...obj,\n ...(obj.Name && { Name: SENSITIVE_STRING }),\n ...(obj.Metadata && { Metadata: SENSITIVE_STRING }),\n});\nexport const UpdateChannelFlowRequestFilterSensitiveLog = (obj) => ({\n ...obj,\n ...(obj.Processors && { Processors: obj.Processors.map((item) => ProcessorFilterSensitiveLog(item)) }),\n ...(obj.Name && { Name: SENSITIVE_STRING }),\n});\nexport const UpdateChannelMessageRequestFilterSensitiveLog = (obj) => ({\n ...obj,\n ...(obj.Content && { Content: SENSITIVE_STRING }),\n ...(obj.Metadata && { Metadata: SENSITIVE_STRING }),\n ...(obj.ContentType && { ContentType: SENSITIVE_STRING }),\n});\n","import { loadRestJsonErrorCode, parseJsonBody as parseBody, parseJsonErrorBody as parseErrorBody } from \"@aws-sdk/core\";\nimport { requestBuilder as rb } from \"@smithy/core\";\nimport { _json, collectBody, decorateServiceException as __decorateServiceException, expectBoolean as __expectBoolean, expectNonNull as __expectNonNull, expectNumber as __expectNumber, expectObject as __expectObject, expectString as __expectString, isSerializableHeaderValue, map, parseEpochTimestamp as __parseEpochTimestamp, serializeDateTime as __serializeDateTime, take, withBaseException, } from \"@smithy/smithy-client\";\nimport { v4 as generateIdempotencyToken } from \"uuid\";\nimport { ChimeSDKMessagingServiceException as __BaseException } from \"../models/ChimeSDKMessagingServiceException\";\nimport { BadRequestException, ConflictException, ForbiddenException, NotFoundException, ResourceLimitExceededException, ServiceFailureException, ServiceUnavailableException, ThrottledClientException, UnauthorizedClientException, } from \"../models/models_0\";\nexport const se_AssociateChannelFlowCommand = async (input, context) => {\n const b = rb(input, context);\n const headers = map({}, isSerializableHeaderValue, {\n \"content-type\": \"application/json\",\n [_xacb]: input[_CB],\n });\n b.bp(\"/channels/{ChannelArn}/channel-flow\");\n b.p(\"ChannelArn\", () => input.ChannelArn, \"{ChannelArn}\", false);\n let body;\n body = JSON.stringify(take(input, {\n ChannelFlowArn: [],\n }));\n b.m(\"PUT\").h(headers).b(body);\n return b.build();\n};\nexport const se_BatchCreateChannelMembershipCommand = async (input, context) => {\n const b = rb(input, context);\n const headers = map({}, isSerializableHeaderValue, {\n \"content-type\": \"application/json\",\n [_xacb]: input[_CB],\n });\n b.bp(\"/channels/{ChannelArn}/memberships\");\n b.p(\"ChannelArn\", () => input.ChannelArn, \"{ChannelArn}\", false);\n const query = map({\n [_o]: [, \"batch-create\"],\n });\n let body;\n body = JSON.stringify(take(input, {\n MemberArns: (_) => _json(_),\n SubChannelId: [],\n Type: [],\n }));\n b.m(\"POST\").h(headers).q(query).b(body);\n return b.build();\n};\nexport const se_ChannelFlowCallbackCommand = async (input, context) => {\n const b = rb(input, context);\n const headers = {\n \"content-type\": \"application/json\",\n };\n b.bp(\"/channels/{ChannelArn}\");\n b.p(\"ChannelArn\", () => input.ChannelArn, \"{ChannelArn}\", false);\n const query = map({\n [_o]: [, \"channel-flow-callback\"],\n });\n let body;\n body = JSON.stringify(take(input, {\n CallbackId: [true, (_) => _ ?? generateIdempotencyToken()],\n ChannelMessage: (_) => _json(_),\n DeleteResource: [],\n }));\n b.m(\"POST\").h(headers).q(query).b(body);\n return b.build();\n};\nexport const se_CreateChannelCommand = async (input, context) => {\n const b = rb(input, context);\n const headers = map({}, isSerializableHeaderValue, {\n \"content-type\": \"application/json\",\n [_xacb]: input[_CB],\n });\n b.bp(\"/channels\");\n let body;\n body = JSON.stringify(take(input, {\n AppInstanceArn: [],\n ChannelId: [],\n ClientRequestToken: [true, (_) => _ ?? generateIdempotencyToken()],\n ElasticChannelConfiguration: (_) => _json(_),\n ExpirationSettings: (_) => _json(_),\n MemberArns: (_) => _json(_),\n Metadata: [],\n Mode: [],\n ModeratorArns: (_) => _json(_),\n Name: [],\n Privacy: [],\n Tags: (_) => _json(_),\n }));\n b.m(\"POST\").h(headers).b(body);\n return b.build();\n};\nexport const se_CreateChannelBanCommand = async (input, context) => {\n const b = rb(input, context);\n const headers = map({}, isSerializableHeaderValue, {\n \"content-type\": \"application/json\",\n [_xacb]: input[_CB],\n });\n b.bp(\"/channels/{ChannelArn}/bans\");\n b.p(\"ChannelArn\", () => input.ChannelArn, \"{ChannelArn}\", false);\n let body;\n body = JSON.stringify(take(input, {\n MemberArn: [],\n }));\n b.m(\"POST\").h(headers).b(body);\n return b.build();\n};\nexport const se_CreateChannelFlowCommand = async (input, context) => {\n const b = rb(input, context);\n const headers = {\n \"content-type\": \"application/json\",\n };\n b.bp(\"/channel-flows\");\n let body;\n body = JSON.stringify(take(input, {\n AppInstanceArn: [],\n ClientRequestToken: [true, (_) => _ ?? generateIdempotencyToken()],\n Name: [],\n Processors: (_) => _json(_),\n Tags: (_) => _json(_),\n }));\n b.m(\"POST\").h(headers).b(body);\n return b.build();\n};\nexport const se_CreateChannelMembershipCommand = async (input, context) => {\n const b = rb(input, context);\n const headers = map({}, isSerializableHeaderValue, {\n \"content-type\": \"application/json\",\n [_xacb]: input[_CB],\n });\n b.bp(\"/channels/{ChannelArn}/memberships\");\n b.p(\"ChannelArn\", () => input.ChannelArn, \"{ChannelArn}\", false);\n let body;\n body = JSON.stringify(take(input, {\n MemberArn: [],\n SubChannelId: [],\n Type: [],\n }));\n b.m(\"POST\").h(headers).b(body);\n return b.build();\n};\nexport const se_CreateChannelModeratorCommand = async (input, context) => {\n const b = rb(input, context);\n const headers = map({}, isSerializableHeaderValue, {\n \"content-type\": \"application/json\",\n [_xacb]: input[_CB],\n });\n b.bp(\"/channels/{ChannelArn}/moderators\");\n b.p(\"ChannelArn\", () => input.ChannelArn, \"{ChannelArn}\", false);\n let body;\n body = JSON.stringify(take(input, {\n ChannelModeratorArn: [],\n }));\n b.m(\"POST\").h(headers).b(body);\n return b.build();\n};\nexport const se_DeleteChannelCommand = async (input, context) => {\n const b = rb(input, context);\n const headers = map({}, isSerializableHeaderValue, {\n [_xacb]: input[_CB],\n });\n b.bp(\"/channels/{ChannelArn}\");\n b.p(\"ChannelArn\", () => input.ChannelArn, \"{ChannelArn}\", false);\n let body;\n b.m(\"DELETE\").h(headers).b(body);\n return b.build();\n};\nexport const se_DeleteChannelBanCommand = async (input, context) => {\n const b = rb(input, context);\n const headers = map({}, isSerializableHeaderValue, {\n [_xacb]: input[_CB],\n });\n b.bp(\"/channels/{ChannelArn}/bans/{MemberArn}\");\n b.p(\"ChannelArn\", () => input.ChannelArn, \"{ChannelArn}\", false);\n b.p(\"MemberArn\", () => input.MemberArn, \"{MemberArn}\", false);\n let body;\n b.m(\"DELETE\").h(headers).b(body);\n return b.build();\n};\nexport const se_DeleteChannelFlowCommand = async (input, context) => {\n const b = rb(input, context);\n const headers = {};\n b.bp(\"/channel-flows/{ChannelFlowArn}\");\n b.p(\"ChannelFlowArn\", () => input.ChannelFlowArn, \"{ChannelFlowArn}\", false);\n let body;\n b.m(\"DELETE\").h(headers).b(body);\n return b.build();\n};\nexport const se_DeleteChannelMembershipCommand = async (input, context) => {\n const b = rb(input, context);\n const headers = map({}, isSerializableHeaderValue, {\n [_xacb]: input[_CB],\n });\n b.bp(\"/channels/{ChannelArn}/memberships/{MemberArn}\");\n b.p(\"ChannelArn\", () => input.ChannelArn, \"{ChannelArn}\", false);\n b.p(\"MemberArn\", () => input.MemberArn, \"{MemberArn}\", false);\n const query = map({\n [_sci]: [, input[_SCI]],\n });\n let body;\n b.m(\"DELETE\").h(headers).q(query).b(body);\n return b.build();\n};\nexport const se_DeleteChannelMessageCommand = async (input, context) => {\n const b = rb(input, context);\n const headers = map({}, isSerializableHeaderValue, {\n [_xacb]: input[_CB],\n });\n b.bp(\"/channels/{ChannelArn}/messages/{MessageId}\");\n b.p(\"ChannelArn\", () => input.ChannelArn, \"{ChannelArn}\", false);\n b.p(\"MessageId\", () => input.MessageId, \"{MessageId}\", false);\n const query = map({\n [_sci]: [, input[_SCI]],\n });\n let body;\n b.m(\"DELETE\").h(headers).q(query).b(body);\n return b.build();\n};\nexport const se_DeleteChannelModeratorCommand = async (input, context) => {\n const b = rb(input, context);\n const headers = map({}, isSerializableHeaderValue, {\n [_xacb]: input[_CB],\n });\n b.bp(\"/channels/{ChannelArn}/moderators/{ChannelModeratorArn}\");\n b.p(\"ChannelArn\", () => input.ChannelArn, \"{ChannelArn}\", false);\n b.p(\"ChannelModeratorArn\", () => input.ChannelModeratorArn, \"{ChannelModeratorArn}\", false);\n let body;\n b.m(\"DELETE\").h(headers).b(body);\n return b.build();\n};\nexport const se_DeleteMessagingStreamingConfigurationsCommand = async (input, context) => {\n const b = rb(input, context);\n const headers = {};\n b.bp(\"/app-instances/{AppInstanceArn}/streaming-configurations\");\n b.p(\"AppInstanceArn\", () => input.AppInstanceArn, \"{AppInstanceArn}\", false);\n let body;\n b.m(\"DELETE\").h(headers).b(body);\n return b.build();\n};\nexport const se_DescribeChannelCommand = async (input, context) => {\n const b = rb(input, context);\n const headers = map({}, isSerializableHeaderValue, {\n [_xacb]: input[_CB],\n });\n b.bp(\"/channels/{ChannelArn}\");\n b.p(\"ChannelArn\", () => input.ChannelArn, \"{ChannelArn}\", false);\n let body;\n b.m(\"GET\").h(headers).b(body);\n return b.build();\n};\nexport const se_DescribeChannelBanCommand = async (input, context) => {\n const b = rb(input, context);\n const headers = map({}, isSerializableHeaderValue, {\n [_xacb]: input[_CB],\n });\n b.bp(\"/channels/{ChannelArn}/bans/{MemberArn}\");\n b.p(\"ChannelArn\", () => input.ChannelArn, \"{ChannelArn}\", false);\n b.p(\"MemberArn\", () => input.MemberArn, \"{MemberArn}\", false);\n let body;\n b.m(\"GET\").h(headers).b(body);\n return b.build();\n};\nexport const se_DescribeChannelFlowCommand = async (input, context) => {\n const b = rb(input, context);\n const headers = {};\n b.bp(\"/channel-flows/{ChannelFlowArn}\");\n b.p(\"ChannelFlowArn\", () => input.ChannelFlowArn, \"{ChannelFlowArn}\", false);\n let body;\n b.m(\"GET\").h(headers).b(body);\n return b.build();\n};\nexport const se_DescribeChannelMembershipCommand = async (input, context) => {\n const b = rb(input, context);\n const headers = map({}, isSerializableHeaderValue, {\n [_xacb]: input[_CB],\n });\n b.bp(\"/channels/{ChannelArn}/memberships/{MemberArn}\");\n b.p(\"ChannelArn\", () => input.ChannelArn, \"{ChannelArn}\", false);\n b.p(\"MemberArn\", () => input.MemberArn, \"{MemberArn}\", false);\n const query = map({\n [_sci]: [, input[_SCI]],\n });\n let body;\n b.m(\"GET\").h(headers).q(query).b(body);\n return b.build();\n};\nexport const se_DescribeChannelMembershipForAppInstanceUserCommand = async (input, context) => {\n const b = rb(input, context);\n const headers = map({}, isSerializableHeaderValue, {\n [_xacb]: input[_CB],\n });\n b.bp(\"/channels/{ChannelArn}\");\n b.p(\"ChannelArn\", () => input.ChannelArn, \"{ChannelArn}\", false);\n const query = map({\n [_s]: [, \"app-instance-user-membership\"],\n [_aiua]: [, __expectNonNull(input[_AIUA], `AppInstanceUserArn`)],\n });\n let body;\n b.m(\"GET\").h(headers).q(query).b(body);\n return b.build();\n};\nexport const se_DescribeChannelModeratedByAppInstanceUserCommand = async (input, context) => {\n const b = rb(input, context);\n const headers = map({}, isSerializableHeaderValue, {\n [_xacb]: input[_CB],\n });\n b.bp(\"/channels/{ChannelArn}\");\n b.p(\"ChannelArn\", () => input.ChannelArn, \"{ChannelArn}\", false);\n const query = map({\n [_s]: [, \"app-instance-user-moderated-channel\"],\n [_aiua]: [, __expectNonNull(input[_AIUA], `AppInstanceUserArn`)],\n });\n let body;\n b.m(\"GET\").h(headers).q(query).b(body);\n return b.build();\n};\nexport const se_DescribeChannelModeratorCommand = async (input, context) => {\n const b = rb(input, context);\n const headers = map({}, isSerializableHeaderValue, {\n [_xacb]: input[_CB],\n });\n b.bp(\"/channels/{ChannelArn}/moderators/{ChannelModeratorArn}\");\n b.p(\"ChannelArn\", () => input.ChannelArn, \"{ChannelArn}\", false);\n b.p(\"ChannelModeratorArn\", () => input.ChannelModeratorArn, \"{ChannelModeratorArn}\", false);\n let body;\n b.m(\"GET\").h(headers).b(body);\n return b.build();\n};\nexport const se_DisassociateChannelFlowCommand = async (input, context) => {\n const b = rb(input, context);\n const headers = map({}, isSerializableHeaderValue, {\n [_xacb]: input[_CB],\n });\n b.bp(\"/channels/{ChannelArn}/channel-flow/{ChannelFlowArn}\");\n b.p(\"ChannelArn\", () => input.ChannelArn, \"{ChannelArn}\", false);\n b.p(\"ChannelFlowArn\", () => input.ChannelFlowArn, \"{ChannelFlowArn}\", false);\n let body;\n b.m(\"DELETE\").h(headers).b(body);\n return b.build();\n};\nexport const se_GetChannelMembershipPreferencesCommand = async (input, context) => {\n const b = rb(input, context);\n const headers = map({}, isSerializableHeaderValue, {\n [_xacb]: input[_CB],\n });\n b.bp(\"/channels/{ChannelArn}/memberships/{MemberArn}/preferences\");\n b.p(\"ChannelArn\", () => input.ChannelArn, \"{ChannelArn}\", false);\n b.p(\"MemberArn\", () => input.MemberArn, \"{MemberArn}\", false);\n let body;\n b.m(\"GET\").h(headers).b(body);\n return b.build();\n};\nexport const se_GetChannelMessageCommand = async (input, context) => {\n const b = rb(input, context);\n const headers = map({}, isSerializableHeaderValue, {\n [_xacb]: input[_CB],\n });\n b.bp(\"/channels/{ChannelArn}/messages/{MessageId}\");\n b.p(\"ChannelArn\", () => input.ChannelArn, \"{ChannelArn}\", false);\n b.p(\"MessageId\", () => input.MessageId, \"{MessageId}\", false);\n const query = map({\n [_sci]: [, input[_SCI]],\n });\n let body;\n b.m(\"GET\").h(headers).q(query).b(body);\n return b.build();\n};\nexport const se_GetChannelMessageStatusCommand = async (input, context) => {\n const b = rb(input, context);\n const headers = map({}, isSerializableHeaderValue, {\n [_xacb]: input[_CB],\n });\n b.bp(\"/channels/{ChannelArn}/messages/{MessageId}\");\n b.p(\"ChannelArn\", () => input.ChannelArn, \"{ChannelArn}\", false);\n b.p(\"MessageId\", () => input.MessageId, \"{MessageId}\", false);\n const query = map({\n [_s]: [, \"message-status\"],\n [_sci]: [, input[_SCI]],\n });\n let body;\n b.m(\"GET\").h(headers).q(query).b(body);\n return b.build();\n};\nexport const se_GetMessagingSessionEndpointCommand = async (input, context) => {\n const b = rb(input, context);\n const headers = {};\n b.bp(\"/endpoints/messaging-session\");\n let body;\n b.m(\"GET\").h(headers).b(body);\n return b.build();\n};\nexport const se_GetMessagingStreamingConfigurationsCommand = async (input, context) => {\n const b = rb(input, context);\n const headers = {};\n b.bp(\"/app-instances/{AppInstanceArn}/streaming-configurations\");\n b.p(\"AppInstanceArn\", () => input.AppInstanceArn, \"{AppInstanceArn}\", false);\n let body;\n b.m(\"GET\").h(headers).b(body);\n return b.build();\n};\nexport const se_ListChannelBansCommand = async (input, context) => {\n const b = rb(input, context);\n const headers = map({}, isSerializableHeaderValue, {\n [_xacb]: input[_CB],\n });\n b.bp(\"/channels/{ChannelArn}/bans\");\n b.p(\"ChannelArn\", () => input.ChannelArn, \"{ChannelArn}\", false);\n const query = map({\n [_mr]: [() => input.MaxResults !== void 0, () => input[_MR].toString()],\n [_nt]: [, input[_NT]],\n });\n let body;\n b.m(\"GET\").h(headers).q(query).b(body);\n return b.build();\n};\nexport const se_ListChannelFlowsCommand = async (input, context) => {\n const b = rb(input, context);\n const headers = {};\n b.bp(\"/channel-flows\");\n const query = map({\n [_aia]: [, __expectNonNull(input[_AIA], `AppInstanceArn`)],\n [_mr]: [() => input.MaxResults !== void 0, () => input[_MR].toString()],\n [_nt]: [, input[_NT]],\n });\n let body;\n b.m(\"GET\").h(headers).q(query).b(body);\n return b.build();\n};\nexport const se_ListChannelMembershipsCommand = async (input, context) => {\n const b = rb(input, context);\n const headers = map({}, isSerializableHeaderValue, {\n [_xacb]: input[_CB],\n });\n b.bp(\"/channels/{ChannelArn}/memberships\");\n b.p(\"ChannelArn\", () => input.ChannelArn, \"{ChannelArn}\", false);\n const query = map({\n [_t]: [, input[_T]],\n [_mr]: [() => input.MaxResults !== void 0, () => input[_MR].toString()],\n [_nt]: [, input[_NT]],\n [_sci]: [, input[_SCI]],\n });\n let body;\n b.m(\"GET\").h(headers).q(query).b(body);\n return b.build();\n};\nexport const se_ListChannelMembershipsForAppInstanceUserCommand = async (input, context) => {\n const b = rb(input, context);\n const headers = map({}, isSerializableHeaderValue, {\n [_xacb]: input[_CB],\n });\n b.bp(\"/channels\");\n const query = map({\n [_s]: [, \"app-instance-user-memberships\"],\n [_aiua]: [, input[_AIUA]],\n [_mr]: [() => input.MaxResults !== void 0, () => input[_MR].toString()],\n [_nt]: [, input[_NT]],\n });\n let body;\n b.m(\"GET\").h(headers).q(query).b(body);\n return b.build();\n};\nexport const se_ListChannelMessagesCommand = async (input, context) => {\n const b = rb(input, context);\n const headers = map({}, isSerializableHeaderValue, {\n [_xacb]: input[_CB],\n });\n b.bp(\"/channels/{ChannelArn}/messages\");\n b.p(\"ChannelArn\", () => input.ChannelArn, \"{ChannelArn}\", false);\n const query = map({\n [_so]: [, input[_SO]],\n [_nb]: [() => input.NotBefore !== void 0, () => __serializeDateTime(input[_NB]).toString()],\n [_na]: [() => input.NotAfter !== void 0, () => __serializeDateTime(input[_NA]).toString()],\n [_mr]: [() => input.MaxResults !== void 0, () => input[_MR].toString()],\n [_nt]: [, input[_NT]],\n [_sci]: [, input[_SCI]],\n });\n let body;\n b.m(\"GET\").h(headers).q(query).b(body);\n return b.build();\n};\nexport const se_ListChannelModeratorsCommand = async (input, context) => {\n const b = rb(input, context);\n const headers = map({}, isSerializableHeaderValue, {\n [_xacb]: input[_CB],\n });\n b.bp(\"/channels/{ChannelArn}/moderators\");\n b.p(\"ChannelArn\", () => input.ChannelArn, \"{ChannelArn}\", false);\n const query = map({\n [_mr]: [() => input.MaxResults !== void 0, () => input[_MR].toString()],\n [_nt]: [, input[_NT]],\n });\n let body;\n b.m(\"GET\").h(headers).q(query).b(body);\n return b.build();\n};\nexport const se_ListChannelsCommand = async (input, context) => {\n const b = rb(input, context);\n const headers = map({}, isSerializableHeaderValue, {\n [_xacb]: input[_CB],\n });\n b.bp(\"/channels\");\n const query = map({\n [_aia]: [, __expectNonNull(input[_AIA], `AppInstanceArn`)],\n [_p]: [, input[_P]],\n [_mr]: [() => input.MaxResults !== void 0, () => input[_MR].toString()],\n [_nt]: [, input[_NT]],\n });\n let body;\n b.m(\"GET\").h(headers).q(query).b(body);\n return b.build();\n};\nexport const se_ListChannelsAssociatedWithChannelFlowCommand = async (input, context) => {\n const b = rb(input, context);\n const headers = {};\n b.bp(\"/channels\");\n const query = map({\n [_s]: [, \"channel-flow-associations\"],\n [_cfa]: [, __expectNonNull(input[_CFA], `ChannelFlowArn`)],\n [_mr]: [() => input.MaxResults !== void 0, () => input[_MR].toString()],\n [_nt]: [, input[_NT]],\n });\n let body;\n b.m(\"GET\").h(headers).q(query).b(body);\n return b.build();\n};\nexport const se_ListChannelsModeratedByAppInstanceUserCommand = async (input, context) => {\n const b = rb(input, context);\n const headers = map({}, isSerializableHeaderValue, {\n [_xacb]: input[_CB],\n });\n b.bp(\"/channels\");\n const query = map({\n [_s]: [, \"app-instance-user-moderated-channels\"],\n [_aiua]: [, input[_AIUA]],\n [_mr]: [() => input.MaxResults !== void 0, () => input[_MR].toString()],\n [_nt]: [, input[_NT]],\n });\n let body;\n b.m(\"GET\").h(headers).q(query).b(body);\n return b.build();\n};\nexport const se_ListSubChannelsCommand = async (input, context) => {\n const b = rb(input, context);\n const headers = map({}, isSerializableHeaderValue, {\n [_xacb]: input[_CB],\n });\n b.bp(\"/channels/{ChannelArn}/subchannels\");\n b.p(\"ChannelArn\", () => input.ChannelArn, \"{ChannelArn}\", false);\n const query = map({\n [_mr]: [() => input.MaxResults !== void 0, () => input[_MR].toString()],\n [_nt]: [, input[_NT]],\n });\n let body;\n b.m(\"GET\").h(headers).q(query).b(body);\n return b.build();\n};\nexport const se_ListTagsForResourceCommand = async (input, context) => {\n const b = rb(input, context);\n const headers = {};\n b.bp(\"/tags\");\n const query = map({\n [_a]: [, __expectNonNull(input[_RARN], `ResourceARN`)],\n });\n let body;\n b.m(\"GET\").h(headers).q(query).b(body);\n return b.build();\n};\nexport const se_PutChannelExpirationSettingsCommand = async (input, context) => {\n const b = rb(input, context);\n const headers = map({}, isSerializableHeaderValue, {\n \"content-type\": \"application/json\",\n [_xacb]: input[_CB],\n });\n b.bp(\"/channels/{ChannelArn}/expiration-settings\");\n b.p(\"ChannelArn\", () => input.ChannelArn, \"{ChannelArn}\", false);\n let body;\n body = JSON.stringify(take(input, {\n ExpirationSettings: (_) => _json(_),\n }));\n b.m(\"PUT\").h(headers).b(body);\n return b.build();\n};\nexport const se_PutChannelMembershipPreferencesCommand = async (input, context) => {\n const b = rb(input, context);\n const headers = map({}, isSerializableHeaderValue, {\n \"content-type\": \"application/json\",\n [_xacb]: input[_CB],\n });\n b.bp(\"/channels/{ChannelArn}/memberships/{MemberArn}/preferences\");\n b.p(\"ChannelArn\", () => input.ChannelArn, \"{ChannelArn}\", false);\n b.p(\"MemberArn\", () => input.MemberArn, \"{MemberArn}\", false);\n let body;\n body = JSON.stringify(take(input, {\n Preferences: (_) => _json(_),\n }));\n b.m(\"PUT\").h(headers).b(body);\n return b.build();\n};\nexport const se_PutMessagingStreamingConfigurationsCommand = async (input, context) => {\n const b = rb(input, context);\n const headers = {\n \"content-type\": \"application/json\",\n };\n b.bp(\"/app-instances/{AppInstanceArn}/streaming-configurations\");\n b.p(\"AppInstanceArn\", () => input.AppInstanceArn, \"{AppInstanceArn}\", false);\n let body;\n body = JSON.stringify(take(input, {\n StreamingConfigurations: (_) => _json(_),\n }));\n b.m(\"PUT\").h(headers).b(body);\n return b.build();\n};\nexport const se_RedactChannelMessageCommand = async (input, context) => {\n const b = rb(input, context);\n const headers = map({}, isSerializableHeaderValue, {\n \"content-type\": \"application/json\",\n [_xacb]: input[_CB],\n });\n b.bp(\"/channels/{ChannelArn}/messages/{MessageId}\");\n b.p(\"ChannelArn\", () => input.ChannelArn, \"{ChannelArn}\", false);\n b.p(\"MessageId\", () => input.MessageId, \"{MessageId}\", false);\n const query = map({\n [_o]: [, \"redact\"],\n });\n let body;\n body = JSON.stringify(take(input, {\n SubChannelId: [],\n }));\n b.m(\"POST\").h(headers).q(query).b(body);\n return b.build();\n};\nexport const se_SearchChannelsCommand = async (input, context) => {\n const b = rb(input, context);\n const headers = map({}, isSerializableHeaderValue, {\n \"content-type\": \"application/json\",\n [_xacb]: input[_CB],\n });\n b.bp(\"/channels\");\n const query = map({\n [_o]: [, \"search\"],\n [_mr]: [() => input.MaxResults !== void 0, () => input[_MR].toString()],\n [_nt]: [, input[_NT]],\n });\n let body;\n body = JSON.stringify(take(input, {\n Fields: (_) => _json(_),\n }));\n b.m(\"POST\").h(headers).q(query).b(body);\n return b.build();\n};\nexport const se_SendChannelMessageCommand = async (input, context) => {\n const b = rb(input, context);\n const headers = map({}, isSerializableHeaderValue, {\n \"content-type\": \"application/json\",\n [_xacb]: input[_CB],\n });\n b.bp(\"/channels/{ChannelArn}/messages\");\n b.p(\"ChannelArn\", () => input.ChannelArn, \"{ChannelArn}\", false);\n let body;\n body = JSON.stringify(take(input, {\n ClientRequestToken: [true, (_) => _ ?? generateIdempotencyToken()],\n Content: [],\n ContentType: [],\n MessageAttributes: (_) => _json(_),\n Metadata: [],\n Persistence: [],\n PushNotification: (_) => _json(_),\n SubChannelId: [],\n Target: (_) => _json(_),\n Type: [],\n }));\n b.m(\"POST\").h(headers).b(body);\n return b.build();\n};\nexport const se_TagResourceCommand = async (input, context) => {\n const b = rb(input, context);\n const headers = {\n \"content-type\": \"application/json\",\n };\n b.bp(\"/tags\");\n const query = map({\n [_o]: [, \"tag-resource\"],\n });\n let body;\n body = JSON.stringify(take(input, {\n ResourceARN: [],\n Tags: (_) => _json(_),\n }));\n b.m(\"POST\").h(headers).q(query).b(body);\n return b.build();\n};\nexport const se_UntagResourceCommand = async (input, context) => {\n const b = rb(input, context);\n const headers = {\n \"content-type\": \"application/json\",\n };\n b.bp(\"/tags\");\n const query = map({\n [_o]: [, \"untag-resource\"],\n });\n let body;\n body = JSON.stringify(take(input, {\n ResourceARN: [],\n TagKeys: (_) => _json(_),\n }));\n b.m(\"POST\").h(headers).q(query).b(body);\n return b.build();\n};\nexport const se_UpdateChannelCommand = async (input, context) => {\n const b = rb(input, context);\n const headers = map({}, isSerializableHeaderValue, {\n \"content-type\": \"application/json\",\n [_xacb]: input[_CB],\n });\n b.bp(\"/channels/{ChannelArn}\");\n b.p(\"ChannelArn\", () => input.ChannelArn, \"{ChannelArn}\", false);\n let body;\n body = JSON.stringify(take(input, {\n Metadata: [],\n Mode: [],\n Name: [],\n }));\n b.m(\"PUT\").h(headers).b(body);\n return b.build();\n};\nexport const se_UpdateChannelFlowCommand = async (input, context) => {\n const b = rb(input, context);\n const headers = {\n \"content-type\": \"application/json\",\n };\n b.bp(\"/channel-flows/{ChannelFlowArn}\");\n b.p(\"ChannelFlowArn\", () => input.ChannelFlowArn, \"{ChannelFlowArn}\", false);\n let body;\n body = JSON.stringify(take(input, {\n Name: [],\n Processors: (_) => _json(_),\n }));\n b.m(\"PUT\").h(headers).b(body);\n return b.build();\n};\nexport const se_UpdateChannelMessageCommand = async (input, context) => {\n const b = rb(input, context);\n const headers = map({}, isSerializableHeaderValue, {\n \"content-type\": \"application/json\",\n [_xacb]: input[_CB],\n });\n b.bp(\"/channels/{ChannelArn}/messages/{MessageId}\");\n b.p(\"ChannelArn\", () => input.ChannelArn, \"{ChannelArn}\", false);\n b.p(\"MessageId\", () => input.MessageId, \"{MessageId}\", false);\n let body;\n body = JSON.stringify(take(input, {\n Content: [],\n ContentType: [],\n Metadata: [],\n SubChannelId: [],\n }));\n b.m(\"PUT\").h(headers).b(body);\n return b.build();\n};\nexport const se_UpdateChannelReadMarkerCommand = async (input, context) => {\n const b = rb(input, context);\n const headers = map({}, isSerializableHeaderValue, {\n [_xacb]: input[_CB],\n });\n b.bp(\"/channels/{ChannelArn}/readMarker\");\n b.p(\"ChannelArn\", () => input.ChannelArn, \"{ChannelArn}\", false);\n let body;\n b.m(\"PUT\").h(headers).b(body);\n return b.build();\n};\nexport const de_AssociateChannelFlowCommand = async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n });\n await collectBody(output.body, context);\n return contents;\n};\nexport const de_BatchCreateChannelMembershipCommand = async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n });\n const data = __expectNonNull(__expectObject(await parseBody(output.body, context)), \"body\");\n const doc = take(data, {\n BatchChannelMemberships: _json,\n Errors: _json,\n });\n Object.assign(contents, doc);\n return contents;\n};\nexport const de_ChannelFlowCallbackCommand = async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n });\n const data = __expectNonNull(__expectObject(await parseBody(output.body, context)), \"body\");\n const doc = take(data, {\n CallbackId: __expectString,\n ChannelArn: __expectString,\n });\n Object.assign(contents, doc);\n return contents;\n};\nexport const de_CreateChannelCommand = async (output, context) => {\n if (output.statusCode !== 201 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n });\n const data = __expectNonNull(__expectObject(await parseBody(output.body, context)), \"body\");\n const doc = take(data, {\n ChannelArn: __expectString,\n });\n Object.assign(contents, doc);\n return contents;\n};\nexport const de_CreateChannelBanCommand = async (output, context) => {\n if (output.statusCode !== 201 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n });\n const data = __expectNonNull(__expectObject(await parseBody(output.body, context)), \"body\");\n const doc = take(data, {\n ChannelArn: __expectString,\n Member: _json,\n });\n Object.assign(contents, doc);\n return contents;\n};\nexport const de_CreateChannelFlowCommand = async (output, context) => {\n if (output.statusCode !== 201 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n });\n const data = __expectNonNull(__expectObject(await parseBody(output.body, context)), \"body\");\n const doc = take(data, {\n ChannelFlowArn: __expectString,\n });\n Object.assign(contents, doc);\n return contents;\n};\nexport const de_CreateChannelMembershipCommand = async (output, context) => {\n if (output.statusCode !== 201 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n });\n const data = __expectNonNull(__expectObject(await parseBody(output.body, context)), \"body\");\n const doc = take(data, {\n ChannelArn: __expectString,\n Member: _json,\n SubChannelId: __expectString,\n });\n Object.assign(contents, doc);\n return contents;\n};\nexport const de_CreateChannelModeratorCommand = async (output, context) => {\n if (output.statusCode !== 201 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n });\n const data = __expectNonNull(__expectObject(await parseBody(output.body, context)), \"body\");\n const doc = take(data, {\n ChannelArn: __expectString,\n ChannelModerator: _json,\n });\n Object.assign(contents, doc);\n return contents;\n};\nexport const de_DeleteChannelCommand = async (output, context) => {\n if (output.statusCode !== 204 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n });\n await collectBody(output.body, context);\n return contents;\n};\nexport const de_DeleteChannelBanCommand = async (output, context) => {\n if (output.statusCode !== 204 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n });\n await collectBody(output.body, context);\n return contents;\n};\nexport const de_DeleteChannelFlowCommand = async (output, context) => {\n if (output.statusCode !== 204 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n });\n await collectBody(output.body, context);\n return contents;\n};\nexport const de_DeleteChannelMembershipCommand = async (output, context) => {\n if (output.statusCode !== 204 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n });\n await collectBody(output.body, context);\n return contents;\n};\nexport const de_DeleteChannelMessageCommand = async (output, context) => {\n if (output.statusCode !== 204 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n });\n await collectBody(output.body, context);\n return contents;\n};\nexport const de_DeleteChannelModeratorCommand = async (output, context) => {\n if (output.statusCode !== 204 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n });\n await collectBody(output.body, context);\n return contents;\n};\nexport const de_DeleteMessagingStreamingConfigurationsCommand = async (output, context) => {\n if (output.statusCode !== 204 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n });\n await collectBody(output.body, context);\n return contents;\n};\nexport const de_DescribeChannelCommand = async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n });\n const data = __expectNonNull(__expectObject(await parseBody(output.body, context)), \"body\");\n const doc = take(data, {\n Channel: (_) => de_Channel(_, context),\n });\n Object.assign(contents, doc);\n return contents;\n};\nexport const de_DescribeChannelBanCommand = async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n });\n const data = __expectNonNull(__expectObject(await parseBody(output.body, context)), \"body\");\n const doc = take(data, {\n ChannelBan: (_) => de_ChannelBan(_, context),\n });\n Object.assign(contents, doc);\n return contents;\n};\nexport const de_DescribeChannelFlowCommand = async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n });\n const data = __expectNonNull(__expectObject(await parseBody(output.body, context)), \"body\");\n const doc = take(data, {\n ChannelFlow: (_) => de_ChannelFlow(_, context),\n });\n Object.assign(contents, doc);\n return contents;\n};\nexport const de_DescribeChannelMembershipCommand = async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n });\n const data = __expectNonNull(__expectObject(await parseBody(output.body, context)), \"body\");\n const doc = take(data, {\n ChannelMembership: (_) => de_ChannelMembership(_, context),\n });\n Object.assign(contents, doc);\n return contents;\n};\nexport const de_DescribeChannelMembershipForAppInstanceUserCommand = async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n });\n const data = __expectNonNull(__expectObject(await parseBody(output.body, context)), \"body\");\n const doc = take(data, {\n ChannelMembership: (_) => de_ChannelMembershipForAppInstanceUserSummary(_, context),\n });\n Object.assign(contents, doc);\n return contents;\n};\nexport const de_DescribeChannelModeratedByAppInstanceUserCommand = async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n });\n const data = __expectNonNull(__expectObject(await parseBody(output.body, context)), \"body\");\n const doc = take(data, {\n Channel: (_) => de_ChannelModeratedByAppInstanceUserSummary(_, context),\n });\n Object.assign(contents, doc);\n return contents;\n};\nexport const de_DescribeChannelModeratorCommand = async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n });\n const data = __expectNonNull(__expectObject(await parseBody(output.body, context)), \"body\");\n const doc = take(data, {\n ChannelModerator: (_) => de_ChannelModerator(_, context),\n });\n Object.assign(contents, doc);\n return contents;\n};\nexport const de_DisassociateChannelFlowCommand = async (output, context) => {\n if (output.statusCode !== 204 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n });\n await collectBody(output.body, context);\n return contents;\n};\nexport const de_GetChannelMembershipPreferencesCommand = async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n });\n const data = __expectNonNull(__expectObject(await parseBody(output.body, context)), \"body\");\n const doc = take(data, {\n ChannelArn: __expectString,\n Member: _json,\n Preferences: _json,\n });\n Object.assign(contents, doc);\n return contents;\n};\nexport const de_GetChannelMessageCommand = async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n });\n const data = __expectNonNull(__expectObject(await parseBody(output.body, context)), \"body\");\n const doc = take(data, {\n ChannelMessage: (_) => de_ChannelMessage(_, context),\n });\n Object.assign(contents, doc);\n return contents;\n};\nexport const de_GetChannelMessageStatusCommand = async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n });\n const data = __expectNonNull(__expectObject(await parseBody(output.body, context)), \"body\");\n const doc = take(data, {\n Status: _json,\n });\n Object.assign(contents, doc);\n return contents;\n};\nexport const de_GetMessagingSessionEndpointCommand = async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n });\n const data = __expectNonNull(__expectObject(await parseBody(output.body, context)), \"body\");\n const doc = take(data, {\n Endpoint: _json,\n });\n Object.assign(contents, doc);\n return contents;\n};\nexport const de_GetMessagingStreamingConfigurationsCommand = async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n });\n const data = __expectNonNull(__expectObject(await parseBody(output.body, context)), \"body\");\n const doc = take(data, {\n StreamingConfigurations: _json,\n });\n Object.assign(contents, doc);\n return contents;\n};\nexport const de_ListChannelBansCommand = async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n });\n const data = __expectNonNull(__expectObject(await parseBody(output.body, context)), \"body\");\n const doc = take(data, {\n ChannelArn: __expectString,\n ChannelBans: _json,\n NextToken: __expectString,\n });\n Object.assign(contents, doc);\n return contents;\n};\nexport const de_ListChannelFlowsCommand = async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n });\n const data = __expectNonNull(__expectObject(await parseBody(output.body, context)), \"body\");\n const doc = take(data, {\n ChannelFlows: _json,\n NextToken: __expectString,\n });\n Object.assign(contents, doc);\n return contents;\n};\nexport const de_ListChannelMembershipsCommand = async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n });\n const data = __expectNonNull(__expectObject(await parseBody(output.body, context)), \"body\");\n const doc = take(data, {\n ChannelArn: __expectString,\n ChannelMemberships: _json,\n NextToken: __expectString,\n });\n Object.assign(contents, doc);\n return contents;\n};\nexport const de_ListChannelMembershipsForAppInstanceUserCommand = async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n });\n const data = __expectNonNull(__expectObject(await parseBody(output.body, context)), \"body\");\n const doc = take(data, {\n ChannelMemberships: (_) => de_ChannelMembershipForAppInstanceUserSummaryList(_, context),\n NextToken: __expectString,\n });\n Object.assign(contents, doc);\n return contents;\n};\nexport const de_ListChannelMessagesCommand = async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n });\n const data = __expectNonNull(__expectObject(await parseBody(output.body, context)), \"body\");\n const doc = take(data, {\n ChannelArn: __expectString,\n ChannelMessages: (_) => de_ChannelMessageSummaryList(_, context),\n NextToken: __expectString,\n SubChannelId: __expectString,\n });\n Object.assign(contents, doc);\n return contents;\n};\nexport const de_ListChannelModeratorsCommand = async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n });\n const data = __expectNonNull(__expectObject(await parseBody(output.body, context)), \"body\");\n const doc = take(data, {\n ChannelArn: __expectString,\n ChannelModerators: _json,\n NextToken: __expectString,\n });\n Object.assign(contents, doc);\n return contents;\n};\nexport const de_ListChannelsCommand = async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n });\n const data = __expectNonNull(__expectObject(await parseBody(output.body, context)), \"body\");\n const doc = take(data, {\n Channels: (_) => de_ChannelSummaryList(_, context),\n NextToken: __expectString,\n });\n Object.assign(contents, doc);\n return contents;\n};\nexport const de_ListChannelsAssociatedWithChannelFlowCommand = async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n });\n const data = __expectNonNull(__expectObject(await parseBody(output.body, context)), \"body\");\n const doc = take(data, {\n Channels: _json,\n NextToken: __expectString,\n });\n Object.assign(contents, doc);\n return contents;\n};\nexport const de_ListChannelsModeratedByAppInstanceUserCommand = async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n });\n const data = __expectNonNull(__expectObject(await parseBody(output.body, context)), \"body\");\n const doc = take(data, {\n Channels: (_) => de_ChannelModeratedByAppInstanceUserSummaryList(_, context),\n NextToken: __expectString,\n });\n Object.assign(contents, doc);\n return contents;\n};\nexport const de_ListSubChannelsCommand = async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n });\n const data = __expectNonNull(__expectObject(await parseBody(output.body, context)), \"body\");\n const doc = take(data, {\n ChannelArn: __expectString,\n NextToken: __expectString,\n SubChannels: _json,\n });\n Object.assign(contents, doc);\n return contents;\n};\nexport const de_ListTagsForResourceCommand = async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n });\n const data = __expectNonNull(__expectObject(await parseBody(output.body, context)), \"body\");\n const doc = take(data, {\n Tags: _json,\n });\n Object.assign(contents, doc);\n return contents;\n};\nexport const de_PutChannelExpirationSettingsCommand = async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n });\n const data = __expectNonNull(__expectObject(await parseBody(output.body, context)), \"body\");\n const doc = take(data, {\n ChannelArn: __expectString,\n ExpirationSettings: _json,\n });\n Object.assign(contents, doc);\n return contents;\n};\nexport const de_PutChannelMembershipPreferencesCommand = async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n });\n const data = __expectNonNull(__expectObject(await parseBody(output.body, context)), \"body\");\n const doc = take(data, {\n ChannelArn: __expectString,\n Member: _json,\n Preferences: _json,\n });\n Object.assign(contents, doc);\n return contents;\n};\nexport const de_PutMessagingStreamingConfigurationsCommand = async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n });\n const data = __expectNonNull(__expectObject(await parseBody(output.body, context)), \"body\");\n const doc = take(data, {\n StreamingConfigurations: _json,\n });\n Object.assign(contents, doc);\n return contents;\n};\nexport const de_RedactChannelMessageCommand = async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n });\n const data = __expectNonNull(__expectObject(await parseBody(output.body, context)), \"body\");\n const doc = take(data, {\n ChannelArn: __expectString,\n MessageId: __expectString,\n SubChannelId: __expectString,\n });\n Object.assign(contents, doc);\n return contents;\n};\nexport const de_SearchChannelsCommand = async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n });\n const data = __expectNonNull(__expectObject(await parseBody(output.body, context)), \"body\");\n const doc = take(data, {\n Channels: (_) => de_ChannelSummaryList(_, context),\n NextToken: __expectString,\n });\n Object.assign(contents, doc);\n return contents;\n};\nexport const de_SendChannelMessageCommand = async (output, context) => {\n if (output.statusCode !== 201 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n });\n const data = __expectNonNull(__expectObject(await parseBody(output.body, context)), \"body\");\n const doc = take(data, {\n ChannelArn: __expectString,\n MessageId: __expectString,\n Status: _json,\n SubChannelId: __expectString,\n });\n Object.assign(contents, doc);\n return contents;\n};\nexport const de_TagResourceCommand = async (output, context) => {\n if (output.statusCode !== 204 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n });\n await collectBody(output.body, context);\n return contents;\n};\nexport const de_UntagResourceCommand = async (output, context) => {\n if (output.statusCode !== 204 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n });\n await collectBody(output.body, context);\n return contents;\n};\nexport const de_UpdateChannelCommand = async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n });\n const data = __expectNonNull(__expectObject(await parseBody(output.body, context)), \"body\");\n const doc = take(data, {\n ChannelArn: __expectString,\n });\n Object.assign(contents, doc);\n return contents;\n};\nexport const de_UpdateChannelFlowCommand = async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n });\n const data = __expectNonNull(__expectObject(await parseBody(output.body, context)), \"body\");\n const doc = take(data, {\n ChannelFlowArn: __expectString,\n });\n Object.assign(contents, doc);\n return contents;\n};\nexport const de_UpdateChannelMessageCommand = async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n });\n const data = __expectNonNull(__expectObject(await parseBody(output.body, context)), \"body\");\n const doc = take(data, {\n ChannelArn: __expectString,\n MessageId: __expectString,\n Status: _json,\n SubChannelId: __expectString,\n });\n Object.assign(contents, doc);\n return contents;\n};\nexport const de_UpdateChannelReadMarkerCommand = async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n });\n const data = __expectNonNull(__expectObject(await parseBody(output.body, context)), \"body\");\n const doc = take(data, {\n ChannelArn: __expectString,\n });\n Object.assign(contents, doc);\n return contents;\n};\nconst de_CommandError = async (output, context) => {\n const parsedOutput = {\n ...output,\n body: await parseErrorBody(output.body, context),\n };\n const errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"BadRequestException\":\n case \"com.amazonaws.chimesdkmessaging#BadRequestException\":\n throw await de_BadRequestExceptionRes(parsedOutput, context);\n case \"ConflictException\":\n case \"com.amazonaws.chimesdkmessaging#ConflictException\":\n throw await de_ConflictExceptionRes(parsedOutput, context);\n case \"ForbiddenException\":\n case \"com.amazonaws.chimesdkmessaging#ForbiddenException\":\n throw await de_ForbiddenExceptionRes(parsedOutput, context);\n case \"NotFoundException\":\n case \"com.amazonaws.chimesdkmessaging#NotFoundException\":\n throw await de_NotFoundExceptionRes(parsedOutput, context);\n case \"ServiceFailureException\":\n case \"com.amazonaws.chimesdkmessaging#ServiceFailureException\":\n throw await de_ServiceFailureExceptionRes(parsedOutput, context);\n case \"ServiceUnavailableException\":\n case \"com.amazonaws.chimesdkmessaging#ServiceUnavailableException\":\n throw await de_ServiceUnavailableExceptionRes(parsedOutput, context);\n case \"ThrottledClientException\":\n case \"com.amazonaws.chimesdkmessaging#ThrottledClientException\":\n throw await de_ThrottledClientExceptionRes(parsedOutput, context);\n case \"UnauthorizedClientException\":\n case \"com.amazonaws.chimesdkmessaging#UnauthorizedClientException\":\n throw await de_UnauthorizedClientExceptionRes(parsedOutput, context);\n case \"ResourceLimitExceededException\":\n case \"com.amazonaws.chimesdkmessaging#ResourceLimitExceededException\":\n throw await de_ResourceLimitExceededExceptionRes(parsedOutput, context);\n default:\n const parsedBody = parsedOutput.body;\n return throwDefaultError({\n output,\n parsedBody,\n errorCode,\n });\n }\n};\nconst throwDefaultError = withBaseException(__BaseException);\nconst de_BadRequestExceptionRes = async (parsedOutput, context) => {\n const contents = map({});\n const data = parsedOutput.body;\n const doc = take(data, {\n Code: __expectString,\n Message: __expectString,\n });\n Object.assign(contents, doc);\n const exception = new BadRequestException({\n $metadata: deserializeMetadata(parsedOutput),\n ...contents,\n });\n return __decorateServiceException(exception, parsedOutput.body);\n};\nconst de_ConflictExceptionRes = async (parsedOutput, context) => {\n const contents = map({});\n const data = parsedOutput.body;\n const doc = take(data, {\n Code: __expectString,\n Message: __expectString,\n });\n Object.assign(contents, doc);\n const exception = new ConflictException({\n $metadata: deserializeMetadata(parsedOutput),\n ...contents,\n });\n return __decorateServiceException(exception, parsedOutput.body);\n};\nconst de_ForbiddenExceptionRes = async (parsedOutput, context) => {\n const contents = map({});\n const data = parsedOutput.body;\n const doc = take(data, {\n Code: __expectString,\n Message: __expectString,\n });\n Object.assign(contents, doc);\n const exception = new ForbiddenException({\n $metadata: deserializeMetadata(parsedOutput),\n ...contents,\n });\n return __decorateServiceException(exception, parsedOutput.body);\n};\nconst de_NotFoundExceptionRes = async (parsedOutput, context) => {\n const contents = map({});\n const data = parsedOutput.body;\n const doc = take(data, {\n Code: __expectString,\n Message: __expectString,\n });\n Object.assign(contents, doc);\n const exception = new NotFoundException({\n $metadata: deserializeMetadata(parsedOutput),\n ...contents,\n });\n return __decorateServiceException(exception, parsedOutput.body);\n};\nconst de_ResourceLimitExceededExceptionRes = async (parsedOutput, context) => {\n const contents = map({});\n const data = parsedOutput.body;\n const doc = take(data, {\n Code: __expectString,\n Message: __expectString,\n });\n Object.assign(contents, doc);\n const exception = new ResourceLimitExceededException({\n $metadata: deserializeMetadata(parsedOutput),\n ...contents,\n });\n return __decorateServiceException(exception, parsedOutput.body);\n};\nconst de_ServiceFailureExceptionRes = async (parsedOutput, context) => {\n const contents = map({});\n const data = parsedOutput.body;\n const doc = take(data, {\n Code: __expectString,\n Message: __expectString,\n });\n Object.assign(contents, doc);\n const exception = new ServiceFailureException({\n $metadata: deserializeMetadata(parsedOutput),\n ...contents,\n });\n return __decorateServiceException(exception, parsedOutput.body);\n};\nconst de_ServiceUnavailableExceptionRes = async (parsedOutput, context) => {\n const contents = map({});\n const data = parsedOutput.body;\n const doc = take(data, {\n Code: __expectString,\n Message: __expectString,\n });\n Object.assign(contents, doc);\n const exception = new ServiceUnavailableException({\n $metadata: deserializeMetadata(parsedOutput),\n ...contents,\n });\n return __decorateServiceException(exception, parsedOutput.body);\n};\nconst de_ThrottledClientExceptionRes = async (parsedOutput, context) => {\n const contents = map({});\n const data = parsedOutput.body;\n const doc = take(data, {\n Code: __expectString,\n Message: __expectString,\n });\n Object.assign(contents, doc);\n const exception = new ThrottledClientException({\n $metadata: deserializeMetadata(parsedOutput),\n ...contents,\n });\n return __decorateServiceException(exception, parsedOutput.body);\n};\nconst de_UnauthorizedClientExceptionRes = async (parsedOutput, context) => {\n const contents = map({});\n const data = parsedOutput.body;\n const doc = take(data, {\n Code: __expectString,\n Message: __expectString,\n });\n Object.assign(contents, doc);\n const exception = new UnauthorizedClientException({\n $metadata: deserializeMetadata(parsedOutput),\n ...contents,\n });\n return __decorateServiceException(exception, parsedOutput.body);\n};\nconst de_AppInstanceUserMembershipSummary = (output, context) => {\n return take(output, {\n ReadMarkerTimestamp: (_) => __expectNonNull(__parseEpochTimestamp(__expectNumber(_))),\n SubChannelId: __expectString,\n Type: __expectString,\n });\n};\nconst de_Channel = (output, context) => {\n return take(output, {\n ChannelArn: __expectString,\n ChannelFlowArn: __expectString,\n CreatedBy: _json,\n CreatedTimestamp: (_) => __expectNonNull(__parseEpochTimestamp(__expectNumber(_))),\n ElasticChannelConfiguration: _json,\n ExpirationSettings: _json,\n LastMessageTimestamp: (_) => __expectNonNull(__parseEpochTimestamp(__expectNumber(_))),\n LastUpdatedTimestamp: (_) => __expectNonNull(__parseEpochTimestamp(__expectNumber(_))),\n Metadata: __expectString,\n Mode: __expectString,\n Name: __expectString,\n Privacy: __expectString,\n });\n};\nconst de_ChannelBan = (output, context) => {\n return take(output, {\n ChannelArn: __expectString,\n CreatedBy: _json,\n CreatedTimestamp: (_) => __expectNonNull(__parseEpochTimestamp(__expectNumber(_))),\n Member: _json,\n });\n};\nconst de_ChannelFlow = (output, context) => {\n return take(output, {\n ChannelFlowArn: __expectString,\n CreatedTimestamp: (_) => __expectNonNull(__parseEpochTimestamp(__expectNumber(_))),\n LastUpdatedTimestamp: (_) => __expectNonNull(__parseEpochTimestamp(__expectNumber(_))),\n Name: __expectString,\n Processors: _json,\n });\n};\nconst de_ChannelMembership = (output, context) => {\n return take(output, {\n ChannelArn: __expectString,\n CreatedTimestamp: (_) => __expectNonNull(__parseEpochTimestamp(__expectNumber(_))),\n InvitedBy: _json,\n LastUpdatedTimestamp: (_) => __expectNonNull(__parseEpochTimestamp(__expectNumber(_))),\n Member: _json,\n SubChannelId: __expectString,\n Type: __expectString,\n });\n};\nconst de_ChannelMembershipForAppInstanceUserSummary = (output, context) => {\n return take(output, {\n AppInstanceUserMembershipSummary: (_) => de_AppInstanceUserMembershipSummary(_, context),\n ChannelSummary: (_) => de_ChannelSummary(_, context),\n });\n};\nconst de_ChannelMembershipForAppInstanceUserSummaryList = (output, context) => {\n const retVal = (output || [])\n .filter((e) => e != null)\n .map((entry) => {\n return de_ChannelMembershipForAppInstanceUserSummary(entry, context);\n });\n return retVal;\n};\nconst de_ChannelMessage = (output, context) => {\n return take(output, {\n ChannelArn: __expectString,\n Content: __expectString,\n ContentType: __expectString,\n CreatedTimestamp: (_) => __expectNonNull(__parseEpochTimestamp(__expectNumber(_))),\n LastEditedTimestamp: (_) => __expectNonNull(__parseEpochTimestamp(__expectNumber(_))),\n LastUpdatedTimestamp: (_) => __expectNonNull(__parseEpochTimestamp(__expectNumber(_))),\n MessageAttributes: _json,\n MessageId: __expectString,\n Metadata: __expectString,\n Persistence: __expectString,\n Redacted: __expectBoolean,\n Sender: _json,\n Status: _json,\n SubChannelId: __expectString,\n Target: _json,\n Type: __expectString,\n });\n};\nconst de_ChannelMessageSummary = (output, context) => {\n return take(output, {\n Content: __expectString,\n ContentType: __expectString,\n CreatedTimestamp: (_) => __expectNonNull(__parseEpochTimestamp(__expectNumber(_))),\n LastEditedTimestamp: (_) => __expectNonNull(__parseEpochTimestamp(__expectNumber(_))),\n LastUpdatedTimestamp: (_) => __expectNonNull(__parseEpochTimestamp(__expectNumber(_))),\n MessageAttributes: _json,\n MessageId: __expectString,\n Metadata: __expectString,\n Redacted: __expectBoolean,\n Sender: _json,\n Status: _json,\n Target: _json,\n Type: __expectString,\n });\n};\nconst de_ChannelMessageSummaryList = (output, context) => {\n const retVal = (output || [])\n .filter((e) => e != null)\n .map((entry) => {\n return de_ChannelMessageSummary(entry, context);\n });\n return retVal;\n};\nconst de_ChannelModeratedByAppInstanceUserSummary = (output, context) => {\n return take(output, {\n ChannelSummary: (_) => de_ChannelSummary(_, context),\n });\n};\nconst de_ChannelModeratedByAppInstanceUserSummaryList = (output, context) => {\n const retVal = (output || [])\n .filter((e) => e != null)\n .map((entry) => {\n return de_ChannelModeratedByAppInstanceUserSummary(entry, context);\n });\n return retVal;\n};\nconst de_ChannelModerator = (output, context) => {\n return take(output, {\n ChannelArn: __expectString,\n CreatedBy: _json,\n CreatedTimestamp: (_) => __expectNonNull(__parseEpochTimestamp(__expectNumber(_))),\n Moderator: _json,\n });\n};\nconst de_ChannelSummary = (output, context) => {\n return take(output, {\n ChannelArn: __expectString,\n LastMessageTimestamp: (_) => __expectNonNull(__parseEpochTimestamp(__expectNumber(_))),\n Metadata: __expectString,\n Mode: __expectString,\n Name: __expectString,\n Privacy: __expectString,\n });\n};\nconst de_ChannelSummaryList = (output, context) => {\n const retVal = (output || [])\n .filter((e) => e != null)\n .map((entry) => {\n return de_ChannelSummary(entry, context);\n });\n return retVal;\n};\nconst deserializeMetadata = (output) => ({\n httpStatusCode: output.statusCode,\n requestId: output.headers[\"x-amzn-requestid\"] ?? output.headers[\"x-amzn-request-id\"] ?? output.headers[\"x-amz-request-id\"],\n extendedRequestId: output.headers[\"x-amz-id-2\"],\n cfId: output.headers[\"x-amz-cf-id\"],\n});\nconst collectBodyString = (streamBody, context) => collectBody(streamBody, context).then((body) => context.utf8Encoder(body));\nconst _AIA = \"AppInstanceArn\";\nconst _AIUA = \"AppInstanceUserArn\";\nconst _CB = \"ChimeBearer\";\nconst _CFA = \"ChannelFlowArn\";\nconst _MR = \"MaxResults\";\nconst _NA = \"NotAfter\";\nconst _NB = \"NotBefore\";\nconst _NT = \"NextToken\";\nconst _P = \"Privacy\";\nconst _RARN = \"ResourceARN\";\nconst _SCI = \"SubChannelId\";\nconst _SO = \"SortOrder\";\nconst _T = \"Type\";\nconst _a = \"arn\";\nconst _aia = \"app-instance-arn\";\nconst _aiua = \"app-instance-user-arn\";\nconst _cfa = \"channel-flow-arn\";\nconst _mr = \"max-results\";\nconst _na = \"not-after\";\nconst _nb = \"not-before\";\nconst _nt = \"next-token\";\nconst _o = \"operation\";\nconst _p = \"privacy\";\nconst _s = \"scope\";\nconst _sci = \"sub-channel-id\";\nconst _so = \"sort-order\";\nconst _t = \"type\";\nconst _xacb = \"x-amz-chime-bearer\";\n","import { getEndpointPlugin } from \"@smithy/middleware-endpoint\";\nimport { getSerdePlugin } from \"@smithy/middleware-serde\";\nimport { Command as $Command } from \"@smithy/smithy-client\";\nimport { commonParams } from \"../endpoint/EndpointParameters\";\nimport { de_AssociateChannelFlowCommand, se_AssociateChannelFlowCommand } from \"../protocols/Aws_restJson1\";\nexport { $Command };\nexport class AssociateChannelFlowCommand extends $Command\n .classBuilder()\n .ep(commonParams)\n .m(function (Command, cs, config, o) {\n return [\n getSerdePlugin(config, this.serialize, this.deserialize),\n getEndpointPlugin(config, Command.getEndpointParameterInstructions()),\n ];\n})\n .s(\"ChimeMessagingService\", \"AssociateChannelFlow\", {})\n .n(\"ChimeSDKMessagingClient\", \"AssociateChannelFlowCommand\")\n .f(void 0, void 0)\n .ser(se_AssociateChannelFlowCommand)\n .de(de_AssociateChannelFlowCommand)\n .build() {\n}\n","import { getEndpointPlugin } from \"@smithy/middleware-endpoint\";\nimport { getSerdePlugin } from \"@smithy/middleware-serde\";\nimport { Command as $Command } from \"@smithy/smithy-client\";\nimport { commonParams } from \"../endpoint/EndpointParameters\";\nimport { BatchCreateChannelMembershipResponseFilterSensitiveLog, } from \"../models/models_0\";\nimport { de_BatchCreateChannelMembershipCommand, se_BatchCreateChannelMembershipCommand, } from \"../protocols/Aws_restJson1\";\nexport { $Command };\nexport class BatchCreateChannelMembershipCommand extends $Command\n .classBuilder()\n .ep(commonParams)\n .m(function (Command, cs, config, o) {\n return [\n getSerdePlugin(config, this.serialize, this.deserialize),\n getEndpointPlugin(config, Command.getEndpointParameterInstructions()),\n ];\n})\n .s(\"ChimeMessagingService\", \"BatchCreateChannelMembership\", {})\n .n(\"ChimeSDKMessagingClient\", \"BatchCreateChannelMembershipCommand\")\n .f(void 0, BatchCreateChannelMembershipResponseFilterSensitiveLog)\n .ser(se_BatchCreateChannelMembershipCommand)\n .de(de_BatchCreateChannelMembershipCommand)\n .build() {\n}\n","import { getEndpointPlugin } from \"@smithy/middleware-endpoint\";\nimport { getSerdePlugin } from \"@smithy/middleware-serde\";\nimport { Command as $Command } from \"@smithy/smithy-client\";\nimport { commonParams } from \"../endpoint/EndpointParameters\";\nimport { ChannelFlowCallbackRequestFilterSensitiveLog, } from \"../models/models_0\";\nimport { de_ChannelFlowCallbackCommand, se_ChannelFlowCallbackCommand } from \"../protocols/Aws_restJson1\";\nexport { $Command };\nexport class ChannelFlowCallbackCommand extends $Command\n .classBuilder()\n .ep(commonParams)\n .m(function (Command, cs, config, o) {\n return [\n getSerdePlugin(config, this.serialize, this.deserialize),\n getEndpointPlugin(config, Command.getEndpointParameterInstructions()),\n ];\n})\n .s(\"ChimeMessagingService\", \"ChannelFlowCallback\", {})\n .n(\"ChimeSDKMessagingClient\", \"ChannelFlowCallbackCommand\")\n .f(ChannelFlowCallbackRequestFilterSensitiveLog, void 0)\n .ser(se_ChannelFlowCallbackCommand)\n .de(de_ChannelFlowCallbackCommand)\n .build() {\n}\n","import { getEndpointPlugin } from \"@smithy/middleware-endpoint\";\nimport { getSerdePlugin } from \"@smithy/middleware-serde\";\nimport { Command as $Command } from \"@smithy/smithy-client\";\nimport { commonParams } from \"../endpoint/EndpointParameters\";\nimport { CreateChannelBanResponseFilterSensitiveLog, } from \"../models/models_0\";\nimport { de_CreateChannelBanCommand, se_CreateChannelBanCommand } from \"../protocols/Aws_restJson1\";\nexport { $Command };\nexport class CreateChannelBanCommand extends $Command\n .classBuilder()\n .ep(commonParams)\n .m(function (Command, cs, config, o) {\n return [\n getSerdePlugin(config, this.serialize, this.deserialize),\n getEndpointPlugin(config, Command.getEndpointParameterInstructions()),\n ];\n})\n .s(\"ChimeMessagingService\", \"CreateChannelBan\", {})\n .n(\"ChimeSDKMessagingClient\", \"CreateChannelBanCommand\")\n .f(void 0, CreateChannelBanResponseFilterSensitiveLog)\n .ser(se_CreateChannelBanCommand)\n .de(de_CreateChannelBanCommand)\n .build() {\n}\n","import { getEndpointPlugin } from \"@smithy/middleware-endpoint\";\nimport { getSerdePlugin } from \"@smithy/middleware-serde\";\nimport { Command as $Command } from \"@smithy/smithy-client\";\nimport { commonParams } from \"../endpoint/EndpointParameters\";\nimport { CreateChannelRequestFilterSensitiveLog, } from \"../models/models_0\";\nimport { de_CreateChannelCommand, se_CreateChannelCommand } from \"../protocols/Aws_restJson1\";\nexport { $Command };\nexport class CreateChannelCommand extends $Command\n .classBuilder()\n .ep(commonParams)\n .m(function (Command, cs, config, o) {\n return [\n getSerdePlugin(config, this.serialize, this.deserialize),\n getEndpointPlugin(config, Command.getEndpointParameterInstructions()),\n ];\n})\n .s(\"ChimeMessagingService\", \"CreateChannel\", {})\n .n(\"ChimeSDKMessagingClient\", \"CreateChannelCommand\")\n .f(CreateChannelRequestFilterSensitiveLog, void 0)\n .ser(se_CreateChannelCommand)\n .de(de_CreateChannelCommand)\n .build() {\n}\n","import { getEndpointPlugin } from \"@smithy/middleware-endpoint\";\nimport { getSerdePlugin } from \"@smithy/middleware-serde\";\nimport { Command as $Command } from \"@smithy/smithy-client\";\nimport { commonParams } from \"../endpoint/EndpointParameters\";\nimport { CreateChannelFlowRequestFilterSensitiveLog, } from \"../models/models_0\";\nimport { de_CreateChannelFlowCommand, se_CreateChannelFlowCommand } from \"../protocols/Aws_restJson1\";\nexport { $Command };\nexport class CreateChannelFlowCommand extends $Command\n .classBuilder()\n .ep(commonParams)\n .m(function (Command, cs, config, o) {\n return [\n getSerdePlugin(config, this.serialize, this.deserialize),\n getEndpointPlugin(config, Command.getEndpointParameterInstructions()),\n ];\n})\n .s(\"ChimeMessagingService\", \"CreateChannelFlow\", {})\n .n(\"ChimeSDKMessagingClient\", \"CreateChannelFlowCommand\")\n .f(CreateChannelFlowRequestFilterSensitiveLog, void 0)\n .ser(se_CreateChannelFlowCommand)\n .de(de_CreateChannelFlowCommand)\n .build() {\n}\n","import { getEndpointPlugin } from \"@smithy/middleware-endpoint\";\nimport { getSerdePlugin } from \"@smithy/middleware-serde\";\nimport { Command as $Command } from \"@smithy/smithy-client\";\nimport { commonParams } from \"../endpoint/EndpointParameters\";\nimport { CreateChannelMembershipResponseFilterSensitiveLog, } from \"../models/models_0\";\nimport { de_CreateChannelMembershipCommand, se_CreateChannelMembershipCommand } from \"../protocols/Aws_restJson1\";\nexport { $Command };\nexport class CreateChannelMembershipCommand extends $Command\n .classBuilder()\n .ep(commonParams)\n .m(function (Command, cs, config, o) {\n return [\n getSerdePlugin(config, this.serialize, this.deserialize),\n getEndpointPlugin(config, Command.getEndpointParameterInstructions()),\n ];\n})\n .s(\"ChimeMessagingService\", \"CreateChannelMembership\", {})\n .n(\"ChimeSDKMessagingClient\", \"CreateChannelMembershipCommand\")\n .f(void 0, CreateChannelMembershipResponseFilterSensitiveLog)\n .ser(se_CreateChannelMembershipCommand)\n .de(de_CreateChannelMembershipCommand)\n .build() {\n}\n","import { getEndpointPlugin } from \"@smithy/middleware-endpoint\";\nimport { getSerdePlugin } from \"@smithy/middleware-serde\";\nimport { Command as $Command } from \"@smithy/smithy-client\";\nimport { commonParams } from \"../endpoint/EndpointParameters\";\nimport { CreateChannelModeratorResponseFilterSensitiveLog, } from \"../models/models_0\";\nimport { de_CreateChannelModeratorCommand, se_CreateChannelModeratorCommand } from \"../protocols/Aws_restJson1\";\nexport { $Command };\nexport class CreateChannelModeratorCommand extends $Command\n .classBuilder()\n .ep(commonParams)\n .m(function (Command, cs, config, o) {\n return [\n getSerdePlugin(config, this.serialize, this.deserialize),\n getEndpointPlugin(config, Command.getEndpointParameterInstructions()),\n ];\n})\n .s(\"ChimeMessagingService\", \"CreateChannelModerator\", {})\n .n(\"ChimeSDKMessagingClient\", \"CreateChannelModeratorCommand\")\n .f(void 0, CreateChannelModeratorResponseFilterSensitiveLog)\n .ser(se_CreateChannelModeratorCommand)\n .de(de_CreateChannelModeratorCommand)\n .build() {\n}\n","import { getEndpointPlugin } from \"@smithy/middleware-endpoint\";\nimport { getSerdePlugin } from \"@smithy/middleware-serde\";\nimport { Command as $Command } from \"@smithy/smithy-client\";\nimport { commonParams } from \"../endpoint/EndpointParameters\";\nimport { de_DeleteChannelBanCommand, se_DeleteChannelBanCommand } from \"../protocols/Aws_restJson1\";\nexport { $Command };\nexport class DeleteChannelBanCommand extends $Command\n .classBuilder()\n .ep(commonParams)\n .m(function (Command, cs, config, o) {\n return [\n getSerdePlugin(config, this.serialize, this.deserialize),\n getEndpointPlugin(config, Command.getEndpointParameterInstructions()),\n ];\n})\n .s(\"ChimeMessagingService\", \"DeleteChannelBan\", {})\n .n(\"ChimeSDKMessagingClient\", \"DeleteChannelBanCommand\")\n .f(void 0, void 0)\n .ser(se_DeleteChannelBanCommand)\n .de(de_DeleteChannelBanCommand)\n .build() {\n}\n","import { getEndpointPlugin } from \"@smithy/middleware-endpoint\";\nimport { getSerdePlugin } from \"@smithy/middleware-serde\";\nimport { Command as $Command } from \"@smithy/smithy-client\";\nimport { commonParams } from \"../endpoint/EndpointParameters\";\nimport { de_DeleteChannelCommand, se_DeleteChannelCommand } from \"../protocols/Aws_restJson1\";\nexport { $Command };\nexport class DeleteChannelCommand extends $Command\n .classBuilder()\n .ep(commonParams)\n .m(function (Command, cs, config, o) {\n return [\n getSerdePlugin(config, this.serialize, this.deserialize),\n getEndpointPlugin(config, Command.getEndpointParameterInstructions()),\n ];\n})\n .s(\"ChimeMessagingService\", \"DeleteChannel\", {})\n .n(\"ChimeSDKMessagingClient\", \"DeleteChannelCommand\")\n .f(void 0, void 0)\n .ser(se_DeleteChannelCommand)\n .de(de_DeleteChannelCommand)\n .build() {\n}\n","import { getEndpointPlugin } from \"@smithy/middleware-endpoint\";\nimport { getSerdePlugin } from \"@smithy/middleware-serde\";\nimport { Command as $Command } from \"@smithy/smithy-client\";\nimport { commonParams } from \"../endpoint/EndpointParameters\";\nimport { de_DeleteChannelFlowCommand, se_DeleteChannelFlowCommand } from \"../protocols/Aws_restJson1\";\nexport { $Command };\nexport class DeleteChannelFlowCommand extends $Command\n .classBuilder()\n .ep(commonParams)\n .m(function (Command, cs, config, o) {\n return [\n getSerdePlugin(config, this.serialize, this.deserialize),\n getEndpointPlugin(config, Command.getEndpointParameterInstructions()),\n ];\n})\n .s(\"ChimeMessagingService\", \"DeleteChannelFlow\", {})\n .n(\"ChimeSDKMessagingClient\", \"DeleteChannelFlowCommand\")\n .f(void 0, void 0)\n .ser(se_DeleteChannelFlowCommand)\n .de(de_DeleteChannelFlowCommand)\n .build() {\n}\n","import { getEndpointPlugin } from \"@smithy/middleware-endpoint\";\nimport { getSerdePlugin } from \"@smithy/middleware-serde\";\nimport { Command as $Command } from \"@smithy/smithy-client\";\nimport { commonParams } from \"../endpoint/EndpointParameters\";\nimport { de_DeleteChannelMembershipCommand, se_DeleteChannelMembershipCommand } from \"../protocols/Aws_restJson1\";\nexport { $Command };\nexport class DeleteChannelMembershipCommand extends $Command\n .classBuilder()\n .ep(commonParams)\n .m(function (Command, cs, config, o) {\n return [\n getSerdePlugin(config, this.serialize, this.deserialize),\n getEndpointPlugin(config, Command.getEndpointParameterInstructions()),\n ];\n})\n .s(\"ChimeMessagingService\", \"DeleteChannelMembership\", {})\n .n(\"ChimeSDKMessagingClient\", \"DeleteChannelMembershipCommand\")\n .f(void 0, void 0)\n .ser(se_DeleteChannelMembershipCommand)\n .de(de_DeleteChannelMembershipCommand)\n .build() {\n}\n","import { getEndpointPlugin } from \"@smithy/middleware-endpoint\";\nimport { getSerdePlugin } from \"@smithy/middleware-serde\";\nimport { Command as $Command } from \"@smithy/smithy-client\";\nimport { commonParams } from \"../endpoint/EndpointParameters\";\nimport { de_DeleteChannelMessageCommand, se_DeleteChannelMessageCommand } from \"../protocols/Aws_restJson1\";\nexport { $Command };\nexport class DeleteChannelMessageCommand extends $Command\n .classBuilder()\n .ep(commonParams)\n .m(function (Command, cs, config, o) {\n return [\n getSerdePlugin(config, this.serialize, this.deserialize),\n getEndpointPlugin(config, Command.getEndpointParameterInstructions()),\n ];\n})\n .s(\"ChimeMessagingService\", \"DeleteChannelMessage\", {})\n .n(\"ChimeSDKMessagingClient\", \"DeleteChannelMessageCommand\")\n .f(void 0, void 0)\n .ser(se_DeleteChannelMessageCommand)\n .de(de_DeleteChannelMessageCommand)\n .build() {\n}\n","import { getEndpointPlugin } from \"@smithy/middleware-endpoint\";\nimport { getSerdePlugin } from \"@smithy/middleware-serde\";\nimport { Command as $Command } from \"@smithy/smithy-client\";\nimport { commonParams } from \"../endpoint/EndpointParameters\";\nimport { de_DeleteChannelModeratorCommand, se_DeleteChannelModeratorCommand } from \"../protocols/Aws_restJson1\";\nexport { $Command };\nexport class DeleteChannelModeratorCommand extends $Command\n .classBuilder()\n .ep(commonParams)\n .m(function (Command, cs, config, o) {\n return [\n getSerdePlugin(config, this.serialize, this.deserialize),\n getEndpointPlugin(config, Command.getEndpointParameterInstructions()),\n ];\n})\n .s(\"ChimeMessagingService\", \"DeleteChannelModerator\", {})\n .n(\"ChimeSDKMessagingClient\", \"DeleteChannelModeratorCommand\")\n .f(void 0, void 0)\n .ser(se_DeleteChannelModeratorCommand)\n .de(de_DeleteChannelModeratorCommand)\n .build() {\n}\n","import { getEndpointPlugin } from \"@smithy/middleware-endpoint\";\nimport { getSerdePlugin } from \"@smithy/middleware-serde\";\nimport { Command as $Command } from \"@smithy/smithy-client\";\nimport { commonParams } from \"../endpoint/EndpointParameters\";\nimport { de_DeleteMessagingStreamingConfigurationsCommand, se_DeleteMessagingStreamingConfigurationsCommand, } from \"../protocols/Aws_restJson1\";\nexport { $Command };\nexport class DeleteMessagingStreamingConfigurationsCommand extends $Command\n .classBuilder()\n .ep(commonParams)\n .m(function (Command, cs, config, o) {\n return [\n getSerdePlugin(config, this.serialize, this.deserialize),\n getEndpointPlugin(config, Command.getEndpointParameterInstructions()),\n ];\n})\n .s(\"ChimeMessagingService\", \"DeleteMessagingStreamingConfigurations\", {})\n .n(\"ChimeSDKMessagingClient\", \"DeleteMessagingStreamingConfigurationsCommand\")\n .f(void 0, void 0)\n .ser(se_DeleteMessagingStreamingConfigurationsCommand)\n .de(de_DeleteMessagingStreamingConfigurationsCommand)\n .build() {\n}\n","import { getEndpointPlugin } from \"@smithy/middleware-endpoint\";\nimport { getSerdePlugin } from \"@smithy/middleware-serde\";\nimport { Command as $Command } from \"@smithy/smithy-client\";\nimport { commonParams } from \"../endpoint/EndpointParameters\";\nimport { DescribeChannelBanResponseFilterSensitiveLog, } from \"../models/models_0\";\nimport { de_DescribeChannelBanCommand, se_DescribeChannelBanCommand } from \"../protocols/Aws_restJson1\";\nexport { $Command };\nexport class DescribeChannelBanCommand extends $Command\n .classBuilder()\n .ep(commonParams)\n .m(function (Command, cs, config, o) {\n return [\n getSerdePlugin(config, this.serialize, this.deserialize),\n getEndpointPlugin(config, Command.getEndpointParameterInstructions()),\n ];\n})\n .s(\"ChimeMessagingService\", \"DescribeChannelBan\", {})\n .n(\"ChimeSDKMessagingClient\", \"DescribeChannelBanCommand\")\n .f(void 0, DescribeChannelBanResponseFilterSensitiveLog)\n .ser(se_DescribeChannelBanCommand)\n .de(de_DescribeChannelBanCommand)\n .build() {\n}\n","import { getEndpointPlugin } from \"@smithy/middleware-endpoint\";\nimport { getSerdePlugin } from \"@smithy/middleware-serde\";\nimport { Command as $Command } from \"@smithy/smithy-client\";\nimport { commonParams } from \"../endpoint/EndpointParameters\";\nimport { DescribeChannelResponseFilterSensitiveLog, } from \"../models/models_0\";\nimport { de_DescribeChannelCommand, se_DescribeChannelCommand } from \"../protocols/Aws_restJson1\";\nexport { $Command };\nexport class DescribeChannelCommand extends $Command\n .classBuilder()\n .ep(commonParams)\n .m(function (Command, cs, config, o) {\n return [\n getSerdePlugin(config, this.serialize, this.deserialize),\n getEndpointPlugin(config, Command.getEndpointParameterInstructions()),\n ];\n})\n .s(\"ChimeMessagingService\", \"DescribeChannel\", {})\n .n(\"ChimeSDKMessagingClient\", \"DescribeChannelCommand\")\n .f(void 0, DescribeChannelResponseFilterSensitiveLog)\n .ser(se_DescribeChannelCommand)\n .de(de_DescribeChannelCommand)\n .build() {\n}\n","import { getEndpointPlugin } from \"@smithy/middleware-endpoint\";\nimport { getSerdePlugin } from \"@smithy/middleware-serde\";\nimport { Command as $Command } from \"@smithy/smithy-client\";\nimport { commonParams } from \"../endpoint/EndpointParameters\";\nimport { DescribeChannelFlowResponseFilterSensitiveLog, } from \"../models/models_0\";\nimport { de_DescribeChannelFlowCommand, se_DescribeChannelFlowCommand } from \"../protocols/Aws_restJson1\";\nexport { $Command };\nexport class DescribeChannelFlowCommand extends $Command\n .classBuilder()\n .ep(commonParams)\n .m(function (Command, cs, config, o) {\n return [\n getSerdePlugin(config, this.serialize, this.deserialize),\n getEndpointPlugin(config, Command.getEndpointParameterInstructions()),\n ];\n})\n .s(\"ChimeMessagingService\", \"DescribeChannelFlow\", {})\n .n(\"ChimeSDKMessagingClient\", \"DescribeChannelFlowCommand\")\n .f(void 0, DescribeChannelFlowResponseFilterSensitiveLog)\n .ser(se_DescribeChannelFlowCommand)\n .de(de_DescribeChannelFlowCommand)\n .build() {\n}\n","import { getEndpointPlugin } from \"@smithy/middleware-endpoint\";\nimport { getSerdePlugin } from \"@smithy/middleware-serde\";\nimport { Command as $Command } from \"@smithy/smithy-client\";\nimport { commonParams } from \"../endpoint/EndpointParameters\";\nimport { DescribeChannelMembershipResponseFilterSensitiveLog, } from \"../models/models_0\";\nimport { de_DescribeChannelMembershipCommand, se_DescribeChannelMembershipCommand } from \"../protocols/Aws_restJson1\";\nexport { $Command };\nexport class DescribeChannelMembershipCommand extends $Command\n .classBuilder()\n .ep(commonParams)\n .m(function (Command, cs, config, o) {\n return [\n getSerdePlugin(config, this.serialize, this.deserialize),\n getEndpointPlugin(config, Command.getEndpointParameterInstructions()),\n ];\n})\n .s(\"ChimeMessagingService\", \"DescribeChannelMembership\", {})\n .n(\"ChimeSDKMessagingClient\", \"DescribeChannelMembershipCommand\")\n .f(void 0, DescribeChannelMembershipResponseFilterSensitiveLog)\n .ser(se_DescribeChannelMembershipCommand)\n .de(de_DescribeChannelMembershipCommand)\n .build() {\n}\n","import { getEndpointPlugin } from \"@smithy/middleware-endpoint\";\nimport { getSerdePlugin } from \"@smithy/middleware-serde\";\nimport { Command as $Command } from \"@smithy/smithy-client\";\nimport { commonParams } from \"../endpoint/EndpointParameters\";\nimport { DescribeChannelMembershipForAppInstanceUserResponseFilterSensitiveLog, } from \"../models/models_0\";\nimport { de_DescribeChannelMembershipForAppInstanceUserCommand, se_DescribeChannelMembershipForAppInstanceUserCommand, } from \"../protocols/Aws_restJson1\";\nexport { $Command };\nexport class DescribeChannelMembershipForAppInstanceUserCommand extends $Command\n .classBuilder()\n .ep(commonParams)\n .m(function (Command, cs, config, o) {\n return [\n getSerdePlugin(config, this.serialize, this.deserialize),\n getEndpointPlugin(config, Command.getEndpointParameterInstructions()),\n ];\n})\n .s(\"ChimeMessagingService\", \"DescribeChannelMembershipForAppInstanceUser\", {})\n .n(\"ChimeSDKMessagingClient\", \"DescribeChannelMembershipForAppInstanceUserCommand\")\n .f(void 0, DescribeChannelMembershipForAppInstanceUserResponseFilterSensitiveLog)\n .ser(se_DescribeChannelMembershipForAppInstanceUserCommand)\n .de(de_DescribeChannelMembershipForAppInstanceUserCommand)\n .build() {\n}\n","import { getEndpointPlugin } from \"@smithy/middleware-endpoint\";\nimport { getSerdePlugin } from \"@smithy/middleware-serde\";\nimport { Command as $Command } from \"@smithy/smithy-client\";\nimport { commonParams } from \"../endpoint/EndpointParameters\";\nimport { DescribeChannelModeratedByAppInstanceUserResponseFilterSensitiveLog, } from \"../models/models_0\";\nimport { de_DescribeChannelModeratedByAppInstanceUserCommand, se_DescribeChannelModeratedByAppInstanceUserCommand, } from \"../protocols/Aws_restJson1\";\nexport { $Command };\nexport class DescribeChannelModeratedByAppInstanceUserCommand extends $Command\n .classBuilder()\n .ep(commonParams)\n .m(function (Command, cs, config, o) {\n return [\n getSerdePlugin(config, this.serialize, this.deserialize),\n getEndpointPlugin(config, Command.getEndpointParameterInstructions()),\n ];\n})\n .s(\"ChimeMessagingService\", \"DescribeChannelModeratedByAppInstanceUser\", {})\n .n(\"ChimeSDKMessagingClient\", \"DescribeChannelModeratedByAppInstanceUserCommand\")\n .f(void 0, DescribeChannelModeratedByAppInstanceUserResponseFilterSensitiveLog)\n .ser(se_DescribeChannelModeratedByAppInstanceUserCommand)\n .de(de_DescribeChannelModeratedByAppInstanceUserCommand)\n .build() {\n}\n","import { getEndpointPlugin } from \"@smithy/middleware-endpoint\";\nimport { getSerdePlugin } from \"@smithy/middleware-serde\";\nimport { Command as $Command } from \"@smithy/smithy-client\";\nimport { commonParams } from \"../endpoint/EndpointParameters\";\nimport { DescribeChannelModeratorResponseFilterSensitiveLog, } from \"../models/models_0\";\nimport { de_DescribeChannelModeratorCommand, se_DescribeChannelModeratorCommand } from \"../protocols/Aws_restJson1\";\nexport { $Command };\nexport class DescribeChannelModeratorCommand extends $Command\n .classBuilder()\n .ep(commonParams)\n .m(function (Command, cs, config, o) {\n return [\n getSerdePlugin(config, this.serialize, this.deserialize),\n getEndpointPlugin(config, Command.getEndpointParameterInstructions()),\n ];\n})\n .s(\"ChimeMessagingService\", \"DescribeChannelModerator\", {})\n .n(\"ChimeSDKMessagingClient\", \"DescribeChannelModeratorCommand\")\n .f(void 0, DescribeChannelModeratorResponseFilterSensitiveLog)\n .ser(se_DescribeChannelModeratorCommand)\n .de(de_DescribeChannelModeratorCommand)\n .build() {\n}\n","import { getEndpointPlugin } from \"@smithy/middleware-endpoint\";\nimport { getSerdePlugin } from \"@smithy/middleware-serde\";\nimport { Command as $Command } from \"@smithy/smithy-client\";\nimport { commonParams } from \"../endpoint/EndpointParameters\";\nimport { de_DisassociateChannelFlowCommand, se_DisassociateChannelFlowCommand } from \"../protocols/Aws_restJson1\";\nexport { $Command };\nexport class DisassociateChannelFlowCommand extends $Command\n .classBuilder()\n .ep(commonParams)\n .m(function (Command, cs, config, o) {\n return [\n getSerdePlugin(config, this.serialize, this.deserialize),\n getEndpointPlugin(config, Command.getEndpointParameterInstructions()),\n ];\n})\n .s(\"ChimeMessagingService\", \"DisassociateChannelFlow\", {})\n .n(\"ChimeSDKMessagingClient\", \"DisassociateChannelFlowCommand\")\n .f(void 0, void 0)\n .ser(se_DisassociateChannelFlowCommand)\n .de(de_DisassociateChannelFlowCommand)\n .build() {\n}\n","import { getEndpointPlugin } from \"@smithy/middleware-endpoint\";\nimport { getSerdePlugin } from \"@smithy/middleware-serde\";\nimport { Command as $Command } from \"@smithy/smithy-client\";\nimport { commonParams } from \"../endpoint/EndpointParameters\";\nimport { GetChannelMembershipPreferencesResponseFilterSensitiveLog, } from \"../models/models_0\";\nimport { de_GetChannelMembershipPreferencesCommand, se_GetChannelMembershipPreferencesCommand, } from \"../protocols/Aws_restJson1\";\nexport { $Command };\nexport class GetChannelMembershipPreferencesCommand extends $Command\n .classBuilder()\n .ep(commonParams)\n .m(function (Command, cs, config, o) {\n return [\n getSerdePlugin(config, this.serialize, this.deserialize),\n getEndpointPlugin(config, Command.getEndpointParameterInstructions()),\n ];\n})\n .s(\"ChimeMessagingService\", \"GetChannelMembershipPreferences\", {})\n .n(\"ChimeSDKMessagingClient\", \"GetChannelMembershipPreferencesCommand\")\n .f(void 0, GetChannelMembershipPreferencesResponseFilterSensitiveLog)\n .ser(se_GetChannelMembershipPreferencesCommand)\n .de(de_GetChannelMembershipPreferencesCommand)\n .build() {\n}\n","import { getEndpointPlugin } from \"@smithy/middleware-endpoint\";\nimport { getSerdePlugin } from \"@smithy/middleware-serde\";\nimport { Command as $Command } from \"@smithy/smithy-client\";\nimport { commonParams } from \"../endpoint/EndpointParameters\";\nimport { GetChannelMessageResponseFilterSensitiveLog, } from \"../models/models_0\";\nimport { de_GetChannelMessageCommand, se_GetChannelMessageCommand } from \"../protocols/Aws_restJson1\";\nexport { $Command };\nexport class GetChannelMessageCommand extends $Command\n .classBuilder()\n .ep(commonParams)\n .m(function (Command, cs, config, o) {\n return [\n getSerdePlugin(config, this.serialize, this.deserialize),\n getEndpointPlugin(config, Command.getEndpointParameterInstructions()),\n ];\n})\n .s(\"ChimeMessagingService\", \"GetChannelMessage\", {})\n .n(\"ChimeSDKMessagingClient\", \"GetChannelMessageCommand\")\n .f(void 0, GetChannelMessageResponseFilterSensitiveLog)\n .ser(se_GetChannelMessageCommand)\n .de(de_GetChannelMessageCommand)\n .build() {\n}\n","import { getEndpointPlugin } from \"@smithy/middleware-endpoint\";\nimport { getSerdePlugin } from \"@smithy/middleware-serde\";\nimport { Command as $Command } from \"@smithy/smithy-client\";\nimport { commonParams } from \"../endpoint/EndpointParameters\";\nimport { de_GetChannelMessageStatusCommand, se_GetChannelMessageStatusCommand } from \"../protocols/Aws_restJson1\";\nexport { $Command };\nexport class GetChannelMessageStatusCommand extends $Command\n .classBuilder()\n .ep(commonParams)\n .m(function (Command, cs, config, o) {\n return [\n getSerdePlugin(config, this.serialize, this.deserialize),\n getEndpointPlugin(config, Command.getEndpointParameterInstructions()),\n ];\n})\n .s(\"ChimeMessagingService\", \"GetChannelMessageStatus\", {})\n .n(\"ChimeSDKMessagingClient\", \"GetChannelMessageStatusCommand\")\n .f(void 0, void 0)\n .ser(se_GetChannelMessageStatusCommand)\n .de(de_GetChannelMessageStatusCommand)\n .build() {\n}\n","import { getEndpointPlugin } from \"@smithy/middleware-endpoint\";\nimport { getSerdePlugin } from \"@smithy/middleware-serde\";\nimport { Command as $Command } from \"@smithy/smithy-client\";\nimport { commonParams } from \"../endpoint/EndpointParameters\";\nimport { de_GetMessagingSessionEndpointCommand, se_GetMessagingSessionEndpointCommand, } from \"../protocols/Aws_restJson1\";\nexport { $Command };\nexport class GetMessagingSessionEndpointCommand extends $Command\n .classBuilder()\n .ep(commonParams)\n .m(function (Command, cs, config, o) {\n return [\n getSerdePlugin(config, this.serialize, this.deserialize),\n getEndpointPlugin(config, Command.getEndpointParameterInstructions()),\n ];\n})\n .s(\"ChimeMessagingService\", \"GetMessagingSessionEndpoint\", {})\n .n(\"ChimeSDKMessagingClient\", \"GetMessagingSessionEndpointCommand\")\n .f(void 0, void 0)\n .ser(se_GetMessagingSessionEndpointCommand)\n .de(de_GetMessagingSessionEndpointCommand)\n .build() {\n}\n","import { getEndpointPlugin } from \"@smithy/middleware-endpoint\";\nimport { getSerdePlugin } from \"@smithy/middleware-serde\";\nimport { Command as $Command } from \"@smithy/smithy-client\";\nimport { commonParams } from \"../endpoint/EndpointParameters\";\nimport { de_GetMessagingStreamingConfigurationsCommand, se_GetMessagingStreamingConfigurationsCommand, } from \"../protocols/Aws_restJson1\";\nexport { $Command };\nexport class GetMessagingStreamingConfigurationsCommand extends $Command\n .classBuilder()\n .ep(commonParams)\n .m(function (Command, cs, config, o) {\n return [\n getSerdePlugin(config, this.serialize, this.deserialize),\n getEndpointPlugin(config, Command.getEndpointParameterInstructions()),\n ];\n})\n .s(\"ChimeMessagingService\", \"GetMessagingStreamingConfigurations\", {})\n .n(\"ChimeSDKMessagingClient\", \"GetMessagingStreamingConfigurationsCommand\")\n .f(void 0, void 0)\n .ser(se_GetMessagingStreamingConfigurationsCommand)\n .de(de_GetMessagingStreamingConfigurationsCommand)\n .build() {\n}\n","import { getEndpointPlugin } from \"@smithy/middleware-endpoint\";\nimport { getSerdePlugin } from \"@smithy/middleware-serde\";\nimport { Command as $Command } from \"@smithy/smithy-client\";\nimport { commonParams } from \"../endpoint/EndpointParameters\";\nimport { ListChannelBansRequestFilterSensitiveLog, ListChannelBansResponseFilterSensitiveLog, } from \"../models/models_0\";\nimport { de_ListChannelBansCommand, se_ListChannelBansCommand } from \"../protocols/Aws_restJson1\";\nexport { $Command };\nexport class ListChannelBansCommand extends $Command\n .classBuilder()\n .ep(commonParams)\n .m(function (Command, cs, config, o) {\n return [\n getSerdePlugin(config, this.serialize, this.deserialize),\n getEndpointPlugin(config, Command.getEndpointParameterInstructions()),\n ];\n})\n .s(\"ChimeMessagingService\", \"ListChannelBans\", {})\n .n(\"ChimeSDKMessagingClient\", \"ListChannelBansCommand\")\n .f(ListChannelBansRequestFilterSensitiveLog, ListChannelBansResponseFilterSensitiveLog)\n .ser(se_ListChannelBansCommand)\n .de(de_ListChannelBansCommand)\n .build() {\n}\n","import { getEndpointPlugin } from \"@smithy/middleware-endpoint\";\nimport { getSerdePlugin } from \"@smithy/middleware-serde\";\nimport { Command as $Command } from \"@smithy/smithy-client\";\nimport { commonParams } from \"../endpoint/EndpointParameters\";\nimport { ListChannelFlowsRequestFilterSensitiveLog, ListChannelFlowsResponseFilterSensitiveLog, } from \"../models/models_0\";\nimport { de_ListChannelFlowsCommand, se_ListChannelFlowsCommand } from \"../protocols/Aws_restJson1\";\nexport { $Command };\nexport class ListChannelFlowsCommand extends $Command\n .classBuilder()\n .ep(commonParams)\n .m(function (Command, cs, config, o) {\n return [\n getSerdePlugin(config, this.serialize, this.deserialize),\n getEndpointPlugin(config, Command.getEndpointParameterInstructions()),\n ];\n})\n .s(\"ChimeMessagingService\", \"ListChannelFlows\", {})\n .n(\"ChimeSDKMessagingClient\", \"ListChannelFlowsCommand\")\n .f(ListChannelFlowsRequestFilterSensitiveLog, ListChannelFlowsResponseFilterSensitiveLog)\n .ser(se_ListChannelFlowsCommand)\n .de(de_ListChannelFlowsCommand)\n .build() {\n}\n","import { getEndpointPlugin } from \"@smithy/middleware-endpoint\";\nimport { getSerdePlugin } from \"@smithy/middleware-serde\";\nimport { Command as $Command } from \"@smithy/smithy-client\";\nimport { commonParams } from \"../endpoint/EndpointParameters\";\nimport { ListChannelMembershipsRequestFilterSensitiveLog, ListChannelMembershipsResponseFilterSensitiveLog, } from \"../models/models_0\";\nimport { de_ListChannelMembershipsCommand, se_ListChannelMembershipsCommand } from \"../protocols/Aws_restJson1\";\nexport { $Command };\nexport class ListChannelMembershipsCommand extends $Command\n .classBuilder()\n .ep(commonParams)\n .m(function (Command, cs, config, o) {\n return [\n getSerdePlugin(config, this.serialize, this.deserialize),\n getEndpointPlugin(config, Command.getEndpointParameterInstructions()),\n ];\n})\n .s(\"ChimeMessagingService\", \"ListChannelMemberships\", {})\n .n(\"ChimeSDKMessagingClient\", \"ListChannelMembershipsCommand\")\n .f(ListChannelMembershipsRequestFilterSensitiveLog, ListChannelMembershipsResponseFilterSensitiveLog)\n .ser(se_ListChannelMembershipsCommand)\n .de(de_ListChannelMembershipsCommand)\n .build() {\n}\n","import { getEndpointPlugin } from \"@smithy/middleware-endpoint\";\nimport { getSerdePlugin } from \"@smithy/middleware-serde\";\nimport { Command as $Command } from \"@smithy/smithy-client\";\nimport { commonParams } from \"../endpoint/EndpointParameters\";\nimport { ListChannelMembershipsForAppInstanceUserRequestFilterSensitiveLog, ListChannelMembershipsForAppInstanceUserResponseFilterSensitiveLog, } from \"../models/models_0\";\nimport { de_ListChannelMembershipsForAppInstanceUserCommand, se_ListChannelMembershipsForAppInstanceUserCommand, } from \"../protocols/Aws_restJson1\";\nexport { $Command };\nexport class ListChannelMembershipsForAppInstanceUserCommand extends $Command\n .classBuilder()\n .ep(commonParams)\n .m(function (Command, cs, config, o) {\n return [\n getSerdePlugin(config, this.serialize, this.deserialize),\n getEndpointPlugin(config, Command.getEndpointParameterInstructions()),\n ];\n})\n .s(\"ChimeMessagingService\", \"ListChannelMembershipsForAppInstanceUser\", {})\n .n(\"ChimeSDKMessagingClient\", \"ListChannelMembershipsForAppInstanceUserCommand\")\n .f(ListChannelMembershipsForAppInstanceUserRequestFilterSensitiveLog, ListChannelMembershipsForAppInstanceUserResponseFilterSensitiveLog)\n .ser(se_ListChannelMembershipsForAppInstanceUserCommand)\n .de(de_ListChannelMembershipsForAppInstanceUserCommand)\n .build() {\n}\n","import { getEndpointPlugin } from \"@smithy/middleware-endpoint\";\nimport { getSerdePlugin } from \"@smithy/middleware-serde\";\nimport { Command as $Command } from \"@smithy/smithy-client\";\nimport { commonParams } from \"../endpoint/EndpointParameters\";\nimport { ListChannelMessagesRequestFilterSensitiveLog, ListChannelMessagesResponseFilterSensitiveLog, } from \"../models/models_0\";\nimport { de_ListChannelMessagesCommand, se_ListChannelMessagesCommand } from \"../protocols/Aws_restJson1\";\nexport { $Command };\nexport class ListChannelMessagesCommand extends $Command\n .classBuilder()\n .ep(commonParams)\n .m(function (Command, cs, config, o) {\n return [\n getSerdePlugin(config, this.serialize, this.deserialize),\n getEndpointPlugin(config, Command.getEndpointParameterInstructions()),\n ];\n})\n .s(\"ChimeMessagingService\", \"ListChannelMessages\", {})\n .n(\"ChimeSDKMessagingClient\", \"ListChannelMessagesCommand\")\n .f(ListChannelMessagesRequestFilterSensitiveLog, ListChannelMessagesResponseFilterSensitiveLog)\n .ser(se_ListChannelMessagesCommand)\n .de(de_ListChannelMessagesCommand)\n .build() {\n}\n","import { getEndpointPlugin } from \"@smithy/middleware-endpoint\";\nimport { getSerdePlugin } from \"@smithy/middleware-serde\";\nimport { Command as $Command } from \"@smithy/smithy-client\";\nimport { commonParams } from \"../endpoint/EndpointParameters\";\nimport { ListChannelModeratorsRequestFilterSensitiveLog, ListChannelModeratorsResponseFilterSensitiveLog, } from \"../models/models_0\";\nimport { de_ListChannelModeratorsCommand, se_ListChannelModeratorsCommand } from \"../protocols/Aws_restJson1\";\nexport { $Command };\nexport class ListChannelModeratorsCommand extends $Command\n .classBuilder()\n .ep(commonParams)\n .m(function (Command, cs, config, o) {\n return [\n getSerdePlugin(config, this.serialize, this.deserialize),\n getEndpointPlugin(config, Command.getEndpointParameterInstructions()),\n ];\n})\n .s(\"ChimeMessagingService\", \"ListChannelModerators\", {})\n .n(\"ChimeSDKMessagingClient\", \"ListChannelModeratorsCommand\")\n .f(ListChannelModeratorsRequestFilterSensitiveLog, ListChannelModeratorsResponseFilterSensitiveLog)\n .ser(se_ListChannelModeratorsCommand)\n .de(de_ListChannelModeratorsCommand)\n .build() {\n}\n","import { getEndpointPlugin } from \"@smithy/middleware-endpoint\";\nimport { getSerdePlugin } from \"@smithy/middleware-serde\";\nimport { Command as $Command } from \"@smithy/smithy-client\";\nimport { commonParams } from \"../endpoint/EndpointParameters\";\nimport { ListChannelsAssociatedWithChannelFlowRequestFilterSensitiveLog, ListChannelsAssociatedWithChannelFlowResponseFilterSensitiveLog, } from \"../models/models_0\";\nimport { de_ListChannelsAssociatedWithChannelFlowCommand, se_ListChannelsAssociatedWithChannelFlowCommand, } from \"../protocols/Aws_restJson1\";\nexport { $Command };\nexport class ListChannelsAssociatedWithChannelFlowCommand extends $Command\n .classBuilder()\n .ep(commonParams)\n .m(function (Command, cs, config, o) {\n return [\n getSerdePlugin(config, this.serialize, this.deserialize),\n getEndpointPlugin(config, Command.getEndpointParameterInstructions()),\n ];\n})\n .s(\"ChimeMessagingService\", \"ListChannelsAssociatedWithChannelFlow\", {})\n .n(\"ChimeSDKMessagingClient\", \"ListChannelsAssociatedWithChannelFlowCommand\")\n .f(ListChannelsAssociatedWithChannelFlowRequestFilterSensitiveLog, ListChannelsAssociatedWithChannelFlowResponseFilterSensitiveLog)\n .ser(se_ListChannelsAssociatedWithChannelFlowCommand)\n .de(de_ListChannelsAssociatedWithChannelFlowCommand)\n .build() {\n}\n","import { getEndpointPlugin } from \"@smithy/middleware-endpoint\";\nimport { getSerdePlugin } from \"@smithy/middleware-serde\";\nimport { Command as $Command } from \"@smithy/smithy-client\";\nimport { commonParams } from \"../endpoint/EndpointParameters\";\nimport { ListChannelsRequestFilterSensitiveLog, ListChannelsResponseFilterSensitiveLog, } from \"../models/models_0\";\nimport { de_ListChannelsCommand, se_ListChannelsCommand } from \"../protocols/Aws_restJson1\";\nexport { $Command };\nexport class ListChannelsCommand extends $Command\n .classBuilder()\n .ep(commonParams)\n .m(function (Command, cs, config, o) {\n return [\n getSerdePlugin(config, this.serialize, this.deserialize),\n getEndpointPlugin(config, Command.getEndpointParameterInstructions()),\n ];\n})\n .s(\"ChimeMessagingService\", \"ListChannels\", {})\n .n(\"ChimeSDKMessagingClient\", \"ListChannelsCommand\")\n .f(ListChannelsRequestFilterSensitiveLog, ListChannelsResponseFilterSensitiveLog)\n .ser(se_ListChannelsCommand)\n .de(de_ListChannelsCommand)\n .build() {\n}\n","import { getEndpointPlugin } from \"@smithy/middleware-endpoint\";\nimport { getSerdePlugin } from \"@smithy/middleware-serde\";\nimport { Command as $Command } from \"@smithy/smithy-client\";\nimport { commonParams } from \"../endpoint/EndpointParameters\";\nimport { ListChannelsModeratedByAppInstanceUserRequestFilterSensitiveLog, ListChannelsModeratedByAppInstanceUserResponseFilterSensitiveLog, } from \"../models/models_0\";\nimport { de_ListChannelsModeratedByAppInstanceUserCommand, se_ListChannelsModeratedByAppInstanceUserCommand, } from \"../protocols/Aws_restJson1\";\nexport { $Command };\nexport class ListChannelsModeratedByAppInstanceUserCommand extends $Command\n .classBuilder()\n .ep(commonParams)\n .m(function (Command, cs, config, o) {\n return [\n getSerdePlugin(config, this.serialize, this.deserialize),\n getEndpointPlugin(config, Command.getEndpointParameterInstructions()),\n ];\n})\n .s(\"ChimeMessagingService\", \"ListChannelsModeratedByAppInstanceUser\", {})\n .n(\"ChimeSDKMessagingClient\", \"ListChannelsModeratedByAppInstanceUserCommand\")\n .f(ListChannelsModeratedByAppInstanceUserRequestFilterSensitiveLog, ListChannelsModeratedByAppInstanceUserResponseFilterSensitiveLog)\n .ser(se_ListChannelsModeratedByAppInstanceUserCommand)\n .de(de_ListChannelsModeratedByAppInstanceUserCommand)\n .build() {\n}\n","import { getEndpointPlugin } from \"@smithy/middleware-endpoint\";\nimport { getSerdePlugin } from \"@smithy/middleware-serde\";\nimport { Command as $Command } from \"@smithy/smithy-client\";\nimport { commonParams } from \"../endpoint/EndpointParameters\";\nimport { ListSubChannelsRequestFilterSensitiveLog, ListSubChannelsResponseFilterSensitiveLog, } from \"../models/models_0\";\nimport { de_ListSubChannelsCommand, se_ListSubChannelsCommand } from \"../protocols/Aws_restJson1\";\nexport { $Command };\nexport class ListSubChannelsCommand extends $Command\n .classBuilder()\n .ep(commonParams)\n .m(function (Command, cs, config, o) {\n return [\n getSerdePlugin(config, this.serialize, this.deserialize),\n getEndpointPlugin(config, Command.getEndpointParameterInstructions()),\n ];\n})\n .s(\"ChimeMessagingService\", \"ListSubChannels\", {})\n .n(\"ChimeSDKMessagingClient\", \"ListSubChannelsCommand\")\n .f(ListSubChannelsRequestFilterSensitiveLog, ListSubChannelsResponseFilterSensitiveLog)\n .ser(se_ListSubChannelsCommand)\n .de(de_ListSubChannelsCommand)\n .build() {\n}\n","import { getEndpointPlugin } from \"@smithy/middleware-endpoint\";\nimport { getSerdePlugin } from \"@smithy/middleware-serde\";\nimport { Command as $Command } from \"@smithy/smithy-client\";\nimport { commonParams } from \"../endpoint/EndpointParameters\";\nimport { ListTagsForResourceResponseFilterSensitiveLog, } from \"../models/models_0\";\nimport { de_ListTagsForResourceCommand, se_ListTagsForResourceCommand } from \"../protocols/Aws_restJson1\";\nexport { $Command };\nexport class ListTagsForResourceCommand extends $Command\n .classBuilder()\n .ep(commonParams)\n .m(function (Command, cs, config, o) {\n return [\n getSerdePlugin(config, this.serialize, this.deserialize),\n getEndpointPlugin(config, Command.getEndpointParameterInstructions()),\n ];\n})\n .s(\"ChimeMessagingService\", \"ListTagsForResource\", {})\n .n(\"ChimeSDKMessagingClient\", \"ListTagsForResourceCommand\")\n .f(void 0, ListTagsForResourceResponseFilterSensitiveLog)\n .ser(se_ListTagsForResourceCommand)\n .de(de_ListTagsForResourceCommand)\n .build() {\n}\n","import { getEndpointPlugin } from \"@smithy/middleware-endpoint\";\nimport { getSerdePlugin } from \"@smithy/middleware-serde\";\nimport { Command as $Command } from \"@smithy/smithy-client\";\nimport { commonParams } from \"../endpoint/EndpointParameters\";\nimport { de_PutChannelExpirationSettingsCommand, se_PutChannelExpirationSettingsCommand, } from \"../protocols/Aws_restJson1\";\nexport { $Command };\nexport class PutChannelExpirationSettingsCommand extends $Command\n .classBuilder()\n .ep(commonParams)\n .m(function (Command, cs, config, o) {\n return [\n getSerdePlugin(config, this.serialize, this.deserialize),\n getEndpointPlugin(config, Command.getEndpointParameterInstructions()),\n ];\n})\n .s(\"ChimeMessagingService\", \"PutChannelExpirationSettings\", {})\n .n(\"ChimeSDKMessagingClient\", \"PutChannelExpirationSettingsCommand\")\n .f(void 0, void 0)\n .ser(se_PutChannelExpirationSettingsCommand)\n .de(de_PutChannelExpirationSettingsCommand)\n .build() {\n}\n","import { getEndpointPlugin } from \"@smithy/middleware-endpoint\";\nimport { getSerdePlugin } from \"@smithy/middleware-serde\";\nimport { Command as $Command } from \"@smithy/smithy-client\";\nimport { commonParams } from \"../endpoint/EndpointParameters\";\nimport { PutChannelMembershipPreferencesRequestFilterSensitiveLog, PutChannelMembershipPreferencesResponseFilterSensitiveLog, } from \"../models/models_0\";\nimport { de_PutChannelMembershipPreferencesCommand, se_PutChannelMembershipPreferencesCommand, } from \"../protocols/Aws_restJson1\";\nexport { $Command };\nexport class PutChannelMembershipPreferencesCommand extends $Command\n .classBuilder()\n .ep(commonParams)\n .m(function (Command, cs, config, o) {\n return [\n getSerdePlugin(config, this.serialize, this.deserialize),\n getEndpointPlugin(config, Command.getEndpointParameterInstructions()),\n ];\n})\n .s(\"ChimeMessagingService\", \"PutChannelMembershipPreferences\", {})\n .n(\"ChimeSDKMessagingClient\", \"PutChannelMembershipPreferencesCommand\")\n .f(PutChannelMembershipPreferencesRequestFilterSensitiveLog, PutChannelMembershipPreferencesResponseFilterSensitiveLog)\n .ser(se_PutChannelMembershipPreferencesCommand)\n .de(de_PutChannelMembershipPreferencesCommand)\n .build() {\n}\n","import { getEndpointPlugin } from \"@smithy/middleware-endpoint\";\nimport { getSerdePlugin } from \"@smithy/middleware-serde\";\nimport { Command as $Command } from \"@smithy/smithy-client\";\nimport { commonParams } from \"../endpoint/EndpointParameters\";\nimport { de_PutMessagingStreamingConfigurationsCommand, se_PutMessagingStreamingConfigurationsCommand, } from \"../protocols/Aws_restJson1\";\nexport { $Command };\nexport class PutMessagingStreamingConfigurationsCommand extends $Command\n .classBuilder()\n .ep(commonParams)\n .m(function (Command, cs, config, o) {\n return [\n getSerdePlugin(config, this.serialize, this.deserialize),\n getEndpointPlugin(config, Command.getEndpointParameterInstructions()),\n ];\n})\n .s(\"ChimeMessagingService\", \"PutMessagingStreamingConfigurations\", {})\n .n(\"ChimeSDKMessagingClient\", \"PutMessagingStreamingConfigurationsCommand\")\n .f(void 0, void 0)\n .ser(se_PutMessagingStreamingConfigurationsCommand)\n .de(de_PutMessagingStreamingConfigurationsCommand)\n .build() {\n}\n","import { getEndpointPlugin } from \"@smithy/middleware-endpoint\";\nimport { getSerdePlugin } from \"@smithy/middleware-serde\";\nimport { Command as $Command } from \"@smithy/smithy-client\";\nimport { commonParams } from \"../endpoint/EndpointParameters\";\nimport { de_RedactChannelMessageCommand, se_RedactChannelMessageCommand } from \"../protocols/Aws_restJson1\";\nexport { $Command };\nexport class RedactChannelMessageCommand extends $Command\n .classBuilder()\n .ep(commonParams)\n .m(function (Command, cs, config, o) {\n return [\n getSerdePlugin(config, this.serialize, this.deserialize),\n getEndpointPlugin(config, Command.getEndpointParameterInstructions()),\n ];\n})\n .s(\"ChimeMessagingService\", \"RedactChannelMessage\", {})\n .n(\"ChimeSDKMessagingClient\", \"RedactChannelMessageCommand\")\n .f(void 0, void 0)\n .ser(se_RedactChannelMessageCommand)\n .de(de_RedactChannelMessageCommand)\n .build() {\n}\n","import { getEndpointPlugin } from \"@smithy/middleware-endpoint\";\nimport { getSerdePlugin } from \"@smithy/middleware-serde\";\nimport { Command as $Command } from \"@smithy/smithy-client\";\nimport { commonParams } from \"../endpoint/EndpointParameters\";\nimport { SearchChannelsRequestFilterSensitiveLog, SearchChannelsResponseFilterSensitiveLog, } from \"../models/models_0\";\nimport { de_SearchChannelsCommand, se_SearchChannelsCommand } from \"../protocols/Aws_restJson1\";\nexport { $Command };\nexport class SearchChannelsCommand extends $Command\n .classBuilder()\n .ep(commonParams)\n .m(function (Command, cs, config, o) {\n return [\n getSerdePlugin(config, this.serialize, this.deserialize),\n getEndpointPlugin(config, Command.getEndpointParameterInstructions()),\n ];\n})\n .s(\"ChimeMessagingService\", \"SearchChannels\", {})\n .n(\"ChimeSDKMessagingClient\", \"SearchChannelsCommand\")\n .f(SearchChannelsRequestFilterSensitiveLog, SearchChannelsResponseFilterSensitiveLog)\n .ser(se_SearchChannelsCommand)\n .de(de_SearchChannelsCommand)\n .build() {\n}\n","import { getEndpointPlugin } from \"@smithy/middleware-endpoint\";\nimport { getSerdePlugin } from \"@smithy/middleware-serde\";\nimport { Command as $Command } from \"@smithy/smithy-client\";\nimport { commonParams } from \"../endpoint/EndpointParameters\";\nimport { SendChannelMessageRequestFilterSensitiveLog, } from \"../models/models_0\";\nimport { de_SendChannelMessageCommand, se_SendChannelMessageCommand } from \"../protocols/Aws_restJson1\";\nexport { $Command };\nexport class SendChannelMessageCommand extends $Command\n .classBuilder()\n .ep(commonParams)\n .m(function (Command, cs, config, o) {\n return [\n getSerdePlugin(config, this.serialize, this.deserialize),\n getEndpointPlugin(config, Command.getEndpointParameterInstructions()),\n ];\n})\n .s(\"ChimeMessagingService\", \"SendChannelMessage\", {})\n .n(\"ChimeSDKMessagingClient\", \"SendChannelMessageCommand\")\n .f(SendChannelMessageRequestFilterSensitiveLog, void 0)\n .ser(se_SendChannelMessageCommand)\n .de(de_SendChannelMessageCommand)\n .build() {\n}\n","import { getEndpointPlugin } from \"@smithy/middleware-endpoint\";\nimport { getSerdePlugin } from \"@smithy/middleware-serde\";\nimport { Command as $Command } from \"@smithy/smithy-client\";\nimport { commonParams } from \"../endpoint/EndpointParameters\";\nimport { TagResourceRequestFilterSensitiveLog } from \"../models/models_0\";\nimport { de_TagResourceCommand, se_TagResourceCommand } from \"../protocols/Aws_restJson1\";\nexport { $Command };\nexport class TagResourceCommand extends $Command\n .classBuilder()\n .ep(commonParams)\n .m(function (Command, cs, config, o) {\n return [\n getSerdePlugin(config, this.serialize, this.deserialize),\n getEndpointPlugin(config, Command.getEndpointParameterInstructions()),\n ];\n})\n .s(\"ChimeMessagingService\", \"TagResource\", {})\n .n(\"ChimeSDKMessagingClient\", \"TagResourceCommand\")\n .f(TagResourceRequestFilterSensitiveLog, void 0)\n .ser(se_TagResourceCommand)\n .de(de_TagResourceCommand)\n .build() {\n}\n","import { getEndpointPlugin } from \"@smithy/middleware-endpoint\";\nimport { getSerdePlugin } from \"@smithy/middleware-serde\";\nimport { Command as $Command } from \"@smithy/smithy-client\";\nimport { commonParams } from \"../endpoint/EndpointParameters\";\nimport { UntagResourceRequestFilterSensitiveLog } from \"../models/models_0\";\nimport { de_UntagResourceCommand, se_UntagResourceCommand } from \"../protocols/Aws_restJson1\";\nexport { $Command };\nexport class UntagResourceCommand extends $Command\n .classBuilder()\n .ep(commonParams)\n .m(function (Command, cs, config, o) {\n return [\n getSerdePlugin(config, this.serialize, this.deserialize),\n getEndpointPlugin(config, Command.getEndpointParameterInstructions()),\n ];\n})\n .s(\"ChimeMessagingService\", \"UntagResource\", {})\n .n(\"ChimeSDKMessagingClient\", \"UntagResourceCommand\")\n .f(UntagResourceRequestFilterSensitiveLog, void 0)\n .ser(se_UntagResourceCommand)\n .de(de_UntagResourceCommand)\n .build() {\n}\n","import { getEndpointPlugin } from \"@smithy/middleware-endpoint\";\nimport { getSerdePlugin } from \"@smithy/middleware-serde\";\nimport { Command as $Command } from \"@smithy/smithy-client\";\nimport { commonParams } from \"../endpoint/EndpointParameters\";\nimport { UpdateChannelRequestFilterSensitiveLog, } from \"../models/models_0\";\nimport { de_UpdateChannelCommand, se_UpdateChannelCommand } from \"../protocols/Aws_restJson1\";\nexport { $Command };\nexport class UpdateChannelCommand extends $Command\n .classBuilder()\n .ep(commonParams)\n .m(function (Command, cs, config, o) {\n return [\n getSerdePlugin(config, this.serialize, this.deserialize),\n getEndpointPlugin(config, Command.getEndpointParameterInstructions()),\n ];\n})\n .s(\"ChimeMessagingService\", \"UpdateChannel\", {})\n .n(\"ChimeSDKMessagingClient\", \"UpdateChannelCommand\")\n .f(UpdateChannelRequestFilterSensitiveLog, void 0)\n .ser(se_UpdateChannelCommand)\n .de(de_UpdateChannelCommand)\n .build() {\n}\n","import { getEndpointPlugin } from \"@smithy/middleware-endpoint\";\nimport { getSerdePlugin } from \"@smithy/middleware-serde\";\nimport { Command as $Command } from \"@smithy/smithy-client\";\nimport { commonParams } from \"../endpoint/EndpointParameters\";\nimport { UpdateChannelFlowRequestFilterSensitiveLog, } from \"../models/models_0\";\nimport { de_UpdateChannelFlowCommand, se_UpdateChannelFlowCommand } from \"../protocols/Aws_restJson1\";\nexport { $Command };\nexport class UpdateChannelFlowCommand extends $Command\n .classBuilder()\n .ep(commonParams)\n .m(function (Command, cs, config, o) {\n return [\n getSerdePlugin(config, this.serialize, this.deserialize),\n getEndpointPlugin(config, Command.getEndpointParameterInstructions()),\n ];\n})\n .s(\"ChimeMessagingService\", \"UpdateChannelFlow\", {})\n .n(\"ChimeSDKMessagingClient\", \"UpdateChannelFlowCommand\")\n .f(UpdateChannelFlowRequestFilterSensitiveLog, void 0)\n .ser(se_UpdateChannelFlowCommand)\n .de(de_UpdateChannelFlowCommand)\n .build() {\n}\n","import { getEndpointPlugin } from \"@smithy/middleware-endpoint\";\nimport { getSerdePlugin } from \"@smithy/middleware-serde\";\nimport { Command as $Command } from \"@smithy/smithy-client\";\nimport { commonParams } from \"../endpoint/EndpointParameters\";\nimport { UpdateChannelMessageRequestFilterSensitiveLog, } from \"../models/models_0\";\nimport { de_UpdateChannelMessageCommand, se_UpdateChannelMessageCommand } from \"../protocols/Aws_restJson1\";\nexport { $Command };\nexport class UpdateChannelMessageCommand extends $Command\n .classBuilder()\n .ep(commonParams)\n .m(function (Command, cs, config, o) {\n return [\n getSerdePlugin(config, this.serialize, this.deserialize),\n getEndpointPlugin(config, Command.getEndpointParameterInstructions()),\n ];\n})\n .s(\"ChimeMessagingService\", \"UpdateChannelMessage\", {})\n .n(\"ChimeSDKMessagingClient\", \"UpdateChannelMessageCommand\")\n .f(UpdateChannelMessageRequestFilterSensitiveLog, void 0)\n .ser(se_UpdateChannelMessageCommand)\n .de(de_UpdateChannelMessageCommand)\n .build() {\n}\n","import { getEndpointPlugin } from \"@smithy/middleware-endpoint\";\nimport { getSerdePlugin } from \"@smithy/middleware-serde\";\nimport { Command as $Command } from \"@smithy/smithy-client\";\nimport { commonParams } from \"../endpoint/EndpointParameters\";\nimport { de_UpdateChannelReadMarkerCommand, se_UpdateChannelReadMarkerCommand } from \"../protocols/Aws_restJson1\";\nexport { $Command };\nexport class UpdateChannelReadMarkerCommand extends $Command\n .classBuilder()\n .ep(commonParams)\n .m(function (Command, cs, config, o) {\n return [\n getSerdePlugin(config, this.serialize, this.deserialize),\n getEndpointPlugin(config, Command.getEndpointParameterInstructions()),\n ];\n})\n .s(\"ChimeMessagingService\", \"UpdateChannelReadMarker\", {})\n .n(\"ChimeSDKMessagingClient\", \"UpdateChannelReadMarkerCommand\")\n .f(void 0, void 0)\n .ser(se_UpdateChannelReadMarkerCommand)\n .de(de_UpdateChannelReadMarkerCommand)\n .build() {\n}\n","import { createAggregatedClient } from \"@smithy/smithy-client\";\nimport { ChimeSDKMessagingClient } from \"./ChimeSDKMessagingClient\";\nimport { AssociateChannelFlowCommand, } from \"./commands/AssociateChannelFlowCommand\";\nimport { BatchCreateChannelMembershipCommand, } from \"./commands/BatchCreateChannelMembershipCommand\";\nimport { ChannelFlowCallbackCommand, } from \"./commands/ChannelFlowCallbackCommand\";\nimport { CreateChannelBanCommand, } from \"./commands/CreateChannelBanCommand\";\nimport { CreateChannelCommand, } from \"./commands/CreateChannelCommand\";\nimport { CreateChannelFlowCommand, } from \"./commands/CreateChannelFlowCommand\";\nimport { CreateChannelMembershipCommand, } from \"./commands/CreateChannelMembershipCommand\";\nimport { CreateChannelModeratorCommand, } from \"./commands/CreateChannelModeratorCommand\";\nimport { DeleteChannelBanCommand, } from \"./commands/DeleteChannelBanCommand\";\nimport { DeleteChannelCommand, } from \"./commands/DeleteChannelCommand\";\nimport { DeleteChannelFlowCommand, } from \"./commands/DeleteChannelFlowCommand\";\nimport { DeleteChannelMembershipCommand, } from \"./commands/DeleteChannelMembershipCommand\";\nimport { DeleteChannelMessageCommand, } from \"./commands/DeleteChannelMessageCommand\";\nimport { DeleteChannelModeratorCommand, } from \"./commands/DeleteChannelModeratorCommand\";\nimport { DeleteMessagingStreamingConfigurationsCommand, } from \"./commands/DeleteMessagingStreamingConfigurationsCommand\";\nimport { DescribeChannelBanCommand, } from \"./commands/DescribeChannelBanCommand\";\nimport { DescribeChannelCommand, } from \"./commands/DescribeChannelCommand\";\nimport { DescribeChannelFlowCommand, } from \"./commands/DescribeChannelFlowCommand\";\nimport { DescribeChannelMembershipCommand, } from \"./commands/DescribeChannelMembershipCommand\";\nimport { DescribeChannelMembershipForAppInstanceUserCommand, } from \"./commands/DescribeChannelMembershipForAppInstanceUserCommand\";\nimport { DescribeChannelModeratedByAppInstanceUserCommand, } from \"./commands/DescribeChannelModeratedByAppInstanceUserCommand\";\nimport { DescribeChannelModeratorCommand, } from \"./commands/DescribeChannelModeratorCommand\";\nimport { DisassociateChannelFlowCommand, } from \"./commands/DisassociateChannelFlowCommand\";\nimport { GetChannelMembershipPreferencesCommand, } from \"./commands/GetChannelMembershipPreferencesCommand\";\nimport { GetChannelMessageCommand, } from \"./commands/GetChannelMessageCommand\";\nimport { GetChannelMessageStatusCommand, } from \"./commands/GetChannelMessageStatusCommand\";\nimport { GetMessagingSessionEndpointCommand, } from \"./commands/GetMessagingSessionEndpointCommand\";\nimport { GetMessagingStreamingConfigurationsCommand, } from \"./commands/GetMessagingStreamingConfigurationsCommand\";\nimport { ListChannelBansCommand, } from \"./commands/ListChannelBansCommand\";\nimport { ListChannelFlowsCommand, } from \"./commands/ListChannelFlowsCommand\";\nimport { ListChannelMembershipsCommand, } from \"./commands/ListChannelMembershipsCommand\";\nimport { ListChannelMembershipsForAppInstanceUserCommand, } from \"./commands/ListChannelMembershipsForAppInstanceUserCommand\";\nimport { ListChannelMessagesCommand, } from \"./commands/ListChannelMessagesCommand\";\nimport { ListChannelModeratorsCommand, } from \"./commands/ListChannelModeratorsCommand\";\nimport { ListChannelsAssociatedWithChannelFlowCommand, } from \"./commands/ListChannelsAssociatedWithChannelFlowCommand\";\nimport { ListChannelsCommand, } from \"./commands/ListChannelsCommand\";\nimport { ListChannelsModeratedByAppInstanceUserCommand, } from \"./commands/ListChannelsModeratedByAppInstanceUserCommand\";\nimport { ListSubChannelsCommand, } from \"./commands/ListSubChannelsCommand\";\nimport { ListTagsForResourceCommand, } from \"./commands/ListTagsForResourceCommand\";\nimport { PutChannelExpirationSettingsCommand, } from \"./commands/PutChannelExpirationSettingsCommand\";\nimport { PutChannelMembershipPreferencesCommand, } from \"./commands/PutChannelMembershipPreferencesCommand\";\nimport { PutMessagingStreamingConfigurationsCommand, } from \"./commands/PutMessagingStreamingConfigurationsCommand\";\nimport { RedactChannelMessageCommand, } from \"./commands/RedactChannelMessageCommand\";\nimport { SearchChannelsCommand, } from \"./commands/SearchChannelsCommand\";\nimport { SendChannelMessageCommand, } from \"./commands/SendChannelMessageCommand\";\nimport { TagResourceCommand } from \"./commands/TagResourceCommand\";\nimport { UntagResourceCommand, } from \"./commands/UntagResourceCommand\";\nimport { UpdateChannelCommand, } from \"./commands/UpdateChannelCommand\";\nimport { UpdateChannelFlowCommand, } from \"./commands/UpdateChannelFlowCommand\";\nimport { UpdateChannelMessageCommand, } from \"./commands/UpdateChannelMessageCommand\";\nimport { UpdateChannelReadMarkerCommand, } from \"./commands/UpdateChannelReadMarkerCommand\";\nconst commands = {\n AssociateChannelFlowCommand,\n BatchCreateChannelMembershipCommand,\n ChannelFlowCallbackCommand,\n CreateChannelCommand,\n CreateChannelBanCommand,\n CreateChannelFlowCommand,\n CreateChannelMembershipCommand,\n CreateChannelModeratorCommand,\n DeleteChannelCommand,\n DeleteChannelBanCommand,\n DeleteChannelFlowCommand,\n DeleteChannelMembershipCommand,\n DeleteChannelMessageCommand,\n DeleteChannelModeratorCommand,\n DeleteMessagingStreamingConfigurationsCommand,\n DescribeChannelCommand,\n DescribeChannelBanCommand,\n DescribeChannelFlowCommand,\n DescribeChannelMembershipCommand,\n DescribeChannelMembershipForAppInstanceUserCommand,\n DescribeChannelModeratedByAppInstanceUserCommand,\n DescribeChannelModeratorCommand,\n DisassociateChannelFlowCommand,\n GetChannelMembershipPreferencesCommand,\n GetChannelMessageCommand,\n GetChannelMessageStatusCommand,\n GetMessagingSessionEndpointCommand,\n GetMessagingStreamingConfigurationsCommand,\n ListChannelBansCommand,\n ListChannelFlowsCommand,\n ListChannelMembershipsCommand,\n ListChannelMembershipsForAppInstanceUserCommand,\n ListChannelMessagesCommand,\n ListChannelModeratorsCommand,\n ListChannelsCommand,\n ListChannelsAssociatedWithChannelFlowCommand,\n ListChannelsModeratedByAppInstanceUserCommand,\n ListSubChannelsCommand,\n ListTagsForResourceCommand,\n PutChannelExpirationSettingsCommand,\n PutChannelMembershipPreferencesCommand,\n PutMessagingStreamingConfigurationsCommand,\n RedactChannelMessageCommand,\n SearchChannelsCommand,\n SendChannelMessageCommand,\n TagResourceCommand,\n UntagResourceCommand,\n UpdateChannelCommand,\n UpdateChannelFlowCommand,\n UpdateChannelMessageCommand,\n UpdateChannelReadMarkerCommand,\n};\nexport class ChimeSDKMessaging extends ChimeSDKMessagingClient {\n}\ncreateAggregatedClient(commands, ChimeSDKMessaging);\n","export const createAggregatedClient = (commands, Client) => {\n for (const command of Object.keys(commands)) {\n const CommandCtor = commands[command];\n const methodImpl = async function (args, optionsOrCb, cb) {\n const command = new CommandCtor(args);\n if (typeof optionsOrCb === \"function\") {\n this.send(command, optionsOrCb);\n }\n else if (typeof cb === \"function\") {\n if (typeof optionsOrCb !== \"object\")\n throw new Error(`Expected http options but got ${typeof optionsOrCb}`);\n this.send(command, optionsOrCb || {}, cb);\n }\n else {\n return this.send(command, optionsOrCb);\n }\n };\n const methodName = (command[0].toLowerCase() + command.slice(1)).replace(/Command$/, \"\");\n Client.prototype[methodName] = methodImpl;\n }\n};\n","import { createPaginator } from \"@smithy/core\";\nimport { ChimeSDKMessagingClient } from \"../ChimeSDKMessagingClient\";\nimport { ListChannelBansCommand, } from \"../commands/ListChannelBansCommand\";\nexport const paginateListChannelBans = createPaginator(ChimeSDKMessagingClient, ListChannelBansCommand, \"NextToken\", \"NextToken\", \"MaxResults\");\n","import { createPaginator } from \"@smithy/core\";\nimport { ChimeSDKMessagingClient } from \"../ChimeSDKMessagingClient\";\nimport { ListChannelFlowsCommand, } from \"../commands/ListChannelFlowsCommand\";\nexport const paginateListChannelFlows = createPaginator(ChimeSDKMessagingClient, ListChannelFlowsCommand, \"NextToken\", \"NextToken\", \"MaxResults\");\n","import { createPaginator } from \"@smithy/core\";\nimport { ChimeSDKMessagingClient } from \"../ChimeSDKMessagingClient\";\nimport { ListChannelMembershipsForAppInstanceUserCommand, } from \"../commands/ListChannelMembershipsForAppInstanceUserCommand\";\nexport const paginateListChannelMembershipsForAppInstanceUser = createPaginator(ChimeSDKMessagingClient, ListChannelMembershipsForAppInstanceUserCommand, \"NextToken\", \"NextToken\", \"MaxResults\");\n","import { createPaginator } from \"@smithy/core\";\nimport { ChimeSDKMessagingClient } from \"../ChimeSDKMessagingClient\";\nimport { ListChannelMembershipsCommand, } from \"../commands/ListChannelMembershipsCommand\";\nexport const paginateListChannelMemberships = createPaginator(ChimeSDKMessagingClient, ListChannelMembershipsCommand, \"NextToken\", \"NextToken\", \"MaxResults\");\n","import { createPaginator } from \"@smithy/core\";\nimport { ChimeSDKMessagingClient } from \"../ChimeSDKMessagingClient\";\nimport { ListChannelMessagesCommand, } from \"../commands/ListChannelMessagesCommand\";\nexport const paginateListChannelMessages = createPaginator(ChimeSDKMessagingClient, ListChannelMessagesCommand, \"NextToken\", \"NextToken\", \"MaxResults\");\n","import { createPaginator } from \"@smithy/core\";\nimport { ChimeSDKMessagingClient } from \"../ChimeSDKMessagingClient\";\nimport { ListChannelModeratorsCommand, } from \"../commands/ListChannelModeratorsCommand\";\nexport const paginateListChannelModerators = createPaginator(ChimeSDKMessagingClient, ListChannelModeratorsCommand, \"NextToken\", \"NextToken\", \"MaxResults\");\n","import { createPaginator } from \"@smithy/core\";\nimport { ChimeSDKMessagingClient } from \"../ChimeSDKMessagingClient\";\nimport { ListChannelsAssociatedWithChannelFlowCommand, } from \"../commands/ListChannelsAssociatedWithChannelFlowCommand\";\nexport const paginateListChannelsAssociatedWithChannelFlow = createPaginator(ChimeSDKMessagingClient, ListChannelsAssociatedWithChannelFlowCommand, \"NextToken\", \"NextToken\", \"MaxResults\");\n","import { createPaginator } from \"@smithy/core\";\nimport { ChimeSDKMessagingClient } from \"../ChimeSDKMessagingClient\";\nimport { ListChannelsModeratedByAppInstanceUserCommand, } from \"../commands/ListChannelsModeratedByAppInstanceUserCommand\";\nexport const paginateListChannelsModeratedByAppInstanceUser = createPaginator(ChimeSDKMessagingClient, ListChannelsModeratedByAppInstanceUserCommand, \"NextToken\", \"NextToken\", \"MaxResults\");\n","import { createPaginator } from \"@smithy/core\";\nimport { ChimeSDKMessagingClient } from \"../ChimeSDKMessagingClient\";\nimport { ListChannelsCommand, } from \"../commands/ListChannelsCommand\";\nexport const paginateListChannels = createPaginator(ChimeSDKMessagingClient, ListChannelsCommand, \"NextToken\", \"NextToken\", \"MaxResults\");\n","import { createPaginator } from \"@smithy/core\";\nimport { ChimeSDKMessagingClient } from \"../ChimeSDKMessagingClient\";\nimport { ListSubChannelsCommand, } from \"../commands/ListSubChannelsCommand\";\nexport const paginateListSubChannels = createPaginator(ChimeSDKMessagingClient, ListSubChannelsCommand, \"NextToken\", \"NextToken\", \"MaxResults\");\n","import { createPaginator } from \"@smithy/core\";\nimport { ChimeSDKMessagingClient } from \"../ChimeSDKMessagingClient\";\nimport { SearchChannelsCommand, } from \"../commands/SearchChannelsCommand\";\nexport const paginateSearchChannels = createPaginator(ChimeSDKMessagingClient, SearchChannelsCommand, \"NextToken\", \"NextToken\", \"MaxResults\");\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { UAParser } from 'ua-parser-js';\n\nimport Destroyable, { isDestroyable } from '../destroyable/Destroyable';\nimport EventIngestionConfiguration from '../eventingestionconfiguration/EventIngestionConfiguration';\nimport EventObserver from '../eventobserver/EventObserver';\nimport DefaultMeetingEventReporter from '../eventreporter/DefaultMeetingEventReporter';\nimport EventReporter from '../eventreporter/EventReporter';\nimport EventsClientConfiguration from '../eventsclientconfiguration/EventsClientConfiguration';\nimport MeetingEventsClientConfiguration from '../eventsclientconfiguration/MeetingEventsClientConfiguration';\nimport Logger from '../logger/Logger';\nimport MeetingSessionConfiguration from '../meetingsession/MeetingSessionConfiguration';\nimport AsyncScheduler from '../scheduler/AsyncScheduler';\nimport Versioning from '../versioning/Versioning';\nimport AudioVideoEventAttributes from './AudioVideoEventAttributes';\nimport DeviceEventAttributes from './DeviceEventAttributes';\nimport EventAttributes from './EventAttributes';\nimport EventController from './EventController';\nimport EventName from './EventName';\nimport flattenEventAttributes from './flattenEventAttributes';\nimport MeetingHistoryState from './MeetingHistoryState';\nimport VideoFXEventAttributes from './VideoFXEventAttributes';\n\nexport default class DefaultEventController implements EventController, Destroyable {\n private static readonly UNAVAILABLE = 'Unavailable';\n\n // Use \"ua-parser-js\" over \"detect-browser\" to get more detailed information.\n // We can consider replacing \"detect-browser\" in DefaultBrowserBehavior.\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private parserResult: any;\n private browserMajorVersion: string;\n private meetingHistoryStates: { name: MeetingHistoryState; timestampMs: number }[] = [];\n private observerSet: Set = new Set();\n private logger: Logger;\n private configuration: MeetingSessionConfiguration;\n private _eventReporter: EventReporter;\n destroyed = false;\n\n // Compute these once so we're not doing work on each event.\n private browserName: string;\n private browserVersion: string;\n private deviceName: string;\n\n constructor(\n configuration: MeetingSessionConfiguration,\n logger: Logger,\n eventReporter?: EventReporter\n ) {\n this.logger = logger;\n this.configuration = configuration;\n this.setupEventReporter(configuration, logger, eventReporter);\n try {\n this.parserResult =\n navigator && navigator.userAgent ? new UAParser(navigator.userAgent).getResult() : null;\n } catch (error) {\n // This seems to never happen with ua-parser-js in reality, even with malformed strings.\n /* istanbul ignore next */\n this.logger.error(error.message);\n }\n\n this.browserMajorVersion =\n this.parserResult?.browser?.version?.split('.')[0] || DefaultEventController.UNAVAILABLE;\n this.browserName = this.parserResult?.browser.name || DefaultEventController.UNAVAILABLE;\n this.browserVersion = this.parserResult?.browser.version || DefaultEventController.UNAVAILABLE;\n this.deviceName =\n [this.parserResult?.device.vendor || '', this.parserResult?.device.model || '']\n .join(' ')\n .trim() || DefaultEventController.UNAVAILABLE;\n }\n\n addObserver(observer: EventObserver): void {\n this.observerSet.add(observer);\n }\n\n removeObserver(observer: EventObserver): void {\n this.observerSet.delete(observer);\n }\n\n private forEachObserver(observerFunc: (observer: EventObserver) => void): void {\n for (const observer of this.observerSet) {\n AsyncScheduler.nextTick(() => {\n /* istanbul ignore else */\n if (this.observerSet.has(observer)) {\n observerFunc(observer);\n }\n });\n }\n }\n\n async publishEvent(\n name: EventName,\n attributes?: AudioVideoEventAttributes | DeviceEventAttributes | VideoFXEventAttributes\n ): Promise {\n const timestampMs = Date.now();\n this.meetingHistoryStates.push({\n name,\n timestampMs,\n });\n // Make a single frozen copy of the event, reusing the object returned by\n // `getAttributes` to avoid copying too much.\n const eventAttributes = Object.freeze(\n Object.assign(this.getAttributes(timestampMs), attributes)\n );\n // Publishes event to observers\n this.forEachObserver((observer: EventObserver) => {\n observer.eventDidReceive(name, eventAttributes);\n });\n // Reports event to the ingestion service\n this.reportEvent(name, timestampMs, attributes);\n }\n\n private async reportEvent(\n name: MeetingHistoryState,\n timestampMs: number,\n attributes?: AudioVideoEventAttributes | DeviceEventAttributes | VideoFXEventAttributes\n ): Promise {\n let flattenedAttributes;\n try {\n if (attributes) {\n flattenedAttributes = flattenEventAttributes(attributes);\n }\n await this.eventReporter?.reportEvent(timestampMs, name, flattenedAttributes);\n } catch (error) {\n /* istanbul ignore next */\n this.logger.error(`Error reporting event ${error}`);\n }\n }\n\n private setupEventReporter(\n configuration: MeetingSessionConfiguration,\n logger: Logger,\n eventReporter?: EventReporter\n ): void {\n if (eventReporter) {\n this._eventReporter = eventReporter;\n } else if (configuration.urls) {\n // Attempts to set up a event reporter using the meeting configuration if one is not provided\n const eventIngestionURL = configuration.urls.eventIngestionURL;\n if (eventIngestionURL) {\n this.logger.info(`Event ingestion URL is present in the configuration`);\n const {\n meetingId,\n credentials: { attendeeId, joinToken },\n } = configuration;\n const meetingEventsClientConfiguration: EventsClientConfiguration = new MeetingEventsClientConfiguration(\n meetingId,\n attendeeId,\n joinToken\n );\n const eventIngestionConfiguration = new EventIngestionConfiguration(\n meetingEventsClientConfiguration,\n eventIngestionURL\n );\n this._eventReporter = new DefaultMeetingEventReporter(eventIngestionConfiguration, logger);\n }\n }\n }\n\n private getAttributes(timestampMs: number): EventAttributes {\n return {\n attendeeId: this.configuration.credentials.attendeeId,\n browserMajorVersion: this.browserMajorVersion,\n browserName: this.browserName,\n browserVersion: this.browserVersion,\n deviceName: this.deviceName,\n externalMeetingId:\n typeof this.configuration.externalMeetingId === 'string'\n ? this.configuration.externalMeetingId\n : '',\n externalUserId: this.configuration.credentials.externalUserId,\n meetingHistory: this.meetingHistoryStates,\n meetingId: this.configuration.meetingId,\n osName: this.parserResult?.os.name || DefaultEventController.UNAVAILABLE,\n osVersion: this.parserResult?.os.version || DefaultEventController.UNAVAILABLE,\n sdkVersion: Versioning.sdkVersion,\n sdkName: Versioning.sdkName,\n timestampMs,\n };\n }\n\n get eventReporter(): EventReporter {\n return this._eventReporter;\n }\n\n /**\n * Clean up this instance and resources that it created.\n *\n * After calling `destroy`, internal fields like `eventReporter` will be unavailable.\n */\n async destroy(): Promise {\n if (isDestroyable(this.eventReporter)) {\n await this.eventReporter.destroy();\n }\n this.logger = undefined;\n this.configuration = undefined;\n this._eventReporter = undefined;\n this.destroyed = true;\n }\n}\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['devicefarm'] = {};\nAWS.DeviceFarm = Service.defineService('devicefarm', ['2015-06-23']);\nObject.defineProperty(apiLoader.services['devicefarm'], '2015-06-23', {\n get: function get() {\n var model = require('../apis/devicefarm-2015-06-23.min.json');\n model.paginators = require('../apis/devicefarm-2015-06-23.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.DeviceFarm;\n","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';\n\nrequire('./ie11');\n\n// React 16+ relies on Map, Set, and requestAnimationFrame\nrequire('core-js/features/map');\nrequire('core-js/features/set');\n\nrequire('raf').polyfill();\n","/**\n * Node.js module for Forge mask generation functions.\n *\n * @author Stefan Siegl\n *\n * Copyright 2012 Stefan Siegl \n */\nvar forge = require('./forge');\nrequire('./mgf1');\n\nmodule.exports = forge.mgf = forge.mgf || {};\nforge.mgf.mgf1 = forge.mgf1;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['workdocs'] = {};\nAWS.WorkDocs = Service.defineService('workdocs', ['2016-05-01']);\nObject.defineProperty(apiLoader.services['workdocs'], '2016-05-01', {\n get: function get() {\n var model = require('../apis/workdocs-2016-05-01.min.json');\n model.paginators = require('../apis/workdocs-2016-05-01.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.WorkDocs;\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n// See state defs from inflate.js\nconst BAD = 16209; /* got a data error -- remain here until reset */\nconst TYPE = 16191; /* i: waiting for type bits, including last-flag bit */\n\n/*\n Decode literal, length, and distance codes and write out the resulting\n literal and match bytes until either not enough input or output is\n available, an end-of-block is encountered, or a data error is encountered.\n When large enough input and output buffers are supplied to inflate(), for\n example, a 16K input buffer and a 64K output buffer, more than 95% of the\n inflate execution time is spent in this routine.\n\n Entry assumptions:\n\n state.mode === LEN\n strm.avail_in >= 6\n strm.avail_out >= 258\n start >= strm.avail_out\n state.bits < 8\n\n On return, state.mode is one of:\n\n LEN -- ran out of enough output space or enough available input\n TYPE -- reached end of block code, inflate() to interpret next block\n BAD -- error in block data\n\n Notes:\n\n - The maximum input bits used by a length/distance pair is 15 bits for the\n length code, 5 bits for the length extra, 15 bits for the distance code,\n and 13 bits for the distance extra. This totals 48 bits, or six bytes.\n Therefore if strm.avail_in >= 6, then there is enough input to avoid\n checking for available input while decoding.\n\n - The maximum bytes that a single length/distance pair can output is 258\n bytes, which is the maximum length that can be coded. inflate_fast()\n requires strm.avail_out >= 258 for each loop to avoid checking for\n output space.\n */\nmodule.exports = function inflate_fast(strm, start) {\n let _in; /* local strm.input */\n let last; /* have enough input while in < last */\n let _out; /* local strm.output */\n let beg; /* inflate()'s initial strm.output */\n let end; /* while out < end, enough space available */\n//#ifdef INFLATE_STRICT\n let dmax; /* maximum distance from zlib header */\n//#endif\n let wsize; /* window size or zero if not using window */\n let whave; /* valid bytes in the window */\n let wnext; /* window write index */\n // Use `s_window` instead `window`, avoid conflict with instrumentation tools\n let s_window; /* allocated sliding window, if wsize != 0 */\n let hold; /* local strm.hold */\n let bits; /* local strm.bits */\n let lcode; /* local strm.lencode */\n let dcode; /* local strm.distcode */\n let lmask; /* mask for first level of length codes */\n let dmask; /* mask for first level of distance codes */\n let here; /* retrieved table entry */\n let op; /* code bits, operation, extra bits, or */\n /* window position, window bytes to copy */\n let len; /* match length, unused bytes */\n let dist; /* match distance */\n let from; /* where to copy match from */\n let from_source;\n\n\n let input, output; // JS specific, because we have no pointers\n\n /* copy state to local variables */\n const state = strm.state;\n //here = state.here;\n _in = strm.next_in;\n input = strm.input;\n last = _in + (strm.avail_in - 5);\n _out = strm.next_out;\n output = strm.output;\n beg = _out - (start - strm.avail_out);\n end = _out + (strm.avail_out - 257);\n//#ifdef INFLATE_STRICT\n dmax = state.dmax;\n//#endif\n wsize = state.wsize;\n whave = state.whave;\n wnext = state.wnext;\n s_window = state.window;\n hold = state.hold;\n bits = state.bits;\n lcode = state.lencode;\n dcode = state.distcode;\n lmask = (1 << state.lenbits) - 1;\n dmask = (1 << state.distbits) - 1;\n\n\n /* decode literals and length/distances until end-of-block or not enough\n input data or output space */\n\n top:\n do {\n if (bits < 15) {\n hold += input[_in++] << bits;\n bits += 8;\n hold += input[_in++] << bits;\n bits += 8;\n }\n\n here = lcode[hold & lmask];\n\n dolen:\n for (;;) { // Goto emulation\n op = here >>> 24/*here.bits*/;\n hold >>>= op;\n bits -= op;\n op = (here >>> 16) & 0xff/*here.op*/;\n if (op === 0) { /* literal */\n //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?\n // \"inflate: literal '%c'\\n\" :\n // \"inflate: literal 0x%02x\\n\", here.val));\n output[_out++] = here & 0xffff/*here.val*/;\n }\n else if (op & 16) { /* length base */\n len = here & 0xffff/*here.val*/;\n op &= 15; /* number of extra bits */\n if (op) {\n if (bits < op) {\n hold += input[_in++] << bits;\n bits += 8;\n }\n len += hold & ((1 << op) - 1);\n hold >>>= op;\n bits -= op;\n }\n //Tracevv((stderr, \"inflate: length %u\\n\", len));\n if (bits < 15) {\n hold += input[_in++] << bits;\n bits += 8;\n hold += input[_in++] << bits;\n bits += 8;\n }\n here = dcode[hold & dmask];\n\n dodist:\n for (;;) { // goto emulation\n op = here >>> 24/*here.bits*/;\n hold >>>= op;\n bits -= op;\n op = (here >>> 16) & 0xff/*here.op*/;\n\n if (op & 16) { /* distance base */\n dist = here & 0xffff/*here.val*/;\n op &= 15; /* number of extra bits */\n if (bits < op) {\n hold += input[_in++] << bits;\n bits += 8;\n if (bits < op) {\n hold += input[_in++] << bits;\n bits += 8;\n }\n }\n dist += hold & ((1 << op) - 1);\n//#ifdef INFLATE_STRICT\n if (dist > dmax) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD;\n break top;\n }\n//#endif\n hold >>>= op;\n bits -= op;\n //Tracevv((stderr, \"inflate: distance %u\\n\", dist));\n op = _out - beg; /* max distance in output */\n if (dist > op) { /* see if copy from window */\n op = dist - op; /* distance back in window */\n if (op > whave) {\n if (state.sane) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD;\n break top;\n }\n\n// (!) This block is disabled in zlib defaults,\n// don't enable it for binary compatibility\n//#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR\n// if (len <= op - whave) {\n// do {\n// output[_out++] = 0;\n// } while (--len);\n// continue top;\n// }\n// len -= op - whave;\n// do {\n// output[_out++] = 0;\n// } while (--op > whave);\n// if (op === 0) {\n// from = _out - dist;\n// do {\n// output[_out++] = output[from++];\n// } while (--len);\n// continue top;\n// }\n//#endif\n }\n from = 0; // window index\n from_source = s_window;\n if (wnext === 0) { /* very common case */\n from += wsize - op;\n if (op < len) { /* some from window */\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = _out - dist; /* rest from output */\n from_source = output;\n }\n }\n else if (wnext < op) { /* wrap around window */\n from += wsize + wnext - op;\n op -= wnext;\n if (op < len) { /* some from end of window */\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = 0;\n if (wnext < len) { /* some from start of window */\n op = wnext;\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = _out - dist; /* rest from output */\n from_source = output;\n }\n }\n }\n else { /* contiguous in window */\n from += wnext - op;\n if (op < len) { /* some from window */\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = _out - dist; /* rest from output */\n from_source = output;\n }\n }\n while (len > 2) {\n output[_out++] = from_source[from++];\n output[_out++] = from_source[from++];\n output[_out++] = from_source[from++];\n len -= 3;\n }\n if (len) {\n output[_out++] = from_source[from++];\n if (len > 1) {\n output[_out++] = from_source[from++];\n }\n }\n }\n else {\n from = _out - dist; /* copy direct from output */\n do { /* minimum length is three */\n output[_out++] = output[from++];\n output[_out++] = output[from++];\n output[_out++] = output[from++];\n len -= 3;\n } while (len > 2);\n if (len) {\n output[_out++] = output[from++];\n if (len > 1) {\n output[_out++] = output[from++];\n }\n }\n }\n }\n else if ((op & 64) === 0) { /* 2nd level distance code */\n here = dcode[(here & 0xffff)/*here.val*/ + (hold & ((1 << op) - 1))];\n continue dodist;\n }\n else {\n strm.msg = 'invalid distance code';\n state.mode = BAD;\n break top;\n }\n\n break; // need to emulate goto via \"continue\"\n }\n }\n else if ((op & 64) === 0) { /* 2nd level length code */\n here = lcode[(here & 0xffff)/*here.val*/ + (hold & ((1 << op) - 1))];\n continue dolen;\n }\n else if (op & 32) { /* end-of-block */\n //Tracevv((stderr, \"inflate: end of block\\n\"));\n state.mode = TYPE;\n break top;\n }\n else {\n strm.msg = 'invalid literal/length code';\n state.mode = BAD;\n break top;\n }\n\n break; // need to emulate goto via \"continue\"\n }\n } while (_in < last && _out < end);\n\n /* return unused bytes (on entry, bits < 8, so in won't go too far back) */\n len = bits >> 3;\n _in -= len;\n bits -= len << 3;\n hold &= (1 << bits) - 1;\n\n /* update state and return */\n strm.next_in = _in;\n strm.next_out = _out;\n strm.avail_in = (_in < last ? 5 + (last - _in) : 5 - (_in - last));\n strm.avail_out = (_out < end ? 257 + (end - _out) : 257 - (_out - end));\n state.hold = hold;\n state.bits = bits;\n return;\n};\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar userAgent = require('../internals/environment-user-agent');\n\nvar process = globalThis.process;\nvar Deno = globalThis.Deno;\nvar versions = process && process.versions || Deno && Deno.version;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n match = v8.split('.');\n // in old Chrome, versions of V8 isn't V8 = Chrome / 10\n // but their correct versions are not interesting for us\n version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]);\n}\n\n// BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0`\n// so check `userAgent` even if `.v8` exists, but 0\nif (!version && userAgent) {\n match = userAgent.match(/Edge\\/(\\d+)/);\n if (!match || match[1] >= 74) {\n match = userAgent.match(/Chrome\\/(\\d+)/);\n if (match) version = +match[1];\n }\n}\n\nmodule.exports = version;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['kinesisvideomedia'] = {};\nAWS.KinesisVideoMedia = Service.defineService('kinesisvideomedia', ['2017-09-30']);\nObject.defineProperty(apiLoader.services['kinesisvideomedia'], '2017-09-30', {\n get: function get() {\n var model = require('../apis/kinesis-video-media-2017-09-30.min.json');\n model.paginators = require('../apis/kinesis-video-media-2017-09-30.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.KinesisVideoMedia;\n","'use strict';\nvar $ = require('../internals/export');\nvar bind = require('../internals/function-bind-context');\nvar aMap = require('../internals/a-map');\nvar MapHelpers = require('../internals/map-helpers');\nvar iterate = require('../internals/map-iterate');\n\nvar Map = MapHelpers.Map;\nvar set = MapHelpers.set;\n\n// `Map.prototype.mapValues` method\n// https://github.com/tc39/proposal-collection-methods\n$({ target: 'Map', proto: true, real: true, forced: true }, {\n mapValues: function mapValues(callbackfn /* , thisArg */) {\n var map = aMap(this);\n var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n var newMap = new Map();\n iterate(map, function (value, key) {\n set(newMap, key, boundFunction(value, key, map));\n });\n return newMap;\n }\n});\n","var Shape = require('./shape');\n\nvar util = require('../util');\nvar property = util.property;\nvar memoizedProperty = util.memoizedProperty;\n\nfunction Operation(name, operation, options) {\n var self = this;\n options = options || {};\n\n property(this, 'name', operation.name || name);\n property(this, 'api', options.api, false);\n\n operation.http = operation.http || {};\n property(this, 'endpoint', operation.endpoint);\n property(this, 'httpMethod', operation.http.method || 'POST');\n property(this, 'httpPath', operation.http.requestUri || '/');\n property(this, 'authtype', operation.authtype || '');\n property(\n this,\n 'endpointDiscoveryRequired',\n operation.endpointdiscovery ?\n (operation.endpointdiscovery.required ? 'REQUIRED' : 'OPTIONAL') :\n 'NULL'\n );\n\n // httpChecksum replaces usage of httpChecksumRequired, but some APIs\n // (s3control) still uses old trait.\n var httpChecksumRequired = operation.httpChecksumRequired\n || (operation.httpChecksum && operation.httpChecksum.requestChecksumRequired);\n property(this, 'httpChecksumRequired', httpChecksumRequired, false);\n\n memoizedProperty(this, 'input', function() {\n if (!operation.input) {\n return new Shape.create({type: 'structure'}, options);\n }\n return Shape.create(operation.input, options);\n });\n\n memoizedProperty(this, 'output', function() {\n if (!operation.output) {\n return new Shape.create({type: 'structure'}, options);\n }\n return Shape.create(operation.output, options);\n });\n\n memoizedProperty(this, 'errors', function() {\n var list = [];\n if (!operation.errors) return null;\n\n for (var i = 0; i < operation.errors.length; i++) {\n list.push(Shape.create(operation.errors[i], options));\n }\n\n return list;\n });\n\n memoizedProperty(this, 'paginator', function() {\n return options.api.paginators[name];\n });\n\n if (options.documentation) {\n property(this, 'documentation', operation.documentation);\n property(this, 'documentationUrl', operation.documentationUrl);\n }\n\n // idempotentMembers only tracks top-level input shapes\n memoizedProperty(this, 'idempotentMembers', function() {\n var idempotentMembers = [];\n var input = self.input;\n var members = input.members;\n if (!input.members) {\n return idempotentMembers;\n }\n for (var name in members) {\n if (!members.hasOwnProperty(name)) {\n continue;\n }\n if (members[name].isIdempotent === true) {\n idempotentMembers.push(name);\n }\n }\n return idempotentMembers;\n });\n\n memoizedProperty(this, 'hasEventOutput', function() {\n var output = self.output;\n return hasEventStream(output);\n });\n}\n\nfunction hasEventStream(topLevelShape) {\n var members = topLevelShape.members;\n var payload = topLevelShape.payload;\n\n if (!topLevelShape.members) {\n return false;\n }\n\n if (payload) {\n var payloadMember = members[payload];\n return payloadMember.isEventStream;\n }\n\n // check if any member is an event stream\n for (var name in members) {\n if (!members.hasOwnProperty(name)) {\n if (members[name].isEventStream === true) {\n return true;\n }\n }\n }\n return false;\n}\n\n/**\n * @api private\n */\nmodule.exports = Operation;\n","'use strict';\nvar store = require('../internals/shared-store');\n\nmodule.exports = function (key, value) {\n return store[key] || (store[key] = value || {});\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nexport enum SDPCandidateType {\n Host = 'host',\n ServerReflexive = 'srflx',\n PeerReflexive = 'prflx',\n Relay = 'relay',\n}\n\nexport default SDPCandidateType;\n","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar toSetLike = require('../internals/to-set-like');\nvar $isSubsetOf = require('../internals/set-is-subset-of');\n\n// `Set.prototype.isSubsetOf` method\n// https://github.com/tc39/proposal-set-methods\n// TODO: Obsolete version, remove from `core-js@4`\n$({ target: 'Set', proto: true, real: true, forced: true }, {\n isSubsetOf: function isSubsetOf(other) {\n return call($isSubsetOf, this, toSetLike(other));\n }\n});\n","var util = require('../core').util;\nvar typeOf = require('./types').typeOf;\n\n/**\n * @api private\n */\nvar memberTypeToSetType = {\n 'String': 'String',\n 'Number': 'Number',\n 'NumberValue': 'Number',\n 'Binary': 'Binary'\n};\n\n/**\n * @api private\n */\nvar DynamoDBSet = util.inherit({\n\n constructor: function Set(list, options) {\n options = options || {};\n this.wrapperName = 'Set';\n this.initialize(list, options.validate);\n },\n\n initialize: function(list, validate) {\n var self = this;\n self.values = [].concat(list);\n self.detectType();\n if (validate) {\n self.validate();\n }\n },\n\n detectType: function() {\n this.type = memberTypeToSetType[typeOf(this.values[0])];\n if (!this.type) {\n throw util.error(new Error(), {\n code: 'InvalidSetType',\n message: 'Sets can contain string, number, or binary values'\n });\n }\n },\n\n validate: function() {\n var self = this;\n var length = self.values.length;\n var values = self.values;\n for (var i = 0; i < length; i++) {\n if (memberTypeToSetType[typeOf(values[i])] !== self.type) {\n throw util.error(new Error(), {\n code: 'InvalidType',\n message: self.type + ' Set contains ' + typeOf(values[i]) + ' value'\n });\n }\n }\n },\n\n /**\n * Render the underlying values only when converting to JSON.\n */\n toJSON: function() {\n var self = this;\n return self.values;\n }\n\n});\n\n/**\n * @api private\n */\nmodule.exports = DynamoDBSet;\n","'use strict';\nvar aSet = require('../internals/a-set');\nvar size = require('../internals/set-size');\nvar iterate = require('../internals/set-iterate');\nvar getSetRecord = require('../internals/get-set-record');\n\n// `Set.prototype.isSubsetOf` method\n// https://tc39.github.io/proposal-set-methods/#Set.prototype.isSubsetOf\nmodule.exports = function isSubsetOf(other) {\n var O = aSet(this);\n var otherRec = getSetRecord(other);\n if (size(O) > otherRec.size) return false;\n return iterate(O, function (e) {\n if (!otherRec.includes(e)) return false;\n }, true) !== false;\n};\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['elb'] = {};\nAWS.ELB = Service.defineService('elb', ['2012-06-01']);\nObject.defineProperty(apiLoader.services['elb'], '2012-06-01', {\n get: function get() {\n var model = require('../apis/elasticloadbalancing-2012-06-01.min.json');\n model.paginators = require('../apis/elasticloadbalancing-2012-06-01.paginators.json').pagination;\n model.waiters = require('../apis/elasticloadbalancing-2012-06-01.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.ELB;\n","var AWS = require('../core');\n\n// pull in CloudFront signer\nrequire('../cloudfront/signer');\n\nAWS.util.update(AWS.CloudFront.prototype, {\n\n setupRequestListeners: function setupRequestListeners(request) {\n request.addListener('extractData', AWS.util.hoistPayloadMember);\n }\n\n});\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport GetUserMediaError from './GetUserMediaError';\n\nexport default class PermissionDeniedError extends GetUserMediaError {\n constructor(cause?: Error, message?: string) {\n super(cause, message);\n this.name = 'PermissionDeniedError';\n }\n}\n","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar toSetLike = require('../internals/to-set-like');\nvar $difference = require('../internals/set-difference');\n\n// `Set.prototype.difference` method\n// https://github.com/tc39/proposal-set-methods\n// TODO: Obsolete version, remove from `core-js@4`\n$({ target: 'Set', proto: true, real: true, forced: true }, {\n difference: function difference(other) {\n return call($difference, this, toSetLike(other));\n }\n});\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['lexruntimev2'] = {};\nAWS.LexRuntimeV2 = Service.defineService('lexruntimev2', ['2020-08-07']);\nObject.defineProperty(apiLoader.services['lexruntimev2'], '2020-08-07', {\n get: function get() {\n var model = require('../apis/runtime.lex.v2-2020-08-07.min.json');\n model.paginators = require('../apis/runtime.lex.v2-2020-08-07.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.LexRuntimeV2;\n","'use strict';\n\nvar $defineProperty = require('es-define-property');\n\nvar hasPropertyDescriptors = function hasPropertyDescriptors() {\n\treturn !!$defineProperty;\n};\n\nhasPropertyDescriptors.hasArrayLengthDefineBug = function hasArrayLengthDefineBug() {\n\t// node v0.6 has a bug where array lengths can be Set but not Defined\n\tif (!$defineProperty) {\n\t\treturn null;\n\t}\n\ttry {\n\t\treturn $defineProperty([], 'length', { value: 1 }).length !== 1;\n\t} catch (e) {\n\t\t// In Firefox 4-22, defining length on an array throws an exception.\n\t\treturn true;\n\t}\n};\n\nmodule.exports = hasPropertyDescriptors;\n","'use strict';\n\nvar utils = require('../utils');\n\nmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n utils.forEach(headers, function processHeader(value, name) {\n if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n headers[normalizedName] = value;\n delete headers[name];\n }\n });\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nexport default class ClientVideoStreamReceivingReport {\n attendeeId: string;\n receivedAverageBitrateKbps: number;\n expectedAverageBitrateKbps: number;\n}\n","/**\n * Node.js module for all known Forge message digests.\n *\n * @author Dave Longley\n *\n * Copyright 2011-2017 Digital Bazaar, Inc.\n */\nmodule.exports = require('./md');\n\nrequire('./md5');\nrequire('./sha1');\nrequire('./sha256');\nrequire('./sha512');\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport ClientMetricReport from '../clientmetricreport/ClientMetricReport';\nimport DefaultVideoStreamIdSet from '../videostreamidset/DefaultVideoStreamIdSet';\nimport DefaultVideoStreamIndex from '../videostreamindex/DefaultVideoStreamIndex';\nimport VideoDownlinkBandwidthPolicy from './VideoDownlinkBandwidthPolicy';\n\nexport default class NoVideoDownlinkBandwidthPolicy implements VideoDownlinkBandwidthPolicy {\n reset(): void {}\n updateIndex(_videoIndex: DefaultVideoStreamIndex): void {}\n updateMetrics(_clientMetricReport: ClientMetricReport): void {}\n wantsResubscribe(): boolean {\n return false;\n }\n chooseSubscriptions(): DefaultVideoStreamIdSet {\n return new DefaultVideoStreamIdSet();\n }\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { SdkServerSideNetworkAdaption } from '../signalingprotocol/SignalingProtocol';\n\n/**\n * [[ServerSideNetworkAdaption]] represents additional server side features that can be enabled for network adaption.\n */\nexport enum ServerSideNetworkAdaption {\n /**\n * This value will currently be overwritten to `BandwidthProbingAndRemoteVideoQualityAdaption`\n */\n Default,\n\n /**\n * @deprecated: Please switch to 'BandwidthProbingAndRemoteVideoQualityAdaption'\n */\n None,\n\n /**\n * @deprecated: Please switch to 'BandwidthProbingAndRemoteVideoQualityAdaption'.\n */\n BandwidthProbing,\n\n /**\n * Disable internal policy behavior and proxy priorities to server to automatically\n * switch, pause, or resume streams based on server calculated network constraints. This will\n * significantly improve response times when network constraints occur. This will also support the\n * features covered in `BandwidthProbing` though possibly with different implementation details.\n *\n * End users should overall see reduced video freezes, reduced broken audio, and reduced packet loss.\n * The value impacts response to network events and may lead to remote video pauses/downgrades\n * that did not occur before.\n */\n BandwidthProbingAndRemoteVideoQualityAdaption,\n}\n\nexport default ServerSideNetworkAdaption;\n\nexport function serverSideNetworkAdaptionIsNoneOrDefault(\n adaption: ServerSideNetworkAdaption\n): boolean {\n return (\n adaption === ServerSideNetworkAdaption.None || adaption === ServerSideNetworkAdaption.Default\n );\n}\n\nexport function convertServerSideNetworkAdaptionEnumFromSignaled(\n adaption: SdkServerSideNetworkAdaption\n): ServerSideNetworkAdaption {\n switch (adaption) {\n case SdkServerSideNetworkAdaption.DEFAULT:\n return ServerSideNetworkAdaption.Default;\n case SdkServerSideNetworkAdaption.NONE:\n return ServerSideNetworkAdaption.None;\n case SdkServerSideNetworkAdaption.BANDWIDTH_PROBING:\n return ServerSideNetworkAdaption.BandwidthProbing;\n case SdkServerSideNetworkAdaption.BANDWIDTH_PROBING_AND_VIDEO_QUALITY_ADAPTION:\n return ServerSideNetworkAdaption.BandwidthProbingAndRemoteVideoQualityAdaption;\n }\n}\n\nexport function convertServerSideNetworkAdaptionEnumToSignaled(\n adaption: ServerSideNetworkAdaption\n): SdkServerSideNetworkAdaption {\n switch (adaption) {\n case ServerSideNetworkAdaption.Default:\n return SdkServerSideNetworkAdaption.DEFAULT;\n case ServerSideNetworkAdaption.None:\n return SdkServerSideNetworkAdaption.NONE;\n case ServerSideNetworkAdaption.BandwidthProbing:\n return SdkServerSideNetworkAdaption.BANDWIDTH_PROBING;\n case ServerSideNetworkAdaption.BandwidthProbingAndRemoteVideoQualityAdaption:\n return SdkServerSideNetworkAdaption.BANDWIDTH_PROBING_AND_VIDEO_QUALITY_ADAPTION;\n }\n}\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['firehose'] = {};\nAWS.Firehose = Service.defineService('firehose', ['2015-08-04']);\nObject.defineProperty(apiLoader.services['firehose'], '2015-08-04', {\n get: function get() {\n var model = require('../apis/firehose-2015-08-04.min.json');\n model.paginators = require('../apis/firehose-2015-08-04.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.Firehose;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['ssm'] = {};\nAWS.SSM = Service.defineService('ssm', ['2014-11-06']);\nObject.defineProperty(apiLoader.services['ssm'], '2014-11-06', {\n get: function get() {\n var model = require('../apis/ssm-2014-11-06.min.json');\n model.paginators = require('../apis/ssm-2014-11-06.paginators.json').pagination;\n model.waiters = require('../apis/ssm-2014-11-06.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.SSM;\n","'use strict';\n// we can't use just `it == null` since of `document.all` special case\n// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot-aec\nmodule.exports = function (it) {\n return it === null || it === undefined;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","'use strict';\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar Iterators = require('../internals/iterators');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar ArrayPrototype = Array.prototype;\n\n// check on default Array iterator\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it);\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport Destroyable, { isDestroyable } from '../destroyable/Destroyable';\nimport EventBuffer from '../eventbuffer/EventBuffer';\nimport InMemoryJSONEventBuffer from '../eventbuffer/InMemoryJSONEventBuffer';\nimport MeetingHistoryState from '../eventcontroller/MeetingHistoryState';\nimport EventIngestionConfiguration from '../eventingestionconfiguration/EventIngestionConfiguration';\nimport Logger from '../logger/Logger';\nimport EventData from './EventData';\nimport EventReporter from './EventReporter';\n\nexport default class DefaultMeetingEventReporter implements EventReporter, Destroyable {\n private eventBuffer: EventBuffer;\n private logger: Logger;\n private reportingEvents = false;\n private eventsToIgnore: string[];\n private importantEvents: MeetingHistoryState[] = [\n 'meetingEnded',\n 'meetingFailed',\n 'meetingStartFailed',\n 'audioInputFailed',\n 'videoInputFailed',\n 'meetingStartSucceeded',\n 'deviceLabelTriggerFailed',\n ];\n destroyed = false;\n\n constructor(eventIngestionConfiguration: EventIngestionConfiguration, logger: Logger) {\n const {\n eventsClientConfiguration,\n ingestionURL,\n eventBufferConfiguration,\n } = eventIngestionConfiguration;\n const { eventsToIgnore } = eventsClientConfiguration;\n this.eventBuffer = new InMemoryJSONEventBuffer(\n eventBufferConfiguration,\n eventsClientConfiguration,\n ingestionURL,\n this.importantEvents,\n logger\n );\n this.logger = logger;\n this.eventsToIgnore = eventsToIgnore;\n this.start();\n }\n\n start(): void {\n if (this.reportingEvents) {\n return;\n }\n try {\n this.eventBuffer.start();\n this.logger.info('Event reporting started');\n this.reportingEvents = true;\n } catch (error) {\n /* istanbul ignore next */\n this.logger.error(`Event Reporting - Error starting the event buffer ${error}`);\n }\n }\n\n stop(): void {\n if (!this.reportingEvents) {\n return;\n }\n try {\n this.eventBuffer.stop();\n this.logger.info('Event reporting stopped');\n this.reportingEvents = false;\n } catch (error) {\n /* istanbul ignore next */\n this.logger.error(`Event Reporting - Error stopping the event buffer ${error}`);\n }\n }\n\n async reportEvent(\n ts: number,\n name: MeetingHistoryState,\n attributes?: { [key: string]: string | number }\n ): Promise {\n this.logger.debug(\n `Event Reporting - DefaultMeetingEventReporter - event received in reportEvent ${ts}, ${name}, ${JSON.stringify(\n attributes\n )}`\n );\n if (this.eventsToIgnore.includes(name)) {\n this.logger.debug(\n `Event Reporting - DefaultMeetingEventReporter - ${name} event will be ignored as it is in events to ignore`\n );\n return;\n }\n try {\n this.logger.debug(\n `Event Reporting - DefaultMeetingEventReporter - adding item to event buffer`\n );\n await this.eventBuffer.addItem({ ts, name, attributes });\n } catch (error) {\n this.logger.error(`Event Reporting - Error adding event to buffer ${error}`);\n }\n }\n\n async destroy(): Promise {\n this.destroyed = true;\n this.stop();\n /* istanbul ignore else */\n if (isDestroyable(this.eventBuffer)) {\n this.eventBuffer.destroy();\n }\n this.eventBuffer = undefined;\n }\n}\n","/**\n * Javascript implementation of RSA-KEM.\n *\n * @author Lautaro Cozzani Rodriguez\n * @author Dave Longley\n *\n * Copyright (c) 2014 Lautaro Cozzani \n * Copyright (c) 2014 Digital Bazaar, Inc.\n */\nvar forge = require('./forge');\nrequire('./util');\nrequire('./random');\nrequire('./jsbn');\n\nmodule.exports = forge.kem = forge.kem || {};\n\nvar BigInteger = forge.jsbn.BigInteger;\n\n/**\n * The API for the RSA Key Encapsulation Mechanism (RSA-KEM) from ISO 18033-2.\n */\nforge.kem.rsa = {};\n\n/**\n * Creates an RSA KEM API object for generating a secret asymmetric key.\n *\n * The symmetric key may be generated via a call to 'encrypt', which will\n * produce a ciphertext to be transmitted to the recipient and a key to be\n * kept secret. The ciphertext is a parameter to be passed to 'decrypt' which\n * will produce the same secret key for the recipient to use to decrypt a\n * message that was encrypted with the secret key.\n *\n * @param kdf the KDF API to use (eg: new forge.kem.kdf1()).\n * @param options the options to use.\n * [prng] a custom crypto-secure pseudo-random number generator to use,\n * that must define \"getBytesSync\".\n */\nforge.kem.rsa.create = function(kdf, options) {\n options = options || {};\n var prng = options.prng || forge.random;\n\n var kem = {};\n\n /**\n * Generates a secret key and its encapsulation.\n *\n * @param publicKey the RSA public key to encrypt with.\n * @param keyLength the length, in bytes, of the secret key to generate.\n *\n * @return an object with:\n * encapsulation: the ciphertext for generating the secret key, as a\n * binary-encoded string of bytes.\n * key: the secret key to use for encrypting a message.\n */\n kem.encrypt = function(publicKey, keyLength) {\n // generate a random r where 1 < r < n\n var byteLength = Math.ceil(publicKey.n.bitLength() / 8);\n var r;\n do {\n r = new BigInteger(\n forge.util.bytesToHex(prng.getBytesSync(byteLength)),\n 16).mod(publicKey.n);\n } while(r.compareTo(BigInteger.ONE) <= 0);\n\n // prepend r with zeros\n r = forge.util.hexToBytes(r.toString(16));\n var zeros = byteLength - r.length;\n if(zeros > 0) {\n r = forge.util.fillString(String.fromCharCode(0), zeros) + r;\n }\n\n // encrypt the random\n var encapsulation = publicKey.encrypt(r, 'NONE');\n\n // generate the secret key\n var key = kdf.generate(r, keyLength);\n\n return {encapsulation: encapsulation, key: key};\n };\n\n /**\n * Decrypts an encapsulated secret key.\n *\n * @param privateKey the RSA private key to decrypt with.\n * @param encapsulation the ciphertext for generating the secret key, as\n * a binary-encoded string of bytes.\n * @param keyLength the length, in bytes, of the secret key to generate.\n *\n * @return the secret key as a binary-encoded string of bytes.\n */\n kem.decrypt = function(privateKey, encapsulation, keyLength) {\n // decrypt the encapsulation and generate the secret key\n var r = privateKey.decrypt(encapsulation, 'NONE');\n return kdf.generate(r, keyLength);\n };\n\n return kem;\n};\n\n// TODO: add forge.kem.kdf.create('KDF1', {md: ..., ...}) API?\n\n/**\n * Creates a key derivation API object that implements KDF1 per ISO 18033-2.\n *\n * @param md the hash API to use.\n * @param [digestLength] an optional digest length that must be positive and\n * less than or equal to md.digestLength.\n *\n * @return a KDF1 API object.\n */\nforge.kem.kdf1 = function(md, digestLength) {\n _createKDF(this, md, 0, digestLength || md.digestLength);\n};\n\n/**\n * Creates a key derivation API object that implements KDF2 per ISO 18033-2.\n *\n * @param md the hash API to use.\n * @param [digestLength] an optional digest length that must be positive and\n * less than or equal to md.digestLength.\n *\n * @return a KDF2 API object.\n */\nforge.kem.kdf2 = function(md, digestLength) {\n _createKDF(this, md, 1, digestLength || md.digestLength);\n};\n\n/**\n * Creates a KDF1 or KDF2 API object.\n *\n * @param md the hash API to use.\n * @param counterStart the starting index for the counter.\n * @param digestLength the digest length to use.\n *\n * @return the KDF API object.\n */\nfunction _createKDF(kdf, md, counterStart, digestLength) {\n /**\n * Generate a key of the specified length.\n *\n * @param x the binary-encoded byte string to generate a key from.\n * @param length the number of bytes to generate (the size of the key).\n *\n * @return the key as a binary-encoded string.\n */\n kdf.generate = function(x, length) {\n var key = new forge.util.ByteBuffer();\n\n // run counter from counterStart to ceil(length / Hash.len)\n var k = Math.ceil(length / digestLength) + counterStart;\n\n var c = new forge.util.ByteBuffer();\n for(var i = counterStart; i < k; ++i) {\n // I2OSP(i, 4): convert counter to an octet string of 4 octets\n c.putInt32(i);\n\n // digest 'x' and the counter and add the result to the key\n md.start();\n md.update(x + c.getBytes());\n var hash = md.digest();\n key.putBytes(hash.getBytes(digestLength));\n }\n\n // truncate to the correct key length\n key.truncate(key.length() - length);\n return key.getBytes();\n };\n}\n","var Hmac = require('./browserHmac');\nvar Md5 = require('./browserMd5');\nvar Sha1 = require('./browserSha1');\nvar Sha256 = require('./browserSha256');\n\n/**\n * @api private\n */\nmodule.exports = exports = {\n createHash: function createHash(alg) {\n alg = alg.toLowerCase();\n if (alg === 'md5') {\n return new Md5();\n } else if (alg === 'sha256') {\n return new Sha256();\n } else if (alg === 'sha1') {\n return new Sha1();\n }\n\n throw new Error('Hash algorithm ' + alg + ' is not supported in the browser SDK');\n },\n createHmac: function createHmac(alg, key) {\n alg = alg.toLowerCase();\n if (alg === 'md5') {\n return new Hmac(Md5, key);\n } else if (alg === 'sha256') {\n return new Hmac(Sha256, key);\n } else if (alg === 'sha1') {\n return new Hmac(Sha1, key);\n }\n\n throw new Error('HMAC algorithm ' + alg + ' is not supported in the browser SDK');\n },\n createSign: function() {\n throw new Error('createSign is not implemented in the browser');\n }\n };\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport DefaultBrowserBehavior from '../browserbehavior/DefaultBrowserBehavior';\nimport ExtendedBrowserBehavior from '../browserbehavior/ExtendedBrowserBehavior';\nimport type { Destroyable } from '../destroyable/Destroyable';\nimport DeviceChangeObserver from '../devicechangeobserver/DeviceChangeObserver';\nimport EventController from '../eventcontroller/EventController';\nimport Logger from '../logger/Logger';\nimport DefaultMediaDeviceFactory from '../mediadevicefactory/DefaultMediaDeviceFactory';\nimport DeviceControllerBasedMediaStreamBroker from '../mediastreambroker/DeviceControllerBasedMediaStreamBroker';\nimport MediaStreamBrokerObserver from '../mediastreambrokerobserver/MediaStreamBrokerObserver';\nimport AsyncScheduler from '../scheduler/AsyncScheduler';\nimport PromiseQueue from '../utils/PromiseQueue';\nimport { Maybe } from '../utils/Types';\nimport DefaultVideoTransformDevice from '../videoframeprocessor/DefaultVideoTransformDevice';\nimport DefaultVideoTile from '../videotile/DefaultVideoTile';\nimport AudioInputDevice from './AudioInputDevice';\nimport AudioNodeSubgraph from './AudioNodeSubgraph';\nimport AudioTransformDevice, { isAudioTransformDevice } from './AudioTransformDevice';\nimport Device from './Device';\nimport DeviceSelection from './DeviceSelection';\nimport GetUserMediaError from './GetUserMediaError';\nimport NotFoundError from './NotFoundError';\nimport NotReadableError from './NotReadableError';\nimport OverconstrainedError from './OverconstrainedError';\nimport PermissionDeniedError from './PermissionDeniedError';\nimport RemovableAnalyserNode from './RemovableAnalyserNode';\nimport TypeError from './TypeError';\nimport VideoInputDevice from './VideoInputDevice';\nimport VideoQualitySettings from './VideoQualitySettings';\nimport VideoTransformDevice, { isVideoTransformDevice } from './VideoTransformDevice';\n\ntype Thunk = () => void;\n\nexport default class DefaultDeviceController\n implements DeviceControllerBasedMediaStreamBroker, Destroyable {\n private static permissionDeniedOriginDetectionThresholdMs = 500;\n private static defaultVideoWidth = 960;\n private static defaultVideoHeight = 540;\n private static defaultVideoFrameRate = 15;\n private static defaultSampleRate = 48000;\n private static defaultSampleSize = 16;\n private static defaultChannelCount = 1;\n private static defaultLatencyHint?: AudioContextLatencyCategory | number;\n private static audioContext: AudioContext | null = null;\n\n private deviceInfoCache: MediaDeviceInfo[] | null = null;\n\n // `activeDevices` is really a set of `DeviceSelection`s. Track the actual device here.\n private transform: { nodes: AudioNodeSubgraph | undefined; device: AudioTransformDevice };\n\n private activeDevices: { [kind: string]: DeviceSelection | null } = { audio: null, video: null };\n\n // `chosenVideoTransformDevice` is tracked and owned by device controller.\n // It is saved when `chooseVideoInputDevice` is called with VideoTransformDevice object.\n private chosenVideoTransformDevice: VideoTransformDevice | null = null;\n private audioOutputDeviceId: string | undefined = undefined;\n private deviceChangeObservers: Set = new Set();\n private mediaStreamBrokerObservers: Set = new Set<\n MediaStreamBrokerObserver\n >();\n private deviceLabelTrigger = (): Promise => {\n return navigator.mediaDevices.getUserMedia({ audio: true, video: true });\n };\n private audioInputDestinationNode: MediaStreamAudioDestinationNode | null = null;\n private audioInputSourceNode: MediaStreamAudioSourceNode | null = null;\n\n private mediaDeviceWrapper: MediaDevices | undefined;\n private onDeviceChangeCallback?: Thunk;\n\n private videoInputQualitySettings: VideoQualitySettings = null;\n\n private readonly useWebAudio: boolean = false;\n private readonly useMediaConstraintsFallback: boolean = true;\n\n private audioInputTaskQueue: PromiseQueue = new PromiseQueue();\n private videoInputTaskQueue: PromiseQueue = new PromiseQueue();\n\n private muted: boolean = false;\n\n // This handles the dispatch of `mute` and `unmute` events from audio tracks.\n // There's a bit of a semantic mismatch here if input streams allow individual component tracks to be muted,\n // but addressing that gap is not feasible in our stream-oriented world.\n private mediaStreamMuteObserver = (id: string | MediaStream, muted: boolean): void => {\n for (const observer of this.deviceChangeObservers) {\n AsyncScheduler.nextTick(() => {\n /* istanbul ignore else */\n if (this.deviceChangeObservers.has(observer) && observer.audioInputMuteStateChanged) {\n observer.audioInputMuteStateChanged(id, muted);\n }\n });\n }\n };\n\n constructor(\n private logger: Logger,\n options?: { enableWebAudio?: boolean; useMediaConstraintsFallback?: boolean },\n private browserBehavior: ExtendedBrowserBehavior = new DefaultBrowserBehavior(),\n public eventController?: EventController\n ) {\n const { enableWebAudio = false, useMediaConstraintsFallback = true } = options || {};\n this.useWebAudio = enableWebAudio;\n this.useMediaConstraintsFallback = useMediaConstraintsFallback;\n\n this.videoInputQualitySettings = new VideoQualitySettings(\n DefaultDeviceController.defaultVideoWidth,\n DefaultDeviceController.defaultVideoHeight,\n DefaultDeviceController.defaultVideoFrameRate\n );\n\n const dimension = this.browserBehavior.requiresResolutionAlignment(\n this.videoInputQualitySettings.videoWidth,\n this.videoInputQualitySettings.videoHeight\n );\n this.videoInputQualitySettings.videoWidth = dimension[0];\n this.videoInputQualitySettings.videoHeight = dimension[1];\n this.logger.info(\n `DefaultDeviceController video dimension ${this.videoInputQualitySettings.videoWidth} x ${this.videoInputQualitySettings.videoHeight}`\n );\n\n try {\n this.mediaDeviceWrapper = new DefaultMediaDeviceFactory().create();\n const supportedConstraints = navigator.mediaDevices.getSupportedConstraints();\n this.logger.info(\n `Supported Constraints in this browser ${JSON.stringify(supportedConstraints)}`\n );\n } catch (error) {\n logger.error(error.message);\n }\n }\n\n private isWatchingForDeviceChanges(): boolean {\n return !!this.onDeviceChangeCallback;\n }\n\n private ensureWatchingDeviceChanges(): void {\n if (this.isWatchingForDeviceChanges()) {\n return;\n }\n this.logger.info('Starting devicechange listener.');\n this.onDeviceChangeCallback = () => {\n this.logger.info('Device change event callback is triggered');\n this.handleDeviceChange();\n };\n this.mediaDeviceWrapper?.addEventListener('devicechange', this.onDeviceChangeCallback);\n }\n\n /**\n * Unsubscribe from the `devicechange` event, which allows the device controller to\n * update its device cache.\n */\n private stopWatchingDeviceChanges(): void {\n if (!this.isWatchingForDeviceChanges()) {\n return;\n }\n this.logger.info('Stopping devicechange listener.');\n this.mediaDeviceWrapper?.removeEventListener('devicechange', this.onDeviceChangeCallback);\n this.onDeviceChangeCallback = undefined;\n }\n\n private shouldObserveDeviceChanges(): boolean {\n if (this.deviceChangeObservers.size) {\n return true;\n }\n\n const hasActiveDevices =\n (this.activeDevices['audio'] && this.activeDevices['audio'].constraints !== null) ||\n (this.activeDevices['video'] && this.activeDevices['video'].constraints !== null) ||\n !!this.audioOutputDeviceId;\n return hasActiveDevices;\n }\n\n private watchForDeviceChangesIfNecessary(): void {\n if (this.shouldObserveDeviceChanges()) {\n this.ensureWatchingDeviceChanges();\n } else {\n this.stopWatchingDeviceChanges();\n }\n }\n\n async destroy(): Promise {\n // Remove device change callbacks.\n this.stopWatchingDeviceChanges();\n\n // Deselect any audio input devices and throw away the streams.\n // Discard the current video device, if there is one.\n // Discard any audio or video transforms.\n await this.stopAudioInput();\n await this.stopVideoInput();\n }\n\n async listAudioInputDevices(forceUpdate: boolean = false): Promise {\n const result = await this.listDevicesOfKind('audioinput', forceUpdate);\n this.trace('listAudioInputDevices', forceUpdate, result);\n return result;\n }\n\n async listVideoInputDevices(forceUpdate: boolean = false): Promise {\n const result = await this.listDevicesOfKind('videoinput', forceUpdate);\n this.trace('listVideoInputDevices', forceUpdate, result);\n return result;\n }\n\n async listAudioOutputDevices(forceUpdate: boolean = false): Promise {\n const result = await this.listDevicesOfKind('audiooutput', forceUpdate);\n this.trace('listAudioOutputDevices', forceUpdate, result);\n return result;\n }\n\n private pushAudioMeetingStateForPermissions(audioStream: MediaStream | undefined): void {\n this.eventController?.publishEvent(\n audioStream === undefined ? 'audioInputUnselected' : 'audioInputSelected'\n );\n }\n\n private pushVideoMeetingStateForPermissions(videoStream: MediaStream | undefined): void {\n this.eventController?.publishEvent(\n videoStream === undefined ? 'videoInputUnselected' : 'videoInputSelected'\n );\n }\n\n async startAudioInput(device: AudioInputDevice): Promise {\n return await this.audioInputTaskQueue.add(() => this.startAudioInputTask(device));\n }\n\n private async startAudioInputTask(device: AudioInputDevice): Promise {\n if (device === undefined) {\n this.logger.error('Audio input device cannot be undefined');\n return undefined;\n }\n\n try {\n if (isAudioTransformDevice(device)) {\n // N.B., do not JSON.stringify here — for some kinds of devices this\n // will cause a cyclic object reference error.\n this.logger.info(`Choosing transform input device ${device}`);\n\n await this.chooseAudioTransformInputDevice(device);\n } else {\n this.logger.info(`Choosing intrinsic audio input device ${device}`);\n this.removeTransform();\n await this.chooseInputIntrinsicDevice('audio', device);\n }\n this.trace('startAudioInputDevice', device, `success`);\n // For web audio, the audio destination stream stays the same so audio input did not change\n if (this.useWebAudio) {\n this.attachAudioInputStreamToAudioContext(this.activeDevices['audio'].stream);\n this.pushAudioMeetingStateForPermissions(this.getMediaStreamDestinationNode().stream);\n await this.transform?.device.mute(this.muted);\n return this.getMediaStreamDestinationNode().stream;\n } else {\n this.publishAudioInputDidChangeEvent(this.activeDevices['audio'].stream);\n return this.activeDevices['audio'].stream;\n }\n } catch (error) {\n throw error;\n }\n }\n\n async stopAudioInput(): Promise {\n return this.audioInputTaskQueue.add(() => this.stopAudioInputTask());\n }\n\n private async stopAudioInputTask(): Promise {\n try {\n if (this.useWebAudio) {\n this.releaseAudioTransformStream();\n return;\n }\n this.stopTracksAndRemoveCallbacks('audio');\n } finally {\n this.watchForDeviceChangesIfNecessary();\n this.publishAudioInputDidChangeEvent(undefined);\n }\n }\n\n private async chooseAudioTransformInputDevice(device: AudioTransformDevice): Promise {\n if (this.transform?.device === device) {\n return;\n }\n\n if (!this.useWebAudio) {\n throw new Error('Cannot apply transform device without enabling Web Audio.');\n }\n\n const context = DefaultDeviceController.getAudioContext();\n\n if (context instanceof OfflineAudioContext) {\n // Nothing to do.\n } else {\n switch (context.state) {\n case 'running':\n // Nothing to do.\n break;\n case 'closed':\n // A closed context cannot be used for creating nodes, so the correct\n // thing to do is to raise a descriptive error sooner.\n throw new Error('Cannot choose a transform device with a closed audio context.');\n case 'suspended':\n // A context might be suspended after page load. We try to resume it\n // here, otherwise audio won't work.\n await context.resume();\n }\n }\n\n let nodes;\n try {\n nodes = await device.createAudioNode(context);\n } catch (e) {\n this.logger.error(`Unable to create transform device node: ${e}.`);\n throw e;\n }\n\n // Pick the plain ol' inner device as the source. It will be\n // connected to the node.\n const inner = await device.intrinsicDevice();\n await this.chooseInputIntrinsicDevice('audio', inner);\n this.logger.debug(`Got inner stream: ${inner}.`);\n // Otherwise, continue: hook up the new node.\n this.setTransform(device, nodes);\n }\n\n private async chooseVideoTransformInputDevice(device: VideoTransformDevice): Promise {\n if (this.eventController && device instanceof DefaultVideoTransformDevice) {\n device.passEventControllerToProcessors(this.eventController);\n }\n if (device === this.chosenVideoTransformDevice) {\n this.logger.info('Reselecting same VideoTransformDevice');\n return;\n }\n\n const prevVideoTransformDevice = this.chosenVideoTransformDevice;\n if (prevVideoTransformDevice) {\n this.logger.info('Switched from previous VideoTransformDevice');\n }\n const wasUsingTransformDevice = !!prevVideoTransformDevice;\n const inner = await device.intrinsicDevice();\n const canReuseMediaStream = this.isMediaStreamReusableByDeviceId(\n this.activeDevices['video']?.stream,\n inner\n );\n if (!canReuseMediaStream) {\n this.logger.info('video transform device needs new intrinsic device');\n if (wasUsingTransformDevice) {\n // detach input media stream - turn off the camera or leave it be if inner is media stream\n prevVideoTransformDevice.onOutputStreamDisconnect();\n }\n this.chosenVideoTransformDevice = device;\n // VideoTransformDevice owns input MediaStream\n this.activeDevices['video'] = null;\n await this.chooseInputIntrinsicDevice('video', inner);\n this.logger.info('apply processors to transform');\n await this.chosenVideoTransformDevice.transformStream(this.activeDevices['video'].stream);\n return;\n }\n\n // When saved stream is reusable, only switch the saved stream to filtered stream for sending\n // but keep the saved stream intact.\n\n // Note: to keep the chosen media stream intact, it is important to avoid a full stop\n // because videoTileUpdate can be called when video is stopped and user might call `bindVideoElement` to disconnect the element.\n // In current implementation, disconnecting the element will `hard` stop the media stream.\n\n // Update device and stream\n this.chosenVideoTransformDevice = device;\n this.logger.info('video transform device uses previous stream');\n\n // `transformStream` will start processing.\n this.logger.info('apply processors to transform');\n await device.transformStream(this.activeDevices['video'].stream);\n }\n\n async startVideoInput(device: VideoInputDevice): Promise {\n return await this.videoInputTaskQueue.add(() => this.startVideoInputTask(device));\n }\n\n private async startVideoInputTask(device: VideoInputDevice): Promise {\n if (!device) {\n this.logger.error('Invalid video input device');\n return undefined;\n }\n\n try {\n if (isVideoTransformDevice(device)) {\n this.logger.info(`Choosing video transform device ${device}`);\n await this.chooseVideoTransformInputDevice(device);\n this.publishVideoInputDidChangeEvent(this.chosenVideoTransformDevice.outputMediaStream);\n return this.chosenVideoTransformDevice.outputMediaStream;\n }\n\n // handle direct switching from VideoTransformDevice to Device\n // From WebRTC point, it is a device switching.\n if (this.chosenVideoInputIsTransformDevice()) {\n // disconnect old stream\n this.chosenVideoTransformDevice.onOutputStreamDisconnect();\n this.chosenVideoTransformDevice = null;\n }\n await this.chooseInputIntrinsicDevice('video', device);\n\n this.trace('startVideoInputDevice', device);\n this.publishVideoInputDidChangeEvent(this.activeDevices['video'].stream);\n return this.activeDevices['video'].stream;\n } catch (error) {\n throw error;\n }\n }\n\n async stopVideoInput(): Promise {\n return this.videoInputTaskQueue.add(() => this.stopVideoInputTask());\n }\n\n private async stopVideoInputTask(): Promise {\n try {\n if (this.chosenVideoInputIsTransformDevice()) {\n this.releaseVideoTransformStream();\n return;\n }\n this.stopTracksAndRemoveCallbacks('video');\n } finally {\n this.watchForDeviceChangesIfNecessary();\n this.publishVideoInputDidChangeEvent(undefined);\n }\n }\n\n async chooseAudioOutput(deviceId: string | null): Promise {\n this.audioOutputDeviceId = deviceId;\n this.watchForDeviceChangesIfNecessary();\n const deviceInfo = this.deviceInfoFromDeviceId('audiooutput', this.audioOutputDeviceId);\n this.publishAudioOutputDidChangeEvent(deviceInfo);\n this.trace('chooseAudioOutput', deviceId, null);\n return;\n }\n\n addDeviceChangeObserver(observer: DeviceChangeObserver): void {\n this.logger.info('adding device change observer');\n this.deviceChangeObservers.add(observer);\n this.watchForDeviceChangesIfNecessary();\n this.trace('addDeviceChangeObserver');\n }\n\n removeDeviceChangeObserver(observer: DeviceChangeObserver): void {\n this.logger.info('removing device change observer');\n this.deviceChangeObservers.delete(observer);\n this.watchForDeviceChangesIfNecessary();\n this.trace('removeDeviceChangeObserver');\n }\n\n createAnalyserNodeForAudioInput(): RemovableAnalyserNode | null {\n if (!this.activeDevices['audio']) {\n return null;\n }\n\n // If there is a WebAudio node in the graph, we use that as the source instead of the stream.\n const node = this.transform?.nodes?.end;\n if (node) {\n const analyser = node.context.createAnalyser() as RemovableAnalyserNode;\n\n analyser.removeOriginalInputs = () => {\n try {\n node.disconnect(analyser);\n } catch (e) {\n // This can fail in some unusual cases, but this is best-effort.\n }\n };\n\n node.connect(analyser);\n return analyser;\n }\n\n return this.createAnalyserNodeForRawAudioInput();\n }\n\n //\n // N.B., this bypasses any applied transform node.\n //\n createAnalyserNodeForRawAudioInput(): RemovableAnalyserNode | null {\n if (!this.activeDevices['audio']) {\n return null;\n }\n return this.createAnalyserNodeForStream(this.activeDevices['audio'].stream);\n }\n\n private createAnalyserNodeForStream(stream: MediaStream): RemovableAnalyserNode {\n const audioContext = DefaultDeviceController.getAudioContext();\n const analyser = audioContext.createAnalyser() as RemovableAnalyserNode;\n const source = audioContext.createMediaStreamSource(stream);\n source.connect(analyser);\n this.trace('createAnalyserNodeForAudioInput');\n\n analyser.removeOriginalInputs = () => {\n try {\n source.disconnect(analyser);\n } catch (e) {\n // This can fail in some unusual cases, but this is best-effort.\n }\n };\n\n return analyser;\n }\n\n startVideoPreviewForVideoInput(element: HTMLVideoElement): void {\n if (!this.activeDevices['video']) {\n this.logger.warn('cannot bind video preview since video input device has not been chosen');\n this.trace('startVideoPreviewForVideoInput', element.id);\n return;\n }\n DefaultVideoTile.connectVideoStreamToVideoElement(\n this.chosenVideoTransformDevice\n ? this.chosenVideoTransformDevice.outputMediaStream\n : this.activeDevices['video'].stream,\n element,\n true\n );\n this.trace('startVideoPreviewForVideoInput', element.id);\n }\n\n stopVideoPreviewForVideoInput(element: HTMLVideoElement): void {\n DefaultVideoTile.disconnectVideoStreamFromVideoElement(element, false);\n this.trace('stopVideoPreviewForVideoInput', element.id);\n }\n\n setDeviceLabelTrigger(trigger: () => Promise): void {\n // Discard the cache if it was populated with unlabeled devices.\n if (this.deviceInfoCache) {\n for (const device of this.deviceInfoCache) {\n if (!device.label) {\n this.deviceInfoCache = null;\n break;\n }\n }\n }\n\n this.deviceLabelTrigger = trigger;\n this.trace('setDeviceLabelTrigger');\n }\n\n mixIntoAudioInput(stream: MediaStream): MediaStreamAudioSourceNode {\n let node: MediaStreamAudioSourceNode | null = null;\n if (this.useWebAudio) {\n node = DefaultDeviceController.getAudioContext().createMediaStreamSource(stream);\n node.connect(this.getMediaStreamOutputNode());\n } else {\n this.logger.warn('WebAudio is not enabled, mixIntoAudioInput will not work');\n }\n\n this.trace('mixIntoAudioInput', stream.id);\n return node;\n }\n\n chooseVideoInputQuality(width: number, height: number, frameRate: number): void {\n const dimension = this.browserBehavior.requiresResolutionAlignment(width, height);\n this.videoInputQualitySettings = new VideoQualitySettings(\n dimension[0],\n dimension[1],\n frameRate\n );\n }\n\n getVideoInputQualitySettings(): VideoQualitySettings | null {\n return this.videoInputQualitySettings;\n }\n\n async acquireAudioInputStream(): Promise {\n if (!this.activeDevices['audio']) {\n this.logger.info(`No audio device chosen, creating empty audio device`);\n await this.startAudioInput(null);\n }\n\n if (this.useWebAudio) {\n const dest = this.getMediaStreamDestinationNode();\n return dest.stream;\n }\n return this.activeDevices['audio'].stream;\n }\n\n async acquireVideoInputStream(): Promise {\n if (!this.activeDevices['video']) {\n throw new Error(`No video device chosen`);\n }\n if (this.chosenVideoInputIsTransformDevice()) {\n return this.chosenVideoTransformDevice.outputMediaStream;\n }\n return this.activeDevices['video'].stream;\n }\n\n async acquireDisplayInputStream(\n _streamConstraints: MediaStreamConstraints\n ): Promise {\n throw new Error('unsupported');\n }\n\n /**\n *\n * We need to do three things to clean up audio input\n *\n * * Close the tracks of the source stream.\n * * Remove the transform.\n * * Clean up the intrinsic stream's callback -- that's the stream that's tracked in\n * `activeDevices` and needs to have its callbacks removed.\n */\n private releaseAudioTransformStream(): void {\n this.logger.info('Stopping audio track for Web Audio graph');\n\n this.stopTracksAndRemoveCallbacks('audio');\n\n this.logger.info('Removing audio transform, if there is one.');\n this.removeTransform();\n\n // Remove the input and output nodes. They will be recreated later if\n // needed.\n /* istanbul ignore else */\n if (this.audioInputSourceNode) {\n this.audioInputSourceNode.disconnect();\n this.audioInputSourceNode = undefined;\n }\n\n /* istanbul ignore else */\n if (this.audioInputDestinationNode) {\n this.audioInputDestinationNode.disconnect();\n this.audioInputDestinationNode = undefined;\n }\n }\n\n /**\n *\n * We need to do three things to clean up video input\n *\n * * Close the tracks of the source stream.\n * * Remove the transform.\n * * Clean up the intrinsic stream's callback -- that's the stream that's tracked in\n * `activeDevices` and needs to have its callbacks removed.\n */\n private releaseVideoTransformStream(): void {\n this.logger.info('Stopping video track for transform');\n\n this.stopTracksAndRemoveCallbacks('video');\n\n this.logger.info('Disconnecting video transform');\n this.chosenVideoTransformDevice.onOutputStreamDisconnect();\n this.chosenVideoTransformDevice = null;\n }\n\n private stopTracksAndRemoveCallbacks(kind: 'video' | 'audio'): void {\n const activeDevice = this.activeDevices[kind];\n\n // Just-in-case error handling.\n /* istanbul ignore if */\n if (!activeDevice) {\n return;\n }\n\n /* istanbul ignore next */\n const endedCallback = activeDevice.endedCallback;\n const trackMuteCallback = activeDevice.trackMuteCallback;\n const trackUnmuteCallback = activeDevice.trackUnmuteCallback;\n\n for (const track of activeDevice.stream.getTracks()) {\n track.stop();\n\n /* istanbul ignore else */\n if (endedCallback) {\n track.removeEventListener('ended', endedCallback);\n }\n /* istanbul ignore else */\n if (trackMuteCallback) {\n track.removeEventListener('mute', trackMuteCallback);\n }\n /* istanbul ignore else */\n if (trackUnmuteCallback) {\n track.removeEventListener('unmute', trackUnmuteCallback);\n }\n\n delete activeDevice.endedCallback;\n delete activeDevice.trackMuteCallback;\n delete activeDevice.trackUnmuteCallback;\n delete this.activeDevices[kind];\n }\n }\n\n private chosenVideoInputIsTransformDevice(): boolean {\n return !!this.chosenVideoTransformDevice;\n }\n\n muteLocalAudioInputStream(): void {\n this.toggleLocalAudioInputStream(false);\n }\n\n unmuteLocalAudioInputStream(): void {\n this.toggleLocalAudioInputStream(true);\n }\n\n private toggleLocalAudioInputStream(enabled: boolean): void {\n let audioDevice: MediaStreamAudioDestinationNode | DeviceSelection = this.activeDevices[\n 'audio'\n ];\n if (this.useWebAudio) {\n audioDevice = this.getMediaStreamDestinationNode();\n }\n if (!audioDevice) {\n return;\n }\n for (const track of audioDevice.stream.getTracks()) {\n if (track.enabled === enabled) {\n continue;\n }\n track.enabled = enabled;\n }\n if (this.muted !== !enabled) {\n this.muted = !enabled;\n this.transform?.device.mute(this.muted);\n }\n }\n\n static getIntrinsicDeviceId(device: Device | null): string | string[] | undefined {\n if (!device) {\n return undefined;\n }\n\n if (typeof device === 'string') {\n return device;\n }\n\n if ((device as MediaStream).id) {\n return (device as MediaStream).id;\n }\n\n const constraints: MediaTrackConstraints = device as MediaTrackConstraints;\n const deviceIdConstraints = constraints.deviceId;\n if (!deviceIdConstraints) {\n return undefined;\n }\n\n if (typeof deviceIdConstraints === 'string' || Array.isArray(deviceIdConstraints)) {\n return deviceIdConstraints;\n }\n\n const constraintStringParams: ConstrainDOMStringParameters = deviceIdConstraints as ConstrainDOMStringParameters;\n if (\n typeof constraintStringParams.exact === 'string' ||\n Array.isArray(constraintStringParams.exact)\n ) {\n return constraintStringParams.exact;\n }\n\n return undefined;\n }\n\n static createEmptyAudioDevice(): MediaStream {\n return DefaultDeviceController.synthesizeAudioDevice(0);\n }\n\n static synthesizeAudioDevice(toneHz: number): MediaStream {\n const audioContext = DefaultDeviceController.getAudioContext();\n const outputNode = audioContext.createMediaStreamDestination();\n if (!toneHz) {\n const source = audioContext.createBufferSource();\n\n // The AudioContext object uses the sample rate of the default output device\n // if not specified. Creating an AudioBuffer object with the output device's\n // sample rate fails in some browsers, e.g. Safari with a Bluetooth headphone.\n try {\n source.buffer = audioContext.createBuffer(\n 1,\n audioContext.sampleRate * 5,\n audioContext.sampleRate\n );\n } catch (error) {\n if (error && error.name === 'NotSupportedError') {\n source.buffer = audioContext.createBuffer(\n 1,\n DefaultDeviceController.defaultSampleRate * 5,\n DefaultDeviceController.defaultSampleRate\n );\n } else {\n throw error;\n }\n }\n\n // Some browsers will not play audio out the MediaStreamDestination\n // unless there is actually audio to play, so we add a small amount of\n // noise here to ensure that audio is played out.\n source.buffer.getChannelData(0)[0] = 0.0003;\n source.loop = true;\n source.connect(outputNode);\n source.start();\n } else {\n const gainNode = audioContext.createGain();\n gainNode.gain.value = 0.1;\n gainNode.connect(outputNode);\n const oscillatorNode = audioContext.createOscillator();\n oscillatorNode.frequency.value = toneHz;\n oscillatorNode.connect(gainNode);\n oscillatorNode.start();\n }\n return outputNode.stream;\n }\n\n private async listDevicesOfKind(\n deviceKind: string,\n forceUpdate: boolean\n ): Promise {\n if (forceUpdate || this.deviceInfoCache === null || !this.isWatchingForDeviceChanges()) {\n await this.updateDeviceInfoCacheFromBrowser();\n }\n return this.listCachedDevicesOfKind(deviceKind);\n }\n\n private async updateDeviceInfoCacheFromBrowser(): Promise {\n const doesNotHaveAccessToMediaDevices = typeof MediaDeviceInfo === 'undefined';\n if (doesNotHaveAccessToMediaDevices) {\n this.deviceInfoCache = [];\n return;\n }\n let devices = await navigator.mediaDevices.enumerateDevices();\n let hasDeviceLabels = true;\n for (const device of devices) {\n if (!device.label) {\n hasDeviceLabels = false;\n break;\n }\n }\n if (!hasDeviceLabels) {\n try {\n this.logger.info('attempting to trigger media device labels since they are hidden');\n const triggerStream = await this.deviceLabelTrigger();\n devices = await navigator.mediaDevices.enumerateDevices();\n for (const track of triggerStream.getTracks()) {\n track.stop();\n }\n } catch (error) {\n this.logger.info('unable to get media device labels');\n this.eventController?.publishEvent('deviceLabelTriggerFailed', {\n deviceLabelTriggerErrorMessage: this.getErrorMessage(error),\n });\n }\n }\n this.logger.debug(`Update device info cache with devices: ${JSON.stringify(devices)}`);\n this.deviceInfoCache = devices;\n }\n\n private listCachedDevicesOfKind(deviceKind: string): MediaDeviceInfo[] {\n const devicesOfKind: MediaDeviceInfo[] = [];\n if (this.deviceInfoCache) {\n for (const device of this.deviceInfoCache) {\n if (device.kind === deviceKind) {\n devicesOfKind.push(device);\n }\n }\n }\n return devicesOfKind;\n }\n\n private alreadyHandlingDeviceChange = false;\n private async handleDeviceChange(): Promise {\n if (this.deviceInfoCache === null) {\n return;\n }\n if (this.alreadyHandlingDeviceChange) {\n AsyncScheduler.nextTick(() => {\n this.handleDeviceChange();\n });\n return;\n }\n this.alreadyHandlingDeviceChange = true;\n const oldAudioInputDevices = this.listCachedDevicesOfKind('audioinput');\n const oldVideoInputDevices = this.listCachedDevicesOfKind('videoinput');\n const oldAudioOutputDevices = this.listCachedDevicesOfKind('audiooutput');\n await this.updateDeviceInfoCacheFromBrowser();\n const newAudioInputDevices = this.listCachedDevicesOfKind('audioinput');\n const newVideoInputDevices = this.listCachedDevicesOfKind('videoinput');\n const newAudioOutputDevices = this.listCachedDevicesOfKind('audiooutput');\n this.forEachObserver((observer: DeviceChangeObserver) => {\n if (!this.areDeviceListsEqual(oldAudioInputDevices, newAudioInputDevices)) {\n Maybe.of(observer.audioInputsChanged).map(f => f.bind(observer)(newAudioInputDevices));\n }\n if (!this.areDeviceListsEqual(oldVideoInputDevices, newVideoInputDevices)) {\n Maybe.of(observer.videoInputsChanged).map(f => f.bind(observer)(newVideoInputDevices));\n }\n if (!this.areDeviceListsEqual(oldAudioOutputDevices, newAudioOutputDevices)) {\n Maybe.of(observer.audioOutputsChanged).map(f => f.bind(observer)(newAudioOutputDevices));\n }\n });\n this.alreadyHandlingDeviceChange = false;\n }\n\n private async handleDeviceStreamEnded(kind: 'audio' | 'video', deviceId: string): Promise {\n try {\n if (kind === 'audio') {\n if (\n this.useWebAudio &&\n this.browserBehavior.requiresAudioContextResetOnDeviceFailureForWebAudio()\n ) {\n this.logger.warn(\n 'Audio input device which was active is no longer available, suspending and resuming audio context before resetting to empty device to ensure packets are sent'\n );\n await this.stopAudioInput();\n DefaultDeviceController.suspendAudioContext();\n DefaultDeviceController.resumeAudioContext();\n } else {\n this.logger.warn(\n 'Audio input device which was active is no longer available, resetting to empty device to ensure packets are sent'\n );\n }\n await this.startAudioInput(null);\n } else {\n this.logger.warn(\n `Video input device which was active is no longer available, stopping video`\n );\n await this.stopVideoInput();\n }\n } catch (e) {\n /* istanbul ignore next */\n this.logger.error('Failed to choose null device after stream ended.');\n }\n\n if (kind === 'audio') {\n this.forEachObserver((observer: DeviceChangeObserver) => {\n Maybe.of(observer.audioInputStreamEnded).map(f => f.bind(observer)(deviceId));\n });\n } else {\n this.forEachObserver((observer: DeviceChangeObserver) => {\n Maybe.of(observer.videoInputStreamEnded).map(f => f.bind(observer)(deviceId));\n });\n }\n }\n\n private forEachObserver(observerFunc: (observer: DeviceChangeObserver) => void): void {\n for (const observer of this.deviceChangeObservers) {\n AsyncScheduler.nextTick(() => {\n /* istanbul ignore else */\n if (this.deviceChangeObservers.has(observer)) {\n observerFunc(observer);\n }\n });\n }\n }\n\n private forEachMediaStreamBrokerObserver(\n observerFunc: (obsever: MediaStreamBrokerObserver) => void\n ): void {\n for (const observer of this.mediaStreamBrokerObservers) {\n AsyncScheduler.nextTick(() => {\n /* istanbul ignore else */\n if (this.mediaStreamBrokerObservers.has(observer)) {\n observerFunc(observer);\n }\n });\n }\n }\n\n private areDeviceListsEqual(a: MediaDeviceInfo[], b: MediaDeviceInfo[]): boolean {\n return (\n JSON.stringify(a.map(device => JSON.stringify(device)).sort()) ===\n JSON.stringify(b.map(device => JSON.stringify(device)).sort())\n );\n }\n\n private intrinsicDeviceAsMediaStream(device: Device): MediaStream | null {\n // @ts-ignore\n return device && device.id ? device : null;\n }\n\n private hasSameMediaStreamId(\n kind: string,\n selection: DeviceSelection,\n proposedConstraints: MediaStreamConstraints\n ): boolean {\n // Checking for stream using the fake constraint created in getMediaStreamConstraints\n let streamId;\n if (kind === 'audio') {\n // @ts-ignore\n streamId = proposedConstraints?.audio.streamId;\n /* istanbul ignore next */\n // @ts-ignore\n return !!streamId && streamId === selection.constraints?.audio?.streamId;\n }\n /* istanbul ignore next */\n // @ts-ignore\n streamId = proposedConstraints?.video.streamId;\n /* istanbul ignore next */\n // @ts-ignore\n return !!streamId && streamId === selection?.constraints?.video?.streamId;\n }\n\n private hasSameGroupId(groupId: string, kind: string, device: Device): boolean {\n if (groupId === '') {\n return true;\n }\n const deviceIds = DefaultDeviceController.getIntrinsicDeviceId(device);\n this.logger.debug(\n `Checking deviceIds ${deviceIds} of type ${typeof deviceIds} with groupId ${groupId}`\n );\n if (typeof deviceIds === 'string' && groupId === this.getGroupIdFromDeviceId(kind, deviceIds)) {\n return true;\n }\n return false;\n }\n\n private getGroupIdFromDeviceId(kind: string, deviceId: string): string {\n if (this.deviceInfoCache !== null) {\n const cachedDeviceInfo = this.listCachedDevicesOfKind(`${kind}input`).find(\n (cachedDevice: MediaDeviceInfo) => cachedDevice.deviceId === deviceId\n );\n if (cachedDeviceInfo && cachedDeviceInfo.groupId) {\n this.logger.debug(\n `GroupId of deviceId ${deviceId} found in cache is ${cachedDeviceInfo.groupId}`\n );\n return cachedDeviceInfo.groupId;\n }\n }\n this.logger.debug(`GroupId of deviceId ${deviceId} found in cache is empty`);\n return '';\n }\n\n private handleGetUserMediaError(error: Error, errorTimeMs?: number): void {\n if (!error) {\n throw new GetUserMediaError(error);\n }\n\n switch (error.name) {\n case 'NotReadableError':\n case 'TrackStartError':\n throw new NotReadableError(error);\n case 'NotFoundError':\n case 'DevicesNotFoundError':\n throw new NotFoundError(error);\n case 'NotAllowedError':\n case 'PermissionDeniedError':\n case 'SecurityError':\n if (\n errorTimeMs &&\n errorTimeMs < DefaultDeviceController.permissionDeniedOriginDetectionThresholdMs\n ) {\n throw new PermissionDeniedError(error, 'Permission denied by browser');\n } else {\n throw new PermissionDeniedError(error, 'Permission denied by user');\n }\n case 'OverconstrainedError':\n case 'ConstraintNotSatisfiedError':\n throw new OverconstrainedError(error);\n case 'TypeError':\n throw new TypeError(error);\n case 'AbortError':\n default:\n throw new GetUserMediaError(error);\n }\n }\n\n /**\n * Check whether a device is already selected.\n *\n * @param kind typically 'audio' or 'video'.\n * @param device the device about to be selected.\n * @param selection the existing device selection of this kind.\n * @param proposedConstraints the constraints that will be used when this device is selected.\n * @returns whether `device` matches `selection` — that is, whether this device is already selected.\n */\n private matchesDeviceSelection(\n kind: string,\n device: Device,\n selection: DeviceSelection | undefined,\n proposedConstraints: MediaStreamConstraints\n ): boolean {\n if (\n selection &&\n selection.stream.active &&\n (this.hasSameMediaStreamId(kind, selection, proposedConstraints) ||\n (selection.groupId !== null && this.hasSameGroupId(selection.groupId, kind, device)))\n ) {\n // TODO: this should be computed within this function.\n this.logger.debug(\n `Compare current device constraint ${JSON.stringify(\n selection.constraints\n )} to proposed constraints ${JSON.stringify(proposedConstraints)}`\n );\n return selection.matchesConstraints(proposedConstraints);\n }\n\n return false;\n }\n\n private async chooseInputIntrinsicDevice(\n kind: 'audio' | 'video',\n device: Device | null\n ): Promise {\n // N.B.,: the input device might already have augmented constraints supplied\n // by an `AudioTransformDevice`. `getMediaStreamConstraints` will respect\n // settings supplied by the device.\n const proposedConstraints = this.getMediaStreamConstraints(kind, device);\n\n // TODO: `matchesConstraints` should really return compatible/incompatible/exact --\n // `applyConstraints` can be used to reuse the active device while changing the\n // requested constraints.\n if (this.matchesDeviceSelection(kind, device, this.activeDevices[kind], proposedConstraints)) {\n this.logger.info(`reusing existing ${kind} input device`);\n return;\n }\n if (this.activeDevices[kind] && this.activeDevices[kind].stream) {\n this.stopTracksAndRemoveCallbacks(kind);\n }\n\n const startTimeMs = Date.now();\n const newDevice: DeviceSelection = new DeviceSelection();\n try {\n this.logger.info(\n `requesting new ${kind} device with constraint ${JSON.stringify(proposedConstraints)}`\n );\n const stream = this.intrinsicDeviceAsMediaStream(device);\n if (kind === 'audio' && device === null) {\n newDevice.stream = DefaultDeviceController.createEmptyAudioDevice() as MediaStream;\n newDevice.constraints = null;\n } else if (stream) {\n this.logger.info(`using media stream ${stream.id} for ${kind} device`);\n newDevice.stream = stream;\n newDevice.constraints = proposedConstraints;\n } else {\n newDevice.stream = await navigator.mediaDevices.getUserMedia(proposedConstraints);\n newDevice.constraints = proposedConstraints;\n }\n await this.handleNewInputDevice(kind, newDevice);\n } catch (error) {\n const errorMessage = this.getErrorMessage(error);\n\n if (kind === 'audio') {\n this.eventController?.publishEvent('audioInputFailed', {\n audioInputErrorMessage: errorMessage,\n });\n } else {\n this.eventController?.publishEvent('videoInputFailed', {\n videoInputErrorMessage: errorMessage,\n });\n }\n\n this.logger.error(\n `failed to get ${kind} device for constraints ${JSON.stringify(\n proposedConstraints\n )}: ${errorMessage}`\n );\n\n let hasError = true;\n // This is effectively `error instanceof OverconstrainedError` but works in Node.\n if (error && 'constraint' in error) {\n this.logger.error(`Over-constrained by constraint: ${error.constraint}`);\n // Try to reduce the constraints if over-constraints\n if (this.useMediaConstraintsFallback) {\n const fallbackConstraints = this.getMediaStreamConstraints(kind, device, true);\n const fallbackConstraintsJSON = JSON.stringify(fallbackConstraints);\n if (fallbackConstraintsJSON !== JSON.stringify(proposedConstraints)) {\n this.logger.info(\n `retry requesting new ${kind} device with minimal constraint ${fallbackConstraintsJSON}`\n );\n try {\n newDevice.stream = await navigator.mediaDevices.getUserMedia(fallbackConstraints);\n newDevice.constraints = fallbackConstraints;\n await this.handleNewInputDevice(kind, newDevice);\n hasError = false;\n } catch (e) {\n this.logger.error(\n `failed to get ${kind} device for constraints ${fallbackConstraintsJSON}: ${this.getErrorMessage(\n e\n )}`\n );\n }\n }\n }\n }\n\n if (hasError) {\n /*\n * If there is any error while acquiring the audio device, we fall back to null device.\n * Reason: If device selection fails (e.g. NotReadableError), the peer connection is left hanging\n * with no active audio track since we release the previously attached track.\n * If no audio packet has yet been sent to the server, the server will not emit the joined event.\n */\n if (kind === 'audio') {\n this.logger.info(`choosing null ${kind} device instead`);\n try {\n newDevice.stream = DefaultDeviceController.createEmptyAudioDevice();\n newDevice.constraints = null;\n await this.handleNewInputDevice(kind, newDevice);\n } catch (error) {\n this.logger.error(\n `failed to choose null ${kind} device. ${error.name}: ${error.message}`\n );\n }\n }\n this.handleGetUserMediaError(error, Date.now() - startTimeMs);\n }\n } finally {\n this.watchForDeviceChangesIfNecessary();\n }\n }\n\n private getErrorMessage(error: Error): string {\n if (!error) {\n return 'UnknownError';\n }\n if (error.name && error.message) {\n return `${error.name}: ${error.message}`;\n }\n if (error.name) {\n return error.name;\n }\n if (error.message) {\n return error.message;\n }\n return 'UnknownError';\n }\n\n private async handleNewInputDevice(\n kind: 'audio' | 'video',\n newDevice: DeviceSelection\n ): Promise {\n this.logger.info(`got ${kind} device for constraints ${JSON.stringify(newDevice.constraints)}`);\n const newDeviceId = this.getMediaTrackSettings(newDevice.stream)?.deviceId;\n newDevice.groupId = newDeviceId ? this.getGroupIdFromDeviceId(kind, newDeviceId) : '';\n this.activeDevices[kind] = newDevice;\n this.logger.debug(`Set activeDevice to ${JSON.stringify(newDevice)}`);\n this.watchForDeviceChangesIfNecessary();\n\n // Add event listener to detect ended event of media track\n // We only monitor the first track, and use its device ID for observer notifications.\n const track = newDevice.stream.getTracks()[0];\n\n if (track) {\n newDevice.endedCallback = (): void => {\n // Hard to test, but the safety check is worthwhile.\n /* istanbul ignore else */\n if (this.activeDevices[kind] && this.activeDevices[kind].stream === newDevice.stream) {\n this.handleDeviceStreamEnded(kind, newDeviceId);\n delete newDevice.endedCallback;\n }\n };\n track.addEventListener('ended', newDevice.endedCallback, { once: true });\n }\n\n // Add event listener to mute/unmute event for audio\n if (kind === 'audio') {\n // We only monitor the first track, and use its device ID for observer notifications.\n const track = newDevice.stream.getAudioTracks()[0];\n if (track) {\n const id = track.getSettings().deviceId || newDevice.stream;\n\n newDevice.trackMuteCallback = (): void => {\n this.mediaStreamMuteObserver(id, true);\n };\n newDevice.trackUnmuteCallback = (): void => {\n this.mediaStreamMuteObserver(id, false);\n };\n track.addEventListener('mute', newDevice.trackMuteCallback, { once: false });\n track.addEventListener('unmute', newDevice.trackUnmuteCallback, { once: false });\n\n this.logger.debug('Notifying mute state after selection');\n if (track.muted) {\n newDevice.trackMuteCallback();\n } else {\n newDevice.trackUnmuteCallback();\n }\n }\n }\n }\n\n private calculateMediaStreamConstraints(\n kind: string,\n deviceId: string,\n groupId: string,\n minimal: boolean\n ): MediaTrackConstraints | boolean {\n // No need for any constraints if we want minimal constraint and there is only one device\n if (minimal && this.listCachedDevicesOfKind(`${kind}input`).length === 1) {\n return true;\n }\n const trackConstraints: MediaTrackConstraints = {};\n // In Samsung Internet browser, navigator.mediaDevices.enumerateDevices()\n // returns same deviceId but different groupdId for some audioinput and videoinput devices.\n // To handle this, we select appropriate device using deviceId + groupId.\n if (this.browserBehavior.requiresNoExactMediaStreamConstraints()) {\n trackConstraints.deviceId = deviceId;\n } else {\n trackConstraints.deviceId = { exact: deviceId };\n }\n if (groupId) {\n trackConstraints.groupId = groupId;\n }\n\n if (minimal) {\n return trackConstraints;\n }\n\n // Video additional constraints\n if (kind === 'video') {\n trackConstraints.width = {\n ideal: this.videoInputQualitySettings.videoWidth,\n };\n trackConstraints.height = {\n ideal: this.videoInputQualitySettings.videoHeight,\n };\n trackConstraints.frameRate = {\n ideal: this.videoInputQualitySettings.videoFrameRate,\n };\n return trackConstraints;\n }\n\n // Audio additional constraints\n if (this.supportSampleRateConstraint()) {\n trackConstraints.sampleRate = { ideal: DefaultDeviceController.defaultSampleRate };\n }\n if (this.supportSampleSizeConstraint()) {\n trackConstraints.sampleSize = { ideal: DefaultDeviceController.defaultSampleSize };\n }\n if (this.supportChannelCountConstraint()) {\n trackConstraints.channelCount = { ideal: DefaultDeviceController.defaultChannelCount };\n }\n const augmented = {\n echoCancellation: true,\n googEchoCancellation: true,\n googEchoCancellation2: true,\n googAutoGainControl: true,\n googAutoGainControl2: true,\n googNoiseSuppression: true,\n googNoiseSuppression2: true,\n googHighpassFilter: true,\n ...trackConstraints,\n };\n return augmented as MediaTrackConstraints;\n }\n\n private getMediaStreamConstraintsFromTrackConstraints(\n kind: 'audio' | 'video',\n trackConstraints: MediaTrackConstraints | boolean\n ): MediaStreamConstraints {\n return kind === 'audio' ? { audio: trackConstraints } : { video: trackConstraints };\n }\n\n private getMediaStreamConstraints(\n kind: 'audio' | 'video',\n device: Device,\n minimal: boolean = false\n ): MediaStreamConstraints | null {\n let trackConstraints: MediaTrackConstraints | boolean = {};\n if (!device) {\n return null;\n }\n const stream = this.intrinsicDeviceAsMediaStream(device);\n if (stream) {\n // @ts-ignore - create a fake track constraint using the stream id\n trackConstraints.streamId = stream.id;\n return this.getMediaStreamConstraintsFromTrackConstraints(kind, trackConstraints);\n }\n if (typeof device === 'string') {\n let groupId = '';\n if (this.browserBehavior.requiresGroupIdMediaStreamConstraints()) {\n if (this.deviceInfoCache !== null) {\n groupId = this.getGroupIdFromDeviceId(kind, device);\n } else {\n this.logger.error(\n 'Device cache is not populated. Please make sure to call list devices first'\n );\n }\n }\n trackConstraints = this.calculateMediaStreamConstraints(kind, device, groupId, minimal);\n return this.getMediaStreamConstraintsFromTrackConstraints(kind, trackConstraints);\n }\n\n if (isMediaDeviceInfo(device)) {\n trackConstraints = this.calculateMediaStreamConstraints(\n kind,\n device.deviceId,\n device.groupId,\n minimal\n );\n return this.getMediaStreamConstraintsFromTrackConstraints(kind, trackConstraints);\n }\n // Take the input set of constraints.\n // In this case, we just use the constraints as-is.\n // @ts-ignore - device is a MediaTrackConstraints\n trackConstraints = device;\n return this.getMediaStreamConstraintsFromTrackConstraints(kind, trackConstraints);\n }\n\n private deviceInfoFromDeviceId(\n deviceKind: string,\n deviceId: string | null\n ): MediaDeviceInfo | null {\n if (this.deviceInfoCache === null) {\n return null;\n }\n for (const device of this.deviceInfoCache) {\n if (device.kind === deviceKind && device.deviceId === deviceId) {\n return device;\n }\n }\n return null;\n }\n\n hasAppliedTransform(): boolean {\n return !!this.transform;\n }\n\n private isMediaStreamReusableByDeviceId(stream: MediaStream, device: Device): boolean {\n // for null device, assume the stream is not reusable\n if (!stream || !stream.active || !device) {\n return false;\n }\n\n if ((device as MediaStream).id) {\n return stream.id === (device as MediaStream).id;\n }\n\n const settings = this.getMediaTrackSettings(stream);\n // If a device does not specify deviceId, we have to assume the stream is not reusable.\n if (!settings.deviceId) {\n return false;\n }\n const deviceIds = DefaultDeviceController.getIntrinsicDeviceId(device);\n if (typeof deviceIds === 'string') {\n return settings.deviceId === deviceIds;\n }\n return false;\n }\n\n private getMediaTrackSettings(stream: MediaStream): MediaTrackSettings {\n return stream.getTracks()[0]?.getSettings();\n }\n\n private reconnectAudioInputs(): void {\n if (!this.audioInputSourceNode) {\n return;\n }\n\n this.audioInputSourceNode.disconnect();\n const output = this.getMediaStreamOutputNode();\n this.audioInputSourceNode.connect(output);\n }\n\n private setTransform(device: AudioTransformDevice, nodes: AudioNodeSubgraph | undefined): void {\n this.transform?.nodes?.end.disconnect();\n this.transform = { nodes, device };\n\n const proc = nodes?.end;\n const dest = this.getMediaStreamDestinationNode();\n\n this.logger.debug(`Connecting transform node ${proc} to destination ${dest}.`);\n proc?.connect(dest);\n this.reconnectAudioInputs();\n }\n\n private removeTransform():\n | { device: AudioTransformDevice; nodes: AudioNodeSubgraph | undefined }\n | undefined {\n const previous = this.transform;\n if (!previous) {\n return undefined;\n }\n\n this.transform.nodes?.end.disconnect();\n this.transform = undefined;\n\n this.reconnectAudioInputs();\n\n return previous;\n }\n\n private attachAudioInputStreamToAudioContext(stream: MediaStream): void {\n this.audioInputSourceNode?.disconnect();\n this.audioInputSourceNode = DefaultDeviceController.getAudioContext().createMediaStreamSource(\n stream\n );\n const output = this.getMediaStreamOutputNode();\n this.audioInputSourceNode.connect(output);\n }\n\n /**\n * Return the end of the Web Audio graph: post-transform audio.\n */\n private getMediaStreamDestinationNode(): MediaStreamAudioDestinationNode {\n if (!this.audioInputDestinationNode) {\n this.audioInputDestinationNode = DefaultDeviceController.getAudioContext().createMediaStreamDestination();\n }\n return this.audioInputDestinationNode;\n }\n\n /**\n * Return the start of the Web Audio graph: pre-transform audio.\n * If there's no transform node, this is the destination node.\n */\n private getMediaStreamOutputNode(): AudioNode {\n return this.transform?.nodes?.start || this.getMediaStreamDestinationNode();\n }\n\n /**\n * Overrides the default latency hint used by the user agent when creating the `AudioContext`. By default,\n * user agents will choose \"interactive\" which opts for the smallest possible audio buffer. This can\n * cause choppy audio in some cases on Windows. Therefore, \"playback\" will be chosen on Windows unless\n * this value is overridden with this function.\n * @param latencyHint The latency hint to be used when creating the Web Audio `AudioContext`\n */\n static setDefaultLatencyHint(latencyHint?: AudioContextLatencyCategory | number): void {\n DefaultDeviceController.defaultLatencyHint = latencyHint;\n }\n\n /**\n * Returns the Web Audio `AudioContext` used by the {@link DefaultDeviceController}. The `AudioContext`\n * is created lazily the first time this function is called.\n *\n * This function will not attempt to recreate a stopped context, or resume a suspended one.\n *\n * @returns a Web Audio `AudioContext`\n */\n static getAudioContext(): AudioContext {\n if (!DefaultDeviceController.audioContext) {\n const options: AudioContextOptions = {};\n if (navigator.mediaDevices.getSupportedConstraints().sampleRate) {\n options.sampleRate = DefaultDeviceController.defaultSampleRate;\n }\n const browserBehavior = new DefaultBrowserBehavior();\n if (browserBehavior.requiresPlaybackLatencyHintForAudioContext()) {\n options.latencyHint = 'playback'; // 'playback' is equivalent to 0.02s (20ms) on Windows\n }\n if (DefaultDeviceController.defaultLatencyHint) {\n options.latencyHint = DefaultDeviceController.defaultLatencyHint;\n }\n DefaultDeviceController.audioContext = new (window.AudioContext ||\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (window as any).webkitAudioContext)(options);\n }\n return DefaultDeviceController.audioContext;\n }\n\n /**\n * Calls [suspend](https://developer.mozilla.org/en-US/docs/Web/API/AudioContext/suspend)\n * on reusable audio context. This is useful if you want an application to power down the\n * audio hardware when it will not be using an audio context for a while (i.e. if you\n * have an application that isn't always running a Chime SDK meeting). This is preferrable\n * to calling [[closeAudioContext]]\n */\n static async suspendAudioContext(): Promise {\n if (DefaultDeviceController.audioContext) {\n return DefaultDeviceController.audioContext.suspend();\n }\n return Promise.resolve();\n }\n\n /**\n * Calls [resume](https://developer.mozilla.org/en-US/docs/Web/API/AudioContext/resume)\n * on reusable audio context.\n */\n static async resumeAudioContext(): Promise {\n if (DefaultDeviceController.audioContext) {\n return DefaultDeviceController.audioContext.resume();\n }\n return Promise.resolve();\n }\n\n /**\n * Calls [close](https://developer.mozilla.org/en-US/docs/Web/API/AudioContext/close)\n * on reusable audio context. This more forceful the suspend and is not recommended\n * if you plan on reusing the Chime SDK, as it may lead to audio glitches (e.g. due to\n * https://issues.chromium.org/issues/40282750).\n */\n static closeAudioContext(): void {\n if (DefaultDeviceController.audioContext) {\n try {\n DefaultDeviceController.audioContext.close();\n } catch (e) {\n // Nothing we can do.\n }\n }\n DefaultDeviceController.audioContext = null;\n }\n\n addMediaStreamBrokerObserver(observer: MediaStreamBrokerObserver): void {\n this.mediaStreamBrokerObservers.add(observer);\n }\n\n removeMediaStreamBrokerObserver(observer: MediaStreamBrokerObserver): void {\n this.mediaStreamBrokerObservers.delete(observer);\n }\n\n private publishVideoInputDidChangeEvent(videoStream: MediaStream | undefined): void {\n this.forEachMediaStreamBrokerObserver((observer: MediaStreamBrokerObserver) => {\n if (observer.videoInputDidChange) {\n observer.videoInputDidChange(videoStream);\n }\n });\n this.pushVideoMeetingStateForPermissions(videoStream);\n }\n\n private publishAudioInputDidChangeEvent(audioStream: MediaStream | undefined): void {\n this.forEachMediaStreamBrokerObserver((observer: MediaStreamBrokerObserver) => {\n if (observer.audioInputDidChange) {\n observer.audioInputDidChange(audioStream);\n }\n });\n this.pushAudioMeetingStateForPermissions(audioStream);\n }\n\n private publishAudioOutputDidChangeEvent(device: MediaDeviceInfo | null): void {\n this.forEachMediaStreamBrokerObserver((observer: MediaStreamBrokerObserver) => {\n if (observer.audioOutputDidChange) {\n observer.audioOutputDidChange(device);\n }\n });\n }\n\n private supportSampleRateConstraint(): boolean {\n return this.useWebAudio && !!navigator.mediaDevices.getSupportedConstraints().sampleRate;\n }\n\n private supportSampleSizeConstraint(): boolean {\n return this.useWebAudio && !!navigator.mediaDevices.getSupportedConstraints().sampleSize;\n }\n\n private supportChannelCountConstraint(): boolean {\n return this.useWebAudio && !!navigator.mediaDevices.getSupportedConstraints().channelCount;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private trace(name: string, input?: any, output?: any): void {\n let s = `API/DefaultDeviceController/${name}`;\n if (typeof input !== 'undefined') {\n s += ` ${JSON.stringify(input)}`;\n }\n if (typeof output !== 'undefined') {\n s += ` -> ${JSON.stringify(output)}`;\n }\n this.logger.info(s);\n }\n}\n\nfunction isMediaDeviceInfo(device: unknown): device is MediaDeviceInfo {\n return (\n typeof device === 'object' &&\n 'deviceId' in device &&\n 'groupId' in device &&\n 'kind' in device &&\n 'label' in device\n );\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { loadWorker } from '../../libs/voicefocus/loader';\nimport { supportsWASM, supportsWorker } from '../../libs/voicefocus/support';\nimport { AssetSpec } from '../../libs/voicefocus/voicefocus';\nimport ModelSpecBuilder from '../backgroundblurprocessor/ModelSpecBuilder';\nimport BackgroundFilterPaths from '../backgroundfilter/BackgroundFilterPaths';\nimport DefaultBrowserBehavior from '../browserbehavior/DefaultBrowserBehavior';\nimport Logger from '../logger/Logger';\nimport ModelSpec from '../modelspec/ModelSpec';\nimport Versioning from '../versioning/Versioning';\nimport BackgroundFilterOptions from './BackgroundFilterOptions';\nimport BackgroundFilterSpec from './BackgroundFilterSpec';\n\n/** @internal */\nconst CREATE_DEFAULT_MODEL_SPEC = (): ModelSpec =>\n ModelSpecBuilder.builder().withSelfieSegmentationDefaults().build();\n\n/** @internal */\nconst DEFAULT_CDN = 'https://static.sdkassets.chime.aws';\n\n/** @internal */\nconst DEFAULT_PATHS: BackgroundFilterPaths = {\n worker: `${DEFAULT_CDN}/bgblur/workers/worker.js`,\n wasm: `${DEFAULT_CDN}/bgblur/wasm/_cwt-wasm.wasm`,\n simd: `${DEFAULT_CDN}/bgblur/wasm/_cwt-wasm-simd.wasm`,\n};\n\nexport default class BackgroundFilterVideoFrameProcessor {\n /**\n * Based on the SDK version, return an asset group.\n *\n * @returns the default asset spec, based on the SDK version.\n */\n private static defaultAssetSpec(): AssetSpec {\n const version = Versioning.sdkVersionSemVer;\n\n return {\n assetGroup: `sdk-${version.major}.${version.minor}`,\n };\n }\n\n /**\n * Set the given parameters to the url. Existing parameters in the url are preserved.\n * If duplicate parameters exist, they are overwritten, so it's safe to call this method multiple\n * times on the same url.\n *\n * @param url the initial url, can include query parameters\n * @param queryParams the query parameters to set\n * @returns a new url with the given query parameters.\n */\n private static createUrlWithParams(url: string, queryParams: { [key: string]: string }): string {\n const u = new URL(url);\n const keys = Object.keys(queryParams);\n for (const key of keys) {\n if (queryParams[key] !== undefined) {\n u.searchParams.set(key, queryParams[key]);\n }\n }\n\n return u.toString();\n }\n\n /**\n * Based on the spec that is passed in set defaults for spec\n * @param spec the spec that was passed in\n * @returns An updated spec with defaults set\n */\n protected static resolveSpec(spec?: BackgroundFilterSpec): BackgroundFilterSpec {\n const {\n paths = DEFAULT_PATHS,\n model = CREATE_DEFAULT_MODEL_SPEC(),\n assetGroup = this.defaultAssetSpec().assetGroup,\n revisionID = this.defaultAssetSpec().revisionID,\n } = spec || {};\n\n const params = {\n assetGroup,\n revisionID,\n sdk: encodeURIComponent(Versioning.sdkVersion),\n ua: encodeURIComponent(Versioning.sdkUserAgentLowResolution),\n };\n\n paths.worker = this.createUrlWithParams(paths.worker, params);\n paths.wasm = this.createUrlWithParams(paths.wasm, params);\n paths.simd = this.createUrlWithParams(paths.simd, params);\n model.path = this.createUrlWithParams(model.path, params);\n\n return {\n paths,\n model,\n assetGroup,\n revisionID,\n };\n }\n\n /**\n * Based on the options that are passed in set defaults for options\n * @param options the options that are passed in\n * @returns An updated set of options with defaults set\n */\n protected static resolveOptions(options?: BackgroundFilterOptions): BackgroundFilterOptions {\n if (!options.reportingPeriodMillis) {\n options.reportingPeriodMillis = 1000;\n }\n\n const DEFAULT_FILTER_CPU_UTILIZATION = 30;\n if (!options.filterCPUUtilization) {\n options.filterCPUUtilization = DEFAULT_FILTER_CPU_UTILIZATION;\n } else if (options.filterCPUUtilization < 0 || options.filterCPUUtilization > 100) {\n options.logger.warn(\n `filterCPUUtilization must be set to a range between 0 and 100 percent. Falling back to default of ${DEFAULT_FILTER_CPU_UTILIZATION} percent`\n );\n options.filterCPUUtilization = DEFAULT_FILTER_CPU_UTILIZATION;\n }\n return options;\n }\n\n /**\n * This method will detect the environment in which it is being used and determine if background\n * blur/replacement can be used.\n * @param spec The {@link BackgroundBlurSpec} spec that will be used to initialize assets\n * @param options options such as logger\n * @returns a boolean promise that will resolve to true if supported and false if not\n */\n static isSupported(spec?: BackgroundFilterSpec, options?: { logger?: Logger }): Promise {\n const { logger } = options;\n\n // could not figure out how to remove globalThis to test failure case\n /* istanbul ignore next */\n if (typeof globalThis === 'undefined') {\n logger.info('Browser does not have globalThis.');\n return Promise.resolve(false);\n }\n\n const browser = new DefaultBrowserBehavior();\n if (!browser.supportsBackgroundFilter()) {\n logger.info('Browser is not supported.');\n return Promise.resolve(false);\n }\n\n if (!supportsWASM(globalThis, logger)) {\n logger.info('Browser does not support WASM.');\n return Promise.resolve(false);\n }\n return this.supportsBackgroundFilter(globalThis, spec, logger);\n }\n\n private static async supportsBackgroundFilter(\n /* istanbul ignore next */\n scope: { Worker?: typeof Worker } = globalThis,\n spec?: BackgroundFilterSpec,\n logger?: Logger\n ): Promise {\n if (!supportsWorker(scope, logger)) {\n logger.info('Browser does not support web workers.');\n return false;\n }\n\n // Use the actual worker path -- it's only 20KB, and it'll get the cache warm.\n const workerURL = spec.paths.worker;\n try {\n const worker = await loadWorker(workerURL, 'BackgroundFilterWorker', {}, null);\n try {\n worker.terminate();\n } catch (e) {\n logger.info(`Failed to terminate worker. ${e.message}`);\n }\n return true;\n } catch (e) {\n logger.info(`Failed to fetch and instantiate test worker ${e.message}`);\n return false;\n }\n }\n}\n","// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nexport { convertToBuffer } from \"./convertToBuffer\";\nexport { isEmptyData } from \"./isEmptyData\";\nexport { numToUint8 } from \"./numToUint8\";\nexport {uint32ArrayFrom} from './uint32ArrayFrom';\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport Backoff from './Backoff';\n\n/**\n * Implements the [Full Jitter algorithm](\n * https://aws.amazon.com/blogs/architecture/exponential-backoff-and-jitter/)\n * and also allows for specifying a fixed wait added to the full jitter backoff\n * (which can be zero).\n */\nexport default class FullJitterBackoff implements Backoff {\n private currentRetry: number = 0;\n\n constructor(\n private fixedWaitMs: number,\n private shortBackoffMs: number,\n private longBackoffMs: number\n ) {\n if (this.fixedWaitMs < 0) {\n this.fixedWaitMs = 0;\n }\n if (this.shortBackoffMs < 0) {\n this.shortBackoffMs = 0;\n }\n if (this.longBackoffMs < 0) {\n this.longBackoffMs = 0;\n }\n this.reset();\n }\n\n reset(): void {\n this.currentRetry = 0;\n }\n\n nextBackoffAmountMs(): number {\n const fullJitterMs =\n Math.random() *\n Math.min(this.longBackoffMs, this.shortBackoffMs * Math.pow(2.0, this.currentRetry)) +\n this.fixedWaitMs;\n this.currentRetry += 1;\n return fullJitterMs;\n }\n}\n","/**\n * Utility functions for web applications.\n *\n * @author Dave Longley\n *\n * Copyright (c) 2010-2018 Digital Bazaar, Inc.\n */\nvar forge = require('./forge');\nvar baseN = require('./baseN');\n\n/* Utilities API */\nvar util = module.exports = forge.util = forge.util || {};\n\n// define setImmediate and nextTick\n(function() {\n // use native nextTick (unless we're in webpack)\n // webpack (or better node-libs-browser polyfill) sets process.browser.\n // this way we can detect webpack properly\n if(typeof process !== 'undefined' && process.nextTick && !process.browser) {\n util.nextTick = process.nextTick;\n if(typeof setImmediate === 'function') {\n util.setImmediate = setImmediate;\n } else {\n // polyfill setImmediate with nextTick, older versions of node\n // (those w/o setImmediate) won't totally starve IO\n util.setImmediate = util.nextTick;\n }\n return;\n }\n\n // polyfill nextTick with native setImmediate\n if(typeof setImmediate === 'function') {\n util.setImmediate = function() { return setImmediate.apply(undefined, arguments); };\n util.nextTick = function(callback) {\n return setImmediate(callback);\n };\n return;\n }\n\n /* Note: A polyfill upgrade pattern is used here to allow combining\n polyfills. For example, MutationObserver is fast, but blocks UI updates,\n so it needs to allow UI updates periodically, so it falls back on\n postMessage or setTimeout. */\n\n // polyfill with setTimeout\n util.setImmediate = function(callback) {\n setTimeout(callback, 0);\n };\n\n // upgrade polyfill to use postMessage\n if(typeof window !== 'undefined' &&\n typeof window.postMessage === 'function') {\n var msg = 'forge.setImmediate';\n var callbacks = [];\n util.setImmediate = function(callback) {\n callbacks.push(callback);\n // only send message when one hasn't been sent in\n // the current turn of the event loop\n if(callbacks.length === 1) {\n window.postMessage(msg, '*');\n }\n };\n function handler(event) {\n if(event.source === window && event.data === msg) {\n event.stopPropagation();\n var copy = callbacks.slice();\n callbacks.length = 0;\n copy.forEach(function(callback) {\n callback();\n });\n }\n }\n window.addEventListener('message', handler, true);\n }\n\n // upgrade polyfill to use MutationObserver\n if(typeof MutationObserver !== 'undefined') {\n // polyfill with MutationObserver\n var now = Date.now();\n var attr = true;\n var div = document.createElement('div');\n var callbacks = [];\n new MutationObserver(function() {\n var copy = callbacks.slice();\n callbacks.length = 0;\n copy.forEach(function(callback) {\n callback();\n });\n }).observe(div, {attributes: true});\n var oldSetImmediate = util.setImmediate;\n util.setImmediate = function(callback) {\n if(Date.now() - now > 15) {\n now = Date.now();\n oldSetImmediate(callback);\n } else {\n callbacks.push(callback);\n // only trigger observer when it hasn't been triggered in\n // the current turn of the event loop\n if(callbacks.length === 1) {\n div.setAttribute('a', attr = !attr);\n }\n }\n };\n }\n\n util.nextTick = util.setImmediate;\n})();\n\n// check if running under Node.js\nutil.isNodejs =\n typeof process !== 'undefined' && process.versions && process.versions.node;\n\n\n// 'self' will also work in Web Workers (instance of WorkerGlobalScope) while\n// it will point to `window` in the main thread.\n// To remain compatible with older browsers, we fall back to 'window' if 'self'\n// is not available.\nutil.globalScope = (function() {\n if(util.isNodejs) {\n return global;\n }\n\n return typeof self === 'undefined' ? window : self;\n})();\n\n// define isArray\nutil.isArray = Array.isArray || function(x) {\n return Object.prototype.toString.call(x) === '[object Array]';\n};\n\n// define isArrayBuffer\nutil.isArrayBuffer = function(x) {\n return typeof ArrayBuffer !== 'undefined' && x instanceof ArrayBuffer;\n};\n\n// define isArrayBufferView\nutil.isArrayBufferView = function(x) {\n return x && util.isArrayBuffer(x.buffer) && x.byteLength !== undefined;\n};\n\n/**\n * Ensure a bits param is 8, 16, 24, or 32. Used to validate input for\n * algorithms where bit manipulation, JavaScript limitations, and/or algorithm\n * design only allow for byte operations of a limited size.\n *\n * @param n number of bits.\n *\n * Throw Error if n invalid.\n */\nfunction _checkBitsParam(n) {\n if(!(n === 8 || n === 16 || n === 24 || n === 32)) {\n throw new Error('Only 8, 16, 24, or 32 bits supported: ' + n);\n }\n}\n\n// TODO: set ByteBuffer to best available backing\nutil.ByteBuffer = ByteStringBuffer;\n\n/** Buffer w/BinaryString backing */\n\n/**\n * Constructor for a binary string backed byte buffer.\n *\n * @param [b] the bytes to wrap (either encoded as string, one byte per\n * character, or as an ArrayBuffer or Typed Array).\n */\nfunction ByteStringBuffer(b) {\n // TODO: update to match DataBuffer API\n\n // the data in this buffer\n this.data = '';\n // the pointer for reading from this buffer\n this.read = 0;\n\n if(typeof b === 'string') {\n this.data = b;\n } else if(util.isArrayBuffer(b) || util.isArrayBufferView(b)) {\n if(typeof Buffer !== 'undefined' && b instanceof Buffer) {\n this.data = b.toString('binary');\n } else {\n // convert native buffer to forge buffer\n // FIXME: support native buffers internally instead\n var arr = new Uint8Array(b);\n try {\n this.data = String.fromCharCode.apply(null, arr);\n } catch(e) {\n for(var i = 0; i < arr.length; ++i) {\n this.putByte(arr[i]);\n }\n }\n }\n } else if(b instanceof ByteStringBuffer ||\n (typeof b === 'object' && typeof b.data === 'string' &&\n typeof b.read === 'number')) {\n // copy existing buffer\n this.data = b.data;\n this.read = b.read;\n }\n\n // used for v8 optimization\n this._constructedStringLength = 0;\n}\nutil.ByteStringBuffer = ByteStringBuffer;\n\n/* Note: This is an optimization for V8-based browsers. When V8 concatenates\n a string, the strings are only joined logically using a \"cons string\" or\n \"constructed/concatenated string\". These containers keep references to one\n another and can result in very large memory usage. For example, if a 2MB\n string is constructed by concatenating 4 bytes together at a time, the\n memory usage will be ~44MB; so ~22x increase. The strings are only joined\n together when an operation requiring their joining takes place, such as\n substr(). This function is called when adding data to this buffer to ensure\n these types of strings are periodically joined to reduce the memory\n footprint. */\nvar _MAX_CONSTRUCTED_STRING_LENGTH = 4096;\nutil.ByteStringBuffer.prototype._optimizeConstructedString = function(x) {\n this._constructedStringLength += x;\n if(this._constructedStringLength > _MAX_CONSTRUCTED_STRING_LENGTH) {\n // this substr() should cause the constructed string to join\n this.data.substr(0, 1);\n this._constructedStringLength = 0;\n }\n};\n\n/**\n * Gets the number of bytes in this buffer.\n *\n * @return the number of bytes in this buffer.\n */\nutil.ByteStringBuffer.prototype.length = function() {\n return this.data.length - this.read;\n};\n\n/**\n * Gets whether or not this buffer is empty.\n *\n * @return true if this buffer is empty, false if not.\n */\nutil.ByteStringBuffer.prototype.isEmpty = function() {\n return this.length() <= 0;\n};\n\n/**\n * Puts a byte in this buffer.\n *\n * @param b the byte to put.\n *\n * @return this buffer.\n */\nutil.ByteStringBuffer.prototype.putByte = function(b) {\n return this.putBytes(String.fromCharCode(b));\n};\n\n/**\n * Puts a byte in this buffer N times.\n *\n * @param b the byte to put.\n * @param n the number of bytes of value b to put.\n *\n * @return this buffer.\n */\nutil.ByteStringBuffer.prototype.fillWithByte = function(b, n) {\n b = String.fromCharCode(b);\n var d = this.data;\n while(n > 0) {\n if(n & 1) {\n d += b;\n }\n n >>>= 1;\n if(n > 0) {\n b += b;\n }\n }\n this.data = d;\n this._optimizeConstructedString(n);\n return this;\n};\n\n/**\n * Puts bytes in this buffer.\n *\n * @param bytes the bytes (as a binary encoded string) to put.\n *\n * @return this buffer.\n */\nutil.ByteStringBuffer.prototype.putBytes = function(bytes) {\n this.data += bytes;\n this._optimizeConstructedString(bytes.length);\n return this;\n};\n\n/**\n * Puts a UTF-16 encoded string into this buffer.\n *\n * @param str the string to put.\n *\n * @return this buffer.\n */\nutil.ByteStringBuffer.prototype.putString = function(str) {\n return this.putBytes(util.encodeUtf8(str));\n};\n\n/**\n * Puts a 16-bit integer in this buffer in big-endian order.\n *\n * @param i the 16-bit integer.\n *\n * @return this buffer.\n */\nutil.ByteStringBuffer.prototype.putInt16 = function(i) {\n return this.putBytes(\n String.fromCharCode(i >> 8 & 0xFF) +\n String.fromCharCode(i & 0xFF));\n};\n\n/**\n * Puts a 24-bit integer in this buffer in big-endian order.\n *\n * @param i the 24-bit integer.\n *\n * @return this buffer.\n */\nutil.ByteStringBuffer.prototype.putInt24 = function(i) {\n return this.putBytes(\n String.fromCharCode(i >> 16 & 0xFF) +\n String.fromCharCode(i >> 8 & 0xFF) +\n String.fromCharCode(i & 0xFF));\n};\n\n/**\n * Puts a 32-bit integer in this buffer in big-endian order.\n *\n * @param i the 32-bit integer.\n *\n * @return this buffer.\n */\nutil.ByteStringBuffer.prototype.putInt32 = function(i) {\n return this.putBytes(\n String.fromCharCode(i >> 24 & 0xFF) +\n String.fromCharCode(i >> 16 & 0xFF) +\n String.fromCharCode(i >> 8 & 0xFF) +\n String.fromCharCode(i & 0xFF));\n};\n\n/**\n * Puts a 16-bit integer in this buffer in little-endian order.\n *\n * @param i the 16-bit integer.\n *\n * @return this buffer.\n */\nutil.ByteStringBuffer.prototype.putInt16Le = function(i) {\n return this.putBytes(\n String.fromCharCode(i & 0xFF) +\n String.fromCharCode(i >> 8 & 0xFF));\n};\n\n/**\n * Puts a 24-bit integer in this buffer in little-endian order.\n *\n * @param i the 24-bit integer.\n *\n * @return this buffer.\n */\nutil.ByteStringBuffer.prototype.putInt24Le = function(i) {\n return this.putBytes(\n String.fromCharCode(i & 0xFF) +\n String.fromCharCode(i >> 8 & 0xFF) +\n String.fromCharCode(i >> 16 & 0xFF));\n};\n\n/**\n * Puts a 32-bit integer in this buffer in little-endian order.\n *\n * @param i the 32-bit integer.\n *\n * @return this buffer.\n */\nutil.ByteStringBuffer.prototype.putInt32Le = function(i) {\n return this.putBytes(\n String.fromCharCode(i & 0xFF) +\n String.fromCharCode(i >> 8 & 0xFF) +\n String.fromCharCode(i >> 16 & 0xFF) +\n String.fromCharCode(i >> 24 & 0xFF));\n};\n\n/**\n * Puts an n-bit integer in this buffer in big-endian order.\n *\n * @param i the n-bit integer.\n * @param n the number of bits in the integer (8, 16, 24, or 32).\n *\n * @return this buffer.\n */\nutil.ByteStringBuffer.prototype.putInt = function(i, n) {\n _checkBitsParam(n);\n var bytes = '';\n do {\n n -= 8;\n bytes += String.fromCharCode((i >> n) & 0xFF);\n } while(n > 0);\n return this.putBytes(bytes);\n};\n\n/**\n * Puts a signed n-bit integer in this buffer in big-endian order. Two's\n * complement representation is used.\n *\n * @param i the n-bit integer.\n * @param n the number of bits in the integer (8, 16, 24, or 32).\n *\n * @return this buffer.\n */\nutil.ByteStringBuffer.prototype.putSignedInt = function(i, n) {\n // putInt checks n\n if(i < 0) {\n i += 2 << (n - 1);\n }\n return this.putInt(i, n);\n};\n\n/**\n * Puts the given buffer into this buffer.\n *\n * @param buffer the buffer to put into this one.\n *\n * @return this buffer.\n */\nutil.ByteStringBuffer.prototype.putBuffer = function(buffer) {\n return this.putBytes(buffer.getBytes());\n};\n\n/**\n * Gets a byte from this buffer and advances the read pointer by 1.\n *\n * @return the byte.\n */\nutil.ByteStringBuffer.prototype.getByte = function() {\n return this.data.charCodeAt(this.read++);\n};\n\n/**\n * Gets a uint16 from this buffer in big-endian order and advances the read\n * pointer by 2.\n *\n * @return the uint16.\n */\nutil.ByteStringBuffer.prototype.getInt16 = function() {\n var rval = (\n this.data.charCodeAt(this.read) << 8 ^\n this.data.charCodeAt(this.read + 1));\n this.read += 2;\n return rval;\n};\n\n/**\n * Gets a uint24 from this buffer in big-endian order and advances the read\n * pointer by 3.\n *\n * @return the uint24.\n */\nutil.ByteStringBuffer.prototype.getInt24 = function() {\n var rval = (\n this.data.charCodeAt(this.read) << 16 ^\n this.data.charCodeAt(this.read + 1) << 8 ^\n this.data.charCodeAt(this.read + 2));\n this.read += 3;\n return rval;\n};\n\n/**\n * Gets a uint32 from this buffer in big-endian order and advances the read\n * pointer by 4.\n *\n * @return the word.\n */\nutil.ByteStringBuffer.prototype.getInt32 = function() {\n var rval = (\n this.data.charCodeAt(this.read) << 24 ^\n this.data.charCodeAt(this.read + 1) << 16 ^\n this.data.charCodeAt(this.read + 2) << 8 ^\n this.data.charCodeAt(this.read + 3));\n this.read += 4;\n return rval;\n};\n\n/**\n * Gets a uint16 from this buffer in little-endian order and advances the read\n * pointer by 2.\n *\n * @return the uint16.\n */\nutil.ByteStringBuffer.prototype.getInt16Le = function() {\n var rval = (\n this.data.charCodeAt(this.read) ^\n this.data.charCodeAt(this.read + 1) << 8);\n this.read += 2;\n return rval;\n};\n\n/**\n * Gets a uint24 from this buffer in little-endian order and advances the read\n * pointer by 3.\n *\n * @return the uint24.\n */\nutil.ByteStringBuffer.prototype.getInt24Le = function() {\n var rval = (\n this.data.charCodeAt(this.read) ^\n this.data.charCodeAt(this.read + 1) << 8 ^\n this.data.charCodeAt(this.read + 2) << 16);\n this.read += 3;\n return rval;\n};\n\n/**\n * Gets a uint32 from this buffer in little-endian order and advances the read\n * pointer by 4.\n *\n * @return the word.\n */\nutil.ByteStringBuffer.prototype.getInt32Le = function() {\n var rval = (\n this.data.charCodeAt(this.read) ^\n this.data.charCodeAt(this.read + 1) << 8 ^\n this.data.charCodeAt(this.read + 2) << 16 ^\n this.data.charCodeAt(this.read + 3) << 24);\n this.read += 4;\n return rval;\n};\n\n/**\n * Gets an n-bit integer from this buffer in big-endian order and advances the\n * read pointer by ceil(n/8).\n *\n * @param n the number of bits in the integer (8, 16, 24, or 32).\n *\n * @return the integer.\n */\nutil.ByteStringBuffer.prototype.getInt = function(n) {\n _checkBitsParam(n);\n var rval = 0;\n do {\n // TODO: Use (rval * 0x100) if adding support for 33 to 53 bits.\n rval = (rval << 8) + this.data.charCodeAt(this.read++);\n n -= 8;\n } while(n > 0);\n return rval;\n};\n\n/**\n * Gets a signed n-bit integer from this buffer in big-endian order, using\n * two's complement, and advances the read pointer by n/8.\n *\n * @param n the number of bits in the integer (8, 16, 24, or 32).\n *\n * @return the integer.\n */\nutil.ByteStringBuffer.prototype.getSignedInt = function(n) {\n // getInt checks n\n var x = this.getInt(n);\n var max = 2 << (n - 2);\n if(x >= max) {\n x -= max << 1;\n }\n return x;\n};\n\n/**\n * Reads bytes out as a binary encoded string and clears them from the\n * buffer. Note that the resulting string is binary encoded (in node.js this\n * encoding is referred to as `binary`, it is *not* `utf8`).\n *\n * @param count the number of bytes to read, undefined or null for all.\n *\n * @return a binary encoded string of bytes.\n */\nutil.ByteStringBuffer.prototype.getBytes = function(count) {\n var rval;\n if(count) {\n // read count bytes\n count = Math.min(this.length(), count);\n rval = this.data.slice(this.read, this.read + count);\n this.read += count;\n } else if(count === 0) {\n rval = '';\n } else {\n // read all bytes, optimize to only copy when needed\n rval = (this.read === 0) ? this.data : this.data.slice(this.read);\n this.clear();\n }\n return rval;\n};\n\n/**\n * Gets a binary encoded string of the bytes from this buffer without\n * modifying the read pointer.\n *\n * @param count the number of bytes to get, omit to get all.\n *\n * @return a string full of binary encoded characters.\n */\nutil.ByteStringBuffer.prototype.bytes = function(count) {\n return (typeof(count) === 'undefined' ?\n this.data.slice(this.read) :\n this.data.slice(this.read, this.read + count));\n};\n\n/**\n * Gets a byte at the given index without modifying the read pointer.\n *\n * @param i the byte index.\n *\n * @return the byte.\n */\nutil.ByteStringBuffer.prototype.at = function(i) {\n return this.data.charCodeAt(this.read + i);\n};\n\n/**\n * Puts a byte at the given index without modifying the read pointer.\n *\n * @param i the byte index.\n * @param b the byte to put.\n *\n * @return this buffer.\n */\nutil.ByteStringBuffer.prototype.setAt = function(i, b) {\n this.data = this.data.substr(0, this.read + i) +\n String.fromCharCode(b) +\n this.data.substr(this.read + i + 1);\n return this;\n};\n\n/**\n * Gets the last byte without modifying the read pointer.\n *\n * @return the last byte.\n */\nutil.ByteStringBuffer.prototype.last = function() {\n return this.data.charCodeAt(this.data.length - 1);\n};\n\n/**\n * Creates a copy of this buffer.\n *\n * @return the copy.\n */\nutil.ByteStringBuffer.prototype.copy = function() {\n var c = util.createBuffer(this.data);\n c.read = this.read;\n return c;\n};\n\n/**\n * Compacts this buffer.\n *\n * @return this buffer.\n */\nutil.ByteStringBuffer.prototype.compact = function() {\n if(this.read > 0) {\n this.data = this.data.slice(this.read);\n this.read = 0;\n }\n return this;\n};\n\n/**\n * Clears this buffer.\n *\n * @return this buffer.\n */\nutil.ByteStringBuffer.prototype.clear = function() {\n this.data = '';\n this.read = 0;\n return this;\n};\n\n/**\n * Shortens this buffer by triming bytes off of the end of this buffer.\n *\n * @param count the number of bytes to trim off.\n *\n * @return this buffer.\n */\nutil.ByteStringBuffer.prototype.truncate = function(count) {\n var len = Math.max(0, this.length() - count);\n this.data = this.data.substr(this.read, len);\n this.read = 0;\n return this;\n};\n\n/**\n * Converts this buffer to a hexadecimal string.\n *\n * @return a hexadecimal string.\n */\nutil.ByteStringBuffer.prototype.toHex = function() {\n var rval = '';\n for(var i = this.read; i < this.data.length; ++i) {\n var b = this.data.charCodeAt(i);\n if(b < 16) {\n rval += '0';\n }\n rval += b.toString(16);\n }\n return rval;\n};\n\n/**\n * Converts this buffer to a UTF-16 string (standard JavaScript string).\n *\n * @return a UTF-16 string.\n */\nutil.ByteStringBuffer.prototype.toString = function() {\n return util.decodeUtf8(this.bytes());\n};\n\n/** End Buffer w/BinaryString backing */\n\n/** Buffer w/UInt8Array backing */\n\n/**\n * FIXME: Experimental. Do not use yet.\n *\n * Constructor for an ArrayBuffer-backed byte buffer.\n *\n * The buffer may be constructed from a string, an ArrayBuffer, DataView, or a\n * TypedArray.\n *\n * If a string is given, its encoding should be provided as an option,\n * otherwise it will default to 'binary'. A 'binary' string is encoded such\n * that each character is one byte in length and size.\n *\n * If an ArrayBuffer, DataView, or TypedArray is given, it will be used\n * *directly* without any copying. Note that, if a write to the buffer requires\n * more space, the buffer will allocate a new backing ArrayBuffer to\n * accommodate. The starting read and write offsets for the buffer may be\n * given as options.\n *\n * @param [b] the initial bytes for this buffer.\n * @param options the options to use:\n * [readOffset] the starting read offset to use (default: 0).\n * [writeOffset] the starting write offset to use (default: the\n * length of the first parameter).\n * [growSize] the minimum amount, in bytes, to grow the buffer by to\n * accommodate writes (default: 1024).\n * [encoding] the encoding ('binary', 'utf8', 'utf16', 'hex') for the\n * first parameter, if it is a string (default: 'binary').\n */\nfunction DataBuffer(b, options) {\n // default options\n options = options || {};\n\n // pointers for read from/write to buffer\n this.read = options.readOffset || 0;\n this.growSize = options.growSize || 1024;\n\n var isArrayBuffer = util.isArrayBuffer(b);\n var isArrayBufferView = util.isArrayBufferView(b);\n if(isArrayBuffer || isArrayBufferView) {\n // use ArrayBuffer directly\n if(isArrayBuffer) {\n this.data = new DataView(b);\n } else {\n // TODO: adjust read/write offset based on the type of view\n // or specify that this must be done in the options ... that the\n // offsets are byte-based\n this.data = new DataView(b.buffer, b.byteOffset, b.byteLength);\n }\n this.write = ('writeOffset' in options ?\n options.writeOffset : this.data.byteLength);\n return;\n }\n\n // initialize to empty array buffer and add any given bytes using putBytes\n this.data = new DataView(new ArrayBuffer(0));\n this.write = 0;\n\n if(b !== null && b !== undefined) {\n this.putBytes(b);\n }\n\n if('writeOffset' in options) {\n this.write = options.writeOffset;\n }\n}\nutil.DataBuffer = DataBuffer;\n\n/**\n * Gets the number of bytes in this buffer.\n *\n * @return the number of bytes in this buffer.\n */\nutil.DataBuffer.prototype.length = function() {\n return this.write - this.read;\n};\n\n/**\n * Gets whether or not this buffer is empty.\n *\n * @return true if this buffer is empty, false if not.\n */\nutil.DataBuffer.prototype.isEmpty = function() {\n return this.length() <= 0;\n};\n\n/**\n * Ensures this buffer has enough empty space to accommodate the given number\n * of bytes. An optional parameter may be given that indicates a minimum\n * amount to grow the buffer if necessary. If the parameter is not given,\n * the buffer will be grown by some previously-specified default amount\n * or heuristic.\n *\n * @param amount the number of bytes to accommodate.\n * @param [growSize] the minimum amount, in bytes, to grow the buffer by if\n * necessary.\n */\nutil.DataBuffer.prototype.accommodate = function(amount, growSize) {\n if(this.length() >= amount) {\n return this;\n }\n growSize = Math.max(growSize || this.growSize, amount);\n\n // grow buffer\n var src = new Uint8Array(\n this.data.buffer, this.data.byteOffset, this.data.byteLength);\n var dst = new Uint8Array(this.length() + growSize);\n dst.set(src);\n this.data = new DataView(dst.buffer);\n\n return this;\n};\n\n/**\n * Puts a byte in this buffer.\n *\n * @param b the byte to put.\n *\n * @return this buffer.\n */\nutil.DataBuffer.prototype.putByte = function(b) {\n this.accommodate(1);\n this.data.setUint8(this.write++, b);\n return this;\n};\n\n/**\n * Puts a byte in this buffer N times.\n *\n * @param b the byte to put.\n * @param n the number of bytes of value b to put.\n *\n * @return this buffer.\n */\nutil.DataBuffer.prototype.fillWithByte = function(b, n) {\n this.accommodate(n);\n for(var i = 0; i < n; ++i) {\n this.data.setUint8(b);\n }\n return this;\n};\n\n/**\n * Puts bytes in this buffer. The bytes may be given as a string, an\n * ArrayBuffer, a DataView, or a TypedArray.\n *\n * @param bytes the bytes to put.\n * @param [encoding] the encoding for the first parameter ('binary', 'utf8',\n * 'utf16', 'hex'), if it is a string (default: 'binary').\n *\n * @return this buffer.\n */\nutil.DataBuffer.prototype.putBytes = function(bytes, encoding) {\n if(util.isArrayBufferView(bytes)) {\n var src = new Uint8Array(bytes.buffer, bytes.byteOffset, bytes.byteLength);\n var len = src.byteLength - src.byteOffset;\n this.accommodate(len);\n var dst = new Uint8Array(this.data.buffer, this.write);\n dst.set(src);\n this.write += len;\n return this;\n }\n\n if(util.isArrayBuffer(bytes)) {\n var src = new Uint8Array(bytes);\n this.accommodate(src.byteLength);\n var dst = new Uint8Array(this.data.buffer);\n dst.set(src, this.write);\n this.write += src.byteLength;\n return this;\n }\n\n // bytes is a util.DataBuffer or equivalent\n if(bytes instanceof util.DataBuffer ||\n (typeof bytes === 'object' &&\n typeof bytes.read === 'number' && typeof bytes.write === 'number' &&\n util.isArrayBufferView(bytes.data))) {\n var src = new Uint8Array(bytes.data.byteLength, bytes.read, bytes.length());\n this.accommodate(src.byteLength);\n var dst = new Uint8Array(bytes.data.byteLength, this.write);\n dst.set(src);\n this.write += src.byteLength;\n return this;\n }\n\n if(bytes instanceof util.ByteStringBuffer) {\n // copy binary string and process as the same as a string parameter below\n bytes = bytes.data;\n encoding = 'binary';\n }\n\n // string conversion\n encoding = encoding || 'binary';\n if(typeof bytes === 'string') {\n var view;\n\n // decode from string\n if(encoding === 'hex') {\n this.accommodate(Math.ceil(bytes.length / 2));\n view = new Uint8Array(this.data.buffer, this.write);\n this.write += util.binary.hex.decode(bytes, view, this.write);\n return this;\n }\n if(encoding === 'base64') {\n this.accommodate(Math.ceil(bytes.length / 4) * 3);\n view = new Uint8Array(this.data.buffer, this.write);\n this.write += util.binary.base64.decode(bytes, view, this.write);\n return this;\n }\n\n // encode text as UTF-8 bytes\n if(encoding === 'utf8') {\n // encode as UTF-8 then decode string as raw binary\n bytes = util.encodeUtf8(bytes);\n encoding = 'binary';\n }\n\n // decode string as raw binary\n if(encoding === 'binary' || encoding === 'raw') {\n // one byte per character\n this.accommodate(bytes.length);\n view = new Uint8Array(this.data.buffer, this.write);\n this.write += util.binary.raw.decode(view);\n return this;\n }\n\n // encode text as UTF-16 bytes\n if(encoding === 'utf16') {\n // two bytes per character\n this.accommodate(bytes.length * 2);\n view = new Uint16Array(this.data.buffer, this.write);\n this.write += util.text.utf16.encode(view);\n return this;\n }\n\n throw new Error('Invalid encoding: ' + encoding);\n }\n\n throw Error('Invalid parameter: ' + bytes);\n};\n\n/**\n * Puts the given buffer into this buffer.\n *\n * @param buffer the buffer to put into this one.\n *\n * @return this buffer.\n */\nutil.DataBuffer.prototype.putBuffer = function(buffer) {\n this.putBytes(buffer);\n buffer.clear();\n return this;\n};\n\n/**\n * Puts a string into this buffer.\n *\n * @param str the string to put.\n * @param [encoding] the encoding for the string (default: 'utf16').\n *\n * @return this buffer.\n */\nutil.DataBuffer.prototype.putString = function(str) {\n return this.putBytes(str, 'utf16');\n};\n\n/**\n * Puts a 16-bit integer in this buffer in big-endian order.\n *\n * @param i the 16-bit integer.\n *\n * @return this buffer.\n */\nutil.DataBuffer.prototype.putInt16 = function(i) {\n this.accommodate(2);\n this.data.setInt16(this.write, i);\n this.write += 2;\n return this;\n};\n\n/**\n * Puts a 24-bit integer in this buffer in big-endian order.\n *\n * @param i the 24-bit integer.\n *\n * @return this buffer.\n */\nutil.DataBuffer.prototype.putInt24 = function(i) {\n this.accommodate(3);\n this.data.setInt16(this.write, i >> 8 & 0xFFFF);\n this.data.setInt8(this.write, i >> 16 & 0xFF);\n this.write += 3;\n return this;\n};\n\n/**\n * Puts a 32-bit integer in this buffer in big-endian order.\n *\n * @param i the 32-bit integer.\n *\n * @return this buffer.\n */\nutil.DataBuffer.prototype.putInt32 = function(i) {\n this.accommodate(4);\n this.data.setInt32(this.write, i);\n this.write += 4;\n return this;\n};\n\n/**\n * Puts a 16-bit integer in this buffer in little-endian order.\n *\n * @param i the 16-bit integer.\n *\n * @return this buffer.\n */\nutil.DataBuffer.prototype.putInt16Le = function(i) {\n this.accommodate(2);\n this.data.setInt16(this.write, i, true);\n this.write += 2;\n return this;\n};\n\n/**\n * Puts a 24-bit integer in this buffer in little-endian order.\n *\n * @param i the 24-bit integer.\n *\n * @return this buffer.\n */\nutil.DataBuffer.prototype.putInt24Le = function(i) {\n this.accommodate(3);\n this.data.setInt8(this.write, i >> 16 & 0xFF);\n this.data.setInt16(this.write, i >> 8 & 0xFFFF, true);\n this.write += 3;\n return this;\n};\n\n/**\n * Puts a 32-bit integer in this buffer in little-endian order.\n *\n * @param i the 32-bit integer.\n *\n * @return this buffer.\n */\nutil.DataBuffer.prototype.putInt32Le = function(i) {\n this.accommodate(4);\n this.data.setInt32(this.write, i, true);\n this.write += 4;\n return this;\n};\n\n/**\n * Puts an n-bit integer in this buffer in big-endian order.\n *\n * @param i the n-bit integer.\n * @param n the number of bits in the integer (8, 16, 24, or 32).\n *\n * @return this buffer.\n */\nutil.DataBuffer.prototype.putInt = function(i, n) {\n _checkBitsParam(n);\n this.accommodate(n / 8);\n do {\n n -= 8;\n this.data.setInt8(this.write++, (i >> n) & 0xFF);\n } while(n > 0);\n return this;\n};\n\n/**\n * Puts a signed n-bit integer in this buffer in big-endian order. Two's\n * complement representation is used.\n *\n * @param i the n-bit integer.\n * @param n the number of bits in the integer.\n *\n * @return this buffer.\n */\nutil.DataBuffer.prototype.putSignedInt = function(i, n) {\n _checkBitsParam(n);\n this.accommodate(n / 8);\n if(i < 0) {\n i += 2 << (n - 1);\n }\n return this.putInt(i, n);\n};\n\n/**\n * Gets a byte from this buffer and advances the read pointer by 1.\n *\n * @return the byte.\n */\nutil.DataBuffer.prototype.getByte = function() {\n return this.data.getInt8(this.read++);\n};\n\n/**\n * Gets a uint16 from this buffer in big-endian order and advances the read\n * pointer by 2.\n *\n * @return the uint16.\n */\nutil.DataBuffer.prototype.getInt16 = function() {\n var rval = this.data.getInt16(this.read);\n this.read += 2;\n return rval;\n};\n\n/**\n * Gets a uint24 from this buffer in big-endian order and advances the read\n * pointer by 3.\n *\n * @return the uint24.\n */\nutil.DataBuffer.prototype.getInt24 = function() {\n var rval = (\n this.data.getInt16(this.read) << 8 ^\n this.data.getInt8(this.read + 2));\n this.read += 3;\n return rval;\n};\n\n/**\n * Gets a uint32 from this buffer in big-endian order and advances the read\n * pointer by 4.\n *\n * @return the word.\n */\nutil.DataBuffer.prototype.getInt32 = function() {\n var rval = this.data.getInt32(this.read);\n this.read += 4;\n return rval;\n};\n\n/**\n * Gets a uint16 from this buffer in little-endian order and advances the read\n * pointer by 2.\n *\n * @return the uint16.\n */\nutil.DataBuffer.prototype.getInt16Le = function() {\n var rval = this.data.getInt16(this.read, true);\n this.read += 2;\n return rval;\n};\n\n/**\n * Gets a uint24 from this buffer in little-endian order and advances the read\n * pointer by 3.\n *\n * @return the uint24.\n */\nutil.DataBuffer.prototype.getInt24Le = function() {\n var rval = (\n this.data.getInt8(this.read) ^\n this.data.getInt16(this.read + 1, true) << 8);\n this.read += 3;\n return rval;\n};\n\n/**\n * Gets a uint32 from this buffer in little-endian order and advances the read\n * pointer by 4.\n *\n * @return the word.\n */\nutil.DataBuffer.prototype.getInt32Le = function() {\n var rval = this.data.getInt32(this.read, true);\n this.read += 4;\n return rval;\n};\n\n/**\n * Gets an n-bit integer from this buffer in big-endian order and advances the\n * read pointer by n/8.\n *\n * @param n the number of bits in the integer (8, 16, 24, or 32).\n *\n * @return the integer.\n */\nutil.DataBuffer.prototype.getInt = function(n) {\n _checkBitsParam(n);\n var rval = 0;\n do {\n // TODO: Use (rval * 0x100) if adding support for 33 to 53 bits.\n rval = (rval << 8) + this.data.getInt8(this.read++);\n n -= 8;\n } while(n > 0);\n return rval;\n};\n\n/**\n * Gets a signed n-bit integer from this buffer in big-endian order, using\n * two's complement, and advances the read pointer by n/8.\n *\n * @param n the number of bits in the integer (8, 16, 24, or 32).\n *\n * @return the integer.\n */\nutil.DataBuffer.prototype.getSignedInt = function(n) {\n // getInt checks n\n var x = this.getInt(n);\n var max = 2 << (n - 2);\n if(x >= max) {\n x -= max << 1;\n }\n return x;\n};\n\n/**\n * Reads bytes out as a binary encoded string and clears them from the\n * buffer.\n *\n * @param count the number of bytes to read, undefined or null for all.\n *\n * @return a binary encoded string of bytes.\n */\nutil.DataBuffer.prototype.getBytes = function(count) {\n // TODO: deprecate this method, it is poorly named and\n // this.toString('binary') replaces it\n // add a toTypedArray()/toArrayBuffer() function\n var rval;\n if(count) {\n // read count bytes\n count = Math.min(this.length(), count);\n rval = this.data.slice(this.read, this.read + count);\n this.read += count;\n } else if(count === 0) {\n rval = '';\n } else {\n // read all bytes, optimize to only copy when needed\n rval = (this.read === 0) ? this.data : this.data.slice(this.read);\n this.clear();\n }\n return rval;\n};\n\n/**\n * Gets a binary encoded string of the bytes from this buffer without\n * modifying the read pointer.\n *\n * @param count the number of bytes to get, omit to get all.\n *\n * @return a string full of binary encoded characters.\n */\nutil.DataBuffer.prototype.bytes = function(count) {\n // TODO: deprecate this method, it is poorly named, add \"getString()\"\n return (typeof(count) === 'undefined' ?\n this.data.slice(this.read) :\n this.data.slice(this.read, this.read + count));\n};\n\n/**\n * Gets a byte at the given index without modifying the read pointer.\n *\n * @param i the byte index.\n *\n * @return the byte.\n */\nutil.DataBuffer.prototype.at = function(i) {\n return this.data.getUint8(this.read + i);\n};\n\n/**\n * Puts a byte at the given index without modifying the read pointer.\n *\n * @param i the byte index.\n * @param b the byte to put.\n *\n * @return this buffer.\n */\nutil.DataBuffer.prototype.setAt = function(i, b) {\n this.data.setUint8(i, b);\n return this;\n};\n\n/**\n * Gets the last byte without modifying the read pointer.\n *\n * @return the last byte.\n */\nutil.DataBuffer.prototype.last = function() {\n return this.data.getUint8(this.write - 1);\n};\n\n/**\n * Creates a copy of this buffer.\n *\n * @return the copy.\n */\nutil.DataBuffer.prototype.copy = function() {\n return new util.DataBuffer(this);\n};\n\n/**\n * Compacts this buffer.\n *\n * @return this buffer.\n */\nutil.DataBuffer.prototype.compact = function() {\n if(this.read > 0) {\n var src = new Uint8Array(this.data.buffer, this.read);\n var dst = new Uint8Array(src.byteLength);\n dst.set(src);\n this.data = new DataView(dst);\n this.write -= this.read;\n this.read = 0;\n }\n return this;\n};\n\n/**\n * Clears this buffer.\n *\n * @return this buffer.\n */\nutil.DataBuffer.prototype.clear = function() {\n this.data = new DataView(new ArrayBuffer(0));\n this.read = this.write = 0;\n return this;\n};\n\n/**\n * Shortens this buffer by triming bytes off of the end of this buffer.\n *\n * @param count the number of bytes to trim off.\n *\n * @return this buffer.\n */\nutil.DataBuffer.prototype.truncate = function(count) {\n this.write = Math.max(0, this.length() - count);\n this.read = Math.min(this.read, this.write);\n return this;\n};\n\n/**\n * Converts this buffer to a hexadecimal string.\n *\n * @return a hexadecimal string.\n */\nutil.DataBuffer.prototype.toHex = function() {\n var rval = '';\n for(var i = this.read; i < this.data.byteLength; ++i) {\n var b = this.data.getUint8(i);\n if(b < 16) {\n rval += '0';\n }\n rval += b.toString(16);\n }\n return rval;\n};\n\n/**\n * Converts this buffer to a string, using the given encoding. If no\n * encoding is given, 'utf8' (UTF-8) is used.\n *\n * @param [encoding] the encoding to use: 'binary', 'utf8', 'utf16', 'hex',\n * 'base64' (default: 'utf8').\n *\n * @return a string representation of the bytes in this buffer.\n */\nutil.DataBuffer.prototype.toString = function(encoding) {\n var view = new Uint8Array(this.data, this.read, this.length());\n encoding = encoding || 'utf8';\n\n // encode to string\n if(encoding === 'binary' || encoding === 'raw') {\n return util.binary.raw.encode(view);\n }\n if(encoding === 'hex') {\n return util.binary.hex.encode(view);\n }\n if(encoding === 'base64') {\n return util.binary.base64.encode(view);\n }\n\n // decode to text\n if(encoding === 'utf8') {\n return util.text.utf8.decode(view);\n }\n if(encoding === 'utf16') {\n return util.text.utf16.decode(view);\n }\n\n throw new Error('Invalid encoding: ' + encoding);\n};\n\n/** End Buffer w/UInt8Array backing */\n\n/**\n * Creates a buffer that stores bytes. A value may be given to populate the\n * buffer with data. This value can either be string of encoded bytes or a\n * regular string of characters. When passing a string of binary encoded\n * bytes, the encoding `raw` should be given. This is also the default. When\n * passing a string of characters, the encoding `utf8` should be given.\n *\n * @param [input] a string with encoded bytes to store in the buffer.\n * @param [encoding] (default: 'raw', other: 'utf8').\n */\nutil.createBuffer = function(input, encoding) {\n // TODO: deprecate, use new ByteBuffer() instead\n encoding = encoding || 'raw';\n if(input !== undefined && encoding === 'utf8') {\n input = util.encodeUtf8(input);\n }\n return new util.ByteBuffer(input);\n};\n\n/**\n * Fills a string with a particular value. If you want the string to be a byte\n * string, pass in String.fromCharCode(theByte).\n *\n * @param c the character to fill the string with, use String.fromCharCode\n * to fill the string with a byte value.\n * @param n the number of characters of value c to fill with.\n *\n * @return the filled string.\n */\nutil.fillString = function(c, n) {\n var s = '';\n while(n > 0) {\n if(n & 1) {\n s += c;\n }\n n >>>= 1;\n if(n > 0) {\n c += c;\n }\n }\n return s;\n};\n\n/**\n * Performs a per byte XOR between two byte strings and returns the result as a\n * string of bytes.\n *\n * @param s1 first string of bytes.\n * @param s2 second string of bytes.\n * @param n the number of bytes to XOR.\n *\n * @return the XOR'd result.\n */\nutil.xorBytes = function(s1, s2, n) {\n var s3 = '';\n var b = '';\n var t = '';\n var i = 0;\n var c = 0;\n for(; n > 0; --n, ++i) {\n b = s1.charCodeAt(i) ^ s2.charCodeAt(i);\n if(c >= 10) {\n s3 += t;\n t = '';\n c = 0;\n }\n t += String.fromCharCode(b);\n ++c;\n }\n s3 += t;\n return s3;\n};\n\n/**\n * Converts a hex string into a 'binary' encoded string of bytes.\n *\n * @param hex the hexadecimal string to convert.\n *\n * @return the binary-encoded string of bytes.\n */\nutil.hexToBytes = function(hex) {\n // TODO: deprecate: \"Deprecated. Use util.binary.hex.decode instead.\"\n var rval = '';\n var i = 0;\n if(hex.length & 1 == 1) {\n // odd number of characters, convert first character alone\n i = 1;\n rval += String.fromCharCode(parseInt(hex[0], 16));\n }\n // convert 2 characters (1 byte) at a time\n for(; i < hex.length; i += 2) {\n rval += String.fromCharCode(parseInt(hex.substr(i, 2), 16));\n }\n return rval;\n};\n\n/**\n * Converts a 'binary' encoded string of bytes to hex.\n *\n * @param bytes the byte string to convert.\n *\n * @return the string of hexadecimal characters.\n */\nutil.bytesToHex = function(bytes) {\n // TODO: deprecate: \"Deprecated. Use util.binary.hex.encode instead.\"\n return util.createBuffer(bytes).toHex();\n};\n\n/**\n * Converts an 32-bit integer to 4-big-endian byte string.\n *\n * @param i the integer.\n *\n * @return the byte string.\n */\nutil.int32ToBytes = function(i) {\n return (\n String.fromCharCode(i >> 24 & 0xFF) +\n String.fromCharCode(i >> 16 & 0xFF) +\n String.fromCharCode(i >> 8 & 0xFF) +\n String.fromCharCode(i & 0xFF));\n};\n\n// base64 characters, reverse mapping\nvar _base64 =\n 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\nvar _base64Idx = [\n/*43 -43 = 0*/\n/*'+', 1, 2, 3,'/' */\n 62, -1, -1, -1, 63,\n\n/*'0','1','2','3','4','5','6','7','8','9' */\n 52, 53, 54, 55, 56, 57, 58, 59, 60, 61,\n\n/*15, 16, 17,'=', 19, 20, 21 */\n -1, -1, -1, 64, -1, -1, -1,\n\n/*65 - 43 = 22*/\n/*'A','B','C','D','E','F','G','H','I','J','K','L','M', */\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,\n\n/*'N','O','P','Q','R','S','T','U','V','W','X','Y','Z' */\n 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,\n\n/*91 - 43 = 48 */\n/*48, 49, 50, 51, 52, 53 */\n -1, -1, -1, -1, -1, -1,\n\n/*97 - 43 = 54*/\n/*'a','b','c','d','e','f','g','h','i','j','k','l','m' */\n 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,\n\n/*'n','o','p','q','r','s','t','u','v','w','x','y','z' */\n 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51\n];\n\n// base58 characters (Bitcoin alphabet)\nvar _base58 = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz';\n\n/**\n * Base64 encodes a 'binary' encoded string of bytes.\n *\n * @param input the binary encoded string of bytes to base64-encode.\n * @param maxline the maximum number of encoded characters per line to use,\n * defaults to none.\n *\n * @return the base64-encoded output.\n */\nutil.encode64 = function(input, maxline) {\n // TODO: deprecate: \"Deprecated. Use util.binary.base64.encode instead.\"\n var line = '';\n var output = '';\n var chr1, chr2, chr3;\n var i = 0;\n while(i < input.length) {\n chr1 = input.charCodeAt(i++);\n chr2 = input.charCodeAt(i++);\n chr3 = input.charCodeAt(i++);\n\n // encode 4 character group\n line += _base64.charAt(chr1 >> 2);\n line += _base64.charAt(((chr1 & 3) << 4) | (chr2 >> 4));\n if(isNaN(chr2)) {\n line += '==';\n } else {\n line += _base64.charAt(((chr2 & 15) << 2) | (chr3 >> 6));\n line += isNaN(chr3) ? '=' : _base64.charAt(chr3 & 63);\n }\n\n if(maxline && line.length > maxline) {\n output += line.substr(0, maxline) + '\\r\\n';\n line = line.substr(maxline);\n }\n }\n output += line;\n return output;\n};\n\n/**\n * Base64 decodes a string into a 'binary' encoded string of bytes.\n *\n * @param input the base64-encoded input.\n *\n * @return the binary encoded string.\n */\nutil.decode64 = function(input) {\n // TODO: deprecate: \"Deprecated. Use util.binary.base64.decode instead.\"\n\n // remove all non-base64 characters\n input = input.replace(/[^A-Za-z0-9\\+\\/\\=]/g, '');\n\n var output = '';\n var enc1, enc2, enc3, enc4;\n var i = 0;\n\n while(i < input.length) {\n enc1 = _base64Idx[input.charCodeAt(i++) - 43];\n enc2 = _base64Idx[input.charCodeAt(i++) - 43];\n enc3 = _base64Idx[input.charCodeAt(i++) - 43];\n enc4 = _base64Idx[input.charCodeAt(i++) - 43];\n\n output += String.fromCharCode((enc1 << 2) | (enc2 >> 4));\n if(enc3 !== 64) {\n // decoded at least 2 bytes\n output += String.fromCharCode(((enc2 & 15) << 4) | (enc3 >> 2));\n if(enc4 !== 64) {\n // decoded 3 bytes\n output += String.fromCharCode(((enc3 & 3) << 6) | enc4);\n }\n }\n }\n\n return output;\n};\n\n/**\n * Encodes the given string of characters (a standard JavaScript\n * string) as a binary encoded string where the bytes represent\n * a UTF-8 encoded string of characters. Non-ASCII characters will be\n * encoded as multiple bytes according to UTF-8.\n *\n * @param str a standard string of characters to encode.\n *\n * @return the binary encoded string.\n */\nutil.encodeUtf8 = function(str) {\n return unescape(encodeURIComponent(str));\n};\n\n/**\n * Decodes a binary encoded string that contains bytes that\n * represent a UTF-8 encoded string of characters -- into a\n * string of characters (a standard JavaScript string).\n *\n * @param str the binary encoded string to decode.\n *\n * @return the resulting standard string of characters.\n */\nutil.decodeUtf8 = function(str) {\n return decodeURIComponent(escape(str));\n};\n\n// binary encoding/decoding tools\n// FIXME: Experimental. Do not use yet.\nutil.binary = {\n raw: {},\n hex: {},\n base64: {},\n base58: {},\n baseN : {\n encode: baseN.encode,\n decode: baseN.decode\n }\n};\n\n/**\n * Encodes a Uint8Array as a binary-encoded string. This encoding uses\n * a value between 0 and 255 for each character.\n *\n * @param bytes the Uint8Array to encode.\n *\n * @return the binary-encoded string.\n */\nutil.binary.raw.encode = function(bytes) {\n return String.fromCharCode.apply(null, bytes);\n};\n\n/**\n * Decodes a binary-encoded string to a Uint8Array. This encoding uses\n * a value between 0 and 255 for each character.\n *\n * @param str the binary-encoded string to decode.\n * @param [output] an optional Uint8Array to write the output to; if it\n * is too small, an exception will be thrown.\n * @param [offset] the start offset for writing to the output (default: 0).\n *\n * @return the Uint8Array or the number of bytes written if output was given.\n */\nutil.binary.raw.decode = function(str, output, offset) {\n var out = output;\n if(!out) {\n out = new Uint8Array(str.length);\n }\n offset = offset || 0;\n var j = offset;\n for(var i = 0; i < str.length; ++i) {\n out[j++] = str.charCodeAt(i);\n }\n return output ? (j - offset) : out;\n};\n\n/**\n * Encodes a 'binary' string, ArrayBuffer, DataView, TypedArray, or\n * ByteBuffer as a string of hexadecimal characters.\n *\n * @param bytes the bytes to convert.\n *\n * @return the string of hexadecimal characters.\n */\nutil.binary.hex.encode = util.bytesToHex;\n\n/**\n * Decodes a hex-encoded string to a Uint8Array.\n *\n * @param hex the hexadecimal string to convert.\n * @param [output] an optional Uint8Array to write the output to; if it\n * is too small, an exception will be thrown.\n * @param [offset] the start offset for writing to the output (default: 0).\n *\n * @return the Uint8Array or the number of bytes written if output was given.\n */\nutil.binary.hex.decode = function(hex, output, offset) {\n var out = output;\n if(!out) {\n out = new Uint8Array(Math.ceil(hex.length / 2));\n }\n offset = offset || 0;\n var i = 0, j = offset;\n if(hex.length & 1) {\n // odd number of characters, convert first character alone\n i = 1;\n out[j++] = parseInt(hex[0], 16);\n }\n // convert 2 characters (1 byte) at a time\n for(; i < hex.length; i += 2) {\n out[j++] = parseInt(hex.substr(i, 2), 16);\n }\n return output ? (j - offset) : out;\n};\n\n/**\n * Base64-encodes a Uint8Array.\n *\n * @param input the Uint8Array to encode.\n * @param maxline the maximum number of encoded characters per line to use,\n * defaults to none.\n *\n * @return the base64-encoded output string.\n */\nutil.binary.base64.encode = function(input, maxline) {\n var line = '';\n var output = '';\n var chr1, chr2, chr3;\n var i = 0;\n while(i < input.byteLength) {\n chr1 = input[i++];\n chr2 = input[i++];\n chr3 = input[i++];\n\n // encode 4 character group\n line += _base64.charAt(chr1 >> 2);\n line += _base64.charAt(((chr1 & 3) << 4) | (chr2 >> 4));\n if(isNaN(chr2)) {\n line += '==';\n } else {\n line += _base64.charAt(((chr2 & 15) << 2) | (chr3 >> 6));\n line += isNaN(chr3) ? '=' : _base64.charAt(chr3 & 63);\n }\n\n if(maxline && line.length > maxline) {\n output += line.substr(0, maxline) + '\\r\\n';\n line = line.substr(maxline);\n }\n }\n output += line;\n return output;\n};\n\n/**\n * Decodes a base64-encoded string to a Uint8Array.\n *\n * @param input the base64-encoded input string.\n * @param [output] an optional Uint8Array to write the output to; if it\n * is too small, an exception will be thrown.\n * @param [offset] the start offset for writing to the output (default: 0).\n *\n * @return the Uint8Array or the number of bytes written if output was given.\n */\nutil.binary.base64.decode = function(input, output, offset) {\n var out = output;\n if(!out) {\n out = new Uint8Array(Math.ceil(input.length / 4) * 3);\n }\n\n // remove all non-base64 characters\n input = input.replace(/[^A-Za-z0-9\\+\\/\\=]/g, '');\n\n offset = offset || 0;\n var enc1, enc2, enc3, enc4;\n var i = 0, j = offset;\n\n while(i < input.length) {\n enc1 = _base64Idx[input.charCodeAt(i++) - 43];\n enc2 = _base64Idx[input.charCodeAt(i++) - 43];\n enc3 = _base64Idx[input.charCodeAt(i++) - 43];\n enc4 = _base64Idx[input.charCodeAt(i++) - 43];\n\n out[j++] = (enc1 << 2) | (enc2 >> 4);\n if(enc3 !== 64) {\n // decoded at least 2 bytes\n out[j++] = ((enc2 & 15) << 4) | (enc3 >> 2);\n if(enc4 !== 64) {\n // decoded 3 bytes\n out[j++] = ((enc3 & 3) << 6) | enc4;\n }\n }\n }\n\n // make sure result is the exact decoded length\n return output ? (j - offset) : out.subarray(0, j);\n};\n\n// add support for base58 encoding/decoding with Bitcoin alphabet\nutil.binary.base58.encode = function(input, maxline) {\n return util.binary.baseN.encode(input, _base58, maxline);\n};\nutil.binary.base58.decode = function(input, maxline) {\n return util.binary.baseN.decode(input, _base58, maxline);\n};\n\n// text encoding/decoding tools\n// FIXME: Experimental. Do not use yet.\nutil.text = {\n utf8: {},\n utf16: {}\n};\n\n/**\n * Encodes the given string as UTF-8 in a Uint8Array.\n *\n * @param str the string to encode.\n * @param [output] an optional Uint8Array to write the output to; if it\n * is too small, an exception will be thrown.\n * @param [offset] the start offset for writing to the output (default: 0).\n *\n * @return the Uint8Array or the number of bytes written if output was given.\n */\nutil.text.utf8.encode = function(str, output, offset) {\n str = util.encodeUtf8(str);\n var out = output;\n if(!out) {\n out = new Uint8Array(str.length);\n }\n offset = offset || 0;\n var j = offset;\n for(var i = 0; i < str.length; ++i) {\n out[j++] = str.charCodeAt(i);\n }\n return output ? (j - offset) : out;\n};\n\n/**\n * Decodes the UTF-8 contents from a Uint8Array.\n *\n * @param bytes the Uint8Array to decode.\n *\n * @return the resulting string.\n */\nutil.text.utf8.decode = function(bytes) {\n return util.decodeUtf8(String.fromCharCode.apply(null, bytes));\n};\n\n/**\n * Encodes the given string as UTF-16 in a Uint8Array.\n *\n * @param str the string to encode.\n * @param [output] an optional Uint8Array to write the output to; if it\n * is too small, an exception will be thrown.\n * @param [offset] the start offset for writing to the output (default: 0).\n *\n * @return the Uint8Array or the number of bytes written if output was given.\n */\nutil.text.utf16.encode = function(str, output, offset) {\n var out = output;\n if(!out) {\n out = new Uint8Array(str.length * 2);\n }\n var view = new Uint16Array(out.buffer);\n offset = offset || 0;\n var j = offset;\n var k = offset;\n for(var i = 0; i < str.length; ++i) {\n view[k++] = str.charCodeAt(i);\n j += 2;\n }\n return output ? (j - offset) : out;\n};\n\n/**\n * Decodes the UTF-16 contents from a Uint8Array.\n *\n * @param bytes the Uint8Array to decode.\n *\n * @return the resulting string.\n */\nutil.text.utf16.decode = function(bytes) {\n return String.fromCharCode.apply(null, new Uint16Array(bytes.buffer));\n};\n\n/**\n * Deflates the given data using a flash interface.\n *\n * @param api the flash interface.\n * @param bytes the data.\n * @param raw true to return only raw deflate data, false to include zlib\n * header and trailer.\n *\n * @return the deflated data as a string.\n */\nutil.deflate = function(api, bytes, raw) {\n bytes = util.decode64(api.deflate(util.encode64(bytes)).rval);\n\n // strip zlib header and trailer if necessary\n if(raw) {\n // zlib header is 2 bytes (CMF,FLG) where FLG indicates that\n // there is a 4-byte DICT (alder-32) block before the data if\n // its 5th bit is set\n var start = 2;\n var flg = bytes.charCodeAt(1);\n if(flg & 0x20) {\n start = 6;\n }\n // zlib trailer is 4 bytes of adler-32\n bytes = bytes.substring(start, bytes.length - 4);\n }\n\n return bytes;\n};\n\n/**\n * Inflates the given data using a flash interface.\n *\n * @param api the flash interface.\n * @param bytes the data.\n * @param raw true if the incoming data has no zlib header or trailer and is\n * raw DEFLATE data.\n *\n * @return the inflated data as a string, null on error.\n */\nutil.inflate = function(api, bytes, raw) {\n // TODO: add zlib header and trailer if necessary/possible\n var rval = api.inflate(util.encode64(bytes)).rval;\n return (rval === null) ? null : util.decode64(rval);\n};\n\n/**\n * Sets a storage object.\n *\n * @param api the storage interface.\n * @param id the storage ID to use.\n * @param obj the storage object, null to remove.\n */\nvar _setStorageObject = function(api, id, obj) {\n if(!api) {\n throw new Error('WebStorage not available.');\n }\n\n var rval;\n if(obj === null) {\n rval = api.removeItem(id);\n } else {\n // json-encode and base64-encode object\n obj = util.encode64(JSON.stringify(obj));\n rval = api.setItem(id, obj);\n }\n\n // handle potential flash error\n if(typeof(rval) !== 'undefined' && rval.rval !== true) {\n var error = new Error(rval.error.message);\n error.id = rval.error.id;\n error.name = rval.error.name;\n throw error;\n }\n};\n\n/**\n * Gets a storage object.\n *\n * @param api the storage interface.\n * @param id the storage ID to use.\n *\n * @return the storage object entry or null if none exists.\n */\nvar _getStorageObject = function(api, id) {\n if(!api) {\n throw new Error('WebStorage not available.');\n }\n\n // get the existing entry\n var rval = api.getItem(id);\n\n /* Note: We check api.init because we can't do (api == localStorage)\n on IE because of \"Class doesn't support Automation\" exception. Only\n the flash api has an init method so this works too, but we need a\n better solution in the future. */\n\n // flash returns item wrapped in an object, handle special case\n if(api.init) {\n if(rval.rval === null) {\n if(rval.error) {\n var error = new Error(rval.error.message);\n error.id = rval.error.id;\n error.name = rval.error.name;\n throw error;\n }\n // no error, but also no item\n rval = null;\n } else {\n rval = rval.rval;\n }\n }\n\n // handle decoding\n if(rval !== null) {\n // base64-decode and json-decode data\n rval = JSON.parse(util.decode64(rval));\n }\n\n return rval;\n};\n\n/**\n * Stores an item in local storage.\n *\n * @param api the storage interface.\n * @param id the storage ID to use.\n * @param key the key for the item.\n * @param data the data for the item (any javascript object/primitive).\n */\nvar _setItem = function(api, id, key, data) {\n // get storage object\n var obj = _getStorageObject(api, id);\n if(obj === null) {\n // create a new storage object\n obj = {};\n }\n // update key\n obj[key] = data;\n\n // set storage object\n _setStorageObject(api, id, obj);\n};\n\n/**\n * Gets an item from local storage.\n *\n * @param api the storage interface.\n * @param id the storage ID to use.\n * @param key the key for the item.\n *\n * @return the item.\n */\nvar _getItem = function(api, id, key) {\n // get storage object\n var rval = _getStorageObject(api, id);\n if(rval !== null) {\n // return data at key\n rval = (key in rval) ? rval[key] : null;\n }\n\n return rval;\n};\n\n/**\n * Removes an item from local storage.\n *\n * @param api the storage interface.\n * @param id the storage ID to use.\n * @param key the key for the item.\n */\nvar _removeItem = function(api, id, key) {\n // get storage object\n var obj = _getStorageObject(api, id);\n if(obj !== null && key in obj) {\n // remove key\n delete obj[key];\n\n // see if entry has no keys remaining\n var empty = true;\n for(var prop in obj) {\n empty = false;\n break;\n }\n if(empty) {\n // remove entry entirely if no keys are left\n obj = null;\n }\n\n // set storage object\n _setStorageObject(api, id, obj);\n }\n};\n\n/**\n * Clears the local disk storage identified by the given ID.\n *\n * @param api the storage interface.\n * @param id the storage ID to use.\n */\nvar _clearItems = function(api, id) {\n _setStorageObject(api, id, null);\n};\n\n/**\n * Calls a storage function.\n *\n * @param func the function to call.\n * @param args the arguments for the function.\n * @param location the location argument.\n *\n * @return the return value from the function.\n */\nvar _callStorageFunction = function(func, args, location) {\n var rval = null;\n\n // default storage types\n if(typeof(location) === 'undefined') {\n location = ['web', 'flash'];\n }\n\n // apply storage types in order of preference\n var type;\n var done = false;\n var exception = null;\n for(var idx in location) {\n type = location[idx];\n try {\n if(type === 'flash' || type === 'both') {\n if(args[0] === null) {\n throw new Error('Flash local storage not available.');\n }\n rval = func.apply(this, args);\n done = (type === 'flash');\n }\n if(type === 'web' || type === 'both') {\n args[0] = localStorage;\n rval = func.apply(this, args);\n done = true;\n }\n } catch(ex) {\n exception = ex;\n }\n if(done) {\n break;\n }\n }\n\n if(!done) {\n throw exception;\n }\n\n return rval;\n};\n\n/**\n * Stores an item on local disk.\n *\n * The available types of local storage include 'flash', 'web', and 'both'.\n *\n * The type 'flash' refers to flash local storage (SharedObject). In order\n * to use flash local storage, the 'api' parameter must be valid. The type\n * 'web' refers to WebStorage, if supported by the browser. The type 'both'\n * refers to storing using both 'flash' and 'web', not just one or the\n * other.\n *\n * The location array should list the storage types to use in order of\n * preference:\n *\n * ['flash']: flash only storage\n * ['web']: web only storage\n * ['both']: try to store in both\n * ['flash','web']: store in flash first, but if not available, 'web'\n * ['web','flash']: store in web first, but if not available, 'flash'\n *\n * The location array defaults to: ['web', 'flash']\n *\n * @param api the flash interface, null to use only WebStorage.\n * @param id the storage ID to use.\n * @param key the key for the item.\n * @param data the data for the item (any javascript object/primitive).\n * @param location an array with the preferred types of storage to use.\n */\nutil.setItem = function(api, id, key, data, location) {\n _callStorageFunction(_setItem, arguments, location);\n};\n\n/**\n * Gets an item on local disk.\n *\n * Set setItem() for details on storage types.\n *\n * @param api the flash interface, null to use only WebStorage.\n * @param id the storage ID to use.\n * @param key the key for the item.\n * @param location an array with the preferred types of storage to use.\n *\n * @return the item.\n */\nutil.getItem = function(api, id, key, location) {\n return _callStorageFunction(_getItem, arguments, location);\n};\n\n/**\n * Removes an item on local disk.\n *\n * Set setItem() for details on storage types.\n *\n * @param api the flash interface.\n * @param id the storage ID to use.\n * @param key the key for the item.\n * @param location an array with the preferred types of storage to use.\n */\nutil.removeItem = function(api, id, key, location) {\n _callStorageFunction(_removeItem, arguments, location);\n};\n\n/**\n * Clears the local disk storage identified by the given ID.\n *\n * Set setItem() for details on storage types.\n *\n * @param api the flash interface if flash is available.\n * @param id the storage ID to use.\n * @param location an array with the preferred types of storage to use.\n */\nutil.clearItems = function(api, id, location) {\n _callStorageFunction(_clearItems, arguments, location);\n};\n\n/**\n * Check if an object is empty.\n *\n * Taken from:\n * http://stackoverflow.com/questions/679915/how-do-i-test-for-an-empty-javascript-object-from-json/679937#679937\n *\n * @param object the object to check.\n */\nutil.isEmpty = function(obj) {\n for(var prop in obj) {\n if(obj.hasOwnProperty(prop)) {\n return false;\n }\n }\n return true;\n};\n\n/**\n * Format with simple printf-style interpolation.\n *\n * %%: literal '%'\n * %s,%o: convert next argument into a string.\n *\n * @param format the string to format.\n * @param ... arguments to interpolate into the format string.\n */\nutil.format = function(format) {\n var re = /%./g;\n // current match\n var match;\n // current part\n var part;\n // current arg index\n var argi = 0;\n // collected parts to recombine later\n var parts = [];\n // last index found\n var last = 0;\n // loop while matches remain\n while((match = re.exec(format))) {\n part = format.substring(last, re.lastIndex - 2);\n // don't add empty strings (ie, parts between %s%s)\n if(part.length > 0) {\n parts.push(part);\n }\n last = re.lastIndex;\n // switch on % code\n var code = match[0][1];\n switch(code) {\n case 's':\n case 'o':\n // check if enough arguments were given\n if(argi < arguments.length) {\n parts.push(arguments[argi++ + 1]);\n } else {\n parts.push('');\n }\n break;\n // FIXME: do proper formating for numbers, etc\n //case 'f':\n //case 'd':\n case '%':\n parts.push('%');\n break;\n default:\n parts.push('<%' + code + '?>');\n }\n }\n // add trailing part of format string\n parts.push(format.substring(last));\n return parts.join('');\n};\n\n/**\n * Formats a number.\n *\n * http://snipplr.com/view/5945/javascript-numberformat--ported-from-php/\n */\nutil.formatNumber = function(number, decimals, dec_point, thousands_sep) {\n // http://kevin.vanzonneveld.net\n // + original by: Jonas Raoni Soares Silva (http://www.jsfromhell.com)\n // + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)\n // + bugfix by: Michael White (http://crestidg.com)\n // + bugfix by: Benjamin Lupton\n // + bugfix by: Allan Jensen (http://www.winternet.no)\n // + revised by: Jonas Raoni Soares Silva (http://www.jsfromhell.com)\n // * example 1: number_format(1234.5678, 2, '.', '');\n // * returns 1: 1234.57\n\n var n = number, c = isNaN(decimals = Math.abs(decimals)) ? 2 : decimals;\n var d = dec_point === undefined ? ',' : dec_point;\n var t = thousands_sep === undefined ?\n '.' : thousands_sep, s = n < 0 ? '-' : '';\n var i = parseInt((n = Math.abs(+n || 0).toFixed(c)), 10) + '';\n var j = (i.length > 3) ? i.length % 3 : 0;\n return s + (j ? i.substr(0, j) + t : '') +\n i.substr(j).replace(/(\\d{3})(?=\\d)/g, '$1' + t) +\n (c ? d + Math.abs(n - i).toFixed(c).slice(2) : '');\n};\n\n/**\n * Formats a byte size.\n *\n * http://snipplr.com/view/5949/format-humanize-file-byte-size-presentation-in-javascript/\n */\nutil.formatSize = function(size) {\n if(size >= 1073741824) {\n size = util.formatNumber(size / 1073741824, 2, '.', '') + ' GiB';\n } else if(size >= 1048576) {\n size = util.formatNumber(size / 1048576, 2, '.', '') + ' MiB';\n } else if(size >= 1024) {\n size = util.formatNumber(size / 1024, 0) + ' KiB';\n } else {\n size = util.formatNumber(size, 0) + ' bytes';\n }\n return size;\n};\n\n/**\n * Converts an IPv4 or IPv6 string representation into bytes (in network order).\n *\n * @param ip the IPv4 or IPv6 address to convert.\n *\n * @return the 4-byte IPv6 or 16-byte IPv6 address or null if the address can't\n * be parsed.\n */\nutil.bytesFromIP = function(ip) {\n if(ip.indexOf('.') !== -1) {\n return util.bytesFromIPv4(ip);\n }\n if(ip.indexOf(':') !== -1) {\n return util.bytesFromIPv6(ip);\n }\n return null;\n};\n\n/**\n * Converts an IPv4 string representation into bytes (in network order).\n *\n * @param ip the IPv4 address to convert.\n *\n * @return the 4-byte address or null if the address can't be parsed.\n */\nutil.bytesFromIPv4 = function(ip) {\n ip = ip.split('.');\n if(ip.length !== 4) {\n return null;\n }\n var b = util.createBuffer();\n for(var i = 0; i < ip.length; ++i) {\n var num = parseInt(ip[i], 10);\n if(isNaN(num)) {\n return null;\n }\n b.putByte(num);\n }\n return b.getBytes();\n};\n\n/**\n * Converts an IPv6 string representation into bytes (in network order).\n *\n * @param ip the IPv6 address to convert.\n *\n * @return the 16-byte address or null if the address can't be parsed.\n */\nutil.bytesFromIPv6 = function(ip) {\n var blanks = 0;\n ip = ip.split(':').filter(function(e) {\n if(e.length === 0) ++blanks;\n return true;\n });\n var zeros = (8 - ip.length + blanks) * 2;\n var b = util.createBuffer();\n for(var i = 0; i < 8; ++i) {\n if(!ip[i] || ip[i].length === 0) {\n b.fillWithByte(0, zeros);\n zeros = 0;\n continue;\n }\n var bytes = util.hexToBytes(ip[i]);\n if(bytes.length < 2) {\n b.putByte(0);\n }\n b.putBytes(bytes);\n }\n return b.getBytes();\n};\n\n/**\n * Converts 4-bytes into an IPv4 string representation or 16-bytes into\n * an IPv6 string representation. The bytes must be in network order.\n *\n * @param bytes the bytes to convert.\n *\n * @return the IPv4 or IPv6 string representation if 4 or 16 bytes,\n * respectively, are given, otherwise null.\n */\nutil.bytesToIP = function(bytes) {\n if(bytes.length === 4) {\n return util.bytesToIPv4(bytes);\n }\n if(bytes.length === 16) {\n return util.bytesToIPv6(bytes);\n }\n return null;\n};\n\n/**\n * Converts 4-bytes into an IPv4 string representation. The bytes must be\n * in network order.\n *\n * @param bytes the bytes to convert.\n *\n * @return the IPv4 string representation or null for an invalid # of bytes.\n */\nutil.bytesToIPv4 = function(bytes) {\n if(bytes.length !== 4) {\n return null;\n }\n var ip = [];\n for(var i = 0; i < bytes.length; ++i) {\n ip.push(bytes.charCodeAt(i));\n }\n return ip.join('.');\n};\n\n/**\n * Converts 16-bytes into an IPv16 string representation. The bytes must be\n * in network order.\n *\n * @param bytes the bytes to convert.\n *\n * @return the IPv16 string representation or null for an invalid # of bytes.\n */\nutil.bytesToIPv6 = function(bytes) {\n if(bytes.length !== 16) {\n return null;\n }\n var ip = [];\n var zeroGroups = [];\n var zeroMaxGroup = 0;\n for(var i = 0; i < bytes.length; i += 2) {\n var hex = util.bytesToHex(bytes[i] + bytes[i + 1]);\n // canonicalize zero representation\n while(hex[0] === '0' && hex !== '0') {\n hex = hex.substr(1);\n }\n if(hex === '0') {\n var last = zeroGroups[zeroGroups.length - 1];\n var idx = ip.length;\n if(!last || idx !== last.end + 1) {\n zeroGroups.push({start: idx, end: idx});\n } else {\n last.end = idx;\n if((last.end - last.start) >\n (zeroGroups[zeroMaxGroup].end - zeroGroups[zeroMaxGroup].start)) {\n zeroMaxGroup = zeroGroups.length - 1;\n }\n }\n }\n ip.push(hex);\n }\n if(zeroGroups.length > 0) {\n var group = zeroGroups[zeroMaxGroup];\n // only shorten group of length > 0\n if(group.end - group.start > 0) {\n ip.splice(group.start, group.end - group.start + 1, '');\n if(group.start === 0) {\n ip.unshift('');\n }\n if(group.end === 7) {\n ip.push('');\n }\n }\n }\n return ip.join(':');\n};\n\n/**\n * Estimates the number of processes that can be run concurrently. If\n * creating Web Workers, keep in mind that the main JavaScript process needs\n * its own core.\n *\n * @param options the options to use:\n * update true to force an update (not use the cached value).\n * @param callback(err, max) called once the operation completes.\n */\nutil.estimateCores = function(options, callback) {\n if(typeof options === 'function') {\n callback = options;\n options = {};\n }\n options = options || {};\n if('cores' in util && !options.update) {\n return callback(null, util.cores);\n }\n if(typeof navigator !== 'undefined' &&\n 'hardwareConcurrency' in navigator &&\n navigator.hardwareConcurrency > 0) {\n util.cores = navigator.hardwareConcurrency;\n return callback(null, util.cores);\n }\n if(typeof Worker === 'undefined') {\n // workers not available\n util.cores = 1;\n return callback(null, util.cores);\n }\n if(typeof Blob === 'undefined') {\n // can't estimate, default to 2\n util.cores = 2;\n return callback(null, util.cores);\n }\n\n // create worker concurrency estimation code as blob\n var blobUrl = URL.createObjectURL(new Blob(['(',\n function() {\n self.addEventListener('message', function(e) {\n // run worker for 4 ms\n var st = Date.now();\n var et = st + 4;\n while(Date.now() < et);\n self.postMessage({st: st, et: et});\n });\n }.toString(),\n ')()'], {type: 'application/javascript'}));\n\n // take 5 samples using 16 workers\n sample([], 5, 16);\n\n function sample(max, samples, numWorkers) {\n if(samples === 0) {\n // get overlap average\n var avg = Math.floor(max.reduce(function(avg, x) {\n return avg + x;\n }, 0) / max.length);\n util.cores = Math.max(1, avg);\n URL.revokeObjectURL(blobUrl);\n return callback(null, util.cores);\n }\n map(numWorkers, function(err, results) {\n max.push(reduce(numWorkers, results));\n sample(max, samples - 1, numWorkers);\n });\n }\n\n function map(numWorkers, callback) {\n var workers = [];\n var results = [];\n for(var i = 0; i < numWorkers; ++i) {\n var worker = new Worker(blobUrl);\n worker.addEventListener('message', function(e) {\n results.push(e.data);\n if(results.length === numWorkers) {\n for(var i = 0; i < numWorkers; ++i) {\n workers[i].terminate();\n }\n callback(null, results);\n }\n });\n workers.push(worker);\n }\n for(var i = 0; i < numWorkers; ++i) {\n workers[i].postMessage(i);\n }\n }\n\n function reduce(numWorkers, results) {\n // find overlapping time windows\n var overlaps = [];\n for(var n = 0; n < numWorkers; ++n) {\n var r1 = results[n];\n var overlap = overlaps[n] = [];\n for(var i = 0; i < numWorkers; ++i) {\n if(n === i) {\n continue;\n }\n var r2 = results[i];\n if((r1.st > r2.st && r1.st < r2.et) ||\n (r2.st > r1.st && r2.st < r1.et)) {\n overlap.push(i);\n }\n }\n }\n // get maximum overlaps ... don't include overlapping worker itself\n // as the main JS process was also being scheduled during the work and\n // would have to be subtracted from the estimate anyway\n return overlaps.reduce(function(max, overlap) {\n return Math.max(max, overlap.length);\n }, 0);\n }\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar stringifyPrimitive = function(v) {\n switch (typeof v) {\n case 'string':\n return v;\n\n case 'boolean':\n return v ? 'true' : 'false';\n\n case 'number':\n return isFinite(v) ? v : '';\n\n default:\n return '';\n }\n};\n\nmodule.exports = function(obj, sep, eq, name) {\n sep = sep || '&';\n eq = eq || '=';\n if (obj === null) {\n obj = undefined;\n }\n\n if (typeof obj === 'object') {\n return Object.keys(obj).map(function(k) {\n var ks = encodeURIComponent(stringifyPrimitive(k)) + eq;\n if (Array.isArray(obj[k])) {\n return obj[k].map(function(v) {\n return ks + encodeURIComponent(stringifyPrimitive(v));\n }).join(sep);\n } else {\n return ks + encodeURIComponent(stringifyPrimitive(obj[k]));\n }\n }).join(sep);\n\n }\n\n if (!name) return '';\n return encodeURIComponent(stringifyPrimitive(name)) + eq +\n encodeURIComponent(stringifyPrimitive(obj));\n};\n","/**\n * Javascript implementation of PKCS#1 PSS signature padding.\n *\n * @author Stefan Siegl\n *\n * Copyright (c) 2012 Stefan Siegl \n */\nvar forge = require('./forge');\nrequire('./random');\nrequire('./util');\n\n// shortcut for PSS API\nvar pss = module.exports = forge.pss = forge.pss || {};\n\n/**\n * Creates a PSS signature scheme object.\n *\n * There are several ways to provide a salt for encoding:\n *\n * 1. Specify the saltLength only and the built-in PRNG will generate it.\n * 2. Specify the saltLength and a custom PRNG with 'getBytesSync' defined that\n * will be used.\n * 3. Specify the salt itself as a forge.util.ByteBuffer.\n *\n * @param options the options to use:\n * md the message digest object to use, a forge md instance.\n * mgf the mask generation function to use, a forge mgf instance.\n * [saltLength] the length of the salt in octets.\n * [prng] the pseudo-random number generator to use to produce a salt.\n * [salt] the salt to use when encoding.\n *\n * @return a signature scheme object.\n */\npss.create = function(options) {\n // backwards compatibility w/legacy args: hash, mgf, sLen\n if(arguments.length === 3) {\n options = {\n md: arguments[0],\n mgf: arguments[1],\n saltLength: arguments[2]\n };\n }\n\n var hash = options.md;\n var mgf = options.mgf;\n var hLen = hash.digestLength;\n\n var salt_ = options.salt || null;\n if(typeof salt_ === 'string') {\n // assume binary-encoded string\n salt_ = forge.util.createBuffer(salt_);\n }\n\n var sLen;\n if('saltLength' in options) {\n sLen = options.saltLength;\n } else if(salt_ !== null) {\n sLen = salt_.length();\n } else {\n throw new Error('Salt length not specified or specific salt not given.');\n }\n\n if(salt_ !== null && salt_.length() !== sLen) {\n throw new Error('Given salt length does not match length of given salt.');\n }\n\n var prng = options.prng || forge.random;\n\n var pssobj = {};\n\n /**\n * Encodes a PSS signature.\n *\n * This function implements EMSA-PSS-ENCODE as per RFC 3447, section 9.1.1.\n *\n * @param md the message digest object with the hash to sign.\n * @param modsBits the length of the RSA modulus in bits.\n *\n * @return the encoded message as a binary-encoded string of length\n * ceil((modBits - 1) / 8).\n */\n pssobj.encode = function(md, modBits) {\n var i;\n var emBits = modBits - 1;\n var emLen = Math.ceil(emBits / 8);\n\n /* 2. Let mHash = Hash(M), an octet string of length hLen. */\n var mHash = md.digest().getBytes();\n\n /* 3. If emLen < hLen + sLen + 2, output \"encoding error\" and stop. */\n if(emLen < hLen + sLen + 2) {\n throw new Error('Message is too long to encrypt.');\n }\n\n /* 4. Generate a random octet string salt of length sLen; if sLen = 0,\n * then salt is the empty string. */\n var salt;\n if(salt_ === null) {\n salt = prng.getBytesSync(sLen);\n } else {\n salt = salt_.bytes();\n }\n\n /* 5. Let M' = (0x)00 00 00 00 00 00 00 00 || mHash || salt; */\n var m_ = new forge.util.ByteBuffer();\n m_.fillWithByte(0, 8);\n m_.putBytes(mHash);\n m_.putBytes(salt);\n\n /* 6. Let H = Hash(M'), an octet string of length hLen. */\n hash.start();\n hash.update(m_.getBytes());\n var h = hash.digest().getBytes();\n\n /* 7. Generate an octet string PS consisting of emLen - sLen - hLen - 2\n * zero octets. The length of PS may be 0. */\n var ps = new forge.util.ByteBuffer();\n ps.fillWithByte(0, emLen - sLen - hLen - 2);\n\n /* 8. Let DB = PS || 0x01 || salt; DB is an octet string of length\n * emLen - hLen - 1. */\n ps.putByte(0x01);\n ps.putBytes(salt);\n var db = ps.getBytes();\n\n /* 9. Let dbMask = MGF(H, emLen - hLen - 1). */\n var maskLen = emLen - hLen - 1;\n var dbMask = mgf.generate(h, maskLen);\n\n /* 10. Let maskedDB = DB \\xor dbMask. */\n var maskedDB = '';\n for(i = 0; i < maskLen; i++) {\n maskedDB += String.fromCharCode(db.charCodeAt(i) ^ dbMask.charCodeAt(i));\n }\n\n /* 11. Set the leftmost 8emLen - emBits bits of the leftmost octet in\n * maskedDB to zero. */\n var mask = (0xFF00 >> (8 * emLen - emBits)) & 0xFF;\n maskedDB = String.fromCharCode(maskedDB.charCodeAt(0) & ~mask) +\n maskedDB.substr(1);\n\n /* 12. Let EM = maskedDB || H || 0xbc.\n * 13. Output EM. */\n return maskedDB + h + String.fromCharCode(0xbc);\n };\n\n /**\n * Verifies a PSS signature.\n *\n * This function implements EMSA-PSS-VERIFY as per RFC 3447, section 9.1.2.\n *\n * @param mHash the message digest hash, as a binary-encoded string, to\n * compare against the signature.\n * @param em the encoded message, as a binary-encoded string\n * (RSA decryption result).\n * @param modsBits the length of the RSA modulus in bits.\n *\n * @return true if the signature was verified, false if not.\n */\n pssobj.verify = function(mHash, em, modBits) {\n var i;\n var emBits = modBits - 1;\n var emLen = Math.ceil(emBits / 8);\n\n /* c. Convert the message representative m to an encoded message EM\n * of length emLen = ceil((modBits - 1) / 8) octets, where modBits\n * is the length in bits of the RSA modulus n */\n em = em.substr(-emLen);\n\n /* 3. If emLen < hLen + sLen + 2, output \"inconsistent\" and stop. */\n if(emLen < hLen + sLen + 2) {\n throw new Error('Inconsistent parameters to PSS signature verification.');\n }\n\n /* 4. If the rightmost octet of EM does not have hexadecimal value\n * 0xbc, output \"inconsistent\" and stop. */\n if(em.charCodeAt(emLen - 1) !== 0xbc) {\n throw new Error('Encoded message does not end in 0xBC.');\n }\n\n /* 5. Let maskedDB be the leftmost emLen - hLen - 1 octets of EM, and\n * let H be the next hLen octets. */\n var maskLen = emLen - hLen - 1;\n var maskedDB = em.substr(0, maskLen);\n var h = em.substr(maskLen, hLen);\n\n /* 6. If the leftmost 8emLen - emBits bits of the leftmost octet in\n * maskedDB are not all equal to zero, output \"inconsistent\" and stop. */\n var mask = (0xFF00 >> (8 * emLen - emBits)) & 0xFF;\n if((maskedDB.charCodeAt(0) & mask) !== 0) {\n throw new Error('Bits beyond keysize not zero as expected.');\n }\n\n /* 7. Let dbMask = MGF(H, emLen - hLen - 1). */\n var dbMask = mgf.generate(h, maskLen);\n\n /* 8. Let DB = maskedDB \\xor dbMask. */\n var db = '';\n for(i = 0; i < maskLen; i++) {\n db += String.fromCharCode(maskedDB.charCodeAt(i) ^ dbMask.charCodeAt(i));\n }\n\n /* 9. Set the leftmost 8emLen - emBits bits of the leftmost octet\n * in DB to zero. */\n db = String.fromCharCode(db.charCodeAt(0) & ~mask) + db.substr(1);\n\n /* 10. If the emLen - hLen - sLen - 2 leftmost octets of DB are not zero\n * or if the octet at position emLen - hLen - sLen - 1 (the leftmost\n * position is \"position 1\") does not have hexadecimal value 0x01,\n * output \"inconsistent\" and stop. */\n var checkLen = emLen - hLen - sLen - 2;\n for(i = 0; i < checkLen; i++) {\n if(db.charCodeAt(i) !== 0x00) {\n throw new Error('Leftmost octets not zero as expected');\n }\n }\n\n if(db.charCodeAt(checkLen) !== 0x01) {\n throw new Error('Inconsistent PSS signature, 0x01 marker not found');\n }\n\n /* 11. Let salt be the last sLen octets of DB. */\n var salt = db.substr(-sLen);\n\n /* 12. Let M' = (0x)00 00 00 00 00 00 00 00 || mHash || salt */\n var m_ = new forge.util.ByteBuffer();\n m_.fillWithByte(0, 8);\n m_.putBytes(mHash);\n m_.putBytes(salt);\n\n /* 13. Let H' = Hash(M'), an octet string of length hLen. */\n hash.start();\n hash.update(m_.getBytes());\n var h_ = hash.digest().getBytes();\n\n /* 14. If H = H', output \"consistent.\" Otherwise, output \"inconsistent.\" */\n return h === h_;\n };\n\n return pssobj;\n};\n","/** @license React v17.0.2\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var l=require(\"object-assign\"),n=60103,p=60106;exports.Fragment=60107;exports.StrictMode=60108;exports.Profiler=60114;var q=60109,r=60110,t=60112;exports.Suspense=60113;var u=60115,v=60116;\nif(\"function\"===typeof Symbol&&Symbol.for){var w=Symbol.for;n=w(\"react.element\");p=w(\"react.portal\");exports.Fragment=w(\"react.fragment\");exports.StrictMode=w(\"react.strict_mode\");exports.Profiler=w(\"react.profiler\");q=w(\"react.provider\");r=w(\"react.context\");t=w(\"react.forward_ref\");exports.Suspense=w(\"react.suspense\");u=w(\"react.memo\");v=w(\"react.lazy\")}var x=\"function\"===typeof Symbol&&Symbol.iterator;\nfunction y(a){if(null===a||\"object\"!==typeof a)return null;a=x&&a[x]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}function z(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;c;\n}\n\n/**\n * Type guard for `Destroyable`.\n *\n * @param x A value that might implement the `Destroyable` interface.\n * @returns Whether the value implements `Destroyable`.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function isDestroyable(x: any): x is Destroyable {\n return x && 'destroy' in x;\n}\n\nexport default Destroyable;\n","'use strict';\nmodule.exports = {};\n","'use strict';\n// TODO: Remove this module from `core-js@4` since it's split to modules listed below\nrequire('../modules/web.clear-immediate');\nrequire('../modules/web.set-immediate');\n","'use strict';\nvar shared = require('../internals/shared');\nvar uid = require('../internals/uid');\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n return keys[key] || (keys[key] = uid(key));\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport TimeoutScheduler from './TimeoutScheduler';\n\n/**\n * [[AsyncScheduler]] enqueues the callback for the soonest available run of the\n * event loop.\n */\nexport default class AsyncScheduler extends TimeoutScheduler {\n constructor() {\n super(0);\n }\n\n /**\n * Execute the provided callback on the next tick of the event loop.\n * This is semantically equivalent to\n *\n * ```typescript\n * new AsyncScheduler(callback).start();\n * ```\n *\n * but with less overhead.\n *\n * @param callback the code to run.\n */\n static nextTick(callback: () => void): void {\n setTimeout(callback, 0);\n }\n}\n","'use strict';\nvar check = function (it) {\n return it && it.Math === Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n // eslint-disable-next-line es/no-global-this -- safe\n check(typeof globalThis == 'object' && globalThis) ||\n check(typeof window == 'object' && window) ||\n // eslint-disable-next-line no-restricted-globals -- safe\n check(typeof self == 'object' && self) ||\n check(typeof global == 'object' && global) ||\n check(typeof this == 'object' && this) ||\n // eslint-disable-next-line no-new-func -- fallback\n (function () { return this; })() || Function('return this')();\n","var AWS = require('../core');\nvar inherit = AWS.util.inherit;\n\n/**\n * @api private\n */\nAWS.Signers.V2 = inherit(AWS.Signers.RequestSigner, {\n addAuthorization: function addAuthorization(credentials, date) {\n\n if (!date) date = AWS.util.date.getDate();\n\n var r = this.request;\n\n r.params.Timestamp = AWS.util.date.iso8601(date);\n r.params.SignatureVersion = '2';\n r.params.SignatureMethod = 'HmacSHA256';\n r.params.AWSAccessKeyId = credentials.accessKeyId;\n\n if (credentials.sessionToken) {\n r.params.SecurityToken = credentials.sessionToken;\n }\n\n delete r.params.Signature; // delete old Signature for re-signing\n r.params.Signature = this.signature(credentials);\n\n r.body = AWS.util.queryParamsToString(r.params);\n r.headers['Content-Length'] = r.body.length;\n },\n\n signature: function signature(credentials) {\n return AWS.util.crypto.hmac(credentials.secretAccessKey, this.stringToSign(), 'base64');\n },\n\n stringToSign: function stringToSign() {\n var parts = [];\n parts.push(this.request.method);\n parts.push(this.request.endpoint.host.toLowerCase());\n parts.push(this.request.pathname());\n parts.push(AWS.util.queryParamsToString(this.request.params));\n return parts.join('\\n');\n }\n\n});\n\n/**\n * @api private\n */\nmodule.exports = AWS.Signers.V2;\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport Logger from '../logger/Logger';\nimport {\n ISdkBitrateFrame,\n ISdkStreamDescriptor,\n SdkIndexFrame,\n SdkStreamMediaType,\n SdkSubscribeAckFrame,\n} from '../signalingprotocol/SignalingProtocol.js';\nimport VideoSource from '../videosource/VideoSource';\nimport DefaultVideoStreamIdSet from '../videostreamidset/DefaultVideoStreamIdSet';\nimport VideoStreamIndex from '../videostreamindex/VideoStreamIndex';\nimport VideoStreamDescription from './VideoStreamDescription';\n\n/**\n * [[DefaultVideoStreamIndex]] implements [[VideoStreamIndex]] to facilitate video stream subscription\n * and includes query functions for stream id and attendee id.\n */\nexport default class DefaultVideoStreamIndex implements VideoStreamIndex {\n protected currentIndex: SdkIndexFrame | null = null;\n protected indexForSubscribe: SdkIndexFrame | null = null;\n protected indexForLastRemoteVideoUpdate: SdkIndexFrame | null = null;\n protected currentSubscribeAck: SdkSubscribeAckFrame | null = null;\n\n // These are based on the index at the time of the last Subscribe Ack\n protected subscribeTrackToStreamMap: Map | null = null;\n protected subscribeStreamToAttendeeMap: Map | null = null;\n protected subscribeStreamToExternalUserIdMap: Map | null = null;\n protected subscribeSsrcToStreamMap: Map | null = null;\n protected subscribeSsrcToGroupMap: Map | null = null;\n\n // These are based on the most up to date index\n protected streamToAttendeeMap: Map | null = null;\n protected groupIdToAttendeeMap: Map | null = null;\n protected streamToExternalUserIdMap: Map | null = null;\n\n private videoStreamDescription = new VideoStreamDescription();\n private sendVideoStreamId: number = 0;\n constructor(protected logger: Logger) {\n this.videoStreamDescription.trackLabel = 'AmazonChimeExpressVideo';\n this.videoStreamDescription.streamId = 2;\n this.videoStreamDescription.groupId = 2;\n }\n\n localStreamDescriptions(): VideoStreamDescription[] {\n // localStreamDescriptions are used to construct IndexFrame\n // old behavior for single video is to have streamId and groupId trackLabel fixed as the follows\n return [this.videoStreamDescription.clone()];\n }\n\n convertBpsToKbps(avgBitrateBps: number): number {\n if (avgBitrateBps > 0 && avgBitrateBps < 1000) {\n return 1;\n } else {\n return Math.trunc(avgBitrateBps / 1000);\n }\n }\n\n remoteStreamDescriptions(): VideoStreamDescription[] {\n if (!this.currentIndex || !this.currentIndex.sources) {\n return [];\n }\n const streamInfos: VideoStreamDescription[] = [];\n this.currentIndex.sources.forEach(source => {\n const description = new VideoStreamDescription();\n description.attendeeId = source.attendeeId;\n description.groupId = source.groupId;\n description.streamId = source.streamId;\n description.maxBitrateKbps = source.maxBitrateKbps;\n description.avgBitrateKbps = this.convertBpsToKbps(source.avgBitrateBps);\n description.width = source.width;\n description.height = source.height;\n description.maxFrameRate = source.framerate;\n streamInfos.push(description);\n });\n return streamInfos;\n }\n\n integrateUplinkPolicyDecision(param: RTCRtpEncodingParameters[]): void {\n if (!!param && param.length) {\n const encodingParam = param[0];\n this.videoStreamDescription.maxBitrateKbps = encodingParam.maxBitrate / 1000;\n this.videoStreamDescription.maxFrameRate = encodingParam.maxFramerate;\n }\n }\n\n integrateIndexFrame(indexFrame: SdkIndexFrame): void {\n this.currentIndex = indexFrame;\n\n if (!indexFrame) {\n return;\n }\n\n // In the Amazon Chime SDKs, we assume a one to one mapping of group ID to profile ID when creating\n // video tiles (multiple video sources are supported through applying a `Modality` to a given profile/session token)\n //\n // We enforce this here to mitigate any possible duplicate group IDs left from a reconnection where the previous\n // signal channel hasn't been timed out yet. To guarantee we receive the latest stream we use the highest group ID\n // since they are monotonically increasing.\n const attendeeIdToMainGroupIdMap = new Map();\n // Improve performance by not filtering sources unless\n // we know the list will actually change\n let attendeeWithMultipleGroupIdsExists = false;\n for (const source of indexFrame.sources) {\n if (!attendeeIdToMainGroupIdMap.has(source.attendeeId)) {\n // We haven't see this attendee ID so just keep track of it\n attendeeIdToMainGroupIdMap.set(source.attendeeId, source.groupId);\n continue;\n }\n\n // Otherwise see if we should use the group ID corresponding to this source (we prefer the highest for each attendee)\n const currentGroupId = attendeeIdToMainGroupIdMap.get(source.attendeeId);\n if (currentGroupId < source.groupId) {\n this.logger.warn(\n `Old group ID ${currentGroupId} found for attendee ID ${source.attendeeId}, replacing with newer group ID ${source.groupId}`\n );\n attendeeIdToMainGroupIdMap.set(source.attendeeId, source.groupId);\n }\n attendeeWithMultipleGroupIdsExists = true;\n }\n if (attendeeWithMultipleGroupIdsExists) {\n // Only use the sources corresponding to the main group IDs for the given attendee ID\n this.currentIndex.sources = this.currentIndex.sources.filter(\n source => attendeeIdToMainGroupIdMap.get(source.attendeeId) === source.groupId\n );\n }\n\n // Null out cached maps, these will be recreated on demand\n this.streamToAttendeeMap = null;\n this.groupIdToAttendeeMap = null;\n this.streamToExternalUserIdMap = null;\n }\n\n subscribeFrameSent(): void {\n // This is called just as a Subscribe is being sent. Save corresponding Index\n this.indexForSubscribe = this.currentIndex;\n }\n\n remoteVideoUpdateSent(): void {\n this.indexForLastRemoteVideoUpdate = this.currentIndex;\n }\n\n integrateSubscribeAckFrame(subscribeAck: SdkSubscribeAckFrame): void {\n this.currentSubscribeAck = subscribeAck;\n\n // These are valid until the next Subscribe Ack even if the index is updated\n this.subscribeTrackToStreamMap = this.buildTrackToStreamMap(this.currentSubscribeAck);\n this.subscribeSsrcToStreamMap = this.buildSSRCToStreamMap(this.currentSubscribeAck);\n this.subscribeSsrcToGroupMap = this.buildSSRCToGroupMap(this.currentSubscribeAck);\n this.subscribeStreamToAttendeeMap = this.buildStreamToAttendeeMap(this.indexForSubscribe);\n this.subscribeStreamToExternalUserIdMap = this.buildStreamExternalUserIdMap(\n this.indexForSubscribe\n );\n\n this.sendVideoStreamId = 0;\n if (\n subscribeAck.allocations &&\n subscribeAck.allocations !== undefined &&\n subscribeAck.allocations.length > 0\n ) {\n this.sendVideoStreamId = subscribeAck.allocations[0].streamId;\n }\n }\n\n integrateBitratesFrame(bitrates: ISdkBitrateFrame): void {\n if (this.currentIndex) {\n for (const bitrate of bitrates.bitrates) {\n const source = this.currentIndex.sources.find(\n source => source.streamId === bitrate.sourceStreamId\n );\n if (source !== undefined) {\n source.avgBitrateBps = bitrate.avgBitrateBps;\n }\n }\n }\n }\n\n allStreams(): DefaultVideoStreamIdSet {\n const set = new DefaultVideoStreamIdSet();\n if (this.currentIndex) {\n for (const source of this.currentIndex.sources) {\n set.add(source.streamId);\n }\n }\n return set;\n }\n\n allVideoSendingSourcesExcludingSelf(selfAttendeeId: string): VideoSource[] {\n const videoSources: VideoSource[] = [];\n const attendeeSet = new Set();\n if (this.currentIndex) {\n if (this.currentIndex.sources && this.currentIndex.sources.length) {\n for (const stream of this.currentIndex.sources) {\n const { attendeeId, externalUserId, mediaType } = stream;\n if (attendeeId !== selfAttendeeId && mediaType === SdkStreamMediaType.VIDEO) {\n if (!attendeeSet.has(attendeeId)) {\n videoSources.push({ attendee: { attendeeId, externalUserId } });\n attendeeSet.add(attendeeId);\n }\n }\n }\n }\n }\n return videoSources;\n }\n\n streamSelectionUnderBandwidthConstraint(\n selfAttendeeId: string,\n largeTileAttendeeIds: Set,\n smallTileAttendeeIds: Set,\n bandwidthKbps: number\n ): DefaultVideoStreamIdSet {\n const newAttendees = new Set();\n if (this.currentIndex) {\n for (const stream of this.currentIndex.sources) {\n if (stream.attendeeId === selfAttendeeId || stream.mediaType !== SdkStreamMediaType.VIDEO) {\n continue;\n }\n if (\n !largeTileAttendeeIds.has(stream.attendeeId) &&\n !smallTileAttendeeIds.has(stream.attendeeId)\n ) {\n newAttendees.add(stream.attendeeId);\n }\n }\n }\n\n const attendeeToStreamDescriptorMap = this.buildAttendeeToSortedStreamDescriptorMapExcludingSelf(\n selfAttendeeId\n );\n const selectionMap = new Map();\n\n let usage = 0;\n attendeeToStreamDescriptorMap.forEach((streams: ISdkStreamDescriptor[], attendeeId: string) => {\n selectionMap.set(attendeeId, streams[0]);\n usage += streams[0].maxBitrateKbps;\n });\n\n usage = this.trySelectHighBitrateForAttendees(\n attendeeToStreamDescriptorMap,\n largeTileAttendeeIds,\n usage,\n bandwidthKbps,\n selectionMap\n );\n this.trySelectHighBitrateForAttendees(\n attendeeToStreamDescriptorMap,\n newAttendees,\n usage,\n bandwidthKbps,\n selectionMap\n );\n\n const streamSelectionSet = new DefaultVideoStreamIdSet();\n for (const source of selectionMap.values()) {\n streamSelectionSet.add(source.streamId);\n }\n\n return streamSelectionSet;\n }\n\n highestQualityStreamFromEachGroupExcludingSelf(selfAttendeeId: string): DefaultVideoStreamIdSet {\n const set = new DefaultVideoStreamIdSet();\n if (this.currentIndex) {\n const maxes = new Map();\n for (const source of this.currentIndex.sources) {\n if (source.attendeeId === selfAttendeeId || source.mediaType !== SdkStreamMediaType.VIDEO) {\n continue;\n }\n if (\n !maxes.has(source.groupId) ||\n source.maxBitrateKbps > maxes.get(source.groupId).maxBitrateKbps\n ) {\n maxes.set(source.groupId, source);\n }\n }\n for (const source of maxes.values()) {\n set.add(source.streamId);\n }\n }\n return set;\n }\n\n numberOfVideoPublishingParticipantsExcludingSelf(selfAttendeeId: string): number {\n return this.highestQualityStreamFromEachGroupExcludingSelf(selfAttendeeId).array().length;\n }\n\n numberOfParticipants(): number {\n if (!!this.currentIndex.numParticipants) {\n return this.currentIndex.numParticipants;\n }\n\n return -1;\n }\n\n attendeeIdForTrack(trackId: string): string {\n const streamId: number = this.streamIdForTrack(trackId);\n if (streamId === undefined || !this.subscribeStreamToAttendeeMap) {\n this.logger.warn(`no attendee found for track ${trackId}`);\n return '';\n }\n const attendeeId: string = this.subscribeStreamToAttendeeMap.get(streamId);\n if (!attendeeId) {\n this.logger.info(\n `track ${trackId} (stream ${streamId}) does not correspond to a known attendee`\n );\n return '';\n }\n return attendeeId;\n }\n\n externalUserIdForTrack(trackId: string): string {\n const streamId: number = this.streamIdForTrack(trackId);\n if (streamId === undefined || !this.subscribeStreamToExternalUserIdMap) {\n this.logger.warn(`no external user id found for track ${trackId}`);\n return '';\n }\n const externalUserId: string = this.subscribeStreamToExternalUserIdMap.get(streamId);\n if (!externalUserId) {\n this.logger.info(\n `track ${trackId} (stream ${streamId}) does not correspond to a known externalUserId`\n );\n return '';\n }\n return externalUserId;\n }\n\n attendeeIdForStreamId(streamId: number): string {\n if (!this.streamToAttendeeMap) {\n if (this.currentIndex) {\n this.streamToAttendeeMap = this.buildStreamToAttendeeMap(this.currentIndex);\n } else {\n return '';\n }\n }\n const attendeeId: string = this.streamToAttendeeMap.get(streamId);\n if (!attendeeId) {\n this.logger.info(`stream ID ${streamId} does not correspond to a known attendee`);\n return '';\n }\n return attendeeId;\n }\n\n attendeeIdForGroupId(groupId: number): string {\n if (!this.groupIdToAttendeeMap) {\n if (this.currentIndex) {\n this.groupIdToAttendeeMap = this.buildGroupIdToAttendeeMap(this.currentIndex);\n } else {\n return '';\n }\n }\n const attendeeId: string = this.groupIdToAttendeeMap.get(groupId);\n if (!attendeeId) {\n this.logger.info(`group ID ${groupId} does not correspond to a known attendee`);\n return '';\n }\n return attendeeId;\n }\n\n groupIdForStreamId(streamId: number): number {\n if (!this.currentIndex || !this.currentIndex.sources) {\n return undefined;\n }\n\n for (const source of this.currentIndex.sources) {\n if (source.streamId === streamId) {\n return source.groupId;\n }\n }\n\n // If wasn't found in current index, then it could be in index used in last subscribe\n if (!!this.indexForSubscribe) {\n for (const source of this.indexForSubscribe.sources) {\n if (source.streamId === streamId) {\n return source.groupId;\n }\n }\n }\n\n // Lastly check if it can be found in the index last used for remote video update\n if (!!this.indexForLastRemoteVideoUpdate) {\n for (const source of this.indexForLastRemoteVideoUpdate.sources) {\n if (source.streamId === streamId) {\n return source.groupId;\n }\n }\n }\n\n return undefined;\n }\n\n StreamIdsInSameGroup(streamId1: number, streamId2: number): boolean {\n if (this.groupIdForStreamId(streamId1) === this.groupIdForStreamId(streamId2)) {\n return true;\n }\n return false;\n }\n\n streamIdForTrack(trackId: string): number {\n if (!this.subscribeTrackToStreamMap) {\n return undefined;\n }\n return this.subscribeTrackToStreamMap.get(trackId);\n }\n\n streamIdForSSRC(ssrcId: number): number {\n if (!this.subscribeSsrcToStreamMap) {\n return undefined;\n }\n return this.subscribeSsrcToStreamMap.get(ssrcId);\n }\n\n overrideStreamIdMappings(previous: number, current: number): void {\n if (this.subscribeTrackToStreamMap) {\n for (const [track, streamId] of this.subscribeTrackToStreamMap.entries()) {\n if (previous === streamId) {\n this.subscribeTrackToStreamMap.set(track, current);\n break;\n }\n }\n }\n\n if (this.subscribeSsrcToStreamMap) {\n for (const [ssrc, streamId] of this.subscribeSsrcToStreamMap.entries()) {\n if (previous === streamId) {\n this.subscribeSsrcToStreamMap.set(ssrc, current);\n break;\n }\n }\n }\n }\n\n groupIdForSSRC(ssrcId: number): number {\n if (!this.subscribeSsrcToGroupMap) {\n return undefined;\n }\n return this.subscribeSsrcToGroupMap.get(ssrcId);\n }\n\n streamsPausedAtSource(): DefaultVideoStreamIdSet {\n const paused = new DefaultVideoStreamIdSet();\n if (this.currentIndex) {\n for (const streamId of this.currentIndex.pausedAtSourceIds) {\n paused.add(streamId);\n }\n }\n return paused;\n }\n\n sendVideoStreamIdFromRid(_rid: string): number {\n return this.sendVideoStreamId;\n }\n\n private buildTrackToStreamMap(subscribeAck: SdkSubscribeAckFrame): Map {\n const map = new Map();\n this.logger.debug(() => `trackMap ${JSON.stringify(subscribeAck.tracks)}`);\n for (const trackMapping of subscribeAck.tracks) {\n if (trackMapping.trackLabel.length > 0 && trackMapping.streamId > 0) {\n map.set(trackMapping.trackLabel, trackMapping.streamId);\n }\n }\n return map;\n }\n\n private buildSSRCToStreamMap(subscribeAck: SdkSubscribeAckFrame): Map {\n const map = new Map();\n this.logger.debug(() => `ssrcMap ${JSON.stringify(subscribeAck.tracks)}`);\n for (const trackMapping of subscribeAck.tracks) {\n if (trackMapping.trackLabel.length > 0 && trackMapping.streamId > 0) {\n map.set(trackMapping.ssrc, trackMapping.streamId);\n }\n }\n return map;\n }\n\n private buildSSRCToGroupMap(subscribeAck: SdkSubscribeAckFrame): Map {\n const map = new Map();\n for (const trackMapping of subscribeAck.tracks) {\n if (trackMapping.trackLabel.length > 0 && trackMapping.streamId > 0) {\n map.set(trackMapping.ssrc, this.groupIdForStreamId(trackMapping.streamId));\n }\n }\n return map;\n }\n\n private buildStreamToAttendeeMap(indexFrame: SdkIndexFrame): Map {\n const map = new Map();\n if (indexFrame) {\n for (const source of indexFrame.sources) {\n map.set(source.streamId, source.attendeeId);\n }\n }\n return map;\n }\n\n private buildGroupIdToAttendeeMap(indexFrame: SdkIndexFrame): Map {\n const map = new Map();\n for (const source of indexFrame.sources) {\n map.set(source.groupId, source.attendeeId);\n }\n return map;\n }\n\n private buildStreamExternalUserIdMap(indexFrame: SdkIndexFrame): Map {\n const map = new Map();\n if (indexFrame) {\n for (const source of indexFrame.sources) {\n if (!!source.externalUserId) {\n map.set(source.streamId, source.externalUserId);\n }\n }\n }\n return map;\n }\n\n private trySelectHighBitrateForAttendees(\n attendeeToStreamDescriptorMap: Map,\n highAttendees: Set,\n currentUsage: number,\n bandwidthKbps: number,\n currentSelectionRef: Map\n ): number {\n for (const attendeeId of highAttendees) {\n if (currentUsage >= bandwidthKbps) {\n break;\n }\n if (attendeeToStreamDescriptorMap.has(attendeeId)) {\n const streams = attendeeToStreamDescriptorMap.get(attendeeId);\n for (const l of streams.reverse()) {\n if (\n currentUsage - currentSelectionRef.get(attendeeId).maxBitrateKbps + l.maxBitrateKbps <\n bandwidthKbps\n ) {\n currentUsage =\n currentUsage - currentSelectionRef.get(attendeeId).maxBitrateKbps + l.maxBitrateKbps;\n currentSelectionRef.set(attendeeId, l);\n break;\n }\n }\n }\n }\n\n return currentUsage;\n }\n\n private buildAttendeeToSortedStreamDescriptorMapExcludingSelf(\n selfAttendeeId: string\n ): Map {\n const attendeeToStreamDescriptorMap = new Map();\n if (this.currentIndex) {\n for (const source of this.currentIndex.sources) {\n if (source.attendeeId === selfAttendeeId || source.mediaType !== SdkStreamMediaType.VIDEO) {\n continue;\n }\n if (attendeeToStreamDescriptorMap.has(source.attendeeId)) {\n attendeeToStreamDescriptorMap.get(source.attendeeId).push(source);\n } else {\n attendeeToStreamDescriptorMap.set(source.attendeeId, [source]);\n }\n }\n }\n\n attendeeToStreamDescriptorMap.forEach(\n (streams: ISdkStreamDescriptor[], _attendeeId: string) => {\n streams.sort((stream1, stream2) => {\n if (stream1.maxBitrateKbps > stream2.maxBitrateKbps) {\n return 1;\n } else if (stream1.maxBitrateKbps < stream2.maxBitrateKbps) {\n return -1;\n } else {\n return 0;\n }\n });\n }\n );\n\n return attendeeToStreamDescriptorMap;\n }\n}\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isCallable = require('../internals/is-callable');\nvar store = require('../internals/shared-store');\n\nvar functionToString = uncurryThis(Function.toString);\n\n// this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper\nif (!isCallable(store.inspectSource)) {\n store.inspectSource = function (it) {\n return functionToString(it);\n };\n}\n\nmodule.exports = store.inspectSource;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['sns'] = {};\nAWS.SNS = Service.defineService('sns', ['2010-03-31']);\nObject.defineProperty(apiLoader.services['sns'], '2010-03-31', {\n get: function get() {\n var model = require('../apis/sns-2010-03-31.min.json');\n model.paginators = require('../apis/sns-2010-03-31.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.SNS;\n","/**\n * Javascript implementation of Abstract Syntax Notation Number One.\n *\n * @author Dave Longley\n *\n * Copyright (c) 2010-2015 Digital Bazaar, Inc.\n *\n * An API for storing data using the Abstract Syntax Notation Number One\n * format using DER (Distinguished Encoding Rules) encoding. This encoding is\n * commonly used to store data for PKI, i.e. X.509 Certificates, and this\n * implementation exists for that purpose.\n *\n * Abstract Syntax Notation Number One (ASN.1) is used to define the abstract\n * syntax of information without restricting the way the information is encoded\n * for transmission. It provides a standard that allows for open systems\n * communication. ASN.1 defines the syntax of information data and a number of\n * simple data types as well as a notation for describing them and specifying\n * values for them.\n *\n * The RSA algorithm creates public and private keys that are often stored in\n * X.509 or PKCS#X formats -- which use ASN.1 (encoded in DER format). This\n * class provides the most basic functionality required to store and load DSA\n * keys that are encoded according to ASN.1.\n *\n * The most common binary encodings for ASN.1 are BER (Basic Encoding Rules)\n * and DER (Distinguished Encoding Rules). DER is just a subset of BER that\n * has stricter requirements for how data must be encoded.\n *\n * Each ASN.1 structure has a tag (a byte identifying the ASN.1 structure type)\n * and a byte array for the value of this ASN1 structure which may be data or a\n * list of ASN.1 structures.\n *\n * Each ASN.1 structure using BER is (Tag-Length-Value):\n *\n * | byte 0 | bytes X | bytes Y |\n * |--------|---------|----------\n * | tag | length | value |\n *\n * ASN.1 allows for tags to be of \"High-tag-number form\" which allows a tag to\n * be two or more octets, but that is not supported by this class. A tag is\n * only 1 byte. Bits 1-5 give the tag number (ie the data type within a\n * particular 'class'), 6 indicates whether or not the ASN.1 value is\n * constructed from other ASN.1 values, and bits 7 and 8 give the 'class'. If\n * bits 7 and 8 are both zero, the class is UNIVERSAL. If only bit 7 is set,\n * then the class is APPLICATION. If only bit 8 is set, then the class is\n * CONTEXT_SPECIFIC. If both bits 7 and 8 are set, then the class is PRIVATE.\n * The tag numbers for the data types for the class UNIVERSAL are listed below:\n *\n * UNIVERSAL 0 Reserved for use by the encoding rules\n * UNIVERSAL 1 Boolean type\n * UNIVERSAL 2 Integer type\n * UNIVERSAL 3 Bitstring type\n * UNIVERSAL 4 Octetstring type\n * UNIVERSAL 5 Null type\n * UNIVERSAL 6 Object identifier type\n * UNIVERSAL 7 Object descriptor type\n * UNIVERSAL 8 External type and Instance-of type\n * UNIVERSAL 9 Real type\n * UNIVERSAL 10 Enumerated type\n * UNIVERSAL 11 Embedded-pdv type\n * UNIVERSAL 12 UTF8String type\n * UNIVERSAL 13 Relative object identifier type\n * UNIVERSAL 14-15 Reserved for future editions\n * UNIVERSAL 16 Sequence and Sequence-of types\n * UNIVERSAL 17 Set and Set-of types\n * UNIVERSAL 18-22, 25-30 Character string types\n * UNIVERSAL 23-24 Time types\n *\n * The length of an ASN.1 structure is specified after the tag identifier.\n * There is a definite form and an indefinite form. The indefinite form may\n * be used if the encoding is constructed and not all immediately available.\n * The indefinite form is encoded using a length byte with only the 8th bit\n * set. The end of the constructed object is marked using end-of-contents\n * octets (two zero bytes).\n *\n * The definite form looks like this:\n *\n * The length may take up 1 or more bytes, it depends on the length of the\n * value of the ASN.1 structure. DER encoding requires that if the ASN.1\n * structure has a value that has a length greater than 127, more than 1 byte\n * will be used to store its length, otherwise just one byte will be used.\n * This is strict.\n *\n * In the case that the length of the ASN.1 value is less than 127, 1 octet\n * (byte) is used to store the \"short form\" length. The 8th bit has a value of\n * 0 indicating the length is \"short form\" and not \"long form\" and bits 7-1\n * give the length of the data. (The 8th bit is the left-most, most significant\n * bit: also known as big endian or network format).\n *\n * In the case that the length of the ASN.1 value is greater than 127, 2 to\n * 127 octets (bytes) are used to store the \"long form\" length. The first\n * byte's 8th bit is set to 1 to indicate the length is \"long form.\" Bits 7-1\n * give the number of additional octets. All following octets are in base 256\n * with the most significant digit first (typical big-endian binary unsigned\n * integer storage). So, for instance, if the length of a value was 257, the\n * first byte would be set to:\n *\n * 10000010 = 130 = 0x82.\n *\n * This indicates there are 2 octets (base 256) for the length. The second and\n * third bytes (the octets just mentioned) would store the length in base 256:\n *\n * octet 2: 00000001 = 1 * 256^1 = 256\n * octet 3: 00000001 = 1 * 256^0 = 1\n * total = 257\n *\n * The algorithm for converting a js integer value of 257 to base-256 is:\n *\n * var value = 257;\n * var bytes = [];\n * bytes[0] = (value >>> 8) & 0xFF; // most significant byte first\n * bytes[1] = value & 0xFF; // least significant byte last\n *\n * On the ASN.1 UNIVERSAL Object Identifier (OID) type:\n *\n * An OID can be written like: \"value1.value2.value3...valueN\"\n *\n * The DER encoding rules:\n *\n * The first byte has the value 40 * value1 + value2.\n * The following bytes, if any, encode the remaining values. Each value is\n * encoded in base 128, most significant digit first (big endian), with as\n * few digits as possible, and the most significant bit of each byte set\n * to 1 except the last in each value's encoding. For example: Given the\n * OID \"1.2.840.113549\", its DER encoding is (remember each byte except the\n * last one in each encoding is OR'd with 0x80):\n *\n * byte 1: 40 * 1 + 2 = 42 = 0x2A.\n * bytes 2-3: 128 * 6 + 72 = 840 = 6 72 = 6 72 = 0x0648 = 0x8648\n * bytes 4-6: 16384 * 6 + 128 * 119 + 13 = 6 119 13 = 0x06770D = 0x86F70D\n *\n * The final value is: 0x2A864886F70D.\n * The full OID (including ASN.1 tag and length of 6 bytes) is:\n * 0x06062A864886F70D\n */\nvar forge = require('./forge');\nrequire('./util');\nrequire('./oids');\n\n/* ASN.1 API */\nvar asn1 = module.exports = forge.asn1 = forge.asn1 || {};\n\n/**\n * ASN.1 classes.\n */\nasn1.Class = {\n UNIVERSAL: 0x00,\n APPLICATION: 0x40,\n CONTEXT_SPECIFIC: 0x80,\n PRIVATE: 0xC0\n};\n\n/**\n * ASN.1 types. Not all types are supported by this implementation, only\n * those necessary to implement a simple PKI are implemented.\n */\nasn1.Type = {\n NONE: 0,\n BOOLEAN: 1,\n INTEGER: 2,\n BITSTRING: 3,\n OCTETSTRING: 4,\n NULL: 5,\n OID: 6,\n ODESC: 7,\n EXTERNAL: 8,\n REAL: 9,\n ENUMERATED: 10,\n EMBEDDED: 11,\n UTF8: 12,\n ROID: 13,\n SEQUENCE: 16,\n SET: 17,\n PRINTABLESTRING: 19,\n IA5STRING: 22,\n UTCTIME: 23,\n GENERALIZEDTIME: 24,\n BMPSTRING: 30\n};\n\n/**\n * Creates a new asn1 object.\n *\n * @param tagClass the tag class for the object.\n * @param type the data type (tag number) for the object.\n * @param constructed true if the asn1 object is in constructed form.\n * @param value the value for the object, if it is not constructed.\n * @param [options] the options to use:\n * [bitStringContents] the plain BIT STRING content including padding\n * byte.\n *\n * @return the asn1 object.\n */\nasn1.create = function(tagClass, type, constructed, value, options) {\n /* An asn1 object has a tagClass, a type, a constructed flag, and a\n value. The value's type depends on the constructed flag. If\n constructed, it will contain a list of other asn1 objects. If not,\n it will contain the ASN.1 value as an array of bytes formatted\n according to the ASN.1 data type. */\n\n // remove undefined values\n if(forge.util.isArray(value)) {\n var tmp = [];\n for(var i = 0; i < value.length; ++i) {\n if(value[i] !== undefined) {\n tmp.push(value[i]);\n }\n }\n value = tmp;\n }\n\n var obj = {\n tagClass: tagClass,\n type: type,\n constructed: constructed,\n composed: constructed || forge.util.isArray(value),\n value: value\n };\n if(options && 'bitStringContents' in options) {\n // TODO: copy byte buffer if it's a buffer not a string\n obj.bitStringContents = options.bitStringContents;\n // TODO: add readonly flag to avoid this overhead\n // save copy to detect changes\n obj.original = asn1.copy(obj);\n }\n return obj;\n};\n\n/**\n * Copies an asn1 object.\n *\n * @param obj the asn1 object.\n * @param [options] copy options:\n * [excludeBitStringContents] true to not copy bitStringContents\n *\n * @return the a copy of the asn1 object.\n */\nasn1.copy = function(obj, options) {\n var copy;\n\n if(forge.util.isArray(obj)) {\n copy = [];\n for(var i = 0; i < obj.length; ++i) {\n copy.push(asn1.copy(obj[i], options));\n }\n return copy;\n }\n\n if(typeof obj === 'string') {\n // TODO: copy byte buffer if it's a buffer not a string\n return obj;\n }\n\n copy = {\n tagClass: obj.tagClass,\n type: obj.type,\n constructed: obj.constructed,\n composed: obj.composed,\n value: asn1.copy(obj.value, options)\n };\n if(options && !options.excludeBitStringContents) {\n // TODO: copy byte buffer if it's a buffer not a string\n copy.bitStringContents = obj.bitStringContents;\n }\n return copy;\n};\n\n/**\n * Compares asn1 objects for equality.\n *\n * Note this function does not run in constant time.\n *\n * @param obj1 the first asn1 object.\n * @param obj2 the second asn1 object.\n * @param [options] compare options:\n * [includeBitStringContents] true to compare bitStringContents\n *\n * @return true if the asn1 objects are equal.\n */\nasn1.equals = function(obj1, obj2, options) {\n if(forge.util.isArray(obj1)) {\n if(!forge.util.isArray(obj2)) {\n return false;\n }\n if(obj1.length !== obj2.length) {\n return false;\n }\n for(var i = 0; i < obj1.length; ++i) {\n if(!asn1.equals(obj1[i], obj2[i])) {\n return false;\n }\n }\n return true;\n }\n\n if(typeof obj1 !== typeof obj2) {\n return false;\n }\n\n if(typeof obj1 === 'string') {\n return obj1 === obj2;\n }\n\n var equal = obj1.tagClass === obj2.tagClass &&\n obj1.type === obj2.type &&\n obj1.constructed === obj2.constructed &&\n obj1.composed === obj2.composed &&\n asn1.equals(obj1.value, obj2.value);\n if(options && options.includeBitStringContents) {\n equal = equal && (obj1.bitStringContents === obj2.bitStringContents);\n }\n\n return equal;\n};\n\n/**\n * Gets the length of a BER-encoded ASN.1 value.\n *\n * In case the length is not specified, undefined is returned.\n *\n * @param b the BER-encoded ASN.1 byte buffer, starting with the first\n * length byte.\n *\n * @return the length of the BER-encoded ASN.1 value or undefined.\n */\nasn1.getBerValueLength = function(b) {\n // TODO: move this function and related DER/BER functions to a der.js\n // file; better abstract ASN.1 away from der/ber.\n var b2 = b.getByte();\n if(b2 === 0x80) {\n return undefined;\n }\n\n // see if the length is \"short form\" or \"long form\" (bit 8 set)\n var length;\n var longForm = b2 & 0x80;\n if(!longForm) {\n // length is just the first byte\n length = b2;\n } else {\n // the number of bytes the length is specified in bits 7 through 1\n // and each length byte is in big-endian base-256\n length = b.getInt((b2 & 0x7F) << 3);\n }\n return length;\n};\n\n/**\n * Check if the byte buffer has enough bytes. Throws an Error if not.\n *\n * @param bytes the byte buffer to parse from.\n * @param remaining the bytes remaining in the current parsing state.\n * @param n the number of bytes the buffer must have.\n */\nfunction _checkBufferLength(bytes, remaining, n) {\n if(n > remaining) {\n var error = new Error('Too few bytes to parse DER.');\n error.available = bytes.length();\n error.remaining = remaining;\n error.requested = n;\n throw error;\n }\n}\n\n/**\n * Gets the length of a BER-encoded ASN.1 value.\n *\n * In case the length is not specified, undefined is returned.\n *\n * @param bytes the byte buffer to parse from.\n * @param remaining the bytes remaining in the current parsing state.\n *\n * @return the length of the BER-encoded ASN.1 value or undefined.\n */\nvar _getValueLength = function(bytes, remaining) {\n // TODO: move this function and related DER/BER functions to a der.js\n // file; better abstract ASN.1 away from der/ber.\n // fromDer already checked that this byte exists\n var b2 = bytes.getByte();\n remaining--;\n if(b2 === 0x80) {\n return undefined;\n }\n\n // see if the length is \"short form\" or \"long form\" (bit 8 set)\n var length;\n var longForm = b2 & 0x80;\n if(!longForm) {\n // length is just the first byte\n length = b2;\n } else {\n // the number of bytes the length is specified in bits 7 through 1\n // and each length byte is in big-endian base-256\n var longFormBytes = b2 & 0x7F;\n _checkBufferLength(bytes, remaining, longFormBytes);\n length = bytes.getInt(longFormBytes << 3);\n }\n // FIXME: this will only happen for 32 bit getInt with high bit set\n if(length < 0) {\n throw new Error('Negative length: ' + length);\n }\n return length;\n};\n\n/**\n * Parses an asn1 object from a byte buffer in DER format.\n *\n * @param bytes the byte buffer to parse from.\n * @param [strict] true to be strict when checking value lengths, false to\n * allow truncated values (default: true).\n * @param [options] object with options or boolean strict flag\n * [strict] true to be strict when checking value lengths, false to\n * allow truncated values (default: true).\n * [parseAllBytes] true to ensure all bytes are parsed\n * (default: true)\n * [decodeBitStrings] true to attempt to decode the content of\n * BIT STRINGs (not OCTET STRINGs) using strict mode. Note that\n * without schema support to understand the data context this can\n * erroneously decode values that happen to be valid ASN.1. This\n * flag will be deprecated or removed as soon as schema support is\n * available. (default: true)\n *\n * @throws Will throw an error for various malformed input conditions.\n *\n * @return the parsed asn1 object.\n */\nasn1.fromDer = function(bytes, options) {\n if(options === undefined) {\n options = {\n strict: true,\n parseAllBytes: true,\n decodeBitStrings: true\n };\n }\n if(typeof options === 'boolean') {\n options = {\n strict: options,\n parseAllBytes: true,\n decodeBitStrings: true\n };\n }\n if(!('strict' in options)) {\n options.strict = true;\n }\n if(!('parseAllBytes' in options)) {\n options.parseAllBytes = true;\n }\n if(!('decodeBitStrings' in options)) {\n options.decodeBitStrings = true;\n }\n\n // wrap in buffer if needed\n if(typeof bytes === 'string') {\n bytes = forge.util.createBuffer(bytes);\n }\n\n var byteCount = bytes.length();\n var value = _fromDer(bytes, bytes.length(), 0, options);\n if(options.parseAllBytes && bytes.length() !== 0) {\n var error = new Error('Unparsed DER bytes remain after ASN.1 parsing.');\n error.byteCount = byteCount;\n error.remaining = bytes.length();\n throw error;\n }\n return value;\n};\n\n/**\n * Internal function to parse an asn1 object from a byte buffer in DER format.\n *\n * @param bytes the byte buffer to parse from.\n * @param remaining the number of bytes remaining for this chunk.\n * @param depth the current parsing depth.\n * @param options object with same options as fromDer().\n *\n * @return the parsed asn1 object.\n */\nfunction _fromDer(bytes, remaining, depth, options) {\n // temporary storage for consumption calculations\n var start;\n\n // minimum length for ASN.1 DER structure is 2\n _checkBufferLength(bytes, remaining, 2);\n\n // get the first byte\n var b1 = bytes.getByte();\n // consumed one byte\n remaining--;\n\n // get the tag class\n var tagClass = (b1 & 0xC0);\n\n // get the type (bits 1-5)\n var type = b1 & 0x1F;\n\n // get the variable value length and adjust remaining bytes\n start = bytes.length();\n var length = _getValueLength(bytes, remaining);\n remaining -= start - bytes.length();\n\n // ensure there are enough bytes to get the value\n if(length !== undefined && length > remaining) {\n if(options.strict) {\n var error = new Error('Too few bytes to read ASN.1 value.');\n error.available = bytes.length();\n error.remaining = remaining;\n error.requested = length;\n throw error;\n }\n // Note: be lenient with truncated values and use remaining state bytes\n length = remaining;\n }\n\n // value storage\n var value;\n // possible BIT STRING contents storage\n var bitStringContents;\n\n // constructed flag is bit 6 (32 = 0x20) of the first byte\n var constructed = ((b1 & 0x20) === 0x20);\n if(constructed) {\n // parse child asn1 objects from the value\n value = [];\n if(length === undefined) {\n // asn1 object of indefinite length, read until end tag\n for(;;) {\n _checkBufferLength(bytes, remaining, 2);\n if(bytes.bytes(2) === String.fromCharCode(0, 0)) {\n bytes.getBytes(2);\n remaining -= 2;\n break;\n }\n start = bytes.length();\n value.push(_fromDer(bytes, remaining, depth + 1, options));\n remaining -= start - bytes.length();\n }\n } else {\n // parsing asn1 object of definite length\n while(length > 0) {\n start = bytes.length();\n value.push(_fromDer(bytes, length, depth + 1, options));\n remaining -= start - bytes.length();\n length -= start - bytes.length();\n }\n }\n }\n\n // if a BIT STRING, save the contents including padding\n if(value === undefined && tagClass === asn1.Class.UNIVERSAL &&\n type === asn1.Type.BITSTRING) {\n bitStringContents = bytes.bytes(length);\n }\n\n // determine if a non-constructed value should be decoded as a composed\n // value that contains other ASN.1 objects. BIT STRINGs (and OCTET STRINGs)\n // can be used this way.\n if(value === undefined && options.decodeBitStrings &&\n tagClass === asn1.Class.UNIVERSAL &&\n // FIXME: OCTET STRINGs not yet supported here\n // .. other parts of forge expect to decode OCTET STRINGs manually\n (type === asn1.Type.BITSTRING /*|| type === asn1.Type.OCTETSTRING*/) &&\n length > 1) {\n // save read position\n var savedRead = bytes.read;\n var savedRemaining = remaining;\n var unused = 0;\n if(type === asn1.Type.BITSTRING) {\n /* The first octet gives the number of bits by which the length of the\n bit string is less than the next multiple of eight (this is called\n the \"number of unused bits\").\n\n The second and following octets give the value of the bit string\n converted to an octet string. */\n _checkBufferLength(bytes, remaining, 1);\n unused = bytes.getByte();\n remaining--;\n }\n // if all bits are used, maybe the BIT/OCTET STRING holds ASN.1 objs\n if(unused === 0) {\n try {\n // attempt to parse child asn1 object from the value\n // (stored in array to signal composed value)\n start = bytes.length();\n var subOptions = {\n // enforce strict mode to avoid parsing ASN.1 from plain data\n strict: true,\n decodeBitStrings: true\n };\n var composed = _fromDer(bytes, remaining, depth + 1, subOptions);\n var used = start - bytes.length();\n remaining -= used;\n if(type == asn1.Type.BITSTRING) {\n used++;\n }\n\n // if the data all decoded and the class indicates UNIVERSAL or\n // CONTEXT_SPECIFIC then assume we've got an encapsulated ASN.1 object\n var tc = composed.tagClass;\n if(used === length &&\n (tc === asn1.Class.UNIVERSAL || tc === asn1.Class.CONTEXT_SPECIFIC)) {\n value = [composed];\n }\n } catch(ex) {\n }\n }\n if(value === undefined) {\n // restore read position\n bytes.read = savedRead;\n remaining = savedRemaining;\n }\n }\n\n if(value === undefined) {\n // asn1 not constructed or composed, get raw value\n // TODO: do DER to OID conversion and vice-versa in .toDer?\n\n if(length === undefined) {\n if(options.strict) {\n throw new Error('Non-constructed ASN.1 object of indefinite length.');\n }\n // be lenient and use remaining state bytes\n length = remaining;\n }\n\n if(type === asn1.Type.BMPSTRING) {\n value = '';\n for(; length > 0; length -= 2) {\n _checkBufferLength(bytes, remaining, 2);\n value += String.fromCharCode(bytes.getInt16());\n remaining -= 2;\n }\n } else {\n value = bytes.getBytes(length);\n remaining -= length;\n }\n }\n\n // add BIT STRING contents if available\n var asn1Options = bitStringContents === undefined ? null : {\n bitStringContents: bitStringContents\n };\n\n // create and return asn1 object\n return asn1.create(tagClass, type, constructed, value, asn1Options);\n}\n\n/**\n * Converts the given asn1 object to a buffer of bytes in DER format.\n *\n * @param asn1 the asn1 object to convert to bytes.\n *\n * @return the buffer of bytes.\n */\nasn1.toDer = function(obj) {\n var bytes = forge.util.createBuffer();\n\n // build the first byte\n var b1 = obj.tagClass | obj.type;\n\n // for storing the ASN.1 value\n var value = forge.util.createBuffer();\n\n // use BIT STRING contents if available and data not changed\n var useBitStringContents = false;\n if('bitStringContents' in obj) {\n useBitStringContents = true;\n if(obj.original) {\n useBitStringContents = asn1.equals(obj, obj.original);\n }\n }\n\n if(useBitStringContents) {\n value.putBytes(obj.bitStringContents);\n } else if(obj.composed) {\n // if composed, use each child asn1 object's DER bytes as value\n // turn on 6th bit (0x20 = 32) to indicate asn1 is constructed\n // from other asn1 objects\n if(obj.constructed) {\n b1 |= 0x20;\n } else {\n // type is a bit string, add unused bits of 0x00\n value.putByte(0x00);\n }\n\n // add all of the child DER bytes together\n for(var i = 0; i < obj.value.length; ++i) {\n if(obj.value[i] !== undefined) {\n value.putBuffer(asn1.toDer(obj.value[i]));\n }\n }\n } else {\n // use asn1.value directly\n if(obj.type === asn1.Type.BMPSTRING) {\n for(var i = 0; i < obj.value.length; ++i) {\n value.putInt16(obj.value.charCodeAt(i));\n }\n } else {\n // ensure integer is minimally-encoded\n // TODO: should all leading bytes be stripped vs just one?\n // .. ex '00 00 01' => '01'?\n if(obj.type === asn1.Type.INTEGER &&\n obj.value.length > 1 &&\n // leading 0x00 for positive integer\n ((obj.value.charCodeAt(0) === 0 &&\n (obj.value.charCodeAt(1) & 0x80) === 0) ||\n // leading 0xFF for negative integer\n (obj.value.charCodeAt(0) === 0xFF &&\n (obj.value.charCodeAt(1) & 0x80) === 0x80))) {\n value.putBytes(obj.value.substr(1));\n } else {\n value.putBytes(obj.value);\n }\n }\n }\n\n // add tag byte\n bytes.putByte(b1);\n\n // use \"short form\" encoding\n if(value.length() <= 127) {\n // one byte describes the length\n // bit 8 = 0 and bits 7-1 = length\n bytes.putByte(value.length() & 0x7F);\n } else {\n // use \"long form\" encoding\n // 2 to 127 bytes describe the length\n // first byte: bit 8 = 1 and bits 7-1 = # of additional bytes\n // other bytes: length in base 256, big-endian\n var len = value.length();\n var lenBytes = '';\n do {\n lenBytes += String.fromCharCode(len & 0xFF);\n len = len >>> 8;\n } while(len > 0);\n\n // set first byte to # bytes used to store the length and turn on\n // bit 8 to indicate long-form length is used\n bytes.putByte(lenBytes.length | 0x80);\n\n // concatenate length bytes in reverse since they were generated\n // little endian and we need big endian\n for(var i = lenBytes.length - 1; i >= 0; --i) {\n bytes.putByte(lenBytes.charCodeAt(i));\n }\n }\n\n // concatenate value bytes\n bytes.putBuffer(value);\n return bytes;\n};\n\n/**\n * Converts an OID dot-separated string to a byte buffer. The byte buffer\n * contains only the DER-encoded value, not any tag or length bytes.\n *\n * @param oid the OID dot-separated string.\n *\n * @return the byte buffer.\n */\nasn1.oidToDer = function(oid) {\n // split OID into individual values\n var values = oid.split('.');\n var bytes = forge.util.createBuffer();\n\n // first byte is 40 * value1 + value2\n bytes.putByte(40 * parseInt(values[0], 10) + parseInt(values[1], 10));\n // other bytes are each value in base 128 with 8th bit set except for\n // the last byte for each value\n var last, valueBytes, value, b;\n for(var i = 2; i < values.length; ++i) {\n // produce value bytes in reverse because we don't know how many\n // bytes it will take to store the value\n last = true;\n valueBytes = [];\n value = parseInt(values[i], 10);\n do {\n b = value & 0x7F;\n value = value >>> 7;\n // if value is not last, then turn on 8th bit\n if(!last) {\n b |= 0x80;\n }\n valueBytes.push(b);\n last = false;\n } while(value > 0);\n\n // add value bytes in reverse (needs to be in big endian)\n for(var n = valueBytes.length - 1; n >= 0; --n) {\n bytes.putByte(valueBytes[n]);\n }\n }\n\n return bytes;\n};\n\n/**\n * Converts a DER-encoded byte buffer to an OID dot-separated string. The\n * byte buffer should contain only the DER-encoded value, not any tag or\n * length bytes.\n *\n * @param bytes the byte buffer.\n *\n * @return the OID dot-separated string.\n */\nasn1.derToOid = function(bytes) {\n var oid;\n\n // wrap in buffer if needed\n if(typeof bytes === 'string') {\n bytes = forge.util.createBuffer(bytes);\n }\n\n // first byte is 40 * value1 + value2\n var b = bytes.getByte();\n oid = Math.floor(b / 40) + '.' + (b % 40);\n\n // other bytes are each value in base 128 with 8th bit set except for\n // the last byte for each value\n var value = 0;\n while(bytes.length() > 0) {\n b = bytes.getByte();\n value = value << 7;\n // not the last byte for the value\n if(b & 0x80) {\n value += b & 0x7F;\n } else {\n // last byte\n oid += '.' + (value + b);\n value = 0;\n }\n }\n\n return oid;\n};\n\n/**\n * Converts a UTCTime value to a date.\n *\n * Note: GeneralizedTime has 4 digits for the year and is used for X.509\n * dates past 2049. Parsing that structure hasn't been implemented yet.\n *\n * @param utc the UTCTime value to convert.\n *\n * @return the date.\n */\nasn1.utcTimeToDate = function(utc) {\n /* The following formats can be used:\n\n YYMMDDhhmmZ\n YYMMDDhhmm+hh'mm'\n YYMMDDhhmm-hh'mm'\n YYMMDDhhmmssZ\n YYMMDDhhmmss+hh'mm'\n YYMMDDhhmmss-hh'mm'\n\n Where:\n\n YY is the least significant two digits of the year\n MM is the month (01 to 12)\n DD is the day (01 to 31)\n hh is the hour (00 to 23)\n mm are the minutes (00 to 59)\n ss are the seconds (00 to 59)\n Z indicates that local time is GMT, + indicates that local time is\n later than GMT, and - indicates that local time is earlier than GMT\n hh' is the absolute value of the offset from GMT in hours\n mm' is the absolute value of the offset from GMT in minutes */\n var date = new Date();\n\n // if YY >= 50 use 19xx, if YY < 50 use 20xx\n var year = parseInt(utc.substr(0, 2), 10);\n year = (year >= 50) ? 1900 + year : 2000 + year;\n var MM = parseInt(utc.substr(2, 2), 10) - 1; // use 0-11 for month\n var DD = parseInt(utc.substr(4, 2), 10);\n var hh = parseInt(utc.substr(6, 2), 10);\n var mm = parseInt(utc.substr(8, 2), 10);\n var ss = 0;\n\n // not just YYMMDDhhmmZ\n if(utc.length > 11) {\n // get character after minutes\n var c = utc.charAt(10);\n var end = 10;\n\n // see if seconds are present\n if(c !== '+' && c !== '-') {\n // get seconds\n ss = parseInt(utc.substr(10, 2), 10);\n end += 2;\n }\n }\n\n // update date\n date.setUTCFullYear(year, MM, DD);\n date.setUTCHours(hh, mm, ss, 0);\n\n if(end) {\n // get +/- after end of time\n c = utc.charAt(end);\n if(c === '+' || c === '-') {\n // get hours+minutes offset\n var hhoffset = parseInt(utc.substr(end + 1, 2), 10);\n var mmoffset = parseInt(utc.substr(end + 4, 2), 10);\n\n // calculate offset in milliseconds\n var offset = hhoffset * 60 + mmoffset;\n offset *= 60000;\n\n // apply offset\n if(c === '+') {\n date.setTime(+date - offset);\n } else {\n date.setTime(+date + offset);\n }\n }\n }\n\n return date;\n};\n\n/**\n * Converts a GeneralizedTime value to a date.\n *\n * @param gentime the GeneralizedTime value to convert.\n *\n * @return the date.\n */\nasn1.generalizedTimeToDate = function(gentime) {\n /* The following formats can be used:\n\n YYYYMMDDHHMMSS\n YYYYMMDDHHMMSS.fff\n YYYYMMDDHHMMSSZ\n YYYYMMDDHHMMSS.fffZ\n YYYYMMDDHHMMSS+hh'mm'\n YYYYMMDDHHMMSS.fff+hh'mm'\n YYYYMMDDHHMMSS-hh'mm'\n YYYYMMDDHHMMSS.fff-hh'mm'\n\n Where:\n\n YYYY is the year\n MM is the month (01 to 12)\n DD is the day (01 to 31)\n hh is the hour (00 to 23)\n mm are the minutes (00 to 59)\n ss are the seconds (00 to 59)\n .fff is the second fraction, accurate to three decimal places\n Z indicates that local time is GMT, + indicates that local time is\n later than GMT, and - indicates that local time is earlier than GMT\n hh' is the absolute value of the offset from GMT in hours\n mm' is the absolute value of the offset from GMT in minutes */\n var date = new Date();\n\n var YYYY = parseInt(gentime.substr(0, 4), 10);\n var MM = parseInt(gentime.substr(4, 2), 10) - 1; // use 0-11 for month\n var DD = parseInt(gentime.substr(6, 2), 10);\n var hh = parseInt(gentime.substr(8, 2), 10);\n var mm = parseInt(gentime.substr(10, 2), 10);\n var ss = parseInt(gentime.substr(12, 2), 10);\n var fff = 0;\n var offset = 0;\n var isUTC = false;\n\n if(gentime.charAt(gentime.length - 1) === 'Z') {\n isUTC = true;\n }\n\n var end = gentime.length - 5, c = gentime.charAt(end);\n if(c === '+' || c === '-') {\n // get hours+minutes offset\n var hhoffset = parseInt(gentime.substr(end + 1, 2), 10);\n var mmoffset = parseInt(gentime.substr(end + 4, 2), 10);\n\n // calculate offset in milliseconds\n offset = hhoffset * 60 + mmoffset;\n offset *= 60000;\n\n // apply offset\n if(c === '+') {\n offset *= -1;\n }\n\n isUTC = true;\n }\n\n // check for second fraction\n if(gentime.charAt(14) === '.') {\n fff = parseFloat(gentime.substr(14), 10) * 1000;\n }\n\n if(isUTC) {\n date.setUTCFullYear(YYYY, MM, DD);\n date.setUTCHours(hh, mm, ss, fff);\n\n // apply offset\n date.setTime(+date + offset);\n } else {\n date.setFullYear(YYYY, MM, DD);\n date.setHours(hh, mm, ss, fff);\n }\n\n return date;\n};\n\n/**\n * Converts a date to a UTCTime value.\n *\n * Note: GeneralizedTime has 4 digits for the year and is used for X.509\n * dates past 2049. Converting to a GeneralizedTime hasn't been\n * implemented yet.\n *\n * @param date the date to convert.\n *\n * @return the UTCTime value.\n */\nasn1.dateToUtcTime = function(date) {\n // TODO: validate; currently assumes proper format\n if(typeof date === 'string') {\n return date;\n }\n\n var rval = '';\n\n // create format YYMMDDhhmmssZ\n var format = [];\n format.push(('' + date.getUTCFullYear()).substr(2));\n format.push('' + (date.getUTCMonth() + 1));\n format.push('' + date.getUTCDate());\n format.push('' + date.getUTCHours());\n format.push('' + date.getUTCMinutes());\n format.push('' + date.getUTCSeconds());\n\n // ensure 2 digits are used for each format entry\n for(var i = 0; i < format.length; ++i) {\n if(format[i].length < 2) {\n rval += '0';\n }\n rval += format[i];\n }\n rval += 'Z';\n\n return rval;\n};\n\n/**\n * Converts a date to a GeneralizedTime value.\n *\n * @param date the date to convert.\n *\n * @return the GeneralizedTime value as a string.\n */\nasn1.dateToGeneralizedTime = function(date) {\n // TODO: validate; currently assumes proper format\n if(typeof date === 'string') {\n return date;\n }\n\n var rval = '';\n\n // create format YYYYMMDDHHMMSSZ\n var format = [];\n format.push('' + date.getUTCFullYear());\n format.push('' + (date.getUTCMonth() + 1));\n format.push('' + date.getUTCDate());\n format.push('' + date.getUTCHours());\n format.push('' + date.getUTCMinutes());\n format.push('' + date.getUTCSeconds());\n\n // ensure 2 digits are used for each format entry\n for(var i = 0; i < format.length; ++i) {\n if(format[i].length < 2) {\n rval += '0';\n }\n rval += format[i];\n }\n rval += 'Z';\n\n return rval;\n};\n\n/**\n * Converts a javascript integer to a DER-encoded byte buffer to be used\n * as the value for an INTEGER type.\n *\n * @param x the integer.\n *\n * @return the byte buffer.\n */\nasn1.integerToDer = function(x) {\n var rval = forge.util.createBuffer();\n if(x >= -0x80 && x < 0x80) {\n return rval.putSignedInt(x, 8);\n }\n if(x >= -0x8000 && x < 0x8000) {\n return rval.putSignedInt(x, 16);\n }\n if(x >= -0x800000 && x < 0x800000) {\n return rval.putSignedInt(x, 24);\n }\n if(x >= -0x80000000 && x < 0x80000000) {\n return rval.putSignedInt(x, 32);\n }\n var error = new Error('Integer too large; max is 32-bits.');\n error.integer = x;\n throw error;\n};\n\n/**\n * Converts a DER-encoded byte buffer to a javascript integer. This is\n * typically used to decode the value of an INTEGER type.\n *\n * @param bytes the byte buffer.\n *\n * @return the integer.\n */\nasn1.derToInteger = function(bytes) {\n // wrap in buffer if needed\n if(typeof bytes === 'string') {\n bytes = forge.util.createBuffer(bytes);\n }\n\n var n = bytes.length() * 8;\n if(n > 32) {\n throw new Error('Integer too large; max is 32-bits.');\n }\n return bytes.getSignedInt(n);\n};\n\n/**\n * Validates that the given ASN.1 object is at least a super set of the\n * given ASN.1 structure. Only tag classes and types are checked. An\n * optional map may also be provided to capture ASN.1 values while the\n * structure is checked.\n *\n * To capture an ASN.1 value, set an object in the validator's 'capture'\n * parameter to the key to use in the capture map. To capture the full\n * ASN.1 object, specify 'captureAsn1'. To capture BIT STRING bytes, including\n * the leading unused bits counter byte, specify 'captureBitStringContents'.\n * To capture BIT STRING bytes, without the leading unused bits counter byte,\n * specify 'captureBitStringValue'.\n *\n * Objects in the validator may set a field 'optional' to true to indicate\n * that it isn't necessary to pass validation.\n *\n * @param obj the ASN.1 object to validate.\n * @param v the ASN.1 structure validator.\n * @param capture an optional map to capture values in.\n * @param errors an optional array for storing validation errors.\n *\n * @return true on success, false on failure.\n */\nasn1.validate = function(obj, v, capture, errors) {\n var rval = false;\n\n // ensure tag class and type are the same if specified\n if((obj.tagClass === v.tagClass || typeof(v.tagClass) === 'undefined') &&\n (obj.type === v.type || typeof(v.type) === 'undefined')) {\n // ensure constructed flag is the same if specified\n if(obj.constructed === v.constructed ||\n typeof(v.constructed) === 'undefined') {\n rval = true;\n\n // handle sub values\n if(v.value && forge.util.isArray(v.value)) {\n var j = 0;\n for(var i = 0; rval && i < v.value.length; ++i) {\n rval = v.value[i].optional || false;\n if(obj.value[j]) {\n rval = asn1.validate(obj.value[j], v.value[i], capture, errors);\n if(rval) {\n ++j;\n } else if(v.value[i].optional) {\n rval = true;\n }\n }\n if(!rval && errors) {\n errors.push(\n '[' + v.name + '] ' +\n 'Tag class \"' + v.tagClass + '\", type \"' +\n v.type + '\" expected value length \"' +\n v.value.length + '\", got \"' +\n obj.value.length + '\"');\n }\n }\n }\n\n if(rval && capture) {\n if(v.capture) {\n capture[v.capture] = obj.value;\n }\n if(v.captureAsn1) {\n capture[v.captureAsn1] = obj;\n }\n if(v.captureBitStringContents && 'bitStringContents' in obj) {\n capture[v.captureBitStringContents] = obj.bitStringContents;\n }\n if(v.captureBitStringValue && 'bitStringContents' in obj) {\n var value;\n if(obj.bitStringContents.length < 2) {\n capture[v.captureBitStringValue] = '';\n } else {\n // FIXME: support unused bits with data shifting\n var unused = obj.bitStringContents.charCodeAt(0);\n if(unused !== 0) {\n throw new Error(\n 'captureBitStringValue only supported for zero unused bits');\n }\n capture[v.captureBitStringValue] = obj.bitStringContents.slice(1);\n }\n }\n }\n } else if(errors) {\n errors.push(\n '[' + v.name + '] ' +\n 'Expected constructed \"' + v.constructed + '\", got \"' +\n obj.constructed + '\"');\n }\n } else if(errors) {\n if(obj.tagClass !== v.tagClass) {\n errors.push(\n '[' + v.name + '] ' +\n 'Expected tag class \"' + v.tagClass + '\", got \"' +\n obj.tagClass + '\"');\n }\n if(obj.type !== v.type) {\n errors.push(\n '[' + v.name + '] ' +\n 'Expected type \"' + v.type + '\", got \"' + obj.type + '\"');\n }\n }\n return rval;\n};\n\n// regex for testing for non-latin characters\nvar _nonLatinRegex = /[^\\\\u0000-\\\\u00ff]/;\n\n/**\n * Pretty prints an ASN.1 object to a string.\n *\n * @param obj the object to write out.\n * @param level the level in the tree.\n * @param indentation the indentation to use.\n *\n * @return the string.\n */\nasn1.prettyPrint = function(obj, level, indentation) {\n var rval = '';\n\n // set default level and indentation\n level = level || 0;\n indentation = indentation || 2;\n\n // start new line for deep levels\n if(level > 0) {\n rval += '\\n';\n }\n\n // create indent\n var indent = '';\n for(var i = 0; i < level * indentation; ++i) {\n indent += ' ';\n }\n\n // print class:type\n rval += indent + 'Tag: ';\n switch(obj.tagClass) {\n case asn1.Class.UNIVERSAL:\n rval += 'Universal:';\n break;\n case asn1.Class.APPLICATION:\n rval += 'Application:';\n break;\n case asn1.Class.CONTEXT_SPECIFIC:\n rval += 'Context-Specific:';\n break;\n case asn1.Class.PRIVATE:\n rval += 'Private:';\n break;\n }\n\n if(obj.tagClass === asn1.Class.UNIVERSAL) {\n rval += obj.type;\n\n // known types\n switch(obj.type) {\n case asn1.Type.NONE:\n rval += ' (None)';\n break;\n case asn1.Type.BOOLEAN:\n rval += ' (Boolean)';\n break;\n case asn1.Type.INTEGER:\n rval += ' (Integer)';\n break;\n case asn1.Type.BITSTRING:\n rval += ' (Bit string)';\n break;\n case asn1.Type.OCTETSTRING:\n rval += ' (Octet string)';\n break;\n case asn1.Type.NULL:\n rval += ' (Null)';\n break;\n case asn1.Type.OID:\n rval += ' (Object Identifier)';\n break;\n case asn1.Type.ODESC:\n rval += ' (Object Descriptor)';\n break;\n case asn1.Type.EXTERNAL:\n rval += ' (External or Instance of)';\n break;\n case asn1.Type.REAL:\n rval += ' (Real)';\n break;\n case asn1.Type.ENUMERATED:\n rval += ' (Enumerated)';\n break;\n case asn1.Type.EMBEDDED:\n rval += ' (Embedded PDV)';\n break;\n case asn1.Type.UTF8:\n rval += ' (UTF8)';\n break;\n case asn1.Type.ROID:\n rval += ' (Relative Object Identifier)';\n break;\n case asn1.Type.SEQUENCE:\n rval += ' (Sequence)';\n break;\n case asn1.Type.SET:\n rval += ' (Set)';\n break;\n case asn1.Type.PRINTABLESTRING:\n rval += ' (Printable String)';\n break;\n case asn1.Type.IA5String:\n rval += ' (IA5String (ASCII))';\n break;\n case asn1.Type.UTCTIME:\n rval += ' (UTC time)';\n break;\n case asn1.Type.GENERALIZEDTIME:\n rval += ' (Generalized time)';\n break;\n case asn1.Type.BMPSTRING:\n rval += ' (BMP String)';\n break;\n }\n } else {\n rval += obj.type;\n }\n\n rval += '\\n';\n rval += indent + 'Constructed: ' + obj.constructed + '\\n';\n\n if(obj.composed) {\n var subvalues = 0;\n var sub = '';\n for(var i = 0; i < obj.value.length; ++i) {\n if(obj.value[i] !== undefined) {\n subvalues += 1;\n sub += asn1.prettyPrint(obj.value[i], level + 1, indentation);\n if((i + 1) < obj.value.length) {\n sub += ',';\n }\n }\n }\n rval += indent + 'Sub values: ' + subvalues + sub;\n } else {\n rval += indent + 'Value: ';\n if(obj.type === asn1.Type.OID) {\n var oid = asn1.derToOid(obj.value);\n rval += oid;\n if(forge.pki && forge.pki.oids) {\n if(oid in forge.pki.oids) {\n rval += ' (' + forge.pki.oids[oid] + ') ';\n }\n }\n }\n if(obj.type === asn1.Type.INTEGER) {\n try {\n rval += asn1.derToInteger(obj.value);\n } catch(ex) {\n rval += '0x' + forge.util.bytesToHex(obj.value);\n }\n } else if(obj.type === asn1.Type.BITSTRING) {\n // TODO: shift bits as needed to display without padding\n if(obj.value.length > 1) {\n // remove unused bits field\n rval += '0x' + forge.util.bytesToHex(obj.value.slice(1));\n } else {\n rval += '(none)';\n }\n // show unused bit count\n if(obj.value.length > 0) {\n var unused = obj.value.charCodeAt(0);\n if(unused == 1) {\n rval += ' (1 unused bit shown)';\n } else if(unused > 1) {\n rval += ' (' + unused + ' unused bits shown)';\n }\n }\n } else if(obj.type === asn1.Type.OCTETSTRING) {\n if(!_nonLatinRegex.test(obj.value)) {\n rval += '(' + obj.value + ') ';\n }\n rval += '0x' + forge.util.bytesToHex(obj.value);\n } else if(obj.type === asn1.Type.UTF8) {\n try {\n rval += forge.util.decodeUtf8(obj.value);\n } catch(e) {\n if(e.message === 'URI malformed') {\n rval +=\n '0x' + forge.util.bytesToHex(obj.value) + ' (malformed UTF8)';\n } else {\n throw e;\n }\n }\n } else if(obj.type === asn1.Type.PRINTABLESTRING ||\n obj.type === asn1.Type.IA5String) {\n rval += obj.value;\n } else if(_nonLatinRegex.test(obj.value)) {\n rval += '0x' + forge.util.bytesToHex(obj.value);\n } else if(obj.value.length === 0) {\n rval += '[null]';\n } else {\n rval += obj.value;\n }\n }\n\n return rval;\n};\n","var AWS = require('../core'),\n url = AWS.util.url,\n crypto = AWS.util.crypto.lib,\n base64Encode = AWS.util.base64.encode,\n inherit = AWS.util.inherit;\n\nvar queryEncode = function (string) {\n var replacements = {\n '+': '-',\n '=': '_',\n '/': '~'\n };\n return string.replace(/[\\+=\\/]/g, function (match) {\n return replacements[match];\n });\n};\n\nvar signPolicy = function (policy, privateKey) {\n var sign = crypto.createSign('RSA-SHA1');\n sign.write(policy);\n return queryEncode(sign.sign(privateKey, 'base64'));\n};\n\nvar signWithCannedPolicy = function (url, expires, keyPairId, privateKey) {\n var policy = JSON.stringify({\n Statement: [\n {\n Resource: url,\n Condition: { DateLessThan: { 'AWS:EpochTime': expires } }\n }\n ]\n });\n\n return {\n Expires: expires,\n 'Key-Pair-Id': keyPairId,\n Signature: signPolicy(policy.toString(), privateKey)\n };\n};\n\nvar signWithCustomPolicy = function (policy, keyPairId, privateKey) {\n policy = policy.replace(/\\s/mg, '');\n\n return {\n Policy: queryEncode(base64Encode(policy)),\n 'Key-Pair-Id': keyPairId,\n Signature: signPolicy(policy, privateKey)\n };\n};\n\nvar determineScheme = function (url) {\n var parts = url.split('://');\n if (parts.length < 2) {\n throw new Error('Invalid URL.');\n }\n\n return parts[0].replace('*', '');\n};\n\nvar getRtmpUrl = function (rtmpUrl) {\n var parsed = url.parse(rtmpUrl);\n return parsed.path.replace(/^\\//, '') + (parsed.hash || '');\n};\n\nvar getResource = function (url) {\n switch (determineScheme(url)) {\n case 'http':\n case 'https':\n return url;\n case 'rtmp':\n return getRtmpUrl(url);\n default:\n throw new Error('Invalid URI scheme. Scheme must be one of'\n + ' http, https, or rtmp');\n }\n};\n\nvar handleError = function (err, callback) {\n if (!callback || typeof callback !== 'function') {\n throw err;\n }\n\n callback(err);\n};\n\nvar handleSuccess = function (result, callback) {\n if (!callback || typeof callback !== 'function') {\n return result;\n }\n\n callback(null, result);\n};\n\nAWS.CloudFront.Signer = inherit({\n /**\n * A signer object can be used to generate signed URLs and cookies for granting\n * access to content on restricted CloudFront distributions.\n *\n * @see http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/PrivateContent.html\n *\n * @param keyPairId [String] (Required) The ID of the CloudFront key pair\n * being used.\n * @param privateKey [String] (Required) A private key in RSA format.\n */\n constructor: function Signer(keyPairId, privateKey) {\n if (keyPairId === void 0 || privateKey === void 0) {\n throw new Error('A key pair ID and private key are required');\n }\n\n this.keyPairId = keyPairId;\n this.privateKey = privateKey;\n },\n\n /**\n * Create a signed Amazon CloudFront Cookie.\n *\n * @param options [Object] The options to create a signed cookie.\n * @option options url [String] The URL to which the signature will grant\n * access. Required unless you pass in a full\n * policy.\n * @option options expires [Number] A Unix UTC timestamp indicating when the\n * signature should expire. Required unless you\n * pass in a full policy.\n * @option options policy [String] A CloudFront JSON policy. Required unless\n * you pass in a url and an expiry time.\n *\n * @param cb [Function] if a callback is provided, this function will\n * pass the hash as the second parameter (after the error parameter) to\n * the callback function.\n *\n * @return [Object] if called synchronously (with no callback), returns the\n * signed cookie parameters.\n * @return [null] nothing is returned if a callback is provided.\n */\n getSignedCookie: function (options, cb) {\n var signatureHash = 'policy' in options\n ? signWithCustomPolicy(options.policy, this.keyPairId, this.privateKey)\n : signWithCannedPolicy(options.url, options.expires, this.keyPairId, this.privateKey);\n\n var cookieHash = {};\n for (var key in signatureHash) {\n if (Object.prototype.hasOwnProperty.call(signatureHash, key)) {\n cookieHash['CloudFront-' + key] = signatureHash[key];\n }\n }\n\n return handleSuccess(cookieHash, cb);\n },\n\n /**\n * Create a signed Amazon CloudFront URL.\n *\n * Keep in mind that URLs meant for use in media/flash players may have\n * different requirements for URL formats (e.g. some require that the\n * extension be removed, some require the file name to be prefixed\n * - mp4:, some require you to add \"/cfx/st\" into your URL).\n *\n * @param options [Object] The options to create a signed URL.\n * @option options url [String] The URL to which the signature will grant\n * access. Any query params included with\n * the URL should be encoded. Required.\n * @option options expires [Number] A Unix UTC timestamp indicating when the\n * signature should expire. Required unless you\n * pass in a full policy.\n * @option options policy [String] A CloudFront JSON policy. Required unless\n * you pass in a url and an expiry time.\n *\n * @param cb [Function] if a callback is provided, this function will\n * pass the URL as the second parameter (after the error parameter) to\n * the callback function.\n *\n * @return [String] if called synchronously (with no callback), returns the\n * signed URL.\n * @return [null] nothing is returned if a callback is provided.\n */\n getSignedUrl: function (options, cb) {\n try {\n var resource = getResource(options.url);\n } catch (err) {\n return handleError(err, cb);\n }\n\n var parsedUrl = url.parse(options.url, true),\n signatureHash = Object.prototype.hasOwnProperty.call(options, 'policy')\n ? signWithCustomPolicy(options.policy, this.keyPairId, this.privateKey)\n : signWithCannedPolicy(resource, options.expires, this.keyPairId, this.privateKey);\n\n parsedUrl.search = null;\n for (var key in signatureHash) {\n if (Object.prototype.hasOwnProperty.call(signatureHash, key)) {\n parsedUrl.query[key] = signatureHash[key];\n }\n }\n\n try {\n var signedUrl = determineScheme(options.url) === 'rtmp'\n ? getRtmpUrl(url.format(parsedUrl))\n : url.format(parsedUrl);\n } catch (err) {\n return handleError(err, cb);\n }\n\n return handleSuccess(signedUrl, cb);\n }\n});\n\n/**\n * @api private\n */\nmodule.exports = AWS.CloudFront.Signer;\n","'use strict';\nvar isCallable = require('../internals/is-callable');\nvar definePropertyModule = require('../internals/object-define-property');\nvar makeBuiltIn = require('../internals/make-built-in');\nvar defineGlobalProperty = require('../internals/define-global-property');\n\nmodule.exports = function (O, key, value, options) {\n if (!options) options = {};\n var simple = options.enumerable;\n var name = options.name !== undefined ? options.name : key;\n if (isCallable(value)) makeBuiltIn(value, name, options);\n if (options.global) {\n if (simple) O[key] = value;\n else defineGlobalProperty(key, value);\n } else {\n try {\n if (!options.unsafe) delete O[key];\n else if (O[key]) simple = true;\n } catch (error) { /* empty */ }\n if (simple) O[key] = value;\n else definePropertyModule.f(O, key, {\n value: value,\n enumerable: false,\n configurable: !options.nonConfigurable,\n writable: !options.nonWritable\n });\n } return O;\n};\n","'use strict';\nvar hasOwn = require('../internals/has-own-property');\nvar ownKeys = require('../internals/own-keys');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\n\nmodule.exports = function (target, source, exceptions) {\n var keys = ownKeys(source);\n var defineProperty = definePropertyModule.f;\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n if (!hasOwn(target, key) && !(exceptions && hasOwn(exceptions, key))) {\n defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n }\n }\n};\n","'use strict';\n\n// Note: we can't get significant speed boost here.\n// So write code to minimize size - no pregenerated tables\n// and array tools dependencies.\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n// Use ordinary array, since untyped makes no boost here\nconst makeTable = () => {\n let c, table = [];\n\n for (var n = 0; n < 256; n++) {\n c = n;\n for (var k = 0; k < 8; k++) {\n c = ((c & 1) ? (0xEDB88320 ^ (c >>> 1)) : (c >>> 1));\n }\n table[n] = c;\n }\n\n return table;\n};\n\n// Create table on load. Just 255 signed longs. Not a problem.\nconst crcTable = new Uint32Array(makeTable());\n\n\nconst crc32 = (crc, buf, len, pos) => {\n const t = crcTable;\n const end = pos + len;\n\n crc ^= -1;\n\n for (let i = pos; i < end; i++) {\n crc = (crc >>> 8) ^ t[(crc ^ buf[i]) & 0xFF];\n }\n\n return (crc ^ (-1)); // >>> 0;\n};\n\n\nmodule.exports = crc32;\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\n/* eslint @typescript-eslint/no-explicit-any: 0 */\nexport default class DataMessage {\n /**\n * Monotonically increasing server ingest time\n */\n readonly timestampMs: number;\n\n /**\n * Topic this message was sent on\n */\n readonly topic: string;\n\n /**\n * Data payload\n */\n readonly data: Uint8Array;\n\n /**\n * Sender attendee\n */\n readonly senderAttendeeId: string;\n\n /**\n * Sender attendee external user Id\n */\n readonly senderExternalUserId: string;\n\n /**\n * true if server throttled or rejected message\n * false if server has posted the message to its recipients\n * Throttling soft limit: Rate: 100, Burst:200\n * Throttling hard limit: Rate: 100 * 5, Burst: 200 * 50 (i.e Rate: 500, Burst: 10000)\n */\n readonly throttled: boolean;\n\n constructor(\n timestampMs: number,\n topic: string,\n data: Uint8Array,\n senderAttendeeId: string,\n senderExternalUserId: string,\n throttled?: boolean | null\n ) {\n this.timestampMs = timestampMs;\n this.topic = topic;\n this.data = data;\n this.senderAttendeeId = senderAttendeeId;\n this.senderExternalUserId = senderExternalUserId;\n this.throttled = !!throttled;\n }\n\n /**\n * Helper conversion methods to convert {@link Uint8Array} data to string\n */\n text(): string {\n return new TextDecoder().decode(this.data);\n }\n\n /**\n * Helper conversion methods to convert {@link Uint8Array} data to JSON\n */\n json(): any {\n return JSON.parse(new TextDecoder().decode(this.data));\n }\n}\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar toString = uncurryThis({}.toString);\nvar stringSlice = uncurryThis(''.slice);\n\nmodule.exports = function (it) {\n return stringSlice(toString(it), 8, -1);\n};\n","'use strict';\n\nvar bind = require('function-bind');\n\nvar $apply = require('./functionApply');\nvar $call = require('./functionCall');\nvar $reflectApply = require('./reflectApply');\n\n/** @type {import('./actualApply')} */\nmodule.exports = $reflectApply || bind.call($call, $apply);\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { AGCOptions, VoiceFocusAudioWorkletNode } from '../../libs/voicefocus/types';\nimport { NodeArguments, VoiceFocus } from '../../libs/voicefocus/voicefocus';\nimport AudioMixObserver from '../audiomixobserver/AudioMixObserver';\nimport AudioVideoFacade from '../audiovideofacade/AudioVideoFacade';\nimport DefaultBrowserBehavior from '../browserbehavior/DefaultBrowserBehavior';\nimport AudioNodeSubgraph from '../devicecontroller/AudioNodeSubgraph';\nimport type AudioTransformDevice from '../devicecontroller/AudioTransformDevice';\nimport type Device from '../devicecontroller/Device';\nimport VoiceFocusTransformDeviceDelegate from './VoiceFocusTransformDeviceDelegate';\nimport VoiceFocusTransformDeviceObserver from './VoiceFocusTransformDeviceObserver';\n\n/**\n * A device that augments a {@link Device} to apply Amazon Voice Focus\n * noise suppression to an audio input.\n */\nclass VoiceFocusTransformDevice implements AudioTransformDevice, AudioMixObserver {\n /** @internal */\n constructor(\n private device: Device,\n private voiceFocus: VoiceFocus,\n private delegate: VoiceFocusTransformDeviceDelegate,\n private nodeOptions: NodeArguments,\n private failed: boolean = false,\n private node: VoiceFocusAudioWorkletNode | undefined = undefined,\n private browserBehavior: DefaultBrowserBehavior = new DefaultBrowserBehavior(),\n\n /** farEndStreams` maps from a stream that could cause echo or interfere with double talkto an `AudioSourceNode` that we use to mix multiple such streams.*/\n private farEndStreamToAudioSourceNode: Map<\n MediaStream,\n MediaStreamAudioSourceNode | null\n > = new Map(),\n\n /** mixDestNode is the Audio Destination Node where farEndStreams got mixed into one stream.*/\n private mixDestNode: MediaStreamAudioDestinationNode | undefined = undefined,\n\n /** mixSourceNode is the Audio Source Node where the stream out of mixDestNode got transferred into Audio Worklet Node for processing.*/\n private mixSourceNode: MediaStreamAudioSourceNode | undefined = undefined\n ) {}\n\n /**\n * Return the inner device as provided during construction, or updated via\n * {@link VoiceFocusTransformDevice.chooseNewInnerDevice}. Do not confuse\n * this method with {@link VoiceFocusTransformDevice.intrinsicDevice}.\n */\n getInnerDevice(): Device {\n return this.device;\n }\n\n /**\n * Disable the audio node while muted to reduce CPU usage.\n *\n * @param muted whether the audio device should be muted.\n */\n async mute(muted: boolean): Promise {\n if (!this.node) {\n return;\n }\n if (muted) {\n await this.node.disable();\n } else {\n await this.node.enable();\n }\n }\n\n /**\n * Dispose of the inner workings of the transform device. After this method is called\n * you will need to create a new device to use Amazon Voice Focus again.\n */\n async stop(): Promise {\n if (!this.node) {\n return;\n }\n this.node.disconnect();\n await this.node.stop();\n }\n\n /**\n * If you wish to choose a different inner device, but continue to use Amazon Voice Focus, you\n * can use this method to efficiently create a new device that will reuse\n * the same internal state. Only one of the two devices can be used at a time: switch\n * between them using {@link DeviceController.startAudioInput}.\n *\n * If the same device is passed as is currently in use, `this` is returned.\n *\n * @param inner The new inner device to use.\n */\n async chooseNewInnerDevice(inner: Device): Promise {\n // If the new device is 'default', always recreate. Chrome can switch out\n // the real device underneath us.\n if (this.device === inner && !isDefaultDevice(inner)) {\n return this;\n }\n\n return new VoiceFocusTransformDevice(\n inner,\n this.voiceFocus,\n this.delegate,\n this.nodeOptions,\n this.failed,\n this.node,\n this.browserBehavior,\n this.farEndStreamToAudioSourceNode,\n this.mixDestNode,\n this.mixSourceNode\n );\n }\n\n async intrinsicDevice(): Promise {\n if (this.failed) {\n return this.device;\n }\n const isUsingES = this.nodeOptions.es;\n\n // Turn the Device into constraints with appropriate AGC settings.\n const trackConstraints: MediaTrackConstraints = {\n echoCancellation: !isUsingES,\n // @ts-ignore\n googEchoCancellation: !isUsingES,\n // @ts-ignore\n googEchoCancellation2: !isUsingES,\n\n noiseSuppression: false,\n\n // @ts-ignore\n googNoiseSuppression: false,\n // @ts-ignore\n googHighpassFilter: false,\n // @ts-ignore\n googNoiseSuppression2: false,\n };\n\n let useBuiltInAGC;\n if (this.nodeOptions && this.nodeOptions.agc !== undefined) {\n useBuiltInAGC = this.nodeOptions.agc.useBuiltInAGC;\n } else {\n useBuiltInAGC = true;\n }\n\n trackConstraints.autoGainControl = useBuiltInAGC;\n // @ts-ignore\n trackConstraints.googAutoGainControl = useBuiltInAGC;\n // @ts-ignore\n trackConstraints.googAutoGainControl2 = useBuiltInAGC;\n\n // Empty string and null.\n if (!this.device) {\n return trackConstraints;\n }\n\n // Device ID.\n if (typeof this.device === 'string') {\n /* istanbul ignore if */\n if (this.browserBehavior.requiresNoExactMediaStreamConstraints()) {\n trackConstraints.deviceId = this.device;\n } else {\n trackConstraints.deviceId = { exact: this.device };\n }\n return trackConstraints;\n }\n\n // It's a stream.\n if ((this.device as MediaStream).id) {\n // Nothing we can do.\n return this.device;\n }\n\n // It's constraints.\n return {\n ...this.device,\n ...trackConstraints,\n };\n }\n\n async createAudioNode(context: AudioContext): Promise {\n if (this.node?.context === context) {\n return {\n start: this.node,\n end: this.node,\n };\n }\n\n const agc: AGCOptions = { useVoiceFocusAGC: false };\n const options = {\n enabled: true,\n agc,\n ...this.nodeOptions,\n };\n\n try {\n this.node?.disconnect();\n this.node = await this.voiceFocus.createNode(context, options);\n if (this.nodeOptions.es) {\n this.mixDestNode = new MediaStreamAudioDestinationNode(context, {\n channelCount: 1,\n channelCountMode: 'explicit',\n });\n for (const stream of this.farEndStreamToAudioSourceNode.keys()) {\n this.assignFarEndStreamToAudioSourceNode(stream);\n }\n this.createMixSourceNode();\n }\n const start = this.node;\n const end = this.node;\n return { start, end };\n } catch (e) {\n // It's better to return some audio stream than nothing.\n this.failed = true;\n this.delegate.onFallback(this, e);\n throw e;\n }\n }\n\n async observeMeetingAudio(audioVideo: AudioVideoFacade): Promise {\n if (!this.nodeOptions.es) {\n return;\n }\n audioVideo.addAudioMixObserver(this);\n const stream = await audioVideo.getCurrentMeetingAudioStream();\n if (stream) {\n this.addFarEndStream(stream);\n }\n }\n\n async unObserveMeetingAudio(audioVideo: AudioVideoFacade): Promise {\n if (!this.nodeOptions.es) {\n return;\n }\n audioVideo.removeAudioMixObserver(this);\n const stream = await audioVideo.getCurrentMeetingAudioStream();\n if (stream) {\n this.removeFarendStream(stream);\n }\n }\n\n /**\n * Add an observer to receive notifications about Amazon Voice Focus lifecycle events.\n * See {@link VoiceFocusTransformDeviceObserver} for details.\n * If the observer has already been added, this method call has no effect.\n */\n addObserver(observer: VoiceFocusTransformDeviceObserver): void {\n this.delegate.addObserver(observer);\n }\n\n /**\n * Remove an existing observer. If the observer has not been previously {@link\n * VoiceFocusTransformDevice.addObserver|added}, this method call has no effect.\n */\n removeObserver(observer: VoiceFocusTransformDeviceObserver): void {\n this.delegate.removeObserver(observer);\n }\n\n async addFarEndStream(activeStream: MediaStream | null): Promise {\n if (\n !this.nodeOptions.es ||\n !activeStream ||\n this.farEndStreamToAudioSourceNode.has(activeStream)\n ) {\n return;\n }\n if (this.node) {\n this.assignFarEndStreamToAudioSourceNode(activeStream);\n } else {\n this.farEndStreamToAudioSourceNode.set(activeStream, null);\n }\n }\n\n async removeFarendStream(inactiveStream: MediaStream): Promise {\n this.farEndStreamToAudioSourceNode.get(inactiveStream)?.disconnect();\n this.farEndStreamToAudioSourceNode.delete(inactiveStream);\n }\n\n async meetingAudioStreamBecameActive(activeStream: MediaStream | null): Promise {\n this.addFarEndStream(activeStream);\n }\n\n async meetingAudioStreamBecameInactive(inactiveStream: MediaStream): Promise {\n this.removeFarendStream(inactiveStream);\n }\n\n private assignFarEndStreamToAudioSourceNode(streamToAdd: MediaStream): void {\n const streamNodeToAdd = (this.node.context as AudioContext).createMediaStreamSource(\n streamToAdd\n );\n streamNodeToAdd.channelCount = 1;\n streamNodeToAdd.channelCountMode = 'explicit';\n this.farEndStreamToAudioSourceNode.set(streamToAdd, streamNodeToAdd);\n streamNodeToAdd.connect(this.mixDestNode, 0);\n }\n\n private createMixSourceNode(): void {\n this.mixSourceNode = (this.node.context as AudioContext).createMediaStreamSource(\n this.mixDestNode.stream\n );\n this.mixSourceNode.channelCount = 1;\n this.mixSourceNode.channelCountMode = 'explicit';\n this.mixSourceNode.connect(this.node, 0, 1);\n }\n}\n\nfunction isDefaultDevice(device: Device): boolean {\n if (device === 'default') {\n return true;\n }\n if (!device || typeof device !== 'object') {\n return false;\n }\n if ('deviceId' in device && device.deviceId === 'default') {\n return true;\n }\n if ('id' in device && device.id === 'default') {\n return true;\n }\n return false;\n}\n\nexport default VoiceFocusTransformDevice;\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"v1\", {\n enumerable: true,\n get: function () {\n return _v.default;\n }\n});\nObject.defineProperty(exports, \"v3\", {\n enumerable: true,\n get: function () {\n return _v2.default;\n }\n});\nObject.defineProperty(exports, \"v4\", {\n enumerable: true,\n get: function () {\n return _v3.default;\n }\n});\nObject.defineProperty(exports, \"v5\", {\n enumerable: true,\n get: function () {\n return _v4.default;\n }\n});\n\nvar _v = _interopRequireDefault(require(\"./v1.js\"));\n\nvar _v2 = _interopRequireDefault(require(\"./v3.js\"));\n\nvar _v3 = _interopRequireDefault(require(\"./v4.js\"));\n\nvar _v4 = _interopRequireDefault(require(\"./v5.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }","\"use strict\";\nmodule.exports = LongBits;\n\nvar util = require(\"../util/minimal\");\n\n/**\n * Constructs new long bits.\n * @classdesc Helper class for working with the low and high bits of a 64 bit value.\n * @memberof util\n * @constructor\n * @param {number} lo Low 32 bits, unsigned\n * @param {number} hi High 32 bits, unsigned\n */\nfunction LongBits(lo, hi) {\n\n // note that the casts below are theoretically unnecessary as of today, but older statically\n // generated converter code might still call the ctor with signed 32bits. kept for compat.\n\n /**\n * Low bits.\n * @type {number}\n */\n this.lo = lo >>> 0;\n\n /**\n * High bits.\n * @type {number}\n */\n this.hi = hi >>> 0;\n}\n\n/**\n * Zero bits.\n * @memberof util.LongBits\n * @type {util.LongBits}\n */\nvar zero = LongBits.zero = new LongBits(0, 0);\n\nzero.toNumber = function() { return 0; };\nzero.zzEncode = zero.zzDecode = function() { return this; };\nzero.length = function() { return 1; };\n\n/**\n * Zero hash.\n * @memberof util.LongBits\n * @type {string}\n */\nvar zeroHash = LongBits.zeroHash = \"\\0\\0\\0\\0\\0\\0\\0\\0\";\n\n/**\n * Constructs new long bits from the specified number.\n * @param {number} value Value\n * @returns {util.LongBits} Instance\n */\nLongBits.fromNumber = function fromNumber(value) {\n if (value === 0)\n return zero;\n var sign = value < 0;\n if (sign)\n value = -value;\n var lo = value >>> 0,\n hi = (value - lo) / 4294967296 >>> 0;\n if (sign) {\n hi = ~hi >>> 0;\n lo = ~lo >>> 0;\n if (++lo > 4294967295) {\n lo = 0;\n if (++hi > 4294967295)\n hi = 0;\n }\n }\n return new LongBits(lo, hi);\n};\n\n/**\n * Constructs new long bits from a number, long or string.\n * @param {Long|number|string} value Value\n * @returns {util.LongBits} Instance\n */\nLongBits.from = function from(value) {\n if (typeof value === \"number\")\n return LongBits.fromNumber(value);\n if (util.isString(value)) {\n /* istanbul ignore else */\n if (util.Long)\n value = util.Long.fromString(value);\n else\n return LongBits.fromNumber(parseInt(value, 10));\n }\n return value.low || value.high ? new LongBits(value.low >>> 0, value.high >>> 0) : zero;\n};\n\n/**\n * Converts this long bits to a possibly unsafe JavaScript number.\n * @param {boolean} [unsigned=false] Whether unsigned or not\n * @returns {number} Possibly unsafe number\n */\nLongBits.prototype.toNumber = function toNumber(unsigned) {\n if (!unsigned && this.hi >>> 31) {\n var lo = ~this.lo + 1 >>> 0,\n hi = ~this.hi >>> 0;\n if (!lo)\n hi = hi + 1 >>> 0;\n return -(lo + hi * 4294967296);\n }\n return this.lo + this.hi * 4294967296;\n};\n\n/**\n * Converts this long bits to a long.\n * @param {boolean} [unsigned=false] Whether unsigned or not\n * @returns {Long} Long\n */\nLongBits.prototype.toLong = function toLong(unsigned) {\n return util.Long\n ? new util.Long(this.lo | 0, this.hi | 0, Boolean(unsigned))\n /* istanbul ignore next */\n : { low: this.lo | 0, high: this.hi | 0, unsigned: Boolean(unsigned) };\n};\n\nvar charCodeAt = String.prototype.charCodeAt;\n\n/**\n * Constructs new long bits from the specified 8 characters long hash.\n * @param {string} hash Hash\n * @returns {util.LongBits} Bits\n */\nLongBits.fromHash = function fromHash(hash) {\n if (hash === zeroHash)\n return zero;\n return new LongBits(\n ( charCodeAt.call(hash, 0)\n | charCodeAt.call(hash, 1) << 8\n | charCodeAt.call(hash, 2) << 16\n | charCodeAt.call(hash, 3) << 24) >>> 0\n ,\n ( charCodeAt.call(hash, 4)\n | charCodeAt.call(hash, 5) << 8\n | charCodeAt.call(hash, 6) << 16\n | charCodeAt.call(hash, 7) << 24) >>> 0\n );\n};\n\n/**\n * Converts this long bits to a 8 characters long hash.\n * @returns {string} Hash\n */\nLongBits.prototype.toHash = function toHash() {\n return String.fromCharCode(\n this.lo & 255,\n this.lo >>> 8 & 255,\n this.lo >>> 16 & 255,\n this.lo >>> 24 ,\n this.hi & 255,\n this.hi >>> 8 & 255,\n this.hi >>> 16 & 255,\n this.hi >>> 24\n );\n};\n\n/**\n * Zig-zag encodes this long bits.\n * @returns {util.LongBits} `this`\n */\nLongBits.prototype.zzEncode = function zzEncode() {\n var mask = this.hi >> 31;\n this.hi = ((this.hi << 1 | this.lo >>> 31) ^ mask) >>> 0;\n this.lo = ( this.lo << 1 ^ mask) >>> 0;\n return this;\n};\n\n/**\n * Zig-zag decodes this long bits.\n * @returns {util.LongBits} `this`\n */\nLongBits.prototype.zzDecode = function zzDecode() {\n var mask = -(this.lo & 1);\n this.lo = ((this.lo >>> 1 | this.hi << 31) ^ mask) >>> 0;\n this.hi = ( this.hi >>> 1 ^ mask) >>> 0;\n return this;\n};\n\n/**\n * Calculates the length of this longbits when encoded as a varint.\n * @returns {number} Length\n */\nLongBits.prototype.length = function length() {\n var part0 = this.lo,\n part1 = (this.lo >>> 28 | this.hi << 4) >>> 0,\n part2 = this.hi >>> 24;\n return part2 === 0\n ? part1 === 0\n ? part0 < 16384\n ? part0 < 128 ? 1 : 2\n : part0 < 2097152 ? 3 : 4\n : part1 < 16384\n ? part1 < 128 ? 5 : 6\n : part1 < 2097152 ? 7 : 8\n : part2 < 128 ? 9 : 10;\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\n/**\n * [[SessionStateControllerState]] reflects the current connection state of the session.\n */\nexport enum SessionStateControllerState {\n NotConnected,\n Connecting,\n Connected,\n Updating,\n Disconnecting,\n}\n\nexport default SessionStateControllerState;\n","'use strict';\n// IE8- don't enum bug keys\nmodule.exports = [\n 'constructor',\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'toLocaleString',\n 'toString',\n 'valueOf'\n];\n","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar toSetLike = require('../internals/to-set-like');\nvar $isSupersetOf = require('../internals/set-is-superset-of');\n\n// `Set.prototype.isSupersetOf` method\n// https://github.com/tc39/proposal-set-methods\n// TODO: Obsolete version, remove from `core-js@4`\n$({ target: 'Set', proto: true, real: true, forced: true }, {\n isSupersetOf: function isSupersetOf(other) {\n return call($isSupersetOf, this, toSetLike(other));\n }\n});\n","var AWS = require('../core');\nvar byteLength = AWS.util.string.byteLength;\nvar Buffer = AWS.util.Buffer;\n\n/**\n * The managed uploader allows for easy and efficient uploading of buffers,\n * blobs, or streams, using a configurable amount of concurrency to perform\n * multipart uploads where possible. This abstraction also enables uploading\n * streams of unknown size due to the use of multipart uploads.\n *\n * To construct a managed upload object, see the {constructor} function.\n *\n * ## Tracking upload progress\n *\n * The managed upload object can also track progress by attaching an\n * 'httpUploadProgress' listener to the upload manager. This event is similar\n * to {AWS.Request~httpUploadProgress} but groups all concurrent upload progress\n * into a single event. See {AWS.S3.ManagedUpload~httpUploadProgress} for more\n * information.\n *\n * ## Handling Multipart Cleanup\n *\n * By default, this class will automatically clean up any multipart uploads\n * when an individual part upload fails. This behavior can be disabled in order\n * to manually handle failures by setting the `leavePartsOnError` configuration\n * option to `true` when initializing the upload object.\n *\n * @!event httpUploadProgress(progress)\n * Triggered when the uploader has uploaded more data.\n * @note The `total` property may not be set if the stream being uploaded has\n * not yet finished chunking. In this case the `total` will be undefined\n * until the total stream size is known.\n * @note This event will not be emitted in Node.js 0.8.x.\n * @param progress [map] An object containing the `loaded` and `total` bytes\n * of the request and the `key` of the S3 object. Note that `total` may be undefined until the payload\n * size is known.\n * @context (see AWS.Request~send)\n */\nAWS.S3.ManagedUpload = AWS.util.inherit({\n /**\n * Creates a managed upload object with a set of configuration options.\n *\n * @note A \"Body\" parameter is required to be set prior to calling {send}.\n * @note In Node.js, sending \"Body\" as {https://nodejs.org/dist/latest/docs/api/stream.html#stream_object_mode object-mode stream}\n * may result in upload hangs. Using buffer stream is preferable.\n * @option options params [map] a map of parameters to pass to the upload\n * requests. The \"Body\" parameter is required to be specified either on\n * the service or in the params option.\n * @note ContentMD5 should not be provided when using the managed upload object.\n * Instead, setting \"computeChecksums\" to true will enable automatic ContentMD5 generation\n * by the managed upload object.\n * @option options queueSize [Number] (4) the size of the concurrent queue\n * manager to upload parts in parallel. Set to 1 for synchronous uploading\n * of parts. Note that the uploader will buffer at most queueSize * partSize\n * bytes into memory at any given time.\n * @option options partSize [Number] (5mb) the size in bytes for each\n * individual part to be uploaded. Adjust the part size to ensure the number\n * of parts does not exceed {maxTotalParts}. See {minPartSize} for the\n * minimum allowed part size.\n * @option options leavePartsOnError [Boolean] (false) whether to abort the\n * multipart upload if an error occurs. Set to true if you want to handle\n * failures manually.\n * @option options service [AWS.S3] an optional S3 service object to use for\n * requests. This object might have bound parameters used by the uploader.\n * @option options tags [Array] The tags to apply to the uploaded object.\n * Each tag should have a `Key` and `Value` keys.\n * @example Creating a default uploader for a stream object\n * var upload = new AWS.S3.ManagedUpload({\n * params: {Bucket: 'bucket', Key: 'key', Body: stream}\n * });\n * @example Creating an uploader with concurrency of 1 and partSize of 10mb\n * var upload = new AWS.S3.ManagedUpload({\n * partSize: 10 * 1024 * 1024, queueSize: 1,\n * params: {Bucket: 'bucket', Key: 'key', Body: stream}\n * });\n * @example Creating an uploader with tags\n * var upload = new AWS.S3.ManagedUpload({\n * params: {Bucket: 'bucket', Key: 'key', Body: stream},\n * tags: [{Key: 'tag1', Value: 'value1'}, {Key: 'tag2', Value: 'value2'}]\n * });\n * @see send\n */\n constructor: function ManagedUpload(options) {\n var self = this;\n AWS.SequentialExecutor.call(self);\n self.body = null;\n self.sliceFn = null;\n self.callback = null;\n self.parts = {};\n self.completeInfo = [];\n self.fillQueue = function() {\n self.callback(new Error('Unsupported body payload ' + typeof self.body));\n };\n\n self.configure(options);\n },\n\n /**\n * @api private\n */\n configure: function configure(options) {\n options = options || {};\n this.partSize = this.minPartSize;\n\n if (options.queueSize) this.queueSize = options.queueSize;\n if (options.partSize) this.partSize = options.partSize;\n if (options.leavePartsOnError) this.leavePartsOnError = true;\n if (options.tags) {\n if (!Array.isArray(options.tags)) {\n throw new Error('Tags must be specified as an array; ' +\n typeof options.tags + ' provided.');\n }\n this.tags = options.tags;\n }\n\n if (this.partSize < this.minPartSize) {\n throw new Error('partSize must be greater than ' +\n this.minPartSize);\n }\n\n this.service = options.service;\n this.bindServiceObject(options.params);\n this.validateBody();\n this.adjustTotalBytes();\n },\n\n /**\n * @api private\n */\n leavePartsOnError: false,\n\n /**\n * @api private\n */\n queueSize: 4,\n\n /**\n * @api private\n */\n partSize: null,\n\n /**\n * @readonly\n * @return [Number] the minimum number of bytes for an individual part\n * upload.\n */\n minPartSize: 1024 * 1024 * 5,\n\n /**\n * @readonly\n * @return [Number] the maximum allowed number of parts in a multipart upload.\n */\n maxTotalParts: 10000,\n\n /**\n * Initiates the managed upload for the payload.\n *\n * @callback callback function(err, data)\n * @param err [Error] an error or null if no error occurred.\n * @param data [map] The response data from the successful upload:\n * * `Location` (String) the URL of the uploaded object\n * * `ETag` (String) the ETag of the uploaded object\n * * `Bucket` (String) the bucket to which the object was uploaded\n * * `Key` (String) the key to which the object was uploaded\n * @example Sending a managed upload object\n * var params = {Bucket: 'bucket', Key: 'key', Body: stream};\n * var upload = new AWS.S3.ManagedUpload({params: params});\n * upload.send(function(err, data) {\n * console.log(err, data);\n * });\n */\n send: function(callback) {\n var self = this;\n self.failed = false;\n self.callback = callback || function(err) { if (err) throw err; };\n\n var runFill = true;\n if (self.sliceFn) {\n self.fillQueue = self.fillBuffer;\n } else if (AWS.util.isNode()) {\n var Stream = AWS.util.stream.Stream;\n if (self.body instanceof Stream) {\n runFill = false;\n self.fillQueue = self.fillStream;\n self.partBuffers = [];\n self.body.\n on('error', function(err) { self.cleanup(err); }).\n on('readable', function() { self.fillQueue(); }).\n on('end', function() {\n self.isDoneChunking = true;\n self.numParts = self.totalPartNumbers;\n self.fillQueue.call(self);\n\n if (self.isDoneChunking && self.totalPartNumbers >= 1 && self.doneParts === self.numParts) {\n self.finishMultiPart();\n }\n });\n }\n }\n\n if (runFill) self.fillQueue.call(self);\n },\n\n /**\n * @!method promise()\n * Returns a 'thenable' promise.\n *\n * Two callbacks can be provided to the `then` method on the returned promise.\n * The first callback will be called if the promise is fulfilled, and the second\n * callback will be called if the promise is rejected.\n * @callback fulfilledCallback function(data)\n * Called if the promise is fulfilled.\n * @param data [map] The response data from the successful upload:\n * `Location` (String) the URL of the uploaded object\n * `ETag` (String) the ETag of the uploaded object\n * `Bucket` (String) the bucket to which the object was uploaded\n * `Key` (String) the key to which the object was uploaded\n * @callback rejectedCallback function(err)\n * Called if the promise is rejected.\n * @param err [Error] an error or null if no error occurred.\n * @return [Promise] A promise that represents the state of the upload request.\n * @example Sending an upload request using promises.\n * var upload = s3.upload({Bucket: 'bucket', Key: 'key', Body: stream});\n * var promise = upload.promise();\n * promise.then(function(data) { ... }, function(err) { ... });\n */\n\n /**\n * Aborts a managed upload, including all concurrent upload requests.\n * @note By default, calling this function will cleanup a multipart upload\n * if one was created. To leave the multipart upload around after aborting\n * a request, configure `leavePartsOnError` to `true` in the {constructor}.\n * @note Calling {abort} in the browser environment will not abort any requests\n * that are already in flight. If a multipart upload was created, any parts\n * not yet uploaded will not be sent, and the multipart upload will be cleaned up.\n * @example Aborting an upload\n * var params = {\n * Bucket: 'bucket', Key: 'key',\n * Body: Buffer.alloc(1024 * 1024 * 25) // 25MB payload\n * };\n * var upload = s3.upload(params);\n * upload.send(function (err, data) {\n * if (err) console.log(\"Error:\", err.code, err.message);\n * else console.log(data);\n * });\n *\n * // abort request in 1 second\n * setTimeout(upload.abort.bind(upload), 1000);\n */\n abort: function() {\n var self = this;\n //abort putObject request\n if (self.isDoneChunking === true && self.totalPartNumbers === 1 && self.singlePart) {\n self.singlePart.abort();\n } else {\n self.cleanup(AWS.util.error(new Error('Request aborted by user'), {\n code: 'RequestAbortedError', retryable: false\n }));\n }\n },\n\n /**\n * @api private\n */\n validateBody: function validateBody() {\n var self = this;\n self.body = self.service.config.params.Body;\n if (typeof self.body === 'string') {\n self.body = AWS.util.buffer.toBuffer(self.body);\n } else if (!self.body) {\n throw new Error('params.Body is required');\n }\n self.sliceFn = AWS.util.arraySliceFn(self.body);\n },\n\n /**\n * @api private\n */\n bindServiceObject: function bindServiceObject(params) {\n params = params || {};\n var self = this;\n // bind parameters to new service object\n if (!self.service) {\n self.service = new AWS.S3({params: params});\n } else {\n // Create a new S3 client from the supplied client's constructor.\n var service = self.service;\n var config = AWS.util.copy(service.config);\n config.signatureVersion = service.getSignatureVersion();\n self.service = new service.constructor.__super__(config);\n self.service.config.params =\n AWS.util.merge(self.service.config.params || {}, params);\n Object.defineProperty(self.service, '_originalConfig', {\n get: function() { return service._originalConfig; },\n enumerable: false,\n configurable: true\n });\n }\n },\n\n /**\n * @api private\n */\n adjustTotalBytes: function adjustTotalBytes() {\n var self = this;\n try { // try to get totalBytes\n self.totalBytes = byteLength(self.body);\n } catch (e) { }\n\n // try to adjust partSize if we know payload length\n if (self.totalBytes) {\n var newPartSize = Math.ceil(self.totalBytes / self.maxTotalParts);\n if (newPartSize > self.partSize) self.partSize = newPartSize;\n } else {\n self.totalBytes = undefined;\n }\n },\n\n /**\n * @api private\n */\n isDoneChunking: false,\n\n /**\n * @api private\n */\n partPos: 0,\n\n /**\n * @api private\n */\n totalChunkedBytes: 0,\n\n /**\n * @api private\n */\n totalUploadedBytes: 0,\n\n /**\n * @api private\n */\n totalBytes: undefined,\n\n /**\n * @api private\n */\n numParts: 0,\n\n /**\n * @api private\n */\n totalPartNumbers: 0,\n\n /**\n * @api private\n */\n activeParts: 0,\n\n /**\n * @api private\n */\n doneParts: 0,\n\n /**\n * @api private\n */\n parts: null,\n\n /**\n * @api private\n */\n completeInfo: null,\n\n /**\n * @api private\n */\n failed: false,\n\n /**\n * @api private\n */\n multipartReq: null,\n\n /**\n * @api private\n */\n partBuffers: null,\n\n /**\n * @api private\n */\n partBufferLength: 0,\n\n /**\n * @api private\n */\n fillBuffer: function fillBuffer() {\n var self = this;\n var bodyLen = byteLength(self.body);\n\n if (bodyLen === 0) {\n self.isDoneChunking = true;\n self.numParts = 1;\n self.nextChunk(self.body);\n return;\n }\n\n while (self.activeParts < self.queueSize && self.partPos < bodyLen) {\n var endPos = Math.min(self.partPos + self.partSize, bodyLen);\n var buf = self.sliceFn.call(self.body, self.partPos, endPos);\n self.partPos += self.partSize;\n\n if (byteLength(buf) < self.partSize || self.partPos === bodyLen) {\n self.isDoneChunking = true;\n self.numParts = self.totalPartNumbers + 1;\n }\n self.nextChunk(buf);\n }\n },\n\n /**\n * @api private\n */\n fillStream: function fillStream() {\n var self = this;\n if (self.activeParts >= self.queueSize) return;\n\n var buf = self.body.read(self.partSize - self.partBufferLength) ||\n self.body.read();\n if (buf) {\n self.partBuffers.push(buf);\n self.partBufferLength += buf.length;\n self.totalChunkedBytes += buf.length;\n }\n\n if (self.partBufferLength >= self.partSize) {\n // if we have single buffer we avoid copyfull concat\n var pbuf = self.partBuffers.length === 1 ?\n self.partBuffers[0] : Buffer.concat(self.partBuffers);\n self.partBuffers = [];\n self.partBufferLength = 0;\n\n // if we have more than partSize, push the rest back on the queue\n if (pbuf.length > self.partSize) {\n var rest = pbuf.slice(self.partSize);\n self.partBuffers.push(rest);\n self.partBufferLength += rest.length;\n pbuf = pbuf.slice(0, self.partSize);\n }\n\n self.nextChunk(pbuf);\n }\n\n if (self.isDoneChunking && !self.isDoneSending) {\n // if we have single buffer we avoid copyfull concat\n pbuf = self.partBuffers.length === 1 ?\n self.partBuffers[0] : Buffer.concat(self.partBuffers);\n self.partBuffers = [];\n self.partBufferLength = 0;\n self.totalBytes = self.totalChunkedBytes;\n self.isDoneSending = true;\n\n if (self.numParts === 0 || pbuf.length > 0) {\n self.numParts++;\n self.nextChunk(pbuf);\n }\n }\n\n self.body.read(0);\n },\n\n /**\n * @api private\n */\n nextChunk: function nextChunk(chunk) {\n var self = this;\n if (self.failed) return null;\n\n var partNumber = ++self.totalPartNumbers;\n if (self.isDoneChunking && partNumber === 1) {\n var params = {Body: chunk};\n if (this.tags) {\n params.Tagging = this.getTaggingHeader();\n }\n var req = self.service.putObject(params);\n req._managedUpload = self;\n req.on('httpUploadProgress', self.progress).send(self.finishSinglePart);\n self.singlePart = req; //save the single part request\n return null;\n } else if (self.service.config.params.ContentMD5) {\n var err = AWS.util.error(new Error('The Content-MD5 you specified is invalid for multi-part uploads.'), {\n code: 'InvalidDigest', retryable: false\n });\n\n self.cleanup(err);\n return null;\n }\n\n if (self.completeInfo[partNumber] && self.completeInfo[partNumber].ETag !== null) {\n return null; // Already uploaded this part.\n }\n\n self.activeParts++;\n if (!self.service.config.params.UploadId) {\n\n if (!self.multipartReq) { // create multipart\n self.multipartReq = self.service.createMultipartUpload();\n self.multipartReq.on('success', function(resp) {\n self.service.config.params.UploadId = resp.data.UploadId;\n self.multipartReq = null;\n });\n self.queueChunks(chunk, partNumber);\n self.multipartReq.on('error', function(err) {\n self.cleanup(err);\n });\n self.multipartReq.send();\n } else {\n self.queueChunks(chunk, partNumber);\n }\n } else { // multipart is created, just send\n self.uploadPart(chunk, partNumber);\n }\n },\n\n /**\n * @api private\n */\n getTaggingHeader: function getTaggingHeader() {\n var kvPairStrings = [];\n for (var i = 0; i < this.tags.length; i++) {\n kvPairStrings.push(AWS.util.uriEscape(this.tags[i].Key) + '=' +\n AWS.util.uriEscape(this.tags[i].Value));\n }\n\n return kvPairStrings.join('&');\n },\n\n /**\n * @api private\n */\n uploadPart: function uploadPart(chunk, partNumber) {\n var self = this;\n\n var partParams = {\n Body: chunk,\n ContentLength: AWS.util.string.byteLength(chunk),\n PartNumber: partNumber\n };\n\n var partInfo = {ETag: null, PartNumber: partNumber};\n self.completeInfo[partNumber] = partInfo;\n\n var req = self.service.uploadPart(partParams);\n self.parts[partNumber] = req;\n req._lastUploadedBytes = 0;\n req._managedUpload = self;\n req.on('httpUploadProgress', self.progress);\n req.send(function(err, data) {\n delete self.parts[partParams.PartNumber];\n self.activeParts--;\n\n if (!err && (!data || !data.ETag)) {\n var message = 'No access to ETag property on response.';\n if (AWS.util.isBrowser()) {\n message += ' Check CORS configuration to expose ETag header.';\n }\n\n err = AWS.util.error(new Error(message), {\n code: 'ETagMissing', retryable: false\n });\n }\n if (err) return self.cleanup(err);\n //prevent sending part being returned twice (https://github.com/aws/aws-sdk-js/issues/2304)\n if (self.completeInfo[partNumber] && self.completeInfo[partNumber].ETag !== null) return null;\n partInfo.ETag = data.ETag;\n self.doneParts++;\n if (self.isDoneChunking && self.doneParts === self.totalPartNumbers) {\n self.finishMultiPart();\n } else {\n self.fillQueue.call(self);\n }\n });\n },\n\n /**\n * @api private\n */\n queueChunks: function queueChunks(chunk, partNumber) {\n var self = this;\n self.multipartReq.on('success', function() {\n self.uploadPart(chunk, partNumber);\n });\n },\n\n /**\n * @api private\n */\n cleanup: function cleanup(err) {\n var self = this;\n if (self.failed) return;\n\n // clean up stream\n if (typeof self.body.removeAllListeners === 'function' &&\n typeof self.body.resume === 'function') {\n self.body.removeAllListeners('readable');\n self.body.removeAllListeners('end');\n self.body.resume();\n }\n\n // cleanup multipartReq listeners\n if (self.multipartReq) {\n self.multipartReq.removeAllListeners('success');\n self.multipartReq.removeAllListeners('error');\n self.multipartReq.removeAllListeners('complete');\n delete self.multipartReq;\n }\n\n if (self.service.config.params.UploadId && !self.leavePartsOnError) {\n self.service.abortMultipartUpload().send();\n } else if (self.leavePartsOnError) {\n self.isDoneChunking = false;\n }\n\n AWS.util.each(self.parts, function(partNumber, part) {\n part.removeAllListeners('complete');\n part.abort();\n });\n\n self.activeParts = 0;\n self.partPos = 0;\n self.numParts = 0;\n self.totalPartNumbers = 0;\n self.parts = {};\n self.failed = true;\n self.callback(err);\n },\n\n /**\n * @api private\n */\n finishMultiPart: function finishMultiPart() {\n var self = this;\n var completeParams = { MultipartUpload: { Parts: self.completeInfo.slice(1) } };\n self.service.completeMultipartUpload(completeParams, function(err, data) {\n if (err) {\n return self.cleanup(err);\n }\n\n if (data && typeof data.Location === 'string') {\n data.Location = data.Location.replace(/%2F/g, '/');\n }\n\n if (Array.isArray(self.tags)) {\n for (var i = 0; i < self.tags.length; i++) {\n self.tags[i].Value = String(self.tags[i].Value);\n }\n self.service.putObjectTagging(\n {Tagging: {TagSet: self.tags}},\n function(e, d) {\n if (e) {\n self.callback(e);\n } else {\n self.callback(e, data);\n }\n }\n );\n } else {\n self.callback(err, data);\n }\n });\n },\n\n /**\n * @api private\n */\n finishSinglePart: function finishSinglePart(err, data) {\n var upload = this.request._managedUpload;\n var httpReq = this.request.httpRequest;\n var endpoint = httpReq.endpoint;\n if (err) return upload.callback(err);\n data.Location =\n [endpoint.protocol, '//', endpoint.host, httpReq.path].join('');\n data.key = this.request.params.Key; // will stay undocumented\n data.Key = this.request.params.Key;\n data.Bucket = this.request.params.Bucket;\n upload.callback(err, data);\n },\n\n /**\n * @api private\n */\n progress: function progress(info) {\n var upload = this._managedUpload;\n if (this.operation === 'putObject') {\n info.part = 1;\n info.key = this.params.Key;\n } else {\n upload.totalUploadedBytes += info.loaded - this._lastUploadedBytes;\n this._lastUploadedBytes = info.loaded;\n info = {\n loaded: upload.totalUploadedBytes,\n total: upload.totalBytes,\n part: this.params.PartNumber,\n key: this.params.Key\n };\n }\n upload.emit('httpUploadProgress', [info]);\n }\n});\n\nAWS.util.mixin(AWS.S3.ManagedUpload, AWS.SequentialExecutor);\n\n/**\n * @api private\n */\nAWS.S3.ManagedUpload.addPromisesToClass = function addPromisesToClass(PromiseDependency) {\n this.prototype.promise = AWS.util.promisifyMethod('send', PromiseDependency);\n};\n\n/**\n * @api private\n */\nAWS.S3.ManagedUpload.deletePromisesFromClass = function deletePromisesFromClass() {\n delete this.prototype.promise;\n};\n\nAWS.util.addPromises(AWS.S3.ManagedUpload);\n\n/**\n * @api private\n */\nmodule.exports = AWS.S3.ManagedUpload;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['codebuild'] = {};\nAWS.CodeBuild = Service.defineService('codebuild', ['2016-10-06']);\nObject.defineProperty(apiLoader.services['codebuild'], '2016-10-06', {\n get: function get() {\n var model = require('../apis/codebuild-2016-10-06.min.json');\n model.paginators = require('../apis/codebuild-2016-10-06.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.CodeBuild;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['cloudhsm'] = {};\nAWS.CloudHSM = Service.defineService('cloudhsm', ['2014-05-30']);\nObject.defineProperty(apiLoader.services['cloudhsm'], '2014-05-30', {\n get: function get() {\n var model = require('../apis/cloudhsm-2014-05-30.min.json');\n model.paginators = require('../apis/cloudhsm-2014-05-30.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.CloudHSM;\n","module.exports=function(e){var t={};function r(n){if(t[n])return t[n].exports;var a=t[n]={i:n,l:!1,exports:{}};return e[n].call(a.exports,a,a.exports,r),a.l=!0,a.exports}return r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&\"object\"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,\"default\",{enumerable:!0,value:e}),2&t&&\"string\"!=typeof e)for(var a in e)r.d(n,a,function(t){return e[t]}.bind(null,a));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,\"a\",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p=\"\",r(r.s=9)}([function(e,t){e.exports=require(\"react\")},function(e,t,r){var n;\n/*!\n Copyright (c) 2017 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://jedwatson.github.io/classnames\n*/!function(){\"use strict\";var r={}.hasOwnProperty;function a(){for(var e=[],t=0;t=o?a:o)),r=a,t=h(t),e.slice(r,r+t.length)==t}}).call(this,r(3))},function(e,t){var r;r=function(){return this}();try{r=r||new Function(\"return this\")()}catch(e){\"object\"==typeof window&&(r=window)}e.exports=r},function(e,t,r){(function(t){var r=/^\\[object .+?Constructor\\]$/,n=\"object\"==typeof t&&t&&t.Object===Object&&t,a=\"object\"==typeof self&&self&&self.Object===Object&&self,o=n||a||Function(\"return this\")();var i,u=Array.prototype,c=Function.prototype,s=Object.prototype,l=o[\"__core-js_shared__\"],f=(i=/[^.]+$/.exec(l&&l.keys&&l.keys.IE_PROTO||\"\"))?\"Symbol(src)_1.\"+i:\"\",d=c.toString,p=s.hasOwnProperty,h=s.toString,m=RegExp(\"^\"+d.call(p).replace(/[\\\\^$.*+?()[\\]{}|]/g,\"\\\\$&\").replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g,\"$1.*?\")+\"$\"),y=u.splice,b=x(o,\"Map\"),g=x(Object,\"create\");function v(e){var t=-1,r=e?e.length:0;for(this.clear();++t-1},C.prototype.set=function(e,t){var r=this.__data__,n=w(r,e);return n<0?r.push([e,t]):r[n][1]=t,this},_.prototype.clear=function(){this.__data__={hash:new v,map:new(b||C),string:new v}},_.prototype.delete=function(e){return j(this,e).delete(e)},_.prototype.get=function(e){return j(this,e).get(e)},_.prototype.has=function(e){return j(this,e).has(e)},_.prototype.set=function(e,t){return j(this,e).set(e,t),this},N.Cache=_,e.exports=N}).call(this,r(3))},function(e,t,r){(function(t){var r=/^\\s+|\\s+$/g,n=/^[-+]0x[0-9a-f]+$/i,a=/^0b[01]+$/i,o=/^0o[0-7]+$/i,i=parseInt,u=\"object\"==typeof t&&t&&t.Object===Object&&t,c=\"object\"==typeof self&&self&&self.Object===Object&&self,s=u||c||Function(\"return this\")(),l=Object.prototype.toString,f=Math.max,d=Math.min,p=function(){return s.Date.now()};function h(e){var t=typeof e;return!!e&&(\"object\"==t||\"function\"==t)}function m(e){if(\"number\"==typeof e)return e;if(function(e){return\"symbol\"==typeof e||function(e){return!!e&&\"object\"==typeof e}(e)&&\"[object Symbol]\"==l.call(e)}(e))return NaN;if(h(e)){var t=\"function\"==typeof e.valueOf?e.valueOf():e;e=h(t)?t+\"\":t}if(\"string\"!=typeof e)return 0===e?e:+e;e=e.replace(r,\"\");var u=a.test(e);return u||o.test(e)?i(e.slice(2),u?2:8):n.test(e)?NaN:+e}e.exports=function(e,t,r){var n,a,o,i,u,c,s=0,l=!1,y=!1,b=!0;if(\"function\"!=typeof e)throw new TypeError(\"Expected a function\");function g(t){var r=n,o=a;return n=a=void 0,s=t,i=e.apply(o,r)}function v(e){return s=e,u=setTimeout(_,t),l?g(e):i}function C(e){var r=e-c;return void 0===c||r>=t||r<0||y&&e-s>=o}function _(){var e=p();if(C(e))return w(e);u=setTimeout(_,function(e){var r=t-(e-c);return y?d(r,o-(e-s)):r}(e))}function w(e){return u=void 0,b&&n?g(e):(n=a=void 0,i)}function S(){var e=p(),r=C(e);if(n=arguments,a=this,c=e,r){if(void 0===u)return v(c);if(y)return u=setTimeout(_,t),g(c)}return void 0===u&&(u=setTimeout(_,t)),i}return t=m(t)||0,h(r)&&(l=!!r.leading,o=(y=\"maxWait\"in r)?f(m(r.maxWait)||0,t):o,b=\"trailing\"in r?!!r.trailing:b),S.cancel=function(){void 0!==u&&clearTimeout(u),s=0,n=c=a=u=void 0},S.flush=function(){return void 0===u?i:w(p())},S}}).call(this,r(3))},function(e,t,r){(function(e,r){var n=\"[object Arguments]\",a=\"[object Map]\",o=\"[object Object]\",i=\"[object Set]\",u=/\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,c=/^\\w*$/,s=/^\\./,l=/[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g,f=/\\\\(\\\\)?/g,d=/^\\[object .+?Constructor\\]$/,p=/^(?:0|[1-9]\\d*)$/,h={};h[\"[object Float32Array]\"]=h[\"[object Float64Array]\"]=h[\"[object Int8Array]\"]=h[\"[object Int16Array]\"]=h[\"[object Int32Array]\"]=h[\"[object Uint8Array]\"]=h[\"[object Uint8ClampedArray]\"]=h[\"[object Uint16Array]\"]=h[\"[object Uint32Array]\"]=!0,h[n]=h[\"[object Array]\"]=h[\"[object ArrayBuffer]\"]=h[\"[object Boolean]\"]=h[\"[object DataView]\"]=h[\"[object Date]\"]=h[\"[object Error]\"]=h[\"[object Function]\"]=h[a]=h[\"[object Number]\"]=h[o]=h[\"[object RegExp]\"]=h[i]=h[\"[object String]\"]=h[\"[object WeakMap]\"]=!1;var m=\"object\"==typeof e&&e&&e.Object===Object&&e,y=\"object\"==typeof self&&self&&self.Object===Object&&self,b=m||y||Function(\"return this\")(),g=t&&!t.nodeType&&t,v=g&&\"object\"==typeof r&&r&&!r.nodeType&&r,C=v&&v.exports===g&&m.process,_=function(){try{return C&&C.binding(\"util\")}catch(e){}}(),w=_&&_.isTypedArray;function S(e,t,r,n){var a=-1,o=e?e.length:0;for(n&&o&&(r=e[++a]);++a-1},ue.prototype.set=function(e,t){var r=this.__data__,n=de(r,e);return n<0?r.push([e,t]):r[n][1]=t,this},ce.prototype.clear=function(){this.__data__={hash:new ie,map:new(H||ue),string:new ie}},ce.prototype.delete=function(e){return xe(this,e).delete(e)},ce.prototype.get=function(e){return xe(this,e).get(e)},ce.prototype.has=function(e){return xe(this,e).has(e)},ce.prototype.set=function(e,t){return xe(this,e).set(e,t),this},se.prototype.add=se.prototype.push=function(e){return this.__data__.set(e,\"__lodash_hash_undefined__\"),this},se.prototype.has=function(e){return this.__data__.has(e)},le.prototype.clear=function(){this.__data__=new ue},le.prototype.delete=function(e){return this.__data__.delete(e)},le.prototype.get=function(e){return this.__data__.get(e)},le.prototype.has=function(e){return this.__data__.has(e)},le.prototype.set=function(e,t){var r=this.__data__;if(r instanceof ue){var n=r.__data__;if(!H||n.length<199)return n.push([e,t]),this;r=this.__data__=new ce(n)}return r.set(e,t),this};var pe,he,me=(pe=function(e,t){return e&&ye(e,t,qe)},function(e,t){if(null==e)return e;if(!ze(e))return pe(e,t);for(var r=e.length,n=he?r:-1,a=Object(e);(he?n--:++nu))return!1;var s=o.get(e);if(s&&o.get(t))return s==t;var l=-1,f=!0,d=1&a?new se:void 0;for(o.set(e,t),o.set(t,e);++l-1&&e%1==0&&e-1&&e%1==0&&e<=9007199254740991}function $e(e){var t=typeof e;return!!e&&(\"object\"==t||\"function\"==t)}function Ve(e){return!!e&&\"object\"==typeof e}function Ke(e){return\"symbol\"==typeof e||Ve(e)&&\"[object Symbol]\"==z.call(e)}var Ue=w?function(e){return function(t){return e(t)}}(w):function(e){return Ve(e)&&Ge(e.length)&&!!h[z.call(e)]};function qe(e){return ze(e)?fe(e):we(e)}function He(e){return e}r.exports=function(e,t,r){var n=Le(e)?S:x,a=arguments.length<3;return n(e,_e(t),r,a,me)}}).call(this,r(3),r(7)(e))},function(e,t){e.exports=function(e){return e.webpackPolyfill||(e.deprecate=function(){},e.paths=[],e.children||(e.children=[]),Object.defineProperty(e,\"loaded\",{enumerable:!0,get:function(){return e.l}}),Object.defineProperty(e,\"id\",{enumerable:!0,get:function(){return e.i}}),e.webpackPolyfill=1),e}},function(e,t){String.prototype.padEnd||(String.prototype.padEnd=function(e,t){return e>>=0,t=String(void 0!==t?t:\" \"),this.length>e?String(this):((e-=this.length)>t.length&&(t+=t.repeat(e/t.length)),String(this)+t.slice(0,e))})},function(e,t,r){\"use strict\";function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e){if(Symbol.iterator in Object(e)||\"[object Arguments]\"===Object.prototype.toString.call(e))return Array.from(e)}function o(e){return function(e){if(Array.isArray(e)){for(var t=0,r=new Array(e.length);t0?(o.mainCode=!0,c||\"Array\"===t.constructor.name&&t.includes(e[2])?(o.hasAreaCodes=!0,[o].concat(u)):(s=s.concat(u),[o])):[o]})))),s]}function A(e,t,r,n){if(null!==r){var a=Object.keys(r),o=Object.values(r);a.forEach((function(r,a){if(n)return e.push([r,o[a]]);var i=e.findIndex((function(e){return e[0]===r}));if(-1===i){var u=[r];u[t]=o[a],e.push(u)}else e[i][t]=o[a]}))}}function D(e,t){return 0===t.length?e:e.map((function(e){var r=t.findIndex((function(t){return t[0]===e[2]}));if(-1===r)return e;var n=t[r];return n[1]&&(e[4]=n[1]),n[3]&&(e[5]=n[3]),n[2]&&(e[6]=n[2]),e}))}var P=function e(t,r,n,a,i,u,s,l,f,d,p,h,m,y){c(this,e),this.filterRegions=function(e,t){if(\"string\"==typeof e){var r=e;return t.filter((function(e){return e.regions.some((function(e){return e===r}))}))}return t.filter((function(t){return e.map((function(e){return t.regions.some((function(t){return t===e}))})).some((function(e){return e}))}))},this.sortTerritories=function(e,t){var r=[].concat(o(e),o(t));return r.sort((function(e,t){return e.namet.name?1:0})),r},this.getFilteredCountryList=function(e,t,r){return 0===e.length?t:r?e.map((function(e){var r=t.find((function(t){return t.iso2===e}));if(r)return r})).filter((function(e){return e})):t.filter((function(t){return e.some((function(e){return e===t.iso2}))}))},this.localizeCountries=function(e,t,r){for(var n=0;nt.localName?1:0})),e},this.getCustomAreas=function(e,t){for(var r=[],n=0;nt.dialCode.length)return r;if(r.dialCode.length===t.dialCode.length&&r.priority=\"0\"&&e.indexOf(0)<=\"9\"?n.find((function(t){return t.dialCode==+e})):n.find((function(t){return t.iso2==e})))&&t.dialCode&&r.setState({selectedCountry:t,formattedNumber:r.props.disableCountryCode?\"\":r.formatNumber(t.dialCode,t)})},r.scrollTo=function(e,t){if(e){var n=r.dropdownRef;if(n&&document.body){var a=n.offsetHeight,o=n.getBoundingClientRect().top+document.body.scrollTop,i=o+a,u=e,c=u.getBoundingClientRect(),s=u.offsetHeight,l=c.top+document.body.scrollTop,f=l+s,d=l-o+n.scrollTop,p=a/2-s/2;if(r.props.enableSearch?li){t&&(d+=p);var h=a-s;n.scrollTop=d-h}}}},r.scrollToTop=function(){var e=r.dropdownRef;e&&document.body&&(e.scrollTop=0)},r.formatNumber=function(e,t){if(!t)return e;var n,o=t.format,c=r.props,s=c.disableCountryCode,l=c.enableAreaCodeStretch,f=c.enableLongNumbers,d=c.autoFormat;if(s?((n=o.split(\" \")).shift(),n=n.join(\" \")):l&&t.isAreaCode?((n=o.split(\" \"))[1]=n[1].replace(/\\.+/,\"\".padEnd(t.areaCodeLength,\".\")),n=n.join(\" \")):n=o,!e||0===e.length)return s?\"\":r.props.prefix;if(e&&e.length<2||!n||!d)return s?e:r.props.prefix+e;var p,h=w()(n,(function(e,t){if(0===e.remainingText.length)return e;if(\".\"!==t)return{formattedText:e.formattedText+t,remainingText:e.remainingText};var r,n=i(r=e.remainingText)||a(r)||u(),o=n[0],c=n.slice(1);return{formattedText:e.formattedText+o,remainingText:c}}),{formattedText:\"\",remainingText:e.split(\"\")});return(p=f?h.formattedText+h.remainingText.join(\"\"):h.formattedText).includes(\"(\")&&!p.includes(\")\")&&(p+=\")\"),p},r.cursorToEnd=function(){var e=r.numberInputRef;if(document.activeElement===e){e.focus();var t=e.value.length;\")\"===e.value.charAt(t-1)&&(t-=1),e.setSelectionRange(t,t)}},r.getElement=function(e){return r[\"flag_no_\".concat(e)]},r.getCountryData=function(){return r.state.selectedCountry?{name:r.state.selectedCountry.name||\"\",dialCode:r.state.selectedCountry.dialCode||\"\",countryCode:r.state.selectedCountry.iso2||\"\",format:r.state.selectedCountry.format||\"\"}:{}},r.handleFlagDropdownClick=function(e){if(e.preventDefault(),r.state.showDropdown||!r.props.disabled){var t=r.state,n=t.preferredCountries,a=t.onlyCountries,o=t.selectedCountry,i=r.concatPreferredCountries(n,a).findIndex((function(e){return e.dialCode===o.dialCode&&e.iso2===o.iso2}));r.setState({showDropdown:!r.state.showDropdown,highlightCountryIndex:i},(function(){r.state.showDropdown&&r.scrollTo(r.getElement(r.state.highlightCountryIndex))}))}},r.handleInput=function(e){var t=e.target.value,n=r.props,a=n.prefix,o=n.onChange,i=r.props.disableCountryCode?\"\":a,u=r.state.selectedCountry,c=r.state.freezeSelection;if(!r.props.countryCodeEditable){var s=a+(u.hasAreaCodes?r.state.onlyCountries.find((function(e){return e.iso2===u.iso2&&e.mainCode})).dialCode:u.dialCode);if(t.slice(0,s.length)!==s)return}if(t===a)return o&&o(\"\",r.getCountryData(),e,\"\"),r.setState({formattedNumber:\"\"});if(t.replace(/\\D/g,\"\").length>15){if(!1===r.props.enableLongNumbers)return;if(\"number\"==typeof r.props.enableLongNumbers&&t.replace(/\\D/g,\"\").length>r.props.enableLongNumbers)return}if(t!==r.state.formattedNumber){e.preventDefault?e.preventDefault():e.returnValue=!1;var l=r.props.country,f=r.state,d=f.onlyCountries,p=f.selectedCountry,h=f.hiddenAreaCodes;if(o&&e.persist(),t.length>0){var m=t.replace(/\\D/g,\"\");(!r.state.freezeSelection||p&&p.dialCode.length>m.length)&&(u=r.props.disableCountryGuess?p:r.guessSelectedCountry(m.substring(0,6),l,d,h)||p,c=!1),i=r.formatNumber(m,u),u=u.dialCode?u:p}var y=e.target.selectionStart,b=e.target.selectionStart,g=r.state.formattedNumber,v=i.length-g.length;r.setState({formattedNumber:i,freezeSelection:c,selectedCountry:u},(function(){v>0&&(b-=v),\")\"==i.charAt(i.length-1)?r.numberInputRef.setSelectionRange(i.length-1,i.length-1):b>0&&g.length>=i.length?r.numberInputRef.setSelectionRange(b,b):y1?o.replace(n.dialCode,a.dialCode):a.dialCode,u=r.formatNumber(i.replace(/\\D/g,\"\"),a);r.setState({showDropdown:!1,selectedCountry:a,freezeSelection:!0,formattedNumber:u,searchValue:\"\"},(function(){r.cursorToEnd(),r.props.onChange&&r.props.onChange(u.replace(/[^0-9]+/g,\"\"),r.getCountryData(),t,u)}))}},r.handleInputFocus=function(e){r.numberInputRef&&r.numberInputRef.value===r.props.prefix&&r.state.selectedCountry&&!r.props.disableCountryCode&&r.setState({formattedNumber:r.props.prefix+r.state.selectedCountry.dialCode},(function(){r.props.jumpCursorToEnd&&setTimeout(r.cursorToEnd,0)})),r.setState({placeholder:\"\"}),r.props.onFocus&&r.props.onFocus(e,r.getCountryData()),r.props.jumpCursorToEnd&&setTimeout(r.cursorToEnd,0)},r.handleInputBlur=function(e){e.target.value||r.setState({placeholder:r.props.placeholder}),r.props.onBlur&&r.props.onBlur(e,r.getCountryData())},r.handleInputCopy=function(e){if(r.props.copyNumbersOnly){var t=window.getSelection().toString().replace(/[^0-9]+/g,\"\");e.clipboardData.setData(\"text/plain\",t),e.preventDefault()}},r.getHighlightCountryIndex=function(e){var t=r.state.highlightCountryIndex+e;return t<0||t>=r.state.onlyCountries.length+r.state.preferredCountries.length?t-e:r.props.enableSearch&&t>r.getSearchFilteredCountries().length?0:t},r.searchCountry=function(){var e=r.getProbableCandidate(r.state.queryString)||r.state.onlyCountries[0],t=r.state.onlyCountries.findIndex((function(t){return t==e}))+r.state.preferredCountries.length;r.scrollTo(r.getElement(t),!0),r.setState({queryString:\"\",highlightCountryIndex:t})},r.handleKeydown=function(e){var t=r.props.keys,n=e.target.className;if(n.includes(\"selected-flag\")&&e.which===t.ENTER&&!r.state.showDropdown)return r.handleFlagDropdownClick(e);if(n.includes(\"form-control\")&&(e.which===t.ENTER||e.which===t.ESC))return e.target.blur();if(r.state.showDropdown&&!r.props.disabled&&(!n.includes(\"search-box\")||e.which===t.UP||e.which===t.DOWN||e.which===t.ENTER||e.which===t.ESC&&\"\"===e.target.value)){e.preventDefault?e.preventDefault():e.returnValue=!1;var a=function(e){r.setState({highlightCountryIndex:r.getHighlightCountryIndex(e)},(function(){r.scrollTo(r.getElement(r.state.highlightCountryIndex),!0)}))};switch(e.which){case t.DOWN:a(1);break;case t.UP:a(-1);break;case t.ENTER:r.props.enableSearch?r.handleFlagItemClick(r.getSearchFilteredCountries()[r.state.highlightCountryIndex]||r.getSearchFilteredCountries()[0],e):r.handleFlagItemClick([].concat(o(r.state.preferredCountries),o(r.state.onlyCountries))[r.state.highlightCountryIndex],e);break;case t.ESC:case t.TAB:r.setState({showDropdown:!1},r.cursorToEnd);break;default:(e.which>=t.A&&e.which<=t.Z||e.which===t.SPACE)&&r.setState({queryString:r.state.queryString+String.fromCharCode(e.which)},r.state.debouncedQueryStingSearcher)}}},r.handleInputKeyDown=function(e){var t=r.props,n=t.keys,a=t.onEnterKeyPress,o=t.onKeyDown;e.which===n.ENTER&&a&&a(e),o&&o(e)},r.handleClickOutside=function(e){r.dropdownRef&&!r.dropdownContainerRef.contains(e.target)&&r.state.showDropdown&&r.setState({showDropdown:!1})},r.handleSearchChange=function(e){var t=e.currentTarget.value,n=r.state,a=n.preferredCountries,o=n.selectedCountry,i=0;if(\"\"===t&&o){var u=r.state.onlyCountries;i=r.concatPreferredCountries(a,u).findIndex((function(e){return e==o})),setTimeout((function(){return r.scrollTo(r.getElement(i))}),100)}r.setState({searchValue:t,highlightCountryIndex:i})},r.concatPreferredCountries=function(e,t){return e.length>0?o(new Set(e.concat(t))):t},r.getDropdownCountryName=function(e){return e.localName||e.name},r.getSearchFilteredCountries=function(){var e=r.state,t=e.preferredCountries,n=e.onlyCountries,a=e.searchValue,i=r.props.enableSearch,u=r.concatPreferredCountries(t,n),c=a.trim().toLowerCase().replace(\"+\",\"\");if(i&&c){if(/^\\d+$/.test(c))return u.filter((function(e){var t=e.dialCode;return[\"\".concat(t)].some((function(e){return e.toLowerCase().includes(c)}))}));var s=u.filter((function(e){var t=e.iso2;return[\"\".concat(t)].some((function(e){return e.toLowerCase().includes(c)}))})),l=u.filter((function(e){var t=e.name,r=e.localName;e.iso2;return[\"\".concat(t),\"\".concat(r||\"\")].some((function(e){return e.toLowerCase().includes(c)}))}));return r.scrollToTop(),o(new Set([].concat(s,l)))}return u},r.getCountryDropdownList=function(){var e=r.state,t=e.preferredCountries,a=e.highlightCountryIndex,o=e.showDropdown,i=e.searchValue,u=r.props,c=u.disableDropdown,s=u.prefix,l=r.props,f=l.enableSearch,d=l.searchNotFound,p=l.disableSearchIcon,h=l.searchClass,m=l.searchStyle,b=l.searchPlaceholder,g=l.autocompleteSearch,v=r.getSearchFilteredCountries().map((function(e,t){var n=a===t,o=N()({country:!0,preferred:\"us\"===e.iso2||\"gb\"===e.iso2,active:\"us\"===e.iso2,highlight:n}),i=\"flag \".concat(e.iso2);return y.a.createElement(\"li\",Object.assign({ref:function(e){return r[\"flag_no_\".concat(t)]=e},key:\"flag_no_\".concat(t),\"data-flag-key\":\"flag_no_\".concat(t),className:o,\"data-dial-code\":\"1\",tabIndex:c?\"-1\":\"0\",\"data-country-code\":e.iso2,onClick:function(t){return r.handleFlagItemClick(e,t)},role:\"option\"},n?{\"aria-selected\":!0}:{}),y.a.createElement(\"div\",{className:i}),y.a.createElement(\"span\",{className:\"country-name\"},r.getDropdownCountryName(e)),y.a.createElement(\"span\",{className:\"dial-code\"},e.format?r.formatNumber(e.dialCode,e):s+e.dialCode))})),C=y.a.createElement(\"li\",{key:\"dashes\",className:\"divider\"});t.length>0&&(!f||f&&!i.trim())&&v.splice(t.length,0,C);var _=N()(n({\"country-list\":!0,hide:!o},r.props.dropdownClass,!0));return y.a.createElement(\"ul\",{ref:function(e){return!f&&e&&e.focus(),r.dropdownRef=e},className:_,style:r.props.dropdownStyle,role:\"listbox\",tabIndex:\"0\"},f&&y.a.createElement(\"li\",{className:N()(n({search:!0},h,h))},!p&&y.a.createElement(\"span\",{className:N()(n({\"search-emoji\":!0},\"\".concat(h,\"-emoji\"),h)),role:\"img\",\"aria-label\":\"Magnifying glass\"},\"🔎\"),y.a.createElement(\"input\",{className:N()(n({\"search-box\":!0},\"\".concat(h,\"-box\"),h)),style:m,type:\"search\",placeholder:b,autoFocus:!0,autoComplete:g?\"on\":\"off\",value:i,onChange:r.handleSearchChange})),v.length>0?v:y.a.createElement(\"li\",{className:\"no-entries-message\"},y.a.createElement(\"span\",null,d)))};var s,l=new P(e.enableAreaCodes,e.enableTerritories,e.regions,e.onlyCountries,e.preferredCountries,e.excludeCountries,e.preserveOrder,e.masks,e.priority,e.areaCodes,e.localization,e.prefix,e.defaultMask,e.alwaysDefaultMask),h=l.onlyCountries,m=l.preferredCountries,b=l.hiddenAreaCodes,v=e.value?e.value.replace(/\\D/g,\"\"):\"\";s=e.disableInitialCountryGuess?0:v.length>1?r.guessSelectedCountry(v.substring(0,6),e.country,h,b)||0:e.country&&h.find((function(t){return t.iso2==e.country}))||0;var _,S=v.length<2&&s&&!j()(v,s.dialCode)?s.dialCode:\"\";_=\"\"===v&&0===s?\"\":r.formatNumber((e.disableCountryCode?\"\":S)+v,s.name?s:void 0);var x=h.findIndex((function(e){return e==s}));return r.state={showDropdown:e.showDropdown,formattedNumber:_,onlyCountries:h,preferredCountries:m,hiddenAreaCodes:b,selectedCountry:s,highlightCountryIndex:x,queryString:\"\",freezeSelection:!1,debouncedQueryStingSearcher:g()(r.searchCountry,250),searchValue:\"\"},r}var r,l,m;return function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function\");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&h(e,t)}(t,e),r=t,(l=[{key:\"componentDidMount\",value:function(){document.addEventListener&&this.props.enableClickOutside&&document.addEventListener(\"mousedown\",this.handleClickOutside),this.props.onMount&&this.props.onMount(this.state.formattedNumber.replace(/[^0-9]+/g,\"\"),this.getCountryData(),this.state.formattedNumber)}},{key:\"componentWillUnmount\",value:function(){document.removeEventListener&&this.props.enableClickOutside&&document.removeEventListener(\"mousedown\",this.handleClickOutside)}},{key:\"componentDidUpdate\",value:function(e,t,r){e.country!==this.props.country?this.updateCountry(this.props.country):e.value!==this.props.value&&this.updateFormattedNumber(this.props.value)}},{key:\"updateFormattedNumber\",value:function(e){if(null===e)return this.setState({selectedCountry:0,formattedNumber:\"\"});var t=this.state,r=t.onlyCountries,n=t.selectedCountry,a=t.hiddenAreaCodes,o=this.props,i=o.country,u=o.prefix;if(\"\"===e)return this.setState({selectedCountry:n,formattedNumber:\"\"});var c,s,l=e.replace(/\\D/g,\"\");if(n&&j()(e,u+n.dialCode))s=this.formatNumber(l,n),this.setState({formattedNumber:s});else{var f=(c=this.props.disableCountryGuess?n:this.guessSelectedCountry(l.substring(0,6),i,r,a)||n)&&j()(l,u+c.dialCode)?c.dialCode:\"\";s=this.formatNumber((this.props.disableCountryCode?\"\":f)+l,c||void 0),this.setState({selectedCountry:c,formattedNumber:s})}}},{key:\"render\",value:function(){var e,t,r,a=this,o=this.state,i=o.onlyCountries,u=o.selectedCountry,c=o.showDropdown,s=o.formattedNumber,l=o.hiddenAreaCodes,f=this.props,d=f.disableDropdown,p=f.renderStringAsFlag,h=f.isValid,m=f.defaultErrorMessage,b=f.specialLabel;if(\"boolean\"==typeof h)t=h;else{var g=h(s.replace(/\\D/g,\"\"),u,i,l);\"boolean\"==typeof g?!1===(t=g)&&(r=m):(t=!1,r=g)}var v=N()((n(e={},this.props.containerClass,!0),n(e,\"react-tel-input\",!0),e)),C=N()({arrow:!0,up:c}),_=N()(n({\"form-control\":!0,\"invalid-number\":!t,open:c},this.props.inputClass,!0)),w=N()({\"selected-flag\":!0,open:c}),S=N()(n({\"flag-dropdown\":!0,\"invalid-number\":!t,open:c},this.props.buttonClass,!0)),j=\"flag \".concat(u&&u.iso2);return y.a.createElement(\"div\",{className:\"\".concat(v,\" \").concat(this.props.className),style:this.props.style||this.props.containerStyle,onKeyDown:this.handleKeydown},b&&y.a.createElement(\"div\",{className:\"special-label\"},b),r&&y.a.createElement(\"div\",{className:\"invalid-number-message\"},r),y.a.createElement(\"input\",Object.assign({className:_,style:this.props.inputStyle,onChange:this.handleInput,onClick:this.handleInputClick,onDoubleClick:this.handleDoubleClick,onFocus:this.handleInputFocus,onBlur:this.handleInputBlur,onCopy:this.handleInputCopy,value:s,onKeyDown:this.handleInputKeyDown,placeholder:this.props.placeholder,disabled:this.props.disabled,type:\"tel\"},this.props.inputProps,{ref:function(e){a.numberInputRef=e,\"function\"==typeof a.props.inputProps.ref?a.props.inputProps.ref(e):\"object\"==typeof a.props.inputProps.ref&&(a.props.inputProps.ref.current=e)}})),y.a.createElement(\"div\",{className:S,style:this.props.buttonStyle,ref:function(e){return a.dropdownContainerRef=e}},p?y.a.createElement(\"div\",{className:w},p):y.a.createElement(\"div\",{onClick:d?void 0:this.handleFlagDropdownClick,className:w,title:u?\"\".concat(u.localName||u.name,\": + \").concat(u.dialCode):\"\",tabIndex:d?\"-1\":\"0\",role:\"button\",\"aria-haspopup\":\"listbox\",\"aria-expanded\":!!c||void 0},y.a.createElement(\"div\",{className:j},!d&&y.a.createElement(\"div\",{className:C}))),c&&this.getCountryDropdownList()))}}])&&s(r.prototype,l),m&&s(r,m),t}(y.a.Component);F.defaultProps={country:\"\",value:\"\",onlyCountries:[],preferredCountries:[],excludeCountries:[],placeholder:\"1 (702) 123-4567\",searchPlaceholder:\"search\",searchNotFound:\"No entries to show\",flagsImagePath:\"./flags.png\",disabled:!1,containerStyle:{},inputStyle:{},buttonStyle:{},dropdownStyle:{},searchStyle:{},containerClass:\"\",inputClass:\"\",buttonClass:\"\",dropdownClass:\"\",searchClass:\"\",className:\"\",autoFormat:!0,enableAreaCodes:!1,enableTerritories:!1,disableCountryCode:!1,disableDropdown:!1,enableLongNumbers:!1,countryCodeEditable:!0,enableSearch:!1,disableSearchIcon:!1,disableInitialCountryGuess:!1,disableCountryGuess:!1,regions:\"\",inputProps:{},localization:{},masks:null,priority:null,areaCodes:null,preserveOrder:[],defaultMask:\"... ... ... ... ..\",alwaysDefaultMask:!1,prefix:\"+\",copyNumbersOnly:!0,renderStringAsFlag:\"\",autocompleteSearch:!1,jumpCursorToEnd:!0,enableAreaCodeStretch:!1,enableClickOutside:!0,showDropdown:!1,isValid:!0,defaultErrorMessage:\"\",specialLabel:\"Phone\",onEnterKeyPress:null,keys:{UP:38,DOWN:40,RIGHT:39,LEFT:37,ENTER:13,ESC:27,PLUS:43,A:65,Z:90,SPACE:32,TAB:9}};t.default=F}]);","'use strict';\nvar internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.es/ecma262/#sec-object.getownpropertynames\n// eslint-disable-next-line es/no-object-getownpropertynames -- safe\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return internalObjectKeys(O, hiddenKeys);\n};\n","module.exports = {\n //provide realtime clock for performance measurement\n now: function now() {\n if (typeof performance !== 'undefined' && typeof performance.now === 'function') {\n return performance.now();\n }\n return Date.now();\n }\n};\n","//\n\nmodule.exports = function shallowEqual(objA, objB, compare, compareContext) {\n var ret = compare ? compare.call(compareContext, objA, objB) : void 0;\n\n if (ret !== void 0) {\n return !!ret;\n }\n\n if (objA === objB) {\n return true;\n }\n\n if (typeof objA !== \"object\" || !objA || typeof objB !== \"object\" || !objB) {\n return false;\n }\n\n var keysA = Object.keys(objA);\n var keysB = Object.keys(objB);\n\n if (keysA.length !== keysB.length) {\n return false;\n }\n\n var bHasOwnProperty = Object.prototype.hasOwnProperty.bind(objB);\n\n // Test for A's keys different from B.\n for (var idx = 0; idx < keysA.length; idx++) {\n var key = keysA[idx];\n\n if (!bHasOwnProperty(key)) {\n return false;\n }\n\n var valueA = objA[key];\n var valueB = objB[key];\n\n ret = compare ? compare.call(compareContext, valueA, valueB, key) : void 0;\n\n if (ret === false || (ret === void 0 && valueA !== valueB)) {\n return false;\n }\n }\n\n return true;\n};\n","'use strict';\nmodule.exports = false;\n","'use strict';\n\nvar isAbsoluteURL = require('../helpers/isAbsoluteURL');\nvar combineURLs = require('../helpers/combineURLs');\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n * @returns {string} The combined full path\n */\nmodule.exports = function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n};\n","'use strict';\n\n/* eslint no-invalid-this: 1 */\n\nvar ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';\nvar toStr = Object.prototype.toString;\nvar max = Math.max;\nvar funcType = '[object Function]';\n\nvar concatty = function concatty(a, b) {\n var arr = [];\n\n for (var i = 0; i < a.length; i += 1) {\n arr[i] = a[i];\n }\n for (var j = 0; j < b.length; j += 1) {\n arr[j + a.length] = b[j];\n }\n\n return arr;\n};\n\nvar slicy = function slicy(arrLike, offset) {\n var arr = [];\n for (var i = offset || 0, j = 0; i < arrLike.length; i += 1, j += 1) {\n arr[j] = arrLike[i];\n }\n return arr;\n};\n\nvar joiny = function (arr, joiner) {\n var str = '';\n for (var i = 0; i < arr.length; i += 1) {\n str += arr[i];\n if (i + 1 < arr.length) {\n str += joiner;\n }\n }\n return str;\n};\n\nmodule.exports = function bind(that) {\n var target = this;\n if (typeof target !== 'function' || toStr.apply(target) !== funcType) {\n throw new TypeError(ERROR_MESSAGE + target);\n }\n var args = slicy(arguments, 1);\n\n var bound;\n var binder = function () {\n if (this instanceof bound) {\n var result = target.apply(\n this,\n concatty(args, arguments)\n );\n if (Object(result) === result) {\n return result;\n }\n return this;\n }\n return target.apply(\n that,\n concatty(args, arguments)\n );\n\n };\n\n var boundLength = max(0, target.length - args.length);\n var boundArgs = [];\n for (var i = 0; i < boundLength; i++) {\n boundArgs[i] = '$' + i;\n }\n\n bound = Function('binder', 'return function (' + joiny(boundArgs, ',') + '){ return binder.apply(this,arguments); }')(binder);\n\n if (target.prototype) {\n var Empty = function Empty() {};\n Empty.prototype = target.prototype;\n bound.prototype = new Empty();\n Empty.prototype = null;\n }\n\n return bound;\n};\n","'use strict';\n\nvar 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","/**\n * Password-Based Key-Derivation Function #2 implementation.\n *\n * See RFC 2898 for details.\n *\n * @author Dave Longley\n *\n * Copyright (c) 2010-2013 Digital Bazaar, Inc.\n */\nvar forge = require('./forge');\nrequire('./hmac');\nrequire('./md');\nrequire('./util');\n\nvar pkcs5 = forge.pkcs5 = forge.pkcs5 || {};\n\nvar crypto;\nif(forge.util.isNodejs && !forge.options.usePureJavaScript) {\n crypto = require('crypto');\n}\n\n/**\n * Derives a key from a password.\n *\n * @param p the password as a binary-encoded string of bytes.\n * @param s the salt as a binary-encoded string of bytes.\n * @param c the iteration count, a positive integer.\n * @param dkLen the intended length, in bytes, of the derived key,\n * (max: 2^32 - 1) * hash length of the PRF.\n * @param [md] the message digest (or algorithm identifier as a string) to use\n * in the PRF, defaults to SHA-1.\n * @param [callback(err, key)] presence triggers asynchronous version, called\n * once the operation completes.\n *\n * @return the derived key, as a binary-encoded string of bytes, for the\n * synchronous version (if no callback is specified).\n */\nmodule.exports = forge.pbkdf2 = pkcs5.pbkdf2 = function(\n p, s, c, dkLen, md, callback) {\n if(typeof md === 'function') {\n callback = md;\n md = null;\n }\n\n // use native implementation if possible and not disabled, note that\n // some node versions only support SHA-1, others allow digest to be changed\n if(forge.util.isNodejs && !forge.options.usePureJavaScript &&\n crypto.pbkdf2 && (md === null || typeof md !== 'object') &&\n (crypto.pbkdf2Sync.length > 4 || (!md || md === 'sha1'))) {\n if(typeof md !== 'string') {\n // default prf to SHA-1\n md = 'sha1';\n }\n p = Buffer.from(p, 'binary');\n s = Buffer.from(s, 'binary');\n if(!callback) {\n if(crypto.pbkdf2Sync.length === 4) {\n return crypto.pbkdf2Sync(p, s, c, dkLen).toString('binary');\n }\n return crypto.pbkdf2Sync(p, s, c, dkLen, md).toString('binary');\n }\n if(crypto.pbkdf2Sync.length === 4) {\n return crypto.pbkdf2(p, s, c, dkLen, function(err, key) {\n if(err) {\n return callback(err);\n }\n callback(null, key.toString('binary'));\n });\n }\n return crypto.pbkdf2(p, s, c, dkLen, md, function(err, key) {\n if(err) {\n return callback(err);\n }\n callback(null, key.toString('binary'));\n });\n }\n\n if(typeof md === 'undefined' || md === null) {\n // default prf to SHA-1\n md = 'sha1';\n }\n if(typeof md === 'string') {\n if(!(md in forge.md.algorithms)) {\n throw new Error('Unknown hash algorithm: ' + md);\n }\n md = forge.md[md].create();\n }\n\n var hLen = md.digestLength;\n\n /* 1. If dkLen > (2^32 - 1) * hLen, output \"derived key too long\" and\n stop. */\n if(dkLen > (0xFFFFFFFF * hLen)) {\n var err = new Error('Derived key is too long.');\n if(callback) {\n return callback(err);\n }\n throw err;\n }\n\n /* 2. Let len be the number of hLen-octet blocks in the derived key,\n rounding up, and let r be the number of octets in the last\n block:\n\n len = CEIL(dkLen / hLen),\n r = dkLen - (len - 1) * hLen. */\n var len = Math.ceil(dkLen / hLen);\n var r = dkLen - (len - 1) * hLen;\n\n /* 3. For each block of the derived key apply the function F defined\n below to the password P, the salt S, the iteration count c, and\n the block index to compute the block:\n\n T_1 = F(P, S, c, 1),\n T_2 = F(P, S, c, 2),\n ...\n T_len = F(P, S, c, len),\n\n where the function F is defined as the exclusive-or sum of the\n first c iterates of the underlying pseudorandom function PRF\n applied to the password P and the concatenation of the salt S\n and the block index i:\n\n F(P, S, c, i) = u_1 XOR u_2 XOR ... XOR u_c\n\n where\n\n u_1 = PRF(P, S || INT(i)),\n u_2 = PRF(P, u_1),\n ...\n u_c = PRF(P, u_{c-1}).\n\n Here, INT(i) is a four-octet encoding of the integer i, most\n significant octet first. */\n var prf = forge.hmac.create();\n prf.start(md, p);\n var dk = '';\n var xor, u_c, u_c1;\n\n // sync version\n if(!callback) {\n for(var i = 1; i <= len; ++i) {\n // PRF(P, S || INT(i)) (first iteration)\n prf.start(null, null);\n prf.update(s);\n prf.update(forge.util.int32ToBytes(i));\n xor = u_c1 = prf.digest().getBytes();\n\n // PRF(P, u_{c-1}) (other iterations)\n for(var j = 2; j <= c; ++j) {\n prf.start(null, null);\n prf.update(u_c1);\n u_c = prf.digest().getBytes();\n // F(p, s, c, i)\n xor = forge.util.xorBytes(xor, u_c, hLen);\n u_c1 = u_c;\n }\n\n /* 4. Concatenate the blocks and extract the first dkLen octets to\n produce a derived key DK:\n\n DK = T_1 || T_2 || ... || T_len<0..r-1> */\n dk += (i < len) ? xor : xor.substr(0, r);\n }\n /* 5. Output the derived key DK. */\n return dk;\n }\n\n // async version\n var i = 1, j;\n function outer() {\n if(i > len) {\n // done\n return callback(null, dk);\n }\n\n // PRF(P, S || INT(i)) (first iteration)\n prf.start(null, null);\n prf.update(s);\n prf.update(forge.util.int32ToBytes(i));\n xor = u_c1 = prf.digest().getBytes();\n\n // PRF(P, u_{c-1}) (other iterations)\n j = 2;\n inner();\n }\n\n function inner() {\n if(j <= c) {\n prf.start(null, null);\n prf.update(u_c1);\n u_c = prf.digest().getBytes();\n // F(p, s, c, i)\n xor = forge.util.xorBytes(xor, u_c, hLen);\n u_c1 = u_c;\n ++j;\n return forge.util.setImmediate(inner);\n }\n\n /* 4. Concatenate the blocks and extract the first dkLen octets to\n produce a derived key DK:\n\n DK = T_1 || T_2 || ... || T_len<0..r-1> */\n dk += (i < len) ? xor : xor.substr(0, r);\n\n ++i;\n outer();\n }\n\n outer();\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport AudioVideoEventAttributes from './AudioVideoEventAttributes';\nimport DeviceEventAttributes from './DeviceEventAttributes';\nimport VideoFXEventAttributes from './VideoFXEventAttributes';\n\n/**\n *\n * @param attributes Event attributes to flatten.\n * @returns flattened event attributes.\n * Note: This function needs to be extended to support 'Array', 'object'\n * as value types within the event attributes if added later.\n */\nconst flattenEventAttributes = (\n attributes: AudioVideoEventAttributes | DeviceEventAttributes | VideoFXEventAttributes\n): { [key: string]: string | number } => {\n const flattenedAttributes: { [key: string]: string | number } = {};\n for (const [key, value] of Object.entries(attributes)) {\n if (value === null || value === undefined || value === '') {\n continue;\n } else if (typeof value === 'number' || typeof value === 'string') {\n flattenedAttributes[key] = value;\n } else {\n throw new TypeError('Unhandled type received while flattening attributes.');\n }\n }\n return flattenedAttributes;\n};\n\nexport default flattenEventAttributes;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['cloudwatch'] = {};\nAWS.CloudWatch = Service.defineService('cloudwatch', ['2010-08-01']);\nObject.defineProperty(apiLoader.services['cloudwatch'], '2010-08-01', {\n get: function get() {\n var model = require('../apis/monitoring-2010-08-01.min.json');\n model.paginators = require('../apis/monitoring-2010-08-01.paginators.json').pagination;\n model.waiters = require('../apis/monitoring-2010-08-01.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.CloudWatch;\n","/**\n * Prime number generation API.\n *\n * @author Dave Longley\n *\n * Copyright (c) 2014 Digital Bazaar, Inc.\n */\nvar forge = require('./forge');\nrequire('./util');\nrequire('./jsbn');\nrequire('./random');\n\n(function() {\n\n// forge.prime already defined\nif(forge.prime) {\n module.exports = forge.prime;\n return;\n}\n\n/* PRIME API */\nvar prime = module.exports = forge.prime = forge.prime || {};\n\nvar BigInteger = forge.jsbn.BigInteger;\n\n// primes are 30k+i for i = 1, 7, 11, 13, 17, 19, 23, 29\nvar GCD_30_DELTA = [6, 4, 2, 4, 2, 4, 6, 2];\nvar THIRTY = new BigInteger(null);\nTHIRTY.fromInt(30);\nvar op_or = function(x, y) {return x|y;};\n\n/**\n * Generates a random probable prime with the given number of bits.\n *\n * Alternative algorithms can be specified by name as a string or as an\n * object with custom options like so:\n *\n * {\n * name: 'PRIMEINC',\n * options: {\n * maxBlockTime: ,\n * millerRabinTests: ,\n * workerScript: ,\n * workers: .\n * workLoad: the size of the work load, ie: number of possible prime\n * numbers for each web worker to check per work assignment,\n * (default: 100).\n * }\n * }\n *\n * @param bits the number of bits for the prime number.\n * @param options the options to use.\n * [algorithm] the algorithm to use (default: 'PRIMEINC').\n * [prng] a custom crypto-secure pseudo-random number generator to use,\n * that must define \"getBytesSync\".\n *\n * @return callback(err, num) called once the operation completes.\n */\nprime.generateProbablePrime = function(bits, options, callback) {\n if(typeof options === 'function') {\n callback = options;\n options = {};\n }\n options = options || {};\n\n // default to PRIMEINC algorithm\n var algorithm = options.algorithm || 'PRIMEINC';\n if(typeof algorithm === 'string') {\n algorithm = {name: algorithm};\n }\n algorithm.options = algorithm.options || {};\n\n // create prng with api that matches BigInteger secure random\n var prng = options.prng || forge.random;\n var rng = {\n // x is an array to fill with bytes\n nextBytes: function(x) {\n var b = prng.getBytesSync(x.length);\n for(var i = 0; i < x.length; ++i) {\n x[i] = b.charCodeAt(i);\n }\n }\n };\n\n if(algorithm.name === 'PRIMEINC') {\n return primeincFindPrime(bits, rng, algorithm.options, callback);\n }\n\n throw new Error('Invalid prime generation algorithm: ' + algorithm.name);\n};\n\nfunction primeincFindPrime(bits, rng, options, callback) {\n if('workers' in options) {\n return primeincFindPrimeWithWorkers(bits, rng, options, callback);\n }\n return primeincFindPrimeWithoutWorkers(bits, rng, options, callback);\n}\n\nfunction primeincFindPrimeWithoutWorkers(bits, rng, options, callback) {\n // initialize random number\n var num = generateRandom(bits, rng);\n\n /* Note: All primes are of the form 30k+i for i < 30 and gcd(30, i)=1. The\n number we are given is always aligned at 30k + 1. Each time the number is\n determined not to be prime we add to get to the next 'i', eg: if the number\n was at 30k + 1 we add 6. */\n var deltaIdx = 0;\n\n // get required number of MR tests\n var mrTests = getMillerRabinTests(num.bitLength());\n if('millerRabinTests' in options) {\n mrTests = options.millerRabinTests;\n }\n\n // find prime nearest to 'num' for maxBlockTime ms\n // 10 ms gives 5ms of leeway for other calculations before dropping\n // below 60fps (1000/60 == 16.67), but in reality, the number will\n // likely be higher due to an 'atomic' big int modPow\n var maxBlockTime = 10;\n if('maxBlockTime' in options) {\n maxBlockTime = options.maxBlockTime;\n }\n\n _primeinc(num, bits, rng, deltaIdx, mrTests, maxBlockTime, callback);\n}\n\nfunction _primeinc(num, bits, rng, deltaIdx, mrTests, maxBlockTime, callback) {\n var start = +new Date();\n do {\n // overflow, regenerate random number\n if(num.bitLength() > bits) {\n num = generateRandom(bits, rng);\n }\n // do primality test\n if(num.isProbablePrime(mrTests)) {\n return callback(null, num);\n }\n // get next potential prime\n num.dAddOffset(GCD_30_DELTA[deltaIdx++ % 8], 0);\n } while(maxBlockTime < 0 || (+new Date() - start < maxBlockTime));\n\n // keep trying later\n forge.util.setImmediate(function() {\n _primeinc(num, bits, rng, deltaIdx, mrTests, maxBlockTime, callback);\n });\n}\n\n// NOTE: This algorithm is indeterminate in nature because workers\n// run in parallel looking at different segments of numbers. Even if this\n// algorithm is run twice with the same input from a predictable RNG, it\n// may produce different outputs.\nfunction primeincFindPrimeWithWorkers(bits, rng, options, callback) {\n // web workers unavailable\n if(typeof Worker === 'undefined') {\n return primeincFindPrimeWithoutWorkers(bits, rng, options, callback);\n }\n\n // initialize random number\n var num = generateRandom(bits, rng);\n\n // use web workers to generate keys\n var numWorkers = options.workers;\n var workLoad = options.workLoad || 100;\n var range = workLoad * 30 / 8;\n var workerScript = options.workerScript || 'forge/prime.worker.js';\n if(numWorkers === -1) {\n return forge.util.estimateCores(function(err, cores) {\n if(err) {\n // default to 2\n cores = 2;\n }\n numWorkers = cores - 1;\n generate();\n });\n }\n generate();\n\n function generate() {\n // require at least 1 worker\n numWorkers = Math.max(1, numWorkers);\n\n // TODO: consider optimizing by starting workers outside getPrime() ...\n // note that in order to clean up they will have to be made internally\n // asynchronous which may actually be slower\n\n // start workers immediately\n var workers = [];\n for(var i = 0; i < numWorkers; ++i) {\n // FIXME: fix path or use blob URLs\n workers[i] = new Worker(workerScript);\n }\n var running = numWorkers;\n\n // listen for requests from workers and assign ranges to find prime\n for(var i = 0; i < numWorkers; ++i) {\n workers[i].addEventListener('message', workerMessage);\n }\n\n /* Note: The distribution of random numbers is unknown. Therefore, each\n web worker is continuously allocated a range of numbers to check for a\n random number until one is found.\n\n Every 30 numbers will be checked just 8 times, because prime numbers\n have the form:\n\n 30k+i, for i < 30 and gcd(30, i)=1 (there are 8 values of i for this)\n\n Therefore, if we want a web worker to run N checks before asking for\n a new range of numbers, each range must contain N*30/8 numbers.\n\n For 100 checks (workLoad), this is a range of 375. */\n\n var found = false;\n function workerMessage(e) {\n // ignore message, prime already found\n if(found) {\n return;\n }\n\n --running;\n var data = e.data;\n if(data.found) {\n // terminate all workers\n for(var i = 0; i < workers.length; ++i) {\n workers[i].terminate();\n }\n found = true;\n return callback(null, new BigInteger(data.prime, 16));\n }\n\n // overflow, regenerate random number\n if(num.bitLength() > bits) {\n num = generateRandom(bits, rng);\n }\n\n // assign new range to check\n var hex = num.toString(16);\n\n // start prime search\n e.target.postMessage({\n hex: hex,\n workLoad: workLoad\n });\n\n num.dAddOffset(range, 0);\n }\n }\n}\n\n/**\n * Generates a random number using the given number of bits and RNG.\n *\n * @param bits the number of bits for the number.\n * @param rng the random number generator to use.\n *\n * @return the random number.\n */\nfunction generateRandom(bits, rng) {\n var num = new BigInteger(bits, rng);\n // force MSB set\n var bits1 = bits - 1;\n if(!num.testBit(bits1)) {\n num.bitwiseTo(BigInteger.ONE.shiftLeft(bits1), op_or, num);\n }\n // align number on 30k+1 boundary\n num.dAddOffset(31 - num.mod(THIRTY).byteValue(), 0);\n return num;\n}\n\n/**\n * Returns the required number of Miller-Rabin tests to generate a\n * prime with an error probability of (1/2)^80.\n *\n * See Handbook of Applied Cryptography Chapter 4, Table 4.4.\n *\n * @param bits the bit size.\n *\n * @return the required number of iterations.\n */\nfunction getMillerRabinTests(bits) {\n if(bits <= 100) return 27;\n if(bits <= 150) return 18;\n if(bits <= 200) return 15;\n if(bits <= 250) return 12;\n if(bits <= 300) return 9;\n if(bits <= 350) return 8;\n if(bits <= 400) return 7;\n if(bits <= 500) return 6;\n if(bits <= 600) return 5;\n if(bits <= 800) return 4;\n if(bits <= 1250) return 3;\n return 2;\n}\n\n})();\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\n/*\n* When using automatic language identification for streaming transcription,\n* Amazon Transcribe provides the language codes of the identified languages and their associated confidence scores.\n* languageCode refers to one of language code from the set of languageOptions provided during start transcription call\n* score refers to the confidence score is a value between zero and one; a larger value indicates a higher confidence in the identified language.\n* Sample LanguageWithScore would look similar to this :\n* \"LanguageIdentification\": [\n {\n \"LanguageCode\": \"en-US\",\n \"Score\": 0.805\n },\n {\n \"LanguageCode\": \"ja-JP\",\n \"Score\": 0.195\n }\n ]\n*/\nexport default class TranscriptLanguageWithScore {\n languageCode: string;\n score: number;\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\n/**\n * [[VideoTileState]] encapsulates the state of a [[VideoTile]]\n */\nexport default class VideoTileState {\n /**\n * The unique identifier for the [[VideoTile]] managed by [[VideoTileController]]. Each attendee can have at most one tileId.\n */\n tileId: number | null = null;\n\n /**\n * Indication of whether tile is associated with local video.\n */\n localTile: boolean = false;\n\n /**\n * Indication of whether the tile associated with the local attendee has started to play.\n */\n localTileStarted: boolean = false;\n\n /**\n * Indication of whether the tile has content-sharing video.\n */\n isContent: boolean = false;\n\n /**\n * Indication of whether the tile has active video stream. This value may be somewhat arbitrary in how it is calculated,\n * it is recommended to use the more specific values (e.g. `paused`, `boundVideoElement`, and `boundVideoStream`) to\n * determine activity as appropriate for your application.\n */\n active: boolean = false;\n\n /**\n * Indication of whether the tile has paused video stream.\n */\n paused: boolean = false;\n\n /**\n * Indication of whether the remote video is paused at publishing attendee. This field is not supported.\n */\n poorConnection: boolean = false;\n\n /**\n * The attendee id associated with the [[VideoTile]].\n */\n boundAttendeeId: string | null = null;\n\n /**\n * The user id associated with the [[VideoTile]].\n */\n boundExternalUserId: string | null = null;\n\n /**\n * The video stream bound with the [[VideoTile]].\n */\n boundVideoStream: MediaStream | null = null;\n\n /**\n * The HTMLVideoElement bound with the [[VideoTile]].\n */\n boundVideoElement: HTMLVideoElement | null = null;\n\n /**\n * The nameplate for the [[VideoTile]]. SDK users should use boundExternalUserId for user id instead of this field.\n */\n nameplate: string | null = null;\n\n /**\n * The intrinsic width of the video stream upon binding with the [[VideoTile]].\n * Video stream intrinsic width could change and developers should use HTMLVideoElement listener for actual intrinsic width.\n */\n videoStreamContentWidth: number | null = null;\n\n /**\n * The intrinsic height of the video stream upon binding with the [[VideoTile]]\n * Video stream intrinsic height could change and developers should use HTMLVideoElement listener for actual intrinsic height.\n */\n videoStreamContentHeight: number | null = null;\n\n /**\n * The CSS width in pixel of the HTMLVideoElement upon binding with the [[VideoTile]].\n */\n videoElementCSSWidthPixels: number | null = null;\n\n /**\n * The CSS height in pixel of the HTMLVideoElement upon binding with the [[VideoTile]].\n */\n videoElementCSSHeightPixels: number | null = null;\n\n /**\n * The device pixel ratio of the current display monitor.\n */\n devicePixelRatio: number = 0;\n\n /**\n * The physical width in pixel of the HTMLVideoElement upon binding with the [[VideoTile]].\n */\n videoElementPhysicalWidthPixels: number | null = null;\n\n /**\n * The physical height in pixel of the HTMLVideoElement upon binding with the [[VideoTile]].\n */\n videoElementPhysicalHeightPixels: number | null = null;\n\n /**\n * The unique identifier published by server to associate with bound video stream. It is defined in [[SignalingProtocol.proto]].\n * Developers should avoid using this field directly.\n */\n streamId: number | null = null;\n\n /**\n * The unique identifier published by server to associate with remote video source. It is defined in [[SignalingProtocol.proto]].\n * Developers should avoid using this field directly.\n */\n groupId: number | null = null;\n\n clone(): VideoTileState {\n const cloned = new VideoTileState();\n cloned.tileId = this.tileId;\n cloned.localTile = this.localTile;\n cloned.isContent = this.isContent;\n cloned.active = this.active;\n cloned.paused = this.paused;\n cloned.poorConnection = this.poorConnection;\n cloned.boundAttendeeId = this.boundAttendeeId;\n cloned.boundExternalUserId = this.boundExternalUserId;\n cloned.boundVideoStream = this.boundVideoStream;\n cloned.boundVideoElement = this.boundVideoElement;\n cloned.nameplate = this.nameplate;\n cloned.videoStreamContentWidth = this.videoStreamContentWidth;\n cloned.videoStreamContentHeight = this.videoStreamContentHeight;\n cloned.videoElementCSSWidthPixels = this.videoElementCSSWidthPixels;\n cloned.videoElementCSSHeightPixels = this.videoElementCSSHeightPixels;\n cloned.devicePixelRatio = this.devicePixelRatio;\n cloned.videoElementPhysicalWidthPixels = this.videoElementPhysicalWidthPixels;\n cloned.videoElementPhysicalHeightPixels = this.videoElementPhysicalHeightPixels;\n cloned.streamId = this.streamId;\n cloned.groupId = this.groupId;\n return cloned;\n }\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n// If obj.hasOwnProperty has been overridden, then calling\n// obj.hasOwnProperty(prop) will break.\n// See: https://github.com/joyent/node/issues/1707\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nmodule.exports = function(qs, sep, eq, options) {\n sep = sep || '&';\n eq = eq || '=';\n var obj = {};\n\n if (typeof qs !== 'string' || qs.length === 0) {\n return obj;\n }\n\n var regexp = /\\+/g;\n qs = qs.split(sep);\n\n var maxKeys = 1000;\n if (options && typeof options.maxKeys === 'number') {\n maxKeys = options.maxKeys;\n }\n\n var len = qs.length;\n // maxKeys <= 0 means that we should not limit keys count\n if (maxKeys > 0 && len > maxKeys) {\n len = maxKeys;\n }\n\n for (var i = 0; i < len; ++i) {\n var x = qs[i].replace(regexp, '%20'),\n idx = x.indexOf(eq),\n kstr, vstr, k, v;\n\n if (idx >= 0) {\n kstr = x.substr(0, idx);\n vstr = x.substr(idx + 1);\n } else {\n kstr = x;\n vstr = '';\n }\n\n k = decodeURIComponent(kstr);\n v = decodeURIComponent(vstr);\n\n if (!hasOwnProperty(obj, k)) {\n obj[k] = v;\n } else if (Array.isArray(obj[k])) {\n obj[k].push(v);\n } else {\n obj[k] = [obj[k], v];\n }\n }\n\n return obj;\n};\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['iotanalytics'] = {};\nAWS.IoTAnalytics = Service.defineService('iotanalytics', ['2017-11-27']);\nObject.defineProperty(apiLoader.services['iotanalytics'], '2017-11-27', {\n get: function get() {\n var model = require('../apis/iotanalytics-2017-11-27.min.json');\n model.paginators = require('../apis/iotanalytics-2017-11-27.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.IoTAnalytics;\n","'use strict';\n\nvar $TypeError = require('es-errors/type');\nvar inspect = require('object-inspect');\nvar getSideChannelList = require('side-channel-list');\nvar getSideChannelMap = require('side-channel-map');\nvar getSideChannelWeakMap = require('side-channel-weakmap');\n\nvar makeChannel = getSideChannelWeakMap || getSideChannelMap || getSideChannelList;\n\n/** @type {import('.')} */\nmodule.exports = function getSideChannel() {\n\t/** @typedef {ReturnType} Channel */\n\n\t/** @type {Channel | undefined} */ var $channelData;\n\n\t/** @type {Channel} */\n\tvar channel = {\n\t\tassert: function (key) {\n\t\t\tif (!channel.has(key)) {\n\t\t\t\tthrow new $TypeError('Side channel does not contain ' + inspect(key));\n\t\t\t}\n\t\t},\n\t\t'delete': function (key) {\n\t\t\treturn !!$channelData && $channelData['delete'](key);\n\t\t},\n\t\tget: function (key) {\n\t\t\treturn $channelData && $channelData.get(key);\n\t\t},\n\t\thas: function (key) {\n\t\t\treturn !!$channelData && $channelData.has(key);\n\t\t},\n\t\tset: function (key, value) {\n\t\t\tif (!$channelData) {\n\t\t\t\t$channelData = makeChannel();\n\t\t\t}\n\n\t\t\t$channelData.set(key, value);\n\t\t}\n\t};\n\t// @ts-expect-error TODO: figure out why this is erroring\n\treturn channel;\n};\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar isCallable = require('../internals/is-callable');\n\nvar WeakMap = globalThis.WeakMap;\n\nmodule.exports = isCallable(WeakMap) && /native code/.test(String(WeakMap));\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { MeetingSessionCredentials, MeetingSessionStatus, MeetingSessionStatusCode } from '..';\nimport AudioVideoControllerState from '../audiovideocontroller/AudioVideoControllerState';\nimport Logger from '../logger/Logger';\nimport SignalingClient from '../signalingclient/SignalingClient';\nimport SignalingClientEvent from '../signalingclient/SignalingClientEvent';\nimport SignalingClientEventType from '../signalingclient/SignalingClientEventType';\nimport SignalingClientObserver from '../signalingclientobserver/SignalingClientObserver';\nimport { SdkSignalFrame } from '../signalingprotocol/SignalingProtocol.js';\nimport TaskCanceler from '../taskcanceler/TaskCanceler';\nimport BaseTask from './BaseTask';\n\n/**\n * [[PromoteToPrimaryMeetingTask]] sends a `SdkSignalFrame.PrimaryMeetingJoin` and waits for\n * a `SdkSignalFrame.PrimaryMeetingJoinAck` frame.\n */\nexport default class PromoteToPrimaryMeetingTask extends BaseTask {\n protected taskName = 'PromoteToPrimaryMeetingTask';\n private taskCanceler: TaskCanceler | null = null;\n\n constructor(\n private context: AudioVideoControllerState,\n private credentials: MeetingSessionCredentials,\n private completionCallback: (status: MeetingSessionStatus) => void\n ) {\n super(context.logger);\n }\n\n cancel(): void {\n if (this.taskCanceler) {\n this.taskCanceler.cancel();\n this.taskCanceler = null;\n }\n }\n\n async run(): Promise {\n if (this.context.signalingClient.ready()) {\n this.context.signalingClient.promoteToPrimaryMeeting(this.credentials);\n this.context.logger.info('Sent request to join primary meeting');\n await this.receivePrimaryMeetingJoinAck();\n } else {\n this.completionCallback(\n new MeetingSessionStatus(MeetingSessionStatusCode.SignalingRequestFailed)\n );\n }\n }\n\n private receivePrimaryMeetingJoinAck(): Promise {\n return new Promise((resolve, _) => {\n class Interceptor implements SignalingClientObserver, TaskCanceler {\n constructor(\n private signalingClient: SignalingClient,\n private completionCallback: (status: MeetingSessionStatus) => void,\n private logger: Logger\n ) {}\n\n cancel(): void {\n this.signalingClient.removeObserver(this);\n // Currently only cancel would come from timeout. Should\n // be rare enough (ignoring bugs) that we don't need to bother\n // retrying.\n this.completionCallback(\n new MeetingSessionStatus(MeetingSessionStatusCode.SignalingRequestFailed)\n );\n resolve();\n }\n\n handleSignalingClientEvent(event: SignalingClientEvent): void {\n if (event.isConnectionTerminated()) {\n this.signalingClient.removeObserver(this);\n this.logger.info('PromoteToPrimaryMeetingTask connection terminated');\n // This would happen either in happy or unhappy disconnections. The\n // timing here is rare enough (ignoring bugs) that we don't need to bother\n // retrying the unhappy case.\n this.completionCallback(\n new MeetingSessionStatus(MeetingSessionStatusCode.SignalingRequestFailed)\n );\n resolve();\n }\n\n if (\n event.type === SignalingClientEventType.ReceivedSignalFrame &&\n event.message.type === SdkSignalFrame.Type.PRIMARY_MEETING_JOIN_ACK\n ) {\n this.signalingClient.removeObserver(this);\n this.logger.info('Got a primary meeting join ACK');\n this.completionCallback(MeetingSessionStatus.fromSignalFrame(event.message));\n resolve();\n }\n }\n }\n\n const interceptor = new Interceptor(\n this.context.signalingClient,\n this.completionCallback,\n this.context.logger\n );\n this.taskCanceler = interceptor;\n this.context.signalingClient.registerObserver(interceptor);\n });\n }\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport AudioVideoControllerState from '../audiovideocontroller/AudioVideoControllerState';\nimport AudioVideoObserver from '../audiovideoobserver/AudioVideoObserver';\nimport MeetingSessionVideoAvailability from '../meetingsession/MeetingSessionVideoAvailability';\nimport DefaultModality from '../modality/DefaultModality';\nimport RemovableObserver from '../removableobserver/RemovableObserver';\nimport VideoCodecCapability from '../sdp/VideoCodecCapability';\nimport SignalingClientEvent from '../signalingclient/SignalingClientEvent';\nimport SignalingClientEventType from '../signalingclient/SignalingClientEventType';\nimport SignalingClientObserver from '../signalingclientobserver/SignalingClientObserver';\nimport {\n SdkIndexFrame,\n SdkSignalFrame,\n SdkStreamServiceType,\n} from '../signalingprotocol/SignalingProtocol.js';\nimport { Maybe } from '../utils/Types';\nimport VideoDownlinkBandwidthPolicy from '../videodownlinkbandwidthpolicy/VideoDownlinkBandwidthPolicy';\nimport VideoSource from '../videosource/VideoSource';\nimport VideoStreamIdSet from '../videostreamidset/VideoStreamIdSet';\nimport VideoUplinkBandwidthPolicy from '../videouplinkbandwidthpolicy/VideoUplinkBandwidthPolicy';\nimport BaseTask from './BaseTask';\n\n/*\n * [[ReceiveVideoStreamIndexTask]] receives [[SdkIndexFrame]] and updates [[VideoUplinkBandwidthPolicy]] and [[VideoDownlinkBandwidthPolicy]].\n */\nexport default class ReceiveVideoStreamIndexTask\n extends BaseTask\n implements SignalingClientObserver, RemovableObserver {\n protected taskName = 'ReceiveVideoStreamIndexTask';\n\n // See comment above invocation of `pauseIngestion` in `DefaultAudioVideoController`\n // for explanation.\n private isIngestionPaused: boolean = false;\n private pendingIndex: SdkIndexFrame | null = null;\n\n constructor(private context: AudioVideoControllerState) {\n super(context.logger);\n }\n\n removeObserver(): void {\n this.context.signalingClient.removeObserver(this);\n }\n\n async run(): Promise {\n this.handleIndexFrame(this.context.indexFrame);\n this.context.signalingClient.registerObserver(this);\n this.context.removableObservers.push(this);\n }\n\n handleSignalingClientEvent(event: SignalingClientEvent): void {\n if (\n event.type !== SignalingClientEventType.ReceivedSignalFrame ||\n event.message.type !== SdkSignalFrame.Type.INDEX\n ) {\n return;\n }\n // @ts-ignore: force cast to SdkIndexFrame\n const indexFrame: SdkIndexFrame = event.message.index;\n this.context.logger.info(`received new index ${JSON.stringify(indexFrame)}`);\n this.handleIndexFrame(indexFrame);\n }\n\n pauseIngestion(): void {\n this.isIngestionPaused = true;\n }\n\n resumeIngestion(): void {\n if (!this.isIngestionPaused) {\n // Do not recheck subcribe if it wasn't paused to begin with.\n return;\n }\n this.isIngestionPaused = false;\n if (this.pendingIndex) {\n this.context.logger.info('Resuming index ingestion with pending index');\n this.handleIndexFrame(this.pendingIndex);\n }\n }\n\n private handleIndexFrame(indexFrame: SdkIndexFrame | null): void {\n if (!indexFrame) {\n return;\n }\n\n if (this.isIngestionPaused) {\n this.context.logger.info(`Index ingestion is paused, setting most recent index as pending`);\n this.pendingIndex = indexFrame;\n return;\n } else {\n this.pendingIndex = null;\n }\n\n // Filter out self content share video\n const selfAttendeeId = this.context.audioVideoController.configuration.credentials.attendeeId;\n indexFrame.sources = indexFrame.sources.filter(source => {\n const modality = new DefaultModality(source.attendeeId);\n return !(\n modality.base() === selfAttendeeId && modality.hasModality(DefaultModality.MODALITY_CONTENT)\n );\n });\n\n const {\n videoStreamIndex,\n videoDownlinkBandwidthPolicy,\n videoUplinkBandwidthPolicy,\n } = this.context;\n\n const oldVideoSources = videoStreamIndex.allVideoSendingSourcesExcludingSelf(selfAttendeeId);\n videoStreamIndex.integrateIndexFrame(indexFrame);\n videoDownlinkBandwidthPolicy.updateIndex(videoStreamIndex);\n videoUplinkBandwidthPolicy.updateIndex(videoStreamIndex);\n\n this.resubscribe(videoDownlinkBandwidthPolicy, videoUplinkBandwidthPolicy);\n this.updateVideoAvailability(indexFrame);\n this.handleIndexVideosPausedAtSource();\n if (indexFrame.supportedReceiveCodecIntersection.length > 0) {\n this.handleSupportedVideoReceiveCodecIntersection(indexFrame);\n }\n // `forEachObserver`is asynchronous anyways so it doesn't matter (for better or worse) whether we\n // trigger it before or after the policy update + possible resubscribe kickoff\n const newVideoSources = videoStreamIndex.allVideoSendingSourcesExcludingSelf(selfAttendeeId);\n if (!this.areVideoSourcesEqual(oldVideoSources, newVideoSources)) {\n this.context.audioVideoController.forEachObserver((observer: AudioVideoObserver) => {\n Maybe.of(observer.remoteVideoSourcesDidChange).map(f => f.bind(observer)(newVideoSources));\n });\n }\n }\n\n private areVideoSourcesEqual(\n oldVideoSources: VideoSource[],\n newVideoSources: VideoSource[]\n ): boolean {\n if (oldVideoSources.length !== newVideoSources.length) {\n return false;\n }\n const compare = (videoSourceA: VideoSource, videoSourceB: VideoSource): number =>\n videoSourceA.attendee.attendeeId.localeCompare(videoSourceB.attendee.attendeeId);\n\n const sortedOldVideoSources = [...oldVideoSources].sort(compare);\n const sortedNewVideoSources = [...newVideoSources].sort(compare);\n\n for (let i = 0; i < sortedOldVideoSources.length; i++) {\n if (\n sortedOldVideoSources[i].attendee.attendeeId !==\n sortedNewVideoSources[i].attendee.attendeeId\n ) {\n return false;\n }\n }\n return true;\n }\n\n private resubscribe(\n videoDownlinkBandwidthPolicy: VideoDownlinkBandwidthPolicy,\n videoUplinkBandwidthPolicy: VideoUplinkBandwidthPolicy\n ): void {\n const resubscribeForDownlink: boolean = videoDownlinkBandwidthPolicy.wantsResubscribe();\n const resubscribeForUplink: boolean =\n (this.context.videoDuplexMode === SdkStreamServiceType.TX ||\n this.context.videoDuplexMode === SdkStreamServiceType.DUPLEX) &&\n videoUplinkBandwidthPolicy.wantsResubscribe();\n const shouldResubscribe = resubscribeForDownlink || resubscribeForUplink;\n this.logger.info(\n `should resubscribe: ${shouldResubscribe} (downlink: ${resubscribeForDownlink} uplink: ${resubscribeForUplink})`\n );\n if (!shouldResubscribe) {\n return;\n }\n\n const videoSubscriptionIdSet = videoDownlinkBandwidthPolicy.chooseSubscriptions();\n this.context.videosToReceive = videoSubscriptionIdSet.truncate(\n this.context.videoSubscriptionLimit\n );\n\n if (videoSubscriptionIdSet.size() > this.context.videosToReceive.size()) {\n this.logger.warn(\n `Video receive limit exceeded. Limiting the videos to ${this.context.videosToReceive.size()}. Please consider using AllHighestVideoBandwidthPolicy or VideoPriorityBasedPolicy along with chooseRemoteVideoSources api to select the video sources to be displayed.`\n );\n }\n\n this.context.videoCaptureAndEncodeParameter = videoUplinkBandwidthPolicy.chooseCaptureAndEncodeParameters();\n this.logger.info(\n `trigger resubscribe for up=${resubscribeForUplink} down=${resubscribeForDownlink}; videosToReceive=[${this.context.videosToReceive.array()}] captureParams=${JSON.stringify(\n this.context.videoCaptureAndEncodeParameter\n )}`\n );\n this.context.audioVideoController.update({ needsRenegotiation: false });\n }\n\n private updateVideoAvailability(indexFrame: SdkIndexFrame): void {\n if (!this.context.videosToReceive) {\n this.logger.error('videosToReceive must be set in the meeting context.');\n return;\n }\n\n const videoAvailability = new MeetingSessionVideoAvailability();\n videoAvailability.remoteVideoAvailable = !this.context.videosToReceive.empty();\n videoAvailability.canStartLocalVideo = !indexFrame.atCapacity;\n if (\n !this.context.lastKnownVideoAvailability ||\n !this.context.lastKnownVideoAvailability.equal(videoAvailability)\n ) {\n this.context.lastKnownVideoAvailability = videoAvailability.clone();\n this.context.audioVideoController.forEachObserver((observer: AudioVideoObserver) => {\n Maybe.of(observer.videoAvailabilityDidChange).map(f =>\n f.bind(observer)(videoAvailability.clone())\n );\n });\n }\n }\n\n private handleSupportedVideoReceiveCodecIntersection(index: SdkIndexFrame): void {\n if (this.context.videoSendCodecPreferences === undefined) {\n return;\n }\n\n // The following list contains the configured send codec preferences filtered to\n // only what is supported by the meeting\n const newMeetingSupportedVideoSendCodecPreferences: VideoCodecCapability[] = [];\n // Will be set to true if we need to force a negotiation to change the codec\n let willNeedUpdate = false;\n\n // Intersect `this.context.videoSendCodecPreferences` with `index.supportedReceiveCodecIntersection`\n // and filter out any send video codecs we have determined to be degraded\n for (const capability of this.context.videoSendCodecPreferences) {\n if (\n this.context.degradedVideoSendCodecs.some(degradedCapability =>\n capability.equals(degradedCapability)\n )\n ) {\n this.logger.info(\n `Skipping ${capability.codecName} since the codec has been identfied as degraded`\n );\n continue;\n }\n for (const signaledCapability of index.supportedReceiveCodecIntersection) {\n if (capability.equals(VideoCodecCapability.fromSignaled(signaledCapability))) {\n newMeetingSupportedVideoSendCodecPreferences.push(capability);\n break;\n }\n }\n }\n\n if (newMeetingSupportedVideoSendCodecPreferences.length > 0) {\n // We need to renegotiate if we are currently sending a codec that is no longer supported in the call, or if we can\n // start sending a higher preference codec again (due to a constrained remote attendee leaving)\n\n // First we find the first codec from our send preferences that has already been intersected with the\n // codecs supported by the meeting, that we know we can support. This is what we want to send.\n const firstMatchingCodecPreference = newMeetingSupportedVideoSendCodecPreferences.find(\n capability =>\n this.context.prioritizedSendVideoCodecCapabilities.some(prioritizedCapability =>\n capability.equals(prioritizedCapability)\n )\n );\n // If that codec is not what we are sending, trigger an update\n if (\n this.context.currentVideoSendCodec !== undefined &&\n (firstMatchingCodecPreference === undefined ||\n !this.context.currentVideoSendCodec.equals(firstMatchingCodecPreference))\n ) {\n willNeedUpdate = true;\n }\n this.context.meetingSupportedVideoSendCodecPreferences = newMeetingSupportedVideoSendCodecPreferences;\n } else {\n this.logger.warn(\n 'Interesection of meeting receive codec support and send codec preferences has no overlap, falling back to just values provided in `setVideoCodecSendPreferences`'\n );\n this.context.meetingSupportedVideoSendCodecPreferences = undefined;\n }\n\n if (this.context.videoUplinkBandwidthPolicy.setMeetingSupportedVideoSendCodecs) {\n this.context.videoUplinkBandwidthPolicy.setMeetingSupportedVideoSendCodecs(\n this.context.meetingSupportedVideoSendCodecPreferences,\n this.context.videoSendCodecPreferences\n );\n }\n\n if (willNeedUpdate) {\n this.context.audioVideoController.update({ needsRenegotiation: true });\n }\n }\n\n private handleIndexVideosPausedAtSource(): void {\n const streamsPausedAtSource: VideoStreamIdSet = this.context.videoStreamIndex.streamsPausedAtSource();\n for (const tile of this.context.videoTileController.getAllVideoTiles()) {\n const tileState = tile.state();\n if (streamsPausedAtSource.contain(tileState.streamId)) {\n if (tile.markPoorConnection()) {\n this.logger.info(`marks the tile ${tileState.tileId} as having a poor connection`);\n }\n } else {\n if (tile.unmarkPoorConnection()) {\n this.logger.info(`unmarks the tile ${tileState.tileId} as having a poor connection`);\n }\n }\n }\n }\n}\n","// Copyright (c) 2005 Tom Wu\n// All Rights Reserved.\n// See \"LICENSE\" for details.\n\n// Basic JavaScript BN library - subset useful for RSA encryption.\n\n/*\nLicensing (LICENSE)\n-------------------\n\nThis software is covered under the following copyright:\n*/\n/*\n * Copyright (c) 2003-2005 Tom Wu\n * All Rights Reserved.\n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS-IS\" AND WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY\n * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.\n *\n * IN NO EVENT SHALL TOM WU BE LIABLE FOR ANY SPECIAL, INCIDENTAL,\n * INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, OR ANY DAMAGES WHATSOEVER\n * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER OR NOT ADVISED OF\n * THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF LIABILITY, ARISING OUT\n * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n *\n * In addition, the following condition applies:\n *\n * All redistributions must retain an intact copy of this copyright notice\n * and disclaimer.\n */\n/*\nAddress all questions regarding this license to:\n\n Tom Wu\n tjw@cs.Stanford.EDU\n*/\nvar forge = require('./forge');\n\nmodule.exports = forge.jsbn = forge.jsbn || {};\n\n// Bits per digit\nvar dbits;\n\n// JavaScript engine analysis\nvar canary = 0xdeadbeefcafe;\nvar j_lm = ((canary&0xffffff)==0xefcafe);\n\n// (public) Constructor\nfunction BigInteger(a,b,c) {\n this.data = [];\n if(a != null)\n if(\"number\" == typeof a) this.fromNumber(a,b,c);\n else if(b == null && \"string\" != typeof a) this.fromString(a,256);\n else this.fromString(a,b);\n}\nforge.jsbn.BigInteger = BigInteger;\n\n// return new, unset BigInteger\nfunction nbi() { return new BigInteger(null); }\n\n// am: Compute w_j += (x*this_i), propagate carries,\n// c is initial carry, returns final carry.\n// c < 3*dvalue, x < 2*dvalue, this_i < dvalue\n// We need to select the fastest one that works in this environment.\n\n// am1: use a single mult and divide to get the high bits,\n// max digit bits should be 26 because\n// max internal value = 2*dvalue^2-2*dvalue (< 2^53)\nfunction am1(i,x,w,j,c,n) {\n while(--n >= 0) {\n var v = x*this.data[i++]+w.data[j]+c;\n c = Math.floor(v/0x4000000);\n w.data[j++] = v&0x3ffffff;\n }\n return c;\n}\n// am2 avoids a big mult-and-extract completely.\n// Max digit bits should be <= 30 because we do bitwise ops\n// on values up to 2*hdvalue^2-hdvalue-1 (< 2^31)\nfunction am2(i,x,w,j,c,n) {\n var xl = x&0x7fff, xh = x>>15;\n while(--n >= 0) {\n var l = this.data[i]&0x7fff;\n var h = this.data[i++]>>15;\n var m = xh*l+h*xl;\n l = xl*l+((m&0x7fff)<<15)+w.data[j]+(c&0x3fffffff);\n c = (l>>>30)+(m>>>15)+xh*h+(c>>>30);\n w.data[j++] = l&0x3fffffff;\n }\n return c;\n}\n// Alternately, set max digit bits to 28 since some\n// browsers slow down when dealing with 32-bit numbers.\nfunction am3(i,x,w,j,c,n) {\n var xl = x&0x3fff, xh = x>>14;\n while(--n >= 0) {\n var l = this.data[i]&0x3fff;\n var h = this.data[i++]>>14;\n var m = xh*l+h*xl;\n l = xl*l+((m&0x3fff)<<14)+w.data[j]+c;\n c = (l>>28)+(m>>14)+xh*h;\n w.data[j++] = l&0xfffffff;\n }\n return c;\n}\n\n// node.js (no browser)\nif(typeof(navigator) === 'undefined')\n{\n BigInteger.prototype.am = am3;\n dbits = 28;\n} else if(j_lm && (navigator.appName == \"Microsoft Internet Explorer\")) {\n BigInteger.prototype.am = am2;\n dbits = 30;\n} else if(j_lm && (navigator.appName != \"Netscape\")) {\n BigInteger.prototype.am = am1;\n dbits = 26;\n} else { // Mozilla/Netscape seems to prefer am3\n BigInteger.prototype.am = am3;\n dbits = 28;\n}\n\nBigInteger.prototype.DB = dbits;\nBigInteger.prototype.DM = ((1<= 0; --i) r.data[i] = this.data[i];\n r.t = this.t;\n r.s = this.s;\n}\n\n// (protected) set from integer value x, -DV <= x < DV\nfunction bnpFromInt(x) {\n this.t = 1;\n this.s = (x<0)?-1:0;\n if(x > 0) this.data[0] = x;\n else if(x < -1) this.data[0] = x+this.DV;\n else this.t = 0;\n}\n\n// return bigint initialized to value\nfunction nbv(i) { var r = nbi(); r.fromInt(i); return r; }\n\n// (protected) set from string and radix\nfunction bnpFromString(s,b) {\n var k;\n if(b == 16) k = 4;\n else if(b == 8) k = 3;\n else if(b == 256) k = 8; // byte array\n else if(b == 2) k = 1;\n else if(b == 32) k = 5;\n else if(b == 4) k = 2;\n else { this.fromRadix(s,b); return; }\n this.t = 0;\n this.s = 0;\n var i = s.length, mi = false, sh = 0;\n while(--i >= 0) {\n var x = (k==8)?s[i]&0xff:intAt(s,i);\n if(x < 0) {\n if(s.charAt(i) == \"-\") mi = true;\n continue;\n }\n mi = false;\n if(sh == 0)\n this.data[this.t++] = x;\n else if(sh+k > this.DB) {\n this.data[this.t-1] |= (x&((1<<(this.DB-sh))-1))<>(this.DB-sh));\n } else\n this.data[this.t-1] |= x<= this.DB) sh -= this.DB;\n }\n if(k == 8 && (s[0]&0x80) != 0) {\n this.s = -1;\n if(sh > 0) this.data[this.t-1] |= ((1<<(this.DB-sh))-1)< 0 && this.data[this.t-1] == c) --this.t;\n}\n\n// (public) return string representation in given radix\nfunction bnToString(b) {\n if(this.s < 0) return \"-\"+this.negate().toString(b);\n var k;\n if(b == 16) k = 4;\n else if(b == 8) k = 3;\n else if(b == 2) k = 1;\n else if(b == 32) k = 5;\n else if(b == 4) k = 2;\n else return this.toRadix(b);\n var km = (1< 0) {\n if(p < this.DB && (d = this.data[i]>>p) > 0) { m = true; r = int2char(d); }\n while(i >= 0) {\n if(p < k) {\n d = (this.data[i]&((1<>(p+=this.DB-k);\n } else {\n d = (this.data[i]>>(p-=k))&km;\n if(p <= 0) { p += this.DB; --i; }\n }\n if(d > 0) m = true;\n if(m) r += int2char(d);\n }\n }\n return m?r:\"0\";\n}\n\n// (public) -this\nfunction bnNegate() { var r = nbi(); BigInteger.ZERO.subTo(this,r); return r; }\n\n// (public) |this|\nfunction bnAbs() { return (this.s<0)?this.negate():this; }\n\n// (public) return + if this > a, - if this < a, 0 if equal\nfunction bnCompareTo(a) {\n var r = this.s-a.s;\n if(r != 0) return r;\n var i = this.t;\n r = i-a.t;\n if(r != 0) return (this.s<0)?-r:r;\n while(--i >= 0) if((r=this.data[i]-a.data[i]) != 0) return r;\n return 0;\n}\n\n// returns bit length of the integer x\nfunction nbits(x) {\n var r = 1, t;\n if((t=x>>>16) != 0) { x = t; r += 16; }\n if((t=x>>8) != 0) { x = t; r += 8; }\n if((t=x>>4) != 0) { x = t; r += 4; }\n if((t=x>>2) != 0) { x = t; r += 2; }\n if((t=x>>1) != 0) { x = t; r += 1; }\n return r;\n}\n\n// (public) return the number of bits in \"this\"\nfunction bnBitLength() {\n if(this.t <= 0) return 0;\n return this.DB*(this.t-1)+nbits(this.data[this.t-1]^(this.s&this.DM));\n}\n\n// (protected) r = this << n*DB\nfunction bnpDLShiftTo(n,r) {\n var i;\n for(i = this.t-1; i >= 0; --i) r.data[i+n] = this.data[i];\n for(i = n-1; i >= 0; --i) r.data[i] = 0;\n r.t = this.t+n;\n r.s = this.s;\n}\n\n// (protected) r = this >> n*DB\nfunction bnpDRShiftTo(n,r) {\n for(var i = n; i < this.t; ++i) r.data[i-n] = this.data[i];\n r.t = Math.max(this.t-n,0);\n r.s = this.s;\n}\n\n// (protected) r = this << n\nfunction bnpLShiftTo(n,r) {\n var bs = n%this.DB;\n var cbs = this.DB-bs;\n var bm = (1<= 0; --i) {\n r.data[i+ds+1] = (this.data[i]>>cbs)|c;\n c = (this.data[i]&bm)<= 0; --i) r.data[i] = 0;\n r.data[ds] = c;\n r.t = this.t+ds+1;\n r.s = this.s;\n r.clamp();\n}\n\n// (protected) r = this >> n\nfunction bnpRShiftTo(n,r) {\n r.s = this.s;\n var ds = Math.floor(n/this.DB);\n if(ds >= this.t) { r.t = 0; return; }\n var bs = n%this.DB;\n var cbs = this.DB-bs;\n var bm = (1<>bs;\n for(var i = ds+1; i < this.t; ++i) {\n r.data[i-ds-1] |= (this.data[i]&bm)<>bs;\n }\n if(bs > 0) r.data[this.t-ds-1] |= (this.s&bm)<>= this.DB;\n }\n if(a.t < this.t) {\n c -= a.s;\n while(i < this.t) {\n c += this.data[i];\n r.data[i++] = c&this.DM;\n c >>= this.DB;\n }\n c += this.s;\n } else {\n c += this.s;\n while(i < a.t) {\n c -= a.data[i];\n r.data[i++] = c&this.DM;\n c >>= this.DB;\n }\n c -= a.s;\n }\n r.s = (c<0)?-1:0;\n if(c < -1) r.data[i++] = this.DV+c;\n else if(c > 0) r.data[i++] = c;\n r.t = i;\n r.clamp();\n}\n\n// (protected) r = this * a, r != this,a (HAC 14.12)\n// \"this\" should be the larger one if appropriate.\nfunction bnpMultiplyTo(a,r) {\n var x = this.abs(), y = a.abs();\n var i = x.t;\n r.t = i+y.t;\n while(--i >= 0) r.data[i] = 0;\n for(i = 0; i < y.t; ++i) r.data[i+x.t] = x.am(0,y.data[i],r,i,0,x.t);\n r.s = 0;\n r.clamp();\n if(this.s != a.s) BigInteger.ZERO.subTo(r,r);\n}\n\n// (protected) r = this^2, r != this (HAC 14.16)\nfunction bnpSquareTo(r) {\n var x = this.abs();\n var i = r.t = 2*x.t;\n while(--i >= 0) r.data[i] = 0;\n for(i = 0; i < x.t-1; ++i) {\n var c = x.am(i,x.data[i],r,2*i,0,1);\n if((r.data[i+x.t]+=x.am(i+1,2*x.data[i],r,2*i+1,c,x.t-i-1)) >= x.DV) {\n r.data[i+x.t] -= x.DV;\n r.data[i+x.t+1] = 1;\n }\n }\n if(r.t > 0) r.data[r.t-1] += x.am(i,x.data[i],r,2*i,0,1);\n r.s = 0;\n r.clamp();\n}\n\n// (protected) divide this by m, quotient and remainder to q, r (HAC 14.20)\n// r != q, this != m. q or r may be null.\nfunction bnpDivRemTo(m,q,r) {\n var pm = m.abs();\n if(pm.t <= 0) return;\n var pt = this.abs();\n if(pt.t < pm.t) {\n if(q != null) q.fromInt(0);\n if(r != null) this.copyTo(r);\n return;\n }\n if(r == null) r = nbi();\n var y = nbi(), ts = this.s, ms = m.s;\n var nsh = this.DB-nbits(pm.data[pm.t-1]);\t// normalize modulus\n if(nsh > 0) { pm.lShiftTo(nsh,y); pt.lShiftTo(nsh,r); } else { pm.copyTo(y); pt.copyTo(r); }\n var ys = y.t;\n var y0 = y.data[ys-1];\n if(y0 == 0) return;\n var yt = y0*(1<1)?y.data[ys-2]>>this.F2:0);\n var d1 = this.FV/yt, d2 = (1<= 0) {\n r.data[r.t++] = 1;\n r.subTo(t,r);\n }\n BigInteger.ONE.dlShiftTo(ys,t);\n t.subTo(y,y);\t// \"negative\" y so we can replace sub with am later\n while(y.t < ys) y.data[y.t++] = 0;\n while(--j >= 0) {\n // Estimate quotient digit\n var qd = (r.data[--i]==y0)?this.DM:Math.floor(r.data[i]*d1+(r.data[i-1]+e)*d2);\n if((r.data[i]+=y.am(0,qd,r,j,0,ys)) < qd) {\t// Try it out\n y.dlShiftTo(j,t);\n r.subTo(t,r);\n while(r.data[i] < --qd) r.subTo(t,r);\n }\n }\n if(q != null) {\n r.drShiftTo(ys,q);\n if(ts != ms) BigInteger.ZERO.subTo(q,q);\n }\n r.t = ys;\n r.clamp();\n if(nsh > 0) r.rShiftTo(nsh,r);\t// Denormalize remainder\n if(ts < 0) BigInteger.ZERO.subTo(r,r);\n}\n\n// (public) this mod a\nfunction bnMod(a) {\n var r = nbi();\n this.abs().divRemTo(a,null,r);\n if(this.s < 0 && r.compareTo(BigInteger.ZERO) > 0) a.subTo(r,r);\n return r;\n}\n\n// Modular reduction using \"classic\" algorithm\nfunction Classic(m) { this.m = m; }\nfunction cConvert(x) {\n if(x.s < 0 || x.compareTo(this.m) >= 0) return x.mod(this.m);\n else return x;\n}\nfunction cRevert(x) { return x; }\nfunction cReduce(x) { x.divRemTo(this.m,null,x); }\nfunction cMulTo(x,y,r) { x.multiplyTo(y,r); this.reduce(r); }\nfunction cSqrTo(x,r) { x.squareTo(r); this.reduce(r); }\n\nClassic.prototype.convert = cConvert;\nClassic.prototype.revert = cRevert;\nClassic.prototype.reduce = cReduce;\nClassic.prototype.mulTo = cMulTo;\nClassic.prototype.sqrTo = cSqrTo;\n\n// (protected) return \"-1/this % 2^DB\"; useful for Mont. reduction\n// justification:\n// xy == 1 (mod m)\n// xy = 1+km\n// xy(2-xy) = (1+km)(1-km)\n// x[y(2-xy)] = 1-k^2m^2\n// x[y(2-xy)] == 1 (mod m^2)\n// if y is 1/x mod m, then y(2-xy) is 1/x mod m^2\n// should reduce x and y(2-xy) by m^2 at each step to keep size bounded.\n// JS multiply \"overflows\" differently from C/C++, so care is needed here.\nfunction bnpInvDigit() {\n if(this.t < 1) return 0;\n var x = this.data[0];\n if((x&1) == 0) return 0;\n var y = x&3;\t\t// y == 1/x mod 2^2\n y = (y*(2-(x&0xf)*y))&0xf;\t// y == 1/x mod 2^4\n y = (y*(2-(x&0xff)*y))&0xff;\t// y == 1/x mod 2^8\n y = (y*(2-(((x&0xffff)*y)&0xffff)))&0xffff;\t// y == 1/x mod 2^16\n // last step - calculate inverse mod DV directly;\n // assumes 16 < DB <= 32 and assumes ability to handle 48-bit ints\n y = (y*(2-x*y%this.DV))%this.DV;\t\t// y == 1/x mod 2^dbits\n // we really want the negative inverse, and -DV < y < DV\n return (y>0)?this.DV-y:-y;\n}\n\n// Montgomery reduction\nfunction Montgomery(m) {\n this.m = m;\n this.mp = m.invDigit();\n this.mpl = this.mp&0x7fff;\n this.mph = this.mp>>15;\n this.um = (1<<(m.DB-15))-1;\n this.mt2 = 2*m.t;\n}\n\n// xR mod m\nfunction montConvert(x) {\n var r = nbi();\n x.abs().dlShiftTo(this.m.t,r);\n r.divRemTo(this.m,null,r);\n if(x.s < 0 && r.compareTo(BigInteger.ZERO) > 0) this.m.subTo(r,r);\n return r;\n}\n\n// x/R mod m\nfunction montRevert(x) {\n var r = nbi();\n x.copyTo(r);\n this.reduce(r);\n return r;\n}\n\n// x = x/R mod m (HAC 14.32)\nfunction montReduce(x) {\n while(x.t <= this.mt2)\t// pad x so am has enough room later\n x.data[x.t++] = 0;\n for(var i = 0; i < this.m.t; ++i) {\n // faster way of calculating u0 = x.data[i]*mp mod DV\n var j = x.data[i]&0x7fff;\n var u0 = (j*this.mpl+(((j*this.mph+(x.data[i]>>15)*this.mpl)&this.um)<<15))&x.DM;\n // use am to combine the multiply-shift-add into one call\n j = i+this.m.t;\n x.data[j] += this.m.am(0,u0,x,i,0,this.m.t);\n // propagate carry\n while(x.data[j] >= x.DV) { x.data[j] -= x.DV; x.data[++j]++; }\n }\n x.clamp();\n x.drShiftTo(this.m.t,x);\n if(x.compareTo(this.m) >= 0) x.subTo(this.m,x);\n}\n\n// r = \"x^2/R mod m\"; x != r\nfunction montSqrTo(x,r) { x.squareTo(r); this.reduce(r); }\n\n// r = \"xy/R mod m\"; x,y != r\nfunction montMulTo(x,y,r) { x.multiplyTo(y,r); this.reduce(r); }\n\nMontgomery.prototype.convert = montConvert;\nMontgomery.prototype.revert = montRevert;\nMontgomery.prototype.reduce = montReduce;\nMontgomery.prototype.mulTo = montMulTo;\nMontgomery.prototype.sqrTo = montSqrTo;\n\n// (protected) true iff this is even\nfunction bnpIsEven() { return ((this.t>0)?(this.data[0]&1):this.s) == 0; }\n\n// (protected) this^e, e < 2^32, doing sqr and mul with \"r\" (HAC 14.79)\nfunction bnpExp(e,z) {\n if(e > 0xffffffff || e < 1) return BigInteger.ONE;\n var r = nbi(), r2 = nbi(), g = z.convert(this), i = nbits(e)-1;\n g.copyTo(r);\n while(--i >= 0) {\n z.sqrTo(r,r2);\n if((e&(1< 0) z.mulTo(r2,g,r);\n else { var t = r; r = r2; r2 = t; }\n }\n return z.revert(r);\n}\n\n// (public) this^e % m, 0 <= e < 2^32\nfunction bnModPowInt(e,m) {\n var z;\n if(e < 256 || m.isEven()) z = new Classic(m); else z = new Montgomery(m);\n return this.exp(e,z);\n}\n\n// protected\nBigInteger.prototype.copyTo = bnpCopyTo;\nBigInteger.prototype.fromInt = bnpFromInt;\nBigInteger.prototype.fromString = bnpFromString;\nBigInteger.prototype.clamp = bnpClamp;\nBigInteger.prototype.dlShiftTo = bnpDLShiftTo;\nBigInteger.prototype.drShiftTo = bnpDRShiftTo;\nBigInteger.prototype.lShiftTo = bnpLShiftTo;\nBigInteger.prototype.rShiftTo = bnpRShiftTo;\nBigInteger.prototype.subTo = bnpSubTo;\nBigInteger.prototype.multiplyTo = bnpMultiplyTo;\nBigInteger.prototype.squareTo = bnpSquareTo;\nBigInteger.prototype.divRemTo = bnpDivRemTo;\nBigInteger.prototype.invDigit = bnpInvDigit;\nBigInteger.prototype.isEven = bnpIsEven;\nBigInteger.prototype.exp = bnpExp;\n\n// public\nBigInteger.prototype.toString = bnToString;\nBigInteger.prototype.negate = bnNegate;\nBigInteger.prototype.abs = bnAbs;\nBigInteger.prototype.compareTo = bnCompareTo;\nBigInteger.prototype.bitLength = bnBitLength;\nBigInteger.prototype.mod = bnMod;\nBigInteger.prototype.modPowInt = bnModPowInt;\n\n// \"constants\"\nBigInteger.ZERO = nbv(0);\nBigInteger.ONE = nbv(1);\n\n// jsbn2 lib\n\n//Copyright (c) 2005-2009 Tom Wu\n//All Rights Reserved.\n//See \"LICENSE\" for details (See jsbn.js for LICENSE).\n\n//Extended JavaScript BN functions, required for RSA private ops.\n\n//Version 1.1: new BigInteger(\"0\", 10) returns \"proper\" zero\n\n//(public)\nfunction bnClone() { var r = nbi(); this.copyTo(r); return r; }\n\n//(public) return value as integer\nfunction bnIntValue() {\nif(this.s < 0) {\n if(this.t == 1) return this.data[0]-this.DV;\n else if(this.t == 0) return -1;\n} else if(this.t == 1) return this.data[0];\nelse if(this.t == 0) return 0;\n// assumes 16 < DB < 32\nreturn ((this.data[1]&((1<<(32-this.DB))-1))<>24; }\n\n//(public) return value as short (assumes DB>=16)\nfunction bnShortValue() { return (this.t==0)?this.s:(this.data[0]<<16)>>16; }\n\n//(protected) return x s.t. r^x < DV\nfunction bnpChunkSize(r) { return Math.floor(Math.LN2*this.DB/Math.log(r)); }\n\n//(public) 0 if this == 0, 1 if this > 0\nfunction bnSigNum() {\nif(this.s < 0) return -1;\nelse if(this.t <= 0 || (this.t == 1 && this.data[0] <= 0)) return 0;\nelse return 1;\n}\n\n//(protected) convert to radix string\nfunction bnpToRadix(b) {\nif(b == null) b = 10;\nif(this.signum() == 0 || b < 2 || b > 36) return \"0\";\nvar cs = this.chunkSize(b);\nvar a = Math.pow(b,cs);\nvar d = nbv(a), y = nbi(), z = nbi(), r = \"\";\nthis.divRemTo(d,y,z);\nwhile(y.signum() > 0) {\n r = (a+z.intValue()).toString(b).substr(1) + r;\n y.divRemTo(d,y,z);\n}\nreturn z.intValue().toString(b) + r;\n}\n\n//(protected) convert from radix string\nfunction bnpFromRadix(s,b) {\nthis.fromInt(0);\nif(b == null) b = 10;\nvar cs = this.chunkSize(b);\nvar d = Math.pow(b,cs), mi = false, j = 0, w = 0;\nfor(var i = 0; i < s.length; ++i) {\n var x = intAt(s,i);\n if(x < 0) {\n if(s.charAt(i) == \"-\" && this.signum() == 0) mi = true;\n continue;\n }\n w = b*w+x;\n if(++j >= cs) {\n this.dMultiply(d);\n this.dAddOffset(w,0);\n j = 0;\n w = 0;\n }\n}\nif(j > 0) {\n this.dMultiply(Math.pow(b,j));\n this.dAddOffset(w,0);\n}\nif(mi) BigInteger.ZERO.subTo(this,this);\n}\n\n//(protected) alternate constructor\nfunction bnpFromNumber(a,b,c) {\nif(\"number\" == typeof b) {\n // new BigInteger(int,int,RNG)\n if(a < 2) this.fromInt(1);\n else {\n this.fromNumber(a,c);\n if(!this.testBit(a-1)) // force MSB set\n this.bitwiseTo(BigInteger.ONE.shiftLeft(a-1),op_or,this);\n if(this.isEven()) this.dAddOffset(1,0); // force odd\n while(!this.isProbablePrime(b)) {\n this.dAddOffset(2,0);\n if(this.bitLength() > a) this.subTo(BigInteger.ONE.shiftLeft(a-1),this);\n }\n }\n} else {\n // new BigInteger(int,RNG)\n var x = new Array(), t = a&7;\n x.length = (a>>3)+1;\n b.nextBytes(x);\n if(t > 0) x[0] &= ((1< 0) {\n if(p < this.DB && (d = this.data[i]>>p) != (this.s&this.DM)>>p)\n r[k++] = d|(this.s<<(this.DB-p));\n while(i >= 0) {\n if(p < 8) {\n d = (this.data[i]&((1<>(p+=this.DB-8);\n } else {\n d = (this.data[i]>>(p-=8))&0xff;\n if(p <= 0) { p += this.DB; --i; }\n }\n if((d&0x80) != 0) d |= -256;\n if(k == 0 && (this.s&0x80) != (d&0x80)) ++k;\n if(k > 0 || d != this.s) r[k++] = d;\n }\n}\nreturn r;\n}\n\nfunction bnEquals(a) { return(this.compareTo(a)==0); }\nfunction bnMin(a) { return(this.compareTo(a)<0)?this:a; }\nfunction bnMax(a) { return(this.compareTo(a)>0)?this:a; }\n\n//(protected) r = this op a (bitwise)\nfunction bnpBitwiseTo(a,op,r) {\nvar i, f, m = Math.min(a.t,this.t);\nfor(i = 0; i < m; ++i) r.data[i] = op(this.data[i],a.data[i]);\nif(a.t < this.t) {\n f = a.s&this.DM;\n for(i = m; i < this.t; ++i) r.data[i] = op(this.data[i],f);\n r.t = this.t;\n} else {\n f = this.s&this.DM;\n for(i = m; i < a.t; ++i) r.data[i] = op(f,a.data[i]);\n r.t = a.t;\n}\nr.s = op(this.s,a.s);\nr.clamp();\n}\n\n//(public) this & a\nfunction op_and(x,y) { return x&y; }\nfunction bnAnd(a) { var r = nbi(); this.bitwiseTo(a,op_and,r); return r; }\n\n//(public) this | a\nfunction op_or(x,y) { return x|y; }\nfunction bnOr(a) { var r = nbi(); this.bitwiseTo(a,op_or,r); return r; }\n\n//(public) this ^ a\nfunction op_xor(x,y) { return x^y; }\nfunction bnXor(a) { var r = nbi(); this.bitwiseTo(a,op_xor,r); return r; }\n\n//(public) this & ~a\nfunction op_andnot(x,y) { return x&~y; }\nfunction bnAndNot(a) { var r = nbi(); this.bitwiseTo(a,op_andnot,r); return r; }\n\n//(public) ~this\nfunction bnNot() {\nvar r = nbi();\nfor(var i = 0; i < this.t; ++i) r.data[i] = this.DM&~this.data[i];\nr.t = this.t;\nr.s = ~this.s;\nreturn r;\n}\n\n//(public) this << n\nfunction bnShiftLeft(n) {\nvar r = nbi();\nif(n < 0) this.rShiftTo(-n,r); else this.lShiftTo(n,r);\nreturn r;\n}\n\n//(public) this >> n\nfunction bnShiftRight(n) {\nvar r = nbi();\nif(n < 0) this.lShiftTo(-n,r); else this.rShiftTo(n,r);\nreturn r;\n}\n\n//return index of lowest 1-bit in x, x < 2^31\nfunction lbit(x) {\nif(x == 0) return -1;\nvar r = 0;\nif((x&0xffff) == 0) { x >>= 16; r += 16; }\nif((x&0xff) == 0) { x >>= 8; r += 8; }\nif((x&0xf) == 0) { x >>= 4; r += 4; }\nif((x&3) == 0) { x >>= 2; r += 2; }\nif((x&1) == 0) ++r;\nreturn r;\n}\n\n//(public) returns index of lowest 1-bit (or -1 if none)\nfunction bnGetLowestSetBit() {\nfor(var i = 0; i < this.t; ++i)\n if(this.data[i] != 0) return i*this.DB+lbit(this.data[i]);\nif(this.s < 0) return this.t*this.DB;\nreturn -1;\n}\n\n//return number of 1 bits in x\nfunction cbit(x) {\nvar r = 0;\nwhile(x != 0) { x &= x-1; ++r; }\nreturn r;\n}\n\n//(public) return number of set bits\nfunction bnBitCount() {\nvar r = 0, x = this.s&this.DM;\nfor(var i = 0; i < this.t; ++i) r += cbit(this.data[i]^x);\nreturn r;\n}\n\n//(public) true iff nth bit is set\nfunction bnTestBit(n) {\nvar j = Math.floor(n/this.DB);\nif(j >= this.t) return(this.s!=0);\nreturn((this.data[j]&(1<<(n%this.DB)))!=0);\n}\n\n//(protected) this op (1<>= this.DB;\n}\nif(a.t < this.t) {\n c += a.s;\n while(i < this.t) {\n c += this.data[i];\n r.data[i++] = c&this.DM;\n c >>= this.DB;\n }\n c += this.s;\n} else {\n c += this.s;\n while(i < a.t) {\n c += a.data[i];\n r.data[i++] = c&this.DM;\n c >>= this.DB;\n }\n c += a.s;\n}\nr.s = (c<0)?-1:0;\nif(c > 0) r.data[i++] = c;\nelse if(c < -1) r.data[i++] = this.DV+c;\nr.t = i;\nr.clamp();\n}\n\n//(public) this + a\nfunction bnAdd(a) { var r = nbi(); this.addTo(a,r); return r; }\n\n//(public) this - a\nfunction bnSubtract(a) { var r = nbi(); this.subTo(a,r); return r; }\n\n//(public) this * a\nfunction bnMultiply(a) { var r = nbi(); this.multiplyTo(a,r); return r; }\n\n//(public) this / a\nfunction bnDivide(a) { var r = nbi(); this.divRemTo(a,r,null); return r; }\n\n//(public) this % a\nfunction bnRemainder(a) { var r = nbi(); this.divRemTo(a,null,r); return r; }\n\n//(public) [this/a,this%a]\nfunction bnDivideAndRemainder(a) {\nvar q = nbi(), r = nbi();\nthis.divRemTo(a,q,r);\nreturn new Array(q,r);\n}\n\n//(protected) this *= n, this >= 0, 1 < n < DV\nfunction bnpDMultiply(n) {\nthis.data[this.t] = this.am(0,n-1,this,0,0,this.t);\n++this.t;\nthis.clamp();\n}\n\n//(protected) this += n << w words, this >= 0\nfunction bnpDAddOffset(n,w) {\nif(n == 0) return;\nwhile(this.t <= w) this.data[this.t++] = 0;\nthis.data[w] += n;\nwhile(this.data[w] >= this.DV) {\n this.data[w] -= this.DV;\n if(++w >= this.t) this.data[this.t++] = 0;\n ++this.data[w];\n}\n}\n\n//A \"null\" reducer\nfunction NullExp() {}\nfunction nNop(x) { return x; }\nfunction nMulTo(x,y,r) { x.multiplyTo(y,r); }\nfunction nSqrTo(x,r) { x.squareTo(r); }\n\nNullExp.prototype.convert = nNop;\nNullExp.prototype.revert = nNop;\nNullExp.prototype.mulTo = nMulTo;\nNullExp.prototype.sqrTo = nSqrTo;\n\n//(public) this^e\nfunction bnPow(e) { return this.exp(e,new NullExp()); }\n\n//(protected) r = lower n words of \"this * a\", a.t <= n\n//\"this\" should be the larger one if appropriate.\nfunction bnpMultiplyLowerTo(a,n,r) {\nvar i = Math.min(this.t+a.t,n);\nr.s = 0; // assumes a,this >= 0\nr.t = i;\nwhile(i > 0) r.data[--i] = 0;\nvar j;\nfor(j = r.t-this.t; i < j; ++i) r.data[i+this.t] = this.am(0,a.data[i],r,i,0,this.t);\nfor(j = Math.min(a.t,n); i < j; ++i) this.am(0,a.data[i],r,i,0,n-i);\nr.clamp();\n}\n\n//(protected) r = \"this * a\" without lower n words, n > 0\n//\"this\" should be the larger one if appropriate.\nfunction bnpMultiplyUpperTo(a,n,r) {\n--n;\nvar i = r.t = this.t+a.t-n;\nr.s = 0; // assumes a,this >= 0\nwhile(--i >= 0) r.data[i] = 0;\nfor(i = Math.max(n-this.t,0); i < a.t; ++i)\n r.data[this.t+i-n] = this.am(n-i,a.data[i],r,0,0,this.t+i-n);\nr.clamp();\nr.drShiftTo(1,r);\n}\n\n//Barrett modular reduction\nfunction Barrett(m) {\n// setup Barrett\nthis.r2 = nbi();\nthis.q3 = nbi();\nBigInteger.ONE.dlShiftTo(2*m.t,this.r2);\nthis.mu = this.r2.divide(m);\nthis.m = m;\n}\n\nfunction barrettConvert(x) {\nif(x.s < 0 || x.t > 2*this.m.t) return x.mod(this.m);\nelse if(x.compareTo(this.m) < 0) return x;\nelse { var r = nbi(); x.copyTo(r); this.reduce(r); return r; }\n}\n\nfunction barrettRevert(x) { return x; }\n\n//x = x mod m (HAC 14.42)\nfunction barrettReduce(x) {\nx.drShiftTo(this.m.t-1,this.r2);\nif(x.t > this.m.t+1) { x.t = this.m.t+1; x.clamp(); }\nthis.mu.multiplyUpperTo(this.r2,this.m.t+1,this.q3);\nthis.m.multiplyLowerTo(this.q3,this.m.t+1,this.r2);\nwhile(x.compareTo(this.r2) < 0) x.dAddOffset(1,this.m.t+1);\nx.subTo(this.r2,x);\nwhile(x.compareTo(this.m) >= 0) x.subTo(this.m,x);\n}\n\n//r = x^2 mod m; x != r\nfunction barrettSqrTo(x,r) { x.squareTo(r); this.reduce(r); }\n\n//r = x*y mod m; x,y != r\nfunction barrettMulTo(x,y,r) { x.multiplyTo(y,r); this.reduce(r); }\n\nBarrett.prototype.convert = barrettConvert;\nBarrett.prototype.revert = barrettRevert;\nBarrett.prototype.reduce = barrettReduce;\nBarrett.prototype.mulTo = barrettMulTo;\nBarrett.prototype.sqrTo = barrettSqrTo;\n\n//(public) this^e % m (HAC 14.85)\nfunction bnModPow(e,m) {\nvar i = e.bitLength(), k, r = nbv(1), z;\nif(i <= 0) return r;\nelse if(i < 18) k = 1;\nelse if(i < 48) k = 3;\nelse if(i < 144) k = 4;\nelse if(i < 768) k = 5;\nelse k = 6;\nif(i < 8)\n z = new Classic(m);\nelse if(m.isEven())\n z = new Barrett(m);\nelse\n z = new Montgomery(m);\n\n// precomputation\nvar g = new Array(), n = 3, k1 = k-1, km = (1< 1) {\n var g2 = nbi();\n z.sqrTo(g[1],g2);\n while(n <= km) {\n g[n] = nbi();\n z.mulTo(g2,g[n-2],g[n]);\n n += 2;\n }\n}\n\nvar j = e.t-1, w, is1 = true, r2 = nbi(), t;\ni = nbits(e.data[j])-1;\nwhile(j >= 0) {\n if(i >= k1) w = (e.data[j]>>(i-k1))&km;\n else {\n w = (e.data[j]&((1<<(i+1))-1))<<(k1-i);\n if(j > 0) w |= e.data[j-1]>>(this.DB+i-k1);\n }\n\n n = k;\n while((w&1) == 0) { w >>= 1; --n; }\n if((i -= n) < 0) { i += this.DB; --j; }\n if(is1) { // ret == 1, don't bother squaring or multiplying it\n g[w].copyTo(r);\n is1 = false;\n } else {\n while(n > 1) { z.sqrTo(r,r2); z.sqrTo(r2,r); n -= 2; }\n if(n > 0) z.sqrTo(r,r2); else { t = r; r = r2; r2 = t; }\n z.mulTo(r2,g[w],r);\n }\n\n while(j >= 0 && (e.data[j]&(1< 0) {\n x.rShiftTo(g,x);\n y.rShiftTo(g,y);\n}\nwhile(x.signum() > 0) {\n if((i = x.getLowestSetBit()) > 0) x.rShiftTo(i,x);\n if((i = y.getLowestSetBit()) > 0) y.rShiftTo(i,y);\n if(x.compareTo(y) >= 0) {\n x.subTo(y,x);\n x.rShiftTo(1,x);\n } else {\n y.subTo(x,y);\n y.rShiftTo(1,y);\n }\n}\nif(g > 0) y.lShiftTo(g,y);\nreturn y;\n}\n\n//(protected) this % n, n < 2^26\nfunction bnpModInt(n) {\nif(n <= 0) return 0;\nvar d = this.DV%n, r = (this.s<0)?n-1:0;\nif(this.t > 0)\n if(d == 0) r = this.data[0]%n;\n else for(var i = this.t-1; i >= 0; --i) r = (d*r+this.data[i])%n;\nreturn r;\n}\n\n//(public) 1/this % m (HAC 14.61)\nfunction bnModInverse(m) {\nvar ac = m.isEven();\nif((this.isEven() && ac) || m.signum() == 0) return BigInteger.ZERO;\nvar u = m.clone(), v = this.clone();\nvar a = nbv(1), b = nbv(0), c = nbv(0), d = nbv(1);\nwhile(u.signum() != 0) {\n while(u.isEven()) {\n u.rShiftTo(1,u);\n if(ac) {\n if(!a.isEven() || !b.isEven()) { a.addTo(this,a); b.subTo(m,b); }\n a.rShiftTo(1,a);\n } else if(!b.isEven()) b.subTo(m,b);\n b.rShiftTo(1,b);\n }\n while(v.isEven()) {\n v.rShiftTo(1,v);\n if(ac) {\n if(!c.isEven() || !d.isEven()) { c.addTo(this,c); d.subTo(m,d); }\n c.rShiftTo(1,c);\n } else if(!d.isEven()) d.subTo(m,d);\n d.rShiftTo(1,d);\n }\n if(u.compareTo(v) >= 0) {\n u.subTo(v,u);\n if(ac) a.subTo(c,a);\n b.subTo(d,b);\n } else {\n v.subTo(u,v);\n if(ac) c.subTo(a,c);\n d.subTo(b,d);\n }\n}\nif(v.compareTo(BigInteger.ONE) != 0) return BigInteger.ZERO;\nif(d.compareTo(m) >= 0) return d.subtract(m);\nif(d.signum() < 0) d.addTo(m,d); else return d;\nif(d.signum() < 0) return d.add(m); else return d;\n}\n\nvar lowprimes = [2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509];\nvar lplim = (1<<26)/lowprimes[lowprimes.length-1];\n\n//(public) test primality with certainty >= 1-.5^t\nfunction bnIsProbablePrime(t) {\nvar i, x = this.abs();\nif(x.t == 1 && x.data[0] <= lowprimes[lowprimes.length-1]) {\n for(i = 0; i < lowprimes.length; ++i)\n if(x.data[0] == lowprimes[i]) return true;\n return false;\n}\nif(x.isEven()) return false;\ni = 1;\nwhile(i < lowprimes.length) {\n var m = lowprimes[i], j = i+1;\n while(j < lowprimes.length && m < lplim) m *= lowprimes[j++];\n m = x.modInt(m);\n while(i < j) if(m%lowprimes[i++] == 0) return false;\n}\nreturn x.millerRabin(t);\n}\n\n//(protected) true if probably prime (HAC 4.24, Miller-Rabin)\nfunction bnpMillerRabin(t) {\nvar n1 = this.subtract(BigInteger.ONE);\nvar k = n1.getLowestSetBit();\nif(k <= 0) return false;\nvar r = n1.shiftRight(k);\nvar prng = bnGetPrng();\nvar a;\nfor(var i = 0; i < t; ++i) {\n // select witness 'a' at random from between 1 and n1\n do {\n a = new BigInteger(this.bitLength(), prng);\n }\n while(a.compareTo(BigInteger.ONE) <= 0 || a.compareTo(n1) >= 0);\n var y = a.modPow(r,this);\n if(y.compareTo(BigInteger.ONE) != 0 && y.compareTo(n1) != 0) {\n var j = 1;\n while(j++ < k && y.compareTo(n1) != 0) {\n y = y.modPowInt(2,this);\n if(y.compareTo(BigInteger.ONE) == 0) return false;\n }\n if(y.compareTo(n1) != 0) return false;\n }\n}\nreturn true;\n}\n\n// get pseudo random number generator\nfunction bnGetPrng() {\n // create prng with api that matches BigInteger secure random\n return {\n // x is an array to fill with bytes\n nextBytes: function(x) {\n for(var i = 0; i < x.length; ++i) {\n x[i] = Math.floor(Math.random() * 0x0100);\n }\n }\n };\n}\n\n//protected\nBigInteger.prototype.chunkSize = bnpChunkSize;\nBigInteger.prototype.toRadix = bnpToRadix;\nBigInteger.prototype.fromRadix = bnpFromRadix;\nBigInteger.prototype.fromNumber = bnpFromNumber;\nBigInteger.prototype.bitwiseTo = bnpBitwiseTo;\nBigInteger.prototype.changeBit = bnpChangeBit;\nBigInteger.prototype.addTo = bnpAddTo;\nBigInteger.prototype.dMultiply = bnpDMultiply;\nBigInteger.prototype.dAddOffset = bnpDAddOffset;\nBigInteger.prototype.multiplyLowerTo = bnpMultiplyLowerTo;\nBigInteger.prototype.multiplyUpperTo = bnpMultiplyUpperTo;\nBigInteger.prototype.modInt = bnpModInt;\nBigInteger.prototype.millerRabin = bnpMillerRabin;\n\n//public\nBigInteger.prototype.clone = bnClone;\nBigInteger.prototype.intValue = bnIntValue;\nBigInteger.prototype.byteValue = bnByteValue;\nBigInteger.prototype.shortValue = bnShortValue;\nBigInteger.prototype.signum = bnSigNum;\nBigInteger.prototype.toByteArray = bnToByteArray;\nBigInteger.prototype.equals = bnEquals;\nBigInteger.prototype.min = bnMin;\nBigInteger.prototype.max = bnMax;\nBigInteger.prototype.and = bnAnd;\nBigInteger.prototype.or = bnOr;\nBigInteger.prototype.xor = bnXor;\nBigInteger.prototype.andNot = bnAndNot;\nBigInteger.prototype.not = bnNot;\nBigInteger.prototype.shiftLeft = bnShiftLeft;\nBigInteger.prototype.shiftRight = bnShiftRight;\nBigInteger.prototype.getLowestSetBit = bnGetLowestSetBit;\nBigInteger.prototype.bitCount = bnBitCount;\nBigInteger.prototype.testBit = bnTestBit;\nBigInteger.prototype.setBit = bnSetBit;\nBigInteger.prototype.clearBit = bnClearBit;\nBigInteger.prototype.flipBit = bnFlipBit;\nBigInteger.prototype.add = bnAdd;\nBigInteger.prototype.subtract = bnSubtract;\nBigInteger.prototype.multiply = bnMultiply;\nBigInteger.prototype.divide = bnDivide;\nBigInteger.prototype.remainder = bnRemainder;\nBigInteger.prototype.divideAndRemainder = bnDivideAndRemainder;\nBigInteger.prototype.modPow = bnModPow;\nBigInteger.prototype.modInverse = bnModInverse;\nBigInteger.prototype.pow = bnPow;\nBigInteger.prototype.gcd = bnGCD;\nBigInteger.prototype.isProbablePrime = bnIsProbablePrime;\n\n//BigInteger interfaces not implemented in jsbn:\n\n//BigInteger(int signum, byte[] magnitude)\n//double doubleValue()\n//float floatValue()\n//int hashCode()\n//long longValue()\n//static BigInteger valueOf(long val)\n","/**\n * JavaScript implementation of Ed25519.\n *\n * Copyright (c) 2017-2019 Digital Bazaar, Inc.\n *\n * This implementation is based on the most excellent TweetNaCl which is\n * in the public domain. Many thanks to its contributors:\n *\n * https://github.com/dchest/tweetnacl-js\n */\nvar forge = require('./forge');\nrequire('./jsbn');\nrequire('./random');\nrequire('./sha512');\nrequire('./util');\nvar asn1Validator = require('./asn1-validator');\nvar publicKeyValidator = asn1Validator.publicKeyValidator;\nvar privateKeyValidator = asn1Validator.privateKeyValidator;\n\nif(typeof BigInteger === 'undefined') {\n var BigInteger = forge.jsbn.BigInteger;\n}\n\nvar ByteBuffer = forge.util.ByteBuffer;\nvar NativeBuffer = typeof Buffer === 'undefined' ? Uint8Array : Buffer;\n\n/*\n * Ed25519 algorithms, see RFC 8032:\n * https://tools.ietf.org/html/rfc8032\n */\nforge.pki = forge.pki || {};\nmodule.exports = forge.pki.ed25519 = forge.ed25519 = forge.ed25519 || {};\nvar ed25519 = forge.ed25519;\n\ned25519.constants = {};\ned25519.constants.PUBLIC_KEY_BYTE_LENGTH = 32;\ned25519.constants.PRIVATE_KEY_BYTE_LENGTH = 64;\ned25519.constants.SEED_BYTE_LENGTH = 32;\ned25519.constants.SIGN_BYTE_LENGTH = 64;\ned25519.constants.HASH_BYTE_LENGTH = 64;\n\ned25519.generateKeyPair = function(options) {\n options = options || {};\n var seed = options.seed;\n if(seed === undefined) {\n // generate seed\n seed = forge.random.getBytesSync(ed25519.constants.SEED_BYTE_LENGTH);\n } else if(typeof seed === 'string') {\n if(seed.length !== ed25519.constants.SEED_BYTE_LENGTH) {\n throw new TypeError(\n '\"seed\" must be ' + ed25519.constants.SEED_BYTE_LENGTH +\n ' bytes in length.');\n }\n } else if(!(seed instanceof Uint8Array)) {\n throw new TypeError(\n '\"seed\" must be a node.js Buffer, Uint8Array, or a binary string.');\n }\n\n seed = messageToNativeBuffer({message: seed, encoding: 'binary'});\n\n var pk = new NativeBuffer(ed25519.constants.PUBLIC_KEY_BYTE_LENGTH);\n var sk = new NativeBuffer(ed25519.constants.PRIVATE_KEY_BYTE_LENGTH);\n for(var i = 0; i < 32; ++i) {\n sk[i] = seed[i];\n }\n crypto_sign_keypair(pk, sk);\n return {publicKey: pk, privateKey: sk};\n};\n\n/**\n * Converts a private key from a RFC8410 ASN.1 encoding.\n *\n * @param obj - The asn1 representation of a private key.\n *\n * @returns {Object} keyInfo - The key information.\n * @returns {Buffer|Uint8Array} keyInfo.privateKeyBytes - 32 private key bytes.\n */\ned25519.privateKeyFromAsn1 = function(obj) {\n var capture = {};\n var errors = [];\n var valid = forge.asn1.validate(obj, privateKeyValidator, capture, errors);\n if(!valid) {\n var error = new Error('Invalid Key.');\n error.errors = errors;\n throw error;\n }\n var oid = forge.asn1.derToOid(capture.privateKeyOid);\n var ed25519Oid = forge.oids.EdDSA25519;\n if(oid !== ed25519Oid) {\n throw new Error('Invalid OID \"' + oid + '\"; OID must be \"' +\n ed25519Oid + '\".');\n }\n var privateKey = capture.privateKey;\n // manually extract the private key bytes from nested octet string, see FIXME:\n // https://github.com/digitalbazaar/forge/blob/master/lib/asn1.js#L542\n var privateKeyBytes = messageToNativeBuffer({\n message: forge.asn1.fromDer(privateKey).value,\n encoding: 'binary'\n });\n // TODO: RFC8410 specifies a format for encoding the public key bytes along\n // with the private key bytes. `publicKeyBytes` can be returned in the\n // future. https://tools.ietf.org/html/rfc8410#section-10.3\n return {privateKeyBytes: privateKeyBytes};\n};\n\n/**\n * Converts a public key from a RFC8410 ASN.1 encoding.\n *\n * @param obj - The asn1 representation of a public key.\n *\n * @return {Buffer|Uint8Array} - 32 public key bytes.\n */\ned25519.publicKeyFromAsn1 = function(obj) {\n // get SubjectPublicKeyInfo\n var capture = {};\n var errors = [];\n var valid = forge.asn1.validate(obj, publicKeyValidator, capture, errors);\n if(!valid) {\n var error = new Error('Invalid Key.');\n error.errors = errors;\n throw error;\n }\n var oid = forge.asn1.derToOid(capture.publicKeyOid);\n var ed25519Oid = forge.oids.EdDSA25519;\n if(oid !== ed25519Oid) {\n throw new Error('Invalid OID \"' + oid + '\"; OID must be \"' +\n ed25519Oid + '\".');\n }\n var publicKeyBytes = capture.ed25519PublicKey;\n if(publicKeyBytes.length !== ed25519.constants.PUBLIC_KEY_BYTE_LENGTH) {\n throw new Error('Key length is invalid.');\n }\n return messageToNativeBuffer({\n message: publicKeyBytes,\n encoding: 'binary'\n });\n};\n\ned25519.publicKeyFromPrivateKey = function(options) {\n options = options || {};\n var privateKey = messageToNativeBuffer({\n message: options.privateKey, encoding: 'binary'\n });\n if(privateKey.length !== ed25519.constants.PRIVATE_KEY_BYTE_LENGTH) {\n throw new TypeError(\n '\"options.privateKey\" must have a byte length of ' +\n ed25519.constants.PRIVATE_KEY_BYTE_LENGTH);\n }\n\n var pk = new NativeBuffer(ed25519.constants.PUBLIC_KEY_BYTE_LENGTH);\n for(var i = 0; i < pk.length; ++i) {\n pk[i] = privateKey[32 + i];\n }\n return pk;\n};\n\ned25519.sign = function(options) {\n options = options || {};\n var msg = messageToNativeBuffer(options);\n var privateKey = messageToNativeBuffer({\n message: options.privateKey,\n encoding: 'binary'\n });\n if(privateKey.length === ed25519.constants.SEED_BYTE_LENGTH) {\n var keyPair = ed25519.generateKeyPair({seed: privateKey});\n privateKey = keyPair.privateKey;\n } else if(privateKey.length !== ed25519.constants.PRIVATE_KEY_BYTE_LENGTH) {\n throw new TypeError(\n '\"options.privateKey\" must have a byte length of ' +\n ed25519.constants.SEED_BYTE_LENGTH + ' or ' +\n ed25519.constants.PRIVATE_KEY_BYTE_LENGTH);\n }\n\n var signedMsg = new NativeBuffer(\n ed25519.constants.SIGN_BYTE_LENGTH + msg.length);\n crypto_sign(signedMsg, msg, msg.length, privateKey);\n\n var sig = new NativeBuffer(ed25519.constants.SIGN_BYTE_LENGTH);\n for(var i = 0; i < sig.length; ++i) {\n sig[i] = signedMsg[i];\n }\n return sig;\n};\n\ned25519.verify = function(options) {\n options = options || {};\n var msg = messageToNativeBuffer(options);\n if(options.signature === undefined) {\n throw new TypeError(\n '\"options.signature\" must be a node.js Buffer, a Uint8Array, a forge ' +\n 'ByteBuffer, or a binary string.');\n }\n var sig = messageToNativeBuffer({\n message: options.signature,\n encoding: 'binary'\n });\n if(sig.length !== ed25519.constants.SIGN_BYTE_LENGTH) {\n throw new TypeError(\n '\"options.signature\" must have a byte length of ' +\n ed25519.constants.SIGN_BYTE_LENGTH);\n }\n var publicKey = messageToNativeBuffer({\n message: options.publicKey,\n encoding: 'binary'\n });\n if(publicKey.length !== ed25519.constants.PUBLIC_KEY_BYTE_LENGTH) {\n throw new TypeError(\n '\"options.publicKey\" must have a byte length of ' +\n ed25519.constants.PUBLIC_KEY_BYTE_LENGTH);\n }\n\n var sm = new NativeBuffer(ed25519.constants.SIGN_BYTE_LENGTH + msg.length);\n var m = new NativeBuffer(ed25519.constants.SIGN_BYTE_LENGTH + msg.length);\n var i;\n for(i = 0; i < ed25519.constants.SIGN_BYTE_LENGTH; ++i) {\n sm[i] = sig[i];\n }\n for(i = 0; i < msg.length; ++i) {\n sm[i + ed25519.constants.SIGN_BYTE_LENGTH] = msg[i];\n }\n return (crypto_sign_open(m, sm, sm.length, publicKey) >= 0);\n};\n\nfunction messageToNativeBuffer(options) {\n var message = options.message;\n if(message instanceof Uint8Array || message instanceof NativeBuffer) {\n return message;\n }\n\n var encoding = options.encoding;\n if(message === undefined) {\n if(options.md) {\n // TODO: more rigorous validation that `md` is a MessageDigest\n message = options.md.digest().getBytes();\n encoding = 'binary';\n } else {\n throw new TypeError('\"options.message\" or \"options.md\" not specified.');\n }\n }\n\n if(typeof message === 'string' && !encoding) {\n throw new TypeError('\"options.encoding\" must be \"binary\" or \"utf8\".');\n }\n\n if(typeof message === 'string') {\n if(typeof Buffer !== 'undefined') {\n return Buffer.from(message, encoding);\n }\n message = new ByteBuffer(message, encoding);\n } else if(!(message instanceof ByteBuffer)) {\n throw new TypeError(\n '\"options.message\" must be a node.js Buffer, a Uint8Array, a forge ' +\n 'ByteBuffer, or a string with \"options.encoding\" specifying its ' +\n 'encoding.');\n }\n\n // convert to native buffer\n var buffer = new NativeBuffer(message.length());\n for(var i = 0; i < buffer.length; ++i) {\n buffer[i] = message.at(i);\n }\n return buffer;\n}\n\nvar gf0 = gf();\nvar gf1 = gf([1]);\nvar D = gf([\n 0x78a3, 0x1359, 0x4dca, 0x75eb, 0xd8ab, 0x4141, 0x0a4d, 0x0070,\n 0xe898, 0x7779, 0x4079, 0x8cc7, 0xfe73, 0x2b6f, 0x6cee, 0x5203]);\nvar D2 = gf([\n 0xf159, 0x26b2, 0x9b94, 0xebd6, 0xb156, 0x8283, 0x149a, 0x00e0,\n 0xd130, 0xeef3, 0x80f2, 0x198e, 0xfce7, 0x56df, 0xd9dc, 0x2406]);\nvar X = gf([\n 0xd51a, 0x8f25, 0x2d60, 0xc956, 0xa7b2, 0x9525, 0xc760, 0x692c,\n 0xdc5c, 0xfdd6, 0xe231, 0xc0a4, 0x53fe, 0xcd6e, 0x36d3, 0x2169]);\nvar Y = gf([\n 0x6658, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666,\n 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666]);\nvar L = new Float64Array([\n 0xed, 0xd3, 0xf5, 0x5c, 0x1a, 0x63, 0x12, 0x58,\n 0xd6, 0x9c, 0xf7, 0xa2, 0xde, 0xf9, 0xde, 0x14,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x10]);\nvar I = gf([\n 0xa0b0, 0x4a0e, 0x1b27, 0xc4ee, 0xe478, 0xad2f, 0x1806, 0x2f43,\n 0xd7a7, 0x3dfb, 0x0099, 0x2b4d, 0xdf0b, 0x4fc1, 0x2480, 0x2b83]);\n\n// TODO: update forge buffer implementation to use `Buffer` or `Uint8Array`,\n// whichever is available, to improve performance\nfunction sha512(msg, msgLen) {\n // Note: `out` and `msg` are NativeBuffer\n var md = forge.md.sha512.create();\n var buffer = new ByteBuffer(msg);\n md.update(buffer.getBytes(msgLen), 'binary');\n var hash = md.digest().getBytes();\n if(typeof Buffer !== 'undefined') {\n return Buffer.from(hash, 'binary');\n }\n var out = new NativeBuffer(ed25519.constants.HASH_BYTE_LENGTH);\n for(var i = 0; i < 64; ++i) {\n out[i] = hash.charCodeAt(i);\n }\n return out;\n}\n\nfunction crypto_sign_keypair(pk, sk) {\n var p = [gf(), gf(), gf(), gf()];\n var i;\n\n var d = sha512(sk, 32);\n d[0] &= 248;\n d[31] &= 127;\n d[31] |= 64;\n\n scalarbase(p, d);\n pack(pk, p);\n\n for(i = 0; i < 32; ++i) {\n sk[i + 32] = pk[i];\n }\n return 0;\n}\n\n// Note: difference from C - smlen returned, not passed as argument.\nfunction crypto_sign(sm, m, n, sk) {\n var i, j, x = new Float64Array(64);\n var p = [gf(), gf(), gf(), gf()];\n\n var d = sha512(sk, 32);\n d[0] &= 248;\n d[31] &= 127;\n d[31] |= 64;\n\n var smlen = n + 64;\n for(i = 0; i < n; ++i) {\n sm[64 + i] = m[i];\n }\n for(i = 0; i < 32; ++i) {\n sm[32 + i] = d[32 + i];\n }\n\n var r = sha512(sm.subarray(32), n + 32);\n reduce(r);\n scalarbase(p, r);\n pack(sm, p);\n\n for(i = 32; i < 64; ++i) {\n sm[i] = sk[i];\n }\n var h = sha512(sm, n + 64);\n reduce(h);\n\n for(i = 32; i < 64; ++i) {\n x[i] = 0;\n }\n for(i = 0; i < 32; ++i) {\n x[i] = r[i];\n }\n for(i = 0; i < 32; ++i) {\n for(j = 0; j < 32; j++) {\n x[i + j] += h[i] * d[j];\n }\n }\n\n modL(sm.subarray(32), x);\n return smlen;\n}\n\nfunction crypto_sign_open(m, sm, n, pk) {\n var i, mlen;\n var t = new NativeBuffer(32);\n var p = [gf(), gf(), gf(), gf()],\n q = [gf(), gf(), gf(), gf()];\n\n mlen = -1;\n if(n < 64) {\n return -1;\n }\n\n if(unpackneg(q, pk)) {\n return -1;\n }\n\n for(i = 0; i < n; ++i) {\n m[i] = sm[i];\n }\n for(i = 0; i < 32; ++i) {\n m[i + 32] = pk[i];\n }\n var h = sha512(m, n);\n reduce(h);\n scalarmult(p, q, h);\n\n scalarbase(q, sm.subarray(32));\n add(p, q);\n pack(t, p);\n\n n -= 64;\n if(crypto_verify_32(sm, 0, t, 0)) {\n for(i = 0; i < n; ++i) {\n m[i] = 0;\n }\n return -1;\n }\n\n for(i = 0; i < n; ++i) {\n m[i] = sm[i + 64];\n }\n mlen = n;\n return mlen;\n}\n\nfunction modL(r, x) {\n var carry, i, j, k;\n for(i = 63; i >= 32; --i) {\n carry = 0;\n for(j = i - 32, k = i - 12; j < k; ++j) {\n x[j] += carry - 16 * x[i] * L[j - (i - 32)];\n carry = (x[j] + 128) >> 8;\n x[j] -= carry * 256;\n }\n x[j] += carry;\n x[i] = 0;\n }\n carry = 0;\n for(j = 0; j < 32; ++j) {\n x[j] += carry - (x[31] >> 4) * L[j];\n carry = x[j] >> 8;\n x[j] &= 255;\n }\n for(j = 0; j < 32; ++j) {\n x[j] -= carry * L[j];\n }\n for(i = 0; i < 32; ++i) {\n x[i + 1] += x[i] >> 8;\n r[i] = x[i] & 255;\n }\n}\n\nfunction reduce(r) {\n var x = new Float64Array(64);\n for(var i = 0; i < 64; ++i) {\n x[i] = r[i];\n r[i] = 0;\n }\n modL(r, x);\n}\n\nfunction add(p, q) {\n var a = gf(), b = gf(), c = gf(),\n d = gf(), e = gf(), f = gf(),\n g = gf(), h = gf(), t = gf();\n\n Z(a, p[1], p[0]);\n Z(t, q[1], q[0]);\n M(a, a, t);\n A(b, p[0], p[1]);\n A(t, q[0], q[1]);\n M(b, b, t);\n M(c, p[3], q[3]);\n M(c, c, D2);\n M(d, p[2], q[2]);\n A(d, d, d);\n Z(e, b, a);\n Z(f, d, c);\n A(g, d, c);\n A(h, b, a);\n\n M(p[0], e, f);\n M(p[1], h, g);\n M(p[2], g, f);\n M(p[3], e, h);\n}\n\nfunction cswap(p, q, b) {\n for(var i = 0; i < 4; ++i) {\n sel25519(p[i], q[i], b);\n }\n}\n\nfunction pack(r, p) {\n var tx = gf(), ty = gf(), zi = gf();\n inv25519(zi, p[2]);\n M(tx, p[0], zi);\n M(ty, p[1], zi);\n pack25519(r, ty);\n r[31] ^= par25519(tx) << 7;\n}\n\nfunction pack25519(o, n) {\n var i, j, b;\n var m = gf(), t = gf();\n for(i = 0; i < 16; ++i) {\n t[i] = n[i];\n }\n car25519(t);\n car25519(t);\n car25519(t);\n for(j = 0; j < 2; ++j) {\n m[0] = t[0] - 0xffed;\n for(i = 1; i < 15; ++i) {\n m[i] = t[i] - 0xffff - ((m[i - 1] >> 16) & 1);\n m[i-1] &= 0xffff;\n }\n m[15] = t[15] - 0x7fff - ((m[14] >> 16) & 1);\n b = (m[15] >> 16) & 1;\n m[14] &= 0xffff;\n sel25519(t, m, 1 - b);\n }\n for (i = 0; i < 16; i++) {\n o[2 * i] = t[i] & 0xff;\n o[2 * i + 1] = t[i] >> 8;\n }\n}\n\nfunction unpackneg(r, p) {\n var t = gf(), chk = gf(), num = gf(),\n den = gf(), den2 = gf(), den4 = gf(),\n den6 = gf();\n\n set25519(r[2], gf1);\n unpack25519(r[1], p);\n S(num, r[1]);\n M(den, num, D);\n Z(num, num, r[2]);\n A(den, r[2], den);\n\n S(den2, den);\n S(den4, den2);\n M(den6, den4, den2);\n M(t, den6, num);\n M(t, t, den);\n\n pow2523(t, t);\n M(t, t, num);\n M(t, t, den);\n M(t, t, den);\n M(r[0], t, den);\n\n S(chk, r[0]);\n M(chk, chk, den);\n if(neq25519(chk, num)) {\n M(r[0], r[0], I);\n }\n\n S(chk, r[0]);\n M(chk, chk, den);\n if(neq25519(chk, num)) {\n return -1;\n }\n\n if(par25519(r[0]) === (p[31] >> 7)) {\n Z(r[0], gf0, r[0]);\n }\n\n M(r[3], r[0], r[1]);\n return 0;\n}\n\nfunction unpack25519(o, n) {\n var i;\n for(i = 0; i < 16; ++i) {\n o[i] = n[2 * i] + (n[2 * i + 1] << 8);\n }\n o[15] &= 0x7fff;\n}\n\nfunction pow2523(o, i) {\n var c = gf();\n var a;\n for(a = 0; a < 16; ++a) {\n c[a] = i[a];\n }\n for(a = 250; a >= 0; --a) {\n S(c, c);\n if(a !== 1) {\n M(c, c, i);\n }\n }\n for(a = 0; a < 16; ++a) {\n o[a] = c[a];\n }\n}\n\nfunction neq25519(a, b) {\n var c = new NativeBuffer(32);\n var d = new NativeBuffer(32);\n pack25519(c, a);\n pack25519(d, b);\n return crypto_verify_32(c, 0, d, 0);\n}\n\nfunction crypto_verify_32(x, xi, y, yi) {\n return vn(x, xi, y, yi, 32);\n}\n\nfunction vn(x, xi, y, yi, n) {\n var i, d = 0;\n for(i = 0; i < n; ++i) {\n d |= x[xi + i] ^ y[yi + i];\n }\n return (1 & ((d - 1) >>> 8)) - 1;\n}\n\nfunction par25519(a) {\n var d = new NativeBuffer(32);\n pack25519(d, a);\n return d[0] & 1;\n}\n\nfunction scalarmult(p, q, s) {\n var b, i;\n set25519(p[0], gf0);\n set25519(p[1], gf1);\n set25519(p[2], gf1);\n set25519(p[3], gf0);\n for(i = 255; i >= 0; --i) {\n b = (s[(i / 8)|0] >> (i & 7)) & 1;\n cswap(p, q, b);\n add(q, p);\n add(p, p);\n cswap(p, q, b);\n }\n}\n\nfunction scalarbase(p, s) {\n var q = [gf(), gf(), gf(), gf()];\n set25519(q[0], X);\n set25519(q[1], Y);\n set25519(q[2], gf1);\n M(q[3], X, Y);\n scalarmult(p, q, s);\n}\n\nfunction set25519(r, a) {\n var i;\n for(i = 0; i < 16; i++) {\n r[i] = a[i] | 0;\n }\n}\n\nfunction inv25519(o, i) {\n var c = gf();\n var a;\n for(a = 0; a < 16; ++a) {\n c[a] = i[a];\n }\n for(a = 253; a >= 0; --a) {\n S(c, c);\n if(a !== 2 && a !== 4) {\n M(c, c, i);\n }\n }\n for(a = 0; a < 16; ++a) {\n o[a] = c[a];\n }\n}\n\nfunction car25519(o) {\n var i, v, c = 1;\n for(i = 0; i < 16; ++i) {\n v = o[i] + c + 65535;\n c = Math.floor(v / 65536);\n o[i] = v - c * 65536;\n }\n o[0] += c - 1 + 37 * (c - 1);\n}\n\nfunction sel25519(p, q, b) {\n var t, c = ~(b - 1);\n for(var i = 0; i < 16; ++i) {\n t = c & (p[i] ^ q[i]);\n p[i] ^= t;\n q[i] ^= t;\n }\n}\n\nfunction gf(init) {\n var i, r = new Float64Array(16);\n if(init) {\n for(i = 0; i < init.length; ++i) {\n r[i] = init[i];\n }\n }\n return r;\n}\n\nfunction A(o, a, b) {\n for(var i = 0; i < 16; ++i) {\n o[i] = a[i] + b[i];\n }\n}\n\nfunction Z(o, a, b) {\n for(var i = 0; i < 16; ++i) {\n o[i] = a[i] - b[i];\n }\n}\n\nfunction S(o, a) {\n M(o, a, a);\n}\n\nfunction M(o, a, b) {\n var v, c,\n t0 = 0, t1 = 0, t2 = 0, t3 = 0, t4 = 0, t5 = 0, t6 = 0, t7 = 0,\n t8 = 0, t9 = 0, t10 = 0, t11 = 0, t12 = 0, t13 = 0, t14 = 0, t15 = 0,\n t16 = 0, t17 = 0, t18 = 0, t19 = 0, t20 = 0, t21 = 0, t22 = 0, t23 = 0,\n t24 = 0, t25 = 0, t26 = 0, t27 = 0, t28 = 0, t29 = 0, t30 = 0,\n b0 = b[0],\n b1 = b[1],\n b2 = b[2],\n b3 = b[3],\n b4 = b[4],\n b5 = b[5],\n b6 = b[6],\n b7 = b[7],\n b8 = b[8],\n b9 = b[9],\n b10 = b[10],\n b11 = b[11],\n b12 = b[12],\n b13 = b[13],\n b14 = b[14],\n b15 = b[15];\n\n v = a[0];\n t0 += v * b0;\n t1 += v * b1;\n t2 += v * b2;\n t3 += v * b3;\n t4 += v * b4;\n t5 += v * b5;\n t6 += v * b6;\n t7 += v * b7;\n t8 += v * b8;\n t9 += v * b9;\n t10 += v * b10;\n t11 += v * b11;\n t12 += v * b12;\n t13 += v * b13;\n t14 += v * b14;\n t15 += v * b15;\n v = a[1];\n t1 += v * b0;\n t2 += v * b1;\n t3 += v * b2;\n t4 += v * b3;\n t5 += v * b4;\n t6 += v * b5;\n t7 += v * b6;\n t8 += v * b7;\n t9 += v * b8;\n t10 += v * b9;\n t11 += v * b10;\n t12 += v * b11;\n t13 += v * b12;\n t14 += v * b13;\n t15 += v * b14;\n t16 += v * b15;\n v = a[2];\n t2 += v * b0;\n t3 += v * b1;\n t4 += v * b2;\n t5 += v * b3;\n t6 += v * b4;\n t7 += v * b5;\n t8 += v * b6;\n t9 += v * b7;\n t10 += v * b8;\n t11 += v * b9;\n t12 += v * b10;\n t13 += v * b11;\n t14 += v * b12;\n t15 += v * b13;\n t16 += v * b14;\n t17 += v * b15;\n v = a[3];\n t3 += v * b0;\n t4 += v * b1;\n t5 += v * b2;\n t6 += v * b3;\n t7 += v * b4;\n t8 += v * b5;\n t9 += v * b6;\n t10 += v * b7;\n t11 += v * b8;\n t12 += v * b9;\n t13 += v * b10;\n t14 += v * b11;\n t15 += v * b12;\n t16 += v * b13;\n t17 += v * b14;\n t18 += v * b15;\n v = a[4];\n t4 += v * b0;\n t5 += v * b1;\n t6 += v * b2;\n t7 += v * b3;\n t8 += v * b4;\n t9 += v * b5;\n t10 += v * b6;\n t11 += v * b7;\n t12 += v * b8;\n t13 += v * b9;\n t14 += v * b10;\n t15 += v * b11;\n t16 += v * b12;\n t17 += v * b13;\n t18 += v * b14;\n t19 += v * b15;\n v = a[5];\n t5 += v * b0;\n t6 += v * b1;\n t7 += v * b2;\n t8 += v * b3;\n t9 += v * b4;\n t10 += v * b5;\n t11 += v * b6;\n t12 += v * b7;\n t13 += v * b8;\n t14 += v * b9;\n t15 += v * b10;\n t16 += v * b11;\n t17 += v * b12;\n t18 += v * b13;\n t19 += v * b14;\n t20 += v * b15;\n v = a[6];\n t6 += v * b0;\n t7 += v * b1;\n t8 += v * b2;\n t9 += v * b3;\n t10 += v * b4;\n t11 += v * b5;\n t12 += v * b6;\n t13 += v * b7;\n t14 += v * b8;\n t15 += v * b9;\n t16 += v * b10;\n t17 += v * b11;\n t18 += v * b12;\n t19 += v * b13;\n t20 += v * b14;\n t21 += v * b15;\n v = a[7];\n t7 += v * b0;\n t8 += v * b1;\n t9 += v * b2;\n t10 += v * b3;\n t11 += v * b4;\n t12 += v * b5;\n t13 += v * b6;\n t14 += v * b7;\n t15 += v * b8;\n t16 += v * b9;\n t17 += v * b10;\n t18 += v * b11;\n t19 += v * b12;\n t20 += v * b13;\n t21 += v * b14;\n t22 += v * b15;\n v = a[8];\n t8 += v * b0;\n t9 += v * b1;\n t10 += v * b2;\n t11 += v * b3;\n t12 += v * b4;\n t13 += v * b5;\n t14 += v * b6;\n t15 += v * b7;\n t16 += v * b8;\n t17 += v * b9;\n t18 += v * b10;\n t19 += v * b11;\n t20 += v * b12;\n t21 += v * b13;\n t22 += v * b14;\n t23 += v * b15;\n v = a[9];\n t9 += v * b0;\n t10 += v * b1;\n t11 += v * b2;\n t12 += v * b3;\n t13 += v * b4;\n t14 += v * b5;\n t15 += v * b6;\n t16 += v * b7;\n t17 += v * b8;\n t18 += v * b9;\n t19 += v * b10;\n t20 += v * b11;\n t21 += v * b12;\n t22 += v * b13;\n t23 += v * b14;\n t24 += v * b15;\n v = a[10];\n t10 += v * b0;\n t11 += v * b1;\n t12 += v * b2;\n t13 += v * b3;\n t14 += v * b4;\n t15 += v * b5;\n t16 += v * b6;\n t17 += v * b7;\n t18 += v * b8;\n t19 += v * b9;\n t20 += v * b10;\n t21 += v * b11;\n t22 += v * b12;\n t23 += v * b13;\n t24 += v * b14;\n t25 += v * b15;\n v = a[11];\n t11 += v * b0;\n t12 += v * b1;\n t13 += v * b2;\n t14 += v * b3;\n t15 += v * b4;\n t16 += v * b5;\n t17 += v * b6;\n t18 += v * b7;\n t19 += v * b8;\n t20 += v * b9;\n t21 += v * b10;\n t22 += v * b11;\n t23 += v * b12;\n t24 += v * b13;\n t25 += v * b14;\n t26 += v * b15;\n v = a[12];\n t12 += v * b0;\n t13 += v * b1;\n t14 += v * b2;\n t15 += v * b3;\n t16 += v * b4;\n t17 += v * b5;\n t18 += v * b6;\n t19 += v * b7;\n t20 += v * b8;\n t21 += v * b9;\n t22 += v * b10;\n t23 += v * b11;\n t24 += v * b12;\n t25 += v * b13;\n t26 += v * b14;\n t27 += v * b15;\n v = a[13];\n t13 += v * b0;\n t14 += v * b1;\n t15 += v * b2;\n t16 += v * b3;\n t17 += v * b4;\n t18 += v * b5;\n t19 += v * b6;\n t20 += v * b7;\n t21 += v * b8;\n t22 += v * b9;\n t23 += v * b10;\n t24 += v * b11;\n t25 += v * b12;\n t26 += v * b13;\n t27 += v * b14;\n t28 += v * b15;\n v = a[14];\n t14 += v * b0;\n t15 += v * b1;\n t16 += v * b2;\n t17 += v * b3;\n t18 += v * b4;\n t19 += v * b5;\n t20 += v * b6;\n t21 += v * b7;\n t22 += v * b8;\n t23 += v * b9;\n t24 += v * b10;\n t25 += v * b11;\n t26 += v * b12;\n t27 += v * b13;\n t28 += v * b14;\n t29 += v * b15;\n v = a[15];\n t15 += v * b0;\n t16 += v * b1;\n t17 += v * b2;\n t18 += v * b3;\n t19 += v * b4;\n t20 += v * b5;\n t21 += v * b6;\n t22 += v * b7;\n t23 += v * b8;\n t24 += v * b9;\n t25 += v * b10;\n t26 += v * b11;\n t27 += v * b12;\n t28 += v * b13;\n t29 += v * b14;\n t30 += v * b15;\n\n t0 += 38 * t16;\n t1 += 38 * t17;\n t2 += 38 * t18;\n t3 += 38 * t19;\n t4 += 38 * t20;\n t5 += 38 * t21;\n t6 += 38 * t22;\n t7 += 38 * t23;\n t8 += 38 * t24;\n t9 += 38 * t25;\n t10 += 38 * t26;\n t11 += 38 * t27;\n t12 += 38 * t28;\n t13 += 38 * t29;\n t14 += 38 * t30;\n // t15 left as is\n\n // first car\n c = 1;\n v = t0 + c + 65535; c = Math.floor(v / 65536); t0 = v - c * 65536;\n v = t1 + c + 65535; c = Math.floor(v / 65536); t1 = v - c * 65536;\n v = t2 + c + 65535; c = Math.floor(v / 65536); t2 = v - c * 65536;\n v = t3 + c + 65535; c = Math.floor(v / 65536); t3 = v - c * 65536;\n v = t4 + c + 65535; c = Math.floor(v / 65536); t4 = v - c * 65536;\n v = t5 + c + 65535; c = Math.floor(v / 65536); t5 = v - c * 65536;\n v = t6 + c + 65535; c = Math.floor(v / 65536); t6 = v - c * 65536;\n v = t7 + c + 65535; c = Math.floor(v / 65536); t7 = v - c * 65536;\n v = t8 + c + 65535; c = Math.floor(v / 65536); t8 = v - c * 65536;\n v = t9 + c + 65535; c = Math.floor(v / 65536); t9 = v - c * 65536;\n v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536;\n v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536;\n v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536;\n v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536;\n v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536;\n v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536;\n t0 += c-1 + 37 * (c-1);\n\n // second car\n c = 1;\n v = t0 + c + 65535; c = Math.floor(v / 65536); t0 = v - c * 65536;\n v = t1 + c + 65535; c = Math.floor(v / 65536); t1 = v - c * 65536;\n v = t2 + c + 65535; c = Math.floor(v / 65536); t2 = v - c * 65536;\n v = t3 + c + 65535; c = Math.floor(v / 65536); t3 = v - c * 65536;\n v = t4 + c + 65535; c = Math.floor(v / 65536); t4 = v - c * 65536;\n v = t5 + c + 65535; c = Math.floor(v / 65536); t5 = v - c * 65536;\n v = t6 + c + 65535; c = Math.floor(v / 65536); t6 = v - c * 65536;\n v = t7 + c + 65535; c = Math.floor(v / 65536); t7 = v - c * 65536;\n v = t8 + c + 65535; c = Math.floor(v / 65536); t8 = v - c * 65536;\n v = t9 + c + 65535; c = Math.floor(v / 65536); t9 = v - c * 65536;\n v = t10 + c + 65535; c = Math.floor(v / 65536); t10 = v - c * 65536;\n v = t11 + c + 65535; c = Math.floor(v / 65536); t11 = v - c * 65536;\n v = t12 + c + 65535; c = Math.floor(v / 65536); t12 = v - c * 65536;\n v = t13 + c + 65535; c = Math.floor(v / 65536); t13 = v - c * 65536;\n v = t14 + c + 65535; c = Math.floor(v / 65536); t14 = v - c * 65536;\n v = t15 + c + 65535; c = Math.floor(v / 65536); t15 = v - c * 65536;\n t0 += c-1 + 37 * (c-1);\n\n o[ 0] = t0;\n o[ 1] = t1;\n o[ 2] = t2;\n o[ 3] = t3;\n o[ 4] = t4;\n o[ 5] = t5;\n o[ 6] = t6;\n o[ 7] = t7;\n o[ 8] = t8;\n o[ 9] = t9;\n o[10] = t10;\n o[11] = t11;\n o[12] = t12;\n o[13] = t13;\n o[14] = t14;\n o[15] = t15;\n}\n","var AWS = require('./core');\n\n/**\n * Represents your AWS security credentials, specifically the\n * {accessKeyId}, {secretAccessKey}, and optional {sessionToken}.\n * Creating a `Credentials` object allows you to pass around your\n * security information to configuration and service objects.\n *\n * Note that this class typically does not need to be constructed manually,\n * as the {AWS.Config} and {AWS.Service} classes both accept simple\n * options hashes with the three keys. These structures will be converted\n * into Credentials objects automatically.\n *\n * ## Expiring and Refreshing Credentials\n *\n * Occasionally credentials can expire in the middle of a long-running\n * application. In this case, the SDK will automatically attempt to\n * refresh the credentials from the storage location if the Credentials\n * class implements the {refresh} method.\n *\n * If you are implementing a credential storage location, you\n * will want to create a subclass of the `Credentials` class and\n * override the {refresh} method. This method allows credentials to be\n * retrieved from the backing store, be it a file system, database, or\n * some network storage. The method should reset the credential attributes\n * on the object.\n *\n * @!attribute expired\n * @return [Boolean] whether the credentials have been expired and\n * require a refresh. Used in conjunction with {expireTime}.\n * @!attribute expireTime\n * @return [Date] a time when credentials should be considered expired. Used\n * in conjunction with {expired}.\n * @!attribute accessKeyId\n * @return [String] the AWS access key ID\n * @!attribute secretAccessKey\n * @return [String] the AWS secret access key\n * @!attribute sessionToken\n * @return [String] an optional AWS session token\n */\nAWS.Credentials = AWS.util.inherit({\n /**\n * A credentials object can be created using positional arguments or an options\n * hash.\n *\n * @overload AWS.Credentials(accessKeyId, secretAccessKey, sessionToken=null)\n * Creates a Credentials object with a given set of credential information\n * as positional arguments.\n * @param accessKeyId [String] the AWS access key ID\n * @param secretAccessKey [String] the AWS secret access key\n * @param sessionToken [String] the optional AWS session token\n * @example Create a credentials object with AWS credentials\n * var creds = new AWS.Credentials('akid', 'secret', 'session');\n * @overload AWS.Credentials(options)\n * Creates a Credentials object with a given set of credential information\n * as an options hash.\n * @option options accessKeyId [String] the AWS access key ID\n * @option options secretAccessKey [String] the AWS secret access key\n * @option options sessionToken [String] the optional AWS session token\n * @example Create a credentials object with AWS credentials\n * var creds = new AWS.Credentials({\n * accessKeyId: 'akid', secretAccessKey: 'secret', sessionToken: 'session'\n * });\n */\n constructor: function Credentials() {\n // hide secretAccessKey from being displayed with util.inspect\n AWS.util.hideProperties(this, ['secretAccessKey']);\n\n this.expired = false;\n this.expireTime = null;\n this.refreshCallbacks = [];\n if (arguments.length === 1 && typeof arguments[0] === 'object') {\n var creds = arguments[0].credentials || arguments[0];\n this.accessKeyId = creds.accessKeyId;\n this.secretAccessKey = creds.secretAccessKey;\n this.sessionToken = creds.sessionToken;\n } else {\n this.accessKeyId = arguments[0];\n this.secretAccessKey = arguments[1];\n this.sessionToken = arguments[2];\n }\n },\n\n /**\n * @return [Integer] the number of seconds before {expireTime} during which\n * the credentials will be considered expired.\n */\n expiryWindow: 15,\n\n /**\n * @return [Boolean] whether the credentials object should call {refresh}\n * @note Subclasses should override this method to provide custom refresh\n * logic.\n */\n needsRefresh: function needsRefresh() {\n var currentTime = AWS.util.date.getDate().getTime();\n var adjustedTime = new Date(currentTime + this.expiryWindow * 1000);\n\n if (this.expireTime && adjustedTime > this.expireTime) {\n return true;\n } else {\n return this.expired || !this.accessKeyId || !this.secretAccessKey;\n }\n },\n\n /**\n * Gets the existing credentials, refreshing them if they are not yet loaded\n * or have expired. Users should call this method before using {refresh},\n * as this will not attempt to reload credentials when they are already\n * loaded into the object.\n *\n * @callback callback function(err)\n * When this callback is called with no error, it means either credentials\n * do not need to be refreshed or refreshed credentials information has\n * been loaded into the object (as the `accessKeyId`, `secretAccessKey`,\n * and `sessionToken` properties).\n * @param err [Error] if an error occurred, this value will be filled\n */\n get: function get(callback) {\n var self = this;\n if (this.needsRefresh()) {\n this.refresh(function(err) {\n if (!err) self.expired = false; // reset expired flag\n if (callback) callback(err);\n });\n } else if (callback) {\n callback();\n }\n },\n\n /**\n * @!method getPromise()\n * Returns a 'thenable' promise.\n * Gets the existing credentials, refreshing them if they are not yet loaded\n * or have expired. Users should call this method before using {refresh},\n * as this will not attempt to reload credentials when they are already\n * loaded into the object.\n *\n * Two callbacks can be provided to the `then` method on the returned promise.\n * The first callback will be called if the promise is fulfilled, and the second\n * callback will be called if the promise is rejected.\n * @callback fulfilledCallback function()\n * Called if the promise is fulfilled. When this callback is called, it\n * means either credentials do not need to be refreshed or refreshed\n * credentials information has been loaded into the object (as the\n * `accessKeyId`, `secretAccessKey`, and `sessionToken` properties).\n * @callback rejectedCallback function(err)\n * Called if the promise is rejected.\n * @param err [Error] if an error occurred, this value will be filled\n * @return [Promise] A promise that represents the state of the `get` call.\n * @example Calling the `getPromise` method.\n * var promise = credProvider.getPromise();\n * promise.then(function() { ... }, function(err) { ... });\n */\n\n /**\n * @!method refreshPromise()\n * Returns a 'thenable' promise.\n * Refreshes the credentials. Users should call {get} before attempting\n * to forcibly refresh credentials.\n *\n * Two callbacks can be provided to the `then` method on the returned promise.\n * The first callback will be called if the promise is fulfilled, and the second\n * callback will be called if the promise is rejected.\n * @callback fulfilledCallback function()\n * Called if the promise is fulfilled. When this callback is called, it\n * means refreshed credentials information has been loaded into the object\n * (as the `accessKeyId`, `secretAccessKey`, and `sessionToken` properties).\n * @callback rejectedCallback function(err)\n * Called if the promise is rejected.\n * @param err [Error] if an error occurred, this value will be filled\n * @return [Promise] A promise that represents the state of the `refresh` call.\n * @example Calling the `refreshPromise` method.\n * var promise = credProvider.refreshPromise();\n * promise.then(function() { ... }, function(err) { ... });\n */\n\n /**\n * Refreshes the credentials. Users should call {get} before attempting\n * to forcibly refresh credentials.\n *\n * @callback callback function(err)\n * When this callback is called with no error, it means refreshed\n * credentials information has been loaded into the object (as the\n * `accessKeyId`, `secretAccessKey`, and `sessionToken` properties).\n * @param err [Error] if an error occurred, this value will be filled\n * @note Subclasses should override this class to reset the\n * {accessKeyId}, {secretAccessKey} and optional {sessionToken}\n * on the credentials object and then call the callback with\n * any error information.\n * @see get\n */\n refresh: function refresh(callback) {\n this.expired = false;\n callback();\n },\n\n /**\n * @api private\n * @param callback\n */\n coalesceRefresh: function coalesceRefresh(callback, sync) {\n var self = this;\n if (self.refreshCallbacks.push(callback) === 1) {\n self.load(function onLoad(err) {\n AWS.util.arrayEach(self.refreshCallbacks, function(callback) {\n if (sync) {\n callback(err);\n } else {\n // callback could throw, so defer to ensure all callbacks are notified\n AWS.util.defer(function () {\n callback(err);\n });\n }\n });\n self.refreshCallbacks.length = 0;\n });\n }\n },\n\n /**\n * @api private\n * @param callback\n */\n load: function load(callback) {\n callback();\n }\n});\n\n/**\n * @api private\n */\nAWS.Credentials.addPromisesToClass = function addPromisesToClass(PromiseDependency) {\n this.prototype.getPromise = AWS.util.promisifyMethod('get', PromiseDependency);\n this.prototype.refreshPromise = AWS.util.promisifyMethod('refresh', PromiseDependency);\n};\n\n/**\n * @api private\n */\nAWS.Credentials.deletePromisesFromClass = function deletePromisesFromClass() {\n delete this.prototype.getPromise;\n delete this.prototype.refreshPromise;\n};\n\nAWS.util.addPromises(AWS.Credentials);\n","var AWS = require('../core');\n\n/**\n * @api private\n */\nvar blobPayloadOutputOps = [\n 'deleteThingShadow',\n 'getThingShadow',\n 'updateThingShadow'\n];\n\n/**\n * Constructs a service interface object. Each API operation is exposed as a\n * function on service.\n *\n * ### Sending a Request Using IotData\n *\n * ```javascript\n * var iotdata = new AWS.IotData({endpoint: 'my.host.tld'});\n * iotdata.getThingShadow(params, function (err, data) {\n * if (err) console.log(err, err.stack); // an error occurred\n * else console.log(data); // successful response\n * });\n * ```\n *\n * ### Locking the API Version\n *\n * In order to ensure that the IotData object uses this specific API,\n * you can construct the object by passing the `apiVersion` option to the\n * constructor:\n *\n * ```javascript\n * var iotdata = new AWS.IotData({\n * endpoint: 'my.host.tld',\n * apiVersion: '2015-05-28'\n * });\n * ```\n *\n * You can also set the API version globally in `AWS.config.apiVersions` using\n * the **iotdata** service identifier:\n *\n * ```javascript\n * AWS.config.apiVersions = {\n * iotdata: '2015-05-28',\n * // other service API versions\n * };\n *\n * var iotdata = new AWS.IotData({endpoint: 'my.host.tld'});\n * ```\n *\n * @note You *must* provide an `endpoint` configuration parameter when\n * constructing this service. See {constructor} for more information.\n *\n * @!method constructor(options = {})\n * Constructs a service object. This object has one method for each\n * API operation.\n *\n * @example Constructing a IotData object\n * var iotdata = new AWS.IotData({endpoint: 'my.host.tld'});\n * @note You *must* provide an `endpoint` when constructing this service.\n * @option (see AWS.Config.constructor)\n *\n * @service iotdata\n * @version 2015-05-28\n */\nAWS.util.update(AWS.IotData.prototype, {\n /**\n * @api private\n */\n validateService: function validateService() {\n if (!this.config.endpoint || this.config.endpoint.indexOf('{') >= 0) {\n var msg = 'AWS.IotData requires an explicit ' +\n '`endpoint\\' configuration option.';\n throw AWS.util.error(new Error(),\n {name: 'InvalidEndpoint', message: msg});\n }\n },\n\n /**\n * @api private\n */\n setupRequestListeners: function setupRequestListeners(request) {\n request.addListener('validateResponse', this.validateResponseBody);\n if (blobPayloadOutputOps.indexOf(request.operation) > -1) {\n request.addListener('extractData', AWS.util.convertPayloadToString);\n }\n },\n\n /**\n * @api private\n */\n validateResponseBody: function validateResponseBody(resp) {\n var body = resp.httpResponse.body.toString() || '{}';\n var bodyCheck = body.trim();\n if (!bodyCheck || bodyCheck.charAt(0) !== '{') {\n resp.httpResponse.body = '';\n }\n }\n\n});\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\n// Adapted from Chris Veness' SHA1 code at\n// http://www.movable-type.co.uk/scripts/sha1.html\nfunction f(s, x, y, z) {\n switch (s) {\n case 0:\n return x & y ^ ~x & z;\n\n case 1:\n return x ^ y ^ z;\n\n case 2:\n return x & y ^ x & z ^ y & z;\n\n case 3:\n return x ^ y ^ z;\n }\n}\n\nfunction ROTL(x, n) {\n return x << n | x >>> 32 - n;\n}\n\nfunction sha1(bytes) {\n var K = [0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xca62c1d6];\n var H = [0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0];\n\n if (typeof bytes == 'string') {\n var msg = unescape(encodeURIComponent(bytes)); // UTF8 escape\n\n bytes = new Array(msg.length);\n\n for (var i = 0; i < msg.length; i++) bytes[i] = msg.charCodeAt(i);\n }\n\n bytes.push(0x80);\n var l = bytes.length / 4 + 2;\n var N = Math.ceil(l / 16);\n var M = new Array(N);\n\n for (var i = 0; i < N; i++) {\n M[i] = new Array(16);\n\n for (var j = 0; j < 16; j++) {\n M[i][j] = bytes[i * 64 + j * 4] << 24 | bytes[i * 64 + j * 4 + 1] << 16 | bytes[i * 64 + j * 4 + 2] << 8 | bytes[i * 64 + j * 4 + 3];\n }\n }\n\n M[N - 1][14] = (bytes.length - 1) * 8 / Math.pow(2, 32);\n M[N - 1][14] = Math.floor(M[N - 1][14]);\n M[N - 1][15] = (bytes.length - 1) * 8 & 0xffffffff;\n\n for (var i = 0; i < N; i++) {\n var W = new Array(80);\n\n for (var t = 0; t < 16; t++) W[t] = M[i][t];\n\n for (var t = 16; t < 80; t++) {\n W[t] = ROTL(W[t - 3] ^ W[t - 8] ^ W[t - 14] ^ W[t - 16], 1);\n }\n\n var a = H[0];\n var b = H[1];\n var c = H[2];\n var d = H[3];\n var e = H[4];\n\n for (var t = 0; t < 80; t++) {\n var s = Math.floor(t / 20);\n var T = ROTL(a, 5) + f(s, b, c, d) + e + K[s] + W[t] >>> 0;\n e = d;\n d = c;\n c = ROTL(b, 30) >>> 0;\n b = a;\n a = T;\n }\n\n H[0] = H[0] + a >>> 0;\n H[1] = H[1] + b >>> 0;\n H[2] = H[2] + c >>> 0;\n H[3] = H[3] + d >>> 0;\n H[4] = H[4] + e >>> 0;\n }\n\n return [H[0] >> 24 & 0xff, H[0] >> 16 & 0xff, H[0] >> 8 & 0xff, H[0] & 0xff, H[1] >> 24 & 0xff, H[1] >> 16 & 0xff, H[1] >> 8 & 0xff, H[1] & 0xff, H[2] >> 24 & 0xff, H[2] >> 16 & 0xff, H[2] >> 8 & 0xff, H[2] & 0xff, H[3] >> 24 & 0xff, H[3] >> 16 & 0xff, H[3] >> 8 & 0xff, H[3] & 0xff, H[4] >> 24 & 0xff, H[4] >> 16 & 0xff, H[4] >> 8 & 0xff, H[4] & 0xff];\n}\n\nvar _default = sha1;\nexports.default = _default;","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport AudioVideoControllerState from '../audiovideocontroller/AudioVideoControllerState';\nimport SignalingClientVideoSubscriptionConfiguration from '../signalingclient/SignalingClientVideoSubscriptionConfiguration';\nimport type { Eq, PartialOrd } from '../utils/Types';\nimport VideoPreference from './VideoPreference';\n\nexport function convertVideoPreferencesToSignalingClientVideoSubscriptionConfiguration(\n context: AudioVideoControllerState,\n receiveGroupIds: number[],\n preferences: VideoPreferences\n): SignalingClientVideoSubscriptionConfiguration[] {\n if (\n context.transceiverController.getMidForGroupId === undefined ||\n context.videoStreamIndex.attendeeIdForGroupId === undefined ||\n preferences === undefined\n ) {\n return [];\n }\n\n const configurations = new Array();\n const attendeeIdToMid = new Map();\n const attendeeIdToGroupId = new Map();\n for (const groupId of receiveGroupIds) {\n // The local description will have been set by the time this task is running, so all\n // of the transceivers should have `mid` set by now (see comment above `getMidForStreamId`)\n const mid = context.transceiverController.getMidForGroupId(groupId);\n if (mid === undefined) {\n continue;\n }\n const attendeeId = context.videoStreamIndex.attendeeIdForGroupId(groupId);\n attendeeIdToMid.set(attendeeId, mid);\n attendeeIdToGroupId.set(attendeeId, groupId);\n }\n for (const preference of preferences) {\n const configuration = new SignalingClientVideoSubscriptionConfiguration();\n const mid = attendeeIdToMid.get(preference.attendeeId);\n if (mid === undefined) {\n continue;\n }\n configuration.mid = mid;\n configuration.attendeeId = preference.attendeeId;\n configuration.groupId = attendeeIdToGroupId.get(preference.attendeeId);\n // The signaling protocol expects 'higher' values for 'higher' priorities\n configuration.priority = Number.MAX_SAFE_INTEGER - preference.priority;\n configuration.targetBitrateKbps = preference.targetSizeToBitrateKbps(preference.targetSize);\n configuration.qualityAdaptationPreference = preference.degradationPreference;\n configurations.push(configuration);\n }\n return configurations;\n}\nclass ObjectSet implements Iterable {\n constructor(private items: T[] = []) {}\n\n static default(): ObjectSet {\n return new ObjectSet([]);\n }\n\n // Returns the items in sorted order.\n [Symbol.iterator](): Iterator {\n let i = 0;\n const items = this.items;\n return {\n next(): IteratorResult {\n if (i < items.length) {\n return {\n done: false,\n value: items[i++],\n };\n }\n return {\n done: true,\n value: null,\n };\n },\n };\n }\n\n first(): T | undefined {\n return this.items[0];\n }\n\n add(item: T): void {\n // If this is used elsewhere, there needs to be a duplicate check here\n this.items.push(item);\n }\n\n replaceFirst(newItem: T, f: (item: T) => boolean): void {\n const pos = this.items.findIndex(f);\n if (pos === -1) {\n // If this is used elsewhere, there needs to be a duplicate check here\n this.items.push(newItem);\n } else if (!this.has(newItem)) {\n this.items[pos] = newItem;\n } else {\n this.items.splice(pos, 1);\n }\n }\n\n remove(item: T): void {\n this.items = this.items.filter(a => !a.equals(item));\n }\n\n clear(): void {\n this.items = [];\n }\n\n isEmpty(): boolean {\n return this.items.length === 0;\n }\n\n equals(other: this): boolean {\n if (other === this) {\n return true;\n }\n\n if (other.items.length !== this.items.length) {\n return false;\n }\n\n // TODO: if we keep the arrays sorted correctly, not just by priority, then\n // we don't need to do this painstaking O(n^2) work.\n for (const item of this.items) {\n if (!other.items.some(a => a.equals(item))) {\n return false;\n }\n }\n return true;\n }\n\n has(item: T): boolean {\n return this.items.some(a => a.equals(item));\n }\n\n some(f: (item: T) => boolean): boolean {\n return this.items.some(f);\n }\n\n clone(): ObjectSet {\n return new ObjectSet([...this.items]);\n }\n\n sort(): void {\n this.items.sort((a, b) => a.partialCompare(b));\n }\n\n modify(): SetBuilder {\n // COW.\n return new SetBuilder(this);\n }\n}\n\nclass SetBuilder {\n private copied = false;\n\n constructor(private items: ObjectSet = new ObjectSet()) {}\n\n private cow(): void {\n if (this.copied) {\n return;\n }\n this.items = this.items.clone();\n this.copied = true;\n }\n\n add(item: T): void {\n // Don't actually need to COW unless the item is there to add.\n if (this.items.has(item)) {\n return;\n }\n this.cow();\n this.items.add(item);\n }\n\n replaceFirst(newItem: T, f: (item: T) => boolean): void {\n // Don't actually need to COW unless the item is already there\n // and there are no items to replace\n if (this.items.has(newItem) && !this.items.some(f)) {\n return;\n }\n this.cow();\n this.items.replaceFirst(newItem, f);\n }\n\n remove(item: T): void {\n // Don't actually need to COW unless the item is there to remove.\n if (!this.items.has(item)) {\n return;\n }\n this.cow();\n this.items.remove(item);\n }\n\n some(f: (preference: T) => boolean): boolean {\n return this.items.some(f);\n }\n\n clear(): void {\n if (this.items.isEmpty()) {\n return;\n }\n this.cow();\n this.items.clear();\n }\n\n build(): ObjectSet {\n // Immutable sets are always kept sorted!\n if (this.copied) {\n this.items.sort();\n }\n this.copied = false;\n return this.items;\n }\n}\n\nexport class MutableVideoPreferences {\n constructor(private builder: SetBuilder) {}\n\n add(pref: VideoPreference): void {\n this.builder.add(pref);\n }\n\n replaceFirst(newPref: VideoPreference, f: (pref: VideoPreference) => boolean): void {\n this.builder.replaceFirst(newPref, f);\n }\n\n remove(pref: VideoPreference): void {\n this.builder.remove(pref);\n }\n\n some(f: (preference: VideoPreference) => boolean): boolean {\n return this.builder.some(f);\n }\n\n clear(): void {\n this.builder.clear();\n }\n\n build(): VideoPreferences {\n return new VideoPreferences(this.builder.build());\n }\n}\n\nexport class VideoPreferences implements Iterable, Eq {\n static prepare(): MutableVideoPreferences {\n return new MutableVideoPreferences(new SetBuilder());\n }\n\n static default(): VideoPreferences {\n return new VideoPreferences(ObjectSet.default());\n }\n\n /** @internal */\n constructor(private items: ObjectSet) {}\n\n [Symbol.iterator](): Iterator {\n return this.items[Symbol.iterator]();\n }\n\n highestPriority(): number | undefined {\n return this.items.first()?.priority;\n }\n\n // Our items happen to always be sorted!\n sorted(): Iterator {\n return this.items[Symbol.iterator]();\n }\n\n equals(other: this): boolean {\n return other === this || this.items.equals(other.items);\n }\n\n modify(): MutableVideoPreferences {\n return new MutableVideoPreferences(this.items.modify());\n }\n\n some(f: (pref: VideoPreference) => boolean): boolean {\n return this.items.some(f);\n }\n\n isEmpty(): boolean {\n return this.items.isEmpty();\n }\n\n clone(): VideoPreferences {\n const videoPreferences = VideoPreferences.prepare();\n for (const preference of this.items) {\n videoPreferences.add(preference.clone());\n }\n return videoPreferences.build();\n }\n}\n\nexport default VideoPreferences;\n","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar aSet = require('../internals/a-set');\nvar iterate = require('../internals/set-iterate');\nvar toString = require('../internals/to-string');\n\nvar arrayJoin = uncurryThis([].join);\nvar push = uncurryThis([].push);\n\n// `Set.prototype.join` method\n// https://github.com/tc39/proposal-collection-methods\n$({ target: 'Set', proto: true, real: true, forced: true }, {\n join: function join(separator) {\n var set = aSet(this);\n var sep = separator === undefined ? ',' : toString(separator);\n var array = [];\n iterate(set, function (value) {\n push(array, value);\n });\n return arrayJoin(array, sep);\n }\n});\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport Logger from '../logger/Logger';\nimport BaseTask from './BaseTask';\nimport Task from './Task';\n\n/**\n * [[ParallelGroupTask]] runs a set of tasks in parallel. When canceled, it\n * stops any currently running tasks.\n */\nexport default class ParallelGroupTask extends BaseTask {\n constructor(logger: Logger, protected taskName: string, private tasksToRunParallel: Task[]) {\n super(logger);\n for (const task of tasksToRunParallel) {\n task.setParent(this);\n }\n }\n\n cancel(): void {\n for (const task of this.tasksToRunParallel) {\n this.logger.info(`canceling parallel group task ${this.name()} subtask ${task.name()}`);\n task.cancel();\n }\n }\n\n async run(): Promise {\n const taskResults: Promise[] = [];\n for (const task of this.tasksToRunParallel) {\n this.logger.info(`parallel group task ${this.name()} running subtask ${task.name()}`);\n taskResults.push(task.run());\n }\n const failures: string[] = [];\n for (let i = 0; i < taskResults.length; i++) {\n try {\n await taskResults[i];\n } catch (err) {\n failures.push(`task ${this.tasksToRunParallel[i].name()} failed: ${err.message}`);\n }\n this.logger.info(\n `parallel group task ${this.name()} completed subtask ${this.tasksToRunParallel[i].name()}`\n );\n }\n if (failures.length > 0) {\n const failureMessage = failures.join(', ');\n this.logAndThrow(`parallel group task ${this.name()} failed for tasks: ${failureMessage}`);\n }\n this.logger.info(`parallel group task ${this.name()} completed`);\n }\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport Direction from './ClientMetricReportDirection';\nimport MediaType from './ClientMetricReportMediaType';\n\nexport default class StreamMetricReport {\n streamId: number;\n groupId: number;\n mediaType: MediaType;\n direction: Direction;\n previousMetrics: { [id: string]: number } = {};\n currentMetrics: { [id: string]: number } = {};\n // As metric values do not necessarily be number, this is a workaround in case metric value is string\n currentStringMetrics: { [id: string]: string } = {};\n previousObjectMetrics: { [id: string]: object } = {};\n currentObjectMetrics: { [id: string]: object } = {};\n}\n","import { BLOCK_SIZE } from \"./constants\";\nimport { RawSha256 } from \"./RawSha256\";\nimport { Hash, SourceData } from \"@aws-sdk/types\";\nimport { isEmptyData, convertToBuffer } from \"@aws-crypto/util\";\n\nexport class Sha256 implements Hash {\n private readonly hash = new RawSha256();\n private readonly outer?: RawSha256;\n private error: any;\n\n constructor(secret?: SourceData) {\n if (secret) {\n this.outer = new RawSha256();\n const inner = bufferFromSecret(secret);\n const outer = new Uint8Array(BLOCK_SIZE);\n outer.set(inner);\n\n for (let i = 0; i < BLOCK_SIZE; i++) {\n inner[i] ^= 0x36;\n outer[i] ^= 0x5c;\n }\n\n this.hash.update(inner);\n this.outer.update(outer);\n\n // overwrite the copied key in memory\n for (let i = 0; i < inner.byteLength; i++) {\n inner[i] = 0;\n }\n }\n }\n\n update(toHash: SourceData): void {\n if (isEmptyData(toHash) || this.error) {\n return;\n }\n\n try {\n this.hash.update(convertToBuffer(toHash));\n } catch (e) {\n this.error = e;\n }\n }\n\n /* This synchronous method keeps compatibility\n * with the v2 aws-sdk.\n */\n digestSync(): Uint8Array {\n if (this.error) {\n throw this.error;\n }\n\n if (this.outer) {\n if (!this.outer.finished) {\n this.outer.update(this.hash.digest());\n }\n\n return this.outer.digest();\n }\n\n return this.hash.digest();\n }\n\n /* The underlying digest method here is synchronous.\n * To keep the same interface with the other hash functions\n * the default is to expose this as an async method.\n * However, it can sometimes be useful to have a sync method.\n */\n async digest(): Promise {\n return this.digestSync();\n }\n}\n\nfunction bufferFromSecret(secret: SourceData): Uint8Array {\n let input = convertToBuffer(secret);\n\n if (input.byteLength > BLOCK_SIZE) {\n const bufferHash = new RawSha256();\n bufferHash.update(input);\n input = bufferHash.digest();\n }\n\n const buffer = new Uint8Array(BLOCK_SIZE);\n buffer.set(input);\n return buffer;\n}\n","'use strict';\n\nvar utils = require('./utils');\nvar bind = require('./helpers/bind');\nvar Axios = require('./core/Axios');\nvar mergeConfig = require('./core/mergeConfig');\nvar defaults = require('./defaults');\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n * @return {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n var context = new Axios(defaultConfig);\n var instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context);\n\n // Copy context to instance\n utils.extend(instance, context);\n\n return instance;\n}\n\n// Create the default instance to be exported\nvar axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Factory for creating new instances\naxios.create = function create(instanceConfig) {\n return createInstance(mergeConfig(axios.defaults, instanceConfig));\n};\n\n// Expose Cancel & CancelToken\naxios.Cancel = require('./cancel/Cancel');\naxios.CancelToken = require('./cancel/CancelToken');\naxios.isCancel = require('./cancel/isCancel');\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\naxios.spread = require('./helpers/spread');\n\n// Expose isAxiosError\naxios.isAxiosError = require('./helpers/isAxiosError');\n\nmodule.exports = axios;\n\n// Allow use of default import syntax in TypeScript\nmodule.exports.default = axios;\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs have full support of the APIs needed to test\n // whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n var msie = /(msie|trident)/i.test(navigator.userAgent);\n var urlParsingNode = document.createElement('a');\n var originURL;\n\n /**\n * Parse a URL to discover it's components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n var href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })()\n);\n","var AWS = require('../core');\nvar v4Credentials = require('./v4_credentials');\nvar inherit = AWS.util.inherit;\n\n/**\n * @api private\n */\nvar expiresHeader = 'presigned-expires';\n\n/**\n * @api private\n */\nAWS.Signers.V4 = inherit(AWS.Signers.RequestSigner, {\n constructor: function V4(request, serviceName, options) {\n AWS.Signers.RequestSigner.call(this, request);\n this.serviceName = serviceName;\n options = options || {};\n this.signatureCache = typeof options.signatureCache === 'boolean' ? options.signatureCache : true;\n this.operation = options.operation;\n this.signatureVersion = options.signatureVersion;\n },\n\n algorithm: 'AWS4-HMAC-SHA256',\n\n addAuthorization: function addAuthorization(credentials, date) {\n var datetime = AWS.util.date.iso8601(date).replace(/[:\\-]|\\.\\d{3}/g, '');\n\n if (this.isPresigned()) {\n this.updateForPresigned(credentials, datetime);\n } else {\n this.addHeaders(credentials, datetime);\n }\n\n this.request.headers['Authorization'] =\n this.authorization(credentials, datetime);\n },\n\n addHeaders: function addHeaders(credentials, datetime) {\n this.request.headers['X-Amz-Date'] = datetime;\n if (credentials.sessionToken) {\n this.request.headers['x-amz-security-token'] = credentials.sessionToken;\n }\n },\n\n updateForPresigned: function updateForPresigned(credentials, datetime) {\n var credString = this.credentialString(datetime);\n var qs = {\n 'X-Amz-Date': datetime,\n 'X-Amz-Algorithm': this.algorithm,\n 'X-Amz-Credential': credentials.accessKeyId + '/' + credString,\n 'X-Amz-Expires': this.request.headers[expiresHeader],\n 'X-Amz-SignedHeaders': this.signedHeaders()\n };\n\n if (credentials.sessionToken) {\n qs['X-Amz-Security-Token'] = credentials.sessionToken;\n }\n\n if (this.request.headers['Content-Type']) {\n qs['Content-Type'] = this.request.headers['Content-Type'];\n }\n if (this.request.headers['Content-MD5']) {\n qs['Content-MD5'] = this.request.headers['Content-MD5'];\n }\n if (this.request.headers['Cache-Control']) {\n qs['Cache-Control'] = this.request.headers['Cache-Control'];\n }\n\n // need to pull in any other X-Amz-* headers\n AWS.util.each.call(this, this.request.headers, function(key, value) {\n if (key === expiresHeader) return;\n if (this.isSignableHeader(key)) {\n var lowerKey = key.toLowerCase();\n // Metadata should be normalized\n if (lowerKey.indexOf('x-amz-meta-') === 0) {\n qs[lowerKey] = value;\n } else if (lowerKey.indexOf('x-amz-') === 0) {\n qs[key] = value;\n }\n }\n });\n\n var sep = this.request.path.indexOf('?') >= 0 ? '&' : '?';\n this.request.path += sep + AWS.util.queryParamsToString(qs);\n },\n\n authorization: function authorization(credentials, datetime) {\n var parts = [];\n var credString = this.credentialString(datetime);\n parts.push(this.algorithm + ' Credential=' +\n credentials.accessKeyId + '/' + credString);\n parts.push('SignedHeaders=' + this.signedHeaders());\n parts.push('Signature=' + this.signature(credentials, datetime));\n return parts.join(', ');\n },\n\n signature: function signature(credentials, datetime) {\n var signingKey = v4Credentials.getSigningKey(\n credentials,\n datetime.substr(0, 8),\n this.request.region,\n this.serviceName,\n this.signatureCache\n );\n return AWS.util.crypto.hmac(signingKey, this.stringToSign(datetime), 'hex');\n },\n\n stringToSign: function stringToSign(datetime) {\n var parts = [];\n parts.push('AWS4-HMAC-SHA256');\n parts.push(datetime);\n parts.push(this.credentialString(datetime));\n parts.push(this.hexEncodedHash(this.canonicalString()));\n return parts.join('\\n');\n },\n\n canonicalString: function canonicalString() {\n var parts = [], pathname = this.request.pathname();\n if (this.serviceName !== 's3' && this.signatureVersion !== 's3v4') pathname = AWS.util.uriEscapePath(pathname);\n\n parts.push(this.request.method);\n parts.push(pathname);\n parts.push(this.request.search());\n parts.push(this.canonicalHeaders() + '\\n');\n parts.push(this.signedHeaders());\n parts.push(this.hexEncodedBodyHash());\n return parts.join('\\n');\n },\n\n canonicalHeaders: function canonicalHeaders() {\n var headers = [];\n AWS.util.each.call(this, this.request.headers, function (key, item) {\n headers.push([key, item]);\n });\n headers.sort(function (a, b) {\n return a[0].toLowerCase() < b[0].toLowerCase() ? -1 : 1;\n });\n var parts = [];\n AWS.util.arrayEach.call(this, headers, function (item) {\n var key = item[0].toLowerCase();\n if (this.isSignableHeader(key)) {\n var value = item[1];\n if (typeof value === 'undefined' || value === null || typeof value.toString !== 'function') {\n throw AWS.util.error(new Error('Header ' + key + ' contains invalid value'), {\n code: 'InvalidHeader'\n });\n }\n parts.push(key + ':' +\n this.canonicalHeaderValues(value.toString()));\n }\n });\n return parts.join('\\n');\n },\n\n canonicalHeaderValues: function canonicalHeaderValues(values) {\n return values.replace(/\\s+/g, ' ').replace(/^\\s+|\\s+$/g, '');\n },\n\n signedHeaders: function signedHeaders() {\n var keys = [];\n AWS.util.each.call(this, this.request.headers, function (key) {\n key = key.toLowerCase();\n if (this.isSignableHeader(key)) keys.push(key);\n });\n return keys.sort().join(';');\n },\n\n credentialString: function credentialString(datetime) {\n return v4Credentials.createScope(\n datetime.substr(0, 8),\n this.request.region,\n this.serviceName\n );\n },\n\n hexEncodedHash: function hash(string) {\n return AWS.util.crypto.sha256(string, 'hex');\n },\n\n hexEncodedBodyHash: function hexEncodedBodyHash() {\n var request = this.request;\n if (this.isPresigned() && (['s3', 's3-object-lambda'].indexOf(this.serviceName) > -1) && !request.body) {\n return 'UNSIGNED-PAYLOAD';\n } else if (request.headers['X-Amz-Content-Sha256']) {\n return request.headers['X-Amz-Content-Sha256'];\n } else {\n return this.hexEncodedHash(this.request.body || '');\n }\n },\n\n unsignableHeaders: [\n 'authorization',\n 'content-type',\n 'content-length',\n 'user-agent',\n expiresHeader,\n 'expect',\n 'x-amzn-trace-id'\n ],\n\n isSignableHeader: function isSignableHeader(key) {\n if (key.toLowerCase().indexOf('x-amz-') === 0) return true;\n return this.unsignableHeaders.indexOf(key) < 0;\n },\n\n isPresigned: function isPresigned() {\n return this.request.headers[expiresHeader] ? true : false;\n }\n\n});\n\n/**\n * @api private\n */\nmodule.exports = AWS.Signers.V4;\n","'use strict';\nvar call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar anObject = require('../internals/an-object');\nvar tryToString = require('../internals/try-to-string');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (argument, usingIterator) {\n var iteratorMethod = arguments.length < 2 ? getIteratorMethod(argument) : usingIterator;\n if (aCallable(iteratorMethod)) return anObject(call(iteratorMethod, argument));\n throw new $TypeError(tryToString(argument) + ' is not iterable');\n};\n","'use strict';\n\n\nconst zlib_inflate = require('./zlib/inflate');\nconst utils = require('./utils/common');\nconst strings = require('./utils/strings');\nconst msg = require('./zlib/messages');\nconst ZStream = require('./zlib/zstream');\nconst GZheader = require('./zlib/gzheader');\n\nconst toString = Object.prototype.toString;\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\nconst {\n Z_NO_FLUSH, Z_FINISH,\n Z_OK, Z_STREAM_END, Z_NEED_DICT, Z_STREAM_ERROR, Z_DATA_ERROR, Z_MEM_ERROR\n} = require('./zlib/constants');\n\n/* ===========================================================================*/\n\n\n/**\n * class Inflate\n *\n * Generic JS-style wrapper for zlib calls. If you don't need\n * streaming behaviour - use more simple functions: [[inflate]]\n * and [[inflateRaw]].\n **/\n\n/* internal\n * inflate.chunks -> Array\n *\n * Chunks of output data, if [[Inflate#onData]] not overridden.\n **/\n\n/**\n * Inflate.result -> Uint8Array|String\n *\n * Uncompressed result, generated by default [[Inflate#onData]]\n * and [[Inflate#onEnd]] handlers. Filled after you push last chunk\n * (call [[Inflate#push]] with `Z_FINISH` / `true` param).\n **/\n\n/**\n * Inflate.err -> Number\n *\n * Error code after inflate finished. 0 (Z_OK) on success.\n * Should be checked if broken data possible.\n **/\n\n/**\n * Inflate.msg -> String\n *\n * Error message, if [[Inflate.err]] != 0\n **/\n\n\n/**\n * new Inflate(options)\n * - options (Object): zlib inflate options.\n *\n * Creates new inflator instance with specified params. Throws exception\n * on bad params. Supported options:\n *\n * - `windowBits`\n * - `dictionary`\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information on these.\n *\n * Additional options, for internal needs:\n *\n * - `chunkSize` - size of generated data chunks (16K by default)\n * - `raw` (Boolean) - do raw inflate\n * - `to` (String) - if equal to 'string', then result will be converted\n * from utf8 to utf16 (javascript) string. When string output requested,\n * chunk length can differ from `chunkSize`, depending on content.\n *\n * By default, when no options set, autodetect deflate/gzip data format via\n * wrapper header.\n *\n * ##### Example:\n *\n * ```javascript\n * const pako = require('pako')\n * const chunk1 = new Uint8Array([1,2,3,4,5,6,7,8,9])\n * const chunk2 = new Uint8Array([10,11,12,13,14,15,16,17,18,19]);\n *\n * const inflate = new pako.Inflate({ level: 3});\n *\n * inflate.push(chunk1, false);\n * inflate.push(chunk2, true); // true -> last chunk\n *\n * if (inflate.err) { throw new Error(inflate.err); }\n *\n * console.log(inflate.result);\n * ```\n **/\nfunction Inflate(options) {\n this.options = utils.assign({\n chunkSize: 1024 * 64,\n windowBits: 15,\n to: ''\n }, options || {});\n\n const opt = this.options;\n\n // Force window size for `raw` data, if not set directly,\n // because we have no header for autodetect.\n if (opt.raw && (opt.windowBits >= 0) && (opt.windowBits < 16)) {\n opt.windowBits = -opt.windowBits;\n if (opt.windowBits === 0) { opt.windowBits = -15; }\n }\n\n // If `windowBits` not defined (and mode not raw) - set autodetect flag for gzip/deflate\n if ((opt.windowBits >= 0) && (opt.windowBits < 16) &&\n !(options && options.windowBits)) {\n opt.windowBits += 32;\n }\n\n // Gzip header has no info about windows size, we can do autodetect only\n // for deflate. So, if window size not set, force it to max when gzip possible\n if ((opt.windowBits > 15) && (opt.windowBits < 48)) {\n // bit 3 (16) -> gzipped data\n // bit 4 (32) -> autodetect gzip/deflate\n if ((opt.windowBits & 15) === 0) {\n opt.windowBits |= 15;\n }\n }\n\n this.err = 0; // error code, if happens (0 = Z_OK)\n this.msg = ''; // error message\n this.ended = false; // used to avoid multiple onEnd() calls\n this.chunks = []; // chunks of compressed data\n\n this.strm = new ZStream();\n this.strm.avail_out = 0;\n\n let status = zlib_inflate.inflateInit2(\n this.strm,\n opt.windowBits\n );\n\n if (status !== Z_OK) {\n throw new Error(msg[status]);\n }\n\n this.header = new GZheader();\n\n zlib_inflate.inflateGetHeader(this.strm, this.header);\n\n // Setup dictionary\n if (opt.dictionary) {\n // Convert data if needed\n if (typeof opt.dictionary === 'string') {\n opt.dictionary = strings.string2buf(opt.dictionary);\n } else if (toString.call(opt.dictionary) === '[object ArrayBuffer]') {\n opt.dictionary = new Uint8Array(opt.dictionary);\n }\n if (opt.raw) { //In raw mode we need to set the dictionary early\n status = zlib_inflate.inflateSetDictionary(this.strm, opt.dictionary);\n if (status !== Z_OK) {\n throw new Error(msg[status]);\n }\n }\n }\n}\n\n/**\n * Inflate#push(data[, flush_mode]) -> Boolean\n * - data (Uint8Array|ArrayBuffer): input data\n * - flush_mode (Number|Boolean): 0..6 for corresponding Z_NO_FLUSH..Z_TREE\n * flush modes. See constants. Skipped or `false` means Z_NO_FLUSH,\n * `true` means Z_FINISH.\n *\n * Sends input data to inflate pipe, generating [[Inflate#onData]] calls with\n * new output chunks. Returns `true` on success. If end of stream detected,\n * [[Inflate#onEnd]] will be called.\n *\n * `flush_mode` is not needed for normal operation, because end of stream\n * detected automatically. You may try to use it for advanced things, but\n * this functionality was not tested.\n *\n * On fail call [[Inflate#onEnd]] with error code and return false.\n *\n * ##### Example\n *\n * ```javascript\n * push(chunk, false); // push one of data chunks\n * ...\n * push(chunk, true); // push last chunk\n * ```\n **/\nInflate.prototype.push = function (data, flush_mode) {\n const strm = this.strm;\n const chunkSize = this.options.chunkSize;\n const dictionary = this.options.dictionary;\n let status, _flush_mode, last_avail_out;\n\n if (this.ended) return false;\n\n if (flush_mode === ~~flush_mode) _flush_mode = flush_mode;\n else _flush_mode = flush_mode === true ? Z_FINISH : Z_NO_FLUSH;\n\n // Convert data if needed\n if (toString.call(data) === '[object ArrayBuffer]') {\n strm.input = new Uint8Array(data);\n } else {\n strm.input = data;\n }\n\n strm.next_in = 0;\n strm.avail_in = strm.input.length;\n\n for (;;) {\n if (strm.avail_out === 0) {\n strm.output = new Uint8Array(chunkSize);\n strm.next_out = 0;\n strm.avail_out = chunkSize;\n }\n\n status = zlib_inflate.inflate(strm, _flush_mode);\n\n if (status === Z_NEED_DICT && dictionary) {\n status = zlib_inflate.inflateSetDictionary(strm, dictionary);\n\n if (status === Z_OK) {\n status = zlib_inflate.inflate(strm, _flush_mode);\n } else if (status === Z_DATA_ERROR) {\n // Replace code with more verbose\n status = Z_NEED_DICT;\n }\n }\n\n // Skip snyc markers if more data follows and not raw mode\n while (strm.avail_in > 0 &&\n status === Z_STREAM_END &&\n strm.state.wrap > 0 &&\n data[strm.next_in] !== 0)\n {\n zlib_inflate.inflateReset(strm);\n status = zlib_inflate.inflate(strm, _flush_mode);\n }\n\n switch (status) {\n case Z_STREAM_ERROR:\n case Z_DATA_ERROR:\n case Z_NEED_DICT:\n case Z_MEM_ERROR:\n this.onEnd(status);\n this.ended = true;\n return false;\n }\n\n // Remember real `avail_out` value, because we may patch out buffer content\n // to align utf8 strings boundaries.\n last_avail_out = strm.avail_out;\n\n if (strm.next_out) {\n if (strm.avail_out === 0 || status === Z_STREAM_END) {\n\n if (this.options.to === 'string') {\n\n let next_out_utf8 = strings.utf8border(strm.output, strm.next_out);\n\n let tail = strm.next_out - next_out_utf8;\n let utf8str = strings.buf2string(strm.output, next_out_utf8);\n\n // move tail & realign counters\n strm.next_out = tail;\n strm.avail_out = chunkSize - tail;\n if (tail) strm.output.set(strm.output.subarray(next_out_utf8, next_out_utf8 + tail), 0);\n\n this.onData(utf8str);\n\n } else {\n this.onData(strm.output.length === strm.next_out ? strm.output : strm.output.subarray(0, strm.next_out));\n }\n }\n }\n\n // Must repeat iteration if out buffer is full\n if (status === Z_OK && last_avail_out === 0) continue;\n\n // Finalize if end of stream reached.\n if (status === Z_STREAM_END) {\n status = zlib_inflate.inflateEnd(this.strm);\n this.onEnd(status);\n this.ended = true;\n return true;\n }\n\n if (strm.avail_in === 0) break;\n }\n\n return true;\n};\n\n\n/**\n * Inflate#onData(chunk) -> Void\n * - chunk (Uint8Array|String): output data. When string output requested,\n * each chunk will be string.\n *\n * By default, stores data blocks in `chunks[]` property and glue\n * those in `onEnd`. Override this handler, if you need another behaviour.\n **/\nInflate.prototype.onData = function (chunk) {\n this.chunks.push(chunk);\n};\n\n\n/**\n * Inflate#onEnd(status) -> Void\n * - status (Number): inflate status. 0 (Z_OK) on success,\n * other if not.\n *\n * Called either after you tell inflate that the input stream is\n * complete (Z_FINISH). By default - join collected chunks,\n * free memory and fill `results` / `err` properties.\n **/\nInflate.prototype.onEnd = function (status) {\n // On success - join\n if (status === Z_OK) {\n if (this.options.to === 'string') {\n this.result = this.chunks.join('');\n } else {\n this.result = utils.flattenChunks(this.chunks);\n }\n }\n this.chunks = [];\n this.err = status;\n this.msg = this.strm.msg;\n};\n\n\n/**\n * inflate(data[, options]) -> Uint8Array|String\n * - data (Uint8Array|ArrayBuffer): input data to decompress.\n * - options (Object): zlib inflate options.\n *\n * Decompress `data` with inflate/ungzip and `options`. Autodetect\n * format via wrapper header by default. That's why we don't provide\n * separate `ungzip` method.\n *\n * Supported options are:\n *\n * - windowBits\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information.\n *\n * Sugar (options):\n *\n * - `raw` (Boolean) - say that we work with raw stream, if you don't wish to specify\n * negative windowBits implicitly.\n * - `to` (String) - if equal to 'string', then result will be converted\n * from utf8 to utf16 (javascript) string. When string output requested,\n * chunk length can differ from `chunkSize`, depending on content.\n *\n *\n * ##### Example:\n *\n * ```javascript\n * const pako = require('pako');\n * const input = pako.deflate(new Uint8Array([1,2,3,4,5,6,7,8,9]));\n * let output;\n *\n * try {\n * output = pako.inflate(input);\n * } catch (err) {\n * console.log(err);\n * }\n * ```\n **/\nfunction inflate(input, options) {\n const inflator = new Inflate(options);\n\n inflator.push(input);\n\n // That will never happens, if you don't cheat with options :)\n if (inflator.err) throw inflator.msg || msg[inflator.err];\n\n return inflator.result;\n}\n\n\n/**\n * inflateRaw(data[, options]) -> Uint8Array|String\n * - data (Uint8Array|ArrayBuffer): input data to decompress.\n * - options (Object): zlib inflate options.\n *\n * The same as [[inflate]], but creates raw data, without wrapper\n * (header and adler32 crc).\n **/\nfunction inflateRaw(input, options) {\n options = options || {};\n options.raw = true;\n return inflate(input, options);\n}\n\n\n/**\n * ungzip(data[, options]) -> Uint8Array|String\n * - data (Uint8Array|ArrayBuffer): input data to decompress.\n * - options (Object): zlib inflate options.\n *\n * Just shortcut to [[inflate]], because it autodetects format\n * by header.content. Done for convenience.\n **/\n\n\nmodule.exports.Inflate = Inflate;\nmodule.exports.inflate = inflate;\nmodule.exports.inflateRaw = inflateRaw;\nmodule.exports.ungzip = inflate;\nmodule.exports.constants = require('./zlib/constants');\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\n/**\n * [[RedundantAudioRecoveryMetricReport]] will contain metrics reported\n * by the [[RedundantAudioEncoder]]\n */\nexport default class RedundantAudioRecoveryMetricReport {\n currentTimestampMs: number = 0;\n ssrc: number = 0;\n totalAudioPacketsLost: number = 0;\n totalAudioPacketsExpected: number = 0;\n totalAudioPacketsRecoveredRed: number = 0;\n totalAudioPacketsRecoveredFec: number = 0;\n}\n","// minimal library entry point.\n\n\"use strict\";\nmodule.exports = require(\"./src/index-minimal\");\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport Attendee from '../attendee/Attendee';\nimport ClientMetricReport from '../clientmetricreport/ClientMetricReport';\nimport Direction from '../clientmetricreport/ClientMetricReportDirection';\nimport MediaType from '../clientmetricreport/ClientMetricReportMediaType';\nimport ContentShareConstants from '../contentsharecontroller/ContentShareConstants';\nimport Logger from '../logger/Logger';\nimport { LogLevel } from '../logger/LogLevel';\nimport ServerSideNetworkAdaption, {\n serverSideNetworkAdaptionIsNoneOrDefault,\n} from '../signalingclient/ServerSideNetworkAdaption';\nimport VideoSource from '../videosource/VideoSource';\nimport DefaultVideoStreamIdSet from '../videostreamidset/DefaultVideoStreamIdSet';\nimport VideoStreamIdSet from '../videostreamidset/VideoStreamIdSet';\nimport VideoStreamDescription from '../videostreamindex/VideoStreamDescription';\nimport VideoStreamIndex from '../videostreamindex/VideoStreamIndex';\nimport DefaultVideoTile from '../videotile/DefaultVideoTile';\nimport VideoTile from '../videotile/VideoTile';\nimport VideoTileController from '../videotilecontroller/VideoTileController';\nimport AllHighestVideoBandwidthPolicy from './AllHighestVideoBandwidthPolicy';\nimport TargetDisplaySize from './TargetDisplaySize';\nimport VideoDownlinkBandwidthPolicy from './VideoDownlinkBandwidthPolicy';\nimport VideoDownlinkObserver from './VideoDownlinkObserver';\nimport VideoPreference from './VideoPreference';\nimport { VideoPreferences } from './VideoPreferences';\nimport VideoPriorityBasedPolicyConfig from './VideoPriorityBasedPolicyConfig';\nimport VideoQualityAdaptationPreference from './VideoQualityAdaptationPreference';\n\n/** @internal */\nclass LinkMediaStats {\n constructor() {}\n bandwidthEstimateKbps: number = 0;\n usedBandwidthKbps: number = 0;\n packetsLost: number = 0;\n nackCount: number = 0;\n rttMs: number = 0;\n}\n\n/** @internal */\ninterface PolicyRates {\n targetDownlinkBitrate: number;\n chosenTotalBitrate: number;\n deltaToNextUpgrade: number;\n}\n\n/** @internal */\nconst enum RateProbeState {\n NotProbing = 'Not Probing',\n ProbePending = 'Probe Pending',\n Probing = 'Probing',\n}\n\n/** @internal */\nconst enum UseReceiveSet {\n NewOptimal,\n PreviousOptimal,\n PreProbe,\n}\n\nexport default class VideoPriorityBasedPolicy implements VideoDownlinkBandwidthPolicy {\n private static readonly DEFAULT_BANDWIDTH_KBPS = 2800;\n private static readonly STARTUP_PERIOD_MS = 6000;\n private static readonly LARGE_RATE_CHANGE_TRIGGER_PERCENT = 20;\n private static readonly TARGET_RATE_CHANGE_TRIGGER_PERCENT = 15;\n private static readonly LOW_BITRATE_THRESHOLD_KBPS = 300;\n private static readonly MIN_TIME_BETWEEN_PROBE_MS = 5000;\n private static readonly MIN_TIME_BETWEEN_SUBSCRIBE_MS = 2000;\n // We apply exponentional backoff to probe attempts if they do not\n // succeed, so we need to set a reasonable maximum.\n private static readonly MAX_HOLD_BEFORE_PROBE_MS = 30000;\n private static readonly MAX_ALLOWED_PROBE_TIME_MS = 60000;\n // Occasionally we see that on unpause or upgrade we see a single packet lost\n // or two, even in completely unconstrained scenarios. We should look into\n // why this occurs on the backend, but for now we require a non-trivial\n // amount of packets lost to fail the probe. These could also be from\n // other senders given we don't yet use TWCC.\n private static readonly SPURIOUS_PACKET_LOST_THRESHOLD = 2;\n // See usage\n private static readonly USED_BANDWIDTH_OVERRIDE_BUFFER_KBPS = 100;\n\n protected tileController: VideoTileController | undefined;\n protected videoPreferences: VideoPreferences | undefined;\n protected defaultVideoPreferences: VideoPreferences | undefined;\n protected shouldPauseTiles: boolean = true;\n protected videoIndex: VideoStreamIndex;\n protected videoPreferencesUpdated: boolean;\n protected observerQueue: Set = new Set();\n private logCount: number;\n private optimalNonPausedReceiveStreams: VideoStreamDescription[];\n private optimalReceiveStreams: VideoStreamDescription[];\n private optimalReceiveSet: VideoStreamIdSet;\n private subscribedReceiveSet: VideoStreamIdSet;\n private subscribedReceiveStreams: VideoStreamDescription[];\n private preProbeReceiveStreams: VideoStreamDescription[];\n private preProbeNonPausedReceiveStreams: VideoStreamDescription[];\n private pausedStreamIds: VideoStreamIdSet;\n private pausedBwAttendeeIds: Set = new Set();\n private downlinkStats: LinkMediaStats;\n private prevDownlinkStats: LinkMediaStats;\n // This list only contains the `VideoStreamDescription` for sources\n // from attendees that we actually have preferences for.\n private previousStreamsWithPreference: VideoStreamDescription[];\n private rateProbeState: RateProbeState;\n private startupPeriod: boolean;\n private usingPrevTargetRate: boolean;\n private prevTargetRateKbps: number;\n // A target rate baseline to use to avoid changing the subscriptions until we see\n // a `TARGET_RATE_CHANGE_TRIGGER_PERCENT` change between this and the current target rate\n private targetRateBaselineForDeltaCheckKbps: number;\n private lastUpgradeRateKbps: number;\n private firstEstimateTimestamp: number;\n private lastSubscribeTimestamp: number;\n private timeBeforeAllowSubscribeMs: number;\n private probePendingStartTimestamp: number;\n private timeBeforeAllowProbeMs: number;\n private lastProbeTimestamp: number;\n private probeFailed: boolean;\n // When server side video adaption is enabled, We simply use `AllHighestVideoBandwidthPolicy` to populate stream IDs which\n // are still needed for the subscribe. It does not imply that we are overriding\n // the server side logic, as it will immediately be overwritten by the\n // values provided by `getVideoPreferences`\n private allHighestPolicy: AllHighestVideoBandwidthPolicy;\n private serverSideNetworkAdaption: ServerSideNetworkAdaption;\n // After video preference is updated, track if we acted accordingly (resubscribe or pass perefernce to server).\n // Required if enabled server side bandwith probing (w/ or w/o quality adaption).\n private pendingActionAfterUpdatedPreferences: boolean;\n private wantsResubscribeObserver: (() => void) | undefined = undefined;\n\n constructor(\n protected logger: Logger,\n private videoPriorityBasedPolicyConfig: VideoPriorityBasedPolicyConfig = VideoPriorityBasedPolicyConfig.Default\n ) {\n if (\n this.videoPriorityBasedPolicyConfig.serverSideNetworkAdaption ===\n ServerSideNetworkAdaption.Default\n ) {\n this.videoPriorityBasedPolicyConfig.serverSideNetworkAdaption =\n ServerSideNetworkAdaption.BandwidthProbingAndRemoteVideoQualityAdaption;\n }\n this.reset();\n }\n\n reset(): void {\n // Self-attendee is not actually necessary in 'AllHighestVideoBandwidthPolicy' since it just passes it to\n // `highestQualityStreamFromEachGroupExcludingSelf` which itself doesn't need it as self attendees are not in the\n // index\n this.allHighestPolicy = new AllHighestVideoBandwidthPolicy('');\n this.optimalReceiveSet = new DefaultVideoStreamIdSet();\n this.optimalReceiveStreams = [];\n this.optimalNonPausedReceiveStreams = [];\n this.subscribedReceiveSet = new DefaultVideoStreamIdSet();\n this.subscribedReceiveStreams = [];\n this.videoPreferences = undefined;\n this.defaultVideoPreferences = undefined;\n this.shouldPauseTiles = true;\n this.pausedStreamIds = new DefaultVideoStreamIdSet();\n this.pausedBwAttendeeIds = new Set();\n this.videoPreferencesUpdated = false;\n this.logCount = 0;\n this.startupPeriod = true;\n this.usingPrevTargetRate = false;\n this.rateProbeState = RateProbeState.NotProbing;\n this.firstEstimateTimestamp = 0;\n this.lastUpgradeRateKbps = 0;\n this.timeBeforeAllowSubscribeMs = VideoPriorityBasedPolicy.MIN_TIME_BETWEEN_SUBSCRIBE_MS;\n this.lastProbeTimestamp = Date.now();\n this.timeBeforeAllowProbeMs = VideoPriorityBasedPolicy.MIN_TIME_BETWEEN_PROBE_MS;\n this.downlinkStats = new LinkMediaStats();\n this.prevDownlinkStats = new LinkMediaStats();\n this.probeFailed = false;\n this.serverSideNetworkAdaption = this.videoPriorityBasedPolicyConfig.serverSideNetworkAdaption;\n this.pendingActionAfterUpdatedPreferences = false;\n }\n\n bindToTileController(tileController: VideoTileController): void {\n this.tileController = tileController;\n this.logger.info('tileController bound');\n }\n\n setWantsResubscribeObserver?(observer: () => void): void {\n this.wantsResubscribeObserver = observer;\n }\n\n // This function allows setting preferences without the need to inherit from this class\n // which would require not using the internal keyword\n\n chooseRemoteVideoSources(preferences: VideoPreferences): void {\n if (this.videoPreferences?.equals(preferences)) {\n return;\n }\n this.videoPreferences = preferences?.clone();\n if (!serverSideNetworkAdaptionIsNoneOrDefault(this.serverSideNetworkAdaption)) {\n this.pendingActionAfterUpdatedPreferences = true;\n if (this.wantsResubscribeObserver !== undefined) {\n this.wantsResubscribeObserver();\n this.pendingActionAfterUpdatedPreferences = false;\n }\n if (\n this.serverSideNetworkAdaption ===\n ServerSideNetworkAdaption.BandwidthProbingAndRemoteVideoQualityAdaption\n ) {\n const desiredVideoSources = new Array();\n for (const preference of this.videoPreferences) {\n const source = new VideoSource();\n source.attendee = new Attendee();\n source.attendee.attendeeId = preference.attendeeId;\n desiredVideoSources.push(source);\n }\n this.allHighestPolicy.chooseRemoteVideoSources(desiredVideoSources);\n return;\n }\n }\n this.videoPreferencesUpdated = true;\n this.logger.info(\n `bwe: setVideoPreferences bwe: new preferences: ${JSON.stringify(preferences)}`\n );\n return;\n }\n\n updateIndex(videoIndex: VideoStreamIndex): void {\n this.videoIndex = videoIndex;\n if (\n this.serverSideNetworkAdaption ===\n ServerSideNetworkAdaption.BandwidthProbingAndRemoteVideoQualityAdaption\n ) {\n this.allHighestPolicy.updateIndex(videoIndex);\n }\n if (!this.videoPreferences) {\n this.updateDefaultVideoPreferences();\n }\n }\n\n private updateDefaultVideoPreferences(): void {\n const attendeeIds = new Set();\n for (const stream of this.videoIndex.remoteStreamDescriptions()) {\n attendeeIds.add(stream.attendeeId);\n }\n\n const prefs = VideoPreferences.prepare();\n\n const numAttendees = attendeeIds.size;\n let targetDisplaySize = TargetDisplaySize.Maximum;\n\n if (numAttendees > 8) {\n targetDisplaySize = TargetDisplaySize.Low;\n } else if (numAttendees > 4) {\n targetDisplaySize = TargetDisplaySize.Medium;\n }\n\n for (const attendeeId of attendeeIds) {\n prefs.add(new VideoPreference(attendeeId, 1, targetDisplaySize));\n }\n this.defaultVideoPreferences = prefs.build();\n }\n\n updateMetrics(clientMetricReport: ClientMetricReport): void {\n if (!this.videoIndex || this.videoIndex.allStreams().empty()) {\n return;\n }\n this.prevDownlinkStats = this.downlinkStats;\n this.downlinkStats = new LinkMediaStats();\n const metricReport = clientMetricReport.getObservableMetrics();\n\n // availableIncomingBitrate is the standard stat but is not available in Firefox yet so only Safari for now.\n this.downlinkStats.bandwidthEstimateKbps = metricReport.availableIncomingBitrate / 1000;\n\n for (const ssrcStr in clientMetricReport.streamMetricReports) {\n const ssrc = Number.parseInt(ssrcStr, 10);\n const metrics = clientMetricReport.streamMetricReports[ssrc];\n if (metrics.direction === Direction.DOWNSTREAM && metrics.mediaType === MediaType.VIDEO) {\n // Only use video stream metrics\n if (metrics.currentMetrics.hasOwnProperty('nackCount')) {\n this.downlinkStats.nackCount += clientMetricReport.countPerSecond('nackCount', ssrc);\n }\n\n if (metrics.currentMetrics.hasOwnProperty('packetsLost')) {\n this.downlinkStats.packetsLost += clientMetricReport.countPerSecond('packetsLost', ssrc);\n }\n\n if (metrics.currentMetrics.hasOwnProperty('bytesReceived')) {\n this.downlinkStats.usedBandwidthKbps +=\n clientMetricReport.bitsPerSecond('bytesReceived', ssrc) / 1000;\n }\n }\n }\n }\n\n wantsResubscribe(): boolean {\n let wants = false;\n if (!serverSideNetworkAdaptionIsNoneOrDefault(this.serverSideNetworkAdaption)) {\n wants ||= this.pendingActionAfterUpdatedPreferences;\n if (\n this.serverSideNetworkAdaption ===\n ServerSideNetworkAdaption.BandwidthProbingAndRemoteVideoQualityAdaption\n ) {\n return wants || this.allHighestPolicy.wantsResubscribe();\n }\n }\n this.calculateOptimalReceiveSet();\n wants ||= !this.subscribedReceiveSet.equal(this.optimalReceiveSet);\n return wants;\n }\n\n chooseSubscriptions(): VideoStreamIdSet {\n if (!serverSideNetworkAdaptionIsNoneOrDefault(this.serverSideNetworkAdaption)) {\n this.pendingActionAfterUpdatedPreferences = false;\n if (\n this.serverSideNetworkAdaption ===\n ServerSideNetworkAdaption.BandwidthProbingAndRemoteVideoQualityAdaption\n ) {\n return this.allHighestPolicy.chooseSubscriptions();\n }\n }\n if (!this.subscribedReceiveSet.equal(this.optimalReceiveSet)) {\n this.lastSubscribeTimestamp = Date.now();\n }\n this.subscribedReceiveSet = this.optimalReceiveSet.clone();\n this.subscribedReceiveStreams = this.optimalReceiveStreams.slice();\n return this.subscribedReceiveSet.clone();\n }\n\n addObserver(observer: VideoDownlinkObserver): void {\n this.observerQueue.add(observer);\n }\n\n removeObserver(observer: VideoDownlinkObserver): void {\n this.observerQueue.delete(observer);\n }\n\n forEachObserver(observerFunc: (observer: VideoDownlinkObserver) => void): void {\n for (const observer of this.observerQueue) {\n observerFunc(observer);\n }\n }\n\n setVideoPriorityBasedPolicyConfigs(config: VideoPriorityBasedPolicyConfig): void {\n this.videoPriorityBasedPolicyConfig = config;\n }\n\n protected calculateOptimalReceiveStreams(): void {\n const chosenStreams: VideoStreamDescription[] = [];\n const remoteInfos: VideoStreamDescription[] = this.videoIndex.remoteStreamDescriptions();\n if (remoteInfos.length === 0 || this.videoPreferences?.isEmpty()) {\n this.optimalReceiveStreams = [];\n return;\n }\n\n const lastProbeState = this.rateProbeState;\n this.cleanBwPausedTiles(remoteInfos);\n this.handleAppPausedStreams(chosenStreams, remoteInfos);\n\n const attendeeIdToPreference = new Map();\n for (const preference of this.getCurrentVideoPreferences()) {\n attendeeIdToPreference.set(preference.attendeeId, preference);\n }\n // We can pre-emptively filter to just remote stream descriptions for remote video sources we already\n // have configuration for. We do not care about streams we aren't going to subscribe to.\n const remoteInfosWithPreference = remoteInfos.filter((stream: VideoStreamDescription) => {\n return attendeeIdToPreference.has(stream.attendeeId);\n });\n\n const sameStreamChoices = !this.streamsWithPreferenceDidChange(remoteInfosWithPreference);\n const noMajorChange = !this.startupPeriod && sameStreamChoices;\n\n // If no major changes then don't allow subscribes for the allowed amount of time\n if (\n noMajorChange &&\n Date.now() - this.lastSubscribeTimestamp < this.timeBeforeAllowSubscribeMs\n ) {\n return;\n }\n\n // Sort streams by bitrate ascending.\n remoteInfosWithPreference.sort((a, b) => {\n if (a.maxBitrateKbps === b.maxBitrateKbps) {\n return a.streamId - b.streamId;\n }\n return a.maxBitrateKbps - b.maxBitrateKbps;\n });\n\n // Convert 0 avg bitrates to max, handle special cases, and remove upgrades that downgrade resolution or framerate\n for (const info of remoteInfosWithPreference) {\n if (info.avgBitrateKbps === 0 || info.avgBitrateKbps > info.maxBitrateKbps) {\n // Content can be a special case\n if (info.attendeeId.endsWith(ContentShareConstants.Modality) && info.maxBitrateKbps < 100) {\n info.maxBitrateKbps = info.avgBitrateKbps;\n } else {\n info.avgBitrateKbps = info.maxBitrateKbps;\n }\n }\n }\n\n const streamIdsToRemove = new Set();\n for (const preference of this.getCurrentVideoPreferences()) {\n const streamsForAttendees = remoteInfosWithPreference.filter(\n (description: VideoStreamDescription) => {\n return description.attendeeId === preference.attendeeId;\n }\n );\n if (streamsForAttendees.length < 3) {\n // If `streamsForAttendees.length` is 0, they are stale preference for remote video that no longer exists\n // if 1 or 2, there is nothing to filter out\n continue;\n }\n let maxFrameRate = 15;\n let maxPixels = 320 * 480;\n streamsForAttendees.forEach((stream: VideoStreamDescription) => {\n maxFrameRate = Math.max(maxFrameRate, stream.maxFrameRate);\n maxPixels = Math.max(maxPixels, stream.totalPixels());\n });\n streamsForAttendees.sort((a: VideoStreamDescription, b: VideoStreamDescription) => {\n if (\n preference.degradationPreference === VideoQualityAdaptationPreference.MaintainResolution\n ) {\n // This may seem counter-intuitive but given we want to upgrade resolution first, and framerate\n // last, we want to sort by framerate first, and resolution only if framerate is close.\n //\n // That way, e.g. the first three streams will all contain increases in resolution. We will skip any down\n // grades in resolution (i.e. to hop to a higher framerate stream) in the section below\n if (Math.abs(a.maxFrameRate - b.maxFrameRate) < 2) {\n return a.totalPixels() - b.totalPixels();\n }\n return a.maxFrameRate - b.maxFrameRate;\n } else if (\n preference.degradationPreference === VideoQualityAdaptationPreference.MaintainFramerate\n ) {\n // See note above, but swap resolution for framerate\n if (a.totalPixels() === b.totalPixels()) {\n return a.maxFrameRate - b.maxFrameRate;\n }\n return a.totalPixels() - b.totalPixels();\n } else {\n // In 'balanced' mode, we want a slight preference towards upgrading resolution first\n // when moving up the bitrate ladder, so we weigh the bitrate by a framerate\n // and resolution derived value that is tuned to be reasonable in most cases. This attempts to\n // mimic the diagrams in the guide.\n //\n // A higher constant makes the policy prefer resolution to framerate more at lower values\n const framerateExponentConstant = 5;\n // A higher constant here makes the policy prefer framerate to resolution more at higher values\n const resolutionBaseConstant = 2;\n const weighByFramerate = (stream: VideoStreamDescription): number => {\n return (\n stream.avgBitrateKbps *\n Math.pow(\n 2,\n ((framerateExponentConstant * stream.maxFrameRate) / maxFrameRate) *\n Math.pow(resolutionBaseConstant * 2, stream.totalPixels() / maxPixels)\n )\n );\n };\n return weighByFramerate(a) - weighByFramerate(b);\n }\n });\n\n let lastInfo = undefined;\n // Downgrades during recovery are unusual and jarring. Here we will strip out any (these should result in paths that\n // match those in the priority downlink policy guide).\n for (const info of streamsForAttendees) {\n if (lastInfo !== undefined) {\n if (\n (info.maxFrameRate < lastInfo.maxFrameRate &&\n Math.abs(lastInfo.maxFrameRate - info.maxFrameRate) > 2) ||\n info.totalPixels() < lastInfo.totalPixels()\n ) {\n streamIdsToRemove.add(info.streamId);\n continue;\n }\n }\n lastInfo = info;\n }\n }\n const filteredRemoteAttendeesWithPreference = remoteInfosWithPreference.filter(\n (info: VideoStreamDescription) => {\n return !streamIdsToRemove.has(info.streamId);\n }\n );\n this.logger.info(`Filtered to ${JSON.stringify(filteredRemoteAttendeesWithPreference)}`);\n\n const rates: PolicyRates = {\n targetDownlinkBitrate: 0,\n chosenTotalBitrate: 0,\n deltaToNextUpgrade: 0,\n };\n rates.targetDownlinkBitrate = this.determineTargetRate();\n\n const numberOfParticipants = this.subscribedReceiveSet.size();\n const currentEstimated = this.downlinkStats.bandwidthEstimateKbps;\n\n // Use videoPriorityBasedPolicyConfig to add additional delays based on network conditions\n const dontAllowSubscribe = !this.videoPriorityBasedPolicyConfig.allowSubscribe(\n numberOfParticipants,\n currentEstimated\n );\n\n // `priorityPolicy` assumes that we have sorted `filteredRemoteAttendeesWithPreference` in order of quality\n if (this.probeFailed) {\n // When probe failed, we set timeBeforeAllowSubscribeMs to 3x longer\n // Since we have passed the subscribe interval now, we will try to probe again\n this.probeFailed = false;\n // For the same reason above, reset time before allow subscribe to default\n this.timeBeforeAllowSubscribeMs = VideoPriorityBasedPolicy.MIN_TIME_BETWEEN_SUBSCRIBE_MS;\n\n if (noMajorChange && dontAllowSubscribe) return;\n }\n\n const upgradeStream: VideoStreamDescription = this.priorityPolicy(\n rates,\n filteredRemoteAttendeesWithPreference,\n chosenStreams\n );\n\n const skipProbe = !serverSideNetworkAdaptionIsNoneOrDefault(this.serverSideNetworkAdaption);\n let subscriptionChoice = UseReceiveSet.NewOptimal;\n // Look for probing or override opportunities\n if (!skipProbe && !this.startupPeriod && sameStreamChoices) {\n if (this.rateProbeState === RateProbeState.Probing) {\n subscriptionChoice = this.handleProbe(chosenStreams, rates.targetDownlinkBitrate);\n } else if (rates.deltaToNextUpgrade !== 0) {\n subscriptionChoice = this.maybeOverrideOrProbe(chosenStreams, rates, upgradeStream);\n }\n } else {\n // If there was a change in streams to choose from, then cancel any probing or upgrades\n this.setProbeState(RateProbeState.NotProbing);\n this.lastUpgradeRateKbps = 0;\n }\n\n this.previousStreamsWithPreference = remoteInfosWithPreference;\n this.videoPreferencesUpdated = false;\n\n if (subscriptionChoice === UseReceiveSet.PreviousOptimal) {\n this.logger.info(`bwe: keepSameSubscriptions stats:${JSON.stringify(this.downlinkStats)}`);\n this.prevTargetRateKbps = rates.targetDownlinkBitrate;\n return;\n }\n if (subscriptionChoice === UseReceiveSet.PreProbe) {\n const subscribedRate = this.calculateSubscribeRate(this.preProbeNonPausedReceiveStreams);\n this.optimalReceiveStreams = this.preProbeReceiveStreams.slice();\n this.processBwPausedStreams(remoteInfosWithPreference, this.preProbeNonPausedReceiveStreams);\n this.logger.info('bwe: Use Pre-Probe subscription subscribedRate:' + subscribedRate);\n return;\n }\n\n this.optimalNonPausedReceiveStreams = chosenStreams.slice();\n const lastNumberPaused = this.pausedBwAttendeeIds.size;\n this.processBwPausedStreams(remoteInfosWithPreference, chosenStreams);\n\n if (\n this.logger.getLogLevel() <= LogLevel.INFO &&\n (this.logCount % 15 === 0 ||\n this.rateProbeState !== lastProbeState ||\n this.optimalReceiveStreams.length !== chosenStreams.length ||\n lastNumberPaused !== this.pausedBwAttendeeIds.size)\n ) {\n this.logger.info(this.policyStateLogStr(remoteInfos, rates.targetDownlinkBitrate));\n this.logCount = 0;\n }\n this.logCount++;\n\n this.prevTargetRateKbps = rates.targetDownlinkBitrate;\n this.optimalReceiveStreams = chosenStreams.slice();\n }\n\n protected calculateOptimalReceiveSet(): void {\n const streamSelectionSet = new DefaultVideoStreamIdSet();\n this.calculateOptimalReceiveStreams();\n for (const stream of this.optimalReceiveStreams) {\n streamSelectionSet.add(stream.streamId);\n }\n if (!this.optimalReceiveSet.equal(streamSelectionSet)) {\n const subscribedRate = this.calculateSubscribeRate(this.optimalReceiveStreams);\n this.logger.info(\n `bwe: new streamSelection: ${JSON.stringify(\n streamSelectionSet\n )} subscribedRate:${subscribedRate}`\n );\n }\n this.optimalReceiveSet = streamSelectionSet;\n }\n\n private determineTargetRate(): number {\n let targetBitrate = 0;\n\n const now = Date.now();\n // Startup phase handling. During this period the estimate can be 0 or\n // could still be slowly hunting for a steady state. This startup ramp up\n // can cause a series of subscribes which can be distracting. During this\n // time just use our configured default value\n if (this.downlinkStats.bandwidthEstimateKbps !== 0) {\n if (this.firstEstimateTimestamp === 0) {\n this.firstEstimateTimestamp = now;\n }\n\n // handle startup state where estimator is still converging.\n if (this.startupPeriod) {\n // Drop out of startup period if\n // - estimate is above default\n // - get packet loss and have a valid estimate\n // - startup period has expired and rate is not still increasing\n if (\n this.downlinkStats.bandwidthEstimateKbps >\n VideoPriorityBasedPolicy.DEFAULT_BANDWIDTH_KBPS ||\n this.downlinkStats.packetsLost > 0 ||\n (now - this.firstEstimateTimestamp > VideoPriorityBasedPolicy.STARTUP_PERIOD_MS &&\n this.downlinkStats.bandwidthEstimateKbps <=\n this.prevDownlinkStats.bandwidthEstimateKbps)\n ) {\n this.startupPeriod = false;\n this.prevTargetRateKbps = this.downlinkStats.bandwidthEstimateKbps;\n }\n }\n // If we are in the startup period and we haven't detected any packet loss, then\n // keep it at the default to let the estimation get to a steady state\n if (this.startupPeriod) {\n targetBitrate = VideoPriorityBasedPolicy.DEFAULT_BANDWIDTH_KBPS;\n } else {\n // We rely on our target bitrate being above what we are receiving to mark a probe as complete,\n // however in browsers, the estimate can heavily lag behind the actual receive rate, especially when low.\n //\n // To mitigate this we override with the actual estimate plus some buffer if we aren't seeing packet loss.\n if (\n this.rateProbeState === RateProbeState.Probing &&\n this.downlinkStats.usedBandwidthKbps > this.downlinkStats.bandwidthEstimateKbps &&\n this.downlinkStats.packetsLost < VideoPriorityBasedPolicy.SPURIOUS_PACKET_LOST_THRESHOLD\n ) {\n this.logger.info(\n `bwe: In probe state, overriding estimate ${this.downlinkStats.bandwidthEstimateKbps} with actual receive bitrate ${this.downlinkStats.usedBandwidthKbps}`\n );\n targetBitrate =\n this.downlinkStats.usedBandwidthKbps +\n VideoPriorityBasedPolicy.USED_BANDWIDTH_OVERRIDE_BUFFER_KBPS;\n } else {\n targetBitrate = this.downlinkStats.bandwidthEstimateKbps;\n }\n }\n } else {\n if (this.firstEstimateTimestamp === 0) {\n targetBitrate = VideoPriorityBasedPolicy.DEFAULT_BANDWIDTH_KBPS;\n } else {\n targetBitrate = this.prevTargetRateKbps;\n }\n }\n\n // Estimated downlink rate can follow actual bandwidth or fall for a short period of time\n // due to the absolute send time estimator incorrectly thinking that a delay in packets is\n // a precursor to packet loss. We have seen too many false positives on this, so we\n // will ignore largish drops in the estimate if there is no packet loss\n if (\n !this.startupPeriod &&\n ((this.usingPrevTargetRate &&\n this.downlinkStats.bandwidthEstimateKbps < this.prevTargetRateKbps) ||\n this.downlinkStats.bandwidthEstimateKbps <\n (this.prevTargetRateKbps *\n (100 - VideoPriorityBasedPolicy.LARGE_RATE_CHANGE_TRIGGER_PERCENT)) /\n 100 ||\n this.downlinkStats.bandwidthEstimateKbps <\n (this.downlinkStats.usedBandwidthKbps *\n VideoPriorityBasedPolicy.LARGE_RATE_CHANGE_TRIGGER_PERCENT) /\n 100) &&\n this.downlinkStats.packetsLost === 0\n ) {\n // Set target to be the same as last\n this.logger.debug(() => {\n return 'bwe: ValidateRate: Using Previous rate ' + this.prevTargetRateKbps;\n });\n this.usingPrevTargetRate = true;\n targetBitrate = this.prevTargetRateKbps;\n } else {\n this.usingPrevTargetRate = false;\n }\n\n // Cap total receive bitrate at 15000 kbps\n if (targetBitrate > 15000) {\n this.logger.warn(\n 'bwe: ' +\n targetBitrate +\n ' exceeds maximum limit (15000). Limit TargetDisplaySize with VideoPreferences to avoid this.'\n );\n }\n return Math.min(targetBitrate, 15000);\n }\n\n private setProbeState(newState: RateProbeState): boolean {\n if (this.rateProbeState === newState) {\n return false;\n }\n\n const now = Date.now();\n switch (newState) {\n case RateProbeState.NotProbing:\n this.probePendingStartTimestamp = 0;\n break;\n\n case RateProbeState.ProbePending:\n if (\n this.lastProbeTimestamp === 0 ||\n now - this.lastProbeTimestamp > VideoPriorityBasedPolicy.MIN_TIME_BETWEEN_PROBE_MS\n ) {\n this.probePendingStartTimestamp = now;\n } else {\n // Too soon to do a probe again\n return false;\n }\n break;\n\n case RateProbeState.Probing:\n if (now - this.probePendingStartTimestamp > this.timeBeforeAllowProbeMs) {\n this.lastProbeTimestamp = now;\n this.preProbeReceiveStreams = this.subscribedReceiveStreams.slice();\n this.preProbeNonPausedReceiveStreams = this.optimalNonPausedReceiveStreams;\n // Increase the time allowed until the next probe\n this.timeBeforeAllowProbeMs = Math.min(\n this.timeBeforeAllowProbeMs * 2,\n VideoPriorityBasedPolicy.MAX_HOLD_BEFORE_PROBE_MS\n );\n } else {\n // Too soon to do probe\n return false;\n }\n break;\n }\n\n this.logger.info('bwe: setProbeState to ' + newState + ' from ' + this.rateProbeState);\n this.rateProbeState = newState;\n return true;\n }\n\n // Upgrade the stream id from the appropriate group or add it if it wasn't already in the list.\n // Return the added amount of bandwidth\n private upgradeToStream(\n chosenStreams: VideoStreamDescription[],\n upgradeStream: VideoStreamDescription\n ): number {\n for (let i = 0; i < chosenStreams.length; i++) {\n if (chosenStreams[i].groupId === upgradeStream.groupId) {\n const diffRate = upgradeStream.avgBitrateKbps - chosenStreams[i].avgBitrateKbps;\n this.logger.info(\n 'bwe: upgradeStream from ' + JSON.stringify(chosenStreams[i]) + ' to ' + upgradeStream\n );\n this.lastUpgradeRateKbps = diffRate;\n chosenStreams[i] = upgradeStream;\n return diffRate;\n }\n }\n\n // We are adding a stream and not upgrading.\n chosenStreams.push(upgradeStream);\n this.lastUpgradeRateKbps = upgradeStream.avgBitrateKbps;\n return this.lastUpgradeRateKbps;\n }\n\n // Do specific behavior while we are currently in probing state and metrics\n // indicate environment is still valid to do probing.\n // Return true if the caller should not change from the previous subscriptions.\n private handleProbe(\n chosenStreams: VideoStreamDescription[],\n targetDownlinkBitrate: number\n ): UseReceiveSet {\n // Don't allow probe to happen indefinitely\n if (Date.now() - this.lastProbeTimestamp > VideoPriorityBasedPolicy.MAX_ALLOWED_PROBE_TIME_MS) {\n this.logger.info(`bwe: Canceling probe due to timeout`);\n this.setProbeState(RateProbeState.NotProbing);\n return UseReceiveSet.NewOptimal;\n }\n\n if (this.downlinkStats.packetsLost > 0) {\n this.logger.info(`bwe: Probe encountering packets lost:${this.downlinkStats.packetsLost}`);\n // See comment above `VideoPriorityBasedPolicy.SPURIOUS_PACKET_LOST_THRESHOLD`\n if (\n this.downlinkStats.packetsLost > VideoPriorityBasedPolicy.SPURIOUS_PACKET_LOST_THRESHOLD\n ) {\n this.setProbeState(RateProbeState.NotProbing);\n this.logger.info(\n `bwe: Canceling probe due to packets lost:${this.downlinkStats.packetsLost}`\n );\n this.probeFailed = true;\n this.timeBeforeAllowSubscribeMs =\n Math.max(\n VideoPriorityBasedPolicy.MIN_TIME_BETWEEN_SUBSCRIBE_MS,\n this.timeBeforeAllowSubscribeMs\n ) * 3;\n // packet lost indicates bad network and thus slowing down subscribing by extend delay by 3 times\n return UseReceiveSet.PreProbe;\n }\n }\n const subscribedRate = this.calculateSubscribeRate(this.optimalReceiveStreams);\n if (this.chosenStreamsSameAsLast(chosenStreams) || targetDownlinkBitrate > subscribedRate) {\n this.logger.info(`bwe: Probe successful`);\n // If target bitrate can sustain probe rate, then probe was successful.\n this.setProbeState(RateProbeState.NotProbing);\n // Reset the time allowed between probes since this was successful\n this.timeBeforeAllowProbeMs = VideoPriorityBasedPolicy.MIN_TIME_BETWEEN_PROBE_MS;\n return UseReceiveSet.NewOptimal;\n }\n\n return UseReceiveSet.PreviousOptimal;\n }\n\n private maybeOverrideOrProbe(\n chosenStreams: VideoStreamDescription[],\n rates: PolicyRates,\n upgradeStream: VideoStreamDescription\n ): UseReceiveSet {\n const sameSubscriptions = this.chosenStreamsSameAsLast(chosenStreams);\n let useLastSubscriptions = UseReceiveSet.NewOptimal;\n\n // We want to minimize thrashing between between low res and high res of different\n // participants due to avg bitrate fluctuations. If there hasn't been much of a change in estimated bandwidth\n // and the number of streams and their max rates are the same, then reuse the previous subscription\n const triggerPercent =\n rates.targetDownlinkBitrate > VideoPriorityBasedPolicy.LOW_BITRATE_THRESHOLD_KBPS\n ? VideoPriorityBasedPolicy.TARGET_RATE_CHANGE_TRIGGER_PERCENT\n : VideoPriorityBasedPolicy.TARGET_RATE_CHANGE_TRIGGER_PERCENT * 2;\n const minTargetBitrateDelta = (rates.targetDownlinkBitrate * triggerPercent) / 100;\n this.targetRateBaselineForDeltaCheckKbps =\n this.targetRateBaselineForDeltaCheckKbps !== undefined\n ? this.targetRateBaselineForDeltaCheckKbps\n : this.prevTargetRateKbps;\n if (\n !sameSubscriptions &&\n Math.abs(rates.targetDownlinkBitrate - this.targetRateBaselineForDeltaCheckKbps) <\n minTargetBitrateDelta\n ) {\n this.logger.info(\n 'bwe: MaybeOverrideOrProbe: Reuse last decision based on delta rate. {' +\n JSON.stringify(this.subscribedReceiveSet) +\n `}`\n );\n useLastSubscriptions = UseReceiveSet.PreviousOptimal;\n } else {\n this.targetRateBaselineForDeltaCheckKbps = rates.targetDownlinkBitrate;\n }\n\n // If there has been packet loss, then reset to no probing state\n if (this.downlinkStats.packetsLost > this.prevDownlinkStats.packetsLost) {\n this.setProbeState(RateProbeState.NotProbing);\n this.lastUpgradeRateKbps = 0;\n return useLastSubscriptions;\n }\n\n if (sameSubscriptions || useLastSubscriptions === UseReceiveSet.PreviousOptimal) {\n // If planned subscriptions are same as last, then either move to probe pending state\n // or move to probing state if enough time has passed.\n switch (this.rateProbeState) {\n case RateProbeState.NotProbing:\n this.setProbeState(RateProbeState.ProbePending);\n break;\n\n case RateProbeState.ProbePending:\n if (this.setProbeState(RateProbeState.Probing)) {\n this.upgradeToStream(chosenStreams, upgradeStream);\n useLastSubscriptions = UseReceiveSet.NewOptimal;\n }\n break;\n }\n } else {\n this.setProbeState(RateProbeState.NotProbing);\n }\n\n return useLastSubscriptions;\n }\n\n // Utility function to find max rate of streams in current decision\n private calculateSubscribeRate(streams: VideoStreamDescription[]): number {\n let subscribeRate = 0;\n\n for (const stream of streams) {\n if (\n !this.pausedStreamIds.contain(stream.streamId) &&\n !this.pausedBwAttendeeIds.has(stream.attendeeId)\n ) {\n subscribeRate += stream.maxBitrateKbps;\n }\n }\n\n return subscribeRate;\n }\n\n private handleAppPausedStreams(\n chosenStreams: VideoStreamDescription[],\n remoteInfos: VideoStreamDescription[]\n ): void {\n if (!this.tileController) {\n this.logger.warn('tileController not found!');\n return;\n }\n this.pausedStreamIds = new DefaultVideoStreamIdSet();\n const remoteTiles = this.tileController.getAllRemoteVideoTiles();\n for (const tile of remoteTiles) {\n const state = tile.state();\n if (state.paused && !this.pausedBwAttendeeIds.has(state.boundAttendeeId)) {\n let j = remoteInfos.length;\n while (j--) {\n if (remoteInfos[j].attendeeId === state.boundAttendeeId) {\n this.logger.info(\n 'bwe: removed paused attendee ' +\n state.boundAttendeeId +\n ' streamId: ' +\n remoteInfos[j].streamId\n );\n this.pausedStreamIds.add(remoteInfos[j].streamId);\n // Add the stream to the selection set to keep the tile around\n if (this.subscribedReceiveSet.contain(remoteInfos[j].streamId)) {\n chosenStreams.push(remoteInfos[j]);\n }\n remoteInfos.splice(j, 1);\n }\n }\n }\n }\n }\n\n private processBwPausedStreams(\n remoteInfos: VideoStreamDescription[],\n chosenStreams: VideoStreamDescription[]\n ): void {\n if (!this.tileController) {\n this.logger.warn('tileController not found!');\n return;\n }\n const preferences = this.getCurrentVideoPreferences();\n if (preferences && this.shouldPauseTiles) {\n const videoTiles = this.tileController.getAllVideoTiles();\n for (const preference of preferences) {\n const videoTile = this.getVideoTileForAttendeeId(\n preference.attendeeId,\n videoTiles\n ) as DefaultVideoTile;\n const paused = videoTile?.state().paused || false;\n if (!chosenStreams.some(stream => stream.attendeeId === preference.attendeeId)) {\n // We cannot rely on the existance of video tile to indicate that the source exists in the call\n // because tiles will not be added or removed until after a full renegotiation (i.e. it will\n // be behind the state provided by the index)\n const streamExists = remoteInfos.some(\n stream => stream.attendeeId === preference.attendeeId\n );\n if (videoTile && streamExists) {\n const info = this.optimalReceiveStreams.find(\n stream => stream.attendeeId === preference.attendeeId\n );\n if (info !== undefined) {\n if (!paused) {\n this.logger.info(\n `bwe: pausing streamId ${info.streamId} attendee ${preference.attendeeId} due to bandwidth`\n );\n this.forEachObserver(observer => {\n observer.tileWillBePausedByDownlinkPolicy(videoTile.id());\n });\n this.tileController.pauseVideoTile(videoTile.id());\n }\n chosenStreams.push(info);\n }\n this.pausedBwAttendeeIds.add(preference.attendeeId);\n } else if (streamExists) {\n // Create a tile for this participant if one doesn't already exist and mark it as paused\n // Don't include it in the chosen streams because we don't want to subscribe for it then have to pause it.\n const newTile = this.tileController.addVideoTile();\n newTile.bindVideoStream(preference.attendeeId, false, null, 0, 0, 0, null);\n this.forEachObserver(observer => {\n observer.tileWillBePausedByDownlinkPolicy(newTile.id());\n });\n newTile.pause();\n this.logger.info(\n `bwe: Created video tile ${newTile.id()} for bw paused attendee ${\n preference.attendeeId\n }`\n );\n this.pausedBwAttendeeIds.add(preference.attendeeId);\n }\n } else if (paused && this.pausedBwAttendeeIds.has(preference.attendeeId)) {\n this.logger.info(`bwe: unpausing attendee ${preference.attendeeId} due to bandwidth`);\n this.forEachObserver(observer => {\n observer.tileWillBeUnpausedByDownlinkPolicy(videoTile.id());\n });\n this.tileController.unpauseVideoTile(videoTile.id());\n this.pausedBwAttendeeIds.delete(preference.attendeeId);\n }\n }\n }\n }\n\n private cleanBwPausedTiles(remoteInfos: VideoStreamDescription[]): void {\n if (!this.tileController) {\n this.logger.warn('tileController not found!');\n return;\n }\n const tiles = this.tileController.getAllRemoteVideoTiles();\n const preferences = this.getCurrentVideoPreferences();\n for (const tile of tiles) {\n const state = tile.state();\n if (!state.boundVideoStream) {\n if (!remoteInfos.some(stream => stream.attendeeId === state.boundAttendeeId)) {\n this.tileController.removeVideoTile(state.tileId);\n this.logger.info(\n `bwe: Removed video tile ${state.tileId} for bw paused attendee ${state.boundAttendeeId}`\n );\n } else if (\n preferences !== undefined &&\n !preferences.some(pref => pref.attendeeId === state.boundAttendeeId)\n ) {\n this.tileController.removeVideoTile(state.tileId);\n }\n }\n }\n }\n\n // `remoteInfos` is assumed to be provided in order of increasing quality\n private priorityPolicy(\n rates: PolicyRates,\n remoteInfos: VideoStreamDescription[],\n chosenStreams: VideoStreamDescription[]\n ): VideoStreamDescription {\n let upgradeStream: VideoStreamDescription;\n const videoPreferences: VideoPreferences = this.getCurrentVideoPreferences();\n\n const highestPriority = videoPreferences.highestPriority();\n let nextPriority;\n let priority = highestPriority;\n while (priority !== -1) {\n nextPriority = -1;\n for (const preference of videoPreferences) {\n if (preference.priority === priority) {\n // First subscribe to at least low rate\n for (const info of remoteInfos) {\n if (info.attendeeId === preference.attendeeId) {\n if (!chosenStreams.some(stream => stream.groupId === info.groupId)) {\n if (rates.chosenTotalBitrate + info.avgBitrateKbps <= rates.targetDownlinkBitrate) {\n chosenStreams.push(info);\n rates.chosenTotalBitrate += info.avgBitrateKbps;\n } else if (rates.deltaToNextUpgrade === 0) {\n // Keep track of step to next upgrade\n rates.deltaToNextUpgrade = info.avgBitrateKbps;\n upgradeStream = info;\n }\n }\n }\n }\n } else {\n if (preference.priority > priority) {\n nextPriority = preference.priority;\n break;\n }\n }\n }\n\n // Now try to upgrade all attendee's with this priority\n for (const preference of videoPreferences) {\n if (preference.priority === priority) {\n for (const info of remoteInfos) {\n if (info.attendeeId === preference.attendeeId) {\n const index = chosenStreams.findIndex(\n stream =>\n stream.groupId === info.groupId &&\n stream.maxBitrateKbps <= info.maxBitrateKbps &&\n stream.avgBitrateKbps < info.avgBitrateKbps\n );\n if (index !== -1) {\n const increaseKbps = info.avgBitrateKbps - chosenStreams[index].avgBitrateKbps;\n if (\n this.hasSimulcastStreams(remoteInfos, info.attendeeId, info.groupId) &&\n this.canUpgrade(\n info.avgBitrateKbps,\n preference.targetSize,\n preference.targetSizeToBitrateKbps(preference.targetSize),\n info.attendeeId.endsWith(ContentShareConstants.Modality)\n )\n ) {\n this.logger.info(\n `bwe: attendee: ${info.attendeeId} group: ${\n info.groupId\n } has simulcast and can upgrade avgBitrate: ${\n info.avgBitrateKbps\n } target: ${preference.targetSizeToBitrateKbps(\n preference.targetSize\n )} targetTotalBitrate: ${rates.targetDownlinkBitrate}`\n );\n if (rates.chosenTotalBitrate + increaseKbps <= rates.targetDownlinkBitrate) {\n rates.chosenTotalBitrate += increaseKbps;\n chosenStreams[index] = info;\n } else if (rates.deltaToNextUpgrade === 0) {\n // Keep track of step to next upgrade\n rates.deltaToNextUpgrade = increaseKbps;\n upgradeStream = info;\n }\n } else {\n this.logger.info('bwe: cannot upgrade stream quality beyond target size');\n }\n }\n }\n }\n } else {\n if (preference.priority > priority) {\n break;\n }\n }\n }\n\n // If we haven't subscribed to the highest rate of the top priority videos then\n // do not subscribe to any other sources\n if (priority === highestPriority && rates.deltaToNextUpgrade !== 0) {\n break;\n }\n priority = nextPriority;\n }\n return upgradeStream;\n }\n\n private getVideoTileForAttendeeId(attendeeId: string, videoTiles: VideoTile[]): VideoTile {\n for (const tile of videoTiles) {\n const state = tile.state();\n if (state.boundAttendeeId === attendeeId) {\n return tile;\n }\n }\n return null;\n }\n\n private canUpgrade(\n bitrateKbps: number,\n targetResolution: TargetDisplaySize,\n targetBitrateKbps: number,\n isContent: boolean\n ): boolean {\n let canUpgrade = false;\n // For both video and content, we want to interpret `TargetDisplaySize.High` as a request for the best quality\n // video, and should ignore the value of the target bitrate.\n if (targetResolution === TargetDisplaySize.High) {\n // For both video and content, we want to interpret `TargetDisplaySize.High` as a request for the best quality\n // video, and should ignore the value of the target bitrate.\n canUpgrade = true;\n } else if (!isContent && bitrateKbps <= targetBitrateKbps) {\n // For content share, even if the higher quality stream has a high max bitrate of 1200 kbps for example\n // the avg bitrate can be way lower so have to make sure that we do not update to a higher bitrate than the\n // target value (i.e. if `targetResolution === TargetDisplaySize.Low`).\n //\n // This does not apply to video as video uplink bandwidth could change the max bitrate value without resubscribing\n // so the max bitrate value might not be up-to-date on the downlink side. Also in the case of video, the avg\n // bitrate is close to the actual max bitrate.\n canUpgrade = true;\n } else if (\n isContent &&\n targetResolution === TargetDisplaySize.Medium &&\n bitrateKbps <= targetBitrateKbps\n ) {\n // If the target resolution is medium then fall back to use avg bitrate as video.\n canUpgrade = true;\n }\n if (canUpgrade) {\n this.logger.info(\n `bwe: canUpgrade: bitrateKbps: ${bitrateKbps} targetBitrateKbps: ${targetBitrateKbps}`\n );\n return true;\n }\n this.logger.info(\n `bwe: cannot Upgrade: bitrateKbps: ${bitrateKbps} targetBitrateKbps: ${targetBitrateKbps}`\n );\n return false;\n }\n\n private hasSimulcastStreams(\n remoteInfos: VideoStreamDescription[],\n attendeeId: string,\n groupId: number\n ): boolean {\n let streamCount = 0;\n for (const info of remoteInfos) {\n if (info.attendeeId === attendeeId && info.groupId === groupId) {\n streamCount++;\n }\n }\n this.logger.info(\n `bwe: attendeeId: ${attendeeId} groupId: ${groupId} hasSimulcastStreams: streamCount: ${streamCount}`\n );\n return streamCount > 1;\n }\n\n private streamsWithPreferenceDidChange(remoteInfos: VideoStreamDescription[]): boolean {\n if (\n this.previousStreamsWithPreference === undefined ||\n remoteInfos.length !== this.previousStreamsWithPreference.length ||\n this.videoPreferencesUpdated === true\n ) {\n return true;\n }\n\n for (const info of remoteInfos) {\n const infoMatch = this.previousStreamsWithPreference.find(\n prevInfo =>\n prevInfo.groupId === info.groupId &&\n prevInfo.streamId === info.streamId &&\n prevInfo.maxBitrateKbps === info.maxBitrateKbps\n );\n if (infoMatch === undefined) {\n return true;\n }\n }\n\n return false;\n }\n\n private chosenStreamsSameAsLast(chosenStreams: VideoStreamDescription[]): boolean {\n if (this.optimalNonPausedReceiveStreams.length !== chosenStreams.length) {\n return false;\n }\n for (const lastStream of this.optimalNonPausedReceiveStreams) {\n if (!chosenStreams.some(stream => stream.streamId === lastStream.streamId)) {\n return false;\n }\n }\n\n return true;\n }\n\n private policyStateLogStr(\n remoteInfos: VideoStreamDescription[],\n targetDownlinkBitrate: number\n ): string {\n const subscribedRate = this.calculateSubscribeRate(this.optimalReceiveStreams);\n const optimalReceiveSet = {\n targetBitrate: targetDownlinkBitrate,\n subscribedRate: subscribedRate,\n probeState: this.rateProbeState,\n startupPeriod: this.startupPeriod,\n };\n\n // Reduced remote info logging:\n let remoteInfoStr = `remoteInfos: [`;\n for (const info of remoteInfos) {\n remoteInfoStr += `{grpId:${info.groupId} strId:${info.streamId} maxBr:${info.maxBitrateKbps} avgBr:${info.avgBitrateKbps}}, `;\n }\n remoteInfoStr += `]`;\n\n let logString =\n `bwe: optimalReceiveSet ${JSON.stringify(optimalReceiveSet)}\\n` +\n `bwe: prev ${JSON.stringify(this.prevDownlinkStats)}\\n` +\n `bwe: now ${JSON.stringify(this.downlinkStats)}\\n` +\n `bwe: ${remoteInfoStr}\\n`;\n\n if (this.pausedStreamIds.size() > 0 || this.pausedBwAttendeeIds.size > 0) {\n logString += `bwe: paused: app stream ids ${JSON.stringify(\n this.pausedStreamIds\n )} bw attendees { ${Array.from(this.pausedBwAttendeeIds).join(' ')} }\\n`;\n }\n\n if (this.videoPreferences) {\n logString += `bwe: preferences: ${JSON.stringify(this.videoPreferences)}`;\n } else {\n logString += `bwe: default preferences: ${JSON.stringify(this.defaultVideoPreferences)}`;\n }\n return logString;\n }\n\n protected getCurrentVideoPreferences(): VideoPreferences {\n return this.videoPreferences || this.defaultVideoPreferences;\n }\n\n getServerSideNetworkAdaption(): ServerSideNetworkAdaption {\n return this.serverSideNetworkAdaption;\n }\n\n setServerSideNetworkAdaption(adaption: ServerSideNetworkAdaption): void {\n this.serverSideNetworkAdaption = adaption;\n this.setProbeState(RateProbeState.NotProbing); // In case we were probing\n }\n\n supportedServerSideNetworkAdaptions(): ServerSideNetworkAdaption[] {\n return [\n ServerSideNetworkAdaption.None,\n ServerSideNetworkAdaption.BandwidthProbing,\n ServerSideNetworkAdaption.BandwidthProbingAndRemoteVideoQualityAdaption,\n ];\n }\n\n getVideoPreferences(): VideoPreferences {\n let preferences = this.getCurrentVideoPreferences();\n if (!preferences) {\n const dummyPreferences = VideoPreferences.prepare();\n // Can't be undefined, occasionally the audio video controller\n // will call this function before the first index is received\n preferences = dummyPreferences.build();\n }\n return preferences;\n }\n\n wantsAllTemporalLayersInIndex(): boolean {\n return true;\n }\n}\n","var AWS = require('../core');\nvar util = require('../util');\nvar Rest = require('./rest');\n\nfunction populateBody(req) {\n var input = req.service.api.operations[req.operation].input;\n var builder = new AWS.XML.Builder();\n var params = req.params;\n\n var payload = input.payload;\n if (payload) {\n var payloadMember = input.members[payload];\n params = params[payload];\n if (params === undefined) return;\n\n if (payloadMember.type === 'structure') {\n var rootElement = payloadMember.name;\n req.httpRequest.body = builder.toXML(params, payloadMember, rootElement, true);\n } else { // non-xml payload\n req.httpRequest.body = params;\n }\n } else {\n req.httpRequest.body = builder.toXML(params, input, input.name ||\n input.shape || util.string.upperFirst(req.operation) + 'Request');\n }\n}\n\nfunction buildRequest(req) {\n Rest.buildRequest(req);\n\n // never send body payload on GET/HEAD\n if (['GET', 'HEAD'].indexOf(req.httpRequest.method) < 0) {\n populateBody(req);\n }\n}\n\nfunction extractError(resp) {\n Rest.extractError(resp);\n\n var data;\n try {\n data = new AWS.XML.Parser().parse(resp.httpResponse.body.toString());\n } catch (e) {\n data = {\n Code: resp.httpResponse.statusCode,\n Message: resp.httpResponse.statusMessage\n };\n }\n\n if (data.Errors) data = data.Errors;\n if (data.Error) data = data.Error;\n if (data.Code) {\n resp.error = util.error(new Error(), {\n code: data.Code,\n message: data.Message\n });\n } else {\n resp.error = util.error(new Error(), {\n code: resp.httpResponse.statusCode,\n message: null\n });\n }\n}\n\nfunction extractData(resp) {\n Rest.extractData(resp);\n\n var parser;\n var req = resp.request;\n var body = resp.httpResponse.body;\n var operation = req.service.api.operations[req.operation];\n var output = operation.output;\n\n var hasEventOutput = operation.hasEventOutput;\n\n var payload = output.payload;\n if (payload) {\n var payloadMember = output.members[payload];\n if (payloadMember.isEventStream) {\n parser = new AWS.XML.Parser();\n resp.data[payload] = util.createEventStream(\n AWS.HttpClient.streamsApiVersion === 2 ? resp.httpResponse.stream : resp.httpResponse.body,\n parser,\n payloadMember\n );\n } else if (payloadMember.type === 'structure') {\n parser = new AWS.XML.Parser();\n resp.data[payload] = parser.parse(body.toString(), payloadMember);\n } else if (payloadMember.type === 'binary' || payloadMember.isStreaming) {\n resp.data[payload] = body;\n } else {\n resp.data[payload] = payloadMember.toType(body);\n }\n } else if (body.length > 0) {\n parser = new AWS.XML.Parser();\n var data = parser.parse(body.toString(), output);\n util.update(resp.data, data);\n }\n}\n\n/**\n * @api private\n */\nmodule.exports = {\n buildRequest: buildRequest,\n extractError: extractError,\n extractData: extractData\n};\n","\"use strict\";\nmodule.exports = {};\n\n/**\n * Named roots.\n * This is where pbjs stores generated structures (the option `-r, --root` specifies a name).\n * Can also be used manually to make roots available across modules.\n * @name roots\n * @type {Object.}\n * @example\n * // pbjs -r myroot -o compiled.js ...\n *\n * // in another module:\n * require(\"./compiled.js\");\n *\n * // in any subsequent module:\n * var root = protobuf.roots[\"myroot\"];\n */\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nexport enum WebSocketReadyState {\n None,\n Connecting,\n Open,\n Closing,\n Closed,\n}\nexport default WebSocketReadyState;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['cognitoidentity'] = {};\nAWS.CognitoIdentity = Service.defineService('cognitoidentity', ['2014-06-30']);\nObject.defineProperty(apiLoader.services['cognitoidentity'], '2014-06-30', {\n get: function get() {\n var model = require('../apis/cognito-identity-2014-06-30.min.json');\n model.paginators = require('../apis/cognito-identity-2014-06-30.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.CognitoIdentity;\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\n\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isOldChrome = exports.supportsWASMStreaming = exports.supportsSharedArrayBuffer = exports.supportsWASM = exports.supportsAudioWorklet = exports.supportsWorker = exports.supportsVoiceFocusWorker = exports.supportsWASMPostMessage = exports.isSafari = void 0;\nconst loader_js_1 = require(\"./loader.js\");\nconst isChrome = (global = globalThis) => {\n const ua = global.navigator.userAgent;\n return !!ua.match(/Chrom(?:e|ium)\\/([0-9]+)/);\n};\nconst isSafari = (global = globalThis) => {\n const ua = global.navigator.userAgent;\n const hasSafari = ua.match(/Safari\\//);\n const hasChrome = ua.match(/Chrom(?:e|ium)\\//);\n return !!(hasSafari && !hasChrome);\n};\nexports.isSafari = isSafari;\nconst supportsWASMPostMessage = (global = globalThis) => {\n if (exports.isSafari(global)) {\n return false;\n }\n if (isChrome(global)) {\n const version = chromeVersion(global) || 0;\n return version < 95;\n }\n return true;\n};\nexports.supportsWASMPostMessage = supportsWASMPostMessage;\nconst supportsVoiceFocusWorker = (scope = globalThis, fetchConfig, logger) => __awaiter(void 0, void 0, void 0, function* () {\n if (!exports.supportsWorker(scope, logger)) {\n return false;\n }\n const workerURL = `${fetchConfig.paths.workers}worker-v1.js`;\n try {\n const worker = yield loader_js_1.loadWorker(workerURL, 'VoiceFocusTestWorker', fetchConfig, logger);\n try {\n worker.terminate();\n }\n catch (e) {\n logger === null || logger === void 0 ? void 0 : logger.debug('Failed to terminate worker.', e);\n }\n return true;\n }\n catch (e) {\n logger === null || logger === void 0 ? void 0 : logger.info('Failed to fetch and instantiate test worker', e);\n return false;\n }\n});\nexports.supportsVoiceFocusWorker = supportsVoiceFocusWorker;\nconst supportsWorker = (scope = globalThis, logger) => {\n try {\n return !!scope.Worker;\n }\n catch (e) {\n logger === null || logger === void 0 ? void 0 : logger.info('Does not support Worker', e);\n return false;\n }\n};\nexports.supportsWorker = supportsWorker;\nconst supportsAudioWorklet = (scope = globalThis, logger) => {\n try {\n return !!scope.AudioWorklet && !!scope.AudioWorkletNode;\n }\n catch (e) {\n logger === null || logger === void 0 ? void 0 : logger.info('Does not support Audio Worklet', e);\n return false;\n }\n};\nexports.supportsAudioWorklet = supportsAudioWorklet;\nconst supportsWASM = (scope = globalThis, logger) => {\n try {\n return !!scope.WebAssembly && (!!scope.WebAssembly.compile || !!scope.WebAssembly.compileStreaming);\n }\n catch (e) {\n logger === null || logger === void 0 ? void 0 : logger.info('Does not support WASM', e);\n return false;\n }\n};\nexports.supportsWASM = supportsWASM;\nconst supportsSharedArrayBuffer = (scope = globalThis, window = globalThis, logger) => {\n try {\n return !!scope.SharedArrayBuffer && (!!window.chrome || !!scope.crossOriginIsolated);\n }\n catch (e) {\n logger === null || logger === void 0 ? void 0 : logger.info('Does not support SharedArrayBuffer.');\n return false;\n }\n};\nexports.supportsSharedArrayBuffer = supportsSharedArrayBuffer;\nconst supportsWASMStreaming = (scope = globalThis, logger) => {\n var _a;\n try {\n return !!((_a = scope.WebAssembly) === null || _a === void 0 ? void 0 : _a.compileStreaming);\n }\n catch (e) {\n logger === null || logger === void 0 ? void 0 : logger.info('Does not support WASM streaming compilation', e);\n return false;\n }\n};\nexports.supportsWASMStreaming = supportsWASMStreaming;\nconst SUPPORTED_CHROME_VERSION = 90;\nconst chromeVersion = (global = globalThis) => {\n try {\n if (!global.chrome) {\n return undefined;\n }\n }\n catch (e) {\n }\n const versionCheck = global.navigator.userAgent.match(/Chrom(?:e|ium)\\/([0-9]+)/);\n if (!versionCheck) {\n return undefined;\n }\n return parseInt(versionCheck[1], 10);\n};\nconst isOldChrome = (global = globalThis, logger) => {\n const version = chromeVersion(global);\n if (!version) {\n return false;\n }\n if (version < SUPPORTED_CHROME_VERSION) {\n logger === null || logger === void 0 ? void 0 : logger.debug(`Chrome ${version} has incomplete SIMD support.`);\n return true;\n }\n return false;\n};\nexports.isOldChrome = isOldChrome;\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport AudioVideoControllerState from '../audiovideocontroller/AudioVideoControllerState';\nimport MeetingSessionStatusCode from '../meetingsession/MeetingSessionStatusCode';\nimport SDP from '../sdp/SDP';\nimport BaseTask from './BaseTask';\n\n/*\n * [[FinishGatheringICECandidatesTask]] add ice-candidate event handler on peer connection to\n * collect ice candidates and wait for peer connection ice gathering state to complete\n */\nexport default class FinishGatheringICECandidatesTask extends BaseTask {\n protected taskName = 'FinishGatheringICECandidatesTask';\n\n private static CHROME_VPN_TIMEOUT_MS = 5000;\n\n private startTimestampMs: number;\n private cancelPromise: undefined | ((error: Error) => void);\n\n constructor(\n private context: AudioVideoControllerState,\n private chromeVpnTimeoutMs: number = FinishGatheringICECandidatesTask.CHROME_VPN_TIMEOUT_MS\n ) {\n super(context.logger);\n }\n\n private removeEventListener(): void {\n if (this.context.peer) {\n this.context.peer.removeEventListener('icecandidate', this.context.iceCandidateHandler);\n if (!this.context.turnCredentials) {\n this.context.peer.removeEventListener(\n 'icegatheringstatechange',\n this.context.iceGatheringStateEventHandler\n );\n }\n }\n }\n\n cancel(): void {\n let error: Error;\n // TODO: Remove when the Chrome VPN reconnect bug is fixed.\n // In Chrome, SDK may fail to establish TURN session after VPN reconnect.\n // https://bugs.chromium.org/p/webrtc/issues/detail?id=9097\n if (this.context.browserBehavior.requiresIceCandidateGatheringTimeoutWorkaround()) {\n if (this.chromeVpnTimeoutMs < this.context.meetingSessionConfiguration.connectionTimeoutMs) {\n const duration = Date.now() - this.startTimestampMs;\n if (duration > this.chromeVpnTimeoutMs) {\n error = new Error(\n `canceling ${this.name()} due to the meeting status code: ${\n MeetingSessionStatusCode.ICEGatheringTimeoutWorkaround\n }`\n );\n }\n }\n }\n\n // Just in case. The baseCancel behavior should prevent this.\n /* istanbul ignore else */\n if (this.cancelPromise) {\n error = error || new Error(`canceling ${this.name()}`);\n this.cancelPromise(error);\n delete this.cancelPromise;\n }\n }\n\n async run(): Promise {\n if (!this.context.peer) {\n this.logAndThrow(`session does not have peer connection; bypass ice gathering`);\n }\n if (this.context.browserBehavior.requiresCheckForSdpConnectionAttributes()) {\n if (new SDP(this.context.peer.localDescription.sdp).hasCandidatesForAllMLines()) {\n this.context.logger.info(\n `ice gathering already complete; bypass gathering, current local description ${this.context.peer.localDescription.sdp}`\n );\n return;\n }\n } else {\n this.context.logger.info(\n `iOS device does not require checking for connection attributes in SDP, current local description ${this.context.peer.localDescription.sdp}`\n );\n }\n\n /*\n * To bypass waiting for events, it is required that \"icegatheringstate\" to be complete and sdp to have candidate\n * For Firefox, it takes long for iceGatheringState === 'complete'\n * Ref: https://github.com/aws/amazon-chime-sdk-js/issues/609\n */\n if (\n (this.context.browserBehavior.hasFirefoxWebRTC() ||\n this.context.peer.iceGatheringState === 'complete') &&\n new SDP(this.context.peer.localDescription.sdp).hasCandidates()\n ) {\n this.context.logger.info(\n 'ice gathering state is complete and candidates are in SDP; bypass gathering'\n );\n return;\n }\n try {\n await new Promise((resolve, reject) => {\n this.cancelPromise = (error: Error) => {\n this.removeEventListener();\n reject(error);\n };\n\n if (!this.context.turnCredentials) {\n // if one day, we found a case where a FinishGatheringICECandidate did not resolve but ice gathering state is complete and SDP answer has ice candidates\n // we may need to enable this\n this.context.iceGatheringStateEventHandler = () => {\n if (this.context.peer.iceGatheringState === 'complete') {\n this.removeEventListener();\n resolve();\n delete this.cancelPromise;\n return;\n }\n };\n this.context.peer.addEventListener(\n 'icegatheringstatechange',\n this.context.iceGatheringStateEventHandler\n );\n }\n\n this.context.iceCandidateHandler = (event: RTCPeerConnectionIceEvent) => {\n this.context.logger.info(\n `ice candidate: ${event.candidate ? event.candidate.candidate : '(null)'} state: ${\n this.context.peer.iceGatheringState\n }`\n );\n // Ice candidate arrives, do not need to wait anymore.\n // https://webrtcglossary.com/trickle-ice/\n if (event.candidate) {\n if (SDP.isRTPCandidate(event.candidate.candidate)) {\n this.context.iceCandidates.push(event.candidate);\n }\n\n // Could there be a case the candidate is not written to SDP ?\n if (this.context.turnCredentials && this.context.iceCandidates.length >= 1) {\n this.context.logger.info('gathered at least one relay candidate');\n this.removeEventListener();\n resolve();\n delete this.cancelPromise;\n return;\n }\n }\n\n // Ice candidate gathering is complete, additional barrier to make sure sdp contain an ice candidate.\n // TODO: Could there be a race where iceGatheringState is flipped after this task is run ? This could only be handled if ice state is monitored persistently.\n if (this.context.peer.iceGatheringState === 'complete') {\n this.context.logger.info('done gathering ice candidates');\n this.removeEventListener();\n if (\n !new SDP(this.context.peer.localDescription.sdp).hasCandidates() ||\n this.context.iceCandidates.length === 0\n ) {\n reject(new Error('no ice candidates were gathered'));\n delete this.cancelPromise;\n } else {\n resolve();\n delete this.cancelPromise;\n }\n }\n };\n // SDK does not catch candidate itself and send to sever. Rather, WebRTC handles candidate events and writes candidate to SDP.\n this.context.peer.addEventListener('icecandidate', this.context.iceCandidateHandler);\n this.startTimestampMs = Date.now();\n });\n } catch (error) {\n throw error;\n } finally {\n /* istanbul ignore else */\n if (this.startTimestampMs) {\n this.context.iceGatheringDurationMs = Math.round(Date.now() - this.startTimestampMs);\n }\n }\n }\n}\n","/**\n * Javascript implementation of PKCS#7 v1.5.\n *\n * @author Stefan Siegl\n * @author Dave Longley\n *\n * Copyright (c) 2012 Stefan Siegl \n * Copyright (c) 2012-2015 Digital Bazaar, Inc.\n *\n * Currently this implementation only supports ContentType of EnvelopedData,\n * EncryptedData, or SignedData at the root level. The top level elements may\n * contain only a ContentInfo of ContentType Data, i.e. plain data. Further\n * nesting is not (yet) supported.\n *\n * The Forge validators for PKCS #7's ASN.1 structures are available from\n * a separate file pkcs7asn1.js, since those are referenced from other\n * PKCS standards like PKCS #12.\n */\nvar forge = require('./forge');\nrequire('./aes');\nrequire('./asn1');\nrequire('./des');\nrequire('./oids');\nrequire('./pem');\nrequire('./pkcs7asn1');\nrequire('./random');\nrequire('./util');\nrequire('./x509');\n\n// shortcut for ASN.1 API\nvar asn1 = forge.asn1;\n\n// shortcut for PKCS#7 API\nvar p7 = module.exports = forge.pkcs7 = forge.pkcs7 || {};\n\n/**\n * Converts a PKCS#7 message from PEM format.\n *\n * @param pem the PEM-formatted PKCS#7 message.\n *\n * @return the PKCS#7 message.\n */\np7.messageFromPem = function(pem) {\n var msg = forge.pem.decode(pem)[0];\n\n if(msg.type !== 'PKCS7') {\n var error = new Error('Could not convert PKCS#7 message from PEM; PEM ' +\n 'header type is not \"PKCS#7\".');\n error.headerType = msg.type;\n throw error;\n }\n if(msg.procType && msg.procType.type === 'ENCRYPTED') {\n throw new Error('Could not convert PKCS#7 message from PEM; PEM is encrypted.');\n }\n\n // convert DER to ASN.1 object\n var obj = asn1.fromDer(msg.body);\n\n return p7.messageFromAsn1(obj);\n};\n\n/**\n * Converts a PKCS#7 message to PEM format.\n *\n * @param msg The PKCS#7 message object\n * @param maxline The maximum characters per line, defaults to 64.\n *\n * @return The PEM-formatted PKCS#7 message.\n */\np7.messageToPem = function(msg, maxline) {\n // convert to ASN.1, then DER, then PEM-encode\n var pemObj = {\n type: 'PKCS7',\n body: asn1.toDer(msg.toAsn1()).getBytes()\n };\n return forge.pem.encode(pemObj, {maxline: maxline});\n};\n\n/**\n * Converts a PKCS#7 message from an ASN.1 object.\n *\n * @param obj the ASN.1 representation of a ContentInfo.\n *\n * @return the PKCS#7 message.\n */\np7.messageFromAsn1 = function(obj) {\n // validate root level ContentInfo and capture data\n var capture = {};\n var errors = [];\n if(!asn1.validate(obj, p7.asn1.contentInfoValidator, capture, errors)) {\n var error = new Error('Cannot read PKCS#7 message. ' +\n 'ASN.1 object is not an PKCS#7 ContentInfo.');\n error.errors = errors;\n throw error;\n }\n\n var contentType = asn1.derToOid(capture.contentType);\n var msg;\n\n switch(contentType) {\n case forge.pki.oids.envelopedData:\n msg = p7.createEnvelopedData();\n break;\n\n case forge.pki.oids.encryptedData:\n msg = p7.createEncryptedData();\n break;\n\n case forge.pki.oids.signedData:\n msg = p7.createSignedData();\n break;\n\n default:\n throw new Error('Cannot read PKCS#7 message. ContentType with OID ' +\n contentType + ' is not (yet) supported.');\n }\n\n msg.fromAsn1(capture.content.value[0]);\n return msg;\n};\n\np7.createSignedData = function() {\n var msg = null;\n msg = {\n type: forge.pki.oids.signedData,\n version: 1,\n certificates: [],\n crls: [],\n // TODO: add json-formatted signer stuff here?\n signers: [],\n // populated during sign()\n digestAlgorithmIdentifiers: [],\n contentInfo: null,\n signerInfos: [],\n\n fromAsn1: function(obj) {\n // validate SignedData content block and capture data.\n _fromAsn1(msg, obj, p7.asn1.signedDataValidator);\n msg.certificates = [];\n msg.crls = [];\n msg.digestAlgorithmIdentifiers = [];\n msg.contentInfo = null;\n msg.signerInfos = [];\n\n if(msg.rawCapture.certificates) {\n var certs = msg.rawCapture.certificates.value;\n for(var i = 0; i < certs.length; ++i) {\n msg.certificates.push(forge.pki.certificateFromAsn1(certs[i]));\n }\n }\n\n // TODO: parse crls\n },\n\n toAsn1: function() {\n // degenerate case with no content\n if(!msg.contentInfo) {\n msg.sign();\n }\n\n var certs = [];\n for(var i = 0; i < msg.certificates.length; ++i) {\n certs.push(forge.pki.certificateToAsn1(msg.certificates[i]));\n }\n\n var crls = [];\n // TODO: implement CRLs\n\n // [0] SignedData\n var signedData = asn1.create(asn1.Class.CONTEXT_SPECIFIC, 0, true, [\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n // Version\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.INTEGER, false,\n asn1.integerToDer(msg.version).getBytes()),\n // DigestAlgorithmIdentifiers\n asn1.create(\n asn1.Class.UNIVERSAL, asn1.Type.SET, true,\n msg.digestAlgorithmIdentifiers),\n // ContentInfo\n msg.contentInfo\n ])\n ]);\n if(certs.length > 0) {\n // [0] IMPLICIT ExtendedCertificatesAndCertificates OPTIONAL\n signedData.value[0].value.push(\n asn1.create(asn1.Class.CONTEXT_SPECIFIC, 0, true, certs));\n }\n if(crls.length > 0) {\n // [1] IMPLICIT CertificateRevocationLists OPTIONAL\n signedData.value[0].value.push(\n asn1.create(asn1.Class.CONTEXT_SPECIFIC, 1, true, crls));\n }\n // SignerInfos\n signedData.value[0].value.push(\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SET, true,\n msg.signerInfos));\n\n // ContentInfo\n return asn1.create(\n asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n // ContentType\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false,\n asn1.oidToDer(msg.type).getBytes()),\n // [0] SignedData\n signedData\n ]);\n },\n\n /**\n * Add (another) entity to list of signers.\n *\n * Note: If authenticatedAttributes are provided, then, per RFC 2315,\n * they must include at least two attributes: content type and\n * message digest. The message digest attribute value will be\n * auto-calculated during signing and will be ignored if provided.\n *\n * Here's an example of providing these two attributes:\n *\n * forge.pkcs7.createSignedData();\n * p7.addSigner({\n * issuer: cert.issuer.attributes,\n * serialNumber: cert.serialNumber,\n * key: privateKey,\n * digestAlgorithm: forge.pki.oids.sha1,\n * authenticatedAttributes: [{\n * type: forge.pki.oids.contentType,\n * value: forge.pki.oids.data\n * }, {\n * type: forge.pki.oids.messageDigest\n * }]\n * });\n *\n * TODO: Support [subjectKeyIdentifier] as signer's ID.\n *\n * @param signer the signer information:\n * key the signer's private key.\n * [certificate] a certificate containing the public key\n * associated with the signer's private key; use this option as\n * an alternative to specifying signer.issuer and\n * signer.serialNumber.\n * [issuer] the issuer attributes (eg: cert.issuer.attributes).\n * [serialNumber] the signer's certificate's serial number in\n * hexadecimal (eg: cert.serialNumber).\n * [digestAlgorithm] the message digest OID, as a string, to use\n * (eg: forge.pki.oids.sha1).\n * [authenticatedAttributes] an optional array of attributes\n * to also sign along with the content.\n */\n addSigner: function(signer) {\n var issuer = signer.issuer;\n var serialNumber = signer.serialNumber;\n if(signer.certificate) {\n var cert = signer.certificate;\n if(typeof cert === 'string') {\n cert = forge.pki.certificateFromPem(cert);\n }\n issuer = cert.issuer.attributes;\n serialNumber = cert.serialNumber;\n }\n var key = signer.key;\n if(!key) {\n throw new Error(\n 'Could not add PKCS#7 signer; no private key specified.');\n }\n if(typeof key === 'string') {\n key = forge.pki.privateKeyFromPem(key);\n }\n\n // ensure OID known for digest algorithm\n var digestAlgorithm = signer.digestAlgorithm || forge.pki.oids.sha1;\n switch(digestAlgorithm) {\n case forge.pki.oids.sha1:\n case forge.pki.oids.sha256:\n case forge.pki.oids.sha384:\n case forge.pki.oids.sha512:\n case forge.pki.oids.md5:\n break;\n default:\n throw new Error(\n 'Could not add PKCS#7 signer; unknown message digest algorithm: ' +\n digestAlgorithm);\n }\n\n // if authenticatedAttributes is present, then the attributes\n // must contain at least PKCS #9 content-type and message-digest\n var authenticatedAttributes = signer.authenticatedAttributes || [];\n if(authenticatedAttributes.length > 0) {\n var contentType = false;\n var messageDigest = false;\n for(var i = 0; i < authenticatedAttributes.length; ++i) {\n var attr = authenticatedAttributes[i];\n if(!contentType && attr.type === forge.pki.oids.contentType) {\n contentType = true;\n if(messageDigest) {\n break;\n }\n continue;\n }\n if(!messageDigest && attr.type === forge.pki.oids.messageDigest) {\n messageDigest = true;\n if(contentType) {\n break;\n }\n continue;\n }\n }\n\n if(!contentType || !messageDigest) {\n throw new Error('Invalid signer.authenticatedAttributes. If ' +\n 'signer.authenticatedAttributes is specified, then it must ' +\n 'contain at least two attributes, PKCS #9 content-type and ' +\n 'PKCS #9 message-digest.');\n }\n }\n\n msg.signers.push({\n key: key,\n version: 1,\n issuer: issuer,\n serialNumber: serialNumber,\n digestAlgorithm: digestAlgorithm,\n signatureAlgorithm: forge.pki.oids.rsaEncryption,\n signature: null,\n authenticatedAttributes: authenticatedAttributes,\n unauthenticatedAttributes: []\n });\n },\n\n /**\n * Signs the content.\n * @param options Options to apply when signing:\n * [detached] boolean. If signing should be done in detached mode. Defaults to false.\n */\n sign: function(options) {\n options = options || {};\n // auto-generate content info\n if(typeof msg.content !== 'object' || msg.contentInfo === null) {\n // use Data ContentInfo\n msg.contentInfo = asn1.create(\n asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n // ContentType\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false,\n asn1.oidToDer(forge.pki.oids.data).getBytes())\n ]);\n\n // add actual content, if present\n if('content' in msg) {\n var content;\n if(msg.content instanceof forge.util.ByteBuffer) {\n content = msg.content.bytes();\n } else if(typeof msg.content === 'string') {\n content = forge.util.encodeUtf8(msg.content);\n }\n\n if (options.detached) {\n msg.detachedContent = asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OCTETSTRING, false, content);\n } else {\n msg.contentInfo.value.push(\n // [0] EXPLICIT content\n asn1.create(asn1.Class.CONTEXT_SPECIFIC, 0, true, [\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OCTETSTRING, false,\n content)\n ]));\n }\n }\n }\n\n // no signers, return early (degenerate case for certificate container)\n if(msg.signers.length === 0) {\n return;\n }\n\n // generate digest algorithm identifiers\n var mds = addDigestAlgorithmIds();\n\n // generate signerInfos\n addSignerInfos(mds);\n },\n\n verify: function() {\n throw new Error('PKCS#7 signature verification not yet implemented.');\n },\n\n /**\n * Add a certificate.\n *\n * @param cert the certificate to add.\n */\n addCertificate: function(cert) {\n // convert from PEM\n if(typeof cert === 'string') {\n cert = forge.pki.certificateFromPem(cert);\n }\n msg.certificates.push(cert);\n },\n\n /**\n * Add a certificate revokation list.\n *\n * @param crl the certificate revokation list to add.\n */\n addCertificateRevokationList: function(crl) {\n throw new Error('PKCS#7 CRL support not yet implemented.');\n }\n };\n return msg;\n\n function addDigestAlgorithmIds() {\n var mds = {};\n\n for(var i = 0; i < msg.signers.length; ++i) {\n var signer = msg.signers[i];\n var oid = signer.digestAlgorithm;\n if(!(oid in mds)) {\n // content digest\n mds[oid] = forge.md[forge.pki.oids[oid]].create();\n }\n if(signer.authenticatedAttributes.length === 0) {\n // no custom attributes to digest; use content message digest\n signer.md = mds[oid];\n } else {\n // custom attributes to be digested; use own message digest\n // TODO: optimize to just copy message digest state if that\n // feature is ever supported with message digests\n signer.md = forge.md[forge.pki.oids[oid]].create();\n }\n }\n\n // add unique digest algorithm identifiers\n msg.digestAlgorithmIdentifiers = [];\n for(var oid in mds) {\n msg.digestAlgorithmIdentifiers.push(\n // AlgorithmIdentifier\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n // algorithm\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false,\n asn1.oidToDer(oid).getBytes()),\n // parameters (null)\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.NULL, false, '')\n ]));\n }\n\n return mds;\n }\n\n function addSignerInfos(mds) {\n var content;\n\n if (msg.detachedContent) {\n // Signature has been made in detached mode.\n content = msg.detachedContent;\n } else {\n // Note: ContentInfo is a SEQUENCE with 2 values, second value is\n // the content field and is optional for a ContentInfo but required here\n // since signers are present\n // get ContentInfo content\n content = msg.contentInfo.value[1];\n // skip [0] EXPLICIT content wrapper\n content = content.value[0];\n }\n\n if(!content) {\n throw new Error(\n 'Could not sign PKCS#7 message; there is no content to sign.');\n }\n\n // get ContentInfo content type\n var contentType = asn1.derToOid(msg.contentInfo.value[0].value);\n\n // serialize content\n var bytes = asn1.toDer(content);\n\n // skip identifier and length per RFC 2315 9.3\n // skip identifier (1 byte)\n bytes.getByte();\n // read and discard length bytes\n asn1.getBerValueLength(bytes);\n bytes = bytes.getBytes();\n\n // digest content DER value bytes\n for(var oid in mds) {\n mds[oid].start().update(bytes);\n }\n\n // sign content\n var signingTime = new Date();\n for(var i = 0; i < msg.signers.length; ++i) {\n var signer = msg.signers[i];\n\n if(signer.authenticatedAttributes.length === 0) {\n // if ContentInfo content type is not \"Data\", then\n // authenticatedAttributes must be present per RFC 2315\n if(contentType !== forge.pki.oids.data) {\n throw new Error(\n 'Invalid signer; authenticatedAttributes must be present ' +\n 'when the ContentInfo content type is not PKCS#7 Data.');\n }\n } else {\n // process authenticated attributes\n // [0] IMPLICIT\n signer.authenticatedAttributesAsn1 = asn1.create(\n asn1.Class.CONTEXT_SPECIFIC, 0, true, []);\n\n // per RFC 2315, attributes are to be digested using a SET container\n // not the above [0] IMPLICIT container\n var attrsAsn1 = asn1.create(\n asn1.Class.UNIVERSAL, asn1.Type.SET, true, []);\n\n for(var ai = 0; ai < signer.authenticatedAttributes.length; ++ai) {\n var attr = signer.authenticatedAttributes[ai];\n if(attr.type === forge.pki.oids.messageDigest) {\n // use content message digest as value\n attr.value = mds[signer.digestAlgorithm].digest();\n } else if(attr.type === forge.pki.oids.signingTime) {\n // auto-populate signing time if not already set\n if(!attr.value) {\n attr.value = signingTime;\n }\n }\n\n // convert to ASN.1 and push onto Attributes SET (for signing) and\n // onto authenticatedAttributesAsn1 to complete SignedData ASN.1\n // TODO: optimize away duplication\n attrsAsn1.value.push(_attributeToAsn1(attr));\n signer.authenticatedAttributesAsn1.value.push(_attributeToAsn1(attr));\n }\n\n // DER-serialize and digest SET OF attributes only\n bytes = asn1.toDer(attrsAsn1).getBytes();\n signer.md.start().update(bytes);\n }\n\n // sign digest\n signer.signature = signer.key.sign(signer.md, 'RSASSA-PKCS1-V1_5');\n }\n\n // add signer info\n msg.signerInfos = _signersToAsn1(msg.signers);\n }\n};\n\n/**\n * Creates an empty PKCS#7 message of type EncryptedData.\n *\n * @return the message.\n */\np7.createEncryptedData = function() {\n var msg = null;\n msg = {\n type: forge.pki.oids.encryptedData,\n version: 0,\n encryptedContent: {\n algorithm: forge.pki.oids['aes256-CBC']\n },\n\n /**\n * Reads an EncryptedData content block (in ASN.1 format)\n *\n * @param obj The ASN.1 representation of the EncryptedData content block\n */\n fromAsn1: function(obj) {\n // Validate EncryptedData content block and capture data.\n _fromAsn1(msg, obj, p7.asn1.encryptedDataValidator);\n },\n\n /**\n * Decrypt encrypted content\n *\n * @param key The (symmetric) key as a byte buffer\n */\n decrypt: function(key) {\n if(key !== undefined) {\n msg.encryptedContent.key = key;\n }\n _decryptContent(msg);\n }\n };\n return msg;\n};\n\n/**\n * Creates an empty PKCS#7 message of type EnvelopedData.\n *\n * @return the message.\n */\np7.createEnvelopedData = function() {\n var msg = null;\n msg = {\n type: forge.pki.oids.envelopedData,\n version: 0,\n recipients: [],\n encryptedContent: {\n algorithm: forge.pki.oids['aes256-CBC']\n },\n\n /**\n * Reads an EnvelopedData content block (in ASN.1 format)\n *\n * @param obj the ASN.1 representation of the EnvelopedData content block.\n */\n fromAsn1: function(obj) {\n // validate EnvelopedData content block and capture data\n var capture = _fromAsn1(msg, obj, p7.asn1.envelopedDataValidator);\n msg.recipients = _recipientsFromAsn1(capture.recipientInfos.value);\n },\n\n toAsn1: function() {\n // ContentInfo\n return asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n // ContentType\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false,\n asn1.oidToDer(msg.type).getBytes()),\n // [0] EnvelopedData\n asn1.create(asn1.Class.CONTEXT_SPECIFIC, 0, true, [\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n // Version\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.INTEGER, false,\n asn1.integerToDer(msg.version).getBytes()),\n // RecipientInfos\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SET, true,\n _recipientsToAsn1(msg.recipients)),\n // EncryptedContentInfo\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true,\n _encryptedContentToAsn1(msg.encryptedContent))\n ])\n ])\n ]);\n },\n\n /**\n * Find recipient by X.509 certificate's issuer.\n *\n * @param cert the certificate with the issuer to look for.\n *\n * @return the recipient object.\n */\n findRecipient: function(cert) {\n var sAttr = cert.issuer.attributes;\n\n for(var i = 0; i < msg.recipients.length; ++i) {\n var r = msg.recipients[i];\n var rAttr = r.issuer;\n\n if(r.serialNumber !== cert.serialNumber) {\n continue;\n }\n\n if(rAttr.length !== sAttr.length) {\n continue;\n }\n\n var match = true;\n for(var j = 0; j < sAttr.length; ++j) {\n if(rAttr[j].type !== sAttr[j].type ||\n rAttr[j].value !== sAttr[j].value) {\n match = false;\n break;\n }\n }\n\n if(match) {\n return r;\n }\n }\n\n return null;\n },\n\n /**\n * Decrypt enveloped content\n *\n * @param recipient The recipient object related to the private key\n * @param privKey The (RSA) private key object\n */\n decrypt: function(recipient, privKey) {\n if(msg.encryptedContent.key === undefined && recipient !== undefined &&\n privKey !== undefined) {\n switch(recipient.encryptedContent.algorithm) {\n case forge.pki.oids.rsaEncryption:\n case forge.pki.oids.desCBC:\n var key = privKey.decrypt(recipient.encryptedContent.content);\n msg.encryptedContent.key = forge.util.createBuffer(key);\n break;\n\n default:\n throw new Error('Unsupported asymmetric cipher, ' +\n 'OID ' + recipient.encryptedContent.algorithm);\n }\n }\n\n _decryptContent(msg);\n },\n\n /**\n * Add (another) entity to list of recipients.\n *\n * @param cert The certificate of the entity to add.\n */\n addRecipient: function(cert) {\n msg.recipients.push({\n version: 0,\n issuer: cert.issuer.attributes,\n serialNumber: cert.serialNumber,\n encryptedContent: {\n // We simply assume rsaEncryption here, since forge.pki only\n // supports RSA so far. If the PKI module supports other\n // ciphers one day, we need to modify this one as well.\n algorithm: forge.pki.oids.rsaEncryption,\n key: cert.publicKey\n }\n });\n },\n\n /**\n * Encrypt enveloped content.\n *\n * This function supports two optional arguments, cipher and key, which\n * can be used to influence symmetric encryption. Unless cipher is\n * provided, the cipher specified in encryptedContent.algorithm is used\n * (defaults to AES-256-CBC). If no key is provided, encryptedContent.key\n * is (re-)used. If that one's not set, a random key will be generated\n * automatically.\n *\n * @param [key] The key to be used for symmetric encryption.\n * @param [cipher] The OID of the symmetric cipher to use.\n */\n encrypt: function(key, cipher) {\n // Part 1: Symmetric encryption\n if(msg.encryptedContent.content === undefined) {\n cipher = cipher || msg.encryptedContent.algorithm;\n key = key || msg.encryptedContent.key;\n\n var keyLen, ivLen, ciphFn;\n switch(cipher) {\n case forge.pki.oids['aes128-CBC']:\n keyLen = 16;\n ivLen = 16;\n ciphFn = forge.aes.createEncryptionCipher;\n break;\n\n case forge.pki.oids['aes192-CBC']:\n keyLen = 24;\n ivLen = 16;\n ciphFn = forge.aes.createEncryptionCipher;\n break;\n\n case forge.pki.oids['aes256-CBC']:\n keyLen = 32;\n ivLen = 16;\n ciphFn = forge.aes.createEncryptionCipher;\n break;\n\n case forge.pki.oids['des-EDE3-CBC']:\n keyLen = 24;\n ivLen = 8;\n ciphFn = forge.des.createEncryptionCipher;\n break;\n\n default:\n throw new Error('Unsupported symmetric cipher, OID ' + cipher);\n }\n\n if(key === undefined) {\n key = forge.util.createBuffer(forge.random.getBytes(keyLen));\n } else if(key.length() != keyLen) {\n throw new Error('Symmetric key has wrong length; ' +\n 'got ' + key.length() + ' bytes, expected ' + keyLen + '.');\n }\n\n // Keep a copy of the key & IV in the object, so the caller can\n // use it for whatever reason.\n msg.encryptedContent.algorithm = cipher;\n msg.encryptedContent.key = key;\n msg.encryptedContent.parameter = forge.util.createBuffer(\n forge.random.getBytes(ivLen));\n\n var ciph = ciphFn(key);\n ciph.start(msg.encryptedContent.parameter.copy());\n ciph.update(msg.content);\n\n // The finish function does PKCS#7 padding by default, therefore\n // no action required by us.\n if(!ciph.finish()) {\n throw new Error('Symmetric encryption failed.');\n }\n\n msg.encryptedContent.content = ciph.output;\n }\n\n // Part 2: asymmetric encryption for each recipient\n for(var i = 0; i < msg.recipients.length; ++i) {\n var recipient = msg.recipients[i];\n\n // Nothing to do, encryption already done.\n if(recipient.encryptedContent.content !== undefined) {\n continue;\n }\n\n switch(recipient.encryptedContent.algorithm) {\n case forge.pki.oids.rsaEncryption:\n recipient.encryptedContent.content =\n recipient.encryptedContent.key.encrypt(\n msg.encryptedContent.key.data);\n break;\n\n default:\n throw new Error('Unsupported asymmetric cipher, OID ' +\n recipient.encryptedContent.algorithm);\n }\n }\n }\n };\n return msg;\n};\n\n/**\n * Converts a single recipient from an ASN.1 object.\n *\n * @param obj the ASN.1 RecipientInfo.\n *\n * @return the recipient object.\n */\nfunction _recipientFromAsn1(obj) {\n // validate EnvelopedData content block and capture data\n var capture = {};\n var errors = [];\n if(!asn1.validate(obj, p7.asn1.recipientInfoValidator, capture, errors)) {\n var error = new Error('Cannot read PKCS#7 RecipientInfo. ' +\n 'ASN.1 object is not an PKCS#7 RecipientInfo.');\n error.errors = errors;\n throw error;\n }\n\n return {\n version: capture.version.charCodeAt(0),\n issuer: forge.pki.RDNAttributesAsArray(capture.issuer),\n serialNumber: forge.util.createBuffer(capture.serial).toHex(),\n encryptedContent: {\n algorithm: asn1.derToOid(capture.encAlgorithm),\n parameter: capture.encParameter ? capture.encParameter.value : undefined,\n content: capture.encKey\n }\n };\n}\n\n/**\n * Converts a single recipient object to an ASN.1 object.\n *\n * @param obj the recipient object.\n *\n * @return the ASN.1 RecipientInfo.\n */\nfunction _recipientToAsn1(obj) {\n return asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n // Version\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.INTEGER, false,\n asn1.integerToDer(obj.version).getBytes()),\n // IssuerAndSerialNumber\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n // Name\n forge.pki.distinguishedNameToAsn1({attributes: obj.issuer}),\n // Serial\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.INTEGER, false,\n forge.util.hexToBytes(obj.serialNumber))\n ]),\n // KeyEncryptionAlgorithmIdentifier\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n // Algorithm\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false,\n asn1.oidToDer(obj.encryptedContent.algorithm).getBytes()),\n // Parameter, force NULL, only RSA supported for now.\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.NULL, false, '')\n ]),\n // EncryptedKey\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OCTETSTRING, false,\n obj.encryptedContent.content)\n ]);\n}\n\n/**\n * Map a set of RecipientInfo ASN.1 objects to recipient objects.\n *\n * @param infos an array of ASN.1 representations RecipientInfo (i.e. SET OF).\n *\n * @return an array of recipient objects.\n */\nfunction _recipientsFromAsn1(infos) {\n var ret = [];\n for(var i = 0; i < infos.length; ++i) {\n ret.push(_recipientFromAsn1(infos[i]));\n }\n return ret;\n}\n\n/**\n * Map an array of recipient objects to ASN.1 RecipientInfo objects.\n *\n * @param recipients an array of recipientInfo objects.\n *\n * @return an array of ASN.1 RecipientInfos.\n */\nfunction _recipientsToAsn1(recipients) {\n var ret = [];\n for(var i = 0; i < recipients.length; ++i) {\n ret.push(_recipientToAsn1(recipients[i]));\n }\n return ret;\n}\n\n/**\n * Converts a single signer from an ASN.1 object.\n *\n * @param obj the ASN.1 representation of a SignerInfo.\n *\n * @return the signer object.\n */\nfunction _signerFromAsn1(obj) {\n // validate EnvelopedData content block and capture data\n var capture = {};\n var errors = [];\n if(!asn1.validate(obj, p7.asn1.signerInfoValidator, capture, errors)) {\n var error = new Error('Cannot read PKCS#7 SignerInfo. ' +\n 'ASN.1 object is not an PKCS#7 SignerInfo.');\n error.errors = errors;\n throw error;\n }\n\n var rval = {\n version: capture.version.charCodeAt(0),\n issuer: forge.pki.RDNAttributesAsArray(capture.issuer),\n serialNumber: forge.util.createBuffer(capture.serial).toHex(),\n digestAlgorithm: asn1.derToOid(capture.digestAlgorithm),\n signatureAlgorithm: asn1.derToOid(capture.signatureAlgorithm),\n signature: capture.signature,\n authenticatedAttributes: [],\n unauthenticatedAttributes: []\n };\n\n // TODO: convert attributes\n var authenticatedAttributes = capture.authenticatedAttributes || [];\n var unauthenticatedAttributes = capture.unauthenticatedAttributes || [];\n\n return rval;\n}\n\n/**\n * Converts a single signerInfo object to an ASN.1 object.\n *\n * @param obj the signerInfo object.\n *\n * @return the ASN.1 representation of a SignerInfo.\n */\nfunction _signerToAsn1(obj) {\n // SignerInfo\n var rval = asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n // version\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.INTEGER, false,\n asn1.integerToDer(obj.version).getBytes()),\n // issuerAndSerialNumber\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n // name\n forge.pki.distinguishedNameToAsn1({attributes: obj.issuer}),\n // serial\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.INTEGER, false,\n forge.util.hexToBytes(obj.serialNumber))\n ]),\n // digestAlgorithm\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n // algorithm\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false,\n asn1.oidToDer(obj.digestAlgorithm).getBytes()),\n // parameters (null)\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.NULL, false, '')\n ])\n ]);\n\n // authenticatedAttributes (OPTIONAL)\n if(obj.authenticatedAttributesAsn1) {\n // add ASN.1 previously generated during signing\n rval.value.push(obj.authenticatedAttributesAsn1);\n }\n\n // digestEncryptionAlgorithm\n rval.value.push(asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n // algorithm\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false,\n asn1.oidToDer(obj.signatureAlgorithm).getBytes()),\n // parameters (null)\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.NULL, false, '')\n ]));\n\n // encryptedDigest\n rval.value.push(asn1.create(\n asn1.Class.UNIVERSAL, asn1.Type.OCTETSTRING, false, obj.signature));\n\n // unauthenticatedAttributes (OPTIONAL)\n if(obj.unauthenticatedAttributes.length > 0) {\n // [1] IMPLICIT\n var attrsAsn1 = asn1.create(asn1.Class.CONTEXT_SPECIFIC, 1, true, []);\n for(var i = 0; i < obj.unauthenticatedAttributes.length; ++i) {\n var attr = obj.unauthenticatedAttributes[i];\n attrsAsn1.values.push(_attributeToAsn1(attr));\n }\n rval.value.push(attrsAsn1);\n }\n\n return rval;\n}\n\n/**\n * Map a set of SignerInfo ASN.1 objects to an array of signer objects.\n *\n * @param signerInfoAsn1s an array of ASN.1 SignerInfos (i.e. SET OF).\n *\n * @return an array of signers objects.\n */\nfunction _signersFromAsn1(signerInfoAsn1s) {\n var ret = [];\n for(var i = 0; i < signerInfoAsn1s.length; ++i) {\n ret.push(_signerFromAsn1(signerInfoAsn1s[i]));\n }\n return ret;\n}\n\n/**\n * Map an array of signer objects to ASN.1 objects.\n *\n * @param signers an array of signer objects.\n *\n * @return an array of ASN.1 SignerInfos.\n */\nfunction _signersToAsn1(signers) {\n var ret = [];\n for(var i = 0; i < signers.length; ++i) {\n ret.push(_signerToAsn1(signers[i]));\n }\n return ret;\n}\n\n/**\n * Convert an attribute object to an ASN.1 Attribute.\n *\n * @param attr the attribute object.\n *\n * @return the ASN.1 Attribute.\n */\nfunction _attributeToAsn1(attr) {\n var value;\n\n // TODO: generalize to support more attributes\n if(attr.type === forge.pki.oids.contentType) {\n value = asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false,\n asn1.oidToDer(attr.value).getBytes());\n } else if(attr.type === forge.pki.oids.messageDigest) {\n value = asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OCTETSTRING, false,\n attr.value.bytes());\n } else if(attr.type === forge.pki.oids.signingTime) {\n /* Note per RFC 2985: Dates between 1 January 1950 and 31 December 2049\n (inclusive) MUST be encoded as UTCTime. Any dates with year values\n before 1950 or after 2049 MUST be encoded as GeneralizedTime. [Further,]\n UTCTime values MUST be expressed in Greenwich Mean Time (Zulu) and MUST\n include seconds (i.e., times are YYMMDDHHMMSSZ), even where the\n number of seconds is zero. Midnight (GMT) must be represented as\n \"YYMMDD000000Z\". */\n // TODO: make these module-level constants\n var jan_1_1950 = new Date('1950-01-01T00:00:00Z');\n var jan_1_2050 = new Date('2050-01-01T00:00:00Z');\n var date = attr.value;\n if(typeof date === 'string') {\n // try to parse date\n var timestamp = Date.parse(date);\n if(!isNaN(timestamp)) {\n date = new Date(timestamp);\n } else if(date.length === 13) {\n // YYMMDDHHMMSSZ (13 chars for UTCTime)\n date = asn1.utcTimeToDate(date);\n } else {\n // assume generalized time\n date = asn1.generalizedTimeToDate(date);\n }\n }\n\n if(date >= jan_1_1950 && date < jan_1_2050) {\n value = asn1.create(\n asn1.Class.UNIVERSAL, asn1.Type.UTCTIME, false,\n asn1.dateToUtcTime(date));\n } else {\n value = asn1.create(\n asn1.Class.UNIVERSAL, asn1.Type.GENERALIZEDTIME, false,\n asn1.dateToGeneralizedTime(date));\n }\n }\n\n // TODO: expose as common API call\n // create a RelativeDistinguishedName set\n // each value in the set is an AttributeTypeAndValue first\n // containing the type (an OID) and second the value\n return asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n // AttributeType\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false,\n asn1.oidToDer(attr.type).getBytes()),\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SET, true, [\n // AttributeValue\n value\n ])\n ]);\n}\n\n/**\n * Map messages encrypted content to ASN.1 objects.\n *\n * @param ec The encryptedContent object of the message.\n *\n * @return ASN.1 representation of the encryptedContent object (SEQUENCE).\n */\nfunction _encryptedContentToAsn1(ec) {\n return [\n // ContentType, always Data for the moment\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false,\n asn1.oidToDer(forge.pki.oids.data).getBytes()),\n // ContentEncryptionAlgorithmIdentifier\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n // Algorithm\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false,\n asn1.oidToDer(ec.algorithm).getBytes()),\n // Parameters (IV)\n !ec.parameter ?\n undefined :\n asn1.create(\n asn1.Class.UNIVERSAL, asn1.Type.OCTETSTRING, false,\n ec.parameter.getBytes())\n ]),\n // [0] EncryptedContent\n asn1.create(asn1.Class.CONTEXT_SPECIFIC, 0, true, [\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OCTETSTRING, false,\n ec.content.getBytes())\n ])\n ];\n}\n\n/**\n * Reads the \"common part\" of an PKCS#7 content block (in ASN.1 format)\n *\n * This function reads the \"common part\" of the PKCS#7 content blocks\n * EncryptedData and EnvelopedData, i.e. version number and symmetrically\n * encrypted content block.\n *\n * The result of the ASN.1 validate and capture process is returned\n * to allow the caller to extract further data, e.g. the list of recipients\n * in case of a EnvelopedData object.\n *\n * @param msg the PKCS#7 object to read the data to.\n * @param obj the ASN.1 representation of the content block.\n * @param validator the ASN.1 structure validator object to use.\n *\n * @return the value map captured by validator object.\n */\nfunction _fromAsn1(msg, obj, validator) {\n var capture = {};\n var errors = [];\n if(!asn1.validate(obj, validator, capture, errors)) {\n var error = new Error('Cannot read PKCS#7 message. ' +\n 'ASN.1 object is not a supported PKCS#7 message.');\n error.errors = error;\n throw error;\n }\n\n // Check contentType, so far we only support (raw) Data.\n var contentType = asn1.derToOid(capture.contentType);\n if(contentType !== forge.pki.oids.data) {\n throw new Error('Unsupported PKCS#7 message. ' +\n 'Only wrapped ContentType Data supported.');\n }\n\n if(capture.encryptedContent) {\n var content = '';\n if(forge.util.isArray(capture.encryptedContent)) {\n for(var i = 0; i < capture.encryptedContent.length; ++i) {\n if(capture.encryptedContent[i].type !== asn1.Type.OCTETSTRING) {\n throw new Error('Malformed PKCS#7 message, expecting encrypted ' +\n 'content constructed of only OCTET STRING objects.');\n }\n content += capture.encryptedContent[i].value;\n }\n } else {\n content = capture.encryptedContent;\n }\n msg.encryptedContent = {\n algorithm: asn1.derToOid(capture.encAlgorithm),\n parameter: forge.util.createBuffer(capture.encParameter.value),\n content: forge.util.createBuffer(content)\n };\n }\n\n if(capture.content) {\n var content = '';\n if(forge.util.isArray(capture.content)) {\n for(var i = 0; i < capture.content.length; ++i) {\n if(capture.content[i].type !== asn1.Type.OCTETSTRING) {\n throw new Error('Malformed PKCS#7 message, expecting ' +\n 'content constructed of only OCTET STRING objects.');\n }\n content += capture.content[i].value;\n }\n } else {\n content = capture.content;\n }\n msg.content = forge.util.createBuffer(content);\n }\n\n msg.version = capture.version.charCodeAt(0);\n msg.rawCapture = capture;\n\n return capture;\n}\n\n/**\n * Decrypt the symmetrically encrypted content block of the PKCS#7 message.\n *\n * Decryption is skipped in case the PKCS#7 message object already has a\n * (decrypted) content attribute. The algorithm, key and cipher parameters\n * (probably the iv) are taken from the encryptedContent attribute of the\n * message object.\n *\n * @param The PKCS#7 message object.\n */\nfunction _decryptContent(msg) {\n if(msg.encryptedContent.key === undefined) {\n throw new Error('Symmetric key not available.');\n }\n\n if(msg.content === undefined) {\n var ciph;\n\n switch(msg.encryptedContent.algorithm) {\n case forge.pki.oids['aes128-CBC']:\n case forge.pki.oids['aes192-CBC']:\n case forge.pki.oids['aes256-CBC']:\n ciph = forge.aes.createDecryptionCipher(msg.encryptedContent.key);\n break;\n\n case forge.pki.oids['desCBC']:\n case forge.pki.oids['des-EDE3-CBC']:\n ciph = forge.des.createDecryptionCipher(msg.encryptedContent.key);\n break;\n\n default:\n throw new Error('Unsupported symmetric cipher, OID ' +\n msg.encryptedContent.algorithm);\n }\n ciph.start(msg.encryptedContent.parameter);\n ciph.update(msg.encryptedContent.content);\n\n if(!ciph.finish()) {\n throw new Error('Symmetric decryption failed.');\n }\n\n msg.content = ciph.output;\n }\n}\n","'use strict';\n\nvar stringify = require('./stringify');\nvar parse = require('./parse');\nvar formats = require('./formats');\n\nmodule.exports = {\n formats: formats,\n parse: parse,\n stringify: stringify\n};\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['kms'] = {};\nAWS.KMS = Service.defineService('kms', ['2014-11-01']);\nObject.defineProperty(apiLoader.services['kms'], '2014-11-01', {\n get: function get() {\n var model = require('../apis/kms-2014-11-01.min.json');\n model.paginators = require('../apis/kms-2014-11-01.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.KMS;\n","/**\n * DES (Data Encryption Standard) implementation.\n *\n * This implementation supports DES as well as 3DES-EDE in ECB and CBC mode.\n * It is based on the BSD-licensed implementation by Paul Tero:\n *\n * Paul Tero, July 2001\n * http://www.tero.co.uk/des/\n *\n * Optimised for performance with large blocks by\n * Michael Hayworth, November 2001\n * http://www.netdealing.com\n *\n * THIS SOFTWARE IS PROVIDED \"AS IS\" AND\n * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE\n * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS\n * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\n * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY\n * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF\n * SUCH DAMAGE.\n *\n * @author Stefan Siegl\n * @author Dave Longley\n *\n * Copyright (c) 2012 Stefan Siegl \n * Copyright (c) 2012-2014 Digital Bazaar, Inc.\n */\nvar forge = require('./forge');\nrequire('./cipher');\nrequire('./cipherModes');\nrequire('./util');\n\n/* DES API */\nmodule.exports = forge.des = forge.des || {};\n\n/**\n * Deprecated. Instead, use:\n *\n * var cipher = forge.cipher.createCipher('DES-', key);\n * cipher.start({iv: iv});\n *\n * Creates an DES cipher object to encrypt data using the given symmetric key.\n * The output will be stored in the 'output' member of the returned cipher.\n *\n * The key and iv may be given as binary-encoded strings of bytes or\n * byte buffers.\n *\n * @param key the symmetric key to use (64 or 192 bits).\n * @param iv the initialization vector to use.\n * @param output the buffer to write to, null to create one.\n * @param mode the cipher mode to use (default: 'CBC' if IV is\n * given, 'ECB' if null).\n *\n * @return the cipher.\n */\nforge.des.startEncrypting = function(key, iv, output, mode) {\n var cipher = _createCipher({\n key: key,\n output: output,\n decrypt: false,\n mode: mode || (iv === null ? 'ECB' : 'CBC')\n });\n cipher.start(iv);\n return cipher;\n};\n\n/**\n * Deprecated. Instead, use:\n *\n * var cipher = forge.cipher.createCipher('DES-', key);\n *\n * Creates an DES cipher object to encrypt data using the given symmetric key.\n *\n * The key may be given as a binary-encoded string of bytes or a byte buffer.\n *\n * @param key the symmetric key to use (64 or 192 bits).\n * @param mode the cipher mode to use (default: 'CBC').\n *\n * @return the cipher.\n */\nforge.des.createEncryptionCipher = function(key, mode) {\n return _createCipher({\n key: key,\n output: null,\n decrypt: false,\n mode: mode\n });\n};\n\n/**\n * Deprecated. Instead, use:\n *\n * var decipher = forge.cipher.createDecipher('DES-', key);\n * decipher.start({iv: iv});\n *\n * Creates an DES cipher object to decrypt data using the given symmetric key.\n * The output will be stored in the 'output' member of the returned cipher.\n *\n * The key and iv may be given as binary-encoded strings of bytes or\n * byte buffers.\n *\n * @param key the symmetric key to use (64 or 192 bits).\n * @param iv the initialization vector to use.\n * @param output the buffer to write to, null to create one.\n * @param mode the cipher mode to use (default: 'CBC' if IV is\n * given, 'ECB' if null).\n *\n * @return the cipher.\n */\nforge.des.startDecrypting = function(key, iv, output, mode) {\n var cipher = _createCipher({\n key: key,\n output: output,\n decrypt: true,\n mode: mode || (iv === null ? 'ECB' : 'CBC')\n });\n cipher.start(iv);\n return cipher;\n};\n\n/**\n * Deprecated. Instead, use:\n *\n * var decipher = forge.cipher.createDecipher('DES-', key);\n *\n * Creates an DES cipher object to decrypt data using the given symmetric key.\n *\n * The key may be given as a binary-encoded string of bytes or a byte buffer.\n *\n * @param key the symmetric key to use (64 or 192 bits).\n * @param mode the cipher mode to use (default: 'CBC').\n *\n * @return the cipher.\n */\nforge.des.createDecryptionCipher = function(key, mode) {\n return _createCipher({\n key: key,\n output: null,\n decrypt: true,\n mode: mode\n });\n};\n\n/**\n * Creates a new DES cipher algorithm object.\n *\n * @param name the name of the algorithm.\n * @param mode the mode factory function.\n *\n * @return the DES algorithm object.\n */\nforge.des.Algorithm = function(name, mode) {\n var self = this;\n self.name = name;\n self.mode = new mode({\n blockSize: 8,\n cipher: {\n encrypt: function(inBlock, outBlock) {\n return _updateBlock(self._keys, inBlock, outBlock, false);\n },\n decrypt: function(inBlock, outBlock) {\n return _updateBlock(self._keys, inBlock, outBlock, true);\n }\n }\n });\n self._init = false;\n};\n\n/**\n * Initializes this DES algorithm by expanding its key.\n *\n * @param options the options to use.\n * key the key to use with this algorithm.\n * decrypt true if the algorithm should be initialized for decryption,\n * false for encryption.\n */\nforge.des.Algorithm.prototype.initialize = function(options) {\n if(this._init) {\n return;\n }\n\n var key = forge.util.createBuffer(options.key);\n if(this.name.indexOf('3DES') === 0) {\n if(key.length() !== 24) {\n throw new Error('Invalid Triple-DES key size: ' + key.length() * 8);\n }\n }\n\n // do key expansion to 16 or 48 subkeys (single or triple DES)\n this._keys = _createKeys(key);\n this._init = true;\n};\n\n/** Register DES algorithms **/\n\nregisterAlgorithm('DES-ECB', forge.cipher.modes.ecb);\nregisterAlgorithm('DES-CBC', forge.cipher.modes.cbc);\nregisterAlgorithm('DES-CFB', forge.cipher.modes.cfb);\nregisterAlgorithm('DES-OFB', forge.cipher.modes.ofb);\nregisterAlgorithm('DES-CTR', forge.cipher.modes.ctr);\n\nregisterAlgorithm('3DES-ECB', forge.cipher.modes.ecb);\nregisterAlgorithm('3DES-CBC', forge.cipher.modes.cbc);\nregisterAlgorithm('3DES-CFB', forge.cipher.modes.cfb);\nregisterAlgorithm('3DES-OFB', forge.cipher.modes.ofb);\nregisterAlgorithm('3DES-CTR', forge.cipher.modes.ctr);\n\nfunction registerAlgorithm(name, mode) {\n var factory = function() {\n return new forge.des.Algorithm(name, mode);\n };\n forge.cipher.registerAlgorithm(name, factory);\n}\n\n/** DES implementation **/\n\nvar spfunction1 = [0x1010400,0,0x10000,0x1010404,0x1010004,0x10404,0x4,0x10000,0x400,0x1010400,0x1010404,0x400,0x1000404,0x1010004,0x1000000,0x4,0x404,0x1000400,0x1000400,0x10400,0x10400,0x1010000,0x1010000,0x1000404,0x10004,0x1000004,0x1000004,0x10004,0,0x404,0x10404,0x1000000,0x10000,0x1010404,0x4,0x1010000,0x1010400,0x1000000,0x1000000,0x400,0x1010004,0x10000,0x10400,0x1000004,0x400,0x4,0x1000404,0x10404,0x1010404,0x10004,0x1010000,0x1000404,0x1000004,0x404,0x10404,0x1010400,0x404,0x1000400,0x1000400,0,0x10004,0x10400,0,0x1010004];\nvar spfunction2 = [-0x7fef7fe0,-0x7fff8000,0x8000,0x108020,0x100000,0x20,-0x7fefffe0,-0x7fff7fe0,-0x7fffffe0,-0x7fef7fe0,-0x7fef8000,-0x80000000,-0x7fff8000,0x100000,0x20,-0x7fefffe0,0x108000,0x100020,-0x7fff7fe0,0,-0x80000000,0x8000,0x108020,-0x7ff00000,0x100020,-0x7fffffe0,0,0x108000,0x8020,-0x7fef8000,-0x7ff00000,0x8020,0,0x108020,-0x7fefffe0,0x100000,-0x7fff7fe0,-0x7ff00000,-0x7fef8000,0x8000,-0x7ff00000,-0x7fff8000,0x20,-0x7fef7fe0,0x108020,0x20,0x8000,-0x80000000,0x8020,-0x7fef8000,0x100000,-0x7fffffe0,0x100020,-0x7fff7fe0,-0x7fffffe0,0x100020,0x108000,0,-0x7fff8000,0x8020,-0x80000000,-0x7fefffe0,-0x7fef7fe0,0x108000];\nvar spfunction3 = [0x208,0x8020200,0,0x8020008,0x8000200,0,0x20208,0x8000200,0x20008,0x8000008,0x8000008,0x20000,0x8020208,0x20008,0x8020000,0x208,0x8000000,0x8,0x8020200,0x200,0x20200,0x8020000,0x8020008,0x20208,0x8000208,0x20200,0x20000,0x8000208,0x8,0x8020208,0x200,0x8000000,0x8020200,0x8000000,0x20008,0x208,0x20000,0x8020200,0x8000200,0,0x200,0x20008,0x8020208,0x8000200,0x8000008,0x200,0,0x8020008,0x8000208,0x20000,0x8000000,0x8020208,0x8,0x20208,0x20200,0x8000008,0x8020000,0x8000208,0x208,0x8020000,0x20208,0x8,0x8020008,0x20200];\nvar spfunction4 = [0x802001,0x2081,0x2081,0x80,0x802080,0x800081,0x800001,0x2001,0,0x802000,0x802000,0x802081,0x81,0,0x800080,0x800001,0x1,0x2000,0x800000,0x802001,0x80,0x800000,0x2001,0x2080,0x800081,0x1,0x2080,0x800080,0x2000,0x802080,0x802081,0x81,0x800080,0x800001,0x802000,0x802081,0x81,0,0,0x802000,0x2080,0x800080,0x800081,0x1,0x802001,0x2081,0x2081,0x80,0x802081,0x81,0x1,0x2000,0x800001,0x2001,0x802080,0x800081,0x2001,0x2080,0x800000,0x802001,0x80,0x800000,0x2000,0x802080];\nvar spfunction5 = [0x100,0x2080100,0x2080000,0x42000100,0x80000,0x100,0x40000000,0x2080000,0x40080100,0x80000,0x2000100,0x40080100,0x42000100,0x42080000,0x80100,0x40000000,0x2000000,0x40080000,0x40080000,0,0x40000100,0x42080100,0x42080100,0x2000100,0x42080000,0x40000100,0,0x42000000,0x2080100,0x2000000,0x42000000,0x80100,0x80000,0x42000100,0x100,0x2000000,0x40000000,0x2080000,0x42000100,0x40080100,0x2000100,0x40000000,0x42080000,0x2080100,0x40080100,0x100,0x2000000,0x42080000,0x42080100,0x80100,0x42000000,0x42080100,0x2080000,0,0x40080000,0x42000000,0x80100,0x2000100,0x40000100,0x80000,0,0x40080000,0x2080100,0x40000100];\nvar spfunction6 = [0x20000010,0x20400000,0x4000,0x20404010,0x20400000,0x10,0x20404010,0x400000,0x20004000,0x404010,0x400000,0x20000010,0x400010,0x20004000,0x20000000,0x4010,0,0x400010,0x20004010,0x4000,0x404000,0x20004010,0x10,0x20400010,0x20400010,0,0x404010,0x20404000,0x4010,0x404000,0x20404000,0x20000000,0x20004000,0x10,0x20400010,0x404000,0x20404010,0x400000,0x4010,0x20000010,0x400000,0x20004000,0x20000000,0x4010,0x20000010,0x20404010,0x404000,0x20400000,0x404010,0x20404000,0,0x20400010,0x10,0x4000,0x20400000,0x404010,0x4000,0x400010,0x20004010,0,0x20404000,0x20000000,0x400010,0x20004010];\nvar spfunction7 = [0x200000,0x4200002,0x4000802,0,0x800,0x4000802,0x200802,0x4200800,0x4200802,0x200000,0,0x4000002,0x2,0x4000000,0x4200002,0x802,0x4000800,0x200802,0x200002,0x4000800,0x4000002,0x4200000,0x4200800,0x200002,0x4200000,0x800,0x802,0x4200802,0x200800,0x2,0x4000000,0x200800,0x4000000,0x200800,0x200000,0x4000802,0x4000802,0x4200002,0x4200002,0x2,0x200002,0x4000000,0x4000800,0x200000,0x4200800,0x802,0x200802,0x4200800,0x802,0x4000002,0x4200802,0x4200000,0x200800,0,0x2,0x4200802,0,0x200802,0x4200000,0x800,0x4000002,0x4000800,0x800,0x200002];\nvar spfunction8 = [0x10001040,0x1000,0x40000,0x10041040,0x10000000,0x10001040,0x40,0x10000000,0x40040,0x10040000,0x10041040,0x41000,0x10041000,0x41040,0x1000,0x40,0x10040000,0x10000040,0x10001000,0x1040,0x41000,0x40040,0x10040040,0x10041000,0x1040,0,0,0x10040040,0x10000040,0x10001000,0x41040,0x40000,0x41040,0x40000,0x10041000,0x1000,0x40,0x10040040,0x1000,0x41040,0x10001000,0x40,0x10000040,0x10040000,0x10040040,0x10000000,0x40000,0x10001040,0,0x10041040,0x40040,0x10000040,0x10040000,0x10001000,0x10001040,0,0x10041040,0x41000,0x41000,0x1040,0x1040,0x40040,0x10000000,0x10041000];\n\n/**\n * Create necessary sub keys.\n *\n * @param key the 64-bit or 192-bit key.\n *\n * @return the expanded keys.\n */\nfunction _createKeys(key) {\n var pc2bytes0 = [0,0x4,0x20000000,0x20000004,0x10000,0x10004,0x20010000,0x20010004,0x200,0x204,0x20000200,0x20000204,0x10200,0x10204,0x20010200,0x20010204],\n pc2bytes1 = [0,0x1,0x100000,0x100001,0x4000000,0x4000001,0x4100000,0x4100001,0x100,0x101,0x100100,0x100101,0x4000100,0x4000101,0x4100100,0x4100101],\n pc2bytes2 = [0,0x8,0x800,0x808,0x1000000,0x1000008,0x1000800,0x1000808,0,0x8,0x800,0x808,0x1000000,0x1000008,0x1000800,0x1000808],\n pc2bytes3 = [0,0x200000,0x8000000,0x8200000,0x2000,0x202000,0x8002000,0x8202000,0x20000,0x220000,0x8020000,0x8220000,0x22000,0x222000,0x8022000,0x8222000],\n pc2bytes4 = [0,0x40000,0x10,0x40010,0,0x40000,0x10,0x40010,0x1000,0x41000,0x1010,0x41010,0x1000,0x41000,0x1010,0x41010],\n pc2bytes5 = [0,0x400,0x20,0x420,0,0x400,0x20,0x420,0x2000000,0x2000400,0x2000020,0x2000420,0x2000000,0x2000400,0x2000020,0x2000420],\n pc2bytes6 = [0,0x10000000,0x80000,0x10080000,0x2,0x10000002,0x80002,0x10080002,0,0x10000000,0x80000,0x10080000,0x2,0x10000002,0x80002,0x10080002],\n pc2bytes7 = [0,0x10000,0x800,0x10800,0x20000000,0x20010000,0x20000800,0x20010800,0x20000,0x30000,0x20800,0x30800,0x20020000,0x20030000,0x20020800,0x20030800],\n pc2bytes8 = [0,0x40000,0,0x40000,0x2,0x40002,0x2,0x40002,0x2000000,0x2040000,0x2000000,0x2040000,0x2000002,0x2040002,0x2000002,0x2040002],\n pc2bytes9 = [0,0x10000000,0x8,0x10000008,0,0x10000000,0x8,0x10000008,0x400,0x10000400,0x408,0x10000408,0x400,0x10000400,0x408,0x10000408],\n pc2bytes10 = [0,0x20,0,0x20,0x100000,0x100020,0x100000,0x100020,0x2000,0x2020,0x2000,0x2020,0x102000,0x102020,0x102000,0x102020],\n pc2bytes11 = [0,0x1000000,0x200,0x1000200,0x200000,0x1200000,0x200200,0x1200200,0x4000000,0x5000000,0x4000200,0x5000200,0x4200000,0x5200000,0x4200200,0x5200200],\n pc2bytes12 = [0,0x1000,0x8000000,0x8001000,0x80000,0x81000,0x8080000,0x8081000,0x10,0x1010,0x8000010,0x8001010,0x80010,0x81010,0x8080010,0x8081010],\n pc2bytes13 = [0,0x4,0x100,0x104,0,0x4,0x100,0x104,0x1,0x5,0x101,0x105,0x1,0x5,0x101,0x105];\n\n // how many iterations (1 for des, 3 for triple des)\n // changed by Paul 16/6/2007 to use Triple DES for 9+ byte keys\n var iterations = key.length() > 8 ? 3 : 1;\n\n // stores the return keys\n var keys = [];\n\n // now define the left shifts which need to be done\n var shifts = [0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0];\n\n var n = 0, tmp;\n for(var j = 0; j < iterations; j++) {\n var left = key.getInt32();\n var right = key.getInt32();\n\n tmp = ((left >>> 4) ^ right) & 0x0f0f0f0f;\n right ^= tmp;\n left ^= (tmp << 4);\n\n tmp = ((right >>> -16) ^ left) & 0x0000ffff;\n left ^= tmp;\n right ^= (tmp << -16);\n\n tmp = ((left >>> 2) ^ right) & 0x33333333;\n right ^= tmp;\n left ^= (tmp << 2);\n\n tmp = ((right >>> -16) ^ left) & 0x0000ffff;\n left ^= tmp;\n right ^= (tmp << -16);\n\n tmp = ((left >>> 1) ^ right) & 0x55555555;\n right ^= tmp;\n left ^= (tmp << 1);\n\n tmp = ((right >>> 8) ^ left) & 0x00ff00ff;\n left ^= tmp;\n right ^= (tmp << 8);\n\n tmp = ((left >>> 1) ^ right) & 0x55555555;\n right ^= tmp;\n left ^= (tmp << 1);\n\n // right needs to be shifted and OR'd with last four bits of left\n tmp = (left << 8) | ((right >>> 20) & 0x000000f0);\n\n // left needs to be put upside down\n left = ((right << 24) | ((right << 8) & 0xff0000) |\n ((right >>> 8) & 0xff00) | ((right >>> 24) & 0xf0));\n right = tmp;\n\n // now go through and perform these shifts on the left and right keys\n for(var i = 0; i < shifts.length; ++i) {\n //shift the keys either one or two bits to the left\n if(shifts[i]) {\n left = (left << 2) | (left >>> 26);\n right = (right << 2) | (right >>> 26);\n } else {\n left = (left << 1) | (left >>> 27);\n right = (right << 1) | (right >>> 27);\n }\n left &= -0xf;\n right &= -0xf;\n\n // now apply PC-2, in such a way that E is easier when encrypting or\n // decrypting this conversion will look like PC-2 except only the last 6\n // bits of each byte are used rather than 48 consecutive bits and the\n // order of lines will be according to how the S selection functions will\n // be applied: S2, S4, S6, S8, S1, S3, S5, S7\n var lefttmp = (\n pc2bytes0[left >>> 28] | pc2bytes1[(left >>> 24) & 0xf] |\n pc2bytes2[(left >>> 20) & 0xf] | pc2bytes3[(left >>> 16) & 0xf] |\n pc2bytes4[(left >>> 12) & 0xf] | pc2bytes5[(left >>> 8) & 0xf] |\n pc2bytes6[(left >>> 4) & 0xf]);\n var righttmp = (\n pc2bytes7[right >>> 28] | pc2bytes8[(right >>> 24) & 0xf] |\n pc2bytes9[(right >>> 20) & 0xf] | pc2bytes10[(right >>> 16) & 0xf] |\n pc2bytes11[(right >>> 12) & 0xf] | pc2bytes12[(right >>> 8) & 0xf] |\n pc2bytes13[(right >>> 4) & 0xf]);\n tmp = ((righttmp >>> 16) ^ lefttmp) & 0x0000ffff;\n keys[n++] = lefttmp ^ tmp;\n keys[n++] = righttmp ^ (tmp << 16);\n }\n }\n\n return keys;\n}\n\n/**\n * Updates a single block (1 byte) using DES. The update will either\n * encrypt or decrypt the block.\n *\n * @param keys the expanded keys.\n * @param input the input block (an array of 32-bit words).\n * @param output the updated output block.\n * @param decrypt true to decrypt the block, false to encrypt it.\n */\nfunction _updateBlock(keys, input, output, decrypt) {\n // set up loops for single or triple DES\n var iterations = keys.length === 32 ? 3 : 9;\n var looping;\n if(iterations === 3) {\n looping = decrypt ? [30, -2, -2] : [0, 32, 2];\n } else {\n looping = (decrypt ?\n [94, 62, -2, 32, 64, 2, 30, -2, -2] :\n [0, 32, 2, 62, 30, -2, 64, 96, 2]);\n }\n\n var tmp;\n\n var left = input[0];\n var right = input[1];\n\n // first each 64 bit chunk of the message must be permuted according to IP\n tmp = ((left >>> 4) ^ right) & 0x0f0f0f0f;\n right ^= tmp;\n left ^= (tmp << 4);\n\n tmp = ((left >>> 16) ^ right) & 0x0000ffff;\n right ^= tmp;\n left ^= (tmp << 16);\n\n tmp = ((right >>> 2) ^ left) & 0x33333333;\n left ^= tmp;\n right ^= (tmp << 2);\n\n tmp = ((right >>> 8) ^ left) & 0x00ff00ff;\n left ^= tmp;\n right ^= (tmp << 8);\n\n tmp = ((left >>> 1) ^ right) & 0x55555555;\n right ^= tmp;\n left ^= (tmp << 1);\n\n // rotate left 1 bit\n left = ((left << 1) | (left >>> 31));\n right = ((right << 1) | (right >>> 31));\n\n for(var j = 0; j < iterations; j += 3) {\n var endloop = looping[j + 1];\n var loopinc = looping[j + 2];\n\n // now go through and perform the encryption or decryption\n for(var i = looping[j]; i != endloop; i += loopinc) {\n var right1 = right ^ keys[i];\n var right2 = ((right >>> 4) | (right << 28)) ^ keys[i + 1];\n\n // passing these bytes through the S selection functions\n tmp = left;\n left = right;\n right = tmp ^ (\n spfunction2[(right1 >>> 24) & 0x3f] |\n spfunction4[(right1 >>> 16) & 0x3f] |\n spfunction6[(right1 >>> 8) & 0x3f] |\n spfunction8[right1 & 0x3f] |\n spfunction1[(right2 >>> 24) & 0x3f] |\n spfunction3[(right2 >>> 16) & 0x3f] |\n spfunction5[(right2 >>> 8) & 0x3f] |\n spfunction7[right2 & 0x3f]);\n }\n // unreverse left and right\n tmp = left;\n left = right;\n right = tmp;\n }\n\n // rotate right 1 bit\n left = ((left >>> 1) | (left << 31));\n right = ((right >>> 1) | (right << 31));\n\n // now perform IP-1, which is IP in the opposite direction\n tmp = ((left >>> 1) ^ right) & 0x55555555;\n right ^= tmp;\n left ^= (tmp << 1);\n\n tmp = ((right >>> 8) ^ left) & 0x00ff00ff;\n left ^= tmp;\n right ^= (tmp << 8);\n\n tmp = ((right >>> 2) ^ left) & 0x33333333;\n left ^= tmp;\n right ^= (tmp << 2);\n\n tmp = ((left >>> 16) ^ right) & 0x0000ffff;\n right ^= tmp;\n left ^= (tmp << 16);\n\n tmp = ((left >>> 4) ^ right) & 0x0f0f0f0f;\n right ^= tmp;\n left ^= (tmp << 4);\n\n output[0] = left;\n output[1] = right;\n}\n\n/**\n * Deprecated. Instead, use:\n *\n * forge.cipher.createCipher('DES-', key);\n * forge.cipher.createDecipher('DES-', key);\n *\n * Creates a deprecated DES cipher object. This object's mode will default to\n * CBC (cipher-block-chaining).\n *\n * The key may be given as a binary-encoded string of bytes or a byte buffer.\n *\n * @param options the options to use.\n * key the symmetric key to use (64 or 192 bits).\n * output the buffer to write to.\n * decrypt true for decryption, false for encryption.\n * mode the cipher mode to use (default: 'CBC').\n *\n * @return the cipher.\n */\nfunction _createCipher(options) {\n options = options || {};\n var mode = (options.mode || 'CBC').toUpperCase();\n var algorithm = 'DES-' + mode;\n\n var cipher;\n if(options.decrypt) {\n cipher = forge.cipher.createDecipher(algorithm, options.key);\n } else {\n cipher = forge.cipher.createCipher(algorithm, options.key);\n }\n\n // backwards compatible start API\n var start = cipher.start;\n cipher.start = function(iv, options) {\n // backwards compatibility: support second arg as output buffer\n var output = null;\n if(options instanceof forge.util.ByteBuffer) {\n output = options;\n options = {};\n }\n options = options || {};\n options.output = output;\n options.iv = iv;\n start.call(cipher, options);\n };\n\n return cipher;\n}\n","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar toSetLike = require('../internals/to-set-like');\nvar $intersection = require('../internals/set-intersection');\n\n// `Set.prototype.intersection` method\n// https://github.com/tc39/proposal-set-methods\n// TODO: Obsolete version, remove from `core-js@4`\n$({ target: 'Set', proto: true, real: true, forced: true }, {\n intersection: function intersection(other) {\n return call($intersection, this, toSetLike(other));\n }\n});\n","'use strict';\nvar toPrimitive = require('../internals/to-primitive');\nvar isSymbol = require('../internals/is-symbol');\n\n// `ToPropertyKey` abstract operation\n// https://tc39.es/ecma262/#sec-topropertykey\nmodule.exports = function (argument) {\n var key = toPrimitive(argument, 'string');\n return isSymbol(key) ? key : key + '';\n};\n","var Int64 = require('./int64').Int64;\n\nvar splitMessage = require('./split-message').splitMessage;\n\nvar BOOLEAN_TAG = 'boolean';\nvar BYTE_TAG = 'byte';\nvar SHORT_TAG = 'short';\nvar INT_TAG = 'integer';\nvar LONG_TAG = 'long';\nvar BINARY_TAG = 'binary';\nvar STRING_TAG = 'string';\nvar TIMESTAMP_TAG = 'timestamp';\nvar UUID_TAG = 'uuid';\n\n/**\n * @api private\n *\n * @param {Buffer} headers\n */\nfunction parseHeaders(headers) {\n var out = {};\n var position = 0;\n while (position < headers.length) {\n var nameLength = headers.readUInt8(position++);\n var name = headers.slice(position, position + nameLength).toString();\n position += nameLength;\n switch (headers.readUInt8(position++)) {\n case 0 /* boolTrue */:\n out[name] = {\n type: BOOLEAN_TAG,\n value: true\n };\n break;\n case 1 /* boolFalse */:\n out[name] = {\n type: BOOLEAN_TAG,\n value: false\n };\n break;\n case 2 /* byte */:\n out[name] = {\n type: BYTE_TAG,\n value: headers.readInt8(position++)\n };\n break;\n case 3 /* short */:\n out[name] = {\n type: SHORT_TAG,\n value: headers.readInt16BE(position)\n };\n position += 2;\n break;\n case 4 /* integer */:\n out[name] = {\n type: INT_TAG,\n value: headers.readInt32BE(position)\n };\n position += 4;\n break;\n case 5 /* long */:\n out[name] = {\n type: LONG_TAG,\n value: new Int64(headers.slice(position, position + 8))\n };\n position += 8;\n break;\n case 6 /* byteArray */:\n var binaryLength = headers.readUInt16BE(position);\n position += 2;\n out[name] = {\n type: BINARY_TAG,\n value: headers.slice(position, position + binaryLength)\n };\n position += binaryLength;\n break;\n case 7 /* string */:\n var stringLength = headers.readUInt16BE(position);\n position += 2;\n out[name] = {\n type: STRING_TAG,\n value: headers.slice(\n position,\n position + stringLength\n ).toString()\n };\n position += stringLength;\n break;\n case 8 /* timestamp */:\n out[name] = {\n type: TIMESTAMP_TAG,\n value: new Date(\n new Int64(headers.slice(position, position + 8))\n .valueOf()\n )\n };\n position += 8;\n break;\n case 9 /* uuid */:\n var uuidChars = headers.slice(position, position + 16)\n .toString('hex');\n position += 16;\n out[name] = {\n type: UUID_TAG,\n value: uuidChars.substr(0, 8) + '-' +\n uuidChars.substr(8, 4) + '-' +\n uuidChars.substr(12, 4) + '-' +\n uuidChars.substr(16, 4) + '-' +\n uuidChars.substr(20)\n };\n break;\n default:\n throw new Error('Unrecognized header type tag');\n }\n }\n return out;\n}\n\nfunction parseMessage(message) {\n var parsed = splitMessage(message);\n return { headers: parseHeaders(parsed.headers), body: parsed.body };\n}\n\n/**\n * @api private\n */\nmodule.exports = {\n parseMessage: parseMessage\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nexport default class BitrateParameters {\n minBitrateKbps: number;\n maxBitrateKbps: number;\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport BaseConnectionHealthPolicy from './BaseConnectionHealthPolicy';\nimport ConnectionHealthData from './ConnectionHealthData';\nimport ConnectionHealthPolicy from './ConnectionHealthPolicy';\nimport ConnectionHealthPolicyConfiguration from './ConnectionHealthPolicyConfiguration';\n\nexport default class UnusableAudioWarningConnectionHealthPolicy\n extends BaseConnectionHealthPolicy\n implements ConnectionHealthPolicy {\n private coolDownTimeMs: number;\n private pastSamplesToConsider: number;\n private fractionalLoss: number;\n private packetsExpected: number;\n private maximumTimesToWarn: number;\n private warnCount: number;\n private lastWarnTimestampMs: number;\n\n constructor(configuration: ConnectionHealthPolicyConfiguration, data: ConnectionHealthData) {\n super(configuration, data, 'Unusable Audio Warning');\n this.coolDownTimeMs = configuration.cooldownTimeMs;\n this.pastSamplesToConsider = configuration.pastSamplesToConsider;\n this.fractionalLoss = configuration.fractionalLoss;\n this.packetsExpected = configuration.packetsExpected;\n this.maximumTimesToWarn = configuration.maximumTimesToWarn;\n this.lastWarnTimestampMs = 0;\n this.warnCount = 0;\n }\n\n calculateFractionalLoss(): number {\n if (this.currentData.packetsReceivedInLastMinute.length < this.pastSamplesToConsider) {\n return 0;\n }\n const samplesToConsider = this.pastSamplesToConsider;\n\n const totalPacketsExpected = samplesToConsider * this.packetsExpected;\n let totalPacketsReceived = 0;\n for (let i = 0; i < samplesToConsider; i++) {\n totalPacketsReceived += this.currentData.packetsReceivedInLastMinute[i];\n }\n return Math.min(Math.max(1 - totalPacketsReceived / totalPacketsExpected, 0), 1);\n }\n\n health(): number {\n const warnedRecently = Date.now() - this.lastWarnTimestampMs < this.coolDownTimeMs;\n if (warnedRecently) {\n return this.currentHealth;\n }\n const hasHadHighPacketLoss = this.calculateFractionalLoss() >= this.fractionalLoss;\n if (hasHadHighPacketLoss) {\n if (this.currentHealth !== 0) {\n this.lastWarnTimestampMs = Date.now();\n this.warnCount++;\n if (this.warnCount > this.maximumTimesToWarn) {\n return 1;\n }\n }\n return 0;\n }\n return 1;\n }\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport AudioVideoControllerState from '../audiovideocontroller/AudioVideoControllerState';\nimport BrowserBehavior from '../browserbehavior/BrowserBehavior';\nimport Logger from '../logger/Logger';\nimport DefaultTransceiverController from './DefaultTransceiverController';\n\nexport default class VideoOnlyTransceiverController extends DefaultTransceiverController {\n constructor(\n logger: Logger,\n browserBehavior: BrowserBehavior,\n meetingSessionContext?: AudioVideoControllerState\n ) {\n super(logger, browserBehavior, meetingSessionContext);\n }\n\n setupLocalTransceivers(): void {\n if (!this.useTransceivers()) {\n return;\n }\n\n if (!this.defaultMediaStream && typeof MediaStream !== 'undefined') {\n this.defaultMediaStream = new MediaStream();\n }\n\n if (!this._localCameraTransceiver) {\n this._localCameraTransceiver = this.peer.addTransceiver('video', {\n direction: 'inactive',\n streams: [this.defaultMediaStream],\n });\n }\n }\n}\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['elbv2'] = {};\nAWS.ELBv2 = Service.defineService('elbv2', ['2015-12-01']);\nObject.defineProperty(apiLoader.services['elbv2'], '2015-12-01', {\n get: function get() {\n var model = require('../apis/elasticloadbalancingv2-2015-12-01.min.json');\n model.paginators = require('../apis/elasticloadbalancingv2-2015-12-01.paginators.json').pagination;\n model.waiters = require('../apis/elasticloadbalancingv2-2015-12-01.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.ELBv2;\n","var AWS = require('../core');\nvar inherit = AWS.util.inherit;\n\n/**\n * @api private\n */\nAWS.Signers.S3 = inherit(AWS.Signers.RequestSigner, {\n /**\n * When building the stringToSign, these sub resource params should be\n * part of the canonical resource string with their NON-decoded values\n */\n subResources: {\n 'acl': 1,\n 'accelerate': 1,\n 'analytics': 1,\n 'cors': 1,\n 'lifecycle': 1,\n 'delete': 1,\n 'inventory': 1,\n 'location': 1,\n 'logging': 1,\n 'metrics': 1,\n 'notification': 1,\n 'partNumber': 1,\n 'policy': 1,\n 'requestPayment': 1,\n 'replication': 1,\n 'restore': 1,\n 'tagging': 1,\n 'torrent': 1,\n 'uploadId': 1,\n 'uploads': 1,\n 'versionId': 1,\n 'versioning': 1,\n 'versions': 1,\n 'website': 1\n },\n\n // when building the stringToSign, these querystring params should be\n // part of the canonical resource string with their NON-encoded values\n responseHeaders: {\n 'response-content-type': 1,\n 'response-content-language': 1,\n 'response-expires': 1,\n 'response-cache-control': 1,\n 'response-content-disposition': 1,\n 'response-content-encoding': 1\n },\n\n addAuthorization: function addAuthorization(credentials, date) {\n if (!this.request.headers['presigned-expires']) {\n this.request.headers['X-Amz-Date'] = AWS.util.date.rfc822(date);\n }\n\n if (credentials.sessionToken) {\n // presigned URLs require this header to be lowercased\n this.request.headers['x-amz-security-token'] = credentials.sessionToken;\n }\n\n var signature = this.sign(credentials.secretAccessKey, this.stringToSign());\n var auth = 'AWS ' + credentials.accessKeyId + ':' + signature;\n\n this.request.headers['Authorization'] = auth;\n },\n\n stringToSign: function stringToSign() {\n var r = this.request;\n\n var parts = [];\n parts.push(r.method);\n parts.push(r.headers['Content-MD5'] || '');\n parts.push(r.headers['Content-Type'] || '');\n\n // This is the \"Date\" header, but we use X-Amz-Date.\n // The S3 signing mechanism requires us to pass an empty\n // string for this Date header regardless.\n parts.push(r.headers['presigned-expires'] || '');\n\n var headers = this.canonicalizedAmzHeaders();\n if (headers) parts.push(headers);\n parts.push(this.canonicalizedResource());\n\n return parts.join('\\n');\n\n },\n\n canonicalizedAmzHeaders: function canonicalizedAmzHeaders() {\n\n var amzHeaders = [];\n\n AWS.util.each(this.request.headers, function (name) {\n if (name.match(/^x-amz-/i))\n amzHeaders.push(name);\n });\n\n amzHeaders.sort(function (a, b) {\n return a.toLowerCase() < b.toLowerCase() ? -1 : 1;\n });\n\n var parts = [];\n AWS.util.arrayEach.call(this, amzHeaders, function (name) {\n parts.push(name.toLowerCase() + ':' + String(this.request.headers[name]));\n });\n\n return parts.join('\\n');\n\n },\n\n canonicalizedResource: function canonicalizedResource() {\n\n var r = this.request;\n\n var parts = r.path.split('?');\n var path = parts[0];\n var querystring = parts[1];\n\n var resource = '';\n\n if (r.virtualHostedBucket)\n resource += '/' + r.virtualHostedBucket;\n\n resource += path;\n\n if (querystring) {\n\n // collect a list of sub resources and query params that need to be signed\n var resources = [];\n\n AWS.util.arrayEach.call(this, querystring.split('&'), function (param) {\n var name = param.split('=')[0];\n var value = param.split('=')[1];\n if (this.subResources[name] || this.responseHeaders[name]) {\n var subresource = { name: name };\n if (value !== undefined) {\n if (this.subResources[name]) {\n subresource.value = value;\n } else {\n subresource.value = decodeURIComponent(value);\n }\n }\n resources.push(subresource);\n }\n });\n\n resources.sort(function (a, b) { return a.name < b.name ? -1 : 1; });\n\n if (resources.length) {\n\n querystring = [];\n AWS.util.arrayEach(resources, function (res) {\n if (res.value === undefined) {\n querystring.push(res.name);\n } else {\n querystring.push(res.name + '=' + res.value);\n }\n });\n\n resource += '?' + querystring.join('&');\n }\n\n }\n\n return resource;\n\n },\n\n sign: function sign(secret, string) {\n return AWS.util.crypto.hmac(secret, string, 'base64', 'sha1');\n }\n});\n\n/**\n * @api private\n */\nmodule.exports = AWS.Signers.S3;\n","\"use strict\";\n\nexports.__esModule = true;\nexports.default = getStorage;\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction noop() {}\n\nvar noopStorage = {\n getItem: noop,\n setItem: noop,\n removeItem: noop\n};\n\nfunction hasStorage(storageType) {\n if ((typeof self === \"undefined\" ? \"undefined\" : _typeof(self)) !== 'object' || !(storageType in self)) {\n return false;\n }\n\n try {\n var storage = self[storageType];\n var testKey = \"redux-persist \".concat(storageType, \" test\");\n storage.setItem(testKey, 'test');\n storage.getItem(testKey);\n storage.removeItem(testKey);\n } catch (e) {\n if (process.env.NODE_ENV !== 'production') console.warn(\"redux-persist \".concat(storageType, \" test failed, persistence will be disabled.\"));\n return false;\n }\n\n return true;\n}\n\nfunction getStorage(type) {\n var storageType = \"\".concat(type, \"Storage\");\n if (hasStorage(storageType)) return self[storageType];else {\n if (process.env.NODE_ENV !== 'production') {\n console.error(\"redux-persist failed to create sync storage. falling back to noop storage.\");\n }\n\n return noopStorage;\n }\n}","var AWS = require('../core');\nvar util = require('../util');\nvar QueryParamSerializer = require('../query/query_param_serializer');\nvar Shape = require('../model/shape');\nvar populateHostPrefix = require('./helpers').populateHostPrefix;\n\nfunction buildRequest(req) {\n var operation = req.service.api.operations[req.operation];\n var httpRequest = req.httpRequest;\n httpRequest.headers['Content-Type'] =\n 'application/x-www-form-urlencoded; charset=utf-8';\n httpRequest.params = {\n Version: req.service.api.apiVersion,\n Action: operation.name\n };\n\n // convert the request parameters into a list of query params,\n // e.g. Deeply.NestedParam.0.Name=value\n var builder = new QueryParamSerializer();\n builder.serialize(req.params, operation.input, function(name, value) {\n httpRequest.params[name] = value;\n });\n httpRequest.body = util.queryParamsToString(httpRequest.params);\n\n populateHostPrefix(req);\n}\n\nfunction extractError(resp) {\n var data, body = resp.httpResponse.body.toString();\n if (body.match(' {\n for (const task of this.tasksToRunSerially) {\n if (this.getStatus() === TaskStatus.CANCELED) {\n this.logAndThrow(`serial group task ${this.name()} was canceled`);\n }\n try {\n this.logger.info(`serial group task ${this.name()} running subtask ${task.name()}`);\n this.currentTask = task;\n await task.run();\n this.logger.info(`serial group task ${this.name()} completed subtask ${task.name()}`);\n } catch (err) {\n this.logAndThrow(\n `serial group task ${this.name()} was canceled due to subtask ` +\n `${this.currentTask.name()} error: ${err.message}`\n );\n } finally {\n this.currentTask = null;\n }\n }\n this.logger.info(`serial group task ${this.name()} completed`);\n }\n}\n","'use strict';\n// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot\nvar documentAll = typeof document == 'object' && document.all;\n\n// `IsCallable` abstract operation\n// https://tc39.es/ecma262/#sec-iscallable\n// eslint-disable-next-line unicorn/no-typeof-undefined -- required for testing\nmodule.exports = typeof documentAll == 'undefined' && documentAll !== undefined ? function (argument) {\n return typeof argument == 'function' || argument === documentAll;\n} : function (argument) {\n return typeof argument == 'function';\n};\n","\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:!0});var env=require(\"exenv\");require(\"prop-types\");var React=require(\"react\");function _typeof(e){return(_typeof=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e})(e)}function _classCallCheck(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}function _defineProperties(e,t){for(var n=0;n=0;r-=1)this.handlers[r].called||(this.handlers[r].called=!0,this.handlers[r](e));for(var o=n;o>=0;o-=1)this.handlers[o].called=!1}else{(0,this.handlers[n])(e)}}},{key:\"hasHandlers\",value:function(){return this.handlers.length>0}},{key:\"removeHandlers\",value:function(t){for(var n=[],r=this.handlers.length,o=0;o0;var t=this.handlerSets.get(e);return!!t&&t.hasHandlers()}},{key:\"removeHandlers\",value:function(t,n){var r=cloneMap(this.handlerSets);if(!r.has(t))return new e(this.poolName,r);var o=r.get(t).removeHandlers(n);return o.hasHandlers()?r.set(t,o):r.delete(t),new e(this.poolName,r)}}]),e}();_defineProperty(EventPool,\"createByType\",function(e,t,n){var r=new Map;return r.set(t,new EventSet(n)),new EventPool(e,r)});var EventTarget=function(){function e(t){var n=this;_classCallCheck(this,e),_defineProperty(this,\"handlers\",new Map),_defineProperty(this,\"pools\",new Map),_defineProperty(this,\"target\",void 0),_defineProperty(this,\"createEmitter\",function(e){return function(t){n.pools.forEach(function(n){n.dispatchEvent(e,t)})}}),this.target=t}return _createClass(e,[{key:\"addHandlers\",value:function(e,t,n){if(this.pools.has(e)){var r=this.pools.get(e);this.pools.set(e,r.addHandlers(t,n))}else this.pools.set(e,EventPool.createByType(e,t,n));this.handlers.has(t)||this.addTargetHandler(t)}},{key:\"hasHandlers\",value:function(){return this.handlers.size>0}},{key:\"removeHandlers\",value:function(e,t,n){if(this.pools.has(e)){var r=this.pools.get(e).removeHandlers(t,n);r.hasHandlers()?this.pools.set(e,r):this.pools.delete(e);var o=!1;this.pools.forEach(function(e){return o=o||e.hasHandlers(t)}),o||this.removeTargetHandler(t)}}},{key:\"addTargetHandler\",value:function(e){var t=this.createEmitter(e);this.handlers.set(e,t),this.target.addEventListener(e,t,!0)}},{key:\"removeTargetHandler\",value:function(e){this.handlers.has(e)&&(this.target.removeEventListener(e,this.handlers.get(e),!0),this.handlers.delete(e))}}]),e}(),EventStack=function(){function e(){var t=this;_classCallCheck(this,e),_defineProperty(this,\"targets\",new Map),_defineProperty(this,\"getTarget\",function(e){var n=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],r=normalizeTarget(e);if(t.targets.has(r))return t.targets.get(r);if(!n)return null;var o=new EventTarget(r);return t.targets.set(r,o),o}),_defineProperty(this,\"removeTarget\",function(e){t.targets.delete(normalizeTarget(e))})}return _createClass(e,[{key:\"sub\",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(env.canUseDOM){var r=n.target,o=void 0===r?document:r,a=n.pool,s=void 0===a?\"default\":a;this.getTarget(o).addHandlers(s,e,normalizeHandlers(t))}}},{key:\"unsub\",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(env.canUseDOM){var r=n.target,o=void 0===r?document:r,a=n.pool,s=void 0===a?\"default\":a,i=this.getTarget(o,!1);i&&(i.removeHandlers(s,e,normalizeHandlers(t)),i.hasHandlers()||this.removeTarget(o))}}}]),e}(),instance=new EventStack,EventStack$1=function(e){function t(){return _classCallCheck(this,t),_possibleConstructorReturn(this,_getPrototypeOf(t).apply(this,arguments))}return _inherits(t,React.PureComponent),_createClass(t,[{key:\"componentDidMount\",value:function(){this.subscribe(this.props)}},{key:\"componentDidUpdate\",value:function(e){this.unsubscribe(e),this.subscribe(this.props)}},{key:\"componentWillUnmount\",value:function(){this.unsubscribe(this.props)}},{key:\"subscribe\",value:function(e){var t=e.name,n=e.on,r=e.pool,o=e.target;instance.sub(t,n,{pool:r,target:o})}},{key:\"unsubscribe\",value:function(e){var t=e.name,n=e.on,r=e.pool,o=e.target;instance.unsub(t,n,{pool:r,target:o})}},{key:\"render\",value:function(){return null}}]),t}();_defineProperty(EventStack$1,\"defaultProps\",{pool:\"default\",target:\"document\"}),EventStack$1.propTypes={},exports.instance=instance,exports.default=EventStack$1;\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\n/**\n * [[MeetingSessionLifecycleEvent]] indicates the lifecycle status.\n * Add new enums to the bottom. We depend on these numbers for analytics.\n */\nexport enum MeetingSessionLifecycleEvent {\n /**\n * The session is connecting, either to start a new call, or reconnect to an existing one.\n */\n Connecting = 0,\n\n /**\n * The session successfully arrived in the started state either for the first time or\n * due to a change in connection type.\n */\n Started = 1,\n\n /**\n * The session came to a stop, either from leaving or due to a failure.\n */\n Stopped = 2,\n}\n\nexport default MeetingSessionLifecycleEvent;\n","'use strict';\n\n\nconst _has = (obj, key) => {\n return Object.prototype.hasOwnProperty.call(obj, key);\n};\n\nmodule.exports.assign = function (obj /*from1, from2, from3, ...*/) {\n const sources = Array.prototype.slice.call(arguments, 1);\n while (sources.length) {\n const source = sources.shift();\n if (!source) { continue; }\n\n if (typeof source !== 'object') {\n throw new TypeError(source + 'must be non-object');\n }\n\n for (const p in source) {\n if (_has(source, p)) {\n obj[p] = source[p];\n }\n }\n }\n\n return obj;\n};\n\n\n// Join array of chunks to single array.\nmodule.exports.flattenChunks = (chunks) => {\n // calculate data length\n let len = 0;\n\n for (let i = 0, l = chunks.length; i < l; i++) {\n len += chunks[i].length;\n }\n\n // join chunks\n const result = new Uint8Array(len);\n\n for (let i = 0, pos = 0, l = chunks.length; i < l; i++) {\n let chunk = chunks[i];\n result.set(chunk, pos);\n pos += chunk.length;\n }\n\n return result;\n};\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['directconnect'] = {};\nAWS.DirectConnect = Service.defineService('directconnect', ['2012-10-25']);\nObject.defineProperty(apiLoader.services['directconnect'], '2012-10-25', {\n get: function get() {\n var model = require('../apis/directconnect-2012-10-25.min.json');\n model.paginators = require('../apis/directconnect-2012-10-25.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.DirectConnect;\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport DeviceChangeObserver from '../devicechangeobserver/DeviceChangeObserver';\nimport EventController from '../eventcontroller/EventController';\nimport DeviceControllerBasedMediaStreamBroker from '../mediastreambroker/DeviceControllerBasedMediaStreamBroker';\nimport NoOpMediaStreamBroker from '../mediastreambroker/NoOpMediaStreamBroker';\nimport AudioInputDevice from './AudioInputDevice';\nimport RemovableAnalyserNode from './RemovableAnalyserNode';\nimport VideoInputDevice from './VideoInputDevice';\nimport VideoQualitySettings from './VideoQualitySettings';\n\nexport default class NoOpDeviceController\n extends NoOpMediaStreamBroker\n implements DeviceControllerBasedMediaStreamBroker {\n destroyed = false;\n\n constructor(_options?: { enableWebAudio?: boolean }) {\n super();\n }\n\n async destroy(): Promise {\n this.destroyed = true;\n }\n\n listAudioInputDevices(): Promise {\n return Promise.resolve([]);\n }\n\n listVideoInputDevices(): Promise {\n return Promise.resolve([]);\n }\n\n listAudioOutputDevices(): Promise {\n return Promise.resolve([]);\n }\n\n startAudioInput(_device: AudioInputDevice): Promise {\n return Promise.reject();\n }\n\n stopAudioInput(): Promise {\n return Promise.resolve();\n }\n\n startVideoInput(_device: VideoInputDevice): Promise {\n return Promise.reject();\n }\n\n stopVideoInput(): Promise {\n return Promise.resolve();\n }\n\n chooseAudioOutput(_deviceId: string | null): Promise {\n return Promise.reject();\n }\n\n addDeviceChangeObserver(_observer: DeviceChangeObserver): void {}\n\n removeDeviceChangeObserver(_observer: DeviceChangeObserver): void {}\n\n createAnalyserNodeForAudioInput(): RemovableAnalyserNode | null {\n return null;\n }\n\n startVideoPreviewForVideoInput(_element: HTMLVideoElement): void {}\n\n stopVideoPreviewForVideoInput(_element: HTMLVideoElement): void {}\n\n setDeviceLabelTrigger(_trigger: () => Promise): void {}\n\n mixIntoAudioInput(_stream: MediaStream): MediaStreamAudioSourceNode {\n return null;\n }\n\n chooseVideoInputQuality(_width: number, _height: number, _frameRate: number): void {}\n\n getVideoInputQualitySettings(): VideoQualitySettings | null {\n return VideoQualitySettings.VideoDisabled;\n }\n}\n\nexport class NoOpDeviceControllerWithEventController extends NoOpDeviceController {\n eventController: EventController | undefined;\n constructor(eventController?: EventController) {\n super();\n this.eventController = eventController;\n }\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport VideoQualityAdaptationPreference from '../videodownlinkbandwidthpolicy/VideoQualityAdaptationPreference';\n\n/**\n * [[SignalingClientVideoSubscriptionConfiguration]] is an internal representation of\n * `SignalingProtocol.videoSubscriptionConfiguration`\n */\nexport default class SignalingClientVideoSubscriptionConfiguration {\n mid?: string;\n attendeeId?: string;\n streamId?: number;\n groupId?: number;\n priority?: number;\n targetBitrateKbps?: number;\n qualityAdaptationPreference?: VideoQualityAdaptationPreference;\n\n equals(other: this): boolean {\n return (\n other !== undefined &&\n this.mid === other.mid &&\n this.attendeeId === other.attendeeId &&\n this.streamId === other.streamId &&\n this.groupId === other.groupId &&\n this.priority === other.priority &&\n this.targetBitrateKbps === other.targetBitrateKbps &&\n this.qualityAdaptationPreference === other.qualityAdaptationPreference\n );\n }\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nexport default class ConnectionHealthData {\n connectionStartTimestampMs = 0;\n consecutiveStatsWithNoPackets = 0;\n consecutiveStatsWithNoAudioPacketsSent = 0;\n lastPacketLossInboundTimestampMs = 0;\n lastGoodSignalTimestampMs = 0;\n lastWeakSignalTimestampMs = 0;\n lastNoSignalTimestampMs = 0;\n consecutiveMissedPongs = 0;\n packetsReceivedInLastMinute: number[] = [];\n fractionPacketsLostInboundInLastMinute: number[] = [];\n audioSpeakerDelayMs = 0;\n isVideoEncoderHardware = false;\n videoEncodingTimeInMs = 0;\n videoEncodingTimePerFrameInMs = 0;\n cpuLimitationDuration = 0;\n videoInputFps = 0;\n videoEncodeFps = 0;\n\n constructor() {\n this.connectionStartTimestampMs = Date.now();\n this.lastGoodSignalTimestampMs = Date.now();\n }\n private static isTimestampRecent(timestampMs: number, recentDurationMs: number): boolean {\n return Date.now() < timestampMs + recentDurationMs;\n }\n\n setConnectionStartTime(): void {\n this.connectionStartTimestampMs = Date.now();\n this.lastGoodSignalTimestampMs = Date.now();\n }\n\n reset(): void {\n this.connectionStartTimestampMs = 0;\n this.consecutiveStatsWithNoPackets = 0;\n this.consecutiveStatsWithNoAudioPacketsSent = 0;\n this.lastPacketLossInboundTimestampMs = 0;\n this.lastGoodSignalTimestampMs = 0;\n this.lastWeakSignalTimestampMs = 0;\n this.lastNoSignalTimestampMs = 0;\n this.consecutiveMissedPongs = 0;\n this.packetsReceivedInLastMinute = [];\n this.fractionPacketsLostInboundInLastMinute = [];\n this.audioSpeakerDelayMs = 0;\n this.connectionStartTimestampMs = Date.now();\n this.lastGoodSignalTimestampMs = Date.now();\n this.isVideoEncoderHardware = false;\n this.videoEncodingTimeInMs = 0;\n this.videoEncodingTimePerFrameInMs = 0;\n this.cpuLimitationDuration = 0;\n this.videoInputFps = 0;\n this.videoEncodeFps = 0;\n }\n\n isConnectionStartRecent(recentDurationMs: number): boolean {\n return ConnectionHealthData.isTimestampRecent(\n this.connectionStartTimestampMs,\n recentDurationMs\n );\n }\n isLastPacketLossRecent(recentDurationMs: number): boolean {\n return ConnectionHealthData.isTimestampRecent(\n this.lastPacketLossInboundTimestampMs,\n recentDurationMs\n );\n }\n isGoodSignalRecent(recentDurationMs: number): boolean {\n return ConnectionHealthData.isTimestampRecent(this.lastGoodSignalTimestampMs, recentDurationMs);\n }\n isWeakSignalRecent(recentDurationMs: number): boolean {\n return ConnectionHealthData.isTimestampRecent(this.lastWeakSignalTimestampMs, recentDurationMs);\n }\n isNoSignalRecent(recentDurationMs: number): boolean {\n return ConnectionHealthData.isTimestampRecent(this.lastNoSignalTimestampMs, recentDurationMs);\n }\n clone(): ConnectionHealthData {\n const cloned = new ConnectionHealthData();\n cloned.connectionStartTimestampMs = this.connectionStartTimestampMs;\n cloned.consecutiveStatsWithNoPackets = this.consecutiveStatsWithNoPackets;\n cloned.consecutiveStatsWithNoAudioPacketsSent = this.consecutiveStatsWithNoAudioPacketsSent;\n cloned.lastPacketLossInboundTimestampMs = this.lastPacketLossInboundTimestampMs;\n cloned.lastGoodSignalTimestampMs = this.lastGoodSignalTimestampMs;\n cloned.lastWeakSignalTimestampMs = this.lastWeakSignalTimestampMs;\n cloned.lastNoSignalTimestampMs = this.lastNoSignalTimestampMs;\n cloned.consecutiveMissedPongs = this.consecutiveMissedPongs;\n cloned.packetsReceivedInLastMinute = this.packetsReceivedInLastMinute.slice(0);\n cloned.fractionPacketsLostInboundInLastMinute = this.fractionPacketsLostInboundInLastMinute.slice(\n 0\n );\n cloned.audioSpeakerDelayMs = this.audioSpeakerDelayMs;\n cloned.isVideoEncoderHardware = this.isVideoEncoderHardware;\n cloned.videoEncodingTimeInMs = this.videoEncodingTimeInMs;\n cloned.videoEncodingTimePerFrameInMs = this.videoEncodingTimePerFrameInMs;\n cloned.cpuLimitationDuration = this.cpuLimitationDuration;\n cloned.videoInputFps = this.videoInputFps;\n cloned.videoEncodeFps = this.videoEncodeFps;\n return cloned;\n }\n setConsecutiveMissedPongs(pongs: number): void {\n this.consecutiveMissedPongs = pongs;\n }\n setConsecutiveStatsWithNoPackets(stats: number): void {\n this.consecutiveStatsWithNoPackets = stats;\n }\n setConsecutiveStatsWithNoAudioPacketsSent(stats: number): void {\n this.consecutiveStatsWithNoAudioPacketsSent = stats;\n }\n setLastPacketLossInboundTimestampMs(timeStamp: number): void {\n this.lastPacketLossInboundTimestampMs = timeStamp;\n }\n setLastNoSignalTimestampMs(timeStamp: number): void {\n this.lastNoSignalTimestampMs = timeStamp;\n }\n setLastWeakSignalTimestampMs(timeStamp: number): void {\n this.lastWeakSignalTimestampMs = timeStamp;\n }\n setLastGoodSignalTimestampMs(timeStamp: number): void {\n this.lastGoodSignalTimestampMs = timeStamp;\n }\n setAudioSpeakerDelayMs(delayMs: number): void {\n this.audioSpeakerDelayMs = delayMs;\n }\n setIsVideoEncoderHardware(isHardware: boolean): void {\n this.isVideoEncoderHardware = isHardware;\n }\n setVideoEncodingTimeInMs(stats: number): void {\n this.videoEncodingTimeInMs = stats;\n }\n setVideoEncodingTimePerFrameInMs(stats: number): void {\n this.videoEncodingTimePerFrameInMs = stats;\n }\n setCpuLimitationDuration(stats: number): void {\n this.cpuLimitationDuration = stats;\n }\n setVideoInputFps(stats: number): void {\n this.videoInputFps = stats;\n }\n setVideoEncodeFps(stats: number): void {\n this.videoEncodeFps = stats;\n }\n}\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\nconst base64 = require('base64-js')\nconst ieee754 = require('ieee754')\nconst customInspectSymbol =\n (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation\n ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n : null\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nconst K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Print warning and recommend using `buffer` v4.x which has an Object\n * 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 * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n typeof console.error === 'function') {\n console.error(\n 'This browser lacks typed array (Uint8Array) support which is required by ' +\n '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n )\n}\n\nfunction typedArraySupport () {\n // Can typed array instances can be augmented?\n try {\n const arr = new Uint8Array(1)\n const proto = { foo: function () { return 42 } }\n Object.setPrototypeOf(proto, Uint8Array.prototype)\n Object.setPrototypeOf(arr, proto)\n return arr.foo() === 42\n } catch (e) {\n return false\n }\n}\n\nObject.defineProperty(Buffer.prototype, 'parent', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.buffer\n }\n})\n\nObject.defineProperty(Buffer.prototype, 'offset', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.byteOffset\n }\n})\n\nfunction createBuffer (length) {\n if (length > K_MAX_LENGTH) {\n throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n }\n // Return an augmented `Uint8Array` instance\n const buf = new Uint8Array(length)\n Object.setPrototypeOf(buf, Buffer.prototype)\n return buf\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 // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new TypeError(\n 'The \"string\" argument must be of type string. Received type number'\n )\n }\n return allocUnsafe(arg)\n }\n return from(arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n if (typeof value === 'string') {\n return fromString(value, encodingOrOffset)\n }\n\n if (ArrayBuffer.isView(value)) {\n return fromArrayView(value)\n }\n\n if (value == null) {\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n }\n\n if (isInstance(value, ArrayBuffer) ||\n (value && isInstance(value.buffer, ArrayBuffer))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof SharedArrayBuffer !== 'undefined' &&\n (isInstance(value, SharedArrayBuffer) ||\n (value && isInstance(value.buffer, SharedArrayBuffer)))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof value === 'number') {\n throw new TypeError(\n 'The \"value\" argument must not be of type number. Received type number'\n )\n }\n\n const valueOf = value.valueOf && value.valueOf()\n if (valueOf != null && valueOf !== value) {\n return Buffer.from(valueOf, encodingOrOffset, length)\n }\n\n const b = fromObject(value)\n if (b) return b\n\n if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n typeof value[Symbol.toPrimitive] === 'function') {\n return Buffer.from(value[Symbol.toPrimitive]('string'), encodingOrOffset, length)\n }\n\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\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(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nObject.setPrototypeOf(Buffer.prototype, Uint8Array.prototype)\nObject.setPrototypeOf(Buffer, Uint8Array)\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be of type number')\n } else if (size < 0) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n}\n\nfunction alloc (size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(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 interpreted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(size).fill(fill, encoding)\n : createBuffer(size).fill(fill)\n }\n return createBuffer(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(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n assertSize(size)\n return createBuffer(size < 0 ? 0 : checked(size) | 0)\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(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(size)\n}\n\nfunction fromString (string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n\n const length = byteLength(string, encoding) | 0\n let buf = createBuffer(length)\n\n const actual = buf.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 buf = buf.slice(0, actual)\n }\n\n return buf\n}\n\nfunction fromArrayLike (array) {\n const length = array.length < 0 ? 0 : checked(array.length) | 0\n const buf = createBuffer(length)\n for (let i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255\n }\n return buf\n}\n\nfunction fromArrayView (arrayView) {\n if (isInstance(arrayView, Uint8Array)) {\n const copy = new Uint8Array(arrayView)\n return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)\n }\n return fromArrayLike(arrayView)\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\"offset\" is outside of buffer bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\"length\" is outside of buffer bounds')\n }\n\n let buf\n if (byteOffset === undefined && length === undefined) {\n buf = new Uint8Array(array)\n } else if (length === undefined) {\n buf = new Uint8Array(array, byteOffset)\n } else {\n buf = new Uint8Array(array, byteOffset, length)\n }\n\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(buf, Buffer.prototype)\n\n return buf\n}\n\nfunction fromObject (obj) {\n if (Buffer.isBuffer(obj)) {\n const len = checked(obj.length) | 0\n const buf = createBuffer(len)\n\n if (buf.length === 0) {\n return buf\n }\n\n obj.copy(buf, 0, 0, len)\n return buf\n }\n\n if (obj.length !== undefined) {\n if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n return createBuffer(0)\n }\n return fromArrayLike(obj)\n }\n\n if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n return fromArrayLike(obj.data)\n }\n}\n\nfunction checked (length) {\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= K_MAX_LENGTH) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + K_MAX_LENGTH.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 === true &&\n b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n}\n\nBuffer.compare = function compare (a, b) {\n if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)\n if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError(\n 'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n )\n }\n\n if (a === b) return 0\n\n let x = a.length\n let y = b.length\n\n for (let 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 (!Array.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 let 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 const buffer = Buffer.allocUnsafe(length)\n let pos = 0\n for (i = 0; i < list.length; ++i) {\n let buf = list[i]\n if (isInstance(buf, Uint8Array)) {\n if (pos + buf.length > buffer.length) {\n if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf)\n buf.copy(buffer, pos)\n } else {\n Uint8Array.prototype.set.call(\n buffer,\n buf,\n pos\n )\n }\n } else if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n } else {\n buf.copy(buffer, pos)\n }\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 (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n throw new TypeError(\n 'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n 'Received type ' + typeof string\n )\n }\n\n const len = string.length\n const mustMatch = (arguments.length > 2 && arguments[2] === true)\n if (!mustMatch && len === 0) return 0\n\n // Use a for loop to avoid recursion\n let 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 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) {\n return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n }\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n let 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 coercion 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// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n const i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n const len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (let i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n const len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (let 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 const len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (let 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 const length = this.length\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.toLocaleString = Buffer.prototype.toString\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 let str = ''\n const max = exports.INSPECT_MAX_BYTES\n str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\n if (this.length > max) str += ' ... '\n return ''\n}\nif (customInspectSymbol) {\n Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (isInstance(target, Uint8Array)) {\n target = Buffer.from(target, target.offset, target.byteLength)\n }\n if (!Buffer.isBuffer(target)) {\n throw new TypeError(\n 'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n 'Received type ' + (typeof target)\n )\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 let x = thisEnd - thisStart\n let y = end - start\n const len = Math.min(x, y)\n\n const thisCopy = this.slice(thisStart, thisEnd)\n const targetCopy = target.slice(start, end)\n\n for (let 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 (numberIsNaN(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 (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 let indexSize = 1\n let arrLength = arr.length\n let 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 let i\n if (dir) {\n let 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 let found = true\n for (let 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 const 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 const strLen = string.length\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n let i\n for (i = 0; i < length; ++i) {\n const parsed = parseInt(string.substr(i * 2, 2), 16)\n if (numberIsNaN(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 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 } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n const 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 let 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 case 'latin1':\n case 'binary':\n return asciiWrite(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 const res = []\n\n let i = start\n while (i < end) {\n const firstByte = buf[i]\n let codePoint = null\n let bytesPerSequence = (firstByte > 0xEF)\n ? 4\n : (firstByte > 0xDF)\n ? 3\n : (firstByte > 0xBF)\n ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n let 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\nconst MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n const 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 let res = ''\n let 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 let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n const len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n let out = ''\n for (let i = start; i < end; ++i) {\n out += hexSliceLookupTable[buf[i]]\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n const bytes = buf.slice(start, end)\n let res = ''\n // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n for (let i = 0; i < bytes.length - 1; 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 const 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 const newBuf = this.subarray(start, end)\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(newBuf, Buffer.prototype)\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 =\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 let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUintBE =\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 let val = this[offset + --byteLength]\n let mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUint8 =\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUint16LE =\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUint16BE =\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUint32LE =\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n offset = offset >>> 0\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 =\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n offset = offset >>> 0\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.readBigUInt64LE = defineBigIntMethod(function readBigUInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const lo = first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24\n\n const hi = this[++offset] +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n last * 2 ** 24\n\n return BigInt(lo) + (BigInt(hi) << BigInt(32))\n})\n\nBuffer.prototype.readBigUInt64BE = defineBigIntMethod(function readBigUInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const hi = first * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n const lo = this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last\n\n return (BigInt(hi) << BigInt(32)) + BigInt(lo)\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 let val = this[offset]\n let mul = 1\n let 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 let i = byteLength\n let mul = 1\n let 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 offset = offset >>> 0\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 offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n offset = offset >>> 0\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 offset = offset >>> 0\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.readBigInt64LE = defineBigIntMethod(function readBigInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = this[offset + 4] +\n this[offset + 5] * 2 ** 8 +\n this[offset + 6] * 2 ** 16 +\n (last << 24) // Overflow\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24)\n})\n\nBuffer.prototype.readBigInt64BE = defineBigIntMethod(function readBigInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = (first << 24) + // Overflow\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last)\n})\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n offset = offset >>> 0\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 offset = offset >>> 0\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 offset = offset >>> 0\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 offset = offset >>> 0\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 =\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let mul = 1\n let 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 =\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let i = byteLength - 1\n let 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 =\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 this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeUint16LE =\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 this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeUint16BE =\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 this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeUint32LE =\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 this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeUint32BE =\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 this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nfunction wrtBigUInt64LE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n return offset\n}\n\nfunction wrtBigUInt64BE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset + 7] = lo\n lo = lo >> 8\n buf[offset + 6] = lo\n lo = lo >> 8\n buf[offset + 5] = lo\n lo = lo >> 8\n buf[offset + 4] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset + 3] = hi\n hi = hi >> 8\n buf[offset + 2] = hi\n hi = hi >> 8\n buf[offset + 1] = hi\n hi = hi >> 8\n buf[offset] = hi\n return offset + 8\n}\n\nBuffer.prototype.writeBigUInt64LE = defineBigIntMethod(function writeBigUInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeBigUInt64BE = defineBigIntMethod(function writeBigUInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = 0\n let mul = 1\n let 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 const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = byteLength - 1\n let mul = 1\n let 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 (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 this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\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 this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\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 this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\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 this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeBigInt64LE = defineBigIntMethod(function writeBigInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nBuffer.prototype.writeBigInt64BE = defineBigIntMethod(function writeBigInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\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 value = +value\n offset = offset >>> 0\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 value = +value\n offset = offset >>> 0\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 (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\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('Index out of range')\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 const len = end - start\n\n if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n // Use built-in when available, missing from IE11\n this.copyWithin(targetStart, start, end)\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, end),\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 (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 if (val.length === 1) {\n const code = val.charCodeAt(0)\n if ((encoding === 'utf8' && code < 128) ||\n encoding === 'latin1') {\n // Fast path: If `val` fits into a single byte, use that numeric value.\n val = code\n }\n }\n } else if (typeof val === 'number') {\n val = val & 255\n } else if (typeof val === 'boolean') {\n val = Number(val)\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 let i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n const bytes = Buffer.isBuffer(val)\n ? val\n : Buffer.from(val, encoding)\n const len = bytes.length\n if (len === 0) {\n throw new TypeError('The value \"' + val +\n '\" is invalid for argument \"value\"')\n }\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// CUSTOM ERRORS\n// =============\n\n// Simplified versions from Node, changed for Buffer-only usage\nconst errors = {}\nfunction E (sym, getMessage, Base) {\n errors[sym] = class NodeError extends Base {\n constructor () {\n super()\n\n Object.defineProperty(this, 'message', {\n value: getMessage.apply(this, arguments),\n writable: true,\n configurable: true\n })\n\n // Add the error code to the name to include it in the stack trace.\n this.name = `${this.name} [${sym}]`\n // Access the stack to generate the error message including the error code\n // from the name.\n this.stack // eslint-disable-line no-unused-expressions\n // Reset the name to the actual name.\n delete this.name\n }\n\n get code () {\n return sym\n }\n\n set code (value) {\n Object.defineProperty(this, 'code', {\n configurable: true,\n enumerable: true,\n value,\n writable: true\n })\n }\n\n toString () {\n return `${this.name} [${sym}]: ${this.message}`\n }\n }\n}\n\nE('ERR_BUFFER_OUT_OF_BOUNDS',\n function (name) {\n if (name) {\n return `${name} is outside of buffer bounds`\n }\n\n return 'Attempt to access memory outside buffer bounds'\n }, RangeError)\nE('ERR_INVALID_ARG_TYPE',\n function (name, actual) {\n return `The \"${name}\" argument must be of type number. Received type ${typeof actual}`\n }, TypeError)\nE('ERR_OUT_OF_RANGE',\n function (str, range, input) {\n let msg = `The value of \"${str}\" is out of range.`\n let received = input\n if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) {\n received = addNumericalSeparator(String(input))\n } else if (typeof input === 'bigint') {\n received = String(input)\n if (input > BigInt(2) ** BigInt(32) || input < -(BigInt(2) ** BigInt(32))) {\n received = addNumericalSeparator(received)\n }\n received += 'n'\n }\n msg += ` It must be ${range}. Received ${received}`\n return msg\n }, RangeError)\n\nfunction addNumericalSeparator (val) {\n let res = ''\n let i = val.length\n const start = val[0] === '-' ? 1 : 0\n for (; i >= start + 4; i -= 3) {\n res = `_${val.slice(i - 3, i)}${res}`\n }\n return `${val.slice(0, i)}${res}`\n}\n\n// CHECK FUNCTIONS\n// ===============\n\nfunction checkBounds (buf, offset, byteLength) {\n validateNumber(offset, 'offset')\n if (buf[offset] === undefined || buf[offset + byteLength] === undefined) {\n boundsError(offset, buf.length - (byteLength + 1))\n }\n}\n\nfunction checkIntBI (value, min, max, buf, offset, byteLength) {\n if (value > max || value < min) {\n const n = typeof min === 'bigint' ? 'n' : ''\n let range\n if (byteLength > 3) {\n if (min === 0 || min === BigInt(0)) {\n range = `>= 0${n} and < 2${n} ** ${(byteLength + 1) * 8}${n}`\n } else {\n range = `>= -(2${n} ** ${(byteLength + 1) * 8 - 1}${n}) and < 2 ** ` +\n `${(byteLength + 1) * 8 - 1}${n}`\n }\n } else {\n range = `>= ${min}${n} and <= ${max}${n}`\n }\n throw new errors.ERR_OUT_OF_RANGE('value', range, value)\n }\n checkBounds(buf, offset, byteLength)\n}\n\nfunction validateNumber (value, name) {\n if (typeof value !== 'number') {\n throw new errors.ERR_INVALID_ARG_TYPE(name, 'number', value)\n }\n}\n\nfunction boundsError (value, length, type) {\n if (Math.floor(value) !== value) {\n validateNumber(value, type)\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset', 'an integer', value)\n }\n\n if (length < 0) {\n throw new errors.ERR_BUFFER_OUT_OF_BOUNDS()\n }\n\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset',\n `>= ${type ? 1 : 0} and <= ${length}`,\n value)\n}\n\n// HELPER FUNCTIONS\n// ================\n\nconst INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node takes equal signs as end of the Base64 encoding\n str = str.split('=')[0]\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = str.trim().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 utf8ToBytes (string, units) {\n units = units || Infinity\n let codePoint\n const length = string.length\n let leadSurrogate = null\n const bytes = []\n\n for (let 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 const byteArray = []\n for (let 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 let c, hi, lo\n const byteArray = []\n for (let 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 let i\n for (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\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance (obj, type) {\n return obj instanceof type ||\n (obj != null && obj.constructor != null && obj.constructor.name != null &&\n obj.constructor.name === type.name)\n}\nfunction numberIsNaN (obj) {\n // For IE11 support\n return obj !== obj // eslint-disable-line no-self-compare\n}\n\n// Create lookup table for `toString('hex')`\n// See: https://github.com/feross/buffer/issues/219\nconst hexSliceLookupTable = (function () {\n const alphabet = '0123456789abcdef'\n const table = new Array(256)\n for (let i = 0; i < 16; ++i) {\n const i16 = i * 16\n for (let j = 0; j < 16; ++j) {\n table[i16 + j] = alphabet[i] + alphabet[j]\n }\n }\n return table\n})()\n\n// Return not function with Error if BigInt not supported\nfunction defineBigIntMethod (fn) {\n return typeof BigInt === 'undefined' ? BufferBigIntNotDefined : fn\n}\n\nfunction BufferBigIntNotDefined () {\n throw new Error('BigInt not supported')\n}\n","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PushNotification = void 0;\nconst defaultDuration = 3000;\nclass PushNotification {\n constructor(op) {\n this.title = op.title;\n this.subtitle = op.subtitle;\n this.message = op.message;\n this.theme = op.theme;\n this.id = Math.random();\n this.styling = op.styling;\n this.closeButton = op.closeButton;\n this.onClick = op.onClick;\n }\n}\nexports.PushNotification = PushNotification;\nclass Storage {\n constructor() {\n this.Storage = [];\n this.Listener = () => this.Storage;\n this.popAndPush = (NotificationId) => {\n let i = 0;\n while (i < this.Storage.length) {\n if (this.Storage[i].id === NotificationId) {\n this.Storage.splice(i, 1);\n }\n else {\n ++i;\n }\n }\n this.Listener(this.Storage);\n };\n this.setTimer = (NotificationId, duration) => {\n setTimeout(() => this.popAndPush(NotificationId), duration);\n };\n this.addListener = (listener) => {\n this.Listener = listener;\n };\n this.addNativeNotification = (options) => __awaiter(this, void 0, void 0, function* () {\n const { title, subtitle, message, duration, icon, vibrate, silent, onClick } = options;\n if (Notification.permission === 'default' || Notification.permission === 'denied') {\n yield Notification.requestPermission();\n }\n if (Notification.permission === 'granted') {\n const not = new Notification(title, {\n body: message,\n data: subtitle,\n icon,\n vibrate,\n silent\n });\n not.onclick = onClick || null;\n setTimeout(not.close.bind(not), duration || defaultDuration);\n }\n });\n this.addWebNotification = (options) => {\n const { title, subtitle, message, theme, duration, backgroundBottom, backgroundTop, colorBottom, colorTop, closeButton, onClick } = options;\n const styling = {\n backgroundTop,\n backgroundBottom,\n colorTop,\n colorBottom\n };\n const newNotification = new PushNotification({ title, subtitle, message, theme, styling, closeButton, onClick });\n this.Storage.push(newNotification);\n this.setTimer(newNotification.id, duration || defaultDuration);\n this.Listener(this.Storage);\n };\n this.addNotification = (options) => __awaiter(this, void 0, void 0, function* () {\n const { native } = options;\n if (native) {\n return this.addNativeNotification(options);\n }\n return this.addWebNotification(options);\n });\n }\n}\nexports.default = new Storage();\n","/**\n * Message Digest Algorithm 5 with 128-bit digest (MD5) implementation.\n *\n * @author Dave Longley\n *\n * Copyright (c) 2010-2014 Digital Bazaar, Inc.\n */\nvar forge = require('./forge');\nrequire('./md');\nrequire('./util');\n\nvar md5 = module.exports = forge.md5 = forge.md5 || {};\nforge.md.md5 = forge.md.algorithms.md5 = md5;\n\n/**\n * Creates an MD5 message digest object.\n *\n * @return a message digest object.\n */\nmd5.create = function() {\n // do initialization as necessary\n if(!_initialized) {\n _init();\n }\n\n // MD5 state contains four 32-bit integers\n var _state = null;\n\n // input buffer\n var _input = forge.util.createBuffer();\n\n // used for word storage\n var _w = new Array(16);\n\n // message digest object\n var md = {\n algorithm: 'md5',\n blockLength: 64,\n digestLength: 16,\n // 56-bit length of message so far (does not including padding)\n messageLength: 0,\n // true message length\n fullMessageLength: null,\n // size of message length in bytes\n messageLengthSize: 8\n };\n\n /**\n * Starts the digest.\n *\n * @return this digest object.\n */\n md.start = function() {\n // up to 56-bit message length for convenience\n md.messageLength = 0;\n\n // full message length (set md.messageLength64 for backwards-compatibility)\n md.fullMessageLength = md.messageLength64 = [];\n var int32s = md.messageLengthSize / 4;\n for(var i = 0; i < int32s; ++i) {\n md.fullMessageLength.push(0);\n }\n _input = forge.util.createBuffer();\n _state = {\n h0: 0x67452301,\n h1: 0xEFCDAB89,\n h2: 0x98BADCFE,\n h3: 0x10325476\n };\n return md;\n };\n // start digest automatically for first time\n md.start();\n\n /**\n * Updates the digest with the given message input. The given input can\n * treated as raw input (no encoding will be applied) or an encoding of\n * 'utf8' maybe given to encode the input using UTF-8.\n *\n * @param msg the message input to update with.\n * @param encoding the encoding to use (default: 'raw', other: 'utf8').\n *\n * @return this digest object.\n */\n md.update = function(msg, encoding) {\n if(encoding === 'utf8') {\n msg = forge.util.encodeUtf8(msg);\n }\n\n // update message length\n var len = msg.length;\n md.messageLength += len;\n len = [(len / 0x100000000) >>> 0, len >>> 0];\n for(var i = md.fullMessageLength.length - 1; i >= 0; --i) {\n md.fullMessageLength[i] += len[1];\n len[1] = len[0] + ((md.fullMessageLength[i] / 0x100000000) >>> 0);\n md.fullMessageLength[i] = md.fullMessageLength[i] >>> 0;\n len[0] = (len[1] / 0x100000000) >>> 0;\n }\n\n // add bytes to input buffer\n _input.putBytes(msg);\n\n // process bytes\n _update(_state, _w, _input);\n\n // compact input buffer every 2K or if empty\n if(_input.read > 2048 || _input.length() === 0) {\n _input.compact();\n }\n\n return md;\n };\n\n /**\n * Produces the digest.\n *\n * @return a byte buffer containing the digest value.\n */\n md.digest = function() {\n /* Note: Here we copy the remaining bytes in the input buffer and\n add the appropriate MD5 padding. Then we do the final update\n on a copy of the state so that if the user wants to get\n intermediate digests they can do so. */\n\n /* Determine the number of bytes that must be added to the message\n to ensure its length is congruent to 448 mod 512. In other words,\n the data to be digested must be a multiple of 512 bits (or 128 bytes).\n This data includes the message, some padding, and the length of the\n message. Since the length of the message will be encoded as 8 bytes (64\n bits), that means that the last segment of the data must have 56 bytes\n (448 bits) of message and padding. Therefore, the length of the message\n plus the padding must be congruent to 448 mod 512 because\n 512 - 128 = 448.\n\n In order to fill up the message length it must be filled with\n padding that begins with 1 bit followed by all 0 bits. Padding\n must *always* be present, so if the message length is already\n congruent to 448 mod 512, then 512 padding bits must be added. */\n\n var finalBlock = forge.util.createBuffer();\n finalBlock.putBytes(_input.bytes());\n\n // compute remaining size to be digested (include message length size)\n var remaining = (\n md.fullMessageLength[md.fullMessageLength.length - 1] +\n md.messageLengthSize);\n\n // add padding for overflow blockSize - overflow\n // _padding starts with 1 byte with first bit is set (byte value 128), then\n // there may be up to (blockSize - 1) other pad bytes\n var overflow = remaining & (md.blockLength - 1);\n finalBlock.putBytes(_padding.substr(0, md.blockLength - overflow));\n\n // serialize message length in bits in little-endian order; since length\n // is stored in bytes we multiply by 8 and add carry\n var bits, carry = 0;\n for(var i = md.fullMessageLength.length - 1; i >= 0; --i) {\n bits = md.fullMessageLength[i] * 8 + carry;\n carry = (bits / 0x100000000) >>> 0;\n finalBlock.putInt32Le(bits >>> 0);\n }\n\n var s2 = {\n h0: _state.h0,\n h1: _state.h1,\n h2: _state.h2,\n h3: _state.h3\n };\n _update(s2, _w, finalBlock);\n var rval = forge.util.createBuffer();\n rval.putInt32Le(s2.h0);\n rval.putInt32Le(s2.h1);\n rval.putInt32Le(s2.h2);\n rval.putInt32Le(s2.h3);\n return rval;\n };\n\n return md;\n};\n\n// padding, constant tables for calculating md5\nvar _padding = null;\nvar _g = null;\nvar _r = null;\nvar _k = null;\nvar _initialized = false;\n\n/**\n * Initializes the constant tables.\n */\nfunction _init() {\n // create padding\n _padding = String.fromCharCode(128);\n _padding += forge.util.fillString(String.fromCharCode(0x00), 64);\n\n // g values\n _g = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 1, 6, 11, 0, 5, 10, 15, 4, 9, 14, 3, 8, 13, 2, 7, 12,\n 5, 8, 11, 14, 1, 4, 7, 10, 13, 0, 3, 6, 9, 12, 15, 2,\n 0, 7, 14, 5, 12, 3, 10, 1, 8, 15, 6, 13, 4, 11, 2, 9];\n\n // rounds table\n _r = [\n 7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22,\n 5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20,\n 4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23,\n 6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21];\n\n // get the result of abs(sin(i + 1)) as a 32-bit integer\n _k = new Array(64);\n for(var i = 0; i < 64; ++i) {\n _k[i] = Math.floor(Math.abs(Math.sin(i + 1)) * 0x100000000);\n }\n\n // now initialized\n _initialized = true;\n}\n\n/**\n * Updates an MD5 state with the given byte buffer.\n *\n * @param s the MD5 state to update.\n * @param w the array to use to store words.\n * @param bytes the byte buffer to update with.\n */\nfunction _update(s, w, bytes) {\n // consume 512 bit (64 byte) chunks\n var t, a, b, c, d, f, r, i;\n var len = bytes.length();\n while(len >= 64) {\n // initialize hash value for this chunk\n a = s.h0;\n b = s.h1;\n c = s.h2;\n d = s.h3;\n\n // round 1\n for(i = 0; i < 16; ++i) {\n w[i] = bytes.getInt32Le();\n f = d ^ (b & (c ^ d));\n t = (a + f + _k[i] + w[i]);\n r = _r[i];\n a = d;\n d = c;\n c = b;\n b += (t << r) | (t >>> (32 - r));\n }\n // round 2\n for(; i < 32; ++i) {\n f = c ^ (d & (b ^ c));\n t = (a + f + _k[i] + w[_g[i]]);\n r = _r[i];\n a = d;\n d = c;\n c = b;\n b += (t << r) | (t >>> (32 - r));\n }\n // round 3\n for(; i < 48; ++i) {\n f = b ^ c ^ d;\n t = (a + f + _k[i] + w[_g[i]]);\n r = _r[i];\n a = d;\n d = c;\n c = b;\n b += (t << r) | (t >>> (32 - r));\n }\n // round 4\n for(; i < 64; ++i) {\n f = c ^ (b | ~d);\n t = (a + f + _k[i] + w[_g[i]]);\n r = _r[i];\n a = d;\n d = c;\n c = b;\n b += (t << r) | (t >>> (32 - r));\n }\n\n // update hash state\n s.h0 = (s.h0 + a) | 0;\n s.h1 = (s.h1 + b) | 0;\n s.h2 = (s.h2 + c) | 0;\n s.h3 = (s.h3 + d) | 0;\n\n len -= 64;\n }\n}\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['forecastservice'] = {};\nAWS.ForecastService = Service.defineService('forecastservice', ['2018-06-26']);\nObject.defineProperty(apiLoader.services['forecastservice'], '2018-06-26', {\n get: function get() {\n var model = require('../apis/forecast-2018-06-26.min.json');\n model.paginators = require('../apis/forecast-2018-06-26.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.ForecastService;\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport VideoElementFactory from './VideoElementFactory';\n\nexport default class NoOpVideoElementFactory implements VideoElementFactory {\n create(): HTMLVideoElement {\n const element = {\n clientWidth: 400,\n clientHeight: 300,\n width: 400,\n height: 300,\n videoWidth: 400,\n videoHeight: 300,\n style: {\n transform: '',\n },\n hasAttribute: (): boolean => {\n return false;\n },\n removeAttribute: (): void => {},\n setAttribute: (): void => {},\n srcObject: false,\n paused: true,\n pause: (): void => {\n element.paused = true;\n },\n play: (): Promise => {\n element.paused = false;\n return Promise.resolve();\n },\n };\n // @ts-ignore\n return element;\n }\n}\n","'use strict';\n// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = require('../internals/indexed-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nmodule.exports = function (it) {\n return IndexedObject(requireObjectCoercible(it));\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport ModelShape from '../modelspec/ModelShape';\nimport ModelSpec from '../modelspec/ModelSpec';\n\n/**\n * A builder class to instantiate a model spec.\n */\nexport default class ModelSpecBuilder {\n private path: string = null;\n private input: ModelShape = null;\n private output: ModelShape = null;\n static builder(): ModelSpecBuilder {\n return new ModelSpecBuilder();\n }\n\n /**\n * Set up the builder to use the default model implementation.\n *\n * Members of this interface can change without a major version bump to accommodate new browser\n * bugs and capabilities. If you extend this type, you might need to rework your code for new minor\n * versions of this library.\n * @returns a reference to the current builder.\n */\n withDefaultModel(): ModelSpecBuilder {\n return this.withSelfieSegmentationDefaults();\n }\n\n /**\n * Set up the builder to use the defaults for selfie segmentation model.\n * @returns the builder to allow for fluent API (e.g., ModelSpecBuilder.withSelfieSegmentationDefaults().build()).\n */\n withSelfieSegmentationDefaults(): ModelSpecBuilder {\n const SELFIE_MODEL_INPUT_SHAPE: ModelShape = {\n height: 144,\n width: 256,\n range: [0, 1],\n channels: 3,\n };\n\n const SELFIE_MODEL_OUTPUT_SHAPE: ModelShape = {\n height: 144,\n width: 256,\n range: [0, 1],\n channels: 1,\n };\n\n const DEFAULT_SELFIE_MODEL_PATH =\n 'https://static.sdkassets.chime.aws/bgblur/models/selfie_segmentation_landscape.tflite';\n\n this.path = DEFAULT_SELFIE_MODEL_PATH;\n this.input = SELFIE_MODEL_INPUT_SHAPE;\n this.output = SELFIE_MODEL_OUTPUT_SHAPE;\n return this;\n }\n\n /**\n * A method to override the path to the segmentation model.\n * @param path A function that returns the path to the segmentation model.\n * @returns the builder to allow for fluent API (e.g., ModelSpecBuilder.builder().withPath(\"some path\").build()).\n */\n withPath(path: string): ModelSpecBuilder {\n this.path = path;\n return this;\n }\n\n /**\n * A method to override the input shape to the segmentation model.\n * @param input An object that defines input shape of the segmentation model.\n * @returns the builder to allow for fluent API (e.g., ModelSpecBuilder.builder().withInput({}).build()).\n */\n withInput(input: ModelShape): ModelSpecBuilder {\n this.input = input;\n return this;\n }\n\n /**\n * A method to override the output shape to the segmentation model.\n * @param input An object that defines input shape of the segmentation model.\n * @returns the builder to allow for fluent API (e.g., ModelSpecBuilder.builder().withOutput({}).build()).\n */\n withOutput(output: ModelShape): ModelSpecBuilder {\n this.output = output;\n return this;\n }\n\n /**\n * Validate that inputs to the model spec are valid.\n */\n private validate(): void {\n if (!this.path) {\n throw new Error('model spec path is not set');\n }\n\n if (!this.input) {\n throw new Error('model spec input is not set');\n }\n\n if (!this.output) {\n throw new Error('model spec output is not set');\n }\n }\n\n /**\n * A method that returns an instantiated object that implements the ModelSpec interface with values set for\n * the use of the selfie segmentation model.\n * @returns an object that implements the ModelSpec interface.\n */\n build(): ModelSpec {\n this.validate();\n return {\n path: this.path,\n input: this.input,\n output: this.output,\n };\n }\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport ApplicationMetadata from '../applicationmetadata/ApplicationMetadata';\nimport ServerSideNetworkAdaption from './ServerSideNetworkAdaption';\n\n/**\n * [[SignalingClientJoin]] contains settings for the Join SignalFrame.\n */\nexport default class SignalingClientJoin {\n serverSideNetworkAdaption: ServerSideNetworkAdaption = ServerSideNetworkAdaption.Default;\n supportedServerSideNetworkAdaptions: ServerSideNetworkAdaption[] = [];\n wantsAllTemporalLayersInIndex: boolean = false;\n disablePeriodicKeyframeRequestOnContentSender: boolean = false;\n\n /**\n * Initializes a SignalingClientJoin with the given properties.\n * @param applicationMetadata [[ApplicationMetadata]].\n */\n constructor(public readonly applicationMetadata?: ApplicationMetadata) {}\n}\n","'use strict';\n\nmodule.exports = function bind(fn, thisArg) {\n return function wrap() {\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n return fn.apply(thisArg, args);\n };\n};\n","/** @license React v0.20.2\n * scheduler.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var f,g,h,k;if(\"object\"===typeof performance&&\"function\"===typeof performance.now){var l=performance;exports.unstable_now=function(){return l.now()}}else{var p=Date,q=p.now();exports.unstable_now=function(){return p.now()-q}}\nif(\"undefined\"===typeof window||\"function\"!==typeof MessageChannel){var t=null,u=null,w=function(){if(null!==t)try{var a=exports.unstable_now();t(!0,a);t=null}catch(b){throw setTimeout(w,0),b;}};f=function(a){null!==t?setTimeout(f,0,a):(t=a,setTimeout(w,0))};g=function(a,b){u=setTimeout(a,b)};h=function(){clearTimeout(u)};exports.unstable_shouldYield=function(){return!1};k=exports.unstable_forceFrameRate=function(){}}else{var x=window.setTimeout,y=window.clearTimeout;if(\"undefined\"!==typeof console){var z=\nwindow.cancelAnimationFrame;\"function\"!==typeof window.requestAnimationFrame&&console.error(\"This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills\");\"function\"!==typeof z&&console.error(\"This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills\")}var A=!1,B=null,C=-1,D=5,E=0;exports.unstable_shouldYield=function(){return exports.unstable_now()>=\nE};k=function(){};exports.unstable_forceFrameRate=function(a){0>a||125>>1,e=a[d];if(void 0!==e&&0I(n,c))void 0!==r&&0>I(r,n)?(a[d]=r,a[v]=c,d=v):(a[d]=n,a[m]=c,d=m);else if(void 0!==r&&0>I(r,c))a[d]=r,a[v]=c,d=v;else break a}}return b}return null}function I(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}var L=[],M=[],N=1,O=null,P=3,Q=!1,R=!1,S=!1;\nfunction T(a){for(var b=J(M);null!==b;){if(null===b.callback)K(M);else if(b.startTime<=a)K(M),b.sortIndex=b.expirationTime,H(L,b);else break;b=J(M)}}function U(a){S=!1;T(a);if(!R)if(null!==J(L))R=!0,f(V);else{var b=J(M);null!==b&&g(U,b.startTime-a)}}\nfunction V(a,b){R=!1;S&&(S=!1,h());Q=!0;var c=P;try{T(b);for(O=J(L);null!==O&&(!(O.expirationTime>b)||a&&!exports.unstable_shouldYield());){var d=O.callback;if(\"function\"===typeof d){O.callback=null;P=O.priorityLevel;var e=d(O.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?O.callback=e:O===J(L)&&K(L);T(b)}else K(L);O=J(L)}if(null!==O)var m=!0;else{var n=J(M);null!==n&&g(U,n.startTime-b);m=!1}return m}finally{O=null,P=c,Q=!1}}var W=k;exports.unstable_IdlePriority=5;\nexports.unstable_ImmediatePriority=1;exports.unstable_LowPriority=4;exports.unstable_NormalPriority=3;exports.unstable_Profiling=null;exports.unstable_UserBlockingPriority=2;exports.unstable_cancelCallback=function(a){a.callback=null};exports.unstable_continueExecution=function(){R||Q||(R=!0,f(V))};exports.unstable_getCurrentPriorityLevel=function(){return P};exports.unstable_getFirstCallbackNode=function(){return J(L)};\nexports.unstable_next=function(a){switch(P){case 1:case 2:case 3:var b=3;break;default:b=P}var c=P;P=b;try{return a()}finally{P=c}};exports.unstable_pauseExecution=function(){};exports.unstable_requestPaint=W;exports.unstable_runWithPriority=function(a,b){switch(a){case 1:case 2:case 3:case 4:case 5:break;default:a=3}var c=P;P=a;try{return b()}finally{P=c}};\nexports.unstable_scheduleCallback=function(a,b,c){var d=exports.unstable_now();\"object\"===typeof c&&null!==c?(c=c.delay,c=\"number\"===typeof c&&0d?(a.sortIndex=c,H(M,a),null===J(L)&&a===J(M)&&(S?h():S=!0,g(U,c-d))):(a.sortIndex=e,H(L,a),R||Q||(R=!0,f(V)));return a};\nexports.unstable_wrapCallback=function(a){var b=P;return function(){var c=P;P=b;try{return a.apply(this,arguments)}finally{P=c}}};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nfunction EventEmitter() {\n this._events = this._events || {};\n this._maxListeners = this._maxListeners || undefined;\n}\nmodule.exports = EventEmitter;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nEventEmitter.defaultMaxListeners = 10;\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function(n) {\n if (!isNumber(n) || n < 0 || isNaN(n))\n throw TypeError('n must be a positive number');\n this._maxListeners = n;\n return this;\n};\n\nEventEmitter.prototype.emit = function(type) {\n var er, handler, len, args, i, listeners;\n\n if (!this._events)\n this._events = {};\n\n // If there is no 'error' event listener then throw.\n if (type === 'error') {\n if (!this._events.error ||\n (isObject(this._events.error) && !this._events.error.length)) {\n er = arguments[1];\n if (er instanceof Error) {\n throw er; // Unhandled 'error' event\n } else {\n // At least give some kind of context to the user\n var err = new Error('Uncaught, unspecified \"error\" event. (' + er + ')');\n err.context = er;\n throw err;\n }\n }\n }\n\n handler = this._events[type];\n\n if (isUndefined(handler))\n return false;\n\n if (isFunction(handler)) {\n switch (arguments.length) {\n // fast cases\n case 1:\n handler.call(this);\n break;\n case 2:\n handler.call(this, arguments[1]);\n break;\n case 3:\n handler.call(this, arguments[1], arguments[2]);\n break;\n // slower\n default:\n args = Array.prototype.slice.call(arguments, 1);\n handler.apply(this, args);\n }\n } else if (isObject(handler)) {\n args = Array.prototype.slice.call(arguments, 1);\n listeners = handler.slice();\n len = listeners.length;\n for (i = 0; i < len; i++)\n listeners[i].apply(this, args);\n }\n\n return true;\n};\n\nEventEmitter.prototype.addListener = function(type, listener) {\n var m;\n\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n if (!this._events)\n this._events = {};\n\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (this._events.newListener)\n this.emit('newListener', type,\n isFunction(listener.listener) ?\n listener.listener : listener);\n\n if (!this._events[type])\n // Optimize the case of one listener. Don't need the extra array object.\n this._events[type] = listener;\n else if (isObject(this._events[type]))\n // If we've already got an array, just append.\n this._events[type].push(listener);\n else\n // Adding the second element, need to change to array.\n this._events[type] = [this._events[type], listener];\n\n // Check for listener leak\n if (isObject(this._events[type]) && !this._events[type].warned) {\n if (!isUndefined(this._maxListeners)) {\n m = this._maxListeners;\n } else {\n m = EventEmitter.defaultMaxListeners;\n }\n\n if (m && m > 0 && this._events[type].length > m) {\n this._events[type].warned = true;\n console.error('(node) warning: possible EventEmitter memory ' +\n 'leak detected. %d listeners added. ' +\n 'Use emitter.setMaxListeners() to increase limit.',\n this._events[type].length);\n if (typeof console.trace === 'function') {\n // not supported in IE 10\n console.trace();\n }\n }\n }\n\n return this;\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.once = function(type, listener) {\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n var fired = false;\n\n function g() {\n this.removeListener(type, g);\n\n if (!fired) {\n fired = true;\n listener.apply(this, arguments);\n }\n }\n\n g.listener = listener;\n this.on(type, g);\n\n return this;\n};\n\n// emits a 'removeListener' event iff the listener was removed\nEventEmitter.prototype.removeListener = function(type, listener) {\n var list, position, length, i;\n\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n if (!this._events || !this._events[type])\n return this;\n\n list = this._events[type];\n length = list.length;\n position = -1;\n\n if (list === listener ||\n (isFunction(list.listener) && list.listener === listener)) {\n delete this._events[type];\n if (this._events.removeListener)\n this.emit('removeListener', type, listener);\n\n } else if (isObject(list)) {\n for (i = length; i-- > 0;) {\n if (list[i] === listener ||\n (list[i].listener && list[i].listener === listener)) {\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (list.length === 1) {\n list.length = 0;\n delete this._events[type];\n } else {\n list.splice(position, 1);\n }\n\n if (this._events.removeListener)\n this.emit('removeListener', type, listener);\n }\n\n return this;\n};\n\nEventEmitter.prototype.removeAllListeners = function(type) {\n var key, listeners;\n\n if (!this._events)\n return this;\n\n // not listening for removeListener, no need to emit\n if (!this._events.removeListener) {\n if (arguments.length === 0)\n this._events = {};\n else if (this._events[type])\n delete this._events[type];\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n for (key in this._events) {\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = {};\n return this;\n }\n\n listeners = this._events[type];\n\n if (isFunction(listeners)) {\n this.removeListener(type, listeners);\n } else if (listeners) {\n // LIFO order\n while (listeners.length)\n this.removeListener(type, listeners[listeners.length - 1]);\n }\n delete this._events[type];\n\n return this;\n};\n\nEventEmitter.prototype.listeners = function(type) {\n var ret;\n if (!this._events || !this._events[type])\n ret = [];\n else if (isFunction(this._events[type]))\n ret = [this._events[type]];\n else\n ret = this._events[type].slice();\n return ret;\n};\n\nEventEmitter.prototype.listenerCount = function(type) {\n if (this._events) {\n var evlistener = this._events[type];\n\n if (isFunction(evlistener))\n return 1;\n else if (evlistener)\n return evlistener.length;\n }\n return 0;\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n return emitter.listenerCount(type);\n};\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\n","/**\n * Partial implementation of PKCS#1 v2.2: RSA-OEAP\n *\n * Modified but based on the following MIT and BSD licensed code:\n *\n * https://github.com/kjur/jsjws/blob/master/rsa.js:\n *\n * The 'jsjws'(JSON Web Signature JavaScript Library) License\n *\n * Copyright (c) 2012 Kenji Urushima\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n *\n * http://webrsa.cvs.sourceforge.net/viewvc/webrsa/Client/RSAES-OAEP.js?content-type=text%2Fplain:\n *\n * RSAES-OAEP.js\n * $Id: RSAES-OAEP.js,v 1.1.1.1 2003/03/19 15:37:20 ellispritchard Exp $\n * JavaScript Implementation of PKCS #1 v2.1 RSA CRYPTOGRAPHY STANDARD (RSA Laboratories, June 14, 2002)\n * Copyright (C) Ellis Pritchard, Guardian Unlimited 2003.\n * Contact: ellis@nukinetics.com\n * Distributed under the BSD License.\n *\n * Official documentation: http://www.rsa.com/rsalabs/node.asp?id=2125\n *\n * @author Evan Jones (http://evanjones.ca/)\n * @author Dave Longley\n *\n * Copyright (c) 2013-2014 Digital Bazaar, Inc.\n */\nvar forge = require('./forge');\nrequire('./util');\nrequire('./random');\nrequire('./sha1');\n\n// shortcut for PKCS#1 API\nvar pkcs1 = module.exports = forge.pkcs1 = forge.pkcs1 || {};\n\n/**\n * Encode the given RSAES-OAEP message (M) using key, with optional label (L)\n * and seed.\n *\n * This method does not perform RSA encryption, it only encodes the message\n * using RSAES-OAEP.\n *\n * @param key the RSA key to use.\n * @param message the message to encode.\n * @param options the options to use:\n * label an optional label to use.\n * seed the seed to use.\n * md the message digest object to use, undefined for SHA-1.\n * mgf1 optional mgf1 parameters:\n * md the message digest object to use for MGF1.\n *\n * @return the encoded message bytes.\n */\npkcs1.encode_rsa_oaep = function(key, message, options) {\n // parse arguments\n var label;\n var seed;\n var md;\n var mgf1Md;\n // legacy args (label, seed, md)\n if(typeof options === 'string') {\n label = options;\n seed = arguments[3] || undefined;\n md = arguments[4] || undefined;\n } else if(options) {\n label = options.label || undefined;\n seed = options.seed || undefined;\n md = options.md || undefined;\n if(options.mgf1 && options.mgf1.md) {\n mgf1Md = options.mgf1.md;\n }\n }\n\n // default OAEP to SHA-1 message digest\n if(!md) {\n md = forge.md.sha1.create();\n } else {\n md.start();\n }\n\n // default MGF-1 to same as OAEP\n if(!mgf1Md) {\n mgf1Md = md;\n }\n\n // compute length in bytes and check output\n var keyLength = Math.ceil(key.n.bitLength() / 8);\n var maxLength = keyLength - 2 * md.digestLength - 2;\n if(message.length > maxLength) {\n var error = new Error('RSAES-OAEP input message length is too long.');\n error.length = message.length;\n error.maxLength = maxLength;\n throw error;\n }\n\n if(!label) {\n label = '';\n }\n md.update(label, 'raw');\n var lHash = md.digest();\n\n var PS = '';\n var PS_length = maxLength - message.length;\n for(var i = 0; i < PS_length; i++) {\n PS += '\\x00';\n }\n\n var DB = lHash.getBytes() + PS + '\\x01' + message;\n\n if(!seed) {\n seed = forge.random.getBytes(md.digestLength);\n } else if(seed.length !== md.digestLength) {\n var error = new Error('Invalid RSAES-OAEP seed. The seed length must ' +\n 'match the digest length.');\n error.seedLength = seed.length;\n error.digestLength = md.digestLength;\n throw error;\n }\n\n var dbMask = rsa_mgf1(seed, keyLength - md.digestLength - 1, mgf1Md);\n var maskedDB = forge.util.xorBytes(DB, dbMask, DB.length);\n\n var seedMask = rsa_mgf1(maskedDB, md.digestLength, mgf1Md);\n var maskedSeed = forge.util.xorBytes(seed, seedMask, seed.length);\n\n // return encoded message\n return '\\x00' + maskedSeed + maskedDB;\n};\n\n/**\n * Decode the given RSAES-OAEP encoded message (EM) using key, with optional\n * label (L).\n *\n * This method does not perform RSA decryption, it only decodes the message\n * using RSAES-OAEP.\n *\n * @param key the RSA key to use.\n * @param em the encoded message to decode.\n * @param options the options to use:\n * label an optional label to use.\n * md the message digest object to use for OAEP, undefined for SHA-1.\n * mgf1 optional mgf1 parameters:\n * md the message digest object to use for MGF1.\n *\n * @return the decoded message bytes.\n */\npkcs1.decode_rsa_oaep = function(key, em, options) {\n // parse args\n var label;\n var md;\n var mgf1Md;\n // legacy args\n if(typeof options === 'string') {\n label = options;\n md = arguments[3] || undefined;\n } else if(options) {\n label = options.label || undefined;\n md = options.md || undefined;\n if(options.mgf1 && options.mgf1.md) {\n mgf1Md = options.mgf1.md;\n }\n }\n\n // compute length in bytes\n var keyLength = Math.ceil(key.n.bitLength() / 8);\n\n if(em.length !== keyLength) {\n var error = new Error('RSAES-OAEP encoded message length is invalid.');\n error.length = em.length;\n error.expectedLength = keyLength;\n throw error;\n }\n\n // default OAEP to SHA-1 message digest\n if(md === undefined) {\n md = forge.md.sha1.create();\n } else {\n md.start();\n }\n\n // default MGF-1 to same as OAEP\n if(!mgf1Md) {\n mgf1Md = md;\n }\n\n if(keyLength < 2 * md.digestLength + 2) {\n throw new Error('RSAES-OAEP key is too short for the hash function.');\n }\n\n if(!label) {\n label = '';\n }\n md.update(label, 'raw');\n var lHash = md.digest().getBytes();\n\n // split the message into its parts\n var y = em.charAt(0);\n var maskedSeed = em.substring(1, md.digestLength + 1);\n var maskedDB = em.substring(1 + md.digestLength);\n\n var seedMask = rsa_mgf1(maskedDB, md.digestLength, mgf1Md);\n var seed = forge.util.xorBytes(maskedSeed, seedMask, maskedSeed.length);\n\n var dbMask = rsa_mgf1(seed, keyLength - md.digestLength - 1, mgf1Md);\n var db = forge.util.xorBytes(maskedDB, dbMask, maskedDB.length);\n\n var lHashPrime = db.substring(0, md.digestLength);\n\n // constant time check that all values match what is expected\n var error = (y !== '\\x00');\n\n // constant time check lHash vs lHashPrime\n for(var i = 0; i < md.digestLength; ++i) {\n error |= (lHash.charAt(i) !== lHashPrime.charAt(i));\n }\n\n // \"constant time\" find the 0x1 byte separating the padding (zeros) from the\n // message\n // TODO: It must be possible to do this in a better/smarter way?\n var in_ps = 1;\n var index = md.digestLength;\n for(var j = md.digestLength; j < db.length; j++) {\n var code = db.charCodeAt(j);\n\n var is_0 = (code & 0x1) ^ 0x1;\n\n // non-zero if not 0 or 1 in the ps section\n var error_mask = in_ps ? 0xfffe : 0x0000;\n error |= (code & error_mask);\n\n // latch in_ps to zero after we find 0x1\n in_ps = in_ps & is_0;\n index += in_ps;\n }\n\n if(error || db.charCodeAt(index) !== 0x1) {\n throw new Error('Invalid RSAES-OAEP padding.');\n }\n\n return db.substring(index + 1);\n};\n\nfunction rsa_mgf1(seed, maskLength, hash) {\n // default to SHA-1 message digest\n if(!hash) {\n hash = forge.md.sha1.create();\n }\n var t = '';\n var count = Math.ceil(maskLength / hash.digestLength);\n for(var i = 0; i < count; ++i) {\n var c = String.fromCharCode(\n (i >> 24) & 0xFF, (i >> 16) & 0xFF, (i >> 8) & 0xFF, i & 0xFF);\n hash.start();\n hash.update(seed + c);\n t += hash.digest().getBytes();\n }\n return t.substring(0, maskLength);\n}\n","'use strict';\n\nvar Cancel = require('./Cancel');\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */\nfunction CancelToken(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n var resolvePromise;\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n var token = this;\n executor(function cancel(message) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new Cancel(message);\n resolvePromise(token.reason);\n });\n}\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n};\n\n/**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\nCancelToken.source = function source() {\n var cancel;\n var token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token: token,\n cancel: cancel\n };\n};\n\nmodule.exports = CancelToken;\n","'use strict';\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar FunctionPrototype = Function.prototype;\nvar call = FunctionPrototype.call;\n// eslint-disable-next-line es/no-function-prototype-bind -- safe\nvar uncurryThisWithBind = NATIVE_BIND && FunctionPrototype.bind.bind(call, call);\n\nmodule.exports = NATIVE_BIND ? uncurryThisWithBind : function (fn) {\n return function () {\n return call.apply(fn, arguments);\n };\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.loadWorker = void 0;\nconst fetch_js_1 = require(\"./fetch.js\");\nconst WORKER_FETCH_OPTIONS = {\n method: 'GET',\n mode: 'cors',\n credentials: 'omit',\n redirect: 'follow',\n referrerPolicy: 'no-referrer',\n};\nconst loadWorker = (workerURL, name, fetchBehavior, logger) => {\n logger === null || logger === void 0 ? void 0 : logger.debug(`Loading ${name} worker from ${workerURL}.`);\n let workerURLIsSameOrigin = false;\n try {\n workerURLIsSameOrigin = self.origin === (new URL(workerURL)).origin;\n }\n catch (e) {\n logger === null || logger === void 0 ? void 0 : logger.error('Could not compare origins.', e);\n }\n if (workerURLIsSameOrigin) {\n const workerURLWithQuery = fetch_js_1.withQueryString(workerURL, fetchBehavior);\n return Promise.resolve(new Worker(workerURLWithQuery, { name }));\n }\n return fetch_js_1.fetchWithBehavior(workerURL, WORKER_FETCH_OPTIONS, fetchBehavior).then((res) => {\n if (res.ok) {\n return res.blob()\n .then((blob) => new Worker(window.URL.createObjectURL(blob)));\n }\n throw new Error('Fetch failed.');\n });\n};\nexports.loadWorker = loadWorker;\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport AudioMixObserver from '../audiomixobserver/AudioMixObserver';\nimport BrowserBehavior from '../browserbehavior/BrowserBehavior';\nimport DefaultBrowserBehavior from '../browserbehavior/DefaultBrowserBehavior';\nimport Logger from '../logger/Logger';\nimport MediaStreamBrokerObserver from '../mediastreambrokerobserver/MediaStreamBrokerObserver';\nimport AsyncScheduler from '../scheduler/AsyncScheduler';\nimport AudioMixController from './AudioMixController';\n\n/** @internal */\ninterface AudioElementWithSinkId extends HTMLAudioElement {\n sinkId: string;\n setSinkId: (id: string) => void;\n}\n\nexport default class DefaultAudioMixController\n implements AudioMixController, MediaStreamBrokerObserver {\n private audioDevice: MediaDeviceInfo | null = null;\n private audioElement: HTMLAudioElement | null = null;\n private audioStream: MediaStream | null = null;\n private browserBehavior: BrowserBehavior = new DefaultBrowserBehavior();\n private observers: Set = new Set();\n\n constructor(private logger?: Logger) {}\n\n async bindAudioElement(element: HTMLAudioElement): Promise {\n if (!element) {\n throw new Error(`Cannot bind audio element: ${element}`);\n }\n this.audioElement = element;\n this.audioElement.autoplay = true;\n return this.bindAudioMix();\n }\n\n unbindAudioElement(): void {\n if (!this.audioElement) {\n return;\n }\n this.audioElement.srcObject = null;\n this.audioElement = null;\n this.forEachObserver((observer: AudioMixObserver) => {\n if (this.audioStream) {\n observer.meetingAudioStreamBecameInactive(this.audioStream);\n }\n });\n }\n\n async bindAudioStream(stream: MediaStream): Promise {\n if (!stream) {\n return;\n }\n\n this.audioStream = stream;\n\n try {\n await this.bindAudioMix();\n } catch (error) {\n /* istanbul ignore else */\n if (this.logger) {\n this.logger.warn(`Failed to bind audio stream: ${error}`);\n }\n }\n }\n\n async bindAudioDevice(device: MediaDeviceInfo | null): Promise {\n /**\n * Throw error if browser doesn't even support setSinkId\n * Read more: https://caniuse.com/?search=setSinkId\n */\n if (device && !this.browserBehavior.supportsSetSinkId()) {\n throw new Error(\n 'Cannot select audio output device. This browser does not support setSinkId.'\n );\n }\n\n // Always set device -- we might be setting it back to `null` to reselect\n // the default, and even in that case we need to call `bindAudioMix` in\n // order to update the sink ID to the empty string.\n this.audioDevice = device;\n return this.bindAudioMix();\n }\n\n private forEachObserver(observerFunc: (observer: AudioMixObserver) => void): void {\n for (const observer of this.observers) {\n AsyncScheduler.nextTick(() => {\n observerFunc(observer);\n });\n }\n }\n\n private async bindAudioMix(): Promise {\n if (!this.audioElement) {\n return;\n }\n\n const previousStream = this.audioElement.srcObject as MediaStream;\n\n if (this.audioStream) {\n this.audioElement.srcObject = this.audioStream;\n }\n\n if (previousStream !== this.audioStream) {\n this.forEachObserver((observer: AudioMixObserver) => {\n if (previousStream) {\n observer.meetingAudioStreamBecameInactive(previousStream);\n }\n if (this.audioStream) {\n observer.meetingAudioStreamBecameActive(this.audioStream);\n }\n });\n }\n\n // In usual operation, the output device is undefined, and so is the element\n // sink ID. In this case, don't throw an error -- we're being called as a side\n // effect of just binding the audio element, not choosing an output device.\n const shouldSetSinkId =\n this.audioDevice?.deviceId !== (this.audioElement as AudioElementWithSinkId).sinkId;\n\n if (\n shouldSetSinkId &&\n typeof (this.audioElement as AudioElementWithSinkId).sinkId === 'undefined'\n ) {\n throw new Error(\n 'Cannot select audio output device. This browser does not support setSinkId.'\n );\n }\n\n const newSinkId = this.audioDevice ? this.audioDevice.deviceId : '';\n const oldSinkId: string = (this.audioElement as AudioElementWithSinkId).sinkId;\n if (newSinkId === oldSinkId) {\n return;\n }\n\n // Take the existing stream and temporarily unbind it while we change\n // the sink ID.\n\n const existingAudioElement: AudioElementWithSinkId = this\n .audioElement as AudioElementWithSinkId;\n const existingStream = this.audioStream;\n if (this.browserBehavior.hasChromiumWebRTC()) {\n existingAudioElement.srcObject = null;\n }\n\n if (shouldSetSinkId) {\n try {\n await existingAudioElement.setSinkId(newSinkId);\n } catch (error) {\n this.logger?.error(`Failed to set sinkId for audio element: ${error}`);\n throw error;\n }\n }\n\n if (this.browserBehavior.hasChromiumWebRTC()) {\n existingAudioElement.srcObject = existingStream;\n }\n }\n\n async getCurrentMeetingAudioStream(): Promise {\n return this.audioStream;\n }\n\n async addAudioMixObserver(observer: AudioMixObserver): Promise {\n this.observers.add(observer);\n }\n\n async removeAudioMixObserver(observer: AudioMixObserver): Promise {\n this.observers.delete(observer);\n }\n\n async audioOutputDidChange(device: MediaDeviceInfo | null): Promise {\n this.logger.info('Receive an audio output change event');\n return this.bindAudioDevice(device);\n }\n}\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['cognitoidentityserviceprovider'] = {};\nAWS.CognitoIdentityServiceProvider = Service.defineService('cognitoidentityserviceprovider', ['2016-04-18']);\nObject.defineProperty(apiLoader.services['cognitoidentityserviceprovider'], '2016-04-18', {\n get: function get() {\n var model = require('../apis/cognito-idp-2016-04-18.min.json');\n model.paginators = require('../apis/cognito-idp-2016-04-18.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.CognitoIdentityServiceProvider;\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { SdkStreamDescriptor, SdkStreamMediaType } from '../signalingprotocol/SignalingProtocol.js';\n\nexport default class VideoStreamDescription {\n attendeeId: string = '';\n groupId: number = 0;\n streamId: number = 0;\n ssrc: number = 0;\n trackLabel: string = '';\n maxBitrateKbps: number = 0;\n // average bitrate is updated every 2 seconds via bitrates messages\n avgBitrateKbps: number = 0;\n maxFrameRate: number = 0;\n width: number = 0;\n height: number = 0;\n timeEnabled: number = 0;\n // Unused, should be removed in a future release\n disabledByWebRTC: boolean = false;\n disabledByUplinkPolicy: boolean = false;\n rid: string = '';\n\n constructor(\n attendeeId?: string,\n groupId?: number,\n streamId?: number,\n maxBitrateKbps?: number,\n avgBitrateKbps?: number\n ) {\n this.attendeeId = attendeeId;\n this.groupId = groupId;\n this.streamId = streamId;\n this.maxBitrateKbps = maxBitrateKbps;\n this.avgBitrateKbps = avgBitrateKbps;\n }\n\n clone(): VideoStreamDescription {\n const newInfo = new VideoStreamDescription();\n newInfo.attendeeId = this.attendeeId;\n newInfo.groupId = this.groupId;\n newInfo.streamId = this.streamId;\n newInfo.ssrc = this.ssrc;\n newInfo.trackLabel = this.trackLabel;\n newInfo.maxBitrateKbps = this.maxBitrateKbps;\n newInfo.avgBitrateKbps = this.avgBitrateKbps;\n newInfo.maxFrameRate = this.maxFrameRate;\n newInfo.timeEnabled = this.timeEnabled;\n newInfo.disabledByUplinkPolicy = this.disabledByUplinkPolicy;\n newInfo.width = this.width;\n newInfo.height = this.height;\n return newInfo;\n }\n\n toStreamDescriptor(): SdkStreamDescriptor {\n const descriptor = SdkStreamDescriptor.create();\n descriptor.mediaType = SdkStreamMediaType.VIDEO;\n\n descriptor.trackLabel = this.trackLabel;\n descriptor.attendeeId = this.attendeeId;\n descriptor.streamId = this.streamId;\n descriptor.groupId = this.groupId;\n descriptor.framerate = this.maxFrameRate;\n descriptor.maxBitrateKbps = this.disabledByUplinkPolicy ? 0 : this.maxBitrateKbps;\n descriptor.avgBitrateBps = this.avgBitrateKbps;\n return descriptor;\n }\n\n totalPixels(): number {\n return this.width * this.height;\n }\n}\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar id = 0;\nvar postfix = Math.random();\nvar toString = uncurryThis(1.0.toString);\n\nmodule.exports = function (key) {\n return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString(++id + postfix, 36);\n};\n","'use strict';\nmodule.exports = function (exec) {\n try {\n return !!exec();\n } catch (error) {\n return true;\n }\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\n/**\n * The numbers below indicate the amount of blur to apply. Larger numbers will produce\n * more blur.\n */\nconst BlurStrength = {\n LOW: 7,\n MEDIUM: 15,\n HIGH: 30,\n};\n\n/** @internal */\nexport class BlurStrengthMapper {\n private static readonly BLUR_STRENGTH_DIVISOR = 540; // use 540P as baseline blur strength\n static getBlurAmount(bstrength: number, options: { height: number }): number {\n if (bstrength <= 0) {\n throw new Error(`invalid value for blur strength: ${bstrength}`);\n }\n return Math.round((bstrength * options.height) / this.BLUR_STRENGTH_DIVISOR);\n }\n}\n\nexport default BlurStrength;\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport Scheduler from './Scheduler';\n\n/**\n * [[IntervalScheduler]] calls the callback every intervalMs milliseconds.\n */\nexport default class IntervalScheduler implements Scheduler {\n timer: undefined | ReturnType;\n\n constructor(private intervalMs: number) {}\n\n start(callback: () => void): void {\n this.stop();\n this.timer = setInterval(callback, this.intervalMs);\n }\n\n stop(): void {\n if (this.timer === undefined) {\n return;\n }\n clearInterval(this.timer);\n this.timer = undefined;\n }\n\n running(): boolean {\n return this.timer !== undefined;\n }\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport AudioVideoControllerState from '../audiovideocontroller/AudioVideoControllerState';\nimport SignalingClient from '../signalingclient/SignalingClient';\nimport SignalingClientEvent from '../signalingclient/SignalingClientEvent';\nimport SignalingClientEventType from '../signalingclient/SignalingClientEventType';\nimport SignalingClientObserver from '../signalingclientobserver/SignalingClientObserver';\nimport TaskCanceler from '../taskcanceler/TaskCanceler';\nimport BaseTask from './BaseTask';\n\n/*\n * `CleanStoppedSessionTask` permenently cleans up all components of `AudioVideoControllerState` after a stop call.\n */\nexport default class CleanStoppedSessionTask extends BaseTask {\n protected taskName = 'CleanStoppedSessionTask';\n private taskCanceler: TaskCanceler | null = null;\n\n constructor(private context: AudioVideoControllerState) {\n super(context.logger);\n }\n\n cancel(): void {\n if (this.taskCanceler) {\n this.taskCanceler.cancel();\n this.taskCanceler = null;\n }\n }\n\n async run(): Promise {\n try {\n if (this.context.signalingClient.ready()) {\n this.context.signalingClient.closeConnection();\n await this.receiveWebSocketClosedEvent();\n }\n } catch (error) {\n throw error;\n } finally {\n for (const observer of this.context.removableObservers) {\n observer.removeObserver();\n }\n this.context.resetConnectionSpecificState();\n\n this.context.statsCollector.stop();\n this.context.statsCollector = null;\n this.context.connectionMonitor.stop();\n this.context.connectionMonitor = null;\n\n if (this.context.videoUplinkBandwidthPolicy.setTransceiverController) {\n this.context.videoUplinkBandwidthPolicy.setTransceiverController(undefined);\n }\n if (this.context.videoDownlinkBandwidthPolicy.bindToTileController) {\n this.context.videoDownlinkBandwidthPolicy.bindToTileController(undefined);\n }\n\n // This state may be reused to join another conference, so clear out all the existing video tiles\n const tile = this.context.videoTileController.getLocalVideoTile();\n if (tile) {\n tile.bindVideoStream('', true, null, null, null, null);\n }\n this.context.videoTileController.removeAllVideoTiles();\n }\n }\n\n private receiveWebSocketClosedEvent(): Promise {\n return new Promise((resolve, reject) => {\n class Interceptor implements SignalingClientObserver, TaskCanceler {\n constructor(private signalingClient: SignalingClient) {}\n\n cancel(): void {\n this.signalingClient.removeObserver(this);\n reject(\n new Error(\n `CleanStoppedSessionTask got canceled while waiting for the WebSocket closed event`\n )\n );\n }\n\n handleSignalingClientEvent(event: SignalingClientEvent): void {\n if (event.type === SignalingClientEventType.WebSocketClosed) {\n this.signalingClient.removeObserver(this);\n resolve();\n }\n }\n }\n\n const interceptor = new Interceptor(this.context.signalingClient);\n this.taskCanceler = interceptor;\n this.context.signalingClient.registerObserver(interceptor);\n });\n }\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport AudioVideoControllerState from '../audiovideocontroller/AudioVideoControllerState';\nimport MeetingSessionStatusCode from '../meetingsession/MeetingSessionStatusCode';\nimport SDP from '../sdp/SDP';\nimport BaseTask from './BaseTask';\n\n/*\n * [[CreateSDPTask]] asynchronously calls [[createOffer]] on peer connection.\n */\nexport default class CreateSDPTask extends BaseTask {\n protected taskName = 'CreateSDPTask';\n\n private cancelPromise: undefined | ((error: Error) => void);\n\n constructor(private context: AudioVideoControllerState) {\n super(context.logger);\n }\n\n cancel(): void {\n // Just in case. The baseCancel behavior should prevent this.\n /* istanbul ignore else */\n if (this.cancelPromise) {\n const error = new Error(`canceling ${this.name()}`);\n this.cancelPromise(error);\n delete this.cancelPromise;\n }\n }\n\n sessionUsesAudio(): boolean {\n return !!this.context.meetingSessionConfiguration?.urls?.audioHostURL;\n }\n\n sessionUsesVideo(): boolean {\n const enabled = true;\n let sending: boolean;\n if (this.context.transceiverController.useTransceivers()) {\n sending = this.context.transceiverController.hasVideoInput();\n } else {\n sending = this.context.videoTileController.hasStartedLocalVideoTile();\n }\n const receiving = !!this.context.videosToReceive && !this.context.videosToReceive.empty();\n const usesVideo = enabled && (sending || receiving);\n this.context.logger.info(\n `uses video: ${usesVideo} (enabled: ${enabled}, sending: ${sending}, receiving: ${receiving})`\n );\n return usesVideo;\n }\n\n async run(): Promise {\n const offerOptions = {\n offerToReceiveAudio: this.sessionUsesAudio(),\n offerToReceiveVideo: this.sessionUsesVideo(),\n };\n this.logger.info(`peer connection offerOptions: ${JSON.stringify(offerOptions)}`);\n\n await new Promise(async (resolve, reject) => {\n this.cancelPromise = (error: Error) => {\n reject(error);\n };\n\n try {\n this.context.sdpOfferInit = await this.context.peer.createOffer(offerOptions);\n this.context.logger.info('peer connection created offer');\n if (this.context.previousSdpOffer) {\n if (\n new SDP(this.context.sdpOfferInit.sdp).videoSendSectionHasDifferentSSRC(\n this.context.previousSdpOffer\n )\n ) {\n const error = new Error(\n `canceling ${this.name()} due to the meeting status code: ${\n MeetingSessionStatusCode.IncompatibleSDP\n }`\n );\n this.context.previousSdpOffer = null;\n reject(error);\n return;\n }\n }\n resolve();\n } catch (error) {\n reject(error);\n } finally {\n delete this.cancelPromise;\n }\n });\n }\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nexport default class VideoQualitySettings {\n videoWidth: number;\n videoHeight: number;\n videoFrameRate: number;\n\n static readonly VideoDisabled: VideoQualitySettings = new VideoQualitySettings(0, 0, 0);\n static readonly VideoResolutionHD: VideoQualitySettings = new VideoQualitySettings(1280, 720, 30);\n static readonly VideoResolutionFHD: VideoQualitySettings = new VideoQualitySettings(\n 1920,\n 1080,\n 30\n );\n static readonly VideoResolutionUHD: VideoQualitySettings = new VideoQualitySettings(\n 3840,\n 2160,\n 30\n );\n\n constructor(videoWidth: number, videoHeight: number, videoFrameRate: number) {\n this.videoWidth = videoWidth;\n this.videoHeight = videoHeight;\n this.videoFrameRate = videoFrameRate;\n }\n\n equals(other: this): boolean {\n return (\n this.videoWidth === other.videoWidth &&\n this.videoHeight === other.videoHeight &&\n this.videoFrameRate === other.videoFrameRate\n );\n }\n}\n","var AWS = require('../core');\nvar STS = require('../../clients/sts');\n\n/**\n * Represents temporary credentials retrieved from {AWS.STS}. Without any\n * extra parameters, credentials will be fetched from the\n * {AWS.STS.getSessionToken} operation. If an IAM role is provided, the\n * {AWS.STS.assumeRole} operation will be used to fetch credentials for the\n * role instead.\n *\n * AWS.ChainableTemporaryCredentials differs from AWS.TemporaryCredentials in\n * the way masterCredentials and refreshes are handled.\n * AWS.ChainableTemporaryCredentials refreshes expired credentials using the\n * masterCredentials passed by the user to support chaining of STS credentials.\n * However, AWS.TemporaryCredentials recursively collapses the masterCredentials\n * during instantiation, precluding the ability to refresh credentials which\n * require intermediate, temporary credentials.\n *\n * For example, if the application should use RoleA, which must be assumed from\n * RoleB, and the environment provides credentials which can assume RoleB, then\n * AWS.ChainableTemporaryCredentials must be used to support refreshing the\n * temporary credentials for RoleA:\n *\n * ```javascript\n * var roleACreds = new AWS.ChainableTemporaryCredentials({\n * params: {RoleArn: 'RoleA'},\n * masterCredentials: new AWS.ChainableTemporaryCredentials({\n * params: {RoleArn: 'RoleB'},\n * masterCredentials: new AWS.EnvironmentCredentials('AWS')\n * })\n * });\n * ```\n *\n * If AWS.TemporaryCredentials had been used in the previous example,\n * `roleACreds` would fail to refresh because `roleACreds` would\n * use the environment credentials for the AssumeRole request.\n *\n * Another difference is that AWS.ChainableTemporaryCredentials creates the STS\n * service instance during instantiation while AWS.TemporaryCredentials creates\n * the STS service instance during the first refresh. Creating the service\n * instance during instantiation effectively captures the master credentials\n * from the global config, so that subsequent changes to the global config do\n * not affect the master credentials used to refresh the temporary credentials.\n *\n * This allows an instance of AWS.ChainableTemporaryCredentials to be assigned\n * to AWS.config.credentials:\n *\n * ```javascript\n * var envCreds = new AWS.EnvironmentCredentials('AWS');\n * AWS.config.credentials = envCreds;\n * // masterCredentials will be envCreds\n * AWS.config.credentials = new AWS.ChainableTemporaryCredentials({\n * params: {RoleArn: '...'}\n * });\n * ```\n *\n * Similarly, to use the CredentialProviderChain's default providers as the\n * master credentials, simply create a new instance of\n * AWS.ChainableTemporaryCredentials:\n *\n * ```javascript\n * AWS.config.credentials = new ChainableTemporaryCredentials({\n * params: {RoleArn: '...'}\n * });\n * ```\n *\n * @!attribute service\n * @return [AWS.STS] the STS service instance used to\n * get and refresh temporary credentials from AWS STS.\n * @note (see constructor)\n */\nAWS.ChainableTemporaryCredentials = AWS.util.inherit(AWS.Credentials, {\n /**\n * Creates a new temporary credentials object.\n *\n * @param options [map] a set of options\n * @option options params [map] ({}) a map of options that are passed to the\n * {AWS.STS.assumeRole} or {AWS.STS.getSessionToken} operations.\n * If a `RoleArn` parameter is passed in, credentials will be based on the\n * IAM role. If a `SerialNumber` parameter is passed in, {tokenCodeFn} must\n * also be passed in or an error will be thrown.\n * @option options masterCredentials [AWS.Credentials] the master credentials\n * used to get and refresh temporary credentials from AWS STS. By default,\n * AWS.config.credentials or AWS.config.credentialProvider will be used.\n * @option options tokenCodeFn [Function] (null) Function to provide\n * `TokenCode`, if `SerialNumber` is provided for profile in {params}. Function\n * is called with value of `SerialNumber` and `callback`, and should provide\n * the `TokenCode` or an error to the callback in the format\n * `callback(err, token)`.\n * @example Creating a new credentials object for generic temporary credentials\n * AWS.config.credentials = new AWS.ChainableTemporaryCredentials();\n * @example Creating a new credentials object for an IAM role\n * AWS.config.credentials = new AWS.ChainableTemporaryCredentials({\n * params: {\n * RoleArn: 'arn:aws:iam::1234567890:role/TemporaryCredentials'\n * }\n * });\n * @see AWS.STS.assumeRole\n * @see AWS.STS.getSessionToken\n */\n constructor: function ChainableTemporaryCredentials(options) {\n AWS.Credentials.call(this);\n options = options || {};\n this.errorCode = 'ChainableTemporaryCredentialsProviderFailure';\n this.expired = true;\n this.tokenCodeFn = null;\n\n var params = AWS.util.copy(options.params) || {};\n if (params.RoleArn) {\n params.RoleSessionName = params.RoleSessionName || 'temporary-credentials';\n }\n if (params.SerialNumber) {\n if (!options.tokenCodeFn || (typeof options.tokenCodeFn !== 'function')) {\n throw new AWS.util.error(\n new Error('tokenCodeFn must be a function when params.SerialNumber is given'),\n {code: this.errorCode}\n );\n } else {\n this.tokenCodeFn = options.tokenCodeFn;\n }\n }\n var config = AWS.util.merge(\n {\n params: params,\n credentials: options.masterCredentials || AWS.config.credentials\n },\n options.stsConfig || {}\n );\n this.service = new STS(config);\n },\n\n /**\n * Refreshes credentials using {AWS.STS.assumeRole} or\n * {AWS.STS.getSessionToken}, depending on whether an IAM role ARN was passed\n * to the credentials {constructor}.\n *\n * @callback callback function(err)\n * Called when the STS service responds (or fails). When\n * this callback is called with no error, it means that the credentials\n * information has been loaded into the object (as the `accessKeyId`,\n * `secretAccessKey`, and `sessionToken` properties).\n * @param err [Error] if an error occurred, this value will be filled\n * @see AWS.Credentials.get\n */\n refresh: function refresh(callback) {\n this.coalesceRefresh(callback || AWS.util.fn.callback);\n },\n\n /**\n * @api private\n * @param callback\n */\n load: function load(callback) {\n var self = this;\n var operation = self.service.config.params.RoleArn ? 'assumeRole' : 'getSessionToken';\n this.getTokenCode(function (err, tokenCode) {\n var params = {};\n if (err) {\n callback(err);\n return;\n }\n if (tokenCode) {\n params.TokenCode = tokenCode;\n }\n self.service[operation](params, function (err, data) {\n if (!err) {\n self.service.credentialsFrom(data, self);\n }\n callback(err);\n });\n });\n },\n\n /**\n * @api private\n */\n getTokenCode: function getTokenCode(callback) {\n var self = this;\n if (this.tokenCodeFn) {\n this.tokenCodeFn(this.service.config.params.SerialNumber, function (err, token) {\n if (err) {\n var message = err;\n if (err instanceof Error) {\n message = err.message;\n }\n callback(\n AWS.util.error(\n new Error('Error fetching MFA token: ' + message),\n { code: self.errorCode}\n )\n );\n return;\n }\n callback(null, token);\n });\n } else {\n callback(null);\n }\n }\n});\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport DefaultBrowserBehavior from '../browserbehavior/DefaultBrowserBehavior';\nimport VERSION from './version';\n\n/**\n * The components of a SemVer version, separated so they can be used individually.\n */\nexport interface SemVer {\n /**\n * The major version.\n */\n major: string;\n\n /**\n * The minor version.\n */\n minor: string;\n\n /**\n * The patch version.\n */\n patch: string;\n\n /**\n * The pre release identifier\n */\n preRelease: string;\n}\n\nexport default class Versioning {\n static X_AMZN_VERSION = 'X-Amzn-Version';\n static X_AMZN_USER_AGENT = 'X-Amzn-User-Agent';\n\n /**\n * Return string representation of SDK name\n */\n static get sdkName(): string {\n return 'amazon-chime-sdk-js';\n }\n\n /**\n * Return string representation of SDK version\n */\n static get sdkVersion(): string {\n return VERSION.semverString;\n }\n\n /**\n * Returns the parts of the semver, so major/minor/patch can be extracted individually.\n */\n static get sdkVersionSemVer(): SemVer {\n const v = VERSION.semverString.match(\n /^(?[0-9]+)\\.(?[0-9]+)((?:\\.(?[0-9]+))(?:-(?[a-zA-Z]+(\\.[0-9])*))?)?/\n );\n\n return {\n major: v?.groups?.major,\n minor: v?.groups?.minor,\n patch: v?.groups?.patch,\n preRelease: v?.groups?.preRelease,\n };\n }\n /**\n * Return the SHA-1 of the Git commit from which this build was created.\n */\n static get buildSHA(): string {\n // Skip the leading 'g'.\n return VERSION.hash.substring(1);\n }\n\n /**\n * Return low-resolution string representation of SDK user agent (e.g. `chrome-78`)\n */\n static get sdkUserAgentLowResolution(): string {\n const browserBehavior = new DefaultBrowserBehavior();\n return `${browserBehavior.name()}-${browserBehavior.majorVersion()}`;\n }\n\n /**\n * Return URL with versioning information appended\n */\n static urlWithVersion(url: string): string {\n const urlWithVersion = new URL(url);\n urlWithVersion.searchParams.append(Versioning.X_AMZN_VERSION, Versioning.sdkVersion);\n urlWithVersion.searchParams.append(\n Versioning.X_AMZN_USER_AGENT,\n Versioning.sdkUserAgentLowResolution\n );\n return urlWithVersion.toString();\n }\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport GetUserMediaError from './GetUserMediaError';\n\nexport default class OverconstrainedError extends GetUserMediaError {\n constructor(cause?: Error, public constraint?: string) {\n super(cause);\n this.name = 'OverconstrainedError';\n }\n}\n","'use strict';\n\n/** @type {import('.')} */\nmodule.exports = Error;\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport Logger from '../logger/Logger';\nimport BaseConnectionHealthPolicy from './BaseConnectionHealthPolicy';\nimport ConnectionHealthData from './ConnectionHealthData';\nimport ConnectionHealthPolicy from './ConnectionHealthPolicy';\nimport ConnectionHealthPolicyConfiguration from './ConnectionHealthPolicyConfiguration';\n\nexport default class ReconnectionHealthPolicy\n extends BaseConnectionHealthPolicy\n implements ConnectionHealthPolicy {\n private static CONNECTION_UNHEALTHY_THRESHOLD: number;\n private static CONNECTION_WAIT_TIME_MS: number;\n private static MISSED_PONGS_THRESHOLD: number;\n private static MAXIMUM_AUDIO_DELAY_MS: number;\n private static MAXIMUM_AUDIO_DELAY_DATA_POINTS: number;\n\n private audioDelayPointsOverMaximum = 0;\n\n constructor(\n private logger: Logger,\n configuration: ConnectionHealthPolicyConfiguration,\n data: ConnectionHealthData\n ) {\n super(configuration, data, 'Reconnection Health');\n ReconnectionHealthPolicy.CONNECTION_UNHEALTHY_THRESHOLD =\n configuration.connectionUnhealthyThreshold;\n ReconnectionHealthPolicy.CONNECTION_WAIT_TIME_MS = configuration.connectionWaitTimeMs;\n ReconnectionHealthPolicy.MISSED_PONGS_THRESHOLD = configuration.missedPongsUpperThreshold;\n ReconnectionHealthPolicy.MAXIMUM_AUDIO_DELAY_MS = configuration.maximumAudioDelayMs;\n ReconnectionHealthPolicy.MAXIMUM_AUDIO_DELAY_DATA_POINTS =\n configuration.maximumAudioDelayDataPoints;\n }\n\n health(): number {\n const connectionStartedRecently = this.currentData.isConnectionStartRecent(\n ReconnectionHealthPolicy.CONNECTION_WAIT_TIME_MS\n );\n if (connectionStartedRecently) {\n return 1;\n }\n const noPacketsReceivedRecently =\n this.currentData.consecutiveStatsWithNoPackets >=\n ReconnectionHealthPolicy.CONNECTION_UNHEALTHY_THRESHOLD;\n const missedPongsRecently =\n this.currentData.consecutiveMissedPongs >= ReconnectionHealthPolicy.MISSED_PONGS_THRESHOLD;\n if (this.currentData.audioSpeakerDelayMs > ReconnectionHealthPolicy.MAXIMUM_AUDIO_DELAY_MS) {\n this.audioDelayPointsOverMaximum += 1;\n } else {\n this.audioDelayPointsOverMaximum = 0;\n }\n const hasBadAudioDelay =\n this.audioDelayPointsOverMaximum > ReconnectionHealthPolicy.MAXIMUM_AUDIO_DELAY_DATA_POINTS;\n if (hasBadAudioDelay) {\n this.audioDelayPointsOverMaximum = 0;\n }\n const needsReconnect = noPacketsReceivedRecently || missedPongsRecently || hasBadAudioDelay;\n if (needsReconnect) {\n this.logger.warn(\n `reconnection recommended due to: no packets received: ${noPacketsReceivedRecently}, missed pongs: ${missedPongsRecently}, bad audio delay: ${hasBadAudioDelay}`\n );\n return 0;\n }\n return 1;\n }\n}\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thanks to IE8 for its funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty(createElement('div'), 'a', {\n get: function () { return 7; }\n }).a !== 7;\n});\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { Eq, PartialOrd } from '../utils/Types';\nimport TargetDisplaySize from './TargetDisplaySize';\nimport VideoQualityAdaptationPreference from './VideoQualityAdaptationPreference';\n\nexport default class VideoPreference implements Eq, PartialOrd {\n /**\n * The desired maximum simulcast layers to receive.\n */\n targetSize: TargetDisplaySize;\n\n /**\n * The preference on how to select between resolution and framerate on network constraint.\n *\n * This preference will have no effect unless the sender is encoding in a way such that there\n * are both variable framerate and resolution options available.\n */\n degradationPreference: VideoQualityAdaptationPreference;\n\n /** Initializes a [[VideoPreference]] with the given properties.\n *\n * @param attendeeId Attendee ID of the client\n * @param priority The relative priority of this attendee against others.\n * @param targetSize The desired maximum simulcast layers to receive.\n * @param degradationPreference The preference on how to select between resolution and framerate on network constraint\n */\n constructor(\n public attendeeId: string,\n public priority: number,\n targetSize?: TargetDisplaySize,\n degradationPreference?: VideoQualityAdaptationPreference\n ) {\n this.targetSize = targetSize !== undefined ? targetSize : TargetDisplaySize.Maximum;\n this.degradationPreference =\n degradationPreference !== undefined\n ? degradationPreference\n : VideoQualityAdaptationPreference.Balanced;\n }\n\n partialCompare(other: this): number {\n return this.priority - other.priority;\n }\n\n equals(other: this): boolean {\n return (\n this.attendeeId === other.attendeeId &&\n this.targetSize === other.targetSize &&\n this.priority === other.priority &&\n this.degradationPreference === other.degradationPreference\n );\n }\n\n clone(): VideoPreference {\n return new VideoPreference(\n this.attendeeId,\n this.priority,\n this.targetSize,\n this.degradationPreference\n );\n }\n\n private static readonly LOW_BITRATE_KBPS = 300;\n private static readonly MID_BITRATE_KBPS = 600;\n private static readonly HIGH_BITRATE_KBPS = 1500;\n private static readonly MAXIMUM_BITRATE_KBPS = 10000;\n\n targetSizeToBitrateKbps(targetSize: TargetDisplaySize): number {\n switch (targetSize) {\n case TargetDisplaySize.Maximum:\n return VideoPreference.MAXIMUM_BITRATE_KBPS;\n case TargetDisplaySize.High:\n return VideoPreference.HIGH_BITRATE_KBPS;\n case TargetDisplaySize.Medium:\n return VideoPreference.MID_BITRATE_KBPS;\n case TargetDisplaySize.Low:\n return VideoPreference.LOW_BITRATE_KBPS;\n }\n }\n}\n","/**\n * Node.js module for Forge.\n *\n * @author Dave Longley\n *\n * Copyright 2011-2016 Digital Bazaar, Inc.\n */\nmodule.exports = {\n // default options\n options: {\n usePureJavaScript: false\n }\n};\n","'use strict';\nvar globalThis = require('../internals/global-this');\n\nvar navigator = globalThis.navigator;\nvar userAgent = navigator && navigator.userAgent;\n\nmodule.exports = userAgent ? String(userAgent) : '';\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n","require('../lib/node_loader');\nmodule.exports = {\n ACM: require('./acm'),\n APIGateway: require('./apigateway'),\n ApplicationAutoScaling: require('./applicationautoscaling'),\n AutoScaling: require('./autoscaling'),\n CloudFormation: require('./cloudformation'),\n CloudFront: require('./cloudfront'),\n CloudHSM: require('./cloudhsm'),\n CloudTrail: require('./cloudtrail'),\n CloudWatch: require('./cloudwatch'),\n CloudWatchEvents: require('./cloudwatchevents'),\n CloudWatchLogs: require('./cloudwatchlogs'),\n CodeBuild: require('./codebuild'),\n CodeCommit: require('./codecommit'),\n CodeDeploy: require('./codedeploy'),\n CodePipeline: require('./codepipeline'),\n CognitoIdentity: require('./cognitoidentity'),\n CognitoIdentityServiceProvider: require('./cognitoidentityserviceprovider'),\n CognitoSync: require('./cognitosync'),\n ConfigService: require('./configservice'),\n CUR: require('./cur'),\n DeviceFarm: require('./devicefarm'),\n DirectConnect: require('./directconnect'),\n DynamoDB: require('./dynamodb'),\n DynamoDBStreams: require('./dynamodbstreams'),\n EC2: require('./ec2'),\n ECR: require('./ecr'),\n ECS: require('./ecs'),\n EFS: require('./efs'),\n ElastiCache: require('./elasticache'),\n ElasticBeanstalk: require('./elasticbeanstalk'),\n ELB: require('./elb'),\n ELBv2: require('./elbv2'),\n EMR: require('./emr'),\n ElasticTranscoder: require('./elastictranscoder'),\n Firehose: require('./firehose'),\n GameLift: require('./gamelift'),\n IAM: require('./iam'),\n Inspector: require('./inspector'),\n Iot: require('./iot'),\n IotData: require('./iotdata'),\n Kinesis: require('./kinesis'),\n KMS: require('./kms'),\n Lambda: require('./lambda'),\n LexRuntime: require('./lexruntime'),\n MachineLearning: require('./machinelearning'),\n MarketplaceCommerceAnalytics: require('./marketplacecommerceanalytics'),\n MTurk: require('./mturk'),\n MobileAnalytics: require('./mobileanalytics'),\n OpsWorks: require('./opsworks'),\n Polly: require('./polly'),\n RDS: require('./rds'),\n Redshift: require('./redshift'),\n Rekognition: require('./rekognition'),\n Route53: require('./route53'),\n Route53Domains: require('./route53domains'),\n S3: require('./s3'),\n ServiceCatalog: require('./servicecatalog'),\n SES: require('./ses'),\n SNS: require('./sns'),\n SQS: require('./sqs'),\n SSM: require('./ssm'),\n StorageGateway: require('./storagegateway'),\n STS: require('./sts'),\n XRay: require('./xray'),\n WAF: require('./waf'),\n WorkDocs: require('./workdocs'),\n LexModelBuildingService: require('./lexmodelbuildingservice'),\n Athena: require('./athena'),\n CloudHSMV2: require('./cloudhsmv2'),\n Pricing: require('./pricing'),\n CostExplorer: require('./costexplorer'),\n MediaStoreData: require('./mediastoredata'),\n Comprehend: require('./comprehend'),\n KinesisVideoArchivedMedia: require('./kinesisvideoarchivedmedia'),\n KinesisVideoMedia: require('./kinesisvideomedia'),\n KinesisVideo: require('./kinesisvideo'),\n Translate: require('./translate'),\n ResourceGroups: require('./resourcegroups'),\n Connect: require('./connect'),\n SecretsManager: require('./secretsmanager'),\n IoTAnalytics: require('./iotanalytics'),\n ComprehendMedical: require('./comprehendmedical'),\n Personalize: require('./personalize'),\n PersonalizeEvents: require('./personalizeevents'),\n PersonalizeRuntime: require('./personalizeruntime'),\n ForecastService: require('./forecastservice'),\n ForecastQueryService: require('./forecastqueryservice'),\n MarketplaceCatalog: require('./marketplacecatalog'),\n KinesisVideoSignalingChannels: require('./kinesisvideosignalingchannels'),\n Amp: require('./amp'),\n Location: require('./location'),\n LexRuntimeV2: require('./lexruntimev2')\n};","'use strict';\nvar bind = require('../internals/function-bind-context');\nvar call = require('../internals/function-call');\nvar anObject = require('../internals/an-object');\nvar tryToString = require('../internals/try-to-string');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar getIterator = require('../internals/get-iterator');\nvar getIteratorMethod = require('../internals/get-iterator-method');\nvar iteratorClose = require('../internals/iterator-close');\n\nvar $TypeError = TypeError;\n\nvar Result = function (stopped, result) {\n this.stopped = stopped;\n this.result = result;\n};\n\nvar ResultPrototype = Result.prototype;\n\nmodule.exports = function (iterable, unboundFunction, options) {\n var that = options && options.that;\n var AS_ENTRIES = !!(options && options.AS_ENTRIES);\n var IS_RECORD = !!(options && options.IS_RECORD);\n var IS_ITERATOR = !!(options && options.IS_ITERATOR);\n var INTERRUPTED = !!(options && options.INTERRUPTED);\n var fn = bind(unboundFunction, that);\n var iterator, iterFn, index, length, result, next, step;\n\n var stop = function (condition) {\n if (iterator) iteratorClose(iterator, 'normal', condition);\n return new Result(true, condition);\n };\n\n var callFn = function (value) {\n if (AS_ENTRIES) {\n anObject(value);\n return INTERRUPTED ? fn(value[0], value[1], stop) : fn(value[0], value[1]);\n } return INTERRUPTED ? fn(value, stop) : fn(value);\n };\n\n if (IS_RECORD) {\n iterator = iterable.iterator;\n } else if (IS_ITERATOR) {\n iterator = iterable;\n } else {\n iterFn = getIteratorMethod(iterable);\n if (!iterFn) throw new $TypeError(tryToString(iterable) + ' is not iterable');\n // optimisation for array iterators\n if (isArrayIteratorMethod(iterFn)) {\n for (index = 0, length = lengthOfArrayLike(iterable); length > index; index++) {\n result = callFn(iterable[index]);\n if (result && isPrototypeOf(ResultPrototype, result)) return result;\n } return new Result(false);\n }\n iterator = getIterator(iterable, iterFn);\n }\n\n next = IS_RECORD ? iterable.next : iterator.next;\n while (!(step = call(next, iterator)).done) {\n try {\n result = callFn(step.value);\n } catch (error) {\n iteratorClose(iterator, 'throw', error);\n }\n if (typeof result == 'object' && result && isPrototypeOf(ResultPrototype, result)) return result;\n } return new Result(false);\n};\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst react_1 = __importDefault(require(\"react\"));\nconst Storage_1 = __importDefault(require(\"./Storage\"));\nrequire(\"./Notification.css\");\nconst PushNotification_1 = __importDefault(require(\"./PushNotification\"));\n/**\n * Notification injector, which renders\n * the push notifications rendered\n * by the addNotifcation({}) function.\n *\n * @param {string} position - Must pass as prop. Sets the position of the push notification.\n * position can me 'top-left', 'top-middle', 'top-right', 'bottom-left', 'bottom-middle', 'bottom-right'.\n * Example \n *\n */\nclass Notifications extends react_1.default.Component {\n constructor() {\n super(...arguments);\n this.state = {\n value: [],\n };\n }\n componentDidMount() {\n Storage_1.default.addListener((v) => this.setState({ value: v }));\n }\n render() {\n const { position } = this.props;\n const classN = `rpn-notification-holder ${position || 'top-middle'} supertest`;\n return react_1.default.createElement(\"div\", { className: classN }, this.state.value.map((note, i) => {\n return react_1.default.createElement(PushNotification_1.default, { key: i, closeNotification: Storage_1.default.popAndPush, onClick: note.onClick, id: note.id, theme: note.theme, title: note.title, subtitle: note.subtitle, closeButton: note.closeButton, message: note.message, styling: note.styling });\n }));\n }\n}\n;\nexports.default = Notifications;\n","var AWS = require('../core');\nvar CognitoIdentity = require('../../clients/cognitoidentity');\nvar STS = require('../../clients/sts');\n\n/**\n * Represents credentials retrieved from STS Web Identity Federation using\n * the Amazon Cognito Identity service.\n *\n * By default this provider gets credentials using the\n * {AWS.CognitoIdentity.getCredentialsForIdentity} service operation, which\n * requires either an `IdentityId` or an `IdentityPoolId` (Amazon Cognito\n * Identity Pool ID), which is used to call {AWS.CognitoIdentity.getId} to\n * obtain an `IdentityId`. If the identity or identity pool is not configured in\n * the Amazon Cognito Console to use IAM roles with the appropriate permissions,\n * then additionally a `RoleArn` is required containing the ARN of the IAM trust\n * policy for the Amazon Cognito role that the user will log into. If a `RoleArn`\n * is provided, then this provider gets credentials using the\n * {AWS.STS.assumeRoleWithWebIdentity} service operation, after first getting an\n * Open ID token from {AWS.CognitoIdentity.getOpenIdToken}.\n *\n * In addition, if this credential provider is used to provide authenticated\n * login, the `Logins` map may be set to the tokens provided by the respective\n * identity providers. See {constructor} for an example on creating a credentials\n * object with proper property values.\n *\n * DISCLAIMER: This convenience method leverages the Enhanced (simplified) Authflow. The underlying\n * implementation calls Cognito's `getId()` and `GetCredentialsForIdentity()`.\n * In this flow there is no way to explicitly set a session policy, resulting in\n * STS attaching the default policy and limiting the permissions of the federated role.\n * To be able to explicitly set a session policy, do not use this convenience method.\n * Instead, you can use the Cognito client to call `getId()`, `GetOpenIdToken()` and then use\n * that token with your desired session policy to call STS's `AssumeRoleWithWebIdentity()`\n * For further reading refer to: https://docs.aws.amazon.com/cognito/latest/developerguide/authentication-flow.html\n *\n * ## Refreshing Credentials from Identity Service\n *\n * In addition to AWS credentials expiring after a given amount of time, the\n * login token from the identity provider will also expire. Once this token\n * expires, it will not be usable to refresh AWS credentials, and another\n * token will be needed. The SDK does not manage refreshing of the token value,\n * but this can be done through a \"refresh token\" supported by most identity\n * providers. Consult the documentation for the identity provider for refreshing\n * tokens. Once the refreshed token is acquired, you should make sure to update\n * this new token in the credentials object's {params} property. The following\n * code will update the WebIdentityToken, assuming you have retrieved an updated\n * token from the identity provider:\n *\n * ```javascript\n * AWS.config.credentials.params.Logins['graph.facebook.com'] = updatedToken;\n * ```\n *\n * Future calls to `credentials.refresh()` will now use the new token.\n *\n * @!attribute params\n * @return [map] the map of params passed to\n * {AWS.CognitoIdentity.getId},\n * {AWS.CognitoIdentity.getOpenIdToken}, and\n * {AWS.STS.assumeRoleWithWebIdentity}. To update the token, set the\n * `params.WebIdentityToken` property.\n * @!attribute data\n * @return [map] the raw data response from the call to\n * {AWS.CognitoIdentity.getCredentialsForIdentity}, or\n * {AWS.STS.assumeRoleWithWebIdentity}. Use this if you want to get\n * access to other properties from the response.\n * @!attribute identityId\n * @return [String] the Cognito ID returned by the last call to\n * {AWS.CognitoIdentity.getOpenIdToken}. This ID represents the actual\n * final resolved identity ID from Amazon Cognito.\n */\nAWS.CognitoIdentityCredentials = AWS.util.inherit(AWS.Credentials, {\n /**\n * @api private\n */\n localStorageKey: {\n id: 'aws.cognito.identity-id.',\n providers: 'aws.cognito.identity-providers.'\n },\n\n /**\n * Creates a new credentials object.\n * @example Creating a new credentials object\n * AWS.config.credentials = new AWS.CognitoIdentityCredentials({\n *\n * // either IdentityPoolId or IdentityId is required\n * // See the IdentityPoolId param for AWS.CognitoIdentity.getID (linked below)\n * // See the IdentityId param for AWS.CognitoIdentity.getCredentialsForIdentity\n * // or AWS.CognitoIdentity.getOpenIdToken (linked below)\n * IdentityPoolId: 'us-east-1:1699ebc0-7900-4099-b910-2df94f52a030',\n * IdentityId: 'us-east-1:128d0a74-c82f-4553-916d-90053e4a8b0f'\n *\n * // optional, only necessary when the identity pool is not configured\n * // to use IAM roles in the Amazon Cognito Console\n * // See the RoleArn param for AWS.STS.assumeRoleWithWebIdentity (linked below)\n * RoleArn: 'arn:aws:iam::1234567890:role/MYAPP-CognitoIdentity',\n *\n * // optional tokens, used for authenticated login\n * // See the Logins param for AWS.CognitoIdentity.getID (linked below)\n * Logins: {\n * 'graph.facebook.com': 'FBTOKEN',\n * 'www.amazon.com': 'AMAZONTOKEN',\n * 'accounts.google.com': 'GOOGLETOKEN',\n * 'api.twitter.com': 'TWITTERTOKEN',\n * 'www.digits.com': 'DIGITSTOKEN'\n * },\n *\n * // optional name, defaults to web-identity\n * // See the RoleSessionName param for AWS.STS.assumeRoleWithWebIdentity (linked below)\n * RoleSessionName: 'web',\n *\n * // optional, only necessary when application runs in a browser\n * // and multiple users are signed in at once, used for caching\n * LoginId: 'example@gmail.com'\n *\n * }, {\n * // optionally provide configuration to apply to the underlying service clients\n * // if configuration is not provided, then configuration will be pulled from AWS.config\n *\n * // region should match the region your identity pool is located in\n * region: 'us-east-1',\n *\n * // specify timeout options\n * httpOptions: {\n * timeout: 100\n * }\n * });\n * @see AWS.CognitoIdentity.getId\n * @see AWS.CognitoIdentity.getCredentialsForIdentity\n * @see AWS.STS.assumeRoleWithWebIdentity\n * @see AWS.CognitoIdentity.getOpenIdToken\n * @see AWS.Config\n * @note If a region is not provided in the global AWS.config, or\n * specified in the `clientConfig` to the CognitoIdentityCredentials\n * constructor, you may encounter a 'Missing credentials in config' error\n * when calling making a service call.\n */\n constructor: function CognitoIdentityCredentials(params, clientConfig) {\n AWS.Credentials.call(this);\n this.expired = true;\n this.params = params;\n this.data = null;\n this._identityId = null;\n this._clientConfig = AWS.util.copy(clientConfig || {});\n this.loadCachedId();\n var self = this;\n Object.defineProperty(this, 'identityId', {\n get: function() {\n self.loadCachedId();\n return self._identityId || self.params.IdentityId;\n },\n set: function(identityId) {\n self._identityId = identityId;\n }\n });\n },\n\n /**\n * Refreshes credentials using {AWS.CognitoIdentity.getCredentialsForIdentity},\n * or {AWS.STS.assumeRoleWithWebIdentity}.\n *\n * @callback callback function(err)\n * Called when the STS service responds (or fails). When\n * this callback is called with no error, it means that the credentials\n * information has been loaded into the object (as the `accessKeyId`,\n * `secretAccessKey`, and `sessionToken` properties).\n * @param err [Error] if an error occurred, this value will be filled\n * @see AWS.Credentials.get\n */\n refresh: function refresh(callback) {\n this.coalesceRefresh(callback || AWS.util.fn.callback);\n },\n\n /**\n * @api private\n * @param callback\n */\n load: function load(callback) {\n var self = this;\n self.createClients();\n self.data = null;\n self._identityId = null;\n self.getId(function(err) {\n if (!err) {\n if (!self.params.RoleArn) {\n self.getCredentialsForIdentity(callback);\n } else {\n self.getCredentialsFromSTS(callback);\n }\n } else {\n self.clearIdOnNotAuthorized(err);\n callback(err);\n }\n });\n },\n\n /**\n * Clears the cached Cognito ID associated with the currently configured\n * identity pool ID. Use this to manually invalidate your cache if\n * the identity pool ID was deleted.\n */\n clearCachedId: function clearCache() {\n this._identityId = null;\n delete this.params.IdentityId;\n\n var poolId = this.params.IdentityPoolId;\n var loginId = this.params.LoginId || '';\n delete this.storage[this.localStorageKey.id + poolId + loginId];\n delete this.storage[this.localStorageKey.providers + poolId + loginId];\n },\n\n /**\n * @api private\n */\n clearIdOnNotAuthorized: function clearIdOnNotAuthorized(err) {\n var self = this;\n if (err.code == 'NotAuthorizedException') {\n self.clearCachedId();\n }\n },\n\n /**\n * Retrieves a Cognito ID, loading from cache if it was already retrieved\n * on this device.\n *\n * @callback callback function(err, identityId)\n * @param err [Error, null] an error object if the call failed or null if\n * it succeeded.\n * @param identityId [String, null] if successful, the callback will return\n * the Cognito ID.\n * @note If not loaded explicitly, the Cognito ID is loaded and stored in\n * localStorage in the browser environment of a device.\n * @api private\n */\n getId: function getId(callback) {\n var self = this;\n if (typeof self.params.IdentityId === 'string') {\n return callback(null, self.params.IdentityId);\n }\n\n self.cognito.getId(function(err, data) {\n if (!err && data.IdentityId) {\n self.params.IdentityId = data.IdentityId;\n callback(null, data.IdentityId);\n } else {\n callback(err);\n }\n });\n },\n\n\n /**\n * @api private\n */\n loadCredentials: function loadCredentials(data, credentials) {\n if (!data || !credentials) return;\n credentials.expired = false;\n credentials.accessKeyId = data.Credentials.AccessKeyId;\n credentials.secretAccessKey = data.Credentials.SecretKey;\n credentials.sessionToken = data.Credentials.SessionToken;\n credentials.expireTime = data.Credentials.Expiration;\n },\n\n /**\n * @api private\n */\n getCredentialsForIdentity: function getCredentialsForIdentity(callback) {\n var self = this;\n self.cognito.getCredentialsForIdentity(function(err, data) {\n if (!err) {\n self.cacheId(data);\n self.data = data;\n self.loadCredentials(self.data, self);\n } else {\n self.clearIdOnNotAuthorized(err);\n }\n callback(err);\n });\n },\n\n /**\n * @api private\n */\n getCredentialsFromSTS: function getCredentialsFromSTS(callback) {\n var self = this;\n self.cognito.getOpenIdToken(function(err, data) {\n if (!err) {\n self.cacheId(data);\n self.params.WebIdentityToken = data.Token;\n self.webIdentityCredentials.refresh(function(webErr) {\n if (!webErr) {\n self.data = self.webIdentityCredentials.data;\n self.sts.credentialsFrom(self.data, self);\n }\n callback(webErr);\n });\n } else {\n self.clearIdOnNotAuthorized(err);\n callback(err);\n }\n });\n },\n\n /**\n * @api private\n */\n loadCachedId: function loadCachedId() {\n var self = this;\n\n // in the browser we source default IdentityId from localStorage\n if (AWS.util.isBrowser() && !self.params.IdentityId) {\n var id = self.getStorage('id');\n if (id && self.params.Logins) {\n var actualProviders = Object.keys(self.params.Logins);\n var cachedProviders =\n (self.getStorage('providers') || '').split(',');\n\n // only load ID if at least one provider used this ID before\n var intersect = cachedProviders.filter(function(n) {\n return actualProviders.indexOf(n) !== -1;\n });\n if (intersect.length !== 0) {\n self.params.IdentityId = id;\n }\n } else if (id) {\n self.params.IdentityId = id;\n }\n }\n },\n\n /**\n * @api private\n */\n createClients: function() {\n var clientConfig = this._clientConfig;\n this.webIdentityCredentials = this.webIdentityCredentials ||\n new AWS.WebIdentityCredentials(this.params, clientConfig);\n if (!this.cognito) {\n var cognitoConfig = AWS.util.merge({}, clientConfig);\n cognitoConfig.params = this.params;\n this.cognito = new CognitoIdentity(cognitoConfig);\n }\n this.sts = this.sts || new STS(clientConfig);\n },\n\n /**\n * @api private\n */\n cacheId: function cacheId(data) {\n this._identityId = data.IdentityId;\n this.params.IdentityId = this._identityId;\n\n // cache this IdentityId in browser localStorage if possible\n if (AWS.util.isBrowser()) {\n this.setStorage('id', data.IdentityId);\n\n if (this.params.Logins) {\n this.setStorage('providers', Object.keys(this.params.Logins).join(','));\n }\n }\n },\n\n /**\n * @api private\n */\n getStorage: function getStorage(key) {\n return this.storage[this.localStorageKey[key] + this.params.IdentityPoolId + (this.params.LoginId || '')];\n },\n\n /**\n * @api private\n */\n setStorage: function setStorage(key, val) {\n try {\n this.storage[this.localStorageKey[key] + this.params.IdentityPoolId + (this.params.LoginId || '')] = val;\n } catch (_) {}\n },\n\n /**\n * @api private\n */\n storage: (function() {\n try {\n var storage = AWS.util.isBrowser() && window.localStorage !== null && typeof window.localStorage === 'object' ?\n window.localStorage : {};\n\n // Test set/remove which would throw an error in Safari's private browsing\n storage['aws.test-storage'] = 'foobar';\n delete storage['aws.test-storage'];\n\n return storage;\n } catch (_) {\n return {};\n }\n })()\n});\n","'use strict';\nvar isObject = require('../internals/is-object');\n\nvar $String = String;\nvar $TypeError = TypeError;\n\n// `Assert: Type(argument) is Object`\nmodule.exports = function (argument) {\n if (isObject(argument)) return argument;\n throw new $TypeError($String(argument) + ' is not an object');\n};\n","/**\n * Supported cipher modes.\n *\n * @author Dave Longley\n *\n * Copyright (c) 2010-2014 Digital Bazaar, Inc.\n */\nvar forge = require('./forge');\nrequire('./util');\n\nforge.cipher = forge.cipher || {};\n\n// supported cipher modes\nvar modes = module.exports = forge.cipher.modes = forge.cipher.modes || {};\n\n/** Electronic codebook (ECB) (Don't use this; it's not secure) **/\n\nmodes.ecb = function(options) {\n options = options || {};\n this.name = 'ECB';\n this.cipher = options.cipher;\n this.blockSize = options.blockSize || 16;\n this._ints = this.blockSize / 4;\n this._inBlock = new Array(this._ints);\n this._outBlock = new Array(this._ints);\n};\n\nmodes.ecb.prototype.start = function(options) {};\n\nmodes.ecb.prototype.encrypt = function(input, output, finish) {\n // not enough input to encrypt\n if(input.length() < this.blockSize && !(finish && input.length() > 0)) {\n return true;\n }\n\n // get next block\n for(var i = 0; i < this._ints; ++i) {\n this._inBlock[i] = input.getInt32();\n }\n\n // encrypt block\n this.cipher.encrypt(this._inBlock, this._outBlock);\n\n // write output\n for(var i = 0; i < this._ints; ++i) {\n output.putInt32(this._outBlock[i]);\n }\n};\n\nmodes.ecb.prototype.decrypt = function(input, output, finish) {\n // not enough input to decrypt\n if(input.length() < this.blockSize && !(finish && input.length() > 0)) {\n return true;\n }\n\n // get next block\n for(var i = 0; i < this._ints; ++i) {\n this._inBlock[i] = input.getInt32();\n }\n\n // decrypt block\n this.cipher.decrypt(this._inBlock, this._outBlock);\n\n // write output\n for(var i = 0; i < this._ints; ++i) {\n output.putInt32(this._outBlock[i]);\n }\n};\n\nmodes.ecb.prototype.pad = function(input, options) {\n // add PKCS#7 padding to block (each pad byte is the\n // value of the number of pad bytes)\n var padding = (input.length() === this.blockSize ?\n this.blockSize : (this.blockSize - input.length()));\n input.fillWithByte(padding, padding);\n return true;\n};\n\nmodes.ecb.prototype.unpad = function(output, options) {\n // check for error: input data not a multiple of blockSize\n if(options.overflow > 0) {\n return false;\n }\n\n // ensure padding byte count is valid\n var len = output.length();\n var count = output.at(len - 1);\n if(count > (this.blockSize << 2)) {\n return false;\n }\n\n // trim off padding bytes\n output.truncate(count);\n return true;\n};\n\n/** Cipher-block Chaining (CBC) **/\n\nmodes.cbc = function(options) {\n options = options || {};\n this.name = 'CBC';\n this.cipher = options.cipher;\n this.blockSize = options.blockSize || 16;\n this._ints = this.blockSize / 4;\n this._inBlock = new Array(this._ints);\n this._outBlock = new Array(this._ints);\n};\n\nmodes.cbc.prototype.start = function(options) {\n // Note: legacy support for using IV residue (has security flaws)\n // if IV is null, reuse block from previous processing\n if(options.iv === null) {\n // must have a previous block\n if(!this._prev) {\n throw new Error('Invalid IV parameter.');\n }\n this._iv = this._prev.slice(0);\n } else if(!('iv' in options)) {\n throw new Error('Invalid IV parameter.');\n } else {\n // save IV as \"previous\" block\n this._iv = transformIV(options.iv, this.blockSize);\n this._prev = this._iv.slice(0);\n }\n};\n\nmodes.cbc.prototype.encrypt = function(input, output, finish) {\n // not enough input to encrypt\n if(input.length() < this.blockSize && !(finish && input.length() > 0)) {\n return true;\n }\n\n // get next block\n // CBC XOR's IV (or previous block) with plaintext\n for(var i = 0; i < this._ints; ++i) {\n this._inBlock[i] = this._prev[i] ^ input.getInt32();\n }\n\n // encrypt block\n this.cipher.encrypt(this._inBlock, this._outBlock);\n\n // write output, save previous block\n for(var i = 0; i < this._ints; ++i) {\n output.putInt32(this._outBlock[i]);\n }\n this._prev = this._outBlock;\n};\n\nmodes.cbc.prototype.decrypt = function(input, output, finish) {\n // not enough input to decrypt\n if(input.length() < this.blockSize && !(finish && input.length() > 0)) {\n return true;\n }\n\n // get next block\n for(var i = 0; i < this._ints; ++i) {\n this._inBlock[i] = input.getInt32();\n }\n\n // decrypt block\n this.cipher.decrypt(this._inBlock, this._outBlock);\n\n // write output, save previous ciphered block\n // CBC XOR's IV (or previous block) with ciphertext\n for(var i = 0; i < this._ints; ++i) {\n output.putInt32(this._prev[i] ^ this._outBlock[i]);\n }\n this._prev = this._inBlock.slice(0);\n};\n\nmodes.cbc.prototype.pad = function(input, options) {\n // add PKCS#7 padding to block (each pad byte is the\n // value of the number of pad bytes)\n var padding = (input.length() === this.blockSize ?\n this.blockSize : (this.blockSize - input.length()));\n input.fillWithByte(padding, padding);\n return true;\n};\n\nmodes.cbc.prototype.unpad = function(output, options) {\n // check for error: input data not a multiple of blockSize\n if(options.overflow > 0) {\n return false;\n }\n\n // ensure padding byte count is valid\n var len = output.length();\n var count = output.at(len - 1);\n if(count > (this.blockSize << 2)) {\n return false;\n }\n\n // trim off padding bytes\n output.truncate(count);\n return true;\n};\n\n/** Cipher feedback (CFB) **/\n\nmodes.cfb = function(options) {\n options = options || {};\n this.name = 'CFB';\n this.cipher = options.cipher;\n this.blockSize = options.blockSize || 16;\n this._ints = this.blockSize / 4;\n this._inBlock = null;\n this._outBlock = new Array(this._ints);\n this._partialBlock = new Array(this._ints);\n this._partialOutput = forge.util.createBuffer();\n this._partialBytes = 0;\n};\n\nmodes.cfb.prototype.start = function(options) {\n if(!('iv' in options)) {\n throw new Error('Invalid IV parameter.');\n }\n // use IV as first input\n this._iv = transformIV(options.iv, this.blockSize);\n this._inBlock = this._iv.slice(0);\n this._partialBytes = 0;\n};\n\nmodes.cfb.prototype.encrypt = function(input, output, finish) {\n // not enough input to encrypt\n var inputLength = input.length();\n if(inputLength === 0) {\n return true;\n }\n\n // encrypt block\n this.cipher.encrypt(this._inBlock, this._outBlock);\n\n // handle full block\n if(this._partialBytes === 0 && inputLength >= this.blockSize) {\n // XOR input with output, write input as output\n for(var i = 0; i < this._ints; ++i) {\n this._inBlock[i] = input.getInt32() ^ this._outBlock[i];\n output.putInt32(this._inBlock[i]);\n }\n return;\n }\n\n // handle partial block\n var partialBytes = (this.blockSize - inputLength) % this.blockSize;\n if(partialBytes > 0) {\n partialBytes = this.blockSize - partialBytes;\n }\n\n // XOR input with output, write input as partial output\n this._partialOutput.clear();\n for(var i = 0; i < this._ints; ++i) {\n this._partialBlock[i] = input.getInt32() ^ this._outBlock[i];\n this._partialOutput.putInt32(this._partialBlock[i]);\n }\n\n if(partialBytes > 0) {\n // block still incomplete, restore input buffer\n input.read -= this.blockSize;\n } else {\n // block complete, update input block\n for(var i = 0; i < this._ints; ++i) {\n this._inBlock[i] = this._partialBlock[i];\n }\n }\n\n // skip any previous partial bytes\n if(this._partialBytes > 0) {\n this._partialOutput.getBytes(this._partialBytes);\n }\n\n if(partialBytes > 0 && !finish) {\n output.putBytes(this._partialOutput.getBytes(\n partialBytes - this._partialBytes));\n this._partialBytes = partialBytes;\n return true;\n }\n\n output.putBytes(this._partialOutput.getBytes(\n inputLength - this._partialBytes));\n this._partialBytes = 0;\n};\n\nmodes.cfb.prototype.decrypt = function(input, output, finish) {\n // not enough input to decrypt\n var inputLength = input.length();\n if(inputLength === 0) {\n return true;\n }\n\n // encrypt block (CFB always uses encryption mode)\n this.cipher.encrypt(this._inBlock, this._outBlock);\n\n // handle full block\n if(this._partialBytes === 0 && inputLength >= this.blockSize) {\n // XOR input with output, write input as output\n for(var i = 0; i < this._ints; ++i) {\n this._inBlock[i] = input.getInt32();\n output.putInt32(this._inBlock[i] ^ this._outBlock[i]);\n }\n return;\n }\n\n // handle partial block\n var partialBytes = (this.blockSize - inputLength) % this.blockSize;\n if(partialBytes > 0) {\n partialBytes = this.blockSize - partialBytes;\n }\n\n // XOR input with output, write input as partial output\n this._partialOutput.clear();\n for(var i = 0; i < this._ints; ++i) {\n this._partialBlock[i] = input.getInt32();\n this._partialOutput.putInt32(this._partialBlock[i] ^ this._outBlock[i]);\n }\n\n if(partialBytes > 0) {\n // block still incomplete, restore input buffer\n input.read -= this.blockSize;\n } else {\n // block complete, update input block\n for(var i = 0; i < this._ints; ++i) {\n this._inBlock[i] = this._partialBlock[i];\n }\n }\n\n // skip any previous partial bytes\n if(this._partialBytes > 0) {\n this._partialOutput.getBytes(this._partialBytes);\n }\n\n if(partialBytes > 0 && !finish) {\n output.putBytes(this._partialOutput.getBytes(\n partialBytes - this._partialBytes));\n this._partialBytes = partialBytes;\n return true;\n }\n\n output.putBytes(this._partialOutput.getBytes(\n inputLength - this._partialBytes));\n this._partialBytes = 0;\n};\n\n/** Output feedback (OFB) **/\n\nmodes.ofb = function(options) {\n options = options || {};\n this.name = 'OFB';\n this.cipher = options.cipher;\n this.blockSize = options.blockSize || 16;\n this._ints = this.blockSize / 4;\n this._inBlock = null;\n this._outBlock = new Array(this._ints);\n this._partialOutput = forge.util.createBuffer();\n this._partialBytes = 0;\n};\n\nmodes.ofb.prototype.start = function(options) {\n if(!('iv' in options)) {\n throw new Error('Invalid IV parameter.');\n }\n // use IV as first input\n this._iv = transformIV(options.iv, this.blockSize);\n this._inBlock = this._iv.slice(0);\n this._partialBytes = 0;\n};\n\nmodes.ofb.prototype.encrypt = function(input, output, finish) {\n // not enough input to encrypt\n var inputLength = input.length();\n if(input.length() === 0) {\n return true;\n }\n\n // encrypt block (OFB always uses encryption mode)\n this.cipher.encrypt(this._inBlock, this._outBlock);\n\n // handle full block\n if(this._partialBytes === 0 && inputLength >= this.blockSize) {\n // XOR input with output and update next input\n for(var i = 0; i < this._ints; ++i) {\n output.putInt32(input.getInt32() ^ this._outBlock[i]);\n this._inBlock[i] = this._outBlock[i];\n }\n return;\n }\n\n // handle partial block\n var partialBytes = (this.blockSize - inputLength) % this.blockSize;\n if(partialBytes > 0) {\n partialBytes = this.blockSize - partialBytes;\n }\n\n // XOR input with output\n this._partialOutput.clear();\n for(var i = 0; i < this._ints; ++i) {\n this._partialOutput.putInt32(input.getInt32() ^ this._outBlock[i]);\n }\n\n if(partialBytes > 0) {\n // block still incomplete, restore input buffer\n input.read -= this.blockSize;\n } else {\n // block complete, update input block\n for(var i = 0; i < this._ints; ++i) {\n this._inBlock[i] = this._outBlock[i];\n }\n }\n\n // skip any previous partial bytes\n if(this._partialBytes > 0) {\n this._partialOutput.getBytes(this._partialBytes);\n }\n\n if(partialBytes > 0 && !finish) {\n output.putBytes(this._partialOutput.getBytes(\n partialBytes - this._partialBytes));\n this._partialBytes = partialBytes;\n return true;\n }\n\n output.putBytes(this._partialOutput.getBytes(\n inputLength - this._partialBytes));\n this._partialBytes = 0;\n};\n\nmodes.ofb.prototype.decrypt = modes.ofb.prototype.encrypt;\n\n/** Counter (CTR) **/\n\nmodes.ctr = function(options) {\n options = options || {};\n this.name = 'CTR';\n this.cipher = options.cipher;\n this.blockSize = options.blockSize || 16;\n this._ints = this.blockSize / 4;\n this._inBlock = null;\n this._outBlock = new Array(this._ints);\n this._partialOutput = forge.util.createBuffer();\n this._partialBytes = 0;\n};\n\nmodes.ctr.prototype.start = function(options) {\n if(!('iv' in options)) {\n throw new Error('Invalid IV parameter.');\n }\n // use IV as first input\n this._iv = transformIV(options.iv, this.blockSize);\n this._inBlock = this._iv.slice(0);\n this._partialBytes = 0;\n};\n\nmodes.ctr.prototype.encrypt = function(input, output, finish) {\n // not enough input to encrypt\n var inputLength = input.length();\n if(inputLength === 0) {\n return true;\n }\n\n // encrypt block (CTR always uses encryption mode)\n this.cipher.encrypt(this._inBlock, this._outBlock);\n\n // handle full block\n if(this._partialBytes === 0 && inputLength >= this.blockSize) {\n // XOR input with output\n for(var i = 0; i < this._ints; ++i) {\n output.putInt32(input.getInt32() ^ this._outBlock[i]);\n }\n } else {\n // handle partial block\n var partialBytes = (this.blockSize - inputLength) % this.blockSize;\n if(partialBytes > 0) {\n partialBytes = this.blockSize - partialBytes;\n }\n\n // XOR input with output\n this._partialOutput.clear();\n for(var i = 0; i < this._ints; ++i) {\n this._partialOutput.putInt32(input.getInt32() ^ this._outBlock[i]);\n }\n\n if(partialBytes > 0) {\n // block still incomplete, restore input buffer\n input.read -= this.blockSize;\n }\n\n // skip any previous partial bytes\n if(this._partialBytes > 0) {\n this._partialOutput.getBytes(this._partialBytes);\n }\n\n if(partialBytes > 0 && !finish) {\n output.putBytes(this._partialOutput.getBytes(\n partialBytes - this._partialBytes));\n this._partialBytes = partialBytes;\n return true;\n }\n\n output.putBytes(this._partialOutput.getBytes(\n inputLength - this._partialBytes));\n this._partialBytes = 0;\n }\n\n // block complete, increment counter (input block)\n inc32(this._inBlock);\n};\n\nmodes.ctr.prototype.decrypt = modes.ctr.prototype.encrypt;\n\n/** Galois/Counter Mode (GCM) **/\n\nmodes.gcm = function(options) {\n options = options || {};\n this.name = 'GCM';\n this.cipher = options.cipher;\n this.blockSize = options.blockSize || 16;\n this._ints = this.blockSize / 4;\n this._inBlock = new Array(this._ints);\n this._outBlock = new Array(this._ints);\n this._partialOutput = forge.util.createBuffer();\n this._partialBytes = 0;\n\n // R is actually this value concatenated with 120 more zero bits, but\n // we only XOR against R so the other zeros have no effect -- we just\n // apply this value to the first integer in a block\n this._R = 0xE1000000;\n};\n\nmodes.gcm.prototype.start = function(options) {\n if(!('iv' in options)) {\n throw new Error('Invalid IV parameter.');\n }\n // ensure IV is a byte buffer\n var iv = forge.util.createBuffer(options.iv);\n\n // no ciphered data processed yet\n this._cipherLength = 0;\n\n // default additional data is none\n var additionalData;\n if('additionalData' in options) {\n additionalData = forge.util.createBuffer(options.additionalData);\n } else {\n additionalData = forge.util.createBuffer();\n }\n\n // default tag length is 128 bits\n if('tagLength' in options) {\n this._tagLength = options.tagLength;\n } else {\n this._tagLength = 128;\n }\n\n // if tag is given, ensure tag matches tag length\n this._tag = null;\n if(options.decrypt) {\n // save tag to check later\n this._tag = forge.util.createBuffer(options.tag).getBytes();\n if(this._tag.length !== (this._tagLength / 8)) {\n throw new Error('Authentication tag does not match tag length.');\n }\n }\n\n // create tmp storage for hash calculation\n this._hashBlock = new Array(this._ints);\n\n // no tag generated yet\n this.tag = null;\n\n // generate hash subkey\n // (apply block cipher to \"zero\" block)\n this._hashSubkey = new Array(this._ints);\n this.cipher.encrypt([0, 0, 0, 0], this._hashSubkey);\n\n // generate table M\n // use 4-bit tables (32 component decomposition of a 16 byte value)\n // 8-bit tables take more space and are known to have security\n // vulnerabilities (in native implementations)\n this.componentBits = 4;\n this._m = this.generateHashTable(this._hashSubkey, this.componentBits);\n\n // Note: support IV length different from 96 bits? (only supporting\n // 96 bits is recommended by NIST SP-800-38D)\n // generate J_0\n var ivLength = iv.length();\n if(ivLength === 12) {\n // 96-bit IV\n this._j0 = [iv.getInt32(), iv.getInt32(), iv.getInt32(), 1];\n } else {\n // IV is NOT 96-bits\n this._j0 = [0, 0, 0, 0];\n while(iv.length() > 0) {\n this._j0 = this.ghash(\n this._hashSubkey, this._j0,\n [iv.getInt32(), iv.getInt32(), iv.getInt32(), iv.getInt32()]);\n }\n this._j0 = this.ghash(\n this._hashSubkey, this._j0, [0, 0].concat(from64To32(ivLength * 8)));\n }\n\n // generate ICB (initial counter block)\n this._inBlock = this._j0.slice(0);\n inc32(this._inBlock);\n this._partialBytes = 0;\n\n // consume authentication data\n additionalData = forge.util.createBuffer(additionalData);\n // save additional data length as a BE 64-bit number\n this._aDataLength = from64To32(additionalData.length() * 8);\n // pad additional data to 128 bit (16 byte) block size\n var overflow = additionalData.length() % this.blockSize;\n if(overflow) {\n additionalData.fillWithByte(0, this.blockSize - overflow);\n }\n this._s = [0, 0, 0, 0];\n while(additionalData.length() > 0) {\n this._s = this.ghash(this._hashSubkey, this._s, [\n additionalData.getInt32(),\n additionalData.getInt32(),\n additionalData.getInt32(),\n additionalData.getInt32()\n ]);\n }\n};\n\nmodes.gcm.prototype.encrypt = function(input, output, finish) {\n // not enough input to encrypt\n var inputLength = input.length();\n if(inputLength === 0) {\n return true;\n }\n\n // encrypt block\n this.cipher.encrypt(this._inBlock, this._outBlock);\n\n // handle full block\n if(this._partialBytes === 0 && inputLength >= this.blockSize) {\n // XOR input with output\n for(var i = 0; i < this._ints; ++i) {\n output.putInt32(this._outBlock[i] ^= input.getInt32());\n }\n this._cipherLength += this.blockSize;\n } else {\n // handle partial block\n var partialBytes = (this.blockSize - inputLength) % this.blockSize;\n if(partialBytes > 0) {\n partialBytes = this.blockSize - partialBytes;\n }\n\n // XOR input with output\n this._partialOutput.clear();\n for(var i = 0; i < this._ints; ++i) {\n this._partialOutput.putInt32(input.getInt32() ^ this._outBlock[i]);\n }\n\n if(partialBytes <= 0 || finish) {\n // handle overflow prior to hashing\n if(finish) {\n // get block overflow\n var overflow = inputLength % this.blockSize;\n this._cipherLength += overflow;\n // truncate for hash function\n this._partialOutput.truncate(this.blockSize - overflow);\n } else {\n this._cipherLength += this.blockSize;\n }\n\n // get output block for hashing\n for(var i = 0; i < this._ints; ++i) {\n this._outBlock[i] = this._partialOutput.getInt32();\n }\n this._partialOutput.read -= this.blockSize;\n }\n\n // skip any previous partial bytes\n if(this._partialBytes > 0) {\n this._partialOutput.getBytes(this._partialBytes);\n }\n\n if(partialBytes > 0 && !finish) {\n // block still incomplete, restore input buffer, get partial output,\n // and return early\n input.read -= this.blockSize;\n output.putBytes(this._partialOutput.getBytes(\n partialBytes - this._partialBytes));\n this._partialBytes = partialBytes;\n return true;\n }\n\n output.putBytes(this._partialOutput.getBytes(\n inputLength - this._partialBytes));\n this._partialBytes = 0;\n }\n\n // update hash block S\n this._s = this.ghash(this._hashSubkey, this._s, this._outBlock);\n\n // increment counter (input block)\n inc32(this._inBlock);\n};\n\nmodes.gcm.prototype.decrypt = function(input, output, finish) {\n // not enough input to decrypt\n var inputLength = input.length();\n if(inputLength < this.blockSize && !(finish && inputLength > 0)) {\n return true;\n }\n\n // encrypt block (GCM always uses encryption mode)\n this.cipher.encrypt(this._inBlock, this._outBlock);\n\n // increment counter (input block)\n inc32(this._inBlock);\n\n // update hash block S\n this._hashBlock[0] = input.getInt32();\n this._hashBlock[1] = input.getInt32();\n this._hashBlock[2] = input.getInt32();\n this._hashBlock[3] = input.getInt32();\n this._s = this.ghash(this._hashSubkey, this._s, this._hashBlock);\n\n // XOR hash input with output\n for(var i = 0; i < this._ints; ++i) {\n output.putInt32(this._outBlock[i] ^ this._hashBlock[i]);\n }\n\n // increment cipher data length\n if(inputLength < this.blockSize) {\n this._cipherLength += inputLength % this.blockSize;\n } else {\n this._cipherLength += this.blockSize;\n }\n};\n\nmodes.gcm.prototype.afterFinish = function(output, options) {\n var rval = true;\n\n // handle overflow\n if(options.decrypt && options.overflow) {\n output.truncate(this.blockSize - options.overflow);\n }\n\n // handle authentication tag\n this.tag = forge.util.createBuffer();\n\n // concatenate additional data length with cipher length\n var lengths = this._aDataLength.concat(from64To32(this._cipherLength * 8));\n\n // include lengths in hash\n this._s = this.ghash(this._hashSubkey, this._s, lengths);\n\n // do GCTR(J_0, S)\n var tag = [];\n this.cipher.encrypt(this._j0, tag);\n for(var i = 0; i < this._ints; ++i) {\n this.tag.putInt32(this._s[i] ^ tag[i]);\n }\n\n // trim tag to length\n this.tag.truncate(this.tag.length() % (this._tagLength / 8));\n\n // check authentication tag\n if(options.decrypt && this.tag.bytes() !== this._tag) {\n rval = false;\n }\n\n return rval;\n};\n\n/**\n * See NIST SP-800-38D 6.3 (Algorithm 1). This function performs Galois\n * field multiplication. The field, GF(2^128), is defined by the polynomial:\n *\n * x^128 + x^7 + x^2 + x + 1\n *\n * Which is represented in little-endian binary form as: 11100001 (0xe1). When\n * the value of a coefficient is 1, a bit is set. The value R, is the\n * concatenation of this value and 120 zero bits, yielding a 128-bit value\n * which matches the block size.\n *\n * This function will multiply two elements (vectors of bytes), X and Y, in\n * the field GF(2^128). The result is initialized to zero. For each bit of\n * X (out of 128), x_i, if x_i is set, then the result is multiplied (XOR'd)\n * by the current value of Y. For each bit, the value of Y will be raised by\n * a power of x (multiplied by the polynomial x). This can be achieved by\n * shifting Y once to the right. If the current value of Y, prior to being\n * multiplied by x, has 0 as its LSB, then it is a 127th degree polynomial.\n * Otherwise, we must divide by R after shifting to find the remainder.\n *\n * @param x the first block to multiply by the second.\n * @param y the second block to multiply by the first.\n *\n * @return the block result of the multiplication.\n */\nmodes.gcm.prototype.multiply = function(x, y) {\n var z_i = [0, 0, 0, 0];\n var v_i = y.slice(0);\n\n // calculate Z_128 (block has 128 bits)\n for(var i = 0; i < 128; ++i) {\n // if x_i is 0, Z_{i+1} = Z_i (unchanged)\n // else Z_{i+1} = Z_i ^ V_i\n // get x_i by finding 32-bit int position, then left shift 1 by remainder\n var x_i = x[(i / 32) | 0] & (1 << (31 - i % 32));\n if(x_i) {\n z_i[0] ^= v_i[0];\n z_i[1] ^= v_i[1];\n z_i[2] ^= v_i[2];\n z_i[3] ^= v_i[3];\n }\n\n // if LSB(V_i) is 1, V_i = V_i >> 1\n // else V_i = (V_i >> 1) ^ R\n this.pow(v_i, v_i);\n }\n\n return z_i;\n};\n\nmodes.gcm.prototype.pow = function(x, out) {\n // if LSB(x) is 1, x = x >>> 1\n // else x = (x >>> 1) ^ R\n var lsb = x[3] & 1;\n\n // always do x >>> 1:\n // starting with the rightmost integer, shift each integer to the right\n // one bit, pulling in the bit from the integer to the left as its top\n // most bit (do this for the last 3 integers)\n for(var i = 3; i > 0; --i) {\n out[i] = (x[i] >>> 1) | ((x[i - 1] & 1) << 31);\n }\n // shift the first integer normally\n out[0] = x[0] >>> 1;\n\n // if lsb was not set, then polynomial had a degree of 127 and doesn't\n // need to divided; otherwise, XOR with R to find the remainder; we only\n // need to XOR the first integer since R technically ends w/120 zero bits\n if(lsb) {\n out[0] ^= this._R;\n }\n};\n\nmodes.gcm.prototype.tableMultiply = function(x) {\n // assumes 4-bit tables are used\n var z = [0, 0, 0, 0];\n for(var i = 0; i < 32; ++i) {\n var idx = (i / 8) | 0;\n var x_i = (x[idx] >>> ((7 - (i % 8)) * 4)) & 0xF;\n var ah = this._m[i][x_i];\n z[0] ^= ah[0];\n z[1] ^= ah[1];\n z[2] ^= ah[2];\n z[3] ^= ah[3];\n }\n return z;\n};\n\n/**\n * A continuing version of the GHASH algorithm that operates on a single\n * block. The hash block, last hash value (Ym) and the new block to hash\n * are given.\n *\n * @param h the hash block.\n * @param y the previous value for Ym, use [0, 0, 0, 0] for a new hash.\n * @param x the block to hash.\n *\n * @return the hashed value (Ym).\n */\nmodes.gcm.prototype.ghash = function(h, y, x) {\n y[0] ^= x[0];\n y[1] ^= x[1];\n y[2] ^= x[2];\n y[3] ^= x[3];\n return this.tableMultiply(y);\n //return this.multiply(y, h);\n};\n\n/**\n * Precomputes a table for multiplying against the hash subkey. This\n * mechanism provides a substantial speed increase over multiplication\n * performed without a table. The table-based multiplication this table is\n * for solves X * H by multiplying each component of X by H and then\n * composing the results together using XOR.\n *\n * This function can be used to generate tables with different bit sizes\n * for the components, however, this implementation assumes there are\n * 32 components of X (which is a 16 byte vector), therefore each component\n * takes 4-bits (so the table is constructed with bits=4).\n *\n * @param h the hash subkey.\n * @param bits the bit size for a component.\n */\nmodes.gcm.prototype.generateHashTable = function(h, bits) {\n // TODO: There are further optimizations that would use only the\n // first table M_0 (or some variant) along with a remainder table;\n // this can be explored in the future\n var multiplier = 8 / bits;\n var perInt = 4 * multiplier;\n var size = 16 * multiplier;\n var m = new Array(size);\n for(var i = 0; i < size; ++i) {\n var tmp = [0, 0, 0, 0];\n var idx = (i / perInt) | 0;\n var shft = ((perInt - 1 - (i % perInt)) * bits);\n tmp[idx] = (1 << (bits - 1)) << shft;\n m[i] = this.generateSubHashTable(this.multiply(tmp, h), bits);\n }\n return m;\n};\n\n/**\n * Generates a table for multiplying against the hash subkey for one\n * particular component (out of all possible component values).\n *\n * @param mid the pre-multiplied value for the middle key of the table.\n * @param bits the bit size for a component.\n */\nmodes.gcm.prototype.generateSubHashTable = function(mid, bits) {\n // compute the table quickly by minimizing the number of\n // POW operations -- they only need to be performed for powers of 2,\n // all other entries can be composed from those powers using XOR\n var size = 1 << bits;\n var half = size >>> 1;\n var m = new Array(size);\n m[half] = mid.slice(0);\n var i = half >>> 1;\n while(i > 0) {\n // raise m0[2 * i] and store in m0[i]\n this.pow(m[2 * i], m[i] = []);\n i >>= 1;\n }\n i = 2;\n while(i < half) {\n for(var j = 1; j < i; ++j) {\n var m_i = m[i];\n var m_j = m[j];\n m[i + j] = [\n m_i[0] ^ m_j[0],\n m_i[1] ^ m_j[1],\n m_i[2] ^ m_j[2],\n m_i[3] ^ m_j[3]\n ];\n }\n i *= 2;\n }\n m[0] = [0, 0, 0, 0];\n /* Note: We could avoid storing these by doing composition during multiply\n calculate top half using composition by speed is preferred. */\n for(i = half + 1; i < size; ++i) {\n var c = m[i ^ half];\n m[i] = [mid[0] ^ c[0], mid[1] ^ c[1], mid[2] ^ c[2], mid[3] ^ c[3]];\n }\n return m;\n};\n\n/** Utility functions */\n\nfunction transformIV(iv, blockSize) {\n if(typeof iv === 'string') {\n // convert iv string into byte buffer\n iv = forge.util.createBuffer(iv);\n }\n\n if(forge.util.isArray(iv) && iv.length > 4) {\n // convert iv byte array into byte buffer\n var tmp = iv;\n iv = forge.util.createBuffer();\n for(var i = 0; i < tmp.length; ++i) {\n iv.putByte(tmp[i]);\n }\n }\n\n if(iv.length() < blockSize) {\n throw new Error(\n 'Invalid IV length; got ' + iv.length() +\n ' bytes and expected ' + blockSize + ' bytes.');\n }\n\n if(!forge.util.isArray(iv)) {\n // convert iv byte buffer into 32-bit integer array\n var ints = [];\n var blocks = blockSize / 4;\n for(var i = 0; i < blocks; ++i) {\n ints.push(iv.getInt32());\n }\n iv = ints;\n }\n\n return iv;\n}\n\nfunction inc32(block) {\n // increment last 32 bits of block only\n block[block.length - 1] = (block[block.length - 1] + 1) & 0xFFFFFFFF;\n}\n\nfunction from64To32(num) {\n // convert 64-bit number to two BE Int32s\n return [(num / 0x100000000) | 0, num & 0xFFFFFFFF];\n}\n","var Collection = require('./collection');\n\nvar util = require('../util');\n\nfunction property(obj, name, value) {\n if (value !== null && value !== undefined) {\n util.property.apply(this, arguments);\n }\n}\n\nfunction memoizedProperty(obj, name) {\n if (!obj.constructor.prototype[name]) {\n util.memoizedProperty.apply(this, arguments);\n }\n}\n\nfunction Shape(shape, options, memberName) {\n options = options || {};\n\n property(this, 'shape', shape.shape);\n property(this, 'api', options.api, false);\n property(this, 'type', shape.type);\n property(this, 'enum', shape.enum);\n property(this, 'min', shape.min);\n property(this, 'max', shape.max);\n property(this, 'pattern', shape.pattern);\n property(this, 'location', shape.location || this.location || 'body');\n property(this, 'name', this.name || shape.xmlName || shape.queryName ||\n shape.locationName || memberName);\n property(this, 'isStreaming', shape.streaming || this.isStreaming || false);\n property(this, 'requiresLength', shape.requiresLength, false);\n property(this, 'isComposite', shape.isComposite || false);\n property(this, 'isShape', true, false);\n property(this, 'isQueryName', Boolean(shape.queryName), false);\n property(this, 'isLocationName', Boolean(shape.locationName), false);\n property(this, 'isIdempotent', shape.idempotencyToken === true);\n property(this, 'isJsonValue', shape.jsonvalue === true);\n property(this, 'isSensitive', shape.sensitive === true || shape.prototype && shape.prototype.sensitive === true);\n property(this, 'isEventStream', Boolean(shape.eventstream), false);\n property(this, 'isEvent', Boolean(shape.event), false);\n property(this, 'isEventPayload', Boolean(shape.eventpayload), false);\n property(this, 'isEventHeader', Boolean(shape.eventheader), false);\n property(this, 'isTimestampFormatSet', Boolean(shape.timestampFormat) || shape.prototype && shape.prototype.isTimestampFormatSet === true, false);\n property(this, 'endpointDiscoveryId', Boolean(shape.endpointdiscoveryid), false);\n property(this, 'hostLabel', Boolean(shape.hostLabel), false);\n\n if (options.documentation) {\n property(this, 'documentation', shape.documentation);\n property(this, 'documentationUrl', shape.documentationUrl);\n }\n\n if (shape.xmlAttribute) {\n property(this, 'isXmlAttribute', shape.xmlAttribute || false);\n }\n\n // type conversion and parsing\n property(this, 'defaultValue', null);\n this.toWireFormat = function(value) {\n if (value === null || value === undefined) return '';\n return value;\n };\n this.toType = function(value) { return value; };\n}\n\n/**\n * @api private\n */\nShape.normalizedTypes = {\n character: 'string',\n double: 'float',\n long: 'integer',\n short: 'integer',\n biginteger: 'integer',\n bigdecimal: 'float',\n blob: 'binary'\n};\n\n/**\n * @api private\n */\nShape.types = {\n 'structure': StructureShape,\n 'list': ListShape,\n 'map': MapShape,\n 'boolean': BooleanShape,\n 'timestamp': TimestampShape,\n 'float': FloatShape,\n 'integer': IntegerShape,\n 'string': StringShape,\n 'base64': Base64Shape,\n 'binary': BinaryShape\n};\n\nShape.resolve = function resolve(shape, options) {\n if (shape.shape) {\n var refShape = options.api.shapes[shape.shape];\n if (!refShape) {\n throw new Error('Cannot find shape reference: ' + shape.shape);\n }\n\n return refShape;\n } else {\n return null;\n }\n};\n\nShape.create = function create(shape, options, memberName) {\n if (shape.isShape) return shape;\n\n var refShape = Shape.resolve(shape, options);\n if (refShape) {\n var filteredKeys = Object.keys(shape);\n if (!options.documentation) {\n filteredKeys = filteredKeys.filter(function(name) {\n return !name.match(/documentation/);\n });\n }\n\n // create an inline shape with extra members\n var InlineShape = function() {\n refShape.constructor.call(this, shape, options, memberName);\n };\n InlineShape.prototype = refShape;\n return new InlineShape();\n } else {\n // set type if not set\n if (!shape.type) {\n if (shape.members) shape.type = 'structure';\n else if (shape.member) shape.type = 'list';\n else if (shape.key) shape.type = 'map';\n else shape.type = 'string';\n }\n\n // normalize types\n var origType = shape.type;\n if (Shape.normalizedTypes[shape.type]) {\n shape.type = Shape.normalizedTypes[shape.type];\n }\n\n if (Shape.types[shape.type]) {\n return new Shape.types[shape.type](shape, options, memberName);\n } else {\n throw new Error('Unrecognized shape type: ' + origType);\n }\n }\n};\n\nfunction CompositeShape(shape) {\n Shape.apply(this, arguments);\n property(this, 'isComposite', true);\n\n if (shape.flattened) {\n property(this, 'flattened', shape.flattened || false);\n }\n}\n\nfunction StructureShape(shape, options) {\n var self = this;\n var requiredMap = null, firstInit = !this.isShape;\n\n CompositeShape.apply(this, arguments);\n\n if (firstInit) {\n property(this, 'defaultValue', function() { return {}; });\n property(this, 'members', {});\n property(this, 'memberNames', []);\n property(this, 'required', []);\n property(this, 'isRequired', function() { return false; });\n property(this, 'isDocument', Boolean(shape.document));\n }\n\n if (shape.members) {\n property(this, 'members', new Collection(shape.members, options, function(name, member) {\n return Shape.create(member, options, name);\n }));\n memoizedProperty(this, 'memberNames', function() {\n return shape.xmlOrder || Object.keys(shape.members);\n });\n\n if (shape.event) {\n memoizedProperty(this, 'eventPayloadMemberName', function() {\n var members = self.members;\n var memberNames = self.memberNames;\n // iterate over members to find ones that are event payloads\n for (var i = 0, iLen = memberNames.length; i < iLen; i++) {\n if (members[memberNames[i]].isEventPayload) {\n return memberNames[i];\n }\n }\n });\n\n memoizedProperty(this, 'eventHeaderMemberNames', function() {\n var members = self.members;\n var memberNames = self.memberNames;\n var eventHeaderMemberNames = [];\n // iterate over members to find ones that are event headers\n for (var i = 0, iLen = memberNames.length; i < iLen; i++) {\n if (members[memberNames[i]].isEventHeader) {\n eventHeaderMemberNames.push(memberNames[i]);\n }\n }\n return eventHeaderMemberNames;\n });\n }\n }\n\n if (shape.required) {\n property(this, 'required', shape.required);\n property(this, 'isRequired', function(name) {\n if (!requiredMap) {\n requiredMap = {};\n for (var i = 0; i < shape.required.length; i++) {\n requiredMap[shape.required[i]] = true;\n }\n }\n\n return requiredMap[name];\n }, false, true);\n }\n\n property(this, 'resultWrapper', shape.resultWrapper || null);\n\n if (shape.payload) {\n property(this, 'payload', shape.payload);\n }\n\n if (typeof shape.xmlNamespace === 'string') {\n property(this, 'xmlNamespaceUri', shape.xmlNamespace);\n } else if (typeof shape.xmlNamespace === 'object') {\n property(this, 'xmlNamespacePrefix', shape.xmlNamespace.prefix);\n property(this, 'xmlNamespaceUri', shape.xmlNamespace.uri);\n }\n}\n\nfunction ListShape(shape, options) {\n var self = this, firstInit = !this.isShape;\n CompositeShape.apply(this, arguments);\n\n if (firstInit) {\n property(this, 'defaultValue', function() { return []; });\n }\n\n if (shape.member) {\n memoizedProperty(this, 'member', function() {\n return Shape.create(shape.member, options);\n });\n }\n\n if (this.flattened) {\n var oldName = this.name;\n memoizedProperty(this, 'name', function() {\n return self.member.name || oldName;\n });\n }\n}\n\nfunction MapShape(shape, options) {\n var firstInit = !this.isShape;\n CompositeShape.apply(this, arguments);\n\n if (firstInit) {\n property(this, 'defaultValue', function() { return {}; });\n property(this, 'key', Shape.create({type: 'string'}, options));\n property(this, 'value', Shape.create({type: 'string'}, options));\n }\n\n if (shape.key) {\n memoizedProperty(this, 'key', function() {\n return Shape.create(shape.key, options);\n });\n }\n if (shape.value) {\n memoizedProperty(this, 'value', function() {\n return Shape.create(shape.value, options);\n });\n }\n}\n\nfunction TimestampShape(shape) {\n var self = this;\n Shape.apply(this, arguments);\n\n if (shape.timestampFormat) {\n property(this, 'timestampFormat', shape.timestampFormat);\n } else if (self.isTimestampFormatSet && this.timestampFormat) {\n property(this, 'timestampFormat', this.timestampFormat);\n } else if (this.location === 'header') {\n property(this, 'timestampFormat', 'rfc822');\n } else if (this.location === 'querystring') {\n property(this, 'timestampFormat', 'iso8601');\n } else if (this.api) {\n switch (this.api.protocol) {\n case 'json':\n case 'rest-json':\n property(this, 'timestampFormat', 'unixTimestamp');\n break;\n case 'rest-xml':\n case 'query':\n case 'ec2':\n property(this, 'timestampFormat', 'iso8601');\n break;\n }\n }\n\n this.toType = function(value) {\n if (value === null || value === undefined) return null;\n if (typeof value.toUTCString === 'function') return value;\n return typeof value === 'string' || typeof value === 'number' ?\n util.date.parseTimestamp(value) : null;\n };\n\n this.toWireFormat = function(value) {\n return util.date.format(value, self.timestampFormat);\n };\n}\n\nfunction StringShape() {\n Shape.apply(this, arguments);\n\n var nullLessProtocols = ['rest-xml', 'query', 'ec2'];\n this.toType = function(value) {\n value = this.api && nullLessProtocols.indexOf(this.api.protocol) > -1 ?\n value || '' : value;\n if (this.isJsonValue) {\n return JSON.parse(value);\n }\n\n return value && typeof value.toString === 'function' ?\n value.toString() : value;\n };\n\n this.toWireFormat = function(value) {\n return this.isJsonValue ? JSON.stringify(value) : value;\n };\n}\n\nfunction FloatShape() {\n Shape.apply(this, arguments);\n\n this.toType = function(value) {\n if (value === null || value === undefined) return null;\n return parseFloat(value);\n };\n this.toWireFormat = this.toType;\n}\n\nfunction IntegerShape() {\n Shape.apply(this, arguments);\n\n this.toType = function(value) {\n if (value === null || value === undefined) return null;\n return parseInt(value, 10);\n };\n this.toWireFormat = this.toType;\n}\n\nfunction BinaryShape() {\n Shape.apply(this, arguments);\n this.toType = function(value) {\n var buf = util.base64.decode(value);\n if (this.isSensitive && util.isNode() && typeof util.Buffer.alloc === 'function') {\n /* Node.js can create a Buffer that is not isolated.\n * i.e. buf.byteLength !== buf.buffer.byteLength\n * This means that the sensitive data is accessible to anyone with access to buf.buffer.\n * If this is the node shared Buffer, then other code within this process _could_ find this secret.\n * Copy sensitive data to an isolated Buffer and zero the sensitive data.\n * While this is safe to do here, copying this code somewhere else may produce unexpected results.\n */\n var secureBuf = util.Buffer.alloc(buf.length, buf);\n buf.fill(0);\n buf = secureBuf;\n }\n return buf;\n };\n this.toWireFormat = util.base64.encode;\n}\n\nfunction Base64Shape() {\n BinaryShape.apply(this, arguments);\n}\n\nfunction BooleanShape() {\n Shape.apply(this, arguments);\n\n this.toType = function(value) {\n if (typeof value === 'boolean') return value;\n if (value === null || value === undefined) return null;\n return value === 'true';\n };\n}\n\n/**\n * @api private\n */\nShape.shapes = {\n StructureShape: StructureShape,\n ListShape: ListShape,\n MapShape: MapShape,\n StringShape: StringShape,\n BooleanShape: BooleanShape,\n Base64Shape: Base64Shape\n};\n\n/**\n * @api private\n */\nmodule.exports = Shape;\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\n/**\n * [[Attendee]] contains the information of an attendee.\n */\nexport default class Attendee {\n /**\n * The attendee id of an attendee.\n */\n attendeeId: string;\n /**\n * The external user id of an attendee.\n */\n externalUserId: string;\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport AudioVideoController from '../audiovideocontroller/AudioVideoController';\nimport AudioVideoObserver from '../audiovideoobserver/AudioVideoObserver';\nimport VideoQualitySettings from '../devicecontroller/VideoQualitySettings';\nimport DefaultDevicePixelRatioMonitor from '../devicepixelratiomonitor/DefaultDevicePixelRatioMonitor';\nimport DevicePixelRatioWindowSource from '../devicepixelratiosource/DevicePixelRatioWindowSource';\nimport Logger from '../logger/Logger';\nimport { Maybe } from '../utils/Types';\nimport DefaultVideoElementResolutionMonitor from '../videotile/DefaultVideoElementResolutionMonitor';\nimport DefaultVideoTile from '../videotile/DefaultVideoTile';\nimport VideoElementResolutionMonitor, {\n VideoElementResolutionObserver,\n} from '../videotile/VideoElementResolutionMonitor';\nimport VideoTile from '../videotile/VideoTile';\nimport VideoTileState from '../videotile/VideoTileState';\nimport VideoTileFactory from '../videotilefactory/VideoTileFactory';\nimport VideoTileController, { VideoTileResolutionObserver } from './VideoTileController';\n\nexport default class DefaultVideoTileController implements VideoTileController {\n private tileMap = new Map();\n private nextTileId: number = 1;\n private currentLocalTile: VideoTile | null = null;\n private devicePixelRatioMonitor: undefined | DefaultDevicePixelRatioMonitor;\n private currentPausedTilesByIds: Set = new Set();\n private resolutionObservers = new Set();\n keepLastFrameWhenPaused: boolean | undefined = false;\n\n constructor(\n private tileFactory: VideoTileFactory,\n private audioVideoController: AudioVideoController,\n private logger: Logger\n ) {\n this.keepLastFrameWhenPaused = audioVideoController.configuration.keepLastFrameWhenPaused;\n }\n\n private createDevicePixelRatioMonitorIfNeeded(): void {\n if (this.devicePixelRatioMonitor) {\n return;\n }\n this.devicePixelRatioMonitor = new DefaultDevicePixelRatioMonitor(\n new DevicePixelRatioWindowSource(),\n this.logger\n );\n }\n\n private async discardDevicePixelRatioMonitorIfNotNeeded(): Promise {\n if (this.tileMap.size || !this.devicePixelRatioMonitor) {\n return;\n }\n const monitor = this.devicePixelRatioMonitor;\n this.devicePixelRatioMonitor = undefined;\n return monitor.destroy();\n }\n\n bindVideoElement(tileId: number, videoElement: HTMLVideoElement | null): void {\n const tile = this.getVideoTile(tileId);\n if (tile === null) {\n this.logger.warn(`Ignoring video element binding for unknown tile id ${tileId}`);\n return;\n }\n tile.bindVideoElement(videoElement);\n }\n\n unbindVideoElement(tileId: number, cleanUpVideoElement: boolean = true): void {\n const tile = this.getVideoTile(tileId);\n if (tile === null) {\n this.logger.warn(`Ignoring video element unbinding for unknown tile id ${tileId}`);\n return;\n }\n this.logger.info('Unbinding the video element');\n this.notifyRemoteObserversOfUnbound(tile.state().boundAttendeeId);\n const videoElement = tile.stateRef().boundVideoElement;\n tile.bindVideoElement(null);\n if (cleanUpVideoElement) {\n this.logger.info('Cleaning up the video element');\n DefaultVideoTile.disconnectVideoStreamFromVideoElement(videoElement, false);\n }\n }\n\n startLocalVideoTile(): number {\n if (\n this.audioVideoController.configuration.meetingFeatures.videoMaxResolution ===\n VideoQualitySettings.VideoDisabled\n ) {\n this.logger.warn('Could not start camera video because max video resolution was set to None');\n return -1;\n }\n const tile = this.findOrCreateLocalVideoTile();\n this.currentLocalTile.stateRef().localTileStarted = true;\n\n this.audioVideoController.update({ needsRenegotiation: true });\n return tile.id();\n }\n\n stopLocalVideoTile(): void {\n if (!this.currentLocalTile) {\n return;\n }\n this.currentLocalTile.stateRef().localTileStarted = false;\n this.currentLocalTile.bindVideoStream(\n this.audioVideoController.configuration.credentials.attendeeId,\n true,\n null,\n null,\n null,\n null,\n this.audioVideoController.configuration.credentials.externalUserId\n );\n this.audioVideoController.update({ needsRenegotiation: true });\n }\n\n hasStartedLocalVideoTile(): boolean {\n return !!(this.currentLocalTile && this.currentLocalTile.stateRef().localTileStarted);\n }\n\n removeLocalVideoTile(): void {\n if (this.currentLocalTile) {\n this.removeVideoTile(this.currentLocalTile.id());\n }\n }\n\n getLocalVideoTile(): VideoTile | null {\n return this.currentLocalTile;\n }\n\n pauseVideoTile(tileId: number): void {\n const tile = this.getVideoTile(tileId);\n if (tile) {\n if (!this.currentPausedTilesByIds.has(tileId)) {\n this.audioVideoController.pauseReceivingStream(tile.stateRef().streamId);\n this.currentPausedTilesByIds.add(tileId);\n }\n tile.pause();\n }\n }\n\n unpauseVideoTile(tileId: number): void {\n const tile = this.getVideoTile(tileId);\n if (tile) {\n if (this.currentPausedTilesByIds.has(tileId)) {\n this.audioVideoController.resumeReceivingStream(tile.stateRef().streamId);\n this.currentPausedTilesByIds.delete(tileId);\n }\n tile.unpause();\n }\n }\n\n getVideoTile(tileId: number): VideoTile | null {\n return this.tileMap.has(tileId) ? this.tileMap.get(tileId) : null;\n }\n\n getVideoTileArea(tile: VideoTile): number {\n const state = tile.state();\n let tileHeight = 0;\n let tileWidth = 0;\n if (state.boundVideoElement) {\n tileHeight = state.boundVideoElement.clientHeight * state.devicePixelRatio;\n tileWidth = state.boundVideoElement.clientWidth * state.devicePixelRatio;\n }\n return tileHeight * tileWidth;\n }\n\n getAllRemoteVideoTiles(): VideoTile[] {\n const result = new Array();\n this.tileMap.forEach((tile: VideoTile, tileId: number): void => {\n if (!this.currentLocalTile || tileId !== this.currentLocalTile.id()) {\n result.push(tile);\n }\n });\n return result;\n }\n\n getAllVideoTiles(): VideoTile[] {\n return Array.from(this.tileMap.values());\n }\n\n addVideoTile(localTile: boolean = false): VideoTile {\n const tileId = this.nextTileId;\n this.nextTileId += 1;\n this.createDevicePixelRatioMonitorIfNeeded();\n const tile = this.tileFactory.makeTile(\n tileId,\n localTile,\n this,\n this.devicePixelRatioMonitor,\n this.createResolutionMonitor(tileId)\n );\n this.tileMap.set(tileId, tile);\n return tile;\n }\n\n removeVideoTile(tileId: number): void {\n if (!this.tileMap.has(tileId)) {\n return;\n }\n const tile = this.tileMap.get(tileId);\n if (this.currentLocalTile === tile) {\n this.currentLocalTile = null;\n }\n tile.destroy();\n this.tileMap.delete(tileId);\n this.audioVideoController.forEachObserver((observer: AudioVideoObserver) => {\n Maybe.of(observer.videoTileWasRemoved).map(f => f.bind(observer)(tileId));\n });\n this.discardDevicePixelRatioMonitorIfNotNeeded();\n }\n\n removeVideoTilesByAttendeeId(attendeeId: string): number[] {\n const tilesRemoved: number[] = [];\n for (const tile of this.getAllVideoTiles()) {\n const state = tile.state();\n if (state.boundAttendeeId === attendeeId) {\n this.removeVideoTile(state.tileId);\n tilesRemoved.push(state.tileId);\n }\n }\n return tilesRemoved;\n }\n\n removeAllVideoTiles(): void {\n const tileIds = Array.from(this.tileMap.keys());\n for (const tileId of tileIds) {\n this.removeVideoTile(tileId);\n }\n }\n\n sendTileStateUpdate(tileState: VideoTileState): void {\n this.audioVideoController.forEachObserver((observer: AudioVideoObserver) => {\n Maybe.of(observer.videoTileDidUpdate).map(f => f.bind(observer)(tileState));\n });\n }\n\n haveVideoTilesWithStreams(): boolean {\n for (const tile of this.getAllVideoTiles()) {\n if (tile.state().boundVideoStream) {\n return true;\n }\n }\n return false;\n }\n\n haveVideoTileForAttendeeId(attendeeId: string): boolean {\n return !!this.getVideoTileForAttendeeId(attendeeId);\n }\n\n getVideoTileForAttendeeId(attendeeId: string): VideoTile | undefined {\n for (const tile of this.getAllVideoTiles()) {\n const state = tile.state();\n if (state.boundAttendeeId === attendeeId) {\n return tile;\n }\n }\n return undefined;\n }\n\n captureVideoTile(tileId: number): ImageData | null {\n const tile = this.getVideoTile(tileId);\n if (!tile) {\n return null;\n }\n return tile.capture();\n }\n\n registerVideoTileResolutionObserver(observer: VideoTileResolutionObserver): void {\n this.resolutionObservers.add(observer);\n }\n\n removeVideoTileResolutionObserver(observer: VideoTileResolutionObserver): void {\n this.resolutionObservers.delete(observer);\n }\n\n private notifyResolutionObserversOfChange(\n attendeeId: string,\n newWidth: number,\n newHeight: number\n ): void {\n for (const observer of this.resolutionObservers) {\n observer.videoTileResolutionDidChange(attendeeId, newWidth, newHeight);\n }\n }\n\n private notifyRemoteObserversOfUnbound(attendeeId: string): void {\n for (const observer of this.resolutionObservers) {\n observer.videoTileUnbound(attendeeId);\n }\n }\n\n private createResolutionMonitor(tileId: number): VideoElementResolutionMonitor {\n const observer = new (class implements VideoElementResolutionObserver {\n constructor(private controller: DefaultVideoTileController, private tileId: number) {}\n\n videoElementResolutionChanged(newWidth: number, newHeight: number): void {\n const tile = this.controller.getVideoTile(this.tileId);\n if (tile) {\n const attendeeId = tile.state().boundAttendeeId;\n this.controller.notifyResolutionObserversOfChange(attendeeId, newWidth, newHeight);\n }\n }\n })(this, tileId);\n\n const resolutionMonitor = new DefaultVideoElementResolutionMonitor();\n resolutionMonitor.registerObserver(observer);\n return resolutionMonitor;\n }\n\n private findOrCreateLocalVideoTile(): VideoTile | null {\n if (this.currentLocalTile) {\n return this.currentLocalTile;\n }\n this.currentLocalTile = this.addVideoTile(true);\n this.currentLocalTile.bindVideoStream(\n this.audioVideoController.configuration.credentials.attendeeId,\n true,\n null,\n null,\n null,\n null,\n this.audioVideoController.configuration.credentials.externalUserId\n );\n return this.currentLocalTile;\n }\n}\n","'use strict';\n\n/** @type {import('./floor')} */\nmodule.exports = Math.floor;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['acm'] = {};\nAWS.ACM = Service.defineService('acm', ['2015-12-08']);\nObject.defineProperty(apiLoader.services['acm'], '2015-12-08', {\n get: function get() {\n var model = require('../apis/acm-2015-12-08.min.json');\n model.paginators = require('../apis/acm-2015-12-08.paginators.json').pagination;\n model.waiters = require('../apis/acm-2015-12-08.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.ACM;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['resourcegroups'] = {};\nAWS.ResourceGroups = Service.defineService('resourcegroups', ['2017-11-27']);\nObject.defineProperty(apiLoader.services['resourcegroups'], '2017-11-27', {\n get: function get() {\n var model = require('../apis/resource-groups-2017-11-27.min.json');\n model.paginators = require('../apis/resource-groups-2017-11-27.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.ResourceGroups;\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport GetUserMediaError from './GetUserMediaError';\n\nexport default class NotReadableError extends GetUserMediaError {\n constructor(cause?: Error) {\n super(cause);\n this.name = 'NotReadableError';\n }\n}\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar hasOwn = require('../internals/has-own-property');\n\nvar FunctionPrototype = Function.prototype;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getDescriptor = DESCRIPTORS && Object.getOwnPropertyDescriptor;\n\nvar EXISTS = hasOwn(FunctionPrototype, 'name');\n// additional protection from minified / mangled / dropped function names\nvar PROPER = EXISTS && (function something() { /* empty */ }).name === 'something';\nvar CONFIGURABLE = EXISTS && (!DESCRIPTORS || (DESCRIPTORS && getDescriptor(FunctionPrototype, 'name').configurable));\n\nmodule.exports = {\n EXISTS: EXISTS,\n PROPER: PROPER,\n CONFIGURABLE: CONFIGURABLE\n};\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Notifications = void 0;\nconst Notifications_1 = __importDefault(require(\"./notifications/Notifications\"));\nexports.Notifications = Notifications_1.default;\nconst Storage_1 = __importDefault(require(\"./notifications/Storage\"));\n/**\n* Add a new notification.\n* Must pass an object with the params to the function.\n* @param {Options} options\n * @property {string} options.title - Title of the push notification.\n * @property {string} [options.subtitle] - Subtitle of the push notification.\n * @property {string} [options.message] - Message of the push notification.\n * @property {function} [options.onClick] - onclick callback. Optional parameter.\n * @property {('darkblue'|'red'|'light')} [options.theme=undefined] - Theme of the push notification.\n * @property {number} [options.duration=3000] - duration of the push notification in ms.\n * @property {string} [options.backgroundTop=undefined] - Background color of the top container of push notification.\n * @property {string} [options.backgroundBottom=undefined] - Background color of the bottom container of push notification.\n * @property {string} [options.colorTop=undefined] - Color of the top text of push notification.\n * @property {string} [options.colorBottom=undefined] - Color of the bottom text of push notification.\n * @property {(string|JSX.Element)} [options.closeButton=\"close\"] - Color of the bottom text of push notification.\n * @property {boolean} [options.native=false] - Uses native browser notifications. Will prompt for user permission if not granted.\n * @property {string} [options.icon] - Native only. Link to image to show in notification.\n * @property {boolean} [options.silent] - Native only. Makes the notification silent.\n * @property {(number|numer[])} [options.vibrate] - Native only. Makes the notification vibrate.\n *\n*/\nconst addNotification = Storage_1.default.addNotification;\nexports.default = addNotification;\n","'use strict';\nvar call = require('../internals/function-call');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\n\nvar $TypeError = TypeError;\n\n// `OrdinaryToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-ordinarytoprimitive\nmodule.exports = function (input, pref) {\n var fn, val;\n if (pref === 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n if (isCallable(fn = input.valueOf) && !isObject(val = call(fn, input))) return val;\n if (pref !== 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n throw new $TypeError(\"Can't convert object to primitive value\");\n};\n","var AWS = require('../core');\n\nAWS.util.update(AWS.SQS.prototype, {\n /**\n * @api private\n */\n setupRequestListeners: function setupRequestListeners(request) {\n request.addListener('build', this.buildEndpoint);\n\n if (request.service.config.computeChecksums) {\n if (request.operation === 'sendMessage') {\n request.addListener('extractData', this.verifySendMessageChecksum);\n } else if (request.operation === 'sendMessageBatch') {\n request.addListener('extractData', this.verifySendMessageBatchChecksum);\n } else if (request.operation === 'receiveMessage') {\n request.addListener('extractData', this.verifyReceiveMessageChecksum);\n }\n }\n },\n\n /**\n * @api private\n */\n verifySendMessageChecksum: function verifySendMessageChecksum(response) {\n if (!response.data) return;\n\n var md5 = response.data.MD5OfMessageBody;\n var body = this.params.MessageBody;\n var calculatedMd5 = this.service.calculateChecksum(body);\n if (calculatedMd5 !== md5) {\n var msg = 'Got \"' + response.data.MD5OfMessageBody +\n '\", expecting \"' + calculatedMd5 + '\".';\n this.service.throwInvalidChecksumError(response,\n [response.data.MessageId], msg);\n }\n },\n\n /**\n * @api private\n */\n verifySendMessageBatchChecksum: function verifySendMessageBatchChecksum(response) {\n if (!response.data) return;\n\n var service = this.service;\n var entries = {};\n var errors = [];\n var messageIds = [];\n AWS.util.arrayEach(response.data.Successful, function (entry) {\n entries[entry.Id] = entry;\n });\n AWS.util.arrayEach(this.params.Entries, function (entry) {\n if (entries[entry.Id]) {\n var md5 = entries[entry.Id].MD5OfMessageBody;\n var body = entry.MessageBody;\n if (!service.isChecksumValid(md5, body)) {\n errors.push(entry.Id);\n messageIds.push(entries[entry.Id].MessageId);\n }\n }\n });\n\n if (errors.length > 0) {\n service.throwInvalidChecksumError(response, messageIds,\n 'Invalid messages: ' + errors.join(', '));\n }\n },\n\n /**\n * @api private\n */\n verifyReceiveMessageChecksum: function verifyReceiveMessageChecksum(response) {\n if (!response.data) return;\n\n var service = this.service;\n var messageIds = [];\n AWS.util.arrayEach(response.data.Messages, function(message) {\n var md5 = message.MD5OfBody;\n var body = message.Body;\n if (!service.isChecksumValid(md5, body)) {\n messageIds.push(message.MessageId);\n }\n });\n\n if (messageIds.length > 0) {\n service.throwInvalidChecksumError(response, messageIds,\n 'Invalid messages: ' + messageIds.join(', '));\n }\n },\n\n /**\n * @api private\n */\n throwInvalidChecksumError: function throwInvalidChecksumError(response, ids, message) {\n response.error = AWS.util.error(new Error(), {\n retryable: true,\n code: 'InvalidChecksum',\n messageIds: ids,\n message: response.request.operation +\n ' returned an invalid MD5 response. ' + message\n });\n },\n\n /**\n * @api private\n */\n isChecksumValid: function isChecksumValid(checksum, data) {\n return this.calculateChecksum(data) === checksum;\n },\n\n /**\n * @api private\n */\n calculateChecksum: function calculateChecksum(data) {\n return AWS.util.crypto.md5(data, 'hex');\n },\n\n /**\n * @api private\n */\n buildEndpoint: function buildEndpoint(request) {\n var url = request.httpRequest.params.QueueUrl;\n if (url) {\n request.httpRequest.endpoint = new AWS.Endpoint(url);\n\n // signature version 4 requires the region name to be set,\n // sqs queue urls contain the region name\n var matches = request.httpRequest.endpoint.host.match(/^sqs\\.(.+?)\\./);\n if (matches) request.httpRequest.region = matches[1];\n }\n }\n});\n","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _createWebStorage = _interopRequireDefault(require(\"./createWebStorage\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar _default = (0, _createWebStorage.default)('session');\n\nexports.default = _default;","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","'use strict';\nvar $ = require('../internals/export');\nvar aCallable = require('../internals/a-callable');\nvar aSet = require('../internals/a-set');\nvar iterate = require('../internals/set-iterate');\n\nvar $TypeError = TypeError;\n\n// `Set.prototype.reduce` method\n// https://github.com/tc39/proposal-collection-methods\n$({ target: 'Set', proto: true, real: true, forced: true }, {\n reduce: function reduce(callbackfn /* , initialValue */) {\n var set = aSet(this);\n var noInitial = arguments.length < 2;\n var accumulator = noInitial ? undefined : arguments[1];\n aCallable(callbackfn);\n iterate(set, function (value) {\n if (noInitial) {\n noInitial = false;\n accumulator = value;\n } else {\n accumulator = callbackfn(accumulator, value, value, set);\n }\n });\n if (noInitial) throw new $TypeError('Reduce of empty set with no initial value');\n return accumulator;\n }\n});\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar isObject = require('../internals/is-object');\n\nvar document = globalThis.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n return EXISTS ? document.createElement(it) : {};\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { MeetingSessionCredentials, MeetingSessionStatus } from '..';\nimport ActiveSpeakerPolicy from '../activespeakerpolicy/ActiveSpeakerPolicy';\nimport AudioMixController from '../audiomixcontroller/AudioMixController';\nimport AudioMixObserver from '../audiomixobserver/AudioMixObserver';\nimport AudioProfile from '../audioprofile/AudioProfile';\nimport AudioVideoController from '../audiovideocontroller/AudioVideoController';\nimport AudioVideoFacade from '../audiovideofacade/AudioVideoFacade';\nimport AudioVideoObserver from '../audiovideoobserver/AudioVideoObserver';\nimport ContentShareController from '../contentsharecontroller/ContentShareController';\nimport ContentShareObserver from '../contentshareobserver/ContentShareObserver';\nimport DataMessage from '../datamessage/DataMessage';\nimport DeviceChangeObserver from '../devicechangeobserver/DeviceChangeObserver';\nimport AudioInputDevice from '../devicecontroller/AudioInputDevice';\nimport DeviceController from '../devicecontroller/DeviceController';\nimport RemovableAnalyserNode from '../devicecontroller/RemovableAnalyserNode';\nimport VideoInputDevice from '../devicecontroller/VideoInputDevice';\nimport VideoQualitySettings from '../devicecontroller/VideoQualitySettings';\nimport { isVideoTransformDevice } from '../devicecontroller/VideoTransformDevice';\nimport RealtimeController from '../realtimecontroller/RealtimeController';\nimport type VolumeIndicatorCallback from '../realtimecontroller/VolumeIndicatorCallback';\nimport VideoCodecCapability from '../sdp/VideoCodecCapability';\nimport TranscriptionController from '../transcript/TranscriptionController';\nimport VideoSource from '../videosource/VideoSource';\nimport VideoTile from '../videotile/VideoTile';\nimport VideoTileController from '../videotilecontroller/VideoTileController';\nimport ContentShareSimulcastEncodingParameters from '../videouplinkbandwidthpolicy/ContentShareSimulcastEncodingParameters';\n\nexport default class DefaultAudioVideoFacade implements AudioVideoFacade, AudioVideoObserver {\n constructor(\n private audioVideoController: AudioVideoController,\n private videoTileController: VideoTileController,\n private realtimeController: RealtimeController,\n private audioMixController: AudioMixController,\n private deviceController: DeviceController,\n private contentShareController: ContentShareController\n ) {}\n\n addObserver(observer: AudioVideoObserver): void {\n this.audioVideoController.addObserver(observer);\n this.trace('addObserver');\n }\n\n removeObserver(observer: AudioVideoObserver): void {\n this.audioVideoController.removeObserver(observer);\n this.trace('removeObserver');\n }\n\n setAudioProfile(audioProfile: AudioProfile): void {\n this.trace('setAudioProfile', audioProfile);\n this.audioVideoController.setAudioProfile(audioProfile);\n }\n\n start(options?: { signalingOnly?: boolean }): void {\n this.audioVideoController.start(options);\n this.trace('start');\n }\n\n stop(): void {\n this.audioVideoController.stop();\n this.trace('stop');\n }\n\n /**\n * This API will be deprecated in favor of `ClientMetricReport.getRTCStatsReport()`.\n *\n * It makes an additional call to the `getStats` API and therefore may cause slight performance degradation.\n *\n * Please subscribe to `metricsDidReceive(clientMetricReport: ClientMetricReport)` callback,\n * and get the raw `RTCStatsReport` via `clientMetricReport.getRTCStatsReport()`.\n */\n getRTCPeerConnectionStats(selector?: MediaStreamTrack): Promise {\n this.trace('getRTCPeerConnectionStats', selector ? selector.id : null);\n return this.audioVideoController.getRTCPeerConnectionStats(selector);\n }\n\n bindAudioElement(element: HTMLAudioElement): Promise {\n const result = this.audioMixController.bindAudioElement(element);\n this.trace('bindAudioElement', element.id, result);\n return result;\n }\n\n unbindAudioElement(): void {\n this.audioMixController.unbindAudioElement();\n this.trace('unbindAudioElement');\n }\n\n getCurrentMeetingAudioStream(): Promise {\n this.trace('getCurrentConferenceStream');\n return this.audioMixController.getCurrentMeetingAudioStream();\n }\n\n addAudioMixObserver(observer: AudioMixObserver): void {\n this.trace('addAudioMixObserver');\n this.audioMixController.addAudioMixObserver(observer);\n }\n\n removeAudioMixObserver(observer: AudioMixObserver): void {\n this.trace('removeAudioMixObserver');\n this.audioMixController.removeAudioMixObserver(observer);\n }\n\n bindVideoElement(tileId: number, videoElement: HTMLVideoElement): void {\n this.videoTileController.bindVideoElement(tileId, videoElement);\n this.trace('bindVideoElement', { tileId: tileId, videoElementId: videoElement.id });\n }\n\n unbindVideoElement(tileId: number, cleanUpVideoElement: boolean = true): void {\n this.videoTileController.unbindVideoElement(tileId, cleanUpVideoElement);\n this.trace('unbindVideoElement', { tileId: tileId, cleanUpVideoElement: cleanUpVideoElement });\n }\n\n startLocalVideoTile(): number {\n const result = this.videoTileController.startLocalVideoTile();\n this.trace('startLocalVideoTile', null, result);\n return result;\n }\n\n stopLocalVideoTile(): void {\n this.videoTileController.stopLocalVideoTile();\n this.trace('stopLocalVideoTile');\n }\n\n hasStartedLocalVideoTile(): boolean {\n const result = this.videoTileController.hasStartedLocalVideoTile();\n this.trace('hasStartedLocalVideoTile', null, result);\n return result;\n }\n\n removeLocalVideoTile(): void {\n this.videoTileController.removeLocalVideoTile();\n this.trace('removeLocalVideoTile');\n }\n\n getLocalVideoTile(): VideoTile | null {\n const result = this.videoTileController.getLocalVideoTile();\n this.trace('getLocalVideoTile');\n return result;\n }\n\n pauseVideoTile(tileId: number): void {\n this.videoTileController.pauseVideoTile(tileId);\n this.trace('pauseVideoTile', tileId);\n }\n\n unpauseVideoTile(tileId: number): void {\n this.videoTileController.unpauseVideoTile(tileId);\n this.trace('unpauseVideoTile', tileId);\n }\n\n getVideoTile(tileId: number): VideoTile | null {\n const result = this.videoTileController.getVideoTile(tileId);\n this.trace('getVideoTile', tileId);\n return result;\n }\n\n getAllRemoteVideoTiles(): VideoTile[] {\n const result = this.videoTileController.getAllRemoteVideoTiles();\n this.trace('getAllRemoteVideoTiles');\n return result;\n }\n\n getAllVideoTiles(): VideoTile[] {\n const result = this.videoTileController.getAllVideoTiles();\n this.trace('getAllVideoTiles');\n return result;\n }\n\n addVideoTile(): VideoTile {\n const result = this.videoTileController.addVideoTile();\n this.trace('addVideoTile', null, result.state());\n return result;\n }\n\n removeVideoTile(tileId: number): void {\n this.videoTileController.removeVideoTile(tileId);\n this.trace('removeVideoTile', tileId);\n }\n\n removeVideoTilesByAttendeeId(attendeeId: string): number[] {\n const result = this.videoTileController.removeVideoTilesByAttendeeId(attendeeId);\n this.trace('removeVideoTilesByAttendeeId', attendeeId, result);\n return result;\n }\n\n removeAllVideoTiles(): void {\n this.videoTileController.removeAllVideoTiles();\n this.trace('removeAllVideoTiles');\n }\n\n captureVideoTile(tileId: number): ImageData | null {\n const result = this.videoTileController.captureVideoTile(tileId);\n this.trace('captureVideoTile', tileId);\n return result;\n }\n\n realtimeSubscribeToAttendeeIdPresence(\n callback: (\n attendeeId: string,\n present: boolean,\n externalUserId?: string,\n dropped?: boolean\n ) => void\n ): void {\n this.realtimeController.realtimeSubscribeToAttendeeIdPresence(callback);\n this.trace('realtimeSubscribeToAttendeeIdPresence');\n }\n\n realtimeUnsubscribeToAttendeeIdPresence(\n callback: (\n attendeeId: string,\n present: boolean,\n externalUserId?: string,\n dropped?: boolean\n ) => void\n ): void {\n this.realtimeController.realtimeUnsubscribeToAttendeeIdPresence(callback);\n this.trace('realtimeUnsubscribeToAttendeeIdPresence');\n }\n\n realtimeSetCanUnmuteLocalAudio(canUnmute: boolean): void {\n this.realtimeController.realtimeSetCanUnmuteLocalAudio(canUnmute);\n this.trace('realtimeSetCanUnmuteLocalAudio', canUnmute);\n }\n\n realtimeSubscribeToSetCanUnmuteLocalAudio(callback: (canUnmute: boolean) => void): void {\n this.realtimeController.realtimeSubscribeToSetCanUnmuteLocalAudio(callback);\n this.trace('realtimeSubscribeToSetCanUnmuteLocalAudio');\n }\n\n realtimeUnsubscribeToSetCanUnmuteLocalAudio(callback: (canUnmute: boolean) => void): void {\n this.realtimeController.realtimeUnsubscribeToSetCanUnmuteLocalAudio(callback);\n this.trace('realtimeUnsubscribeToSetCanUnmuteLocalAudio');\n }\n\n realtimeCanUnmuteLocalAudio(): boolean {\n const result = this.realtimeController.realtimeCanUnmuteLocalAudio();\n this.trace('realtimeCanUnmuteLocalAudio', null, result);\n return result;\n }\n\n realtimeMuteLocalAudio(): void {\n this.realtimeController.realtimeMuteLocalAudio();\n this.trace('realtimeMuteLocalAudio');\n }\n\n realtimeUnmuteLocalAudio(): boolean {\n const result = this.realtimeController.realtimeUnmuteLocalAudio();\n this.trace('realtimeUnmuteLocalAudio');\n return result;\n }\n\n realtimeSubscribeToMuteAndUnmuteLocalAudio(callback: (muted: boolean) => void): void {\n this.realtimeController.realtimeSubscribeToMuteAndUnmuteLocalAudio(callback);\n this.trace('realtimeSubscribeToMuteAndUnmuteLocalAudio');\n }\n\n realtimeUnsubscribeToMuteAndUnmuteLocalAudio(callback: (muted: boolean) => void): void {\n this.realtimeController.realtimeUnsubscribeToMuteAndUnmuteLocalAudio(callback);\n this.trace('realtimeUnsubscribeToMuteAndUnmuteLocalAudio');\n }\n\n realtimeIsLocalAudioMuted(): boolean {\n const result = this.realtimeController.realtimeIsLocalAudioMuted();\n this.trace('realtimeIsLocalAudioMuted');\n return result;\n }\n\n realtimeSubscribeToVolumeIndicator(attendeeId: string, callback: VolumeIndicatorCallback): void {\n this.realtimeController.realtimeSubscribeToVolumeIndicator(attendeeId, callback);\n this.trace('realtimeSubscribeToVolumeIndicator', attendeeId);\n }\n\n realtimeUnsubscribeFromVolumeIndicator(\n attendeeId: string,\n callback?: VolumeIndicatorCallback\n ): void {\n this.realtimeController.realtimeUnsubscribeFromVolumeIndicator(attendeeId, callback);\n this.trace('realtimeUnsubscribeFromVolumeIndicator', attendeeId, callback);\n }\n\n realtimeSubscribeToLocalSignalStrengthChange(callback: (signalStrength: number) => void): void {\n this.realtimeController.realtimeSubscribeToLocalSignalStrengthChange(callback);\n this.trace('realtimeSubscribeToLocalSignalStrengthChange');\n }\n\n realtimeUnsubscribeToLocalSignalStrengthChange(callback: (signalStrength: number) => void): void {\n this.realtimeController.realtimeUnsubscribeToLocalSignalStrengthChange(callback);\n this.trace('realtimeUnsubscribeToLocalSignalStrengthChange');\n }\n\n realtimeSendDataMessage(\n topic: string, // eslint-disable-next-line @typescript-eslint/no-explicit-any\n data: Uint8Array | string | any,\n lifetimeMs?: number\n ): void {\n this.realtimeController.realtimeSendDataMessage(topic, data, lifetimeMs);\n this.trace('realtimeSendDataMessage');\n }\n\n realtimeSubscribeToReceiveDataMessage(\n topic: string,\n callback: (dataMessage: DataMessage) => void\n ): void {\n this.realtimeController.realtimeSubscribeToReceiveDataMessage(topic, callback);\n this.trace('realtimeSubscribeToReceiveDataMessage');\n }\n\n realtimeUnsubscribeFromReceiveDataMessage(topic: string): void {\n this.realtimeController.realtimeUnsubscribeFromReceiveDataMessage(topic);\n this.trace('realtimeUnsubscribeFromReceiveDataMessage');\n }\n\n realtimeSubscribeToFatalError(callback: (error: Error) => void): void {\n this.realtimeController.realtimeSubscribeToFatalError(callback);\n this.trace('realtimeSubscribeToFatalError');\n }\n\n realtimeUnsubscribeToFatalError(callback: (error: Error) => void): void {\n this.realtimeController.realtimeUnsubscribeToFatalError(callback);\n this.trace('realtimeUnsubscribeToFatalError');\n }\n\n subscribeToActiveSpeakerDetector(\n policy: ActiveSpeakerPolicy,\n callback: (activeSpeakers: string[]) => void,\n scoresCallback?: (scores: { [attendeeId: string]: number }) => void,\n scoresCallbackIntervalMs?: number\n ): void {\n this.audioVideoController.activeSpeakerDetector.subscribe(\n policy,\n callback,\n scoresCallback,\n scoresCallbackIntervalMs\n );\n this.trace('subscribeToActiveSpeakerDetector');\n }\n\n unsubscribeFromActiveSpeakerDetector(callback: (activeSpeakers: string[]) => void): void {\n this.audioVideoController.activeSpeakerDetector.unsubscribe(callback);\n this.trace('unsubscribeFromActiveSpeakerDetector');\n }\n\n async listAudioInputDevices(forceUpdate: boolean = false): Promise {\n const result = await this.deviceController.listAudioInputDevices(forceUpdate);\n this.trace('listAudioInputDevices', forceUpdate, result);\n return result;\n }\n\n async listVideoInputDevices(forceUpdate: boolean = false): Promise {\n const result = await this.deviceController.listVideoInputDevices(forceUpdate);\n this.trace('listVideoInputDevices', forceUpdate, result);\n return result;\n }\n\n async listAudioOutputDevices(forceUpdate: boolean = false): Promise {\n const result = await this.deviceController.listAudioOutputDevices(forceUpdate);\n this.trace('listAudioOutputDevices', forceUpdate, result);\n return result;\n }\n\n async startAudioInput(device: AudioInputDevice): Promise {\n this.trace('startAudioInput', device);\n return this.deviceController.startAudioInput(device);\n }\n\n async stopAudioInput(): Promise {\n this.trace('stopAudioInput');\n return this.deviceController.stopAudioInput();\n }\n\n async startVideoInput(device: VideoInputDevice): Promise {\n if (isVideoTransformDevice(device)) {\n // Don't stringify the device to avoid failures when cyclic object references are present.\n this.trace('startVideoInput with transform device');\n } else {\n this.trace('startVideoInput', device);\n }\n return this.deviceController.startVideoInput(device);\n }\n\n async stopVideoInput(): Promise {\n this.trace('stopVideoInput');\n return this.deviceController.stopVideoInput();\n }\n\n chooseAudioOutput(deviceId: string | null): Promise {\n const result = this.deviceController.chooseAudioOutput(deviceId);\n this.trace('chooseAudioOutput', deviceId);\n return result;\n }\n\n addDeviceChangeObserver(observer: DeviceChangeObserver): void {\n this.deviceController.addDeviceChangeObserver(observer);\n this.trace('addDeviceChangeObserver');\n }\n\n removeDeviceChangeObserver(observer: DeviceChangeObserver): void {\n this.deviceController.removeDeviceChangeObserver(observer);\n this.trace('removeDeviceChangeObserver');\n }\n\n createAnalyserNodeForAudioInput(): RemovableAnalyserNode | null {\n const result = this.deviceController.createAnalyserNodeForAudioInput();\n this.trace('createAnalyserNodeForAudioInput');\n return result;\n }\n\n startVideoPreviewForVideoInput(element: HTMLVideoElement): void {\n this.deviceController.startVideoPreviewForVideoInput(element);\n this.trace('startVideoPreviewForVideoInput', element.id);\n }\n\n stopVideoPreviewForVideoInput(element: HTMLVideoElement): void {\n this.deviceController.stopVideoPreviewForVideoInput(element);\n this.trace('stopVideoPreviewForVideoInput', element.id);\n }\n\n setDeviceLabelTrigger(trigger: () => Promise): void {\n this.deviceController.setDeviceLabelTrigger(trigger);\n this.trace('setDeviceLabelTrigger');\n }\n\n mixIntoAudioInput(stream: MediaStream): MediaStreamAudioSourceNode {\n const result = this.deviceController.mixIntoAudioInput(stream);\n this.trace('mixIntoAudioInput', stream.id);\n return result;\n }\n\n chooseVideoInputQuality(width: number, height: number, frameRate: number): void {\n this.deviceController.chooseVideoInputQuality(width, height, frameRate);\n this.trace('chooseVideoInputQuality', {\n width: width,\n height: height,\n frameRate: frameRate,\n });\n }\n\n setVideoMaxBandwidthKbps(maxBandwidthKbps: number): void {\n this.audioVideoController.setVideoMaxBandwidthKbps(maxBandwidthKbps);\n this.trace('setVideoMaxBandwidthKbps', maxBandwidthKbps);\n }\n\n setVideoCodecSendPreferences(preferences: VideoCodecCapability[]): void {\n this.audioVideoController.setVideoCodecSendPreferences(preferences);\n this.trace('setVideoCodecSendPreferences', preferences);\n }\n\n getVideoInputQualitySettings(): VideoQualitySettings | null {\n const result = this.deviceController.getVideoInputQualitySettings();\n this.trace('getVideoInputQualitySettings');\n return result;\n }\n\n setContentAudioProfile(audioProfile: AudioProfile): void {\n this.trace('setContentAudioProfile', audioProfile);\n this.contentShareController.setContentAudioProfile(audioProfile);\n }\n\n enableSimulcastForContentShare(\n enable: boolean,\n encodingParams?: ContentShareSimulcastEncodingParameters\n ): void {\n this.trace('enableSimulcastForContentShare');\n this.contentShareController.enableSimulcastForContentShare(enable, encodingParams);\n }\n\n enableSVCForContentShare(enable: boolean): void {\n this.trace('enableSVCForContentShare');\n this.contentShareController.enableSVCForContentShare(enable);\n }\n\n startContentShare(stream: MediaStream): Promise {\n const result = this.contentShareController.startContentShare(stream);\n this.trace('startContentShare');\n return result;\n }\n\n startContentShareFromScreenCapture(sourceId?: string, frameRate?: number): Promise {\n const result = this.contentShareController.startContentShareFromScreenCapture(\n sourceId,\n frameRate\n );\n this.trace('startContentShareFromScreenCapture');\n return result;\n }\n\n pauseContentShare(): void {\n this.contentShareController.pauseContentShare();\n this.trace('pauseContentShare');\n }\n\n unpauseContentShare(): void {\n this.contentShareController.unpauseContentShare();\n this.trace('unpauseContentShare');\n }\n\n stopContentShare(): void {\n this.contentShareController.stopContentShare();\n this.trace('stopContentShare');\n }\n\n addContentShareObserver(observer: ContentShareObserver): void {\n this.contentShareController.addContentShareObserver(observer);\n this.trace('addContentShareObserver');\n }\n\n removeContentShareObserver(observer: ContentShareObserver): void {\n this.contentShareController.removeContentShareObserver(observer);\n this.trace('removeContentShareObserver');\n }\n\n setContentShareVideoCodecPreferences(preferences: VideoCodecCapability[]): void {\n this.contentShareController.setContentShareVideoCodecPreferences(preferences);\n this.trace('setContentShareVideoCodecPreferences');\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private trace(name: string, input?: any, output?: any): void {\n const meetingId = this.audioVideoController.configuration.meetingId;\n const attendeeId = this.audioVideoController.configuration.credentials.attendeeId;\n let s = `API/DefaultAudioVideoFacade/${meetingId}/${attendeeId}/${name}`;\n if (typeof input !== 'undefined') {\n s += ` ${JSON.stringify(input)}`;\n }\n if (typeof output !== 'undefined') {\n s += ` -> ${JSON.stringify(output)}`;\n }\n this.audioVideoController.logger.info(s);\n }\n\n getRemoteVideoSources(): VideoSource[] {\n const result = this.audioVideoController.getRemoteVideoSources();\n this.trace('getRemoteVideoSources', null, result);\n return result;\n }\n\n get transcriptionController(): TranscriptionController {\n return this.realtimeController.transcriptionController;\n }\n\n promoteToPrimaryMeeting(credentials: MeetingSessionCredentials): Promise {\n this.audioVideoController.removeObserver(this); // Avoid adding multiple times\n this.audioVideoController.addObserver(this); // See note in `audioVideoWasDemotedFromPrimaryMeeting`\n const result = this.audioVideoController.promoteToPrimaryMeeting(credentials);\n this.trace('promoteToPrimaryMeeting', null, result); // Don't trace credentials\n return result;\n }\n\n demoteFromPrimaryMeeting(): void {\n this.trace('demoteFromPrimaryMeeting');\n this.audioVideoController.demoteFromPrimaryMeeting();\n }\n\n audioVideoWasDemotedFromPrimaryMeeting(_: MeetingSessionStatus): void {\n // `DefaultContentShareController` currently does not respond to the connection ending\n // so `contentShareDidStop` will not be called even if backend cleans up the connection.\n // Thus we try to pre-emptively clean up on client side.\n this.contentShareController.stopContentShare();\n this.audioVideoController.removeObserver(this);\n }\n}\n","'use strict';\nvar aSet = require('../internals/a-set');\nvar SetHelpers = require('../internals/set-helpers');\nvar clone = require('../internals/set-clone');\nvar size = require('../internals/set-size');\nvar getSetRecord = require('../internals/get-set-record');\nvar iterateSet = require('../internals/set-iterate');\nvar iterateSimple = require('../internals/iterate-simple');\n\nvar has = SetHelpers.has;\nvar remove = SetHelpers.remove;\n\n// `Set.prototype.difference` method\n// https://github.com/tc39/proposal-set-methods\nmodule.exports = function difference(other) {\n var O = aSet(this);\n var otherRec = getSetRecord(other);\n var result = clone(O);\n if (size(O) <= otherRec.size) iterateSet(O, function (e) {\n if (otherRec.includes(e)) remove(result, e);\n });\n else iterateSimple(otherRec.getIterator(), function (e) {\n if (has(O, e)) remove(result, e);\n });\n return result;\n};\n","'use strict';\n\n\nconst zlib_deflate = require('./zlib/deflate');\nconst utils = require('./utils/common');\nconst strings = require('./utils/strings');\nconst msg = require('./zlib/messages');\nconst ZStream = require('./zlib/zstream');\n\nconst toString = Object.prototype.toString;\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\nconst {\n Z_NO_FLUSH, Z_SYNC_FLUSH, Z_FULL_FLUSH, Z_FINISH,\n Z_OK, Z_STREAM_END,\n Z_DEFAULT_COMPRESSION,\n Z_DEFAULT_STRATEGY,\n Z_DEFLATED\n} = require('./zlib/constants');\n\n/* ===========================================================================*/\n\n\n/**\n * class Deflate\n *\n * Generic JS-style wrapper for zlib calls. If you don't need\n * streaming behaviour - use more simple functions: [[deflate]],\n * [[deflateRaw]] and [[gzip]].\n **/\n\n/* internal\n * Deflate.chunks -> Array\n *\n * Chunks of output data, if [[Deflate#onData]] not overridden.\n **/\n\n/**\n * Deflate.result -> Uint8Array\n *\n * Compressed result, generated by default [[Deflate#onData]]\n * and [[Deflate#onEnd]] handlers. Filled after you push last chunk\n * (call [[Deflate#push]] with `Z_FINISH` / `true` param).\n **/\n\n/**\n * Deflate.err -> Number\n *\n * Error code after deflate finished. 0 (Z_OK) on success.\n * You will not need it in real life, because deflate errors\n * are possible only on wrong options or bad `onData` / `onEnd`\n * custom handlers.\n **/\n\n/**\n * Deflate.msg -> String\n *\n * Error message, if [[Deflate.err]] != 0\n **/\n\n\n/**\n * new Deflate(options)\n * - options (Object): zlib deflate options.\n *\n * Creates new deflator instance with specified params. Throws exception\n * on bad params. Supported options:\n *\n * - `level`\n * - `windowBits`\n * - `memLevel`\n * - `strategy`\n * - `dictionary`\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information on these.\n *\n * Additional options, for internal needs:\n *\n * - `chunkSize` - size of generated data chunks (16K by default)\n * - `raw` (Boolean) - do raw deflate\n * - `gzip` (Boolean) - create gzip wrapper\n * - `header` (Object) - custom header for gzip\n * - `text` (Boolean) - true if compressed data believed to be text\n * - `time` (Number) - modification time, unix timestamp\n * - `os` (Number) - operation system code\n * - `extra` (Array) - array of bytes with extra data (max 65536)\n * - `name` (String) - file name (binary string)\n * - `comment` (String) - comment (binary string)\n * - `hcrc` (Boolean) - true if header crc should be added\n *\n * ##### Example:\n *\n * ```javascript\n * const pako = require('pako')\n * , chunk1 = new Uint8Array([1,2,3,4,5,6,7,8,9])\n * , chunk2 = new Uint8Array([10,11,12,13,14,15,16,17,18,19]);\n *\n * const deflate = new pako.Deflate({ level: 3});\n *\n * deflate.push(chunk1, false);\n * deflate.push(chunk2, true); // true -> last chunk\n *\n * if (deflate.err) { throw new Error(deflate.err); }\n *\n * console.log(deflate.result);\n * ```\n **/\nfunction Deflate(options) {\n this.options = utils.assign({\n level: Z_DEFAULT_COMPRESSION,\n method: Z_DEFLATED,\n chunkSize: 16384,\n windowBits: 15,\n memLevel: 8,\n strategy: Z_DEFAULT_STRATEGY\n }, options || {});\n\n let opt = this.options;\n\n if (opt.raw && (opt.windowBits > 0)) {\n opt.windowBits = -opt.windowBits;\n }\n\n else if (opt.gzip && (opt.windowBits > 0) && (opt.windowBits < 16)) {\n opt.windowBits += 16;\n }\n\n this.err = 0; // error code, if happens (0 = Z_OK)\n this.msg = ''; // error message\n this.ended = false; // used to avoid multiple onEnd() calls\n this.chunks = []; // chunks of compressed data\n\n this.strm = new ZStream();\n this.strm.avail_out = 0;\n\n let status = zlib_deflate.deflateInit2(\n this.strm,\n opt.level,\n opt.method,\n opt.windowBits,\n opt.memLevel,\n opt.strategy\n );\n\n if (status !== Z_OK) {\n throw new Error(msg[status]);\n }\n\n if (opt.header) {\n zlib_deflate.deflateSetHeader(this.strm, opt.header);\n }\n\n if (opt.dictionary) {\n let dict;\n // Convert data if needed\n if (typeof opt.dictionary === 'string') {\n // If we need to compress text, change encoding to utf8.\n dict = strings.string2buf(opt.dictionary);\n } else if (toString.call(opt.dictionary) === '[object ArrayBuffer]') {\n dict = new Uint8Array(opt.dictionary);\n } else {\n dict = opt.dictionary;\n }\n\n status = zlib_deflate.deflateSetDictionary(this.strm, dict);\n\n if (status !== Z_OK) {\n throw new Error(msg[status]);\n }\n\n this._dict_set = true;\n }\n}\n\n/**\n * Deflate#push(data[, flush_mode]) -> Boolean\n * - data (Uint8Array|ArrayBuffer|String): input data. Strings will be\n * converted to utf8 byte sequence.\n * - flush_mode (Number|Boolean): 0..6 for corresponding Z_NO_FLUSH..Z_TREE modes.\n * See constants. Skipped or `false` means Z_NO_FLUSH, `true` means Z_FINISH.\n *\n * Sends input data to deflate pipe, generating [[Deflate#onData]] calls with\n * new compressed chunks. Returns `true` on success. The last data block must\n * have `flush_mode` Z_FINISH (or `true`). That will flush internal pending\n * buffers and call [[Deflate#onEnd]].\n *\n * On fail call [[Deflate#onEnd]] with error code and return false.\n *\n * ##### Example\n *\n * ```javascript\n * push(chunk, false); // push one of data chunks\n * ...\n * push(chunk, true); // push last chunk\n * ```\n **/\nDeflate.prototype.push = function (data, flush_mode) {\n const strm = this.strm;\n const chunkSize = this.options.chunkSize;\n let status, _flush_mode;\n\n if (this.ended) { return false; }\n\n if (flush_mode === ~~flush_mode) _flush_mode = flush_mode;\n else _flush_mode = flush_mode === true ? Z_FINISH : Z_NO_FLUSH;\n\n // Convert data if needed\n if (typeof data === 'string') {\n // If we need to compress text, change encoding to utf8.\n strm.input = strings.string2buf(data);\n } else if (toString.call(data) === '[object ArrayBuffer]') {\n strm.input = new Uint8Array(data);\n } else {\n strm.input = data;\n }\n\n strm.next_in = 0;\n strm.avail_in = strm.input.length;\n\n for (;;) {\n if (strm.avail_out === 0) {\n strm.output = new Uint8Array(chunkSize);\n strm.next_out = 0;\n strm.avail_out = chunkSize;\n }\n\n // Make sure avail_out > 6 to avoid repeating markers\n if ((_flush_mode === Z_SYNC_FLUSH || _flush_mode === Z_FULL_FLUSH) && strm.avail_out <= 6) {\n this.onData(strm.output.subarray(0, strm.next_out));\n strm.avail_out = 0;\n continue;\n }\n\n status = zlib_deflate.deflate(strm, _flush_mode);\n\n // Ended => flush and finish\n if (status === Z_STREAM_END) {\n if (strm.next_out > 0) {\n this.onData(strm.output.subarray(0, strm.next_out));\n }\n status = zlib_deflate.deflateEnd(this.strm);\n this.onEnd(status);\n this.ended = true;\n return status === Z_OK;\n }\n\n // Flush if out buffer full\n if (strm.avail_out === 0) {\n this.onData(strm.output);\n continue;\n }\n\n // Flush if requested and has data\n if (_flush_mode > 0 && strm.next_out > 0) {\n this.onData(strm.output.subarray(0, strm.next_out));\n strm.avail_out = 0;\n continue;\n }\n\n if (strm.avail_in === 0) break;\n }\n\n return true;\n};\n\n\n/**\n * Deflate#onData(chunk) -> Void\n * - chunk (Uint8Array): output data.\n *\n * By default, stores data blocks in `chunks[]` property and glue\n * those in `onEnd`. Override this handler, if you need another behaviour.\n **/\nDeflate.prototype.onData = function (chunk) {\n this.chunks.push(chunk);\n};\n\n\n/**\n * Deflate#onEnd(status) -> Void\n * - status (Number): deflate status. 0 (Z_OK) on success,\n * other if not.\n *\n * Called once after you tell deflate that the input stream is\n * complete (Z_FINISH). By default - join collected chunks,\n * free memory and fill `results` / `err` properties.\n **/\nDeflate.prototype.onEnd = function (status) {\n // On success - join\n if (status === Z_OK) {\n this.result = utils.flattenChunks(this.chunks);\n }\n this.chunks = [];\n this.err = status;\n this.msg = this.strm.msg;\n};\n\n\n/**\n * deflate(data[, options]) -> Uint8Array\n * - data (Uint8Array|ArrayBuffer|String): input data to compress.\n * - options (Object): zlib deflate options.\n *\n * Compress `data` with deflate algorithm and `options`.\n *\n * Supported options are:\n *\n * - level\n * - windowBits\n * - memLevel\n * - strategy\n * - dictionary\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information on these.\n *\n * Sugar (options):\n *\n * - `raw` (Boolean) - say that we work with raw stream, if you don't wish to specify\n * negative windowBits implicitly.\n *\n * ##### Example:\n *\n * ```javascript\n * const pako = require('pako')\n * const data = new Uint8Array([1,2,3,4,5,6,7,8,9]);\n *\n * console.log(pako.deflate(data));\n * ```\n **/\nfunction deflate(input, options) {\n const deflator = new Deflate(options);\n\n deflator.push(input, true);\n\n // That will never happens, if you don't cheat with options :)\n if (deflator.err) { throw deflator.msg || msg[deflator.err]; }\n\n return deflator.result;\n}\n\n\n/**\n * deflateRaw(data[, options]) -> Uint8Array\n * - data (Uint8Array|ArrayBuffer|String): input data to compress.\n * - options (Object): zlib deflate options.\n *\n * The same as [[deflate]], but creates raw data, without wrapper\n * (header and adler32 crc).\n **/\nfunction deflateRaw(input, options) {\n options = options || {};\n options.raw = true;\n return deflate(input, options);\n}\n\n\n/**\n * gzip(data[, options]) -> Uint8Array\n * - data (Uint8Array|ArrayBuffer|String): input data to compress.\n * - options (Object): zlib deflate options.\n *\n * The same as [[deflate]], but create gzip wrapper instead of\n * deflate one.\n **/\nfunction gzip(input, options) {\n options = options || {};\n options.gzip = true;\n return deflate(input, options);\n}\n\n\nmodule.exports.Deflate = Deflate;\nmodule.exports.deflate = deflate;\nmodule.exports.deflateRaw = deflateRaw;\nmodule.exports.gzip = gzip;\nmodule.exports.constants = require('./zlib/constants');\n","// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { SourceData } from \"@aws-sdk/types\";\nimport { fromUtf8 as fromUtf8Browser } from \"@aws-sdk/util-utf8-browser\";\n\n// Quick polyfill\nconst fromUtf8 =\n typeof Buffer !== \"undefined\" && Buffer.from\n ? (input: string) => Buffer.from(input, \"utf8\")\n : fromUtf8Browser;\n\nexport function convertToBuffer(data: SourceData): Uint8Array {\n // Already a Uint8, do nothing\n if (data instanceof Uint8Array) return data;\n\n if (typeof data === \"string\") {\n return fromUtf8(data);\n }\n\n if (ArrayBuffer.isView(data)) {\n return new Uint8Array(\n data.buffer,\n data.byteOffset,\n data.byteLength / Uint8Array.BYTES_PER_ELEMENT\n );\n }\n\n return new Uint8Array(data);\n}\n","\"use strict\";\nmodule.exports = BufferWriter;\n\n// extends Writer\nvar Writer = require(\"./writer\");\n(BufferWriter.prototype = Object.create(Writer.prototype)).constructor = BufferWriter;\n\nvar util = require(\"./util/minimal\");\n\n/**\n * Constructs a new buffer writer instance.\n * @classdesc Wire format writer using node buffers.\n * @extends Writer\n * @constructor\n */\nfunction BufferWriter() {\n Writer.call(this);\n}\n\nBufferWriter._configure = function () {\n /**\n * Allocates a buffer of the specified size.\n * @function\n * @param {number} size Buffer size\n * @returns {Buffer} Buffer\n */\n BufferWriter.alloc = util._Buffer_allocUnsafe;\n\n BufferWriter.writeBytesBuffer = util.Buffer && util.Buffer.prototype instanceof Uint8Array && util.Buffer.prototype.set.name === \"set\"\n ? function writeBytesBuffer_set(val, buf, pos) {\n buf.set(val, pos); // faster than copy (requires node >= 4 where Buffers extend Uint8Array and set is properly inherited)\n // also works for plain array values\n }\n /* istanbul ignore next */\n : function writeBytesBuffer_copy(val, buf, pos) {\n if (val.copy) // Buffer values\n val.copy(buf, pos, 0, val.length);\n else for (var i = 0; i < val.length;) // plain array values\n buf[pos++] = val[i++];\n };\n};\n\n\n/**\n * @override\n */\nBufferWriter.prototype.bytes = function write_bytes_buffer(value) {\n if (util.isString(value))\n value = util._Buffer_from(value, \"base64\");\n var len = value.length >>> 0;\n this.uint32(len);\n if (len)\n this._push(BufferWriter.writeBytesBuffer, len, value);\n return this;\n};\n\nfunction writeStringBuffer(val, buf, pos) {\n if (val.length < 40) // plain js is faster for short strings (probably due to redundant assertions)\n util.utf8.write(val, buf, pos);\n else if (buf.utf8Write)\n buf.utf8Write(val, pos);\n else\n buf.write(val, pos);\n}\n\n/**\n * @override\n */\nBufferWriter.prototype.string = function write_string_buffer(value) {\n var len = util.Buffer.byteLength(value);\n this.uint32(len);\n if (len)\n this._push(writeStringBuffer, len, value);\n return this;\n};\n\n\n/**\n * Finishes the write operation.\n * @name BufferWriter#finish\n * @function\n * @returns {Buffer} Finished buffer\n */\n\nBufferWriter._configure();\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport AudioVideoControllerState from '../audiovideocontroller/AudioVideoControllerState';\nimport Logger from '../logger/Logger';\nimport SignalingClient from '../signalingclient/SignalingClient';\nimport SignalingClientEvent from '../signalingclient/SignalingClientEvent';\nimport SignalingClientEventType from '../signalingclient/SignalingClientEventType';\nimport SignalingClientObserver from '../signalingclientobserver/SignalingClientObserver';\nimport { SdkSignalFrame } from '../signalingprotocol/SignalingProtocol.js';\nimport TaskCanceler from '../taskcanceler/TaskCanceler';\nimport BaseTask from './BaseTask';\n\n/**\n * [[LeaveAndReceiveLeaveAckTask]] sends a Leave frame and waits for a LeaveAck.\n */\nexport default class LeaveAndReceiveLeaveAckTask extends BaseTask {\n protected taskName = 'LeaveAndReceiveLeaveAckTask';\n private taskCanceler: TaskCanceler | null = null;\n\n constructor(private context: AudioVideoControllerState) {\n super(context.logger);\n }\n\n cancel(): void {\n if (this.taskCanceler) {\n this.taskCanceler.cancel();\n this.taskCanceler = null;\n }\n }\n\n async run(): Promise {\n if (this.context.signalingClient.ready()) {\n this.context.signalingClient.leave();\n this.context.logger.info('sent leave');\n await this.receiveLeaveAck();\n }\n }\n\n private receiveLeaveAck(): Promise {\n return new Promise((resolve, reject) => {\n class Interceptor implements SignalingClientObserver, TaskCanceler {\n constructor(private signalingClient: SignalingClient, private logger: Logger) {}\n\n cancel(): void {\n this.signalingClient.removeObserver(this);\n reject(\n new Error(`LeaveAndReceiveLeaveAckTask got canceled while waiting for IndexFrame`)\n );\n }\n\n handleSignalingClientEvent(event: SignalingClientEvent): void {\n if (event.isConnectionTerminated()) {\n this.signalingClient.removeObserver(this);\n this.logger.info('LeaveAndReceiveLeaveAckTask connection terminated');\n // don't treat this as an error\n resolve();\n return;\n }\n\n if (\n event.type === SignalingClientEventType.ReceivedSignalFrame &&\n event.message.type === SdkSignalFrame.Type.LEAVE_ACK\n ) {\n this.signalingClient.removeObserver(this);\n this.logger.info('got leave ack');\n resolve();\n }\n }\n }\n\n const interceptor = new Interceptor(this.context.signalingClient, this.context.logger);\n this.taskCanceler = interceptor;\n this.context.signalingClient.registerObserver(interceptor);\n });\n }\n}\n","'use strict';\nvar $ = require('../internals/export');\nvar bind = require('../internals/function-bind-context');\nvar aSet = require('../internals/a-set');\nvar SetHelpers = require('../internals/set-helpers');\nvar iterate = require('../internals/set-iterate');\n\nvar Set = SetHelpers.Set;\nvar add = SetHelpers.add;\n\n// `Set.prototype.filter` method\n// https://github.com/tc39/proposal-collection-methods\n$({ target: 'Set', proto: true, real: true, forced: true }, {\n filter: function filter(callbackfn /* , thisArg */) {\n var set = aSet(this);\n var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n var newSet = new Set();\n iterate(set, function (value) {\n if (boundFunction(value, value, set)) add(newSet, value);\n });\n return newSet;\n }\n});\n","'use strict';\n\nvar call = Function.prototype.call;\nvar $hasOwn = Object.prototype.hasOwnProperty;\nvar bind = require('function-bind');\n\n/** @type {import('.')} */\nmodule.exports = bind.call(call, $hasOwn);\n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['route53'] = {};\nAWS.Route53 = Service.defineService('route53', ['2013-04-01']);\nrequire('../lib/services/route53');\nObject.defineProperty(apiLoader.services['route53'], '2013-04-01', {\n get: function get() {\n var model = require('../apis/route53-2013-04-01.min.json');\n model.paginators = require('../apis/route53-2013-04-01.paginators.json').pagination;\n model.waiters = require('../apis/route53-2013-04-01.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.Route53;\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\n/**\n * [[MeetingSessionStatusCode]] gives the underlying reason for a given [[MeetingSessionStatus]]. Though some codes are used for\n * [[MeetingSessionStatus]] internally, the primary use of these is in `AudioVideoObserver.audioVideoDidStop`, and their docstrings\n * will be specific to that usage. Other functions that use [[MeetingSessionStatus]] (mainly\n * `AudioVideoControllerFacade.promoteToPrimaryMeeting` and `AudioVideoObserver.audioVideoWasDemotedFromPrimaryMeeting` will document\n * their usage separately).\n *\n * These status codes can be used for logging, debugging, and notification to end users, but in most cases should not\n * be used for any retry behavior, as the audio video controller will already be retrying non-terminal errors (i.e. regardless\n * of `MeetingSessionStatus.isTerminal`, your application should not try to immediately restart or recreate the\n * audio video controller). For error codes that indicate issues with the Chime service, please create a github issue\n * with browser logs if they occur frequently.\n *\n * If `MeetingSessionStatus.isTerminal` returns `true`, you should remove any meeting UX in addition to notifying the user,\n * as the audio video controller will not be retrying the connection. When notifying users, more general failure messages are\n * recommended unless otherwise noted.\n */\nexport enum MeetingSessionStatusCode {\n /**\n * There is no error. This code is used internally but will never be returned by `audioVideoDidStop`\n */\n OK,\n\n /**\n * The attendee left the meeting normally via `AudioVideoConftrollerFacade.stop`\n */\n Left,\n\n /**\n * The attendee joined from another device (e.g. another browser window/tab or on mobile) using the\n * same credentials. `Audio` prefix is irrelevant. The end-user may want to be notified of this\n * type of error.\n *\n * This also can occur if your application unintentionally creates two meeting sessions.\n */\n AudioJoinedFromAnotherDevice,\n\n /**\n * Authentication was rejected as the attendee information in `MeetingSessionCredentials` did\n * not match that of an attendee created via `chime::CreateAttendee`.\n *\n * This error may imply an issue with your credential providing service. The `Audio` prefix is irrelevant.\n */\n AudioAuthenticationRejected,\n\n /**\n * The client can not join because the meeting is at capacity. The service supports up to 250 attendees. The\n * end user may want to be notified of this type of error. The `Audio` prefix is irrelevant.\n */\n AudioCallAtCapacity,\n\n /**\n * The attendee attempted to join a meeting that has already ended. See\n * [this FAQ](https://aws.github.io/amazon-chime-sdk-js/modules/faqs.html#when-does-an-amazon-chime-sdk-meeting-end)\n * for more information. The end user may want to be notified of this type of error.\n */\n MeetingEnded,\n\n /**\n * There was an internal server error related to audio. This may indicate some issue with the audio device, or an issue with\n * the Amazon Chime SDK service itself.\n */\n AudioInternalServerError,\n\n /**\n * There was an internal server error related to audio. This may indicate some issue with the audio device, or an issue with\n * the Amazon Chime SDK service itself.\n */\n AudioServiceUnavailable,\n\n /**\n * There was an internal server error related to audio. This may indicate some issue with the audio device, or an issue with\n * the Amazon Chime SDK service itself.\n */\n AudioDisconnected,\n\n /**\n * This is only used internally and will not be provided in any `audioVideoDidStop` calls.\n *\n * The client has asked to send and receive video, but it is only possible to\n * continue in view-only mode (receiving video). This should be handled by\n * explicitly switching to view-only mode.\n */\n VideoCallSwitchToViewOnly,\n\n /**\n * This is only used internally and will not be provided in any `audioVideoDidStop` calls.\n *\n * This can happen when you attempt to join a video meeting in \"send only\" mode\n * (transmitting your camera, but not receiving anything -- this isn't something\n * we ever do in practice, but it is supported on the server). It should be\n * treated as \"fatal\" and probably should not be retried (despite the 5xx nature).\n */\n VideoCallAtSourceCapacity,\n\n /**\n * The Amazon Chime SDK for JavaScript failed to establish a signaling connection because\n * you or someone else deleted the attendee using the\n * [DeleteAttendee](https://docs.aws.amazon.com/chime-sdk/latest/APIReference/API_meeting-chime_DeleteAttendee.html)\n * API action in your server application. You also should not use the attendee response from\n * the ended meeting that you created with the same ClientRequestToken parameter\n * before.\n */\n SignalingBadRequest,\n\n /**\n * The Chime SDK for JavaScript either failed to establish a signaling connection to the Chime\n * backend due to an internal server error or the connection was lost mid-call.\n *\n * This may indicate an issue with the Chime service, but also often indicates a network issue impacting the end user,\n * who may want to be notified of their unstable network during the reconnection.\n */\n SignalingInternalServerError,\n\n /**\n * Received unknown signaling error frame without a status. This code is nearly impossible to occur\n * and indicates an issue with the Chime service.\n */\n SignalingRequestFailed,\n\n /**\n * The websocket signalling channel was closed unexpectedly mid-meeting. This may be due to:\n * * A client side network change, e.g. switching WiFi networks (most typical).\n * * A backend detecting client side issues (e.g. decryption issues), and snapping\n * the connection to force a reconnection.\n * * Unexpected backend issues, e.g. AWS networking issues.\n * The latter two are less common.\n */\n SignalingChannelClosedUnexpectedly,\n\n /**\n * Timed out gathering ICE candidates. If in Chrome, this could be an\n * indication that the browser is in a bad state due to a VPN reconnect and\n * the user should try quitting and relaunching the app. See:\n * https://bugs.chromium.org/p/webrtc/issues/detail?id=9097\n */\n ICEGatheringTimeoutWorkaround,\n\n /**\n * Due to connection health as determined by [[ConnectionHealthPolicyConfiguration]], a reconnect has been triggered.\n */\n ConnectionHealthReconnect,\n\n /**\n * The [[RealtimeController]] failed in some way. This indicates an issue with the callback function provided to RealtimeController APIs (e.g. a callback is throwing an error).\n */\n RealtimeApiFailed,\n\n /**\n * A step in the connection to the Amazon Chime SDK backends failed without a more specific reason. This may indicate end-user connection issues\n * and should be retried.\n */\n TaskFailed,\n\n /**\n * There was an issue with media negotiation. This may indicate an issue with Amazon Chime SDK, or that the end user is using an unsupported\n * browser. Please use `new DefaultBrowserBehavior().isSupported()` pre-call to check the support of end-user browsers\n * and warn them of possible issues.\n */\n IncompatibleSDP,\n\n /**\n * This can happen when you attempt to join a meeting which has ended or attendee got removed. This is analogous to `MeetingEnded` except\n * determined through the media channel rather then the signaling channel.\n */\n TURNCredentialsForbidden,\n\n /**\n * The attendee did not show up on the roster. This may indicate an issue with the end user audio device or and issue with Amazon Chime SDK.\n */\n NoAttendeePresent,\n\n /**\n * The session was ended because the attendee has been removed via `chime::DeleteAttendee`. The end user may want to be notified\n * of this error.\n */\n AudioAttendeeRemoved,\n\n /**\n * This is only used in promotion functions and will not be provided in any `audioVideoDidStop` calls.\n *\n * The attendees Primary meeting credentials have been revoked or deleted.\n */\n AudioVideoWasRemovedFromPrimaryMeeting,\n\n /**\n * This is only used in promotion functions and will not be provided in any `audioVideoDidStop` calls.\n *\n * The attendee was automatically demoted following a disconnection. The attendee must re-premote itself to the\n * primary meeting.\n */\n AudioVideoDisconnectedWhilePromoted,\n\n /**\n * This is only used internally and will not be provided in any `audioVideoDidStop` calls.\n *\n * Reserved.\n */\n AudioDisconnectAudio,\n}\n\nexport default MeetingSessionStatusCode;\n","var AWS = require('../core');\nvar inherit = AWS.util.inherit;\n\n/**\n * @api private\n */\nAWS.Signers.V3 = inherit(AWS.Signers.RequestSigner, {\n addAuthorization: function addAuthorization(credentials, date) {\n\n var datetime = AWS.util.date.rfc822(date);\n\n this.request.headers['X-Amz-Date'] = datetime;\n\n if (credentials.sessionToken) {\n this.request.headers['x-amz-security-token'] = credentials.sessionToken;\n }\n\n this.request.headers['X-Amzn-Authorization'] =\n this.authorization(credentials, datetime);\n\n },\n\n authorization: function authorization(credentials) {\n return 'AWS3 ' +\n 'AWSAccessKeyId=' + credentials.accessKeyId + ',' +\n 'Algorithm=HmacSHA256,' +\n 'SignedHeaders=' + this.signedHeaders() + ',' +\n 'Signature=' + this.signature(credentials);\n },\n\n signedHeaders: function signedHeaders() {\n var headers = [];\n AWS.util.arrayEach(this.headersToSign(), function iterator(h) {\n headers.push(h.toLowerCase());\n });\n return headers.sort().join(';');\n },\n\n canonicalHeaders: function canonicalHeaders() {\n var headers = this.request.headers;\n var parts = [];\n AWS.util.arrayEach(this.headersToSign(), function iterator(h) {\n parts.push(h.toLowerCase().trim() + ':' + String(headers[h]).trim());\n });\n return parts.sort().join('\\n') + '\\n';\n },\n\n headersToSign: function headersToSign() {\n var headers = [];\n AWS.util.each(this.request.headers, function iterator(k) {\n if (k === 'Host' || k === 'Content-Encoding' || k.match(/^X-Amz/i)) {\n headers.push(k);\n }\n });\n return headers;\n },\n\n signature: function signature(credentials) {\n return AWS.util.crypto.hmac(credentials.secretAccessKey, this.stringToSign(), 'base64');\n },\n\n stringToSign: function stringToSign() {\n var parts = [];\n parts.push(this.request.method);\n parts.push('/');\n parts.push('');\n parts.push(this.canonicalHeaders());\n parts.push(this.request.body);\n return AWS.util.crypto.sha256(parts.join('\\n'));\n }\n\n});\n\n/**\n * @api private\n */\nmodule.exports = AWS.Signers.V3;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['cognitosync'] = {};\nAWS.CognitoSync = Service.defineService('cognitosync', ['2014-06-30']);\nObject.defineProperty(apiLoader.services['cognitosync'], '2014-06-30', {\n get: function get() {\n var model = require('../apis/cognito-sync-2014-06-30.min.json');\n model.paginators = require('../apis/cognito-sync-2014-06-30.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.CognitoSync;\n","var AWS = require('../core');\nvar STS = require('../../clients/sts');\n\n/**\n * Represents credentials retrieved from STS Web Identity Federation support.\n *\n * By default this provider gets credentials using the\n * {AWS.STS.assumeRoleWithWebIdentity} service operation. This operation\n * requires a `RoleArn` containing the ARN of the IAM trust policy for the\n * application for which credentials will be given. In addition, the\n * `WebIdentityToken` must be set to the token provided by the identity\n * provider. See {constructor} for an example on creating a credentials\n * object with proper `RoleArn` and `WebIdentityToken` values.\n *\n * ## Refreshing Credentials from Identity Service\n *\n * In addition to AWS credentials expiring after a given amount of time, the\n * login token from the identity provider will also expire. Once this token\n * expires, it will not be usable to refresh AWS credentials, and another\n * token will be needed. The SDK does not manage refreshing of the token value,\n * but this can be done through a \"refresh token\" supported by most identity\n * providers. Consult the documentation for the identity provider for refreshing\n * tokens. Once the refreshed token is acquired, you should make sure to update\n * this new token in the credentials object's {params} property. The following\n * code will update the WebIdentityToken, assuming you have retrieved an updated\n * token from the identity provider:\n *\n * ```javascript\n * AWS.config.credentials.params.WebIdentityToken = updatedToken;\n * ```\n *\n * Future calls to `credentials.refresh()` will now use the new token.\n *\n * @!attribute params\n * @return [map] the map of params passed to\n * {AWS.STS.assumeRoleWithWebIdentity}. To update the token, set the\n * `params.WebIdentityToken` property.\n * @!attribute data\n * @return [map] the raw data response from the call to\n * {AWS.STS.assumeRoleWithWebIdentity}. Use this if you want to get\n * access to other properties from the response.\n */\nAWS.WebIdentityCredentials = AWS.util.inherit(AWS.Credentials, {\n /**\n * Creates a new credentials object.\n * @param (see AWS.STS.assumeRoleWithWebIdentity)\n * @example Creating a new credentials object\n * AWS.config.credentials = new AWS.WebIdentityCredentials({\n * RoleArn: 'arn:aws:iam::1234567890:role/WebIdentity',\n * WebIdentityToken: 'ABCDEFGHIJKLMNOP', // token from identity service\n * RoleSessionName: 'web' // optional name, defaults to web-identity\n * }, {\n * // optionally provide configuration to apply to the underlying AWS.STS service client\n * // if configuration is not provided, then configuration will be pulled from AWS.config\n *\n * // specify timeout options\n * httpOptions: {\n * timeout: 100\n * }\n * });\n * @see AWS.STS.assumeRoleWithWebIdentity\n * @see AWS.Config\n */\n constructor: function WebIdentityCredentials(params, clientConfig) {\n AWS.Credentials.call(this);\n this.expired = true;\n this.params = params;\n this.params.RoleSessionName = this.params.RoleSessionName || 'web-identity';\n this.data = null;\n this._clientConfig = AWS.util.copy(clientConfig || {});\n },\n\n /**\n * Refreshes credentials using {AWS.STS.assumeRoleWithWebIdentity}\n *\n * @callback callback function(err)\n * Called when the STS service responds (or fails). When\n * this callback is called with no error, it means that the credentials\n * information has been loaded into the object (as the `accessKeyId`,\n * `secretAccessKey`, and `sessionToken` properties).\n * @param err [Error] if an error occurred, this value will be filled\n * @see get\n */\n refresh: function refresh(callback) {\n this.coalesceRefresh(callback || AWS.util.fn.callback);\n },\n\n /**\n * @api private\n */\n load: function load(callback) {\n var self = this;\n self.createClients();\n self.service.assumeRoleWithWebIdentity(function (err, data) {\n self.data = null;\n if (!err) {\n self.data = data;\n self.service.credentialsFrom(data, self);\n }\n callback(err);\n });\n },\n\n /**\n * @api private\n */\n createClients: function() {\n if (!this.service) {\n var stsConfig = AWS.util.merge({}, this._clientConfig);\n stsConfig.params = this.params;\n this.service = new STS(stsConfig);\n }\n }\n\n});\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nexport enum ClientMetricReportDirection {\n UPSTREAM,\n DOWNSTREAM,\n}\n\nexport default ClientMetricReportDirection;\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport Logger from './Logger';\nimport LogLevel from './LogLevel';\n\n/**\n * [[NoOpLogger]] does not log any message.\n */\nexport default class NoOpLogger implements Logger {\n level: LogLevel;\n\n constructor(level = LogLevel.OFF) {\n this.level = level;\n }\n\n info(_msg: string): void {}\n\n warn(_msg: string): void {}\n\n error(_msg: string): void {}\n\n debug(debugFunction: string | (() => string)): void {\n if (LogLevel.DEBUG < this.level) {\n return;\n }\n if (typeof debugFunction !== 'string') {\n debugFunction();\n }\n }\n\n setLogLevel(level: LogLevel): void {\n this.level = level;\n }\n\n getLogLevel(): LogLevel {\n return this.level;\n }\n}\n","const SHORT_TO_HEX = {};\nconst HEX_TO_SHORT = {};\nfor (let i = 0; i < 256; i++) {\n let encodedByte = i.toString(16).toLowerCase();\n if (encodedByte.length === 1) {\n encodedByte = `0${encodedByte}`;\n }\n SHORT_TO_HEX[i] = encodedByte;\n HEX_TO_SHORT[encodedByte] = i;\n}\nexport function fromHex(encoded) {\n if (encoded.length % 2 !== 0) {\n throw new Error(\"Hex encoded strings must have an even number length\");\n }\n const out = new Uint8Array(encoded.length / 2);\n for (let i = 0; i < encoded.length; i += 2) {\n const encodedByte = encoded.slice(i, i + 2).toLowerCase();\n if (encodedByte in HEX_TO_SHORT) {\n out[i / 2] = HEX_TO_SHORT[encodedByte];\n }\n else {\n throw new Error(`Cannot decode unrecognized sequence ${encodedByte} as hexadecimal`);\n }\n }\n return out;\n}\nexport function toHex(bytes) {\n let out = \"\";\n for (let i = 0; i < bytes.byteLength; i++) {\n out += SHORT_TO_HEX[bytes[i]];\n }\n return out;\n}\n","'use strict';\n// TODO: remove from `core-js@4`\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\n\n// `Symbol.patternMatch` well-known symbol\n// https://github.com/tc39/proposal-pattern-matching\ndefineWellKnownSymbol('patternMatch');\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nexport default class GlobalMetricReport {\n previousMetrics: { [id: string]: number } = {};\n currentMetrics: { [id: string]: number } = {};\n // As metric values do not necessarily be number, this is a workaround in case metric value is string\n currentStringMetrics: { [id: string]: string } = {};\n previousObjectMetrics: { [id: string]: object } = {};\n currentObjectMetrics: { [id: string]: object } = {};\n}\n","\"use strict\";\nmodule.exports = Writer;\n\nvar util = require(\"./util/minimal\");\n\nvar BufferWriter; // cyclic\n\nvar LongBits = util.LongBits,\n base64 = util.base64,\n utf8 = util.utf8;\n\n/**\n * Constructs a new writer operation instance.\n * @classdesc Scheduled writer operation.\n * @constructor\n * @param {function(*, Uint8Array, number)} fn Function to call\n * @param {number} len Value byte length\n * @param {*} val Value to write\n * @ignore\n */\nfunction Op(fn, len, val) {\n\n /**\n * Function to call.\n * @type {function(Uint8Array, number, *)}\n */\n this.fn = fn;\n\n /**\n * Value byte length.\n * @type {number}\n */\n this.len = len;\n\n /**\n * Next operation.\n * @type {Writer.Op|undefined}\n */\n this.next = undefined;\n\n /**\n * Value to write.\n * @type {*}\n */\n this.val = val; // type varies\n}\n\n/* istanbul ignore next */\nfunction noop() {} // eslint-disable-line no-empty-function\n\n/**\n * Constructs a new writer state instance.\n * @classdesc Copied writer state.\n * @memberof Writer\n * @constructor\n * @param {Writer} writer Writer to copy state from\n * @ignore\n */\nfunction State(writer) {\n\n /**\n * Current head.\n * @type {Writer.Op}\n */\n this.head = writer.head;\n\n /**\n * Current tail.\n * @type {Writer.Op}\n */\n this.tail = writer.tail;\n\n /**\n * Current buffer length.\n * @type {number}\n */\n this.len = writer.len;\n\n /**\n * Next state.\n * @type {State|null}\n */\n this.next = writer.states;\n}\n\n/**\n * Constructs a new writer instance.\n * @classdesc Wire format writer using `Uint8Array` if available, otherwise `Array`.\n * @constructor\n */\nfunction Writer() {\n\n /**\n * Current length.\n * @type {number}\n */\n this.len = 0;\n\n /**\n * Operations head.\n * @type {Object}\n */\n this.head = new Op(noop, 0, 0);\n\n /**\n * Operations tail\n * @type {Object}\n */\n this.tail = this.head;\n\n /**\n * Linked forked states.\n * @type {Object|null}\n */\n this.states = null;\n\n // When a value is written, the writer calculates its byte length and puts it into a linked\n // list of operations to perform when finish() is called. This both allows us to allocate\n // buffers of the exact required size and reduces the amount of work we have to do compared\n // to first calculating over objects and then encoding over objects. In our case, the encoding\n // part is just a linked list walk calling operations with already prepared values.\n}\n\nvar create = function create() {\n return util.Buffer\n ? function create_buffer_setup() {\n return (Writer.create = function create_buffer() {\n return new BufferWriter();\n })();\n }\n /* istanbul ignore next */\n : function create_array() {\n return new Writer();\n };\n};\n\n/**\n * Creates a new writer.\n * @function\n * @returns {BufferWriter|Writer} A {@link BufferWriter} when Buffers are supported, otherwise a {@link Writer}\n */\nWriter.create = create();\n\n/**\n * Allocates a buffer of the specified size.\n * @param {number} size Buffer size\n * @returns {Uint8Array} Buffer\n */\nWriter.alloc = function alloc(size) {\n return new util.Array(size);\n};\n\n// Use Uint8Array buffer pool in the browser, just like node does with buffers\n/* istanbul ignore else */\nif (util.Array !== Array)\n Writer.alloc = util.pool(Writer.alloc, util.Array.prototype.subarray);\n\n/**\n * Pushes a new operation to the queue.\n * @param {function(Uint8Array, number, *)} fn Function to call\n * @param {number} len Value byte length\n * @param {number} val Value to write\n * @returns {Writer} `this`\n * @private\n */\nWriter.prototype._push = function push(fn, len, val) {\n this.tail = this.tail.next = new Op(fn, len, val);\n this.len += len;\n return this;\n};\n\nfunction writeByte(val, buf, pos) {\n buf[pos] = val & 255;\n}\n\nfunction writeVarint32(val, buf, pos) {\n while (val > 127) {\n buf[pos++] = val & 127 | 128;\n val >>>= 7;\n }\n buf[pos] = val;\n}\n\n/**\n * Constructs a new varint writer operation instance.\n * @classdesc Scheduled varint writer operation.\n * @extends Op\n * @constructor\n * @param {number} len Value byte length\n * @param {number} val Value to write\n * @ignore\n */\nfunction VarintOp(len, val) {\n this.len = len;\n this.next = undefined;\n this.val = val;\n}\n\nVarintOp.prototype = Object.create(Op.prototype);\nVarintOp.prototype.fn = writeVarint32;\n\n/**\n * Writes an unsigned 32 bit value as a varint.\n * @param {number} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.uint32 = function write_uint32(value) {\n // here, the call to this.push has been inlined and a varint specific Op subclass is used.\n // uint32 is by far the most frequently used operation and benefits significantly from this.\n this.len += (this.tail = this.tail.next = new VarintOp(\n (value = value >>> 0)\n < 128 ? 1\n : value < 16384 ? 2\n : value < 2097152 ? 3\n : value < 268435456 ? 4\n : 5,\n value)).len;\n return this;\n};\n\n/**\n * Writes a signed 32 bit value as a varint.\n * @function\n * @param {number} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.int32 = function write_int32(value) {\n return value < 0\n ? this._push(writeVarint64, 10, LongBits.fromNumber(value)) // 10 bytes per spec\n : this.uint32(value);\n};\n\n/**\n * Writes a 32 bit value as a varint, zig-zag encoded.\n * @param {number} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.sint32 = function write_sint32(value) {\n return this.uint32((value << 1 ^ value >> 31) >>> 0);\n};\n\nfunction writeVarint64(val, buf, pos) {\n while (val.hi) {\n buf[pos++] = val.lo & 127 | 128;\n val.lo = (val.lo >>> 7 | val.hi << 25) >>> 0;\n val.hi >>>= 7;\n }\n while (val.lo > 127) {\n buf[pos++] = val.lo & 127 | 128;\n val.lo = val.lo >>> 7;\n }\n buf[pos++] = val.lo;\n}\n\n/**\n * Writes an unsigned 64 bit value as a varint.\n * @param {Long|number|string} value Value to write\n * @returns {Writer} `this`\n * @throws {TypeError} If `value` is a string and no long library is present.\n */\nWriter.prototype.uint64 = function write_uint64(value) {\n var bits = LongBits.from(value);\n return this._push(writeVarint64, bits.length(), bits);\n};\n\n/**\n * Writes a signed 64 bit value as a varint.\n * @function\n * @param {Long|number|string} value Value to write\n * @returns {Writer} `this`\n * @throws {TypeError} If `value` is a string and no long library is present.\n */\nWriter.prototype.int64 = Writer.prototype.uint64;\n\n/**\n * Writes a signed 64 bit value as a varint, zig-zag encoded.\n * @param {Long|number|string} value Value to write\n * @returns {Writer} `this`\n * @throws {TypeError} If `value` is a string and no long library is present.\n */\nWriter.prototype.sint64 = function write_sint64(value) {\n var bits = LongBits.from(value).zzEncode();\n return this._push(writeVarint64, bits.length(), bits);\n};\n\n/**\n * Writes a boolish value as a varint.\n * @param {boolean} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.bool = function write_bool(value) {\n return this._push(writeByte, 1, value ? 1 : 0);\n};\n\nfunction writeFixed32(val, buf, pos) {\n buf[pos ] = val & 255;\n buf[pos + 1] = val >>> 8 & 255;\n buf[pos + 2] = val >>> 16 & 255;\n buf[pos + 3] = val >>> 24;\n}\n\n/**\n * Writes an unsigned 32 bit value as fixed 32 bits.\n * @param {number} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.fixed32 = function write_fixed32(value) {\n return this._push(writeFixed32, 4, value >>> 0);\n};\n\n/**\n * Writes a signed 32 bit value as fixed 32 bits.\n * @function\n * @param {number} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.sfixed32 = Writer.prototype.fixed32;\n\n/**\n * Writes an unsigned 64 bit value as fixed 64 bits.\n * @param {Long|number|string} value Value to write\n * @returns {Writer} `this`\n * @throws {TypeError} If `value` is a string and no long library is present.\n */\nWriter.prototype.fixed64 = function write_fixed64(value) {\n var bits = LongBits.from(value);\n return this._push(writeFixed32, 4, bits.lo)._push(writeFixed32, 4, bits.hi);\n};\n\n/**\n * Writes a signed 64 bit value as fixed 64 bits.\n * @function\n * @param {Long|number|string} value Value to write\n * @returns {Writer} `this`\n * @throws {TypeError} If `value` is a string and no long library is present.\n */\nWriter.prototype.sfixed64 = Writer.prototype.fixed64;\n\n/**\n * Writes a float (32 bit).\n * @function\n * @param {number} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.float = function write_float(value) {\n return this._push(util.float.writeFloatLE, 4, value);\n};\n\n/**\n * Writes a double (64 bit float).\n * @function\n * @param {number} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.double = function write_double(value) {\n return this._push(util.float.writeDoubleLE, 8, value);\n};\n\nvar writeBytes = util.Array.prototype.set\n ? function writeBytes_set(val, buf, pos) {\n buf.set(val, pos); // also works for plain array values\n }\n /* istanbul ignore next */\n : function writeBytes_for(val, buf, pos) {\n for (var i = 0; i < val.length; ++i)\n buf[pos + i] = val[i];\n };\n\n/**\n * Writes a sequence of bytes.\n * @param {Uint8Array|string} value Buffer or base64 encoded string to write\n * @returns {Writer} `this`\n */\nWriter.prototype.bytes = function write_bytes(value) {\n var len = value.length >>> 0;\n if (!len)\n return this._push(writeByte, 1, 0);\n if (util.isString(value)) {\n var buf = Writer.alloc(len = base64.length(value));\n base64.decode(value, buf, 0);\n value = buf;\n }\n return this.uint32(len)._push(writeBytes, len, value);\n};\n\n/**\n * Writes a string.\n * @param {string} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.string = function write_string(value) {\n var len = utf8.length(value);\n return len\n ? this.uint32(len)._push(utf8.write, len, value)\n : this._push(writeByte, 1, 0);\n};\n\n/**\n * Forks this writer's state by pushing it to a stack.\n * Calling {@link Writer#reset|reset} or {@link Writer#ldelim|ldelim} resets the writer to the previous state.\n * @returns {Writer} `this`\n */\nWriter.prototype.fork = function fork() {\n this.states = new State(this);\n this.head = this.tail = new Op(noop, 0, 0);\n this.len = 0;\n return this;\n};\n\n/**\n * Resets this instance to the last state.\n * @returns {Writer} `this`\n */\nWriter.prototype.reset = function reset() {\n if (this.states) {\n this.head = this.states.head;\n this.tail = this.states.tail;\n this.len = this.states.len;\n this.states = this.states.next;\n } else {\n this.head = this.tail = new Op(noop, 0, 0);\n this.len = 0;\n }\n return this;\n};\n\n/**\n * Resets to the last state and appends the fork state's current write length as a varint followed by its operations.\n * @returns {Writer} `this`\n */\nWriter.prototype.ldelim = function ldelim() {\n var head = this.head,\n tail = this.tail,\n len = this.len;\n this.reset().uint32(len);\n if (len) {\n this.tail.next = head.next; // skip noop\n this.tail = tail;\n this.len += len;\n }\n return this;\n};\n\n/**\n * Finishes the write operation.\n * @returns {Uint8Array} Finished buffer\n */\nWriter.prototype.finish = function finish() {\n var head = this.head.next, // skip noop\n buf = this.constructor.alloc(this.len),\n pos = 0;\n while (head) {\n head.fn(head.val, buf, pos);\n pos += head.len;\n head = head.next;\n }\n // this.head = this.tail = null;\n return buf;\n};\n\nWriter._configure = function(BufferWriter_) {\n BufferWriter = BufferWriter_;\n Writer.create = create();\n BufferWriter._configure();\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport SDPCandidateType from './SDPCandidateType';\nimport SDPMediaSection from './SDPMediaSection';\nimport VideoCodecCapability from './VideoCodecCapability';\n\n/**\n * [[SDP]] includes a few helper functions for parsing sdp string.\n */\nexport default class SDP {\n private static CRLF: string = '\\r\\n';\n\n static rfc7587LowestBitrate = 6000;\n static rfc7587HighestBitrate = 510000;\n\n private static dependencyDescriptorRtpHeaderExtensionUrl = `https://aomediacodec.github.io/av1-rtp-spec/#dependency-descriptor-rtp-header-extension`;\n private static videoLayersAllocationRtpHeaderExtensionUrl = `http://www.webrtc.org/experiments/rtp-hdrext/video-layers-allocation00`;\n\n /**\n * Construts a new [[SDP]] object\n */\n constructor(public sdp: string) {}\n\n /**\n * Clones an SDP\n */\n clone(): SDP {\n return new SDP(this.sdp);\n }\n\n /**\n * Checks if the candidate is a valid RTP candidate\n */\n static isRTPCandidate(candidate: string): boolean {\n const match = /candidate[:](\\S+) (\\d+)/g.exec(candidate);\n if (match === null || match[2] !== '1') {\n return false;\n }\n return true;\n }\n\n /**\n * Constructs a new SDP with the given set of SDP lines.\n */\n static linesToSDP(lines: string[]): SDP {\n return new SDP(lines.join(SDP.CRLF));\n }\n\n /**\n * Returns an enum of [[candidateType]] for the given string.\n */\n static candidateTypeFromString(candidateType: string): SDPCandidateType | null {\n switch (candidateType) {\n case SDPCandidateType.Host:\n return SDPCandidateType.Host;\n case SDPCandidateType.ServerReflexive:\n return SDPCandidateType.ServerReflexive;\n case SDPCandidateType.PeerReflexive:\n return SDPCandidateType.PeerReflexive;\n case SDPCandidateType.Relay:\n return SDPCandidateType.Relay;\n }\n return null;\n }\n\n /**\n * Returns the candidate type assocaited with the sdpline.\n */\n static candidateType(sdpLine: string): string | null {\n const match = /a[=]candidate[:].* typ ([a-z]+) /g.exec(sdpLine);\n if (match === null) {\n return null;\n }\n return SDP.candidateTypeFromString(match[1]);\n }\n\n /**\n * Returns the media type associated with the sdp line.\n */\n private static mediaType(sdpLine: string): 'audio' | 'video' | undefined {\n const match = /m=(audio|video)/g.exec(sdpLine);\n if (match === null) {\n return undefined;\n }\n return match[1] as 'audio' | 'video';\n }\n\n /**\n * Erase out \"a=mid\" from the sdp line.\n */\n private static mid(sdpLine: string): string | undefined {\n if (!sdpLine.includes('a=mid:')) {\n return undefined;\n }\n return sdpLine.replace(/^(a=mid:)/, '');\n }\n\n /**\n * Return the direction associated with the sdp line.\n */\n private static direction(sdpLine: string): RTCRtpTransceiverDirection | undefined {\n const match = /a=(sendrecv|sendonly|recvonly|inactive)/g.exec(sdpLine);\n if (match === null) {\n return undefined;\n }\n return match[1] as RTCRtpTransceiverDirection;\n }\n\n /**\n * Format the sdp string into separate lines.\n */\n static splitLines(blob: string): string[] {\n return blob\n .trim()\n .split('\\n')\n .map((line: string) => {\n return line.trim();\n });\n }\n\n /**\n * split the different sdp sections\n */\n static splitSections(sdp: string): string[] {\n // each section starts with \"m=\"\n const sections = sdp.split('\\nm=');\n return sections.map((section: string, index: number) => {\n return (index > 0 ? 'm=' + section : section).trim() + SDP.CRLF;\n });\n }\n\n /**\n * split the different sdp sections\n */\n private static findActiveCameraSection(sections: string[]): number {\n let cameraLineIndex = 0;\n let hasCamera = false;\n for (const sec of sections) {\n if (/^m=video/.test(sec)) {\n if (\n sec.indexOf('sendrecv') > -1 ||\n // RFC 4566: If none of the attributes \"sendonly\", \"recvonly\", \"inactive\",\n // and \"sendrecv\" is present, \"sendrecv\" SHOULD be assumed as the\n // default for sessions\n (sec.indexOf('sendonly') === -1 &&\n sec.indexOf('recvonly') === -1 &&\n sec.indexOf('inactive') === -1)\n ) {\n hasCamera = true;\n break;\n }\n }\n cameraLineIndex++;\n }\n\n if (hasCamera === false) {\n cameraLineIndex = -1;\n }\n return cameraLineIndex;\n }\n\n /**\n * Extract the SSRCs from the group line.\n *\n * a=ssrc-group: ...\n */\n static extractSSRCsFromFIDGroupLine(figGroupLine: string): string {\n const ssrcStringMatch = /^a=ssrc-group:FID\\s(.+)/.exec(figGroupLine);\n return ssrcStringMatch[1];\n }\n\n /**\n * Extracts the lines from the sdp blob that matches the given prefix.\n */\n static matchPrefix(blob: string, prefix: string): string[] {\n return SDP.splitLines(blob).filter((line: string) => {\n return line.indexOf(prefix) === 0;\n });\n }\n\n /**\n * Splits SDP string into lines\n */\n lines(): string[] {\n return this.sdp.split(SDP.CRLF);\n }\n\n /**\n * Checks if SDP has a video section.\n */\n hasVideo(): boolean {\n return /^m=video/gm.exec(this.sdp) !== null;\n }\n\n /**\n * Checks whether the SDP has candidates for any m-line\n */\n hasCandidates(): boolean {\n const match = /a[=]candidate[:]/g.exec(this.sdp);\n if (match === null) {\n return false;\n }\n return true;\n }\n\n /**\n * Checks whether the SDP has candidates for all m-lines\n */\n hasCandidatesForAllMLines(): boolean {\n const isAnyCLineUsingLocalHost = this.sdp.indexOf('c=IN IP4 0.0.0.0') > -1;\n const mLinesHaveCandidates = !isAnyCLineUsingLocalHost;\n return mLinesHaveCandidates;\n }\n\n /**\n * Removes candidates of a given type from SDP\n */\n withoutCandidateType(candidateTypeToExclude: SDPCandidateType): SDP {\n return SDP.linesToSDP(\n this.lines().filter(line => SDP.candidateType(line) !== candidateTypeToExclude)\n );\n }\n\n /**\n * Removes server reflexive candidate from SDP\n */\n withoutServerReflexiveCandidates(): SDP {\n return this.withoutCandidateType(SDPCandidateType.ServerReflexive);\n }\n\n /**\n * Inserts a parameter to the SDP local offer setting the desired average audio bitrate\n */\n withAudioMaxAverageBitrate(maxAverageBitrate: number | null): SDP {\n if (!maxAverageBitrate) {\n return this.clone();\n }\n maxAverageBitrate = Math.trunc(\n Math.min(Math.max(maxAverageBitrate, SDP.rfc7587LowestBitrate), SDP.rfc7587HighestBitrate)\n );\n const srcLines: string[] = this.lines();\n const fmtpAttributes = SDP.findOpusFmtpAttributes(srcLines);\n const dstLines = SDP.updateOpusFmtpAttributes(srcLines, fmtpAttributes, [\n `maxaveragebitrate=${maxAverageBitrate}`,\n ]);\n return SDP.linesToSDP(dstLines);\n }\n\n /**\n * Update the SDP to include stereo\n */\n withStereoAudio(): SDP {\n const srcLines: string[] = this.lines();\n const fmtpAttributes = SDP.findOpusFmtpAttributes(srcLines);\n const dstLines = SDP.updateOpusFmtpAttributes(srcLines, fmtpAttributes, [\n 'stereo=1',\n 'sprop-stereo=1',\n ]);\n return SDP.linesToSDP(dstLines);\n }\n\n /**\n * Here we loop through each line in the SDP\n * and construct an array containing the fmtp\n * attribute for all the audio m lines that use\n * the opus codec. If it doesn't use opus codec\n * we add null to the array which tells\n * updateOpusFmtpAttributes that no update is\n * needed for that particular fmtp attribute line\n */\n static findOpusFmtpAttributes(sdpLines: string[]): string[] | null {\n const opusRtpMapRegex = /^a=rtpmap:\\s*(\\d+)\\s+opus\\/48000/;\n let lookingForOpusRtpMap = false;\n const fmtpAttributes: (string | null)[] = [];\n\n for (const line of sdpLines) {\n if (line.startsWith('m=audio')) {\n fmtpAttributes.push(null);\n lookingForOpusRtpMap = true;\n }\n if (line.startsWith('m=video')) {\n // Opus rtpmap is only part of audio m lines section\n // Set this to false as we don't need to perform regex\n // matches for video section\n lookingForOpusRtpMap = false;\n }\n if (lookingForOpusRtpMap) {\n const match = opusRtpMapRegex.exec(line);\n if (match !== null) {\n fmtpAttributes[fmtpAttributes.length - 1] = `a=fmtp:${match[1]} `;\n }\n }\n }\n return fmtpAttributes;\n }\n\n /**\n * Update the fmtp lines in each audio m section\n * that correspond to the opus codec with the parameters\n * specifief in additionalParams\n */\n static updateOpusFmtpAttributes(\n srcLines: string[],\n fmtpAttributes: (string | null)[],\n additionalParams: string[]\n ): string[] {\n const dstLines: string[] = [];\n let fmtpIndex = 0;\n let currFmtpAttribute: string | null = null;\n for (const line of srcLines) {\n if (line.startsWith('m=audio')) {\n currFmtpAttribute = fmtpAttributes[fmtpIndex];\n fmtpIndex++;\n }\n if (line.startsWith('m=video')) {\n currFmtpAttribute = null;\n }\n if (currFmtpAttribute && line.startsWith(currFmtpAttribute)) {\n const oldParameters: string[] = line.slice(currFmtpAttribute.length).split(';');\n const newParameters: string[] = [];\n // If an existing parameter is in additionalParams\n // dont add it to newParameters as it will be replaced\n for (const parameter of oldParameters) {\n const index = additionalParams.findIndex(element =>\n element.startsWith(parameter.split('=')[0])\n );\n if (index < 0) {\n newParameters.push(parameter);\n }\n }\n for (const parameter of additionalParams) {\n newParameters.push(parameter);\n }\n dstLines.push(currFmtpAttribute + newParameters.join(';'));\n } else {\n dstLines.push(line);\n }\n }\n return dstLines;\n }\n\n /**\n * Munges Unified-Plan SDP from different browsers to conform to one format\n * TODO: will remove this soon.\n */\n withUnifiedPlanFormat(): SDP {\n let originalSdp = this.sdp;\n if (originalSdp.includes('mozilla')) {\n return this.clone();\n } else {\n originalSdp = originalSdp.replace('o=-', 'o=mozilla-chrome');\n }\n\n return new SDP(originalSdp);\n }\n\n /**\n * Returns the total number of unique Rtp header extensions.\n */\n getUniqueRtpHeaderExtensionId(srcLines: string[]): number {\n const headerExtensionIds: number[] = [];\n\n for (const line of srcLines) {\n if (/^a=extmap:/.test(line.trim())) {\n const headerExtension = line.split('a=extmap:')[1].split(' ');\n const id = +headerExtension[0];\n if (!headerExtensionIds.includes(id)) {\n headerExtensionIds.push(id);\n }\n }\n }\n\n headerExtensionIds.sort((a, b) => a - b);\n let previousId = 0; // header extension cannot be 0, refer https://datatracker.ietf.org/doc/html/rfc5285\n for (const id of headerExtensionIds) {\n if (id - previousId > 1) {\n return previousId + 1;\n }\n previousId = id;\n }\n\n // One-Byte Header header extension cannot be bigger than 14, refer https://datatracker.ietf.org/doc/html/rfc5285\n return previousId === 14 ? -1 : previousId + 1;\n }\n\n /**\n * To avoid resubscribing to preemptively turn off simulcast streams or to switch layers\n * negotiate with the back end to determine whether to use layers allocation header extension\n * this will not add the packet overhead unless negotiated to avoid waste\n */\n withVideoLayersAllocationRtpHeaderExtension(previousSdp: SDP): SDP {\n return this.withRtpHeaderExtension(previousSdp, SDP.videoLayersAllocationRtpHeaderExtensionUrl);\n }\n\n /**\n * Dependency descriptors can be used by the backend to designate spatial or temporal layers\n * on a single encoding. Along with the video layers allocation exension this will\n * result in the ability for remote attendees to subscribe to individual layers below the top.\n */\n withDependencyDescriptorRtpHeaderExtension(previousSdp: SDP): SDP {\n return this.withRtpHeaderExtension(previousSdp, SDP.dependencyDescriptorRtpHeaderExtensionUrl);\n }\n\n /**\n * If the send transceiver is in a state where the layers allocation extension is not matching up with\n * the dependency descriptor extension, or we simply don't want to allow for the seperation of spatial\n * or temporal layers, we can remove the dependency descriptor from the SDP.\n *\n * Note: Care should be taken when calling this function since `withDependencyDescriptorRtpHeaderExtension`\n * if called again will require an accurate ID value. Thus it is recommended to only call `withoutDependencyDescriptorRtpHeaderExtension`\n * after setting the local description.\n */\n withoutDependencyDescriptorRtpHeaderExtension(): SDP {\n const srcLines: string[] = SDP.splitLines(this.sdp).filter(\n line => !line.includes(SDP.dependencyDescriptorRtpHeaderExtensionUrl)\n );\n return new SDP(srcLines.join(SDP.CRLF) + SDP.CRLF);\n }\n\n private withRtpHeaderExtension(previousSdp: SDP, url: string): SDP {\n // According to https://webrtc.googlesource.com/src/+/b62ee8ce94e5f10e0a94d6f112e715cc4d0cd9dc,\n // RTP header extension ID change would result in a hard failure. Therefore if the extension exists\n // in the previous SDP, use the same extension ID to avoid the failure. Otherwise use a new ID\n const previousId = previousSdp ? previousSdp.getRtpHeaderExtensionId(url) : -1;\n const id =\n previousId === -1 ? this.getUniqueRtpHeaderExtensionId(SDP.splitLines(this.sdp)) : previousId;\n\n const sections = SDP.splitSections(this.sdp);\n const newSections = [];\n for (let section of sections) {\n if (/^m=video/.test(section) && SDP.getRtpHeaderExtensionIdInSection(section, url) === -1) {\n // Add RTP header extension when it does not already exist\n const srcLines: string[] = SDP.splitLines(section);\n const dstLines: string[] = [];\n if (id === -1 || this.hasRtpHeaderExtensionId(id)) {\n // if all ids are used or the id is already used, we won't add new line to it\n newSections.push(section);\n continue;\n }\n\n for (const line of srcLines) {\n dstLines.push(line);\n if (/^a=sendrecv/.test(line.trim())) {\n const targetLine = `a=extmap:` + id + ` ` + url;\n dstLines.push(targetLine);\n }\n }\n section = dstLines.join(SDP.CRLF) + SDP.CRLF;\n } else if (\n previousId !== -1 &&\n /^m=video/.test(section) &&\n SDP.getRtpHeaderExtensionIdInSection(section, url) !== previousId\n ) {\n // Override extension ID if it does not match previous SDP\n const srcLines: string[] = SDP.splitLines(section);\n const dstLines: string[] = [];\n for (const line of srcLines) {\n if (/^a=extmap:/.test(line.trim())) {\n const headerExtension = line.split('a=extmap:')[1].split(' ');\n if (headerExtension[1] === url) {\n if (!this.hasRtpHeaderExtensionId(previousId)) {\n // If previous ID is used by another extension, remove it from this SDP\n const targetLine = `a=extmap:` + previousId + ` ` + url;\n dstLines.push(targetLine);\n }\n continue;\n }\n }\n dstLines.push(line);\n }\n section = dstLines.join(SDP.CRLF) + SDP.CRLF;\n }\n newSections.push(section);\n }\n const newSdp = newSections.join('');\n return new SDP(newSdp);\n }\n\n /**\n * Extracts the ssrc for the sendrecv video media section in SDP\n */\n ssrcForVideoSendingSection(): string {\n const srcSDP: string = this.sdp;\n const sections = SDP.splitSections(srcSDP);\n if (sections.length < 2) {\n return '';\n }\n\n const cameraLineIndex: number = SDP.findActiveCameraSection(sections);\n if (cameraLineIndex === -1) {\n return '';\n }\n\n // TODO: match for Firefox. Currently all failures are not Firefox induced.\n const fidGroupMatch = SDP.matchPrefix(sections[cameraLineIndex], 'a=ssrc-group:FID ');\n if (fidGroupMatch.length < 1) {\n return '';\n }\n\n const fidGroup = SDP.extractSSRCsFromFIDGroupLine(fidGroupMatch[0]);\n const [videoSSRC1] = fidGroup.split(' ').map(ssrc => parseInt(ssrc, 10));\n\n return videoSSRC1.toString();\n }\n\n /**\n * Returns whether the sendrecv video sections if exist have two different SSRCs in SDPs\n */\n videoSendSectionHasDifferentSSRC(prevSdp: SDP): boolean {\n const ssrc1 = this.ssrcForVideoSendingSection();\n const ssrc2 = prevSdp.ssrcForVideoSendingSection();\n if (ssrc1 === '' || ssrc2 === '') {\n return false;\n }\n const ssrc1InNumber = parseInt(ssrc1, 10);\n const ssrc2InNumber = parseInt(ssrc2, 10);\n if (ssrc1InNumber === ssrc2InNumber) {\n return false;\n }\n return true;\n }\n\n /**\n * Removes H.264 from the send section.\n */\n removeH264SupportFromSendSection(): SDP {\n const srcSDP: string = this.sdp;\n const sections = SDP.splitSections(srcSDP);\n const cameraLineIndex: number = SDP.findActiveCameraSection(sections);\n if (cameraLineIndex === -1) {\n return new SDP(this.sdp);\n }\n const cameraSection = sections[cameraLineIndex];\n const cameraSectionLines = SDP.splitLines(cameraSection);\n const payloadTypesForH264: number[] = [];\n const primaryPayloadTypeToFeedbackPayloadTypes: Map = new Map();\n // Loop through camera section (m=video)\n cameraSectionLines.forEach(attribute => {\n // Find the payload type with H264 codec line (e.g., a=rtpmap: H264/90000)\n if (/^a=rtpmap:/.test(attribute)) {\n const payloadMatch = /^a=rtpmap:([0-9]+)\\s/.exec(attribute);\n if (payloadMatch && attribute.toLowerCase().includes('h264')) {\n payloadTypesForH264.push(parseInt(payloadMatch[1], 10));\n }\n }\n\n // Loop through the rtx payload and create a mapping between it and the primary payload.\n // a=fmtp: apt=\n if (/^a=fmtp:/.test(attribute)) {\n const feedbackMatches = /^a=fmtp:([0-9]+) apt=([0-9]+)/.exec(attribute);\n if (feedbackMatches && feedbackMatches.length === 3) {\n const feedbackPayloadType = parseInt(feedbackMatches[1], 10);\n const primaryPayloadType = parseInt(feedbackMatches[2], 10);\n if (primaryPayloadTypeToFeedbackPayloadTypes.has(primaryPayloadType)) {\n primaryPayloadTypeToFeedbackPayloadTypes\n .get(primaryPayloadType)\n .push(feedbackPayloadType);\n } else {\n primaryPayloadTypeToFeedbackPayloadTypes.set(primaryPayloadType, [feedbackPayloadType]);\n }\n }\n }\n });\n\n // Add the rtx payloads corresponding to the H264 codec to the remove list\n const payloadTypesToRemove: Set = new Set();\n for (const type of payloadTypesForH264) {\n payloadTypesToRemove.add(type);\n\n const feedbackTypes = primaryPayloadTypeToFeedbackPayloadTypes.get(type);\n if (feedbackTypes) {\n for (const feedbackType of feedbackTypes) {\n payloadTypesToRemove.add(feedbackType);\n }\n }\n }\n\n // Remove H264 payload from the media line. m=video 9 UDP/+++ \n if (payloadTypesForH264.length > 0) {\n const mline = cameraSectionLines[0].split(' ');\n cameraSectionLines[0] = mline\n .filter((text: string) => !payloadTypesToRemove.has(parseInt(text)))\n .join(' ');\n }\n\n // Filter out lines with H264 payload\n const filteredLines = cameraSectionLines.filter((line: string) => {\n if (!line.includes('rtpmap') && !line.includes('rtcp-fb') && !line.includes('fmtp')) {\n return true;\n }\n for (const type of payloadTypesToRemove) {\n if (line.includes(type.toString())) {\n return false;\n }\n }\n return true;\n });\n\n sections[cameraLineIndex] = filteredLines.join(SDP.CRLF) + SDP.CRLF;\n\n const newSDP = sections.join('');\n return new SDP(newSDP);\n }\n\n /**\n * List of parsed media sections sections in order they occur on SDP.\n */\n mediaSections(): SDPMediaSection[] {\n const sections = SDP.splitSections(this.sdp);\n if (sections.length < 2) {\n return [];\n }\n\n const parsedMediaSections: SDPMediaSection[] = [];\n for (let i = 1; i < sections.length; i++) {\n const section = new SDPMediaSection();\n const lines = SDP.splitLines(sections[i]);\n for (const line of lines) {\n const mediaType = SDP.mediaType(line);\n if (mediaType !== undefined) {\n section.mediaType = mediaType;\n continue;\n }\n const direction = SDP.direction(line);\n if (direction !== undefined) {\n section.direction = direction;\n continue;\n }\n const mid = SDP.mid(line);\n if (mid !== undefined) {\n section.mid = mid;\n continue;\n }\n }\n parsedMediaSections.push(section);\n }\n return parsedMediaSections;\n }\n\n /**\n * Return RTP header extension ID if the extension exists in section. Return -1 otherwise\n */\n static getRtpHeaderExtensionIdInSection(section: string, url: string): number {\n const lines: string[] = SDP.splitLines(section);\n for (const line of lines) {\n if (/^a=extmap:/.test(line.trim())) {\n const headerExtension = line.split('a=extmap:')[1].split(' ');\n const id = +headerExtension[0];\n if (headerExtension[1] === url) {\n return id;\n }\n }\n }\n return -1;\n }\n\n /**\n * Return RTP header extension ID if the extension exists in SDP. Return -1 otherwise\n */\n getRtpHeaderExtensionId(url: string): number {\n const sections = SDP.splitSections(this.sdp);\n\n for (const section of sections) {\n if (/^m=video/.test(section)) {\n const id = SDP.getRtpHeaderExtensionIdInSection(section, url);\n if (id !== -1) {\n return id;\n }\n }\n }\n return -1;\n }\n\n /**\n * Return if extension ID exists in the SDP\n */\n hasRtpHeaderExtensionId(targetId: number): boolean {\n const lines = SDP.splitLines(this.sdp);\n\n for (const line of lines) {\n if (/^a=extmap:/.test(line.trim())) {\n const headerExtension = line.split('a=extmap:')[1].split(' ');\n const id = +headerExtension[0];\n if (id === targetId) {\n return true;\n }\n }\n }\n return false;\n }\n\n /**\n * Based off the provided preferences, this function will reorder the payload types listed in the `m=video` line.\n *\n * This will be applied to the `a=sendrecv` section so it can be applied on either local or remote SDPs. It can be used to\n * 'polyfill' `RTCRtpSender.setCodecPreferences' on the offer, but it can also be used on remote SDPs to force the\n * codec actually being send, since the send codec is currently dependent on the remote answer (i.e. `setCodecPreferences` doesn't actually\n * have any impact unless the remote side respects the order of codecs which is not true of the Chime SDK media backends).\n */\n withVideoSendCodecPreferences(preferences: VideoCodecCapability[]): SDP {\n const srcSDP: string = this.sdp;\n const sections = SDP.splitSections(srcSDP);\n // Note `findActiveCameraSection` looks for `sendrecv` video sections so it\n // works on both local and remote SDPs.\n const cameraLineIndex: number = SDP.findActiveCameraSection(sections);\n if (cameraLineIndex === -1) {\n return new SDP(this.sdp);\n }\n sections[cameraLineIndex] = this.sectionWithCodecPreferences(\n sections[cameraLineIndex],\n preferences\n );\n const newSDP = sections.join('');\n return new SDP(newSDP);\n }\n\n // Based off the provided preferences, this function will reorder the payload types listed in the `m=video` line.\n private sectionWithCodecPreferences(\n section: string,\n preferences: VideoCodecCapability[]\n ): string {\n const payloadTypeToCodec: Map = new Map();\n const lines = SDP.splitLines(section);\n\n // Process each line to map payload types to their respective codecs\n lines.forEach(line => {\n if (!line.startsWith('a=rtpmap:')) {\n return;\n }\n\n const payloadMatch = /^a=rtpmap:(\\d+)\\s/.exec(line);\n if (!payloadMatch) {\n return;\n }\n const payloadTypeString: string = payloadMatch[1];\n\n for (const preference of preferences) {\n if (!line.includes(`${preference.codecName}/${preference.codecCapability.clockRate}`)) {\n continue;\n }\n\n let codecMatches = false;\n if (preference.codecCapability.sdpFmtpLine !== undefined) {\n let hasVp9ProfileId = false;\n\n for (const prospectiveFmtpLine of lines) {\n if (preference.fmtpLineMatches(prospectiveFmtpLine, parseInt(payloadTypeString))) {\n codecMatches = true;\n break;\n }\n\n hasVp9ProfileId ||= prospectiveFmtpLine.startsWith(\n `a=fmtp:${payloadTypeString} profile-id=`\n );\n }\n\n if (preference.equals(VideoCodecCapability.vp9Profile0()) && !hasVp9ProfileId) {\n codecMatches = true;\n }\n } else {\n codecMatches = true;\n }\n\n if (codecMatches) {\n payloadTypeToCodec.set(payloadTypeString, preference);\n break;\n }\n }\n });\n\n const payloadTypesToRemove: Set = new Set(payloadTypeToCodec.keys());\n const mline = lines[0].split(' ').filter(text => !payloadTypesToRemove.has(text));\n\n const orderedPreferedPayloadTypes = Array.from(payloadTypeToCodec.entries())\n .sort(([_payloadType1, codec1], [_payloadType2, codec2]) => {\n const priority1 = preferences.indexOf(codec1);\n const priority2 = preferences.indexOf(codec2);\n return priority1 - priority2;\n })\n .map(([payloadType, _]) => payloadType);\n\n mline.splice(3, 0, ...orderedPreferedPayloadTypes);\n lines[0] = mline.join(' ');\n\n return lines.join(SDP.CRLF) + SDP.CRLF;\n }\n\n /**\n * Returns the `VideoCodecCapability` which corresponds to the first payload type in the\n * m-line (e.g. `m=video 9 UDP/+++ ...`),\n * parsing the rest of the SDP for relevant information to construct it.\n *\n * Returns undefined if there is no video send section or no codecs in the send section\n *\n * This function is currently unused/deprecated and will be removed in a future PR.\n */\n highestPriorityVideoSendCodec(): VideoCodecCapability | undefined {\n const prioritizedSendVideoCodecCapabilities = this.prioritizedSendVideoCodecCapabilities();\n return prioritizedSendVideoCodecCapabilities.length > 0\n ? prioritizedSendVideoCodecCapabilities[0]\n : undefined;\n }\n\n /**\n * Returns all `VideoCodecCapability` that can be found in the camera section, in order of priority as defined in\n * m-line (e.g. `m=video 9 UDP/+++ ...`),\n * parsing the rest of the SDP for relevant information to construct it.\n *\n * Returns an empty list if there is no video send section or no codecs in the send section\n */\n prioritizedSendVideoCodecCapabilities(): VideoCodecCapability[] {\n const srcSDP: string = this.sdp;\n const sections = SDP.splitSections(srcSDP);\n // Note `findActiveCameraSection` looks for `sendrecv` video sections so it\n // works on both local and remote SDPs.\n const cameraLineIndex: number = SDP.findActiveCameraSection(sections);\n if (cameraLineIndex === -1) {\n return [];\n }\n\n const lines = SDP.splitLines(sections[cameraLineIndex]);\n\n // m=video 9 UDP/+++ ...\n const mlineTokens = lines[0].split(' ');\n if (mlineTokens.length < 4) {\n return [];\n }\n\n // Extract payload types from the m-line\n const payloadTypes = mlineTokens.slice(3);\n\n // Get VideoCodecCapability for each payload type\n const capabilities = payloadTypes\n .map(payloadType => this.videoCodecCapabilityForPayloadType(lines, payloadType))\n .filter(capability => {\n // Filter out capabilities that failed to parse or are not codecs (e.g. RTX payload types)\n return (\n capability !== undefined && ['VP8', 'H264', 'VP9', 'AV1'].includes(capability.codecName)\n );\n });\n\n return capabilities;\n }\n\n private videoCodecCapabilityForPayloadType(\n sectionLines: string[],\n payloadType: string\n ): VideoCodecCapability | undefined {\n let codecName = undefined;\n let clockRate = undefined;\n let fmtpLine = undefined;\n\n for (const line of sectionLines) {\n // Match the payload type in rtpmap lines\n const payloadMatch = /^a=rtpmap:([0-9]+)\\s/.exec(line);\n if (payloadMatch && payloadMatch[1] === payloadType) {\n const lineTokens = line.split(' ');\n const nameAndClockRate = lineTokens[1].split('/');\n if (nameAndClockRate.length >= 2) {\n codecName = nameAndClockRate[0];\n clockRate = nameAndClockRate[1];\n }\n }\n\n // Match fmtp lines for the payload type\n if (line.startsWith(`a=fmtp:${payloadType} `)) {\n // `split` will always return 2 items given we have trailing whitespace in check above\n fmtpLine = line.split(' ')[1];\n }\n }\n\n if (codecName !== undefined) {\n return new VideoCodecCapability(codecName, {\n clockRate: parseInt(clockRate),\n mimeType: `video/${codecName}`,\n sdpFmtpLine: fmtpLine,\n });\n }\n\n return undefined;\n }\n\n getAudioPayloadTypes(): Map {\n const payloadTypeMap: Map = new Map();\n const srcSDP: string = this.sdp;\n const sections = SDP.splitSections(srcSDP);\n payloadTypeMap.set('opus', SDP.findAudioPayloadType('opus', sections));\n payloadTypeMap.set('red', SDP.findAudioPayloadType('red', sections));\n return payloadTypeMap;\n }\n\n private static findAudioPayloadType(codecName: string, sections: string[]): number {\n const codecRegex = `a=rtpmap:\\\\s*(\\\\d+)\\\\s+${codecName}\\\\/48000`;\n const rtpMapRegex = new RegExp(codecRegex);\n for (const sec of sections) {\n if (/^m=audio/.test(sec)) {\n const match = rtpMapRegex.exec(sec);\n if (match !== null) {\n return Number(match[1]);\n }\n }\n }\n return 0;\n }\n\n /**\n * Modifies the active camera section to include a specified starting bitrate\n * for video sending by adding a 'x-google-start-bitrate' fmtp line paramter for\n * each payload type associated with video.\n *\n * If no active camera section is found in the SDP, returns the original SDP object.\n */\n withStartingVideoSendBitrate(bitrateKbps: number): SDP {\n const sections = SDP.splitSections(this.sdp);\n\n const cameraLineIndex: number = SDP.findActiveCameraSection(sections);\n if (cameraLineIndex === -1) {\n return this;\n }\n\n const srcLines: string[] = SDP.splitLines(sections[cameraLineIndex]);\n const dstLines: string[] = [];\n\n for (const line of srcLines) {\n if (/^a=fmtp:\\d*/.test(line)) {\n // `x-google-start-bitrate` is an unofficial flag that has existed in libwebrtc since its release and is unlikely\n // to be removed without notification.\n //\n // libwebrtc constant: https://webrtc.googlesource.com/src/+/b6ef1a736ee94d97cc28f3bd59b826c716a3278f/media/base/media_constants.cc#97\n // libwebrtc parsing: https://webrtc.googlesource.com/src/+/61c5e86dca59b0ac8240444e7df5c31da27ee40f/media/engine/webrtc_media_engine.cc#172\n const newLine = line + `;x-google-start-bitrate=${bitrateKbps}`;\n dstLines.push(newLine);\n } else {\n dstLines.push(line);\n }\n }\n sections[cameraLineIndex] = dstLines.join(SDP.CRLF) + SDP.CRLF;\n\n const newSdp = sections.join('');\n return new SDP(newSdp);\n }\n}\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['location'] = {};\nAWS.Location = Service.defineService('location', ['2020-11-19']);\nObject.defineProperty(apiLoader.services['location'], '2020-11-19', {\n get: function get() {\n var model = require('../apis/location-2020-11-19.min.json');\n model.paginators = require('../apis/location-2020-11-19.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.Location;\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\n\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst support_js_1 = require(\"./support.js\");\nconst types_js_1 = require(\"./types.js\");\nclass VoiceFocusWorkerPostMessageNode extends types_js_1.VoiceFocusAudioWorkletNode {\n constructor(context, options) {\n super(context, options.processor, options);\n this.channelCountMode = 'explicit';\n this.channelCount = 1;\n const { modelURL, audioBufferURL, worker, fetchBehavior, delegate, } = options;\n this.delegate = delegate;\n this.worker = worker;\n this.worker.onmessage = this.onWorkerMessage.bind(this);\n this.port.onmessage = this.onProcessorMessage.bind(this);\n const { enabled, agc, supportFarendStream } = options.processorOptions;\n this.worker.postMessage({\n message: 'init',\n approach: 'postMessage',\n frames: context.sampleRate === 16000 ? 160 : 480,\n enabled,\n agc,\n fetchBehavior,\n model: modelURL,\n supportFarendStream,\n });\n const message = support_js_1.supportsWASMPostMessage(globalThis) ? 'get-module' : 'get-module-buffer';\n this.worker.postMessage({\n message,\n key: 'buffer',\n fetchBehavior,\n path: audioBufferURL,\n });\n }\n enable() {\n return __awaiter(this, void 0, void 0, function* () {\n this.worker.postMessage({ message: 'enable' });\n });\n }\n disable() {\n return __awaiter(this, void 0, void 0, function* () {\n this.worker.postMessage({ message: 'disable' });\n });\n }\n stop() {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n this.worker.postMessage({ message: 'stop' });\n }\n catch (e) {\n }\n this.disconnect();\n });\n }\n onWorkerMessage(event) {\n var _a;\n const data = event.data;\n switch (data.message) {\n case 'ready':\n this.port.postMessage({ message: 'ready', shared: data.shared }, data.shared ? Object.values(data.shared) : []);\n break;\n case 'data':\n if (!data.buffer) {\n return;\n }\n this.port.postMessage({ message: 'data', buffer: data.buffer }, [data.buffer]);\n break;\n case 'stopped':\n this.worker.terminate();\n break;\n case 'module-buffer':\n case 'module':\n this.port.postMessage(data);\n break;\n case 'cpu':\n (_a = this.delegate) === null || _a === void 0 ? void 0 : _a.onCPUWarning();\n break;\n case 'processing':\n this.port.postMessage(data);\n break;\n default:\n return;\n }\n }\n onProcessorMessage(event) {\n var _a;\n const data = event.data;\n switch (data.message) {\n case 'data':\n if (!data.buffer) {\n return;\n }\n this.worker.postMessage({ message: 'data', buffer: data.buffer }, [data.buffer]);\n break;\n case 'cpu':\n (_a = this.delegate) === null || _a === void 0 ? void 0 : _a.onCPUWarning();\n break;\n case 'prepare-for-frames':\n this.worker.postMessage(data);\n break;\n default:\n return;\n }\n }\n}\nexports.default = VoiceFocusWorkerPostMessageNode;\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport BackoffPolicy from '../backoff/Backoff';\nimport TimeoutScheduler from '../scheduler/TimeoutScheduler';\nimport ReconnectController from './ReconnectController';\n\nexport default class DefaultReconnectController implements ReconnectController {\n private shouldReconnect: boolean = true;\n private onlyRestartPeerConnection: boolean = false;\n private firstConnectionAttempted: boolean = false;\n private firstConnectionAttemptTimestampMs: number = 0;\n private lastActiveTimestampMs: number = Infinity;\n private _isFirstConnection: boolean = true;\n private backoffTimer: TimeoutScheduler | null = null;\n private backoffCancel: () => void = null;\n\n constructor(private reconnectTimeoutMs: number, private backoffPolicy: BackoffPolicy) {\n this.reset();\n }\n\n private timeSpentReconnectingMs(): number {\n if (!this.firstConnectionAttempted) {\n return 0;\n }\n return Date.now() - this.firstConnectionAttemptTimestampMs;\n }\n\n private hasPastReconnectDeadline(): boolean {\n if (Date.now() - this.lastActiveTimestampMs >= this.reconnectTimeoutMs) {\n return true;\n }\n\n return this.timeSpentReconnectingMs() >= this.reconnectTimeoutMs;\n }\n\n reset(): void {\n this.cancel();\n this.shouldReconnect = true;\n this.onlyRestartPeerConnection = false;\n this.firstConnectionAttempted = false;\n this.firstConnectionAttemptTimestampMs = 0;\n this.lastActiveTimestampMs = Infinity;\n this.backoffPolicy.reset();\n }\n\n startedConnectionAttempt(isFirstConnection: boolean): void {\n this._isFirstConnection = isFirstConnection;\n if (!this.firstConnectionAttempted) {\n this.firstConnectionAttempted = true;\n this.firstConnectionAttemptTimestampMs = Date.now();\n }\n }\n\n hasStartedConnectionAttempt(): boolean {\n return this.firstConnectionAttempted;\n }\n\n isFirstConnection(): boolean {\n return this._isFirstConnection;\n }\n\n disableReconnect(): void {\n this.shouldReconnect = false;\n }\n\n enableRestartPeerConnection(): void {\n this.onlyRestartPeerConnection = true;\n }\n\n cancel(): void {\n this.disableReconnect();\n if (this.backoffTimer) {\n this.backoffTimer.stop();\n if (this.backoffCancel) {\n this.backoffCancel();\n this.backoffCancel = null;\n }\n }\n }\n\n retryWithBackoff(retryFunc: () => void, cancelFunc: () => void): boolean {\n const willRetry = this.shouldReconnect && !this.hasPastReconnectDeadline();\n if (willRetry) {\n this.backoffCancel = cancelFunc;\n this.backoffTimer = new TimeoutScheduler(this.backoffPolicy.nextBackoffAmountMs());\n this.backoffTimer.start(() => {\n this.backoffCancel = null;\n retryFunc();\n });\n }\n return willRetry;\n }\n\n shouldOnlyRestartPeerConnection(): boolean {\n return this.onlyRestartPeerConnection;\n }\n\n clone(): DefaultReconnectController {\n return new DefaultReconnectController(this.reconnectTimeoutMs, this.backoffPolicy);\n }\n\n setLastActiveTimestampMs(timestampMs: number): void {\n this.lastActiveTimestampMs = timestampMs;\n }\n}\n","'use strict';\nvar $ = require('../internals/export');\nvar bind = require('../internals/function-bind-context');\nvar aMap = require('../internals/a-map');\nvar MapHelpers = require('../internals/map-helpers');\nvar iterate = require('../internals/map-iterate');\n\nvar Map = MapHelpers.Map;\nvar set = MapHelpers.set;\n\n// `Map.prototype.mapKeys` method\n// https://github.com/tc39/proposal-collection-methods\n$({ target: 'Map', proto: true, real: true, forced: true }, {\n mapKeys: function mapKeys(callbackfn /* , thisArg */) {\n var map = aMap(this);\n var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n var newMap = new Map();\n iterate(map, function (value, key) {\n set(newMap, boundFunction(value, key, map), value);\n });\n return newMap;\n }\n});\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport AudioVideoControllerState from '../audiovideocontroller/AudioVideoControllerState';\nimport SignalingClient from '../signalingclient/SignalingClient';\nimport SignalingClientConnectionRequest from '../signalingclient/SignalingClientConnectionRequest';\nimport SignalingClientEvent from '../signalingclient/SignalingClientEvent';\nimport SignalingClientEventType from '../signalingclient/SignalingClientEventType';\nimport SignalingClientObserver from '../signalingclientobserver/SignalingClientObserver';\nimport TaskCanceler from '../taskcanceler/TaskCanceler';\nimport BaseTask from './BaseTask';\n\nexport default class OpenSignalingConnectionTask extends BaseTask {\n protected taskName = 'OpenSignalingConnectionTask';\n\n private taskCanceler: TaskCanceler | null = null;\n\n constructor(private context: AudioVideoControllerState) {\n super(context.logger);\n }\n\n cancel(): void {\n if (this.taskCanceler) {\n this.taskCanceler.cancel();\n this.taskCanceler = null;\n }\n }\n\n async run(): Promise {\n const configuration = this.context.meetingSessionConfiguration;\n\n this.context.signalingClient.openConnection(\n new SignalingClientConnectionRequest(\n configuration.urls.signalingURL,\n configuration.credentials.joinToken\n )\n );\n const startTimeMs = Date.now();\n try {\n await new Promise((resolve, reject) => {\n class WebSocketOpenInterceptor implements SignalingClientObserver, TaskCanceler {\n constructor(private signalingClient: SignalingClient) {}\n\n cancel(): void {\n this.signalingClient.removeObserver(this);\n reject(\n new Error(\n `OpenSignalingConnectionTask got canceled while waiting to open signaling connection`\n )\n );\n }\n\n handleSignalingClientEvent(event: SignalingClientEvent): void {\n switch (event.type) {\n case SignalingClientEventType.WebSocketOpen:\n this.signalingClient.removeObserver(this);\n resolve();\n break;\n case SignalingClientEventType.WebSocketFailed:\n this.signalingClient.removeObserver(this);\n reject(new Error('WebSocket connection failed'));\n break;\n }\n }\n }\n const interceptor = new WebSocketOpenInterceptor(this.context.signalingClient);\n this.context.signalingClient.registerObserver(interceptor);\n this.taskCanceler = interceptor;\n });\n } catch (error) {\n throw error;\n } finally {\n this.context.signalingOpenDurationMs = Math.round(Date.now() - startTimeMs);\n this.logger.info(\n `Opening signaling connection took ${this.context.signalingOpenDurationMs} ms`\n );\n }\n }\n}\n","'use strict';\n\n/** @type {import('.')} */\nmodule.exports = [\n\t'Float16Array',\n\t'Float32Array',\n\t'Float64Array',\n\t'Int8Array',\n\t'Int16Array',\n\t'Int32Array',\n\t'Uint8Array',\n\t'Uint8ClampedArray',\n\t'Uint16Array',\n\t'Uint32Array',\n\t'BigInt64Array',\n\t'BigUint64Array'\n];\n","/*! https://mths.be/punycode v1.3.2 by @mathias */\n;(function(root) {\n\n\t/** Detect free variables */\n\tvar freeExports = typeof exports == 'object' && exports &&\n\t\t!exports.nodeType && exports;\n\tvar freeModule = typeof module == 'object' && module &&\n\t\t!module.nodeType && module;\n\tvar freeGlobal = typeof global == 'object' && global;\n\tif (\n\t\tfreeGlobal.global === freeGlobal ||\n\t\tfreeGlobal.window === freeGlobal ||\n\t\tfreeGlobal.self === freeGlobal\n\t) {\n\t\troot = freeGlobal;\n\t}\n\n\t/**\n\t * The `punycode` object.\n\t * @name punycode\n\t * @type Object\n\t */\n\tvar punycode,\n\n\t/** Highest positive signed 32-bit float value */\n\tmaxInt = 2147483647, // aka. 0x7FFFFFFF or 2^31-1\n\n\t/** Bootstring parameters */\n\tbase = 36,\n\ttMin = 1,\n\ttMax = 26,\n\tskew = 38,\n\tdamp = 700,\n\tinitialBias = 72,\n\tinitialN = 128, // 0x80\n\tdelimiter = '-', // '\\x2D'\n\n\t/** Regular expressions */\n\tregexPunycode = /^xn--/,\n\tregexNonASCII = /[^\\x20-\\x7E]/, // unprintable ASCII chars + non-ASCII chars\n\tregexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g, // RFC 3490 separators\n\n\t/** Error messages */\n\terrors = {\n\t\t'overflow': 'Overflow: input needs wider integers to process',\n\t\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n\t\t'invalid-input': 'Invalid input'\n\t},\n\n\t/** Convenience shortcuts */\n\tbaseMinusTMin = base - tMin,\n\tfloor = Math.floor,\n\tstringFromCharCode = String.fromCharCode,\n\n\t/** Temporary variable */\n\tkey;\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/**\n\t * A generic error utility function.\n\t * @private\n\t * @param {String} type The error type.\n\t * @returns {Error} Throws a `RangeError` with the applicable error message.\n\t */\n\tfunction error(type) {\n\t\tthrow RangeError(errors[type]);\n\t}\n\n\t/**\n\t * A generic `Array#map` utility function.\n\t * @private\n\t * @param {Array} array The array to iterate over.\n\t * @param {Function} callback The function that gets called for every array\n\t * item.\n\t * @returns {Array} A new array of values returned by the callback function.\n\t */\n\tfunction map(array, fn) {\n\t\tvar length = array.length;\n\t\tvar result = [];\n\t\twhile (length--) {\n\t\t\tresult[length] = fn(array[length]);\n\t\t}\n\t\treturn result;\n\t}\n\n\t/**\n\t * A simple `Array#map`-like wrapper to work with domain name strings or email\n\t * addresses.\n\t * @private\n\t * @param {String} domain The domain name or email address.\n\t * @param {Function} callback The function that gets called for every\n\t * character.\n\t * @returns {Array} A new string of characters returned by the callback\n\t * function.\n\t */\n\tfunction mapDomain(string, fn) {\n\t\tvar parts = string.split('@');\n\t\tvar result = '';\n\t\tif (parts.length > 1) {\n\t\t\t// In email addresses, only the domain name should be punycoded. Leave\n\t\t\t// the local part (i.e. everything up to `@`) intact.\n\t\t\tresult = parts[0] + '@';\n\t\t\tstring = parts[1];\n\t\t}\n\t\t// Avoid `split(regex)` for IE8 compatibility. See #17.\n\t\tstring = string.replace(regexSeparators, '\\x2E');\n\t\tvar labels = string.split('.');\n\t\tvar encoded = map(labels, fn).join('.');\n\t\treturn result + encoded;\n\t}\n\n\t/**\n\t * Creates an array containing the numeric code points of each Unicode\n\t * character in the string. While JavaScript uses UCS-2 internally,\n\t * this function will convert a pair of surrogate halves (each of which\n\t * UCS-2 exposes as separate characters) into a single code point,\n\t * matching UTF-16.\n\t * @see `punycode.ucs2.encode`\n\t * @see \n\t * @memberOf punycode.ucs2\n\t * @name decode\n\t * @param {String} string The Unicode input string (UCS-2).\n\t * @returns {Array} The new array of code points.\n\t */\n\tfunction ucs2decode(string) {\n\t\tvar output = [],\n\t\t counter = 0,\n\t\t length = string.length,\n\t\t value,\n\t\t extra;\n\t\twhile (counter < length) {\n\t\t\tvalue = string.charCodeAt(counter++);\n\t\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t\t// high surrogate, and there is a next character\n\t\t\t\textra = string.charCodeAt(counter++);\n\t\t\t\tif ((extra & 0xFC00) == 0xDC00) { // low surrogate\n\t\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t\t} else {\n\t\t\t\t\t// unmatched surrogate; only append this code unit, in case the next\n\t\t\t\t\t// code unit is the high surrogate of a surrogate pair\n\t\t\t\t\toutput.push(value);\n\t\t\t\t\tcounter--;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\toutput.push(value);\n\t\t\t}\n\t\t}\n\t\treturn output;\n\t}\n\n\t/**\n\t * Creates a string based on an array of numeric code points.\n\t * @see `punycode.ucs2.decode`\n\t * @memberOf punycode.ucs2\n\t * @name encode\n\t * @param {Array} codePoints The array of numeric code points.\n\t * @returns {String} The new Unicode string (UCS-2).\n\t */\n\tfunction ucs2encode(array) {\n\t\treturn map(array, function(value) {\n\t\t\tvar output = '';\n\t\t\tif (value > 0xFFFF) {\n\t\t\t\tvalue -= 0x10000;\n\t\t\t\toutput += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800);\n\t\t\t\tvalue = 0xDC00 | value & 0x3FF;\n\t\t\t}\n\t\t\toutput += stringFromCharCode(value);\n\t\t\treturn output;\n\t\t}).join('');\n\t}\n\n\t/**\n\t * Converts a basic code point into a digit/integer.\n\t * @see `digitToBasic()`\n\t * @private\n\t * @param {Number} codePoint The basic numeric code point value.\n\t * @returns {Number} The numeric value of a basic code point (for use in\n\t * representing integers) in the range `0` to `base - 1`, or `base` if\n\t * the code point does not represent a value.\n\t */\n\tfunction basicToDigit(codePoint) {\n\t\tif (codePoint - 48 < 10) {\n\t\t\treturn codePoint - 22;\n\t\t}\n\t\tif (codePoint - 65 < 26) {\n\t\t\treturn codePoint - 65;\n\t\t}\n\t\tif (codePoint - 97 < 26) {\n\t\t\treturn codePoint - 97;\n\t\t}\n\t\treturn base;\n\t}\n\n\t/**\n\t * Converts a digit/integer into a basic code point.\n\t * @see `basicToDigit()`\n\t * @private\n\t * @param {Number} digit The numeric value of a basic code point.\n\t * @returns {Number} The basic code point whose value (when used for\n\t * representing integers) is `digit`, which needs to be in the range\n\t * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n\t * used; else, the lowercase form is used. The behavior is undefined\n\t * if `flag` is non-zero and `digit` has no uppercase form.\n\t */\n\tfunction digitToBasic(digit, flag) {\n\t\t// 0..25 map to ASCII a..z or A..Z\n\t\t// 26..35 map to ASCII 0..9\n\t\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n\t}\n\n\t/**\n\t * Bias adaptation function as per section 3.4 of RFC 3492.\n\t * http://tools.ietf.org/html/rfc3492#section-3.4\n\t * @private\n\t */\n\tfunction adapt(delta, numPoints, firstTime) {\n\t\tvar k = 0;\n\t\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n\t\tdelta += floor(delta / numPoints);\n\t\tfor (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {\n\t\t\tdelta = floor(delta / baseMinusTMin);\n\t\t}\n\t\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n\t}\n\n\t/**\n\t * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n\t * symbols.\n\t * @memberOf punycode\n\t * @param {String} input The Punycode string of ASCII-only symbols.\n\t * @returns {String} The resulting string of Unicode symbols.\n\t */\n\tfunction decode(input) {\n\t\t// Don't use UCS-2\n\t\tvar output = [],\n\t\t inputLength = input.length,\n\t\t out,\n\t\t i = 0,\n\t\t n = initialN,\n\t\t bias = initialBias,\n\t\t basic,\n\t\t j,\n\t\t index,\n\t\t oldi,\n\t\t w,\n\t\t k,\n\t\t digit,\n\t\t t,\n\t\t /** Cached calculation results */\n\t\t baseMinusT;\n\n\t\t// Handle the basic code points: let `basic` be the number of input code\n\t\t// points before the last delimiter, or `0` if there is none, then copy\n\t\t// the first basic code points to the output.\n\n\t\tbasic = input.lastIndexOf(delimiter);\n\t\tif (basic < 0) {\n\t\t\tbasic = 0;\n\t\t}\n\n\t\tfor (j = 0; j < basic; ++j) {\n\t\t\t// if it's not a basic code point\n\t\t\tif (input.charCodeAt(j) >= 0x80) {\n\t\t\t\terror('not-basic');\n\t\t\t}\n\t\t\toutput.push(input.charCodeAt(j));\n\t\t}\n\n\t\t// Main decoding loop: start just after the last delimiter if any basic code\n\t\t// points were copied; start at the beginning otherwise.\n\n\t\tfor (index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {\n\n\t\t\t// `index` is the index of the next character to be consumed.\n\t\t\t// Decode a generalized variable-length integer into `delta`,\n\t\t\t// which gets added to `i`. The overflow checking is easier\n\t\t\t// if we increase `i` as we go, then subtract off its starting\n\t\t\t// value at the end to obtain `delta`.\n\t\t\tfor (oldi = i, w = 1, k = base; /* no condition */; k += base) {\n\n\t\t\t\tif (index >= inputLength) {\n\t\t\t\t\terror('invalid-input');\n\t\t\t\t}\n\n\t\t\t\tdigit = basicToDigit(input.charCodeAt(index++));\n\n\t\t\t\tif (digit >= base || digit > floor((maxInt - i) / w)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\ti += digit * w;\n\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\n\t\t\t\tif (digit < t) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tbaseMinusT = base - t;\n\t\t\t\tif (w > floor(maxInt / baseMinusT)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tw *= baseMinusT;\n\n\t\t\t}\n\n\t\t\tout = output.length + 1;\n\t\t\tbias = adapt(i - oldi, out, oldi == 0);\n\n\t\t\t// `i` was supposed to wrap around from `out` to `0`,\n\t\t\t// incrementing `n` each time, so we'll fix that now:\n\t\t\tif (floor(i / out) > maxInt - n) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tn += floor(i / out);\n\t\t\ti %= out;\n\n\t\t\t// Insert `n` at position `i` of the output\n\t\t\toutput.splice(i++, 0, n);\n\n\t\t}\n\n\t\treturn ucs2encode(output);\n\t}\n\n\t/**\n\t * Converts a string of Unicode symbols (e.g. a domain name label) to a\n\t * Punycode string of ASCII-only symbols.\n\t * @memberOf punycode\n\t * @param {String} input The string of Unicode symbols.\n\t * @returns {String} The resulting Punycode string of ASCII-only symbols.\n\t */\n\tfunction encode(input) {\n\t\tvar n,\n\t\t delta,\n\t\t handledCPCount,\n\t\t basicLength,\n\t\t bias,\n\t\t j,\n\t\t m,\n\t\t q,\n\t\t k,\n\t\t t,\n\t\t currentValue,\n\t\t output = [],\n\t\t /** `inputLength` will hold the number of code points in `input`. */\n\t\t inputLength,\n\t\t /** Cached calculation results */\n\t\t handledCPCountPlusOne,\n\t\t baseMinusT,\n\t\t qMinusT;\n\n\t\t// Convert the input in UCS-2 to Unicode\n\t\tinput = ucs2decode(input);\n\n\t\t// Cache the length\n\t\tinputLength = input.length;\n\n\t\t// Initialize the state\n\t\tn = initialN;\n\t\tdelta = 0;\n\t\tbias = initialBias;\n\n\t\t// Handle the basic code points\n\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\tcurrentValue = input[j];\n\t\t\tif (currentValue < 0x80) {\n\t\t\t\toutput.push(stringFromCharCode(currentValue));\n\t\t\t}\n\t\t}\n\n\t\thandledCPCount = basicLength = output.length;\n\n\t\t// `handledCPCount` is the number of code points that have been handled;\n\t\t// `basicLength` is the number of basic code points.\n\n\t\t// Finish the basic string - if it is not empty - with a delimiter\n\t\tif (basicLength) {\n\t\t\toutput.push(delimiter);\n\t\t}\n\n\t\t// Main encoding loop:\n\t\twhile (handledCPCount < inputLength) {\n\n\t\t\t// All non-basic code points < n have been handled already. Find the next\n\t\t\t// larger one:\n\t\t\tfor (m = maxInt, j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\t\t\t\tif (currentValue >= n && currentValue < m) {\n\t\t\t\t\tm = currentValue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Increase `delta` enough to advance the decoder's state to ,\n\t\t\t// but guard against overflow\n\t\t\thandledCPCountPlusOne = handledCPCount + 1;\n\t\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tdelta += (m - n) * handledCPCountPlusOne;\n\t\t\tn = m;\n\n\t\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\n\t\t\t\tif (currentValue < n && ++delta > maxInt) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tif (currentValue == n) {\n\t\t\t\t\t// Represent delta as a generalized variable-length integer\n\t\t\t\t\tfor (q = delta, k = base; /* no condition */; k += base) {\n\t\t\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\t\t\t\t\t\tif (q < t) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tqMinusT = q - t;\n\t\t\t\t\t\tbaseMinusT = base - t;\n\t\t\t\t\t\toutput.push(\n\t\t\t\t\t\t\tstringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))\n\t\t\t\t\t\t);\n\t\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n\t\t\t\t\t}\n\n\t\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n\t\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n\t\t\t\t\tdelta = 0;\n\t\t\t\t\t++handledCPCount;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t++delta;\n\t\t\t++n;\n\n\t\t}\n\t\treturn output.join('');\n\t}\n\n\t/**\n\t * Converts a Punycode string representing a domain name or an email address\n\t * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n\t * it doesn't matter if you call it on a string that has already been\n\t * converted to Unicode.\n\t * @memberOf punycode\n\t * @param {String} input The Punycoded domain name or email address to\n\t * convert to Unicode.\n\t * @returns {String} The Unicode representation of the given Punycode\n\t * string.\n\t */\n\tfunction toUnicode(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexPunycode.test(string)\n\t\t\t\t? decode(string.slice(4).toLowerCase())\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/**\n\t * Converts a Unicode string representing a domain name or an email address to\n\t * Punycode. Only the non-ASCII parts of the domain name will be converted,\n\t * i.e. it doesn't matter if you call it with a domain that's already in\n\t * ASCII.\n\t * @memberOf punycode\n\t * @param {String} input The domain name or email address to convert, as a\n\t * Unicode string.\n\t * @returns {String} The Punycode representation of the given domain name or\n\t * email address.\n\t */\n\tfunction toASCII(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexNonASCII.test(string)\n\t\t\t\t? 'xn--' + encode(string)\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/** Define the public API */\n\tpunycode = {\n\t\t/**\n\t\t * A string representing the current Punycode.js version number.\n\t\t * @memberOf punycode\n\t\t * @type String\n\t\t */\n\t\t'version': '1.3.2',\n\t\t/**\n\t\t * An object of methods to convert from JavaScript's internal character\n\t\t * representation (UCS-2) to Unicode code points, and back.\n\t\t * @see \n\t\t * @memberOf punycode\n\t\t * @type Object\n\t\t */\n\t\t'ucs2': {\n\t\t\t'decode': ucs2decode,\n\t\t\t'encode': ucs2encode\n\t\t},\n\t\t'decode': decode,\n\t\t'encode': encode,\n\t\t'toASCII': toASCII,\n\t\t'toUnicode': toUnicode\n\t};\n\n\t/** Expose `punycode` */\n\t// Some AMD build optimizers, like r.js, check for specific condition patterns\n\t// like the following:\n\tif (\n\t\ttypeof define == 'function' &&\n\t\ttypeof define.amd == 'object' &&\n\t\tdefine.amd\n\t) {\n\t\tdefine('punycode', function() {\n\t\t\treturn punycode;\n\t\t});\n\t} else if (freeExports && freeModule) {\n\t\tif (module.exports == freeExports) { // in Node.js or RingoJS v0.8.0+\n\t\t\tfreeModule.exports = punycode;\n\t\t} else { // in Narwhal or RingoJS v0.7.0-\n\t\t\tfor (key in punycode) {\n\t\t\t\tpunycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]);\n\t\t\t}\n\t\t}\n\t} else { // in Rhino or a web browser\n\t\troot.punycode = punycode;\n\t}\n\n}(this));\n","'use strict';\n\nvar callBind = require('call-bind-apply-helpers');\nvar gOPD = require('gopd');\n\nvar hasProtoAccessor;\ntry {\n\t// eslint-disable-next-line no-extra-parens, no-proto\n\thasProtoAccessor = /** @type {{ __proto__?: typeof Array.prototype }} */ ([]).__proto__ === Array.prototype;\n} catch (e) {\n\tif (!e || typeof e !== 'object' || !('code' in e) || e.code !== 'ERR_PROTO_ACCESS') {\n\t\tthrow e;\n\t}\n}\n\n// eslint-disable-next-line no-extra-parens\nvar desc = !!hasProtoAccessor && gOPD && gOPD(Object.prototype, /** @type {keyof typeof Object.prototype} */ ('__proto__'));\n\nvar $Object = Object;\nvar $getPrototypeOf = $Object.getPrototypeOf;\n\n/** @type {import('./get')} */\nmodule.exports = desc && typeof desc.get === 'function'\n\t? callBind([desc.get])\n\t: typeof $getPrototypeOf === 'function'\n\t\t? /** @type {import('./get')} */ function getDunder(value) {\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\treturn $getPrototypeOf(value == null ? value : $Object(value));\n\t\t}\n\t\t: false;\n","'use strict';\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nexports.f = wellKnownSymbol;\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport AudioProfile from '../audioprofile/AudioProfile';\nimport AudioVideoControllerState from '../audiovideocontroller/AudioVideoControllerState';\nimport AudioVideoObserver from '../audiovideoobserver/AudioVideoObserver';\nimport BrowserBehavior from '../browserbehavior/BrowserBehavior';\nimport ClientMetricReport from '../clientmetricreport/ClientMetricReport';\nimport RedundantAudioRecoveryMetricReport from '../clientmetricreport/RedundantAudioRecoveryMetricReport';\nimport Logger from '../logger/Logger';\nimport RedundantAudioEncoder from '../redundantaudioencoder/RedundantAudioEncoder';\nimport RedundantAudioEncoderWorkerCode from '../redundantaudioencoderworkercode/RedundantAudioEncoderWorkerCode';\nimport RedundantAudioRecoveryMetricsObserver from '../redundantaudiorecoverymetricsobserver/RedundantAudioRecoveryMetricsObserver';\nimport AsyncScheduler from '../scheduler/AsyncScheduler';\nimport VideoStreamIdSet from '../videostreamidset/VideoStreamIdSet';\nimport VideoStreamIndex from '../videostreamindex/VideoStreamIndex';\nimport TransceiverController from './TransceiverController';\n\nexport default class DefaultTransceiverController\n implements TransceiverController, AudioVideoObserver {\n protected _localCameraTransceiver: RTCRtpTransceiver | null = null;\n protected _localAudioTransceiver: RTCRtpTransceiver | null = null;\n protected videoSubscriptions: number[] = [];\n protected defaultMediaStream: MediaStream | null = null;\n protected peer: RTCPeerConnection | null = null;\n protected streamIdToTransceiver: Map = new Map();\n protected groupIdToTransceiver: Map = new Map();\n private audioRedWorker: Worker | null = null;\n private audioRedWorkerURL: string | null = null;\n private audioMetricsHistory: Array<{\n timestampMs: number;\n totalPacketsSent: number;\n totalPacketsLost: number;\n }> = new Array();\n private redMetricsObservers: Set = new Set<\n RedundantAudioRecoveryMetricsObserver\n >();\n private audioRedEnabled: boolean;\n private currentNumRedundantEncodings: number = 0;\n private lastRedHolddownTimerStartTimestampMs: number = 0;\n private lastHighPacketLossEventTimestampMs: number = 0;\n private lastAudioRedTurnOffTimestampMs: number = 0;\n private readonly maxAudioMetricsHistory: number = 20;\n private readonly audioRedPacketLossShortEvalPeriodMs = 5 * 1000; // 5s\n private readonly audioRedPacketLossLongEvalPeriodMs = 15 * 1000; // 15s\n private readonly audioRedHoldDownTimeMs: number = 5 * 60 * 1000; // 5m\n private readonly redRecoveryTimeMs: number = 1 * 60 * 1000; // 1m\n\n constructor(\n protected logger: Logger,\n protected browserBehavior: BrowserBehavior,\n protected meetingSessionContext?: AudioVideoControllerState\n ) {}\n\n async setEncodingParameters(\n encodingParamMap: Map\n ): Promise {\n if (!this._localCameraTransceiver || this._localCameraTransceiver.direction !== 'sendrecv') {\n return;\n }\n\n const sender = this._localCameraTransceiver.sender;\n if (!encodingParamMap || encodingParamMap.size === 0) {\n return;\n }\n const newEncodingParams = Array.from(encodingParamMap.values());\n\n const oldParam: RTCRtpSendParameters = sender.getParameters();\n if (!oldParam.encodings || oldParam.encodings.length === 0) {\n oldParam.encodings = newEncodingParams;\n } else {\n for (const existing of oldParam.encodings) {\n for (const changed of newEncodingParams) {\n if ((existing.rid || changed.rid) && existing.rid !== changed.rid) {\n continue;\n }\n let key: keyof RTCRtpEncodingParameters;\n for (key in changed) {\n // These properties can't be changed.\n if (key === 'rid' || key === 'codecPayloadType') {\n continue;\n }\n /* istanbul ignore else */\n if (changed.hasOwnProperty(key)) {\n (existing[key] as RTCRtpEncodingParameters[keyof RTCRtpEncodingParameters]) = changed[\n key\n ];\n }\n }\n }\n }\n }\n\n await sender.setParameters(oldParam);\n }\n\n localAudioTransceiver(): RTCRtpTransceiver {\n return this._localAudioTransceiver;\n }\n\n localVideoTransceiver(): RTCRtpTransceiver {\n return this._localCameraTransceiver;\n }\n\n async setVideoSendingBitrateKbps(bitrateKbps: number): Promise {\n if (!this._localCameraTransceiver || this._localCameraTransceiver.direction !== 'sendrecv') {\n return;\n }\n const sender: RTCRtpSender = this._localCameraTransceiver.sender;\n if (!sender || bitrateKbps <= 0) {\n return;\n }\n const param: RTCRtpSendParameters = sender.getParameters();\n if (!param.encodings) {\n param.encodings = [{}];\n }\n for (const encodeParam of param.encodings) {\n encodeParam.maxBitrate = bitrateKbps * 1000;\n }\n await sender.setParameters(param);\n }\n\n setPeer(peer: RTCPeerConnection): void {\n this.peer = peer;\n }\n\n reset(): void {\n this.destroyAudioRedWorkerAndStates();\n this._localCameraTransceiver = null;\n this._localAudioTransceiver = null;\n this.videoSubscriptions = [];\n this.defaultMediaStream = null;\n this.peer = null;\n }\n\n useTransceivers(): boolean {\n return !!this.peer && typeof this.peer.getTransceivers !== 'undefined';\n }\n\n hasVideoInput(): boolean {\n if (!this._localCameraTransceiver || this._localCameraTransceiver.direction !== 'sendrecv')\n return false;\n\n return true;\n }\n\n trackIsVideoInput(track: MediaStreamTrack): boolean {\n if (!this._localCameraTransceiver) {\n return false;\n }\n return (\n track === this._localCameraTransceiver.sender.track ||\n track === this._localCameraTransceiver.receiver.track\n );\n }\n\n setupLocalTransceivers(): void {\n if (!this.useTransceivers()) {\n return;\n }\n\n if (!this.defaultMediaStream && typeof MediaStream !== 'undefined') {\n this.defaultMediaStream = new MediaStream();\n }\n\n if (!this._localAudioTransceiver) {\n this._localAudioTransceiver = this.peer.addTransceiver('audio', {\n direction: 'inactive',\n streams: [this.defaultMediaStream],\n });\n\n if (this.meetingSessionContext?.audioProfile?.hasRedundancyEnabled()) {\n // This will perform additional necessary setup for the audio transceiver.\n this.setupAudioRedWorker();\n }\n }\n\n if (!this._localCameraTransceiver) {\n this._localCameraTransceiver = this.addTransceiver('video', {\n direction: 'inactive',\n streams: [this.defaultMediaStream],\n });\n }\n }\n\n async replaceAudioTrack(track: MediaStreamTrack): Promise {\n if (!this._localAudioTransceiver || this._localAudioTransceiver.direction !== 'sendrecv') {\n this.logger.info(`audio transceiver direction is not set up or not activated`);\n return false;\n }\n await this._localAudioTransceiver.sender.replaceTrack(track);\n return true;\n }\n\n async setAudioInput(track: MediaStreamTrack | null): Promise {\n await this.setTransceiverInput(this._localAudioTransceiver, track);\n return;\n }\n\n async setVideoInput(track: MediaStreamTrack | null): Promise {\n await this.setTransceiverInput(this._localCameraTransceiver, track);\n return;\n }\n\n updateVideoTransceivers(\n videoStreamIndex: VideoStreamIndex,\n videosToReceive: VideoStreamIdSet\n ): number[] {\n if (!this.useTransceivers()) {\n return videosToReceive.array();\n }\n\n // See https://blog.mozilla.org/webrtc/rtcrtptransceiver-explored/ for details on transceivers\n const transceivers: RTCRtpTransceiver[] = this.peer.getTransceivers();\n\n // Subscription index 0 is reserved for transmitting camera.\n // We mark inactive slots with 0 in the subscription array.\n this.videoSubscriptions = [0];\n videosToReceive = videosToReceive.clone();\n this.updateTransceivers(transceivers, videoStreamIndex, videosToReceive);\n this.logger.debug(() => {\n return this.debugDumpTransceivers();\n });\n return this.videoSubscriptions;\n }\n\n private updateTransceivers(\n transceivers: RTCRtpTransceiver[],\n videoStreamIndex: VideoStreamIndex,\n videosToReceive: VideoStreamIdSet\n ): void {\n const videosRemaining = videosToReceive.array();\n if (transceivers.length !== 0 && !transceivers[0].stop) {\n // This function and its usage can be removed once we raise Chrome browser requirements\n // to M88 (when `RTCRtpTransceiver.stop` was added)\n this.logger.info('Updating transceivers without `stop` function');\n this.updateTransceiverWithoutStop(transceivers, videoStreamIndex, videosRemaining);\n } else if (transceivers.length !== 0) {\n this.updateTransceiverWithStop(transceivers, videoStreamIndex, videosRemaining);\n }\n\n // Add transceivers for the remaining subscriptions\n for (const index of videosRemaining) {\n // @ts-ignore\n const transceiver = this.addTransceiver('video', {\n direction: 'recvonly',\n streams: [new MediaStream()],\n });\n this.streamIdToTransceiver.set(index, transceiver);\n this.groupIdToTransceiver.set(videoStreamIndex.groupIdForStreamId(index), transceiver);\n this.videoSubscriptions.push(index);\n this.logger.info(\n `adding transceiver mid: ${transceiver.mid} subscription: ${index} direction: recvonly`\n );\n }\n }\n\n private updateTransceiverWithStop(\n transceivers: RTCRtpTransceiver[],\n videoStreamIndex: VideoStreamIndex,\n videosRemaining: number[]\n ): void {\n // Begin counting out index in the the subscription array at 1 since the camera.\n // Always occupies position 0 (whether active or not).\n let n = 1;\n // Reset since otherwise there will be stale indexes corresponding to\n // stopped transceivers.\n this.videoSubscriptions = [0];\n\n for (const transceiver of transceivers) {\n if (\n transceiver === this._localCameraTransceiver ||\n !this.transceiverIsVideo(transceiver) ||\n !transceiver.mid\n ) {\n continue;\n }\n\n let reusingTranceiver = false;\n // See if we want this existing transceiver for a simulcast stream switch\n //\n // By convention with the service backend, msid is equal to the media section mid, prefixed with the string \"v_\";\n // we use this to get the stream ID for the track\n const streamId = videoStreamIndex.streamIdForTrack('v_' + transceiver.mid);\n if (transceiver.direction !== 'inactive' && streamId !== undefined) {\n for (const [index, recvStreamId] of videosRemaining.entries()) {\n // `streamId` may still be the same as `recvStreamId`\n if (videoStreamIndex.StreamIdsInSameGroup(streamId, recvStreamId)) {\n transceiver.direction = 'recvonly';\n this.videoSubscriptions[n] = recvStreamId;\n reusingTranceiver = true;\n\n this.streamIdToTransceiver.delete(streamId);\n this.streamIdToTransceiver.set(recvStreamId, transceiver);\n videosRemaining.splice(index, 1);\n break;\n }\n }\n }\n\n if (!reusingTranceiver) {\n this.videoSubscriptions[n] = 0;\n this.logger.info(\n `Stopping MID: ${transceiver.mid}, direction: ${transceiver.direction}, current direction: ${transceiver.currentDirection}`\n );\n // Clean up transceiver and mappings for streams that have been unsubscribed from. Note we do not try to reuse\n // old inactive transceivers for new streams as Firefox will reuse the last frame from\n // that transceiver, and additionally we simply don't want to risk wiring up a transceiver\n // to the incorrect video stream for no real benefit besides possible a smaller SDP size.\n transceiver.stop(); // Note (as of Firefox 94): Firefox will keep these around forever\n for (const [streamId, previousTransceiver] of this.streamIdToTransceiver.entries()) {\n if (transceiver.mid === previousTransceiver.mid) {\n this.streamIdToTransceiver.delete(streamId);\n this.groupIdToTransceiver.delete(videoStreamIndex.groupIdForStreamId(streamId));\n }\n }\n }\n n += 1;\n }\n }\n\n // This function operates similarily to `updateTransceiverWithStop` with the following changes to account\n // for the fact RTCRtpTransceiver.stop is not available on all supported browsers:\n // * We attempt to reuse inactive transceivers because libwebrtc will not remove them otherwise and\n // the SDP will grow endlessly.\n // * We mark unsubscribed transceivers as 'inactive' so that they can be reused. This requires using a\n // second for loop.\n private updateTransceiverWithoutStop(\n transceivers: RTCRtpTransceiver[],\n videoStreamIndex: VideoStreamIndex,\n videosRemaining: number[]\n ): void {\n let n = 1;\n for (const transceiver of transceivers) {\n if (transceiver === this._localCameraTransceiver || !this.transceiverIsVideo(transceiver)) {\n continue;\n }\n this.videoSubscriptions[n] = 0;\n if (transceiver.direction !== 'inactive') {\n const streamId = videoStreamIndex.streamIdForTrack('v_' + transceiver.mid);\n if (streamId !== undefined) {\n for (const [index, recvStreamId] of videosRemaining.entries()) {\n if (videoStreamIndex.StreamIdsInSameGroup(streamId, recvStreamId)) {\n transceiver.direction = 'recvonly';\n this.videoSubscriptions[n] = recvStreamId;\n\n this.streamIdToTransceiver.delete(streamId);\n this.streamIdToTransceiver.set(recvStreamId, transceiver);\n videosRemaining.splice(index, 1);\n break;\n }\n }\n }\n }\n n += 1;\n }\n\n // Next fill in open slots and remove unused\n n = 1;\n for (const transceiver of transceivers) {\n if (transceiver === this._localCameraTransceiver || !this.transceiverIsVideo(transceiver)) {\n continue;\n }\n\n if (transceiver.direction === 'inactive' && videosRemaining.length > 0) {\n // Fill available slot\n transceiver.direction = 'recvonly';\n const streamId = videosRemaining.shift();\n this.videoSubscriptions[n] = streamId;\n this.streamIdToTransceiver.set(streamId, transceiver);\n this.groupIdToTransceiver.set(videoStreamIndex.groupIdForStreamId(streamId), transceiver);\n } else {\n // Remove if no longer subscribed\n if (this.videoSubscriptions[n] === 0) {\n transceiver.direction = 'inactive';\n for (const [streamId, previousTransceiver] of this.streamIdToTransceiver.entries()) {\n if (transceiver === previousTransceiver) {\n this.streamIdToTransceiver.delete(streamId);\n this.groupIdToTransceiver.delete(videoStreamIndex.groupIdForStreamId(streamId));\n }\n }\n }\n }\n n += 1;\n }\n }\n\n getMidForStreamId(streamId: number): string | undefined {\n return this.streamIdToTransceiver.get(streamId)?.mid;\n }\n\n setStreamIdForMid(mid: string, newStreamId: number): void {\n for (const [streamId, transceiver] of this.streamIdToTransceiver.entries()) {\n if (transceiver.mid === mid) {\n this.streamIdToTransceiver.delete(streamId);\n this.streamIdToTransceiver.set(newStreamId, transceiver);\n return;\n }\n }\n }\n\n getMidForGroupId(groupId: number): string | undefined {\n return this.groupIdToTransceiver.get(groupId)?.mid ?? undefined;\n }\n\n protected transceiverIsVideo(transceiver: RTCRtpTransceiver): boolean {\n return (\n (transceiver.receiver &&\n transceiver.receiver.track &&\n transceiver.receiver.track.kind === 'video') ||\n (transceiver.sender && transceiver.sender.track && transceiver.sender.track.kind === 'video')\n );\n }\n\n private debugDumpTransceivers(): string {\n let msg = '';\n let n = 0;\n\n for (const transceiver of this.peer.getTransceivers()) {\n if (!this.transceiverIsVideo(transceiver)) {\n continue;\n }\n msg += `transceiver index=${n} mid=${transceiver.mid} subscription=${this.videoSubscriptions[n]} direction=${transceiver.direction}\\n`;\n n += 1;\n }\n return msg;\n }\n\n private async setTransceiverInput(\n transceiver: RTCRtpTransceiver | null,\n track: MediaStreamTrack\n ): Promise {\n if (!transceiver) {\n return;\n }\n\n if (track) {\n transceiver.direction = 'sendrecv';\n } else {\n transceiver.direction = 'inactive';\n }\n\n await transceiver.sender.replaceTrack(track);\n }\n\n private forEachRedMetricsObserver(redMetricReport: RedundantAudioRecoveryMetricReport): void {\n for (const observer of this.redMetricsObservers) {\n AsyncScheduler.nextTick(() => {\n /* istanbul ignore else */\n // Since this executes asynchronously, we need to check if the observer has not been removed.\n if (this.redMetricsObservers.has(observer)) {\n observer.recoveryMetricsDidReceive(redMetricReport);\n }\n });\n }\n }\n\n private disableAudioRedundancy(): void {\n // Reset the audio profile with the configured bitrate and force redundancy to be false.\n this.meetingSessionContext.audioProfile = new AudioProfile(\n this.meetingSessionContext.audioProfile.audioBitrateBps,\n false\n );\n this.meetingSessionContext.audioVideoController.setAudioProfile(\n this.meetingSessionContext.audioProfile\n );\n }\n\n protected setupAudioRedWorker(): void {\n // @ts-ignore\n const supportsRTCScriptTransform = !!window.RTCRtpScriptTransform;\n // @ts-ignore\n const supportsInsertableStreams = !!RTCRtpSender.prototype.createEncodedStreams;\n\n if (supportsRTCScriptTransform) {\n // This is the prefered approach according to\n // https://github.com/w3c/webrtc-encoded-transform/blob/main/explainer.md.\n this.logger.info(\n '[AudioRed] Supports encoded insertable streams using RTCRtpScriptTransform'\n );\n } else if (supportsInsertableStreams) {\n this.logger.info('[AudioRed] Supports encoded insertable streams using TransformStream');\n } else {\n this.disableAudioRedundancy();\n // We need to recreate the peer connection without encodedInsertableStreams in the\n // peer connection config otherwise we would need to create pass through transforms\n // for all media streams. Throwing the error here and having AttackMediaInputTask throw the\n // error again will result in a full reconnect.\n throw new Error(\n '[AudioRed] Encoded insertable streams not supported. Recreating peer connection with audio redundancy disabled.'\n );\n }\n\n // Run the entire redundant audio worker setup in a `try` block to allow any errors to trigger a reconnect with\n // audio redundancy disabled.\n try {\n this.audioRedWorkerURL = URL.createObjectURL(\n new Blob([RedundantAudioEncoderWorkerCode], {\n type: 'application/javascript',\n })\n );\n this.logger.info(`[AudioRed] Redundant audio worker URL ${this.audioRedWorkerURL}`);\n this.audioRedWorker = new Worker(this.audioRedWorkerURL);\n } catch (error) {\n this.logger.error(`[AudioRed] Unable to create audio red worker due to ${error}`);\n URL.revokeObjectURL(this.audioRedWorkerURL);\n this.audioRedWorkerURL = null;\n this.audioRedWorker = null;\n\n this.disableAudioRedundancy();\n this.logger.info(`[AudioRed] Recreating peer connection with audio redundancy disabled`);\n\n // We need to recreate the peer connection without encodedInsertableStreams in the\n // peer connection config otherwise we would need to create pass through transforms\n // for all media streams. Throwing the error here and having AttackMediaInputTask throw the\n // error again will result in a full reconnect.\n throw error;\n }\n this.audioRedEnabled = true;\n\n // We cannot use console.log in production code and we cannot\n // transfer the logger object so we need the worker to post messages\n // to the main thread for logging\n this.audioRedWorker.onmessage = (event: MessageEvent) => {\n /* istanbul ignore else */\n if (event.data.type === 'REDWorkerLog') {\n this.logger.info(event.data.log);\n } /* istanbul ignore next */ else if (event.data.type === 'RedundantAudioEncoderStats') {\n const redMetricReport = new RedundantAudioRecoveryMetricReport();\n redMetricReport.currentTimestampMs = Date.now();\n redMetricReport.ssrc = event.data.ssrc;\n redMetricReport.totalAudioPacketsLost = event.data.totalAudioPacketsLost;\n redMetricReport.totalAudioPacketsExpected = event.data.totalAudioPacketsExpected;\n redMetricReport.totalAudioPacketsRecoveredRed = event.data.totalAudioPacketsRecoveredRed;\n redMetricReport.totalAudioPacketsRecoveredFec = event.data.totalAudioPacketsRecoveredFec;\n this.forEachRedMetricsObserver(redMetricReport);\n }\n };\n\n if (supportsRTCScriptTransform) {\n // @ts-ignore\n this._localAudioTransceiver.sender.transform = new RTCRtpScriptTransform(\n this.audioRedWorker,\n { type: 'SenderTransform' }\n );\n // @ts-ignore\n this._localAudioTransceiver.receiver.transform = new RTCRtpScriptTransform(\n this.audioRedWorker,\n { type: 'ReceiverTransform' }\n );\n // eslint-disable-next-line\n } else /* istanbul ignore else */ if (supportsInsertableStreams) {\n // @ts-ignore\n const sendStreams = this._localAudioTransceiver.sender.createEncodedStreams();\n // @ts-ignore\n const receiveStreams = this._localAudioTransceiver.receiver.createEncodedStreams();\n this.audioRedWorker.postMessage(\n {\n msgType: 'StartRedWorker',\n send: sendStreams,\n receive: receiveStreams,\n },\n [\n sendStreams.readable,\n sendStreams.writable,\n receiveStreams.readable,\n receiveStreams.writable,\n ]\n );\n }\n /* istanbul ignore next */\n this.meetingSessionContext?.audioVideoController.addObserver(this);\n /* istanbul ignore next */\n this.addRedundantAudioRecoveryMetricsObserver(this.meetingSessionContext?.statsCollector);\n }\n\n /**\n * Adds a transceiver to the peer connection and performs additional necessary setup.\n */\n protected addTransceiver(\n trackOrKind: string | MediaStreamTrack,\n init?: RTCRtpTransceiverInit\n ): RTCRtpTransceiver {\n const transceiver = this.peer.addTransceiver(trackOrKind, init);\n\n // @ts-ignore\n // Transforms need to be setup for every transceiver to allow media flow for the given transceiver if WebRTC Encoded\n // Transform (https://github.com/w3c/webrtc-encoded-transform/blob/main/explainer.md) is used.\n if (!this.peer.getConfiguration()?.encodedInsertableStreams || !this.audioRedWorker)\n return transceiver;\n\n // @ts-ignore\n const supportsRTCScriptTransform = !!window.RTCRtpScriptTransform;\n // @ts-ignore\n const supportsInsertableStreams = !!RTCRtpSender.prototype.createEncodedStreams;\n\n if (supportsRTCScriptTransform) {\n // @ts-ignore\n transceiver.sender.transform = new RTCRtpScriptTransform(this.audioRedWorker, {\n type: 'PassthroughTransform',\n });\n // @ts-ignore\n transceiver.receiver.transform = new RTCRtpScriptTransform(this.audioRedWorker, {\n type: 'PassthroughTransform',\n });\n // eslint-disable-next-line\n } else /* istanbul ignore else */ if (supportsInsertableStreams) {\n // @ts-ignore\n const sendStreams = transceiver.sender.createEncodedStreams();\n // @ts-ignore\n const receiveStreams = transceiver.receiver.createEncodedStreams();\n this.audioRedWorker.postMessage(\n {\n msgType: 'PassthroughTransform',\n send: sendStreams,\n receive: receiveStreams,\n },\n [\n sendStreams.readable,\n sendStreams.writable,\n receiveStreams.readable,\n receiveStreams.writable,\n ]\n );\n }\n\n return transceiver;\n }\n\n private destroyAudioRedWorkerAndStates(): void {\n if (this.audioRedWorker) {\n URL.revokeObjectURL(this.audioRedWorkerURL);\n this.audioRedWorkerURL = null;\n this.audioRedWorker.terminate();\n this.audioRedWorker = null;\n this.currentNumRedundantEncodings = 0;\n this.lastRedHolddownTimerStartTimestampMs = 0;\n this.lastAudioRedTurnOffTimestampMs = 0;\n this.lastHighPacketLossEventTimestampMs = 0;\n this.audioRedEnabled = true;\n /* istanbul ignore next */\n this.meetingSessionContext?.audioVideoController.removeObserver(this);\n /* istanbul ignore next */\n this.removeRedundantAudioRecoveryMetricsObserver(this.meetingSessionContext?.statsCollector);\n }\n }\n\n setAudioPayloadTypes(payloadTypeMap: Map): void {\n if (this.audioRedWorker) {\n this.audioRedWorker.postMessage({\n msgType: 'RedPayloadType',\n payloadType: payloadTypeMap.get('red'),\n });\n\n this.audioRedWorker.postMessage({\n msgType: 'OpusPayloadType',\n payloadType: payloadTypeMap.get('opus'),\n });\n }\n }\n\n metricsDidReceive(clientMetricReport: ClientMetricReport): void {\n const { currentTimestampMs } = clientMetricReport;\n const rtcStatsReport = clientMetricReport.getRTCStatsReport();\n let receiverReportReceptionTimestampMs: number = 0;\n let currentTotalPacketsSent: number = 0;\n let currentTotalPacketsLost: number = 0;\n\n rtcStatsReport.forEach(report => {\n /* istanbul ignore else */\n if (report.kind === 'audio') {\n /* istanbul ignore else */\n if (report.type === 'outbound-rtp') {\n currentTotalPacketsSent = report.packetsSent;\n } /* istanbul ignore else */ else if (report.type === 'remote-inbound-rtp') {\n // Use the timestamp that the receiver report was received on the client side to get a more accurate time\n // interval for the metrics.\n receiverReportReceptionTimestampMs = report.timestamp;\n currentTotalPacketsLost = report.packetsLost;\n }\n }\n });\n\n // Since the timestamp from the server side is only updated when a new receiver report is generated, only add\n // metrics with new timestamps to our metrics history.\n //\n // Also, make sure that the total packets sent is greater than the most recent value in the history before consuming\n // to avoid divide-by-zero while calculating uplink loss percent.\n if (\n this.audioMetricsHistory.length === 0 ||\n (receiverReportReceptionTimestampMs >\n this.audioMetricsHistory[this.audioMetricsHistory.length - 1].timestampMs &&\n currentTotalPacketsSent >\n this.audioMetricsHistory[this.audioMetricsHistory.length - 1].totalPacketsSent)\n ) {\n // Note that although the total packets sent is updated anytime we get the WebRTC stats, we are only adding a new\n // metric for total packets sent when we receive a new receiver report. We only care about the total packets that\n // the server was expected to receive at the time that the latest `packetsLost` metric was calculated in order to\n // do our uplink loss calculation. Therefore, we only record the total packets sent when we receive a new receiver\n // report, which will give us an estimate of the number of packets that the server was supposed to receive at the\n // time when the latest `packetsLost` metric was calculated.\n this.audioMetricsHistory.push({\n timestampMs: receiverReportReceptionTimestampMs,\n totalPacketsSent: currentTotalPacketsSent,\n totalPacketsLost: currentTotalPacketsLost,\n });\n }\n\n // Remove the oldest metric report from our list\n if (this.audioMetricsHistory.length > this.maxAudioMetricsHistory) {\n this.audioMetricsHistory.shift();\n }\n\n // As the minimum RTCP frequency is about 1 every 5 seconds,\n // we are limited to using a minimum timewindow of 5 seconds.\n // This is because the cumulative packetsLost metric remains\n // the same for 5 consecutive client metric reports.\n const lossPercent5sTimewindow = this.lossPercent(this.audioRedPacketLossShortEvalPeriodMs);\n const lossPercent15sTimewindow = this.lossPercent(this.audioRedPacketLossLongEvalPeriodMs);\n\n // Taking the max loss percent between a short and long time window will allow\n // us to increase the number of encodings fast but will slowly decrease the\n // number of encodings on loss recovery.\n const maxLossPercent = Math.max(lossPercent5sTimewindow, lossPercent15sTimewindow);\n\n const [\n newNumRedundantEncodings,\n shouldTurnOffRed,\n ] = RedundantAudioEncoder.getNumRedundantEncodingsForPacketLoss(maxLossPercent);\n\n if (shouldTurnOffRed) {\n this.lastHighPacketLossEventTimestampMs = currentTimestampMs;\n /* istanbul ignore next */\n if (this.audioRedEnabled) {\n if (this.audioRedWorker) {\n this.audioRedWorker.postMessage({\n msgType: 'Disable',\n });\n }\n this.audioRedEnabled = false;\n this.lastAudioRedTurnOffTimestampMs = currentTimestampMs;\n }\n return;\n } else if (!this.audioRedEnabled) {\n const timeSinceRedOff = currentTimestampMs - this.lastAudioRedTurnOffTimestampMs;\n const timeSinceLastHighPacketLossEvent =\n currentTimestampMs - this.lastHighPacketLossEventTimestampMs;\n if (\n timeSinceRedOff >= this.audioRedPacketLossLongEvalPeriodMs &&\n timeSinceLastHighPacketLossEvent < this.redRecoveryTimeMs\n ) {\n // This is probably not a transient high packet loss spike.\n // We need to turn off RED for awhile to avoid congestion collapse.\n return;\n } else {\n // Enable red as we've completed the recovery wait time.\n /* istanbul ignore next */\n if (this.audioRedWorker) {\n this.audioRedWorker.postMessage({\n msgType: 'Enable',\n });\n }\n this.audioRedEnabled = true;\n this.maybeResetHoldDownTimer(currentTimestampMs);\n }\n }\n\n if (this.shouldUpdateAudioRedWorkerEncodings(currentTimestampMs, newNumRedundantEncodings)) {\n /* istanbul ignore next */\n if (this.audioRedWorker) {\n this.audioRedWorker.postMessage({\n msgType: 'UpdateNumRedundantEncodings',\n numRedundantEncodings: newNumRedundantEncodings,\n });\n }\n }\n }\n\n private maybeResetHoldDownTimer(currentTimestampMs: number): void {\n if (this.currentNumRedundantEncodings > 0) {\n this.lastRedHolddownTimerStartTimestampMs = currentTimestampMs;\n }\n }\n\n private lossPercent(timeWindowMs: number): number {\n if (this.audioMetricsHistory.length < 2) {\n return 0;\n }\n const latestReceiverReportTimestampMs: number = this.audioMetricsHistory[\n this.audioMetricsHistory.length - 1\n ].timestampMs;\n const currentTotalPacketsSent: number = this.audioMetricsHistory[\n this.audioMetricsHistory.length - 1\n ].totalPacketsSent;\n const currentTotalPacketsLost: number = this.audioMetricsHistory[\n this.audioMetricsHistory.length - 1\n ].totalPacketsLost;\n\n // Iterate backwards in the metrics history, from the report immediately preceeding\n // the latest one, until we find the first metric report whose timestamp differs\n // from the latest report by atleast timeWindowMs\n for (let i = this.audioMetricsHistory.length - 2; i >= 0; i--) {\n if (\n latestReceiverReportTimestampMs - this.audioMetricsHistory[i].timestampMs >=\n timeWindowMs\n ) {\n const lossDelta = currentTotalPacketsLost - this.audioMetricsHistory[i].totalPacketsLost;\n const sentDelta = currentTotalPacketsSent - this.audioMetricsHistory[i].totalPacketsSent;\n const lossPercent = 100 * (lossDelta / sentDelta);\n return Math.max(0, Math.min(lossPercent, 100));\n }\n }\n // If we are here, we don't have enough entries in history\n // to calculate the loss for the given time window\n return 0;\n }\n\n private shouldUpdateAudioRedWorkerEncodings(\n currentTimestampMs: number,\n newNumRedundantEncodings: number\n ): boolean {\n // If newNumRedundantEncodings is the same as the current\n // then we don't need to send a message to the red worker.\n if (this.currentNumRedundantEncodings === newNumRedundantEncodings) {\n this.maybeResetHoldDownTimer(currentTimestampMs);\n return false;\n }\n // If newNumRedundantEncodings is less than the current\n // check if we've cleared the hold down time and only\n // then allow the update to be sent to the red worker\n if (\n newNumRedundantEncodings < this.currentNumRedundantEncodings &&\n currentTimestampMs - this.lastRedHolddownTimerStartTimestampMs < this.audioRedHoldDownTimeMs\n ) {\n return false;\n }\n this.currentNumRedundantEncodings = newNumRedundantEncodings;\n this.maybeResetHoldDownTimer(currentTimestampMs);\n return true;\n }\n\n addRedundantAudioRecoveryMetricsObserver(observer: RedundantAudioRecoveryMetricsObserver): void {\n this.redMetricsObservers.add(observer);\n }\n\n removeRedundantAudioRecoveryMetricsObserver(\n observer: RedundantAudioRecoveryMetricsObserver\n ): void {\n this.redMetricsObservers.delete(observer);\n }\n}\n","'use strict';\n\nvar $Object = require('es-object-atoms');\n\n/** @type {import('./Object.getPrototypeOf')} */\nmodule.exports = $Object.getPrototypeOf || null;\n","// Top level file is just a mixin of submodules & constants\n'use strict';\n\nconst { Deflate, deflate, deflateRaw, gzip } = require('./lib/deflate');\n\nconst { Inflate, inflate, inflateRaw, ungzip } = require('./lib/inflate');\n\nconst constants = require('./lib/zlib/constants');\n\nmodule.exports.Deflate = Deflate;\nmodule.exports.deflate = deflate;\nmodule.exports.deflateRaw = deflateRaw;\nmodule.exports.gzip = gzip;\nmodule.exports.Inflate = Inflate;\nmodule.exports.inflate = inflate;\nmodule.exports.inflateRaw = inflateRaw;\nmodule.exports.ungzip = ungzip;\nmodule.exports.constants = constants;\n","'use strict';\n\n//This file contains the ES6 extensions to the core Promises/A+ API\n\nvar Promise = require('./core.js');\n\nmodule.exports = Promise;\n\n/* Static Functions */\n\nvar TRUE = valuePromise(true);\nvar FALSE = valuePromise(false);\nvar NULL = valuePromise(null);\nvar UNDEFINED = valuePromise(undefined);\nvar ZERO = valuePromise(0);\nvar EMPTYSTRING = valuePromise('');\n\nfunction valuePromise(value) {\n var p = new Promise(Promise._D);\n p._y = 1;\n p._z = value;\n return p;\n}\nPromise.resolve = function (value) {\n if (value instanceof Promise) return value;\n\n if (value === null) return NULL;\n if (value === undefined) return UNDEFINED;\n if (value === true) return TRUE;\n if (value === false) return FALSE;\n if (value === 0) return ZERO;\n if (value === '') return EMPTYSTRING;\n\n if (typeof value === 'object' || typeof value === 'function') {\n try {\n var then = value.then;\n if (typeof then === 'function') {\n return new Promise(then.bind(value));\n }\n } catch (ex) {\n return new Promise(function (resolve, reject) {\n reject(ex);\n });\n }\n }\n return valuePromise(value);\n};\n\nvar iterableToArray = function (iterable) {\n if (typeof Array.from === 'function') {\n // ES2015+, iterables exist\n iterableToArray = Array.from;\n return Array.from(iterable);\n }\n\n // ES5, only arrays and array-likes exist\n iterableToArray = function (x) { return Array.prototype.slice.call(x); };\n return Array.prototype.slice.call(iterable);\n}\n\nPromise.all = function (arr) {\n var args = iterableToArray(arr);\n\n return new Promise(function (resolve, reject) {\n if (args.length === 0) return resolve([]);\n var remaining = args.length;\n function res(i, val) {\n if (val && (typeof val === 'object' || typeof val === 'function')) {\n if (val instanceof Promise && val.then === Promise.prototype.then) {\n while (val._y === 3) {\n val = val._z;\n }\n if (val._y === 1) return res(i, val._z);\n if (val._y === 2) reject(val._z);\n val.then(function (val) {\n res(i, val);\n }, reject);\n return;\n } else {\n var then = val.then;\n if (typeof then === 'function') {\n var p = new Promise(then.bind(val));\n p.then(function (val) {\n res(i, val);\n }, reject);\n return;\n }\n }\n }\n args[i] = val;\n if (--remaining === 0) {\n resolve(args);\n }\n }\n for (var i = 0; i < args.length; i++) {\n res(i, args[i]);\n }\n });\n};\n\nfunction onSettledFulfill(value) {\n return { status: 'fulfilled', value: value };\n}\nfunction onSettledReject(reason) {\n return { status: 'rejected', reason: reason };\n}\nfunction mapAllSettled(item) {\n if(item && (typeof item === 'object' || typeof item === 'function')){\n if(item instanceof Promise && item.then === Promise.prototype.then){\n return item.then(onSettledFulfill, onSettledReject);\n }\n var then = item.then;\n if (typeof then === 'function') {\n return new Promise(then.bind(item)).then(onSettledFulfill, onSettledReject)\n }\n }\n\n return onSettledFulfill(item);\n}\nPromise.allSettled = function (iterable) {\n return Promise.all(iterableToArray(iterable).map(mapAllSettled));\n};\n\nPromise.reject = function (value) {\n return new Promise(function (resolve, reject) {\n reject(value);\n });\n};\n\nPromise.race = function (values) {\n return new Promise(function (resolve, reject) {\n iterableToArray(values).forEach(function(value){\n Promise.resolve(value).then(resolve, reject);\n });\n });\n};\n\n/* Prototype Methods */\n\nPromise.prototype['catch'] = function (onRejected) {\n return this.then(null, onRejected);\n};\n\nfunction getAggregateError(errors){\n if(typeof AggregateError === 'function'){\n return new AggregateError(errors,'All promises were rejected');\n }\n\n var error = new Error('All promises were rejected');\n\n error.name = 'AggregateError';\n error.errors = errors;\n\n return error;\n}\n\nPromise.any = function promiseAny(values) {\n return new Promise(function(resolve, reject) {\n var promises = iterableToArray(values);\n var hasResolved = false;\n var rejectionReasons = [];\n\n function resolveOnce(value) {\n if (!hasResolved) {\n hasResolved = true;\n resolve(value);\n }\n }\n\n function rejectionCheck(reason) {\n rejectionReasons.push(reason);\n\n if (rejectionReasons.length === promises.length) {\n reject(getAggregateError(rejectionReasons));\n }\n }\n\n if(promises.length === 0){\n reject(getAggregateError(rejectionReasons));\n } else {\n promises.forEach(function(value){\n Promise.resolve(value).then(resolveOnce, rejectionCheck);\n });\n }\n });\n};\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['elastictranscoder'] = {};\nAWS.ElasticTranscoder = Service.defineService('elastictranscoder', ['2012-09-25']);\nObject.defineProperty(apiLoader.services['elastictranscoder'], '2012-09-25', {\n get: function get() {\n var model = require('../apis/elastictranscoder-2012-09-25.min.json');\n model.paginators = require('../apis/elastictranscoder-2012-09-25.paginators.json').pagination;\n model.waiters = require('../apis/elastictranscoder-2012-09-25.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.ElasticTranscoder;\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\n// Using an enum here to make sure we can expand on future features\nenum PrefetchOn {\n Connect = 'connect',\n}\n\nexport default PrefetchOn;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['redshift'] = {};\nAWS.Redshift = Service.defineService('redshift', ['2012-12-01']);\nObject.defineProperty(apiLoader.services['redshift'], '2012-12-01', {\n get: function get() {\n var model = require('../apis/redshift-2012-12-01.min.json');\n model.paginators = require('../apis/redshift-2012-12-01.paginators.json').pagination;\n model.waiters = require('../apis/redshift-2012-12-01.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.Redshift;\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { Destroyable } from '../destroyable/Destroyable';\nimport IntervalScheduler from '../scheduler/IntervalScheduler';\nimport Log from './Log';\nimport Logger from './Logger';\nimport LogLevel from './LogLevel';\nimport POSTLoggerOptions from './POSTLoggerOptions';\n\n/**\n * `POSTLogger` publishes log messages in batches to a URL\n * supplied during its construction.\n *\n * Be sure to call {@link POSTLogger.destroy} when you're done\n * with the logger in order to avoid leaks.\n */\nexport default class POSTLogger implements Logger, Destroyable {\n private static readonly BATCH_SIZE = 85;\n private static readonly INTERVAL_MS = 2000;\n private url: string;\n private batchSize: number;\n private eventListener: undefined | (() => void);\n private headers: Record;\n private intervalMs: number;\n private intervalScheduler: IntervalScheduler;\n private logCapture: Log[] = [];\n private logLevel: LogLevel;\n private lock = false;\n private sequenceNumber: number = 0;\n metadata: Record;\n\n constructor(options: POSTLoggerOptions) {\n const {\n url,\n batchSize = POSTLogger.BATCH_SIZE,\n intervalMs = POSTLogger.INTERVAL_MS,\n logLevel = LogLevel.WARN,\n metadata,\n headers,\n } = options;\n this.url = url;\n this.batchSize = batchSize;\n this.intervalMs = intervalMs;\n this.logLevel = logLevel;\n this.metadata = metadata;\n this.headers = headers;\n\n this.start();\n\n this.eventListener = () => {\n this.stop();\n };\n\n this.addEventListener();\n }\n\n addEventListener(): void {\n if (!this.eventListener || !('window' in global) || !window.addEventListener) {\n return;\n }\n window.addEventListener('unload', this.eventListener);\n }\n\n removeEventListener(): void {\n if (!this.eventListener || !('window' in global) || !window.removeEventListener) {\n return;\n }\n window.removeEventListener('unload', this.eventListener);\n }\n\n debug(debugFunction: string | (() => string)): void {\n if (LogLevel.DEBUG < this.logLevel) {\n return;\n }\n\n if (typeof debugFunction === 'string') {\n this.log(LogLevel.DEBUG, debugFunction);\n } else if (debugFunction) {\n this.log(LogLevel.DEBUG, debugFunction());\n } else {\n this.log(LogLevel.DEBUG, '' + debugFunction);\n }\n }\n\n info(msg: string): void {\n this.log(LogLevel.INFO, msg);\n }\n\n warn(msg: string): void {\n this.log(LogLevel.WARN, msg);\n }\n\n error(msg: string): void {\n this.log(LogLevel.ERROR, msg);\n }\n\n setLogLevel(logLevel: LogLevel): void {\n this.logLevel = logLevel;\n }\n\n getLogLevel(): LogLevel {\n return this.logLevel;\n }\n\n getLogCaptureSize(): number {\n return this.logCapture.length;\n }\n\n private start(): void {\n this.addEventListener();\n this.intervalScheduler = new IntervalScheduler(this.intervalMs);\n this.intervalScheduler.start(async () => {\n if (this.lock === true || this.getLogCaptureSize() === 0) {\n return;\n }\n this.lock = true;\n const batch = this.logCapture.slice(0, this.batchSize);\n const body = this.makeRequestBody(batch);\n try {\n const response = await fetch(this.url, {\n method: 'POST',\n body,\n ...(this.headers\n ? {\n headers: this.headers,\n }\n : {}),\n });\n if (response.status === 200) {\n this.logCapture = this.logCapture.slice(batch.length);\n }\n } catch (error) {\n console.warn('[POSTLogger] ' + error.message);\n } finally {\n this.lock = false;\n }\n });\n }\n\n private stop(): void {\n // Clean up to avoid resource leaks.\n this.intervalScheduler?.stop();\n this.intervalScheduler = undefined;\n this.removeEventListener();\n\n const body = this.makeRequestBody(this.logCapture);\n navigator.sendBeacon(this.url, body);\n }\n\n /**\n * Permanently clean up the logger. A new logger must be created to\n * resume logging.\n */\n async destroy(): Promise {\n this.stop();\n this.metadata = undefined;\n this.headers = undefined;\n this.logCapture = [];\n this.sequenceNumber = 0;\n this.lock = false;\n this.batchSize = 0;\n this.intervalMs = 0;\n this.url = undefined;\n }\n\n private makeRequestBody(batch: Log[]): string {\n return JSON.stringify({\n ...this.metadata,\n logs: batch,\n });\n }\n\n private log(type: LogLevel, msg: string): void {\n if (type < this.logLevel) {\n return;\n }\n const now = Date.now();\n\n // Handle undefined.\n this.logCapture.push(new Log(this.sequenceNumber, msg, now, LogLevel[type]));\n this.sequenceNumber += 1;\n }\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport AudioNodeSubgraph from './AudioNodeSubgraph';\nimport Device from './Device';\n\n/**\n * This class simplifies the process of defining a transform device that\n * does not modify its input device constraints, and provides only a single audio node\n * to apply transforms.\n *\n * Subclass `SingleNodeAudioTransformDevice`, implementing `createSingleAudioNode`.\n */\nexport default abstract class SingleNodeAudioTransformDevice {\n protected node: T | undefined;\n\n constructor(protected inner: Device) {}\n\n async mute(_muted: boolean): Promise {}\n\n /**\n * `stop` should be called by the application to free any resources associated\n * with the device (e.g., workers).\n *\n * After this is called, the device should be discarded.\n */\n async stop(): Promise {\n this.node?.disconnect();\n }\n\n /**\n * Return the inner {@link Device} that the device controller should select as part\n * of the application of this `AudioTransformDevice`.\n */\n async intrinsicDevice(): Promise {\n return this.inner;\n }\n\n /**\n * Optionally return a pair of `AudioNode`s that should be connected to the applied inner\n * device. The two nodes can be the same, indicating the smallest possible subgraph.\n *\n * @param context The `AudioContext` to use when instantiating the nodes.\n */\n async createAudioNode(context: AudioContext): Promise {\n this.node?.disconnect();\n this.node = await this.createSingleAudioNode(context);\n return {\n start: this.node,\n end: this.node,\n };\n }\n\n // Implement this.\n abstract createSingleAudioNode(context: AudioContext): Promise;\n}\n","'use strict';\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.es/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n var len = toIntegerOrInfinity(argument);\n return len > 0 ? min(len, 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n","\"use strict\";\r\n\r\n/**\r\n * A minimal UTF8 implementation for number arrays.\r\n * @memberof util\r\n * @namespace\r\n */\r\nvar utf8 = exports;\r\n\r\n/**\r\n * Calculates the UTF8 byte length of a string.\r\n * @param {string} string String\r\n * @returns {number} Byte length\r\n */\r\nutf8.length = function utf8_length(string) {\r\n var len = 0,\r\n c = 0;\r\n for (var i = 0; i < string.length; ++i) {\r\n c = string.charCodeAt(i);\r\n if (c < 128)\r\n len += 1;\r\n else if (c < 2048)\r\n len += 2;\r\n else if ((c & 0xFC00) === 0xD800 && (string.charCodeAt(i + 1) & 0xFC00) === 0xDC00) {\r\n ++i;\r\n len += 4;\r\n } else\r\n len += 3;\r\n }\r\n return len;\r\n};\r\n\r\n/**\r\n * Reads UTF8 bytes as a string.\r\n * @param {Uint8Array} buffer Source buffer\r\n * @param {number} start Source start\r\n * @param {number} end Source end\r\n * @returns {string} String read\r\n */\r\nutf8.read = function utf8_read(buffer, start, end) {\r\n var len = end - start;\r\n if (len < 1)\r\n return \"\";\r\n var parts = null,\r\n chunk = [],\r\n i = 0, // char offset\r\n t; // temporary\r\n while (start < end) {\r\n t = buffer[start++];\r\n if (t < 128)\r\n chunk[i++] = t;\r\n else if (t > 191 && t < 224)\r\n chunk[i++] = (t & 31) << 6 | buffer[start++] & 63;\r\n else if (t > 239 && t < 365) {\r\n t = ((t & 7) << 18 | (buffer[start++] & 63) << 12 | (buffer[start++] & 63) << 6 | buffer[start++] & 63) - 0x10000;\r\n chunk[i++] = 0xD800 + (t >> 10);\r\n chunk[i++] = 0xDC00 + (t & 1023);\r\n } else\r\n chunk[i++] = (t & 15) << 12 | (buffer[start++] & 63) << 6 | buffer[start++] & 63;\r\n if (i > 8191) {\r\n (parts || (parts = [])).push(String.fromCharCode.apply(String, chunk));\r\n i = 0;\r\n }\r\n }\r\n if (parts) {\r\n if (i)\r\n parts.push(String.fromCharCode.apply(String, chunk.slice(0, i)));\r\n return parts.join(\"\");\r\n }\r\n return String.fromCharCode.apply(String, chunk.slice(0, i));\r\n};\r\n\r\n/**\r\n * Writes a string as UTF8 bytes.\r\n * @param {string} string Source string\r\n * @param {Uint8Array} buffer Destination buffer\r\n * @param {number} offset Destination offset\r\n * @returns {number} Bytes written\r\n */\r\nutf8.write = function utf8_write(string, buffer, offset) {\r\n var start = offset,\r\n c1, // character 1\r\n c2; // character 2\r\n for (var i = 0; i < string.length; ++i) {\r\n c1 = string.charCodeAt(i);\r\n if (c1 < 128) {\r\n buffer[offset++] = c1;\r\n } else if (c1 < 2048) {\r\n buffer[offset++] = c1 >> 6 | 192;\r\n buffer[offset++] = c1 & 63 | 128;\r\n } else if ((c1 & 0xFC00) === 0xD800 && ((c2 = string.charCodeAt(i + 1)) & 0xFC00) === 0xDC00) {\r\n c1 = 0x10000 + ((c1 & 0x03FF) << 10) + (c2 & 0x03FF);\r\n ++i;\r\n buffer[offset++] = c1 >> 18 | 240;\r\n buffer[offset++] = c1 >> 12 & 63 | 128;\r\n buffer[offset++] = c1 >> 6 & 63 | 128;\r\n buffer[offset++] = c1 & 63 | 128;\r\n } else {\r\n buffer[offset++] = c1 >> 12 | 224;\r\n buffer[offset++] = c1 >> 6 & 63 | 128;\r\n buffer[offset++] = c1 & 63 | 128;\r\n }\r\n }\r\n return offset - start;\r\n};\r\n","'use strict';\nvar $ = require('../internals/export');\nvar SetHelpers = require('../internals/set-helpers');\nvar createCollectionOf = require('../internals/collection-of');\n\n// `Set.of` method\n// https://tc39.github.io/proposal-setmap-offrom/#sec-set.of\n$({ target: 'Set', stat: true, forced: true }, {\n of: createCollectionOf(SetHelpers.Set, SetHelpers.add, false)\n});\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this-clause');\nvar aCallable = require('../internals/a-callable');\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar bind = uncurryThis(uncurryThis.bind);\n\n// optional / simple context binding\nmodule.exports = function (fn, that) {\n aCallable(fn);\n return that === undefined ? fn : NATIVE_BIND ? bind(fn, that) : function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","'use strict';\n\nvar replace = String.prototype.replace;\nvar percentTwenties = /%20/g;\n\nvar Format = {\n RFC1738: 'RFC1738',\n RFC3986: 'RFC3986'\n};\n\nmodule.exports = {\n 'default': Format.RFC3986,\n formatters: {\n RFC1738: function (value) {\n return replace.call(value, percentTwenties, '+');\n },\n RFC3986: function (value) {\n return String(value);\n }\n },\n RFC1738: Format.RFC1738,\n RFC3986: Format.RFC3986\n};\n","// Currently in sync with Node.js lib/internal/util/types.js\n// https://github.com/nodejs/node/commit/112cc7c27551254aa2b17098fb774867f05ed0d9\n\n'use strict';\n\nvar isArgumentsObject = require('is-arguments');\nvar isGeneratorFunction = require('is-generator-function');\nvar whichTypedArray = require('which-typed-array');\nvar isTypedArray = require('is-typed-array');\n\nfunction uncurryThis(f) {\n return f.call.bind(f);\n}\n\nvar BigIntSupported = typeof BigInt !== 'undefined';\nvar SymbolSupported = typeof Symbol !== 'undefined';\n\nvar ObjectToString = uncurryThis(Object.prototype.toString);\n\nvar numberValue = uncurryThis(Number.prototype.valueOf);\nvar stringValue = uncurryThis(String.prototype.valueOf);\nvar booleanValue = uncurryThis(Boolean.prototype.valueOf);\n\nif (BigIntSupported) {\n var bigIntValue = uncurryThis(BigInt.prototype.valueOf);\n}\n\nif (SymbolSupported) {\n var symbolValue = uncurryThis(Symbol.prototype.valueOf);\n}\n\nfunction checkBoxedPrimitive(value, prototypeValueOf) {\n if (typeof value !== 'object') {\n return false;\n }\n try {\n prototypeValueOf(value);\n return true;\n } catch(e) {\n return false;\n }\n}\n\nexports.isArgumentsObject = isArgumentsObject;\nexports.isGeneratorFunction = isGeneratorFunction;\nexports.isTypedArray = isTypedArray;\n\n// Taken from here and modified for better browser support\n// https://github.com/sindresorhus/p-is-promise/blob/cda35a513bda03f977ad5cde3a079d237e82d7ef/index.js\nfunction isPromise(input) {\n\treturn (\n\t\t(\n\t\t\ttypeof Promise !== 'undefined' &&\n\t\t\tinput instanceof Promise\n\t\t) ||\n\t\t(\n\t\t\tinput !== null &&\n\t\t\ttypeof input === 'object' &&\n\t\t\ttypeof input.then === 'function' &&\n\t\t\ttypeof input.catch === 'function'\n\t\t)\n\t);\n}\nexports.isPromise = isPromise;\n\nfunction isArrayBufferView(value) {\n if (typeof ArrayBuffer !== 'undefined' && ArrayBuffer.isView) {\n return ArrayBuffer.isView(value);\n }\n\n return (\n isTypedArray(value) ||\n isDataView(value)\n );\n}\nexports.isArrayBufferView = isArrayBufferView;\n\n\nfunction isUint8Array(value) {\n return whichTypedArray(value) === 'Uint8Array';\n}\nexports.isUint8Array = isUint8Array;\n\nfunction isUint8ClampedArray(value) {\n return whichTypedArray(value) === 'Uint8ClampedArray';\n}\nexports.isUint8ClampedArray = isUint8ClampedArray;\n\nfunction isUint16Array(value) {\n return whichTypedArray(value) === 'Uint16Array';\n}\nexports.isUint16Array = isUint16Array;\n\nfunction isUint32Array(value) {\n return whichTypedArray(value) === 'Uint32Array';\n}\nexports.isUint32Array = isUint32Array;\n\nfunction isInt8Array(value) {\n return whichTypedArray(value) === 'Int8Array';\n}\nexports.isInt8Array = isInt8Array;\n\nfunction isInt16Array(value) {\n return whichTypedArray(value) === 'Int16Array';\n}\nexports.isInt16Array = isInt16Array;\n\nfunction isInt32Array(value) {\n return whichTypedArray(value) === 'Int32Array';\n}\nexports.isInt32Array = isInt32Array;\n\nfunction isFloat32Array(value) {\n return whichTypedArray(value) === 'Float32Array';\n}\nexports.isFloat32Array = isFloat32Array;\n\nfunction isFloat64Array(value) {\n return whichTypedArray(value) === 'Float64Array';\n}\nexports.isFloat64Array = isFloat64Array;\n\nfunction isBigInt64Array(value) {\n return whichTypedArray(value) === 'BigInt64Array';\n}\nexports.isBigInt64Array = isBigInt64Array;\n\nfunction isBigUint64Array(value) {\n return whichTypedArray(value) === 'BigUint64Array';\n}\nexports.isBigUint64Array = isBigUint64Array;\n\nfunction isMapToString(value) {\n return ObjectToString(value) === '[object Map]';\n}\nisMapToString.working = (\n typeof Map !== 'undefined' &&\n isMapToString(new Map())\n);\n\nfunction isMap(value) {\n if (typeof Map === 'undefined') {\n return false;\n }\n\n return isMapToString.working\n ? isMapToString(value)\n : value instanceof Map;\n}\nexports.isMap = isMap;\n\nfunction isSetToString(value) {\n return ObjectToString(value) === '[object Set]';\n}\nisSetToString.working = (\n typeof Set !== 'undefined' &&\n isSetToString(new Set())\n);\nfunction isSet(value) {\n if (typeof Set === 'undefined') {\n return false;\n }\n\n return isSetToString.working\n ? isSetToString(value)\n : value instanceof Set;\n}\nexports.isSet = isSet;\n\nfunction isWeakMapToString(value) {\n return ObjectToString(value) === '[object WeakMap]';\n}\nisWeakMapToString.working = (\n typeof WeakMap !== 'undefined' &&\n isWeakMapToString(new WeakMap())\n);\nfunction isWeakMap(value) {\n if (typeof WeakMap === 'undefined') {\n return false;\n }\n\n return isWeakMapToString.working\n ? isWeakMapToString(value)\n : value instanceof WeakMap;\n}\nexports.isWeakMap = isWeakMap;\n\nfunction isWeakSetToString(value) {\n return ObjectToString(value) === '[object WeakSet]';\n}\nisWeakSetToString.working = (\n typeof WeakSet !== 'undefined' &&\n isWeakSetToString(new WeakSet())\n);\nfunction isWeakSet(value) {\n return isWeakSetToString(value);\n}\nexports.isWeakSet = isWeakSet;\n\nfunction isArrayBufferToString(value) {\n return ObjectToString(value) === '[object ArrayBuffer]';\n}\nisArrayBufferToString.working = (\n typeof ArrayBuffer !== 'undefined' &&\n isArrayBufferToString(new ArrayBuffer())\n);\nfunction isArrayBuffer(value) {\n if (typeof ArrayBuffer === 'undefined') {\n return false;\n }\n\n return isArrayBufferToString.working\n ? isArrayBufferToString(value)\n : value instanceof ArrayBuffer;\n}\nexports.isArrayBuffer = isArrayBuffer;\n\nfunction isDataViewToString(value) {\n return ObjectToString(value) === '[object DataView]';\n}\nisDataViewToString.working = (\n typeof ArrayBuffer !== 'undefined' &&\n typeof DataView !== 'undefined' &&\n isDataViewToString(new DataView(new ArrayBuffer(1), 0, 1))\n);\nfunction isDataView(value) {\n if (typeof DataView === 'undefined') {\n return false;\n }\n\n return isDataViewToString.working\n ? isDataViewToString(value)\n : value instanceof DataView;\n}\nexports.isDataView = isDataView;\n\n// Store a copy of SharedArrayBuffer in case it's deleted elsewhere\nvar SharedArrayBufferCopy = typeof SharedArrayBuffer !== 'undefined' ? SharedArrayBuffer : undefined;\nfunction isSharedArrayBufferToString(value) {\n return ObjectToString(value) === '[object SharedArrayBuffer]';\n}\nfunction isSharedArrayBuffer(value) {\n if (typeof SharedArrayBufferCopy === 'undefined') {\n return false;\n }\n\n if (typeof isSharedArrayBufferToString.working === 'undefined') {\n isSharedArrayBufferToString.working = isSharedArrayBufferToString(new SharedArrayBufferCopy());\n }\n\n return isSharedArrayBufferToString.working\n ? isSharedArrayBufferToString(value)\n : value instanceof SharedArrayBufferCopy;\n}\nexports.isSharedArrayBuffer = isSharedArrayBuffer;\n\nfunction isAsyncFunction(value) {\n return ObjectToString(value) === '[object AsyncFunction]';\n}\nexports.isAsyncFunction = isAsyncFunction;\n\nfunction isMapIterator(value) {\n return ObjectToString(value) === '[object Map Iterator]';\n}\nexports.isMapIterator = isMapIterator;\n\nfunction isSetIterator(value) {\n return ObjectToString(value) === '[object Set Iterator]';\n}\nexports.isSetIterator = isSetIterator;\n\nfunction isGeneratorObject(value) {\n return ObjectToString(value) === '[object Generator]';\n}\nexports.isGeneratorObject = isGeneratorObject;\n\nfunction isWebAssemblyCompiledModule(value) {\n return ObjectToString(value) === '[object WebAssembly.Module]';\n}\nexports.isWebAssemblyCompiledModule = isWebAssemblyCompiledModule;\n\nfunction isNumberObject(value) {\n return checkBoxedPrimitive(value, numberValue);\n}\nexports.isNumberObject = isNumberObject;\n\nfunction isStringObject(value) {\n return checkBoxedPrimitive(value, stringValue);\n}\nexports.isStringObject = isStringObject;\n\nfunction isBooleanObject(value) {\n return checkBoxedPrimitive(value, booleanValue);\n}\nexports.isBooleanObject = isBooleanObject;\n\nfunction isBigIntObject(value) {\n return BigIntSupported && checkBoxedPrimitive(value, bigIntValue);\n}\nexports.isBigIntObject = isBigIntObject;\n\nfunction isSymbolObject(value) {\n return SymbolSupported && checkBoxedPrimitive(value, symbolValue);\n}\nexports.isSymbolObject = isSymbolObject;\n\nfunction isBoxedPrimitive(value) {\n return (\n isNumberObject(value) ||\n isStringObject(value) ||\n isBooleanObject(value) ||\n isBigIntObject(value) ||\n isSymbolObject(value)\n );\n}\nexports.isBoxedPrimitive = isBoxedPrimitive;\n\nfunction isAnyArrayBuffer(value) {\n return typeof Uint8Array !== 'undefined' && (\n isArrayBuffer(value) ||\n isSharedArrayBuffer(value)\n );\n}\nexports.isAnyArrayBuffer = isAnyArrayBuffer;\n\n['isProxy', 'isExternal', 'isModuleNamespaceObject'].forEach(function(method) {\n Object.defineProperty(exports, method, {\n enumerable: false,\n value: function() {\n throw new Error(method + ' is not supported in userland');\n }\n });\n});\n","\"use strict\";\n\n// Use the fastest means possible to execute a task in its own turn, with\n// priority over other events including IO, animation, reflow, and redraw\n// events in browsers.\n//\n// An exception thrown by a task will permanently interrupt the processing of\n// subsequent tasks. The higher level `asap` function ensures that if an\n// exception is thrown by a task, that the task queue will continue flushing as\n// soon as possible, but if you use `rawAsap` directly, you are responsible to\n// either ensure that no exceptions are thrown from your task, or to manually\n// call `rawAsap.requestFlush` if an exception is thrown.\nmodule.exports = rawAsap;\nfunction rawAsap(task) {\n if (!queue.length) {\n requestFlush();\n flushing = true;\n }\n // Equivalent to push, but avoids a function call.\n queue[queue.length] = task;\n}\n\nvar queue = [];\n// Once a flush has been requested, no further calls to `requestFlush` are\n// necessary until the next `flush` completes.\nvar flushing = false;\n// `requestFlush` is an implementation-specific method that attempts to kick\n// off a `flush` event as quickly as possible. `flush` will attempt to exhaust\n// the event queue before yielding to the browser's own event loop.\nvar requestFlush;\n// The position of the next task to execute in the task queue. This is\n// preserved between calls to `flush` so that it can be resumed if\n// a task throws an exception.\nvar index = 0;\n// If a task schedules additional tasks recursively, the task queue can grow\n// unbounded. To prevent memory exhaustion, the task queue will periodically\n// truncate already-completed tasks.\nvar capacity = 1024;\n\n// The flush function processes all tasks that have been scheduled with\n// `rawAsap` unless and until one of those tasks throws an exception.\n// If a task throws an exception, `flush` ensures that its state will remain\n// consistent and will resume where it left off when called again.\n// However, `flush` does not make any arrangements to be called again if an\n// exception is thrown.\nfunction flush() {\n while (index < queue.length) {\n var currentIndex = index;\n // Advance the index before calling the task. This ensures that we will\n // begin flushing on the next task the task throws an error.\n index = index + 1;\n queue[currentIndex].call();\n // Prevent leaking memory for long chains of recursive calls to `asap`.\n // If we call `asap` within tasks scheduled by `asap`, the queue will\n // grow, but to avoid an O(n) walk for every task we execute, we don't\n // shift tasks off the queue after they have been executed.\n // Instead, we periodically shift 1024 tasks off the queue.\n if (index > capacity) {\n // Manually shift all values starting at the index back to the\n // beginning of the queue.\n for (var scan = 0, newLength = queue.length - index; scan < newLength; scan++) {\n queue[scan] = queue[scan + index];\n }\n queue.length -= index;\n index = 0;\n }\n }\n queue.length = 0;\n index = 0;\n flushing = false;\n}\n\n// `requestFlush` is implemented using a strategy based on data collected from\n// every available SauceLabs Selenium web driver worker at time of writing.\n// https://docs.google.com/spreadsheets/d/1mG-5UYGup5qxGdEMWkhP6BWCz053NUb2E1QoUTU16uA/edit#gid=783724593\n\n// Safari 6 and 6.1 for desktop, iPad, and iPhone are the only browsers that\n// have WebKitMutationObserver but not un-prefixed MutationObserver.\n// Must use `global` or `self` instead of `window` to work in both frames and web\n// workers. `global` is a provision of Browserify, Mr, Mrs, or Mop.\n\n/* globals self */\nvar scope = typeof global !== \"undefined\" ? global : self;\nvar BrowserMutationObserver = scope.MutationObserver || scope.WebKitMutationObserver;\n\n// MutationObservers are desirable because they have high priority and work\n// reliably everywhere they are implemented.\n// They are implemented in all modern browsers.\n//\n// - Android 4-4.3\n// - Chrome 26-34\n// - Firefox 14-29\n// - Internet Explorer 11\n// - iPad Safari 6-7.1\n// - iPhone Safari 7-7.1\n// - Safari 6-7\nif (typeof BrowserMutationObserver === \"function\") {\n requestFlush = makeRequestCallFromMutationObserver(flush);\n\n// MessageChannels are desirable because they give direct access to the HTML\n// task queue, are implemented in Internet Explorer 10, Safari 5.0-1, and Opera\n// 11-12, and in web workers in many engines.\n// Although message channels yield to any queued rendering and IO tasks, they\n// would be better than imposing the 4ms delay of timers.\n// However, they do not work reliably in Internet Explorer or Safari.\n\n// Internet Explorer 10 is the only browser that has setImmediate but does\n// not have MutationObservers.\n// Although setImmediate yields to the browser's renderer, it would be\n// preferrable to falling back to setTimeout since it does not have\n// the minimum 4ms penalty.\n// Unfortunately there appears to be a bug in Internet Explorer 10 Mobile (and\n// Desktop to a lesser extent) that renders both setImmediate and\n// MessageChannel useless for the purposes of ASAP.\n// https://github.com/kriskowal/q/issues/396\n\n// Timers are implemented universally.\n// We fall back to timers in workers in most engines, and in foreground\n// contexts in the following browsers.\n// However, note that even this simple case requires nuances to operate in a\n// broad spectrum of browsers.\n//\n// - Firefox 3-13\n// - Internet Explorer 6-9\n// - iPad Safari 4.3\n// - Lynx 2.8.7\n} else {\n requestFlush = makeRequestCallFromTimer(flush);\n}\n\n// `requestFlush` requests that the high priority event queue be flushed as\n// soon as possible.\n// This is useful to prevent an error thrown in a task from stalling the event\n// queue if the exception handled by Node.js’s\n// `process.on(\"uncaughtException\")` or by a domain.\nrawAsap.requestFlush = requestFlush;\n\n// To request a high priority event, we induce a mutation observer by toggling\n// the text of a text node between \"1\" and \"-1\".\nfunction makeRequestCallFromMutationObserver(callback) {\n var toggle = 1;\n var observer = new BrowserMutationObserver(callback);\n var node = document.createTextNode(\"\");\n observer.observe(node, {characterData: true});\n return function requestCall() {\n toggle = -toggle;\n node.data = toggle;\n };\n}\n\n// The message channel technique was discovered by Malte Ubl and was the\n// original foundation for this library.\n// http://www.nonblocking.io/2011/06/windownexttick.html\n\n// Safari 6.0.5 (at least) intermittently fails to create message ports on a\n// page's first load. Thankfully, this version of Safari supports\n// MutationObservers, so we don't need to fall back in that case.\n\n// function makeRequestCallFromMessageChannel(callback) {\n// var channel = new MessageChannel();\n// channel.port1.onmessage = callback;\n// return function requestCall() {\n// channel.port2.postMessage(0);\n// };\n// }\n\n// For reasons explained above, we are also unable to use `setImmediate`\n// under any circumstances.\n// Even if we were, there is another bug in Internet Explorer 10.\n// It is not sufficient to assign `setImmediate` to `requestFlush` because\n// `setImmediate` must be called *by name* and therefore must be wrapped in a\n// closure.\n// Never forget.\n\n// function makeRequestCallFromSetImmediate(callback) {\n// return function requestCall() {\n// setImmediate(callback);\n// };\n// }\n\n// Safari 6.0 has a problem where timers will get lost while the user is\n// scrolling. This problem does not impact ASAP because Safari 6.0 supports\n// mutation observers, so that implementation is used instead.\n// However, if we ever elect to use timers in Safari, the prevalent work-around\n// is to add a scroll event listener that calls for a flush.\n\n// `setTimeout` does not call the passed callback if the delay is less than\n// approximately 7 in web workers in Firefox 8 through 18, and sometimes not\n// even then.\n\nfunction makeRequestCallFromTimer(callback) {\n return function requestCall() {\n // We dispatch a timeout with a specified delay of 0 for engines that\n // can reliably accommodate that request. This will usually be snapped\n // to a 4 milisecond delay, but once we're flushing, there's no delay\n // between events.\n var timeoutHandle = setTimeout(handleTimer, 0);\n // However, since this timer gets frequently dropped in Firefox\n // workers, we enlist an interval handle that will try to fire\n // an event 20 times per second until it succeeds.\n var intervalHandle = setInterval(handleTimer, 50);\n\n function handleTimer() {\n // Whichever timer succeeds will cancel both timers and\n // execute the callback.\n clearTimeout(timeoutHandle);\n clearInterval(intervalHandle);\n callback();\n }\n };\n}\n\n// This is for `asap.js` only.\n// Its name will be periodically randomized to break any code that depends on\n// its existence.\nrawAsap.makeRequestCallFromTimer = makeRequestCallFromTimer;\n\n// ASAP was originally a nextTick shim included in Q. This was factored out\n// into this ASAP package. It was later adapted to RSVP which made further\n// amendments. These decisions, particularly to marginalize MessageChannel and\n// to capture the MutationObserver implementation in a closure, were integrated\n// back into ASAP proper.\n// https://github.com/tildeio/rsvp.js/blob/cddf7232546a9cf858524b75cde6f9edf72620a7/lib/rsvp/asap.js\n","'use strict';\n\nvar callBound = require('call-bound');\nvar isRegex = require('is-regex');\n\nvar $exec = callBound('RegExp.prototype.exec');\nvar $TypeError = require('es-errors/type');\n\n/** @type {import('.')} */\nmodule.exports = function regexTester(regex) {\n\tif (!isRegex(regex)) {\n\t\tthrow new $TypeError('`regex` must be a RegExp');\n\t}\n\treturn function test(s) {\n\t\treturn $exec(regex, s) !== null;\n\t};\n};\n","'use strict';\nvar trunc = require('../internals/math-trunc');\n\n// `ToIntegerOrInfinity` abstract operation\n// https://tc39.es/ecma262/#sec-tointegerorinfinity\nmodule.exports = function (argument) {\n var number = +argument;\n // eslint-disable-next-line no-self-compare -- NaN check\n return number !== number || number === 0 ? 0 : trunc(number);\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar iterateSimple = require('../internals/iterate-simple');\nvar SetHelpers = require('../internals/set-helpers');\n\nvar Set = SetHelpers.Set;\nvar SetPrototype = SetHelpers.proto;\nvar forEach = uncurryThis(SetPrototype.forEach);\nvar keys = uncurryThis(SetPrototype.keys);\nvar next = keys(new Set()).next;\n\nmodule.exports = function (set, fn, interruptible) {\n return interruptible ? iterateSimple({ iterator: keys(set), next: next }, fn) : forEach(set, fn);\n};\n","module.exports = require('./lib/axios');","var hashUtils = require('./browserHashUtils');\n\n/**\n * @api private\n */\nfunction Hmac(hashCtor, secret) {\n this.hash = new hashCtor();\n this.outer = new hashCtor();\n\n var inner = bufferFromSecret(hashCtor, secret);\n var outer = new Uint8Array(hashCtor.BLOCK_SIZE);\n outer.set(inner);\n\n for (var i = 0; i < hashCtor.BLOCK_SIZE; i++) {\n inner[i] ^= 0x36;\n outer[i] ^= 0x5c;\n }\n\n this.hash.update(inner);\n this.outer.update(outer);\n\n // Zero out the copied key buffer.\n for (var i = 0; i < inner.byteLength; i++) {\n inner[i] = 0;\n }\n}\n\n/**\n * @api private\n */\nmodule.exports = exports = Hmac;\n\nHmac.prototype.update = function (toHash) {\n if (hashUtils.isEmptyData(toHash) || this.error) {\n return this;\n }\n\n try {\n this.hash.update(hashUtils.convertToBuffer(toHash));\n } catch (e) {\n this.error = e;\n }\n\n return this;\n};\n\nHmac.prototype.digest = function (encoding) {\n if (!this.outer.finished) {\n this.outer.update(this.hash.digest());\n }\n\n return this.outer.digest(encoding);\n};\n\nfunction bufferFromSecret(hashCtor, secret) {\n var input = hashUtils.convertToBuffer(secret);\n if (input.byteLength > hashCtor.BLOCK_SIZE) {\n var bufferHash = new hashCtor;\n bufferHash.update(input);\n input = bufferHash.digest();\n }\n var buffer = new Uint8Array(hashCtor.BLOCK_SIZE);\n buffer.set(input);\n return buffer;\n}\n","'use strict';\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIndexedObject($this);\n var length = lengthOfArrayLike(O);\n if (length === 0) return !IS_INCLUDES && -1;\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare -- NaN check\n if (IS_INCLUDES && el !== el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare -- NaN check\n if (value !== value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) {\n if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.includes` method\n // https://tc39.es/ecma262/#sec-array.prototype.includes\n includes: createMethod(true),\n // `Array.prototype.indexOf` method\n // https://tc39.es/ecma262/#sec-array.prototype.indexof\n indexOf: createMethod(false)\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar aMap = require('../internals/a-map');\nvar remove = require('../internals/map-helpers').remove;\n\n// `Map.prototype.deleteAll` method\n// https://github.com/tc39/proposal-collection-methods\n$({ target: 'Map', proto: true, real: true, forced: true }, {\n deleteAll: function deleteAll(/* ...elements */) {\n var collection = aMap(this);\n var allDeleted = true;\n var wasDeleted;\n for (var k = 0, len = arguments.length; k < len; k++) {\n wasDeleted = remove(collection, arguments[k]);\n allDeleted = allDeleted && wasDeleted;\n } return !!allDeleted;\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar bind = require('../internals/function-bind-context');\nvar aMap = require('../internals/a-map');\nvar iterate = require('../internals/map-iterate');\n\n// `Map.prototype.findKey` method\n// https://github.com/tc39/proposal-collection-methods\n$({ target: 'Map', proto: true, real: true, forced: true }, {\n findKey: function findKey(callbackfn /* , thisArg */) {\n var map = aMap(this);\n var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n var result = iterate(map, function (value, key) {\n if (boundFunction(value, key, map)) return { key: key };\n }, true);\n return result && result.key;\n }\n});\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { Sha256 } from '@aws-crypto/sha256-js';\nimport { toHex } from '@aws-sdk/util-hex-encoding';\n\nimport Versioning from '../versioning/Versioning';\nimport SigV4 from './SigV4';\n\nexport default class DefaultSigV4 implements SigV4 {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\n constructor(public chimeClient: any) {}\n\n private makeTwoDigits(n: number): string {\n /* istanbul ignore if */\n /* istanbul ignore else */\n if (n > 9) {\n return n.toString();\n } else {\n return '0' + n.toString();\n }\n }\n\n private hmac(data: string | Uint8Array, secret?: string | Uint8Array): Promise {\n const hash = new Sha256(secret);\n hash.update(data);\n return hash.digest();\n }\n\n private getDateTimeString(): string {\n const d = new Date();\n\n return (\n d.getUTCFullYear() +\n this.makeTwoDigits(d.getUTCMonth() + 1) +\n this.makeTwoDigits(d.getUTCDate()) +\n 'T' +\n this.makeTwoDigits(d.getUTCHours()) +\n this.makeTwoDigits(d.getUTCMinutes()) +\n this.makeTwoDigits(d.getUTCSeconds()) +\n 'Z'\n );\n }\n\n private getDateString(dateTimeString: string): string {\n return dateTimeString.substring(0, dateTimeString.indexOf('T'));\n }\n\n private async getSignatureKey(\n key: string,\n date: string,\n regionName: string,\n serviceName: string\n ): Promise {\n const kDate = await this.hmac(date, 'AWS4' + key);\n const kRegion = await this.hmac(regionName, kDate);\n const kService = await this.hmac(serviceName, kRegion);\n const kSigning = await this.hmac('aws4_request', kService);\n return kSigning;\n }\n\n async signURL(\n method: string,\n scheme: string,\n serviceName: string,\n hostname: string,\n path: string,\n payload: string,\n queryParams: Map | null\n ): Promise {\n const now = this.getDateTimeString();\n const today = this.getDateString(now);\n\n const algorithm = 'AWS4-HMAC-SHA256';\n let region = '';\n // in AWS SDK v3 region is a function\n if (this.chimeClient.config.region instanceof Function) {\n region = await this.chimeClient.config.region();\n } else {\n region = this.chimeClient.config.region;\n }\n\n const signedHeaders = 'host';\n\n const canonicalHeaders = 'host:' + hostname.toLowerCase() + '\\n';\n const credentialScope = today + '/' + region + '/' + serviceName + '/' + 'aws4_request';\n let credentials = undefined;\n // in AWS SDK v3 credentials is a function\n if (this.chimeClient.config.credentials instanceof Function) {\n credentials = await this.chimeClient.config.credentials();\n } else {\n credentials = this.chimeClient.config.credentials;\n }\n\n let params: Map = new Map();\n params.set('X-Amz-Algorithm', [algorithm]);\n params.set('X-Amz-Credential', [\n encodeURIComponent(credentials.accessKeyId + '/' + credentialScope),\n ]);\n params.set('X-Amz-Date', [now]);\n params.set('X-Amz-Expires', ['10']);\n params.set('X-Amz-SignedHeaders', ['host']);\n if (credentials.sessionToken) {\n params.set('X-Amz-Security-Token', [encodeURIComponent(credentials.sessionToken)]);\n }\n params.set(Versioning.X_AMZN_VERSION, [encodeURIComponent(Versioning.sdkVersion)]);\n params.set(Versioning.X_AMZN_USER_AGENT, [\n encodeURIComponent(Versioning.sdkUserAgentLowResolution),\n ]);\n\n queryParams?.forEach((values: string[], key: string) => {\n const encodedKey = encodeURIComponent(key);\n values.sort().forEach((value: string) => {\n if (!params.has(encodedKey)) {\n params.set(encodedKey, []);\n }\n params.get(encodedKey).push(encodeURIComponent(value));\n });\n });\n\n let canonicalQuerystring = '';\n params = new Map([...params.entries()].sort());\n params.forEach((values: string[], key: string) => {\n values.forEach(value => {\n if (canonicalQuerystring.length) {\n canonicalQuerystring += '&';\n }\n canonicalQuerystring += key + '=' + value;\n });\n });\n\n const canonicalRequest =\n method +\n '\\n' +\n path +\n '\\n' +\n canonicalQuerystring +\n '\\n' +\n canonicalHeaders +\n '\\n' +\n signedHeaders +\n '\\n' +\n toHex(await this.hmac(payload));\n\n const hashedCanonicalRequest = toHex(await this.hmac(canonicalRequest));\n\n const stringToSign =\n 'AWS4-HMAC-SHA256\\n' +\n now +\n '\\n' +\n today +\n '/' +\n region +\n '/' +\n serviceName +\n '/aws4_request\\n' +\n hashedCanonicalRequest;\n\n const signingKey = await this.getSignatureKey(\n credentials.secretAccessKey,\n today,\n region,\n serviceName\n );\n\n const signature = toHex(await this.hmac(stringToSign, signingKey));\n\n const finalParams = canonicalQuerystring + '&X-Amz-Signature=' + signature;\n\n return scheme + '://' + hostname + path + '?' + finalParams;\n }\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport ApplicationMetadata from '../applicationmetadata/ApplicationMetadata';\nimport ConnectionHealthPolicyConfiguration from '../connectionhealthpolicy/ConnectionHealthPolicyConfiguration';\nimport VideoQualitySettings from '../devicecontroller/VideoQualitySettings';\nimport { toLowerCasePropertyNames } from '../utils/Utils';\nimport VideoDownlinkBandwidthPolicy from '../videodownlinkbandwidthpolicy/VideoDownlinkBandwidthPolicy';\nimport VideoUplinkBandwidthPolicy from '../videouplinkbandwidthpolicy/VideoUplinkBandwidthPolicy';\nimport MeetingFeatures from './MeetingFeatures';\nimport MeetingSessionCredentials from './MeetingSessionCredentials';\nimport MeetingSessionURLs from './MeetingSessionURLs';\n\n/**\n * [[MeetingSessionConfiguration]] contains the information necessary to start\n * a session.\n */\nexport default class MeetingSessionConfiguration {\n /**\n * The id of the meeting the session is joining.\n */\n meetingId: string | null = null;\n\n /**\n * The external meeting id of the meeting the session is joining.\n */\n externalMeetingId: string | null = null;\n\n /**\n * The credentials used to authenticate the session.\n */\n credentials: MeetingSessionCredentials | null = null;\n\n /**\n * The URLs the session uses to reach the meeting service.\n */\n urls: MeetingSessionURLs | null = null;\n\n /**\n * Maximum amount of time in milliseconds to allow for connecting.\n */\n connectionTimeoutMs: number = 15000;\n\n /**\n * Maximum amount of time in milliseconds to wait for the current attendee to be present\n * after initial connection.\n */\n attendeePresenceTimeoutMs: number = 0;\n\n /**\n * Configuration for connection health policies: reconnection, unusable audio warning connection,\n * and signal strength bars connection.\n */\n connectionHealthPolicyConfiguration: ConnectionHealthPolicyConfiguration = new ConnectionHealthPolicyConfiguration();\n\n /**\n * Maximum amount of time in milliseconds to allow for reconnecting.\n */\n reconnectTimeoutMs = 120 * 1000;\n\n /**\n * Fixed wait amount in milliseconds between reconnecting attempts.\n */\n reconnectFixedWaitMs = 0;\n\n /**\n * The short back-off time in milliseconds between reconnecting attempts.\n */\n reconnectShortBackOffMs = 1 * 1000;\n\n /**\n * The long back-off time in milliseconds between reconnecting attempts.\n */\n reconnectLongBackOffMs = 5 * 1000;\n\n /**\n * Feature flag to enable Simulcast\n */\n enableSimulcastForUnifiedPlanChromiumBasedBrowsers: boolean = false;\n\n /**\n * Feature flag to enable scalable video coding (SVC) on supported browsers, which is determined by `BrowserBehavior.supportsScalableVideoCoding`\n */\n enableSVC: boolean = false;\n\n /**\n * Video downlink bandwidth policy to determine which remote videos\n * are subscribed to.\n */\n videoDownlinkBandwidthPolicy: VideoDownlinkBandwidthPolicy = null;\n\n /**\n * Video uplink bandwidth policy to determine the bandwidth constraints\n * of the local video.\n */\n videoUplinkBandwidthPolicy: VideoUplinkBandwidthPolicy = null;\n\n /**\n * Builder's application metadata such as application name or version.\n * This is an optional parameter. Please check [[ApplicationMetadata]] for more information.\n */\n applicationMetadata: ApplicationMetadata;\n\n /**\n * Keep the last frame of the video when a remote video is paused via the pauseVideoTile API.\n * This is done by not clearing the srcObject property of the videoElement.\n */\n keepLastFrameWhenPaused: boolean = false;\n\n /**\n * The Amazon Chime SDK media backends currently send a keyframe request to content share senders every 10 seconds to help mitigate\n * decoder issues on receivers. This flag requests the backed to disable that feature.\n *\n * Setting this flag to true may or may not lead to issues with content received for your application, as it depends on browsers used\n * and whether they have fixed previous issues leading to the introduction of this periodic keyframe request. It will however\n * reduce CPU consumption on content senders which no longer have to generate as many expensive keyframes.\n */\n disablePeriodicKeyframeRequestOnContentSender: boolean = false;\n\n /**\n * Additional features in the meeting\n */\n meetingFeatures: MeetingFeatures = new MeetingFeatures();\n\n /**\n * Constructs a MeetingSessionConfiguration optionally with a chime:CreateMeeting and\n * chime:CreateAttendee response. You can pass in either a JSON object containing the\n * responses, or a JSON object containing the information in the Meeting and Attendee\n * root-level fields. Examples:\n *\n * ```\n * const configuration = new MeetingSessionConfiguration({\n * \"Meeting\": {\n * \"MeetingId\": \"...\",\n * \"MediaPlacement\": {\n * \"AudioHostUrl\": \"...\",\n * \"SignalingUrl\": \"...\",\n * \"TurnControlUrl\": \"...\"\n * },\n * \"MeetingFeatures\":{\n * \"Audio\":\"...\",\n * \"Video\":\"....\",\n * \"Content\":\"...\",\n * \"Attendee\":\"...\"\n * },\n * }\n * }\n * }, {\n * \"Attendee\": {\n * \"ExternalUserId\": \"...\",\n * \"AttendeeId\": \"...\",\n * \"JoinToken\": \"...\"\n * }\n * });\n * ```\n *\n * ```\n * const configuration = new MeetingSessionConfiguration({\n * \"MeetingId\": \"...\",\n * \"MediaPlacement\": {\n * \"AudioHostUrl\": \"...\",\n * \"SignalingUrl\": \"...\",\n * \"TurnControlUrl\": \"...\"\n * }\n * }, {\n * \"ExternalUserId\": \"...\",\n * \"AttendeeId\": \"...\",\n * \"JoinToken\": \"...\"\n * });\n * ```\n */\n constructor(createMeetingResponse?: any, createAttendeeResponse?: any) { // eslint-disable-line\n if (createMeetingResponse) {\n createMeetingResponse = toLowerCasePropertyNames(createMeetingResponse);\n if (createMeetingResponse.meeting) {\n createMeetingResponse = createMeetingResponse.meeting;\n }\n this.meetingId = createMeetingResponse.meetingid;\n this.externalMeetingId = createMeetingResponse.externalmeetingid;\n this.urls = new MeetingSessionURLs();\n this.urls.audioHostURL = createMeetingResponse.mediaplacement.audiohosturl;\n this.urls.signalingURL = createMeetingResponse.mediaplacement.signalingurl;\n this.urls.turnControlURL = createMeetingResponse.mediaplacement.turncontrolurl;\n if (createMeetingResponse.mediaplacement.eventingestionurl) {\n this.urls.eventIngestionURL = createMeetingResponse.mediaplacement.eventingestionurl;\n }\n\n const parseVideoResolution = (\n resolution: string,\n defaultValue: VideoQualitySettings\n ): VideoQualitySettings => {\n switch (resolution) {\n case 'None':\n return VideoQualitySettings.VideoDisabled;\n case 'HD':\n return VideoQualitySettings.VideoResolutionHD;\n case 'FHD':\n return VideoQualitySettings.VideoResolutionFHD;\n case 'UHD':\n return VideoQualitySettings.VideoResolutionUHD;\n default:\n return defaultValue;\n }\n };\n if (\n createMeetingResponse.meetingfeatures?.video !== undefined ||\n createMeetingResponse.meetingfeatures?.content !== undefined\n ) {\n const videoMaxResolution =\n createMeetingResponse.meetingfeatures.video === undefined\n ? 'HD'\n : createMeetingResponse.meetingfeatures.video.maxresolution;\n const contentMaxResolution =\n createMeetingResponse.meetingfeatures.content === undefined\n ? 'FHD'\n : createMeetingResponse.meetingfeatures.content.maxresolution;\n this.meetingFeatures = new MeetingFeatures(\n parseVideoResolution(videoMaxResolution, VideoQualitySettings.VideoResolutionHD),\n parseVideoResolution(contentMaxResolution, VideoQualitySettings.VideoResolutionFHD)\n );\n }\n }\n if (createAttendeeResponse) {\n createAttendeeResponse = toLowerCasePropertyNames(createAttendeeResponse);\n if (createAttendeeResponse.attendee) {\n createAttendeeResponse = createAttendeeResponse.attendee;\n }\n this.credentials = new MeetingSessionCredentials();\n this.credentials.attendeeId = createAttendeeResponse.attendeeid;\n this.credentials.externalUserId = createAttendeeResponse.externaluserid;\n this.credentials.joinToken = createAttendeeResponse.jointoken;\n }\n }\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","\"use strict\";\nvar util = exports;\n\n// used to return a Promise where callback is omitted\nutil.asPromise = require(\"@protobufjs/aspromise\");\n\n// converts to / from base64 encoded strings\nutil.base64 = require(\"@protobufjs/base64\");\n\n// base class of rpc.Service\nutil.EventEmitter = require(\"@protobufjs/eventemitter\");\n\n// float handling accross browsers\nutil.float = require(\"@protobufjs/float\");\n\n// requires modules optionally and hides the call from bundlers\nutil.inquire = require(\"@protobufjs/inquire\");\n\n// converts to / from utf8 encoded strings\nutil.utf8 = require(\"@protobufjs/utf8\");\n\n// provides a node-like buffer pool in the browser\nutil.pool = require(\"@protobufjs/pool\");\n\n// utility to work with the low and high bits of a 64 bit value\nutil.LongBits = require(\"./longbits\");\n\n/**\n * Whether running within node or not.\n * @memberof util\n * @type {boolean}\n */\nutil.isNode = Boolean(typeof global !== \"undefined\"\n && global\n && global.process\n && global.process.versions\n && global.process.versions.node);\n\n/**\n * Global object reference.\n * @memberof util\n * @type {Object}\n */\nutil.global = util.isNode && global\n || typeof window !== \"undefined\" && window\n || typeof self !== \"undefined\" && self\n || this; // eslint-disable-line no-invalid-this\n\n/**\n * An immuable empty array.\n * @memberof util\n * @type {Array.<*>}\n * @const\n */\nutil.emptyArray = Object.freeze ? Object.freeze([]) : /* istanbul ignore next */ []; // used on prototypes\n\n/**\n * An immutable empty object.\n * @type {Object}\n * @const\n */\nutil.emptyObject = Object.freeze ? Object.freeze({}) : /* istanbul ignore next */ {}; // used on prototypes\n\n/**\n * Tests if the specified value is an integer.\n * @function\n * @param {*} value Value to test\n * @returns {boolean} `true` if the value is an integer\n */\nutil.isInteger = Number.isInteger || /* istanbul ignore next */ function isInteger(value) {\n return typeof value === \"number\" && isFinite(value) && Math.floor(value) === value;\n};\n\n/**\n * Tests if the specified value is a string.\n * @param {*} value Value to test\n * @returns {boolean} `true` if the value is a string\n */\nutil.isString = function isString(value) {\n return typeof value === \"string\" || value instanceof String;\n};\n\n/**\n * Tests if the specified value is a non-null object.\n * @param {*} value Value to test\n * @returns {boolean} `true` if the value is a non-null object\n */\nutil.isObject = function isObject(value) {\n return value && typeof value === \"object\";\n};\n\n/**\n * Checks if a property on a message is considered to be present.\n * This is an alias of {@link util.isSet}.\n * @function\n * @param {Object} obj Plain object or message instance\n * @param {string} prop Property name\n * @returns {boolean} `true` if considered to be present, otherwise `false`\n */\nutil.isset =\n\n/**\n * Checks if a property on a message is considered to be present.\n * @param {Object} obj Plain object or message instance\n * @param {string} prop Property name\n * @returns {boolean} `true` if considered to be present, otherwise `false`\n */\nutil.isSet = function isSet(obj, prop) {\n var value = obj[prop];\n if (value != null && obj.hasOwnProperty(prop)) // eslint-disable-line eqeqeq, no-prototype-builtins\n return typeof value !== \"object\" || (Array.isArray(value) ? value.length : Object.keys(value).length) > 0;\n return false;\n};\n\n/**\n * Any compatible Buffer instance.\n * This is a minimal stand-alone definition of a Buffer instance. The actual type is that exported by node's typings.\n * @interface Buffer\n * @extends Uint8Array\n */\n\n/**\n * Node's Buffer class if available.\n * @type {Constructor}\n */\nutil.Buffer = (function() {\n try {\n var Buffer = util.inquire(\"buffer\").Buffer;\n // refuse to use non-node buffers if not explicitly assigned (perf reasons):\n return Buffer.prototype.utf8Write ? Buffer : /* istanbul ignore next */ null;\n } catch (e) {\n /* istanbul ignore next */\n return null;\n }\n})();\n\n// Internal alias of or polyfull for Buffer.from.\nutil._Buffer_from = null;\n\n// Internal alias of or polyfill for Buffer.allocUnsafe.\nutil._Buffer_allocUnsafe = null;\n\n/**\n * Creates a new buffer of whatever type supported by the environment.\n * @param {number|number[]} [sizeOrArray=0] Buffer size or number array\n * @returns {Uint8Array|Buffer} Buffer\n */\nutil.newBuffer = function newBuffer(sizeOrArray) {\n /* istanbul ignore next */\n return typeof sizeOrArray === \"number\"\n ? util.Buffer\n ? util._Buffer_allocUnsafe(sizeOrArray)\n : new util.Array(sizeOrArray)\n : util.Buffer\n ? util._Buffer_from(sizeOrArray)\n : typeof Uint8Array === \"undefined\"\n ? sizeOrArray\n : new Uint8Array(sizeOrArray);\n};\n\n/**\n * Array implementation used in the browser. `Uint8Array` if supported, otherwise `Array`.\n * @type {Constructor}\n */\nutil.Array = typeof Uint8Array !== \"undefined\" ? Uint8Array /* istanbul ignore next */ : Array;\n\n/**\n * Any compatible Long instance.\n * This is a minimal stand-alone definition of a Long instance. The actual type is that exported by long.js.\n * @interface Long\n * @property {number} low Low bits\n * @property {number} high High bits\n * @property {boolean} unsigned Whether unsigned or not\n */\n\n/**\n * Long.js's Long class if available.\n * @type {Constructor}\n */\nutil.Long = /* istanbul ignore next */ util.global.dcodeIO && /* istanbul ignore next */ util.global.dcodeIO.Long\n || /* istanbul ignore next */ util.global.Long\n || util.inquire(\"long\");\n\n/**\n * Regular expression used to verify 2 bit (`bool`) map keys.\n * @type {RegExp}\n * @const\n */\nutil.key2Re = /^true|false|0|1$/;\n\n/**\n * Regular expression used to verify 32 bit (`int32` etc.) map keys.\n * @type {RegExp}\n * @const\n */\nutil.key32Re = /^-?(?:0|[1-9][0-9]*)$/;\n\n/**\n * Regular expression used to verify 64 bit (`int64` etc.) map keys.\n * @type {RegExp}\n * @const\n */\nutil.key64Re = /^(?:[\\\\x00-\\\\xff]{8}|-?(?:0|[1-9][0-9]*))$/;\n\n/**\n * Converts a number or long to an 8 characters long hash string.\n * @param {Long|number} value Value to convert\n * @returns {string} Hash\n */\nutil.longToHash = function longToHash(value) {\n return value\n ? util.LongBits.from(value).toHash()\n : util.LongBits.zeroHash;\n};\n\n/**\n * Converts an 8 characters long hash string to a long or number.\n * @param {string} hash Hash\n * @param {boolean} [unsigned=false] Whether unsigned or not\n * @returns {Long|number} Original value\n */\nutil.longFromHash = function longFromHash(hash, unsigned) {\n var bits = util.LongBits.fromHash(hash);\n if (util.Long)\n return util.Long.fromBits(bits.lo, bits.hi, unsigned);\n return bits.toNumber(Boolean(unsigned));\n};\n\n/**\n * Merges the properties of the source object into the destination object.\n * @memberof util\n * @param {Object.} dst Destination object\n * @param {Object.} src Source object\n * @param {boolean} [ifNotSet=false] Merges only if the key is not already set\n * @returns {Object.} Destination object\n */\nfunction merge(dst, src, ifNotSet) { // used by converters\n for (var keys = Object.keys(src), i = 0; i < keys.length; ++i)\n if (dst[keys[i]] === undefined || !ifNotSet)\n dst[keys[i]] = src[keys[i]];\n return dst;\n}\n\nutil.merge = merge;\n\n/**\n * Converts the first character of a string to lower case.\n * @param {string} str String to convert\n * @returns {string} Converted string\n */\nutil.lcFirst = function lcFirst(str) {\n return str.charAt(0).toLowerCase() + str.substring(1);\n};\n\n/**\n * Creates a custom error constructor.\n * @memberof util\n * @param {string} name Error name\n * @returns {Constructor} Custom error constructor\n */\nfunction newError(name) {\n\n function CustomError(message, properties) {\n\n if (!(this instanceof CustomError))\n return new CustomError(message, properties);\n\n // Error.call(this, message);\n // ^ just returns a new error instance because the ctor can be called as a function\n\n Object.defineProperty(this, \"message\", { get: function() { return message; } });\n\n /* istanbul ignore next */\n if (Error.captureStackTrace) // node\n Error.captureStackTrace(this, CustomError);\n else\n Object.defineProperty(this, \"stack\", { value: new Error().stack || \"\" });\n\n if (properties)\n merge(this, properties);\n }\n\n CustomError.prototype = Object.create(Error.prototype, {\n constructor: {\n value: CustomError,\n writable: true,\n enumerable: false,\n configurable: true,\n },\n name: {\n get: function get() { return name; },\n set: undefined,\n enumerable: false,\n // configurable: false would accurately preserve the behavior of\n // the original, but I'm guessing that was not intentional.\n // For an actual error subclass, this property would\n // be configurable.\n configurable: true,\n },\n toString: {\n value: function value() { return this.name + \": \" + this.message; },\n writable: true,\n enumerable: false,\n configurable: true,\n },\n });\n\n return CustomError;\n}\n\nutil.newError = newError;\n\n/**\n * Constructs a new protocol error.\n * @classdesc Error subclass indicating a protocol specifc error.\n * @memberof util\n * @extends Error\n * @template T extends Message\n * @constructor\n * @param {string} message Error message\n * @param {Object.} [properties] Additional properties\n * @example\n * try {\n * MyMessage.decode(someBuffer); // throws if required fields are missing\n * } catch (e) {\n * if (e instanceof ProtocolError && e.instance)\n * console.log(\"decoded so far: \" + JSON.stringify(e.instance));\n * }\n */\nutil.ProtocolError = newError(\"ProtocolError\");\n\n/**\n * So far decoded message instance.\n * @name util.ProtocolError#instance\n * @type {Message}\n */\n\n/**\n * A OneOf getter as returned by {@link util.oneOfGetter}.\n * @typedef OneOfGetter\n * @type {function}\n * @returns {string|undefined} Set field name, if any\n */\n\n/**\n * Builds a getter for a oneof's present field name.\n * @param {string[]} fieldNames Field names\n * @returns {OneOfGetter} Unbound getter\n */\nutil.oneOfGetter = function getOneOf(fieldNames) {\n var fieldMap = {};\n for (var i = 0; i < fieldNames.length; ++i)\n fieldMap[fieldNames[i]] = 1;\n\n /**\n * @returns {string|undefined} Set field name, if any\n * @this Object\n * @ignore\n */\n return function() { // eslint-disable-line consistent-return\n for (var keys = Object.keys(this), i = keys.length - 1; i > -1; --i)\n if (fieldMap[keys[i]] === 1 && this[keys[i]] !== undefined && this[keys[i]] !== null)\n return keys[i];\n };\n};\n\n/**\n * A OneOf setter as returned by {@link util.oneOfSetter}.\n * @typedef OneOfSetter\n * @type {function}\n * @param {string|undefined} value Field name\n * @returns {undefined}\n */\n\n/**\n * Builds a setter for a oneof's present field name.\n * @param {string[]} fieldNames Field names\n * @returns {OneOfSetter} Unbound setter\n */\nutil.oneOfSetter = function setOneOf(fieldNames) {\n\n /**\n * @param {string} name Field name\n * @returns {undefined}\n * @this Object\n * @ignore\n */\n return function(name) {\n for (var i = 0; i < fieldNames.length; ++i)\n if (fieldNames[i] !== name)\n delete this[fieldNames[i]];\n };\n};\n\n/**\n * Default conversion options used for {@link Message#toJSON} implementations.\n *\n * These options are close to proto3's JSON mapping with the exception that internal types like Any are handled just like messages. More precisely:\n *\n * - Longs become strings\n * - Enums become string keys\n * - Bytes become base64 encoded strings\n * - (Sub-)Messages become plain objects\n * - Maps become plain objects with all string keys\n * - Repeated fields become arrays\n * - NaN and Infinity for float and double fields become strings\n *\n * @type {IConversionOptions}\n * @see https://developers.google.com/protocol-buffers/docs/proto3?hl=en#json\n */\nutil.toJSONOptions = {\n longs: String,\n enums: String,\n bytes: String,\n json: true\n};\n\n// Sets up buffer utility according to the environment (called in index-minimal)\nutil._configure = function() {\n var Buffer = util.Buffer;\n /* istanbul ignore if */\n if (!Buffer) {\n util._Buffer_from = util._Buffer_allocUnsafe = null;\n return;\n }\n // because node 4.x buffers are incompatible & immutable\n // see: https://github.com/dcodeIO/protobuf.js/pull/665\n util._Buffer_from = Buffer.from !== Uint8Array.from && Buffer.from ||\n /* istanbul ignore next */\n function Buffer_from(value, encoding) {\n return new Buffer(value, encoding);\n };\n util._Buffer_allocUnsafe = Buffer.allocUnsafe ||\n /* istanbul ignore next */\n function Buffer_allocUnsafe(size) {\n return new Buffer(size);\n };\n};\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n * @returns {string} The combined URL\n */\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = uncurryThis([].slice);\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport BackgroundFilterSpec from '../backgroundfilter/BackgroundFilterSpec';\nimport BackgroundBlurOptions from './BackgroundBlurOptions';\nimport BackgroundBlurProcessorProvided from './BackgroundBlurProcessorProvided';\nimport { BlurStrengthMapper } from './BackgroundBlurStrength';\n\n/**\n * The [[BackgroundBlurProcessorBuiltIn]] uses the browser's built-in capability to apply blurring to\n * the background image as apposed to [[BackgroundBlurProcessorProvided]] that uses WASM and\n * TensorFlow Lite to apply the blur.\n */\n\n/** @internal */\nexport default class BackgroundBlurProcessorBuiltIn extends BackgroundBlurProcessorProvided {\n private blurredImage: ImageData;\n private blurCanvas: HTMLCanvasElement = document.createElement('canvas') as HTMLCanvasElement;\n private blurCanvasCtx = this.blurCanvas.getContext('2d');\n\n /**\n * A constructor that will apply default values if spec and strength are not provided.\n * If no spec is provided the selfie segmentation model is used with default paths to CDN for the\n * worker and wasm files used to process each frame.\n * @param spec The spec defines the assets that will be used for adding background blur to a frame.\n * @param options How much blur to apply to a frame.\n */\n constructor(spec?: BackgroundFilterSpec, options?: BackgroundBlurOptions) {\n super(spec, options);\n\n this.blurCanvas.width = this.spec.model.input.width;\n this.blurCanvas.height = this.spec.model.input.height;\n this.logger.info('BackgroundBlur processor using builtin blur');\n }\n\n drawImageWithMask(inputCanvas: HTMLCanvasElement, mask: ImageData): void {\n // Mask will not be set until the worker has completed handling the predict event. Until the first frame is processed,\n // the whole frame will be blurred.\n const blurredImage = this.blurredImage;\n const { canvasCtx, targetCanvas } = this;\n const { width, height } = targetCanvas;\n\n if (!mask || !blurredImage) {\n canvasCtx.clearRect(0, 0, width, height);\n return;\n }\n\n const scaledCtx = this.scaledCanvas.getContext('2d');\n\n scaledCtx.putImageData(mask, 0, 0);\n this.blurCanvasCtx.putImageData(this.blurredImage, 0, 0);\n\n // draw the mask\n canvasCtx.save();\n canvasCtx.clearRect(0, 0, width, height);\n canvasCtx.drawImage(this.scaledCanvas, 0, 0, width, height);\n\n // Only overwrite existing pixels.\n canvasCtx.globalCompositeOperation = 'source-in';\n // draw image over mask...\n canvasCtx.drawImage(inputCanvas, 0, 0, width, height);\n\n // draw under person\n canvasCtx.globalCompositeOperation = 'destination-over';\n canvasCtx.drawImage(this.blurCanvas, 0, 0, width, height);\n canvasCtx.restore();\n }\n\n setBlurStrength(blurStrength: number): void {\n super.setBlurStrength(blurStrength);\n\n if (this.worker) {\n // live update\n this.modelInitialized = false;\n\n this.worker.postMessage({ msg: 'destroy' });\n\n const model = this.spec.model;\n this.worker.postMessage({\n msg: 'loadModel',\n payload: {\n modelUrl: model.path,\n inputHeight: model.input.height,\n inputWidth: model.input.width,\n inputChannels: 4,\n modelRangeMin: model.input.range[0],\n modelRangeMax: model.input.range[1],\n blurPixels: this.blurAmount,\n },\n });\n }\n }\n\n setBlurPixels(): void {\n // the blurred image is sized down to 144, regardless of what the canvas size is, so\n // we use the default blur strengths (540p)\n this.blurAmount = BlurStrengthMapper.getBlurAmount(this._blurStrength, { height: 540 });\n this.logger.info(`background blur amount set to ${this.blurAmount}`);\n }\n\n handleInitialize(msg: { payload: number }): void {\n this.logger.info(`received initialize message: ${this.stringify(msg)}`);\n if (!msg.payload) {\n this.logger.error('failed to initialize module');\n this.initWorkerPromise.reject(new Error('failed to initialize the module'));\n return;\n }\n\n const model = this.spec.model;\n this.worker.postMessage({\n msg: 'loadModel',\n payload: {\n modelUrl: model.path,\n inputHeight: model.input.height,\n inputWidth: model.input.width,\n inputChannels: 4,\n modelRangeMin: model.input.range[0],\n modelRangeMax: model.input.range[1],\n blurPixels: this.blurAmount,\n },\n });\n this.initWorkerPromise.resolve({});\n }\n\n handlePredict(msg: { payload: { blurOutput: ImageData; output: ImageData } }): void {\n this.blurredImage = msg.payload.blurOutput;\n super.handlePredict(msg);\n }\n\n async destroy(): Promise {\n super.destroy();\n this.blurCanvas?.remove();\n this.blurCanvas = undefined;\n }\n}\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['cloudwatchevents'] = {};\nAWS.CloudWatchEvents = Service.defineService('cloudwatchevents', ['2014-02-03*', '2015-10-07']);\nObject.defineProperty(apiLoader.services['cloudwatchevents'], '2015-10-07', {\n get: function get() {\n var model = require('../apis/events-2015-10-07.min.json');\n model.paginators = require('../apis/events-2015-10-07.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.CloudWatchEvents;\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nexport interface Eq {\n /**\n * Return true if the other value is exactly equal to this value.\n *\n * @param other the value against which to compare.\n */\n equals(other: this): boolean;\n}\n\nexport interface PartialOrd {\n /**\n * Compare this value to another, returning a relative value as documented by\n * [`Array.sort`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#description)\n *\n * @param other the value against which to compare.\n */\n partialCompare(other: this): number;\n}\n\nexport class Maybe {\n static of(value: T | null): MaybeProvider {\n return value === undefined || value === null ? None.of() : Some.of(value);\n }\n}\n\nexport interface MaybeProvider {\n readonly isSome: boolean;\n readonly isNone: boolean;\n\n /**\n * Transform the mapped element and return a new {@link MaybeProvider} with the result.\n *\n * @param f the function to use\n */\n map(f: (wrapped: T) => R): MaybeProvider;\n\n flatMap(f: (unwrapped: T) => MaybeProvider): MaybeProvider;\n\n get(): T;\n\n /**\n * Returns the some value or the provided default value.\n *\n * @param value the default value to use if this Maybe is none\n * @returns the default value or the some value\n */\n getOrElse(value: T): T;\n\n /**\n * Default value wrapped in MaybeProvider.\n *\n * @param value the value to wrap\n * @returns a new {@link MaybeProvider}\n */\n defaulting(value: T): MaybeProvider;\n}\n\nexport class Some implements MaybeProvider {\n readonly isSome: boolean = true;\n readonly isNone: boolean = false;\n\n private constructor(private value: T) {}\n\n map(f: (wrapped: T) => R): MaybeProvider {\n return Maybe.of(f(this.value));\n }\n\n flatMap(f: (unwrapped: T) => MaybeProvider): MaybeProvider {\n return f(this.value);\n }\n\n get(): T {\n return this.value;\n }\n\n getOrElse(_value: T): T {\n return this.value;\n }\n\n defaulting(value: T): MaybeProvider {\n return Maybe.of(this.getOrElse(value));\n }\n\n static of(value: T): MaybeProvider {\n if (value === null || value === undefined) {\n throw new Error('value is ${value}');\n }\n return new Some(value);\n }\n}\n\nexport class None implements MaybeProvider {\n readonly isSome: boolean = false;\n readonly isNone: boolean = true;\n\n private constructor() {}\n\n get(): T {\n throw new Error('value is null');\n }\n\n getOrElse(value: T): T {\n return value;\n }\n\n map(_f: (_wrapped: T) => R): MaybeProvider {\n return new None();\n }\n\n flatMap(_f: (_unwrapped: T) => MaybeProvider): MaybeProvider {\n return new None();\n }\n\n defaulting(value: T): MaybeProvider {\n return Maybe.of(this.getOrElse(value));\n }\n\n static of(): MaybeProvider {\n return new None();\n }\n}\n","/**\n * Cross-browser support for logging in a web application.\n *\n * @author David I. Lehn \n *\n * Copyright (c) 2008-2013 Digital Bazaar, Inc.\n */\nvar forge = require('./forge');\nrequire('./util');\n\n/* LOG API */\nmodule.exports = forge.log = forge.log || {};\n\n/**\n * Application logging system.\n *\n * Each logger level available as it's own function of the form:\n * forge.log.level(category, args...)\n * The category is an arbitrary string, and the args are the same as\n * Firebug's console.log API. By default the call will be output as:\n * 'LEVEL [category] , args[1], ...'\n * This enables proper % formatting via the first argument.\n * Each category is enabled by default but can be enabled or disabled with\n * the setCategoryEnabled() function.\n */\n// list of known levels\nforge.log.levels = [\n 'none', 'error', 'warning', 'info', 'debug', 'verbose', 'max'];\n// info on the levels indexed by name:\n// index: level index\n// name: uppercased display name\nvar sLevelInfo = {};\n// list of loggers\nvar sLoggers = [];\n/**\n * Standard console logger. If no console support is enabled this will\n * remain null. Check before using.\n */\nvar sConsoleLogger = null;\n\n// logger flags\n/**\n * Lock the level at the current value. Used in cases where user config may\n * set the level such that only critical messages are seen but more verbose\n * messages are needed for debugging or other purposes.\n */\nforge.log.LEVEL_LOCKED = (1 << 1);\n/**\n * Always call log function. By default, the logging system will check the\n * message level against logger.level before calling the log function. This\n * flag allows the function to do its own check.\n */\nforge.log.NO_LEVEL_CHECK = (1 << 2);\n/**\n * Perform message interpolation with the passed arguments. \"%\" style\n * fields in log messages will be replaced by arguments as needed. Some\n * loggers, such as Firebug, may do this automatically. The original log\n * message will be available as 'message' and the interpolated version will\n * be available as 'fullMessage'.\n */\nforge.log.INTERPOLATE = (1 << 3);\n\n// setup each log level\nfor(var i = 0; i < forge.log.levels.length; ++i) {\n var level = forge.log.levels[i];\n sLevelInfo[level] = {\n index: i,\n name: level.toUpperCase()\n };\n}\n\n/**\n * Message logger. Will dispatch a message to registered loggers as needed.\n *\n * @param message message object\n */\nforge.log.logMessage = function(message) {\n var messageLevelIndex = sLevelInfo[message.level].index;\n for(var i = 0; i < sLoggers.length; ++i) {\n var logger = sLoggers[i];\n if(logger.flags & forge.log.NO_LEVEL_CHECK) {\n logger.f(message);\n } else {\n // get logger level\n var loggerLevelIndex = sLevelInfo[logger.level].index;\n // check level\n if(messageLevelIndex <= loggerLevelIndex) {\n // message critical enough, call logger\n logger.f(logger, message);\n }\n }\n }\n};\n\n/**\n * Sets the 'standard' key on a message object to:\n * \"LEVEL [category] \" + message\n *\n * @param message a message log object\n */\nforge.log.prepareStandard = function(message) {\n if(!('standard' in message)) {\n message.standard =\n sLevelInfo[message.level].name +\n //' ' + +message.timestamp +\n ' [' + message.category + '] ' +\n message.message;\n }\n};\n\n/**\n * Sets the 'full' key on a message object to the original message\n * interpolated via % formatting with the message arguments.\n *\n * @param message a message log object.\n */\nforge.log.prepareFull = function(message) {\n if(!('full' in message)) {\n // copy args and insert message at the front\n var args = [message.message];\n args = args.concat([] || message['arguments']);\n // format the message\n message.full = forge.util.format.apply(this, args);\n }\n};\n\n/**\n * Applies both preparseStandard() and prepareFull() to a message object and\n * store result in 'standardFull'.\n *\n * @param message a message log object.\n */\nforge.log.prepareStandardFull = function(message) {\n if(!('standardFull' in message)) {\n // FIXME implement 'standardFull' logging\n forge.log.prepareStandard(message);\n message.standardFull = message.standard;\n }\n};\n\n// create log level functions\nif(true) {\n // levels for which we want functions\n var levels = ['error', 'warning', 'info', 'debug', 'verbose'];\n for(var i = 0; i < levels.length; ++i) {\n // wrap in a function to ensure proper level var is passed\n (function(level) {\n // create function for this level\n forge.log[level] = function(category, message/*, args...*/) {\n // convert arguments to real array, remove category and message\n var args = Array.prototype.slice.call(arguments).slice(2);\n // create message object\n // Note: interpolation and standard formatting is done lazily\n var msg = {\n timestamp: new Date(),\n level: level,\n category: category,\n message: message,\n 'arguments': args\n /*standard*/\n /*full*/\n /*fullMessage*/\n };\n // process this message\n forge.log.logMessage(msg);\n };\n })(levels[i]);\n }\n}\n\n/**\n * Creates a new logger with specified custom logging function.\n *\n * The logging function has a signature of:\n * function(logger, message)\n * logger: current logger\n * message: object:\n * level: level id\n * category: category\n * message: string message\n * arguments: Array of extra arguments\n * fullMessage: interpolated message and arguments if INTERPOLATE flag set\n *\n * @param logFunction a logging function which takes a log message object\n * as a parameter.\n *\n * @return a logger object.\n */\nforge.log.makeLogger = function(logFunction) {\n var logger = {\n flags: 0,\n f: logFunction\n };\n forge.log.setLevel(logger, 'none');\n return logger;\n};\n\n/**\n * Sets the current log level on a logger.\n *\n * @param logger the target logger.\n * @param level the new maximum log level as a string.\n *\n * @return true if set, false if not.\n */\nforge.log.setLevel = function(logger, level) {\n var rval = false;\n if(logger && !(logger.flags & forge.log.LEVEL_LOCKED)) {\n for(var i = 0; i < forge.log.levels.length; ++i) {\n var aValidLevel = forge.log.levels[i];\n if(level == aValidLevel) {\n // set level\n logger.level = level;\n rval = true;\n break;\n }\n }\n }\n\n return rval;\n};\n\n/**\n * Locks the log level at its current value.\n *\n * @param logger the target logger.\n * @param lock boolean lock value, default to true.\n */\nforge.log.lock = function(logger, lock) {\n if(typeof lock === 'undefined' || lock) {\n logger.flags |= forge.log.LEVEL_LOCKED;\n } else {\n logger.flags &= ~forge.log.LEVEL_LOCKED;\n }\n};\n\n/**\n * Adds a logger.\n *\n * @param logger the logger object.\n */\nforge.log.addLogger = function(logger) {\n sLoggers.push(logger);\n};\n\n// setup the console logger if possible, else create fake console.log\nif(typeof(console) !== 'undefined' && 'log' in console) {\n var logger;\n if(console.error && console.warn && console.info && console.debug) {\n // looks like Firebug-style logging is available\n // level handlers map\n var levelHandlers = {\n error: console.error,\n warning: console.warn,\n info: console.info,\n debug: console.debug,\n verbose: console.debug\n };\n var f = function(logger, message) {\n forge.log.prepareStandard(message);\n var handler = levelHandlers[message.level];\n // prepend standard message and concat args\n var args = [message.standard];\n args = args.concat(message['arguments'].slice());\n // apply to low-level console function\n handler.apply(console, args);\n };\n logger = forge.log.makeLogger(f);\n } else {\n // only appear to have basic console.log\n var f = function(logger, message) {\n forge.log.prepareStandardFull(message);\n console.log(message.standardFull);\n };\n logger = forge.log.makeLogger(f);\n }\n forge.log.setLevel(logger, 'debug');\n forge.log.addLogger(logger);\n sConsoleLogger = logger;\n} else {\n // define fake console.log to avoid potential script errors on\n // browsers that do not have console logging\n console = {\n log: function() {}\n };\n}\n\n/*\n * Check for logging control query vars in current URL.\n *\n * console.level=\n * Set's the console log level by name. Useful to override defaults and\n * allow more verbose logging before a user config is loaded.\n *\n * console.lock=\n * Lock the console log level at whatever level it is set at. This is run\n * after console.level is processed. Useful to force a level of verbosity\n * that could otherwise be limited by a user config.\n */\nif(sConsoleLogger !== null &&\n typeof window !== 'undefined' && window.location\n) {\n var query = new URL(window.location.href).searchParams;\n if(query.has('console.level')) {\n // set with last value\n forge.log.setLevel(\n sConsoleLogger, query.get('console.level').slice(-1)[0]);\n }\n if(query.has('console.lock')) {\n // set with last value\n var lock = query.get('console.lock').slice(-1)[0];\n if(lock == 'true') {\n forge.log.lock(sConsoleLogger);\n }\n }\n}\n\n// provide public access to console logger\nforge.log.consoleLogger = sConsoleLogger;\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport AudioVideoControllerState from '../audiovideocontroller/AudioVideoControllerState';\nimport DefaultBrowserBehavior from '../browserbehavior/DefaultBrowserBehavior';\nimport SDP from '../sdp/SDP';\nimport BaseTask from './BaseTask';\n\n/*\n * [[SetLocalDescriptionTask]] asynchronously calls [[setLocalDescription]] on peer connection.\n */\nexport default class SetLocalDescriptionTask extends BaseTask {\n protected taskName = 'SetLocalDescriptionTask';\n\n private cancelPromise: undefined | ((error: Error) => void);\n\n constructor(private context: AudioVideoControllerState) {\n super(context.logger);\n }\n\n cancel(): void {\n // Just in case. The baseCancel behavior should prevent this.\n /* istanbul ignore else */\n if (this.cancelPromise) {\n const error = new Error(`canceling ${this.name()}`);\n this.cancelPromise(error);\n delete this.cancelPromise;\n }\n }\n\n async run(): Promise {\n const peer = this.context.peer;\n const sdpOfferInit = this.context.sdpOfferInit;\n let sdp = sdpOfferInit.sdp;\n\n if (this.context.browserBehavior.supportsVideoLayersAllocationRtpHeaderExtension()) {\n // This will be negotiatiated with backend, and we will only use it to skip resubscribes\n // if we confirm support/negotiation via `RTCRtpTranceiver.sender.getParams`\n sdp = new SDP(sdp).withVideoLayersAllocationRtpHeaderExtension(this.context.previousSdpOffer)\n .sdp;\n }\n // We will remove the dependency descriptor RTP header extension after set if this branch is not hit, as\n // browsers will not remove it from the send section. We don't do it here, so that we don't lose track of\n // the header extension IDs being used when we store `this.context.previousSdpOffer`.\n if (\n this.context.browserBehavior.supportsDependencyDescriptorRtpHeaderExtension() &&\n this.context.videoUplinkBandwidthPolicy.wantsVideoDependencyDescriptorRtpHeaderExtension !==\n undefined &&\n this.context.videoUplinkBandwidthPolicy.wantsVideoDependencyDescriptorRtpHeaderExtension()\n ) {\n sdp = new SDP(sdp).withDependencyDescriptorRtpHeaderExtension(this.context.previousSdpOffer)\n .sdp;\n }\n if (new DefaultBrowserBehavior().requiresDisablingH264Encoding()) {\n sdp = new SDP(sdp).removeH264SupportFromSendSection().sdp;\n }\n\n // The default start bitrate is 300kbps. While this is a reasonable starting point with respect\n // to network adaptation, the encoding bitrate does not adjust as quickly as the estimate, which\n // can quickly max out on a clear network after a few seconds. Thus it will often take 10-25 seconds\n // for the encode bitrate/resolution to reach the intended value. The network adaptation detects issues quick enough\n // that raising it to 1000kbps is not much concern, on most networks the congestion controller\n // will react to network restrictions before the first keyframe is even generated!\n //\n // Note that this is also important with regards to content share with SVC enabled,\n // as we set content hint to `motion` as a workaround for the issue that Chrome cannot enable temporal\n // scalability for screen share https://bugs.chromium.org/p/chromium/issues/detail?id=1433486\n // As a side effect, content share may start at a low resolution and take a long time to adapt,\n // especially when there is limited motion on screen, if we do not set this slightly higher starting\n // bitrate.\n sdp = new SDP(sdp).withStartingVideoSendBitrate(1000).sdp;\n\n if (\n this.context.videoSendCodecPreferences !== undefined &&\n this.context.videoSendCodecPreferences.length > 0\n ) {\n sdp = new SDP(sdp).withVideoSendCodecPreferences(\n this.context.meetingSupportedVideoSendCodecPreferences !== undefined\n ? this.context.meetingSupportedVideoSendCodecPreferences\n : this.context.videoSendCodecPreferences\n ).sdp;\n }\n\n if (this.context.audioProfile) {\n sdp = new SDP(sdp).withAudioMaxAverageBitrate(this.context.audioProfile.audioBitrateBps).sdp;\n if (this.context.audioProfile.isStereo()) {\n sdp = new SDP(sdp).withStereoAudio().sdp;\n }\n\n if (this.context.audioProfile.hasRedundancyEnabled()) {\n const audioPayloadMap = new SDP(sdp).getAudioPayloadTypes();\n /* istanbul ignore else */\n if (\n this.context.transceiverController &&\n this.context.transceiverController.setAudioPayloadTypes\n ) {\n this.context.transceiverController.setAudioPayloadTypes(audioPayloadMap);\n }\n }\n }\n\n this.logger.debug(() => {\n return `local description is >>>${sdp}<<<`;\n });\n\n const sdpOffer: RTCSessionDescription = {\n type: 'offer',\n sdp: sdp,\n toJSON: null,\n };\n\n await new Promise(async (resolve, reject) => {\n this.cancelPromise = (error: Error) => {\n reject(error);\n };\n\n try {\n await peer.setLocalDescription(sdpOffer);\n resolve();\n } catch (error) {\n reject(error);\n } finally {\n delete this.cancelPromise;\n }\n });\n\n this.context.logger.info('set local description');\n }\n}\n","var util = require('./util');\nvar regionConfig = require('./region_config_data.json');\n\nfunction generateRegionPrefix(region) {\n if (!region) return null;\n var parts = region.split('-');\n if (parts.length < 3) return null;\n return parts.slice(0, parts.length - 2).join('-') + '-*';\n}\n\nfunction derivedKeys(service) {\n var region = service.config.region;\n var regionPrefix = generateRegionPrefix(region);\n var endpointPrefix = service.api.endpointPrefix;\n\n return [\n [region, endpointPrefix],\n [regionPrefix, endpointPrefix],\n [region, '*'],\n [regionPrefix, '*'],\n ['*', endpointPrefix],\n [region, 'internal-*'],\n ['*', '*']\n ].map(function(item) {\n return item[0] && item[1] ? item.join('/') : null;\n });\n}\n\nfunction applyConfig(service, config) {\n util.each(config, function(key, value) {\n if (key === 'globalEndpoint') return;\n if (service.config[key] === undefined || service.config[key] === null) {\n service.config[key] = value;\n }\n });\n}\n\nfunction configureEndpoint(service) {\n var keys = derivedKeys(service);\n var useFipsEndpoint = service.config.useFipsEndpoint;\n var useDualstackEndpoint = service.config.useDualstackEndpoint;\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n if (!key) continue;\n\n var rules = useFipsEndpoint\n ? useDualstackEndpoint\n ? regionConfig.dualstackFipsRules\n : regionConfig.fipsRules\n : useDualstackEndpoint\n ? regionConfig.dualstackRules\n : regionConfig.rules;\n\n if (Object.prototype.hasOwnProperty.call(rules, key)) {\n var config = rules[key];\n if (typeof config === 'string') {\n config = regionConfig.patterns[config];\n }\n\n // set global endpoint\n service.isGlobalEndpoint = !!config.globalEndpoint;\n if (config.signingRegion) {\n service.signingRegion = config.signingRegion;\n }\n\n // signature version\n if (!config.signatureVersion) {\n // Note: config is a global object and should not be mutated here.\n // However, we are retaining this line for backwards compatibility.\n // The non-v4 signatureVersion will be set in a copied object below.\n config.signatureVersion = 'v4';\n }\n\n var useBearer = (service.api && service.api.signatureVersion) === 'bearer';\n\n // merge config\n applyConfig(service, Object.assign(\n {},\n config,\n { signatureVersion: useBearer ? 'bearer' : config.signatureVersion }\n ));\n return;\n }\n }\n}\n\nfunction getEndpointSuffix(region) {\n var regionRegexes = {\n '^(us|eu|ap|sa|ca|me)\\\\-\\\\w+\\\\-\\\\d+$': 'amazonaws.com',\n '^cn\\\\-\\\\w+\\\\-\\\\d+$': 'amazonaws.com.cn',\n '^us\\\\-gov\\\\-\\\\w+\\\\-\\\\d+$': 'amazonaws.com',\n '^us\\\\-iso\\\\-\\\\w+\\\\-\\\\d+$': 'c2s.ic.gov',\n '^us\\\\-isob\\\\-\\\\w+\\\\-\\\\d+$': 'sc2s.sgov.gov',\n '^eu\\\\-isoe\\\\-west\\\\-1$': 'cloud.adc-e.uk',\n '^us\\\\-isof\\\\-\\\\w+\\\\-\\\\d+$': 'csp.hci.ic.gov',\n };\n var defaultSuffix = 'amazonaws.com';\n var regexes = Object.keys(regionRegexes);\n for (var i = 0; i < regexes.length; i++) {\n var regionPattern = RegExp(regexes[i]);\n var dnsSuffix = regionRegexes[regexes[i]];\n if (regionPattern.test(region)) return dnsSuffix;\n }\n return defaultSuffix;\n}\n\n/**\n * @api private\n */\nmodule.exports = {\n configureEndpoint: configureEndpoint,\n getEndpointSuffix: getEndpointSuffix,\n};\n","'use strict';\n\nvar pkg = require('./../../package.json');\n\nvar validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach(function(type, i) {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nvar deprecatedWarnings = {};\nvar currentVerArr = pkg.version.split('.');\n\n/**\n * Compare package versions\n * @param {string} version\n * @param {string?} thanVersion\n * @returns {boolean}\n */\nfunction isOlderVersion(version, thanVersion) {\n var pkgVersionArr = thanVersion ? thanVersion.split('.') : currentVerArr;\n var destVer = version.split('.');\n for (var i = 0; i < 3; i++) {\n if (pkgVersionArr[i] > destVer[i]) {\n return true;\n } else if (pkgVersionArr[i] < destVer[i]) {\n return false;\n }\n }\n return false;\n}\n\n/**\n * Transitional option validator\n * @param {function|boolean?} validator\n * @param {string?} version\n * @param {string} message\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n var isDeprecated = version && isOlderVersion(version);\n\n function formatMessage(opt, desc) {\n return '[Axios v' + pkg.version + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return function(value, opt, opts) {\n if (validator === false) {\n throw new Error(formatMessage(opt, ' has been removed in ' + version));\n }\n\n if (isDeprecated && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\n/**\n * Assert object's properties type\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new TypeError('options must be an object');\n }\n var keys = Object.keys(options);\n var i = keys.length;\n while (i-- > 0) {\n var opt = keys[i];\n var validator = schema[opt];\n if (validator) {\n var value = options[opt];\n var result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new TypeError('option ' + opt + ' must be ' + result);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw Error('Unknown option ' + opt);\n }\n }\n}\n\nmodule.exports = {\n isOlderVersion: isOlderVersion,\n assertOptions: assertOptions,\n validators: validators\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport MediaStreamBrokerObserver from '../mediastreambrokerobserver/MediaStreamBrokerObserver';\nimport MediaStreamBroker from './MediaStreamBroker';\n\n/**\n * [[NoOpDeviceBroker]] rejects requests to acquire a [[MediaStream]].\n */\nexport default class NoOpMediaStreamBroker implements MediaStreamBroker {\n acquireAudioInputStream(): Promise {\n return Promise.reject();\n }\n\n acquireVideoInputStream(): Promise {\n return Promise.reject();\n }\n\n acquireDisplayInputStream(_streamConstraints: MediaStreamConstraints): Promise {\n return Promise.reject();\n }\n\n muteLocalAudioInputStream(): void {}\n\n unmuteLocalAudioInputStream(): void {}\n\n addMediaStreamBrokerObserver(_observer: MediaStreamBrokerObserver): void {}\n\n removeMediaStreamBrokerObserver(_observer: MediaStreamBrokerObserver): void {}\n}\n","/**\n * Copyright 2012-2013 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You\n * may not use this file except in compliance with the License. A copy of\n * the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is\n * distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific\n * language governing permissions and limitations under the License.\n */\n\nvar AWS = require('./core');\nvar inherit = AWS.util.inherit;\nvar jmespath = require('jmespath');\n\n/**\n * @api private\n */\nfunction CHECK_ACCEPTORS(resp) {\n var waiter = resp.request._waiter;\n var acceptors = waiter.config.acceptors;\n var acceptorMatched = false;\n var state = 'retry';\n\n acceptors.forEach(function(acceptor) {\n if (!acceptorMatched) {\n var matcher = waiter.matchers[acceptor.matcher];\n if (matcher && matcher(resp, acceptor.expected, acceptor.argument)) {\n acceptorMatched = true;\n state = acceptor.state;\n }\n }\n });\n\n if (!acceptorMatched && resp.error) state = 'failure';\n\n if (state === 'success') {\n waiter.setSuccess(resp);\n } else {\n waiter.setError(resp, state === 'retry');\n }\n}\n\n/**\n * @api private\n */\nAWS.ResourceWaiter = inherit({\n /**\n * Waits for a given state on a service object\n * @param service [Service] the service object to wait on\n * @param state [String] the state (defined in waiter configuration) to wait\n * for.\n * @example Create a waiter for running EC2 instances\n * var ec2 = new AWS.EC2;\n * var waiter = new AWS.ResourceWaiter(ec2, 'instanceRunning');\n */\n constructor: function constructor(service, state) {\n this.service = service;\n this.state = state;\n this.loadWaiterConfig(this.state);\n },\n\n service: null,\n\n state: null,\n\n config: null,\n\n matchers: {\n path: function(resp, expected, argument) {\n try {\n var result = jmespath.search(resp.data, argument);\n } catch (err) {\n return false;\n }\n\n return jmespath.strictDeepEqual(result,expected);\n },\n\n pathAll: function(resp, expected, argument) {\n try {\n var results = jmespath.search(resp.data, argument);\n } catch (err) {\n return false;\n }\n\n if (!Array.isArray(results)) results = [results];\n var numResults = results.length;\n if (!numResults) return false;\n for (var ind = 0 ; ind < numResults; ind++) {\n if (!jmespath.strictDeepEqual(results[ind], expected)) {\n return false;\n }\n }\n return true;\n },\n\n pathAny: function(resp, expected, argument) {\n try {\n var results = jmespath.search(resp.data, argument);\n } catch (err) {\n return false;\n }\n\n if (!Array.isArray(results)) results = [results];\n var numResults = results.length;\n for (var ind = 0 ; ind < numResults; ind++) {\n if (jmespath.strictDeepEqual(results[ind], expected)) {\n return true;\n }\n }\n return false;\n },\n\n status: function(resp, expected) {\n var statusCode = resp.httpResponse.statusCode;\n return (typeof statusCode === 'number') && (statusCode === expected);\n },\n\n error: function(resp, expected) {\n if (typeof expected === 'string' && resp.error) {\n return expected === resp.error.code;\n }\n // if expected is not string, can be boolean indicating presence of error\n return expected === !!resp.error;\n }\n },\n\n listeners: new AWS.SequentialExecutor().addNamedListeners(function(add) {\n add('RETRY_CHECK', 'retry', function(resp) {\n var waiter = resp.request._waiter;\n if (resp.error && resp.error.code === 'ResourceNotReady') {\n resp.error.retryDelay = (waiter.config.delay || 0) * 1000;\n }\n });\n\n add('CHECK_OUTPUT', 'extractData', CHECK_ACCEPTORS);\n\n add('CHECK_ERROR', 'extractError', CHECK_ACCEPTORS);\n }),\n\n /**\n * @return [AWS.Request]\n */\n wait: function wait(params, callback) {\n if (typeof params === 'function') {\n callback = params; params = undefined;\n }\n\n if (params && params.$waiter) {\n params = AWS.util.copy(params);\n if (typeof params.$waiter.delay === 'number') {\n this.config.delay = params.$waiter.delay;\n }\n if (typeof params.$waiter.maxAttempts === 'number') {\n this.config.maxAttempts = params.$waiter.maxAttempts;\n }\n delete params.$waiter;\n }\n\n var request = this.service.makeRequest(this.config.operation, params);\n request._waiter = this;\n request.response.maxRetries = this.config.maxAttempts;\n request.addListeners(this.listeners);\n\n if (callback) request.send(callback);\n return request;\n },\n\n setSuccess: function setSuccess(resp) {\n resp.error = null;\n resp.data = resp.data || {};\n resp.request.removeAllListeners('extractData');\n },\n\n setError: function setError(resp, retryable) {\n resp.data = null;\n resp.error = AWS.util.error(resp.error || new Error(), {\n code: 'ResourceNotReady',\n message: 'Resource is not in the state ' + this.state,\n retryable: retryable\n });\n },\n\n /**\n * Loads waiter configuration from API configuration\n *\n * @api private\n */\n loadWaiterConfig: function loadWaiterConfig(state) {\n if (!this.service.api.waiters[state]) {\n throw new AWS.util.error(new Error(), {\n code: 'StateNotFoundError',\n message: 'State ' + state + ' not found.'\n });\n }\n\n this.config = AWS.util.copy(this.service.api.waiters[state]);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar aCallable = require('../internals/a-callable');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar iterate = require('../internals/iterate');\nvar MapHelpers = require('../internals/map-helpers');\nvar IS_PURE = require('../internals/is-pure');\nvar fails = require('../internals/fails');\n\nvar Map = MapHelpers.Map;\nvar has = MapHelpers.has;\nvar get = MapHelpers.get;\nvar set = MapHelpers.set;\nvar push = uncurryThis([].push);\n\nvar DOES_NOT_WORK_WITH_PRIMITIVES = IS_PURE || fails(function () {\n return Map.groupBy('ab', function (it) {\n return it;\n }).get('a').length !== 1;\n});\n\n// `Map.groupBy` method\n// https://tc39.es/ecma262/#sec-map.groupby\n$({ target: 'Map', stat: true, forced: IS_PURE || DOES_NOT_WORK_WITH_PRIMITIVES }, {\n groupBy: function groupBy(items, callbackfn) {\n requireObjectCoercible(items);\n aCallable(callbackfn);\n var map = new Map();\n var k = 0;\n iterate(items, function (value) {\n var key = callbackfn(value, k++);\n if (!has(map, key)) set(map, key, [value]);\n else push(get(map, key), value);\n });\n return map;\n }\n});\n","'use strict';\n\n/** @type {import('./isNaN')} */\nmodule.exports = Number.isNaN || function isNaN(a) {\n\treturn a !== a;\n};\n","var AWS = require('../core');\nvar inherit = AWS.util.inherit;\n\nrequire('./v3');\n\n/**\n * @api private\n */\nAWS.Signers.V3Https = inherit(AWS.Signers.V3, {\n authorization: function authorization(credentials) {\n return 'AWS3-HTTPS ' +\n 'AWSAccessKeyId=' + credentials.accessKeyId + ',' +\n 'Algorithm=HmacSHA256,' +\n 'Signature=' + this.signature(credentials);\n },\n\n stringToSign: function stringToSign() {\n return this.request.headers['X-Amz-Date'];\n }\n});\n\n/**\n * @api private\n */\nmodule.exports = AWS.Signers.V3Https;\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport Logger from '../logger/Logger';\nimport BaseTask from './BaseTask';\n\n/**\n * [[RunnableTask]] Task wrapper for any Promised-operation\n */\nexport default class RunnableTask extends BaseTask {\n constructor(logger: Logger, private fn: () => Promise, taskName: string = 'RunnableTask') {\n super(logger);\n this.taskName = taskName;\n }\n\n run(): Promise {\n return this.fn().then(() => {});\n }\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\n\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getAudioInput = exports.createAudioContext = exports.VoiceFocus = void 0;\nconst decider_js_1 = require(\"./decider.js\");\nconst fetch_js_1 = require(\"./fetch.js\");\nconst loader_js_1 = require(\"./loader.js\");\nconst support_js_1 = require(\"./support.js\");\nconst worklet_inline_node_js_1 = require(\"./worklet-inline-node.js\");\nconst worklet_worker_sab_node_js_1 = require(\"./worklet-worker-sab-node.js\");\nconst worklet_worker_postMessage_node_js_1 = require(\"./worklet-worker-postMessage-node.js\");\nconst DEFAULT_AGC_DISABLED_SETTING = {\n useVoiceFocusAGC: false,\n useBuiltInAGC: true,\n};\nconst DEFAULT_AGC_SETTING = DEFAULT_AGC_DISABLED_SETTING;\nconst DEFAULT_ASSET_GROUP = 'stable-v1';\nconst DEFAULT_CDN = 'https://static.sdkassets.chime.aws';\nconst DEFAULT_PATHS = {\n processors: `${DEFAULT_CDN}/processors/`,\n workers: `${DEFAULT_CDN}/workers/`,\n wasm: `${DEFAULT_CDN}/wasm/`,\n models: `${DEFAULT_CDN}/wasm/`,\n};\nconst DEFAULT_CONTEXT_HINT = {\n latencyHint: 0,\n};\nconst BASE_AUDIO_CONSTRAINTS = {\n channelCount: 1,\n echoCancellation: true,\n googEchoCancellation: true,\n noiseSuppression: false,\n googNoiseSuppression: false,\n googHighpassFilter: false,\n googTypingNoiseDetection: false,\n};\nconst DEFAULT_AUDIO_CONSTRAINTS_WITH_BUILTIN_AGC = Object.assign(Object.assign({}, BASE_AUDIO_CONSTRAINTS), { autoGainControl: true, googAutoGainControl: true, googAutoGainControl2: true });\nconst DEFAULT_AUDIO_CONSTRAINTS_WITHOUT_BUILTIN_AGC = Object.assign(Object.assign({}, BASE_AUDIO_CONSTRAINTS), { autoGainControl: false, googAutoGainControl: false, googAutoGainControl2: false });\nconst PROCESSORS = {\n 'voicefocus-worker-sab-processor': {\n file: 'worklet-worker-sab-processor-v1.js',\n node: worklet_worker_sab_node_js_1.default,\n },\n 'voicefocus-worker-postMessage-processor': {\n file: 'worklet-worker-postMessage-processor-v1.js',\n node: worklet_worker_postMessage_node_js_1.default,\n },\n 'voicefocus-inline-processor': {\n file: 'worklet-inline-processor-v1.js',\n node: worklet_inline_node_js_1.default,\n },\n};\nconst validateAssetSpec = (assetGroup, revisionID) => {\n if (assetGroup !== undefined && !fetch_js_1.isValidAssetGroup(assetGroup)) {\n throw new Error(`Invalid asset group ${assetGroup}`);\n }\n if (revisionID !== undefined && !fetch_js_1.isValidRevisionID(revisionID)) {\n throw new Error(`Invalid revision ID ${revisionID}`);\n }\n};\nconst mungeConstraints = (constraints, agc) => {\n let defaultConstraints;\n if (agc.useBuiltInAGC) {\n defaultConstraints = DEFAULT_AUDIO_CONSTRAINTS_WITH_BUILTIN_AGC;\n }\n else {\n defaultConstraints = DEFAULT_AUDIO_CONSTRAINTS_WITHOUT_BUILTIN_AGC;\n }\n if (!constraints) {\n return { audio: defaultConstraints };\n }\n if (!constraints.audio) {\n return constraints;\n }\n if (constraints.video) {\n throw new Error('Not adding Voice Focus to multi-device getUserMedia call.');\n }\n return Object.assign(Object.assign({}, constraints), { audio: constraints.audio === true ? defaultConstraints : Object.assign(Object.assign({}, constraints.audio), defaultConstraints) });\n};\nconst urlForModel = (model, paths) => {\n return `${paths.models}${decider_js_1.decideModel(model)}.wasm`;\n};\nclass VoiceFocus {\n constructor(worker, processorURL, nodeConstructor, nodeOptions, executionQuanta) {\n this.processorURL = processorURL;\n this.nodeConstructor = nodeConstructor;\n this.nodeOptions = nodeOptions;\n this.executionQuanta = executionQuanta;\n this.internal = {\n worker,\n nodeOptions,\n isDestroyed: false,\n };\n }\n static isSupported(spec, options) {\n const { fetchBehavior, logger } = options || {};\n if (typeof globalThis === 'undefined') {\n logger === null || logger === void 0 ? void 0 : logger.debug('Browser does not have globalThis.');\n return Promise.resolve(false);\n }\n if (!support_js_1.supportsAudioWorklet(globalThis, logger)) {\n logger === null || logger === void 0 ? void 0 : logger.debug('Browser does not support Audio Worklet.');\n return Promise.resolve(false);\n }\n if (!support_js_1.supportsWASM(globalThis, logger)) {\n logger === null || logger === void 0 ? void 0 : logger.debug('Browser does not support WASM.');\n return Promise.resolve(false);\n }\n if (!support_js_1.supportsWASMStreaming(globalThis, logger)) {\n logger === null || logger === void 0 ? void 0 : logger.debug('Browser does not support streaming WASM compilation.');\n }\n const { assetGroup = DEFAULT_ASSET_GROUP, revisionID, paths = DEFAULT_PATHS, } = spec || {};\n validateAssetSpec(assetGroup, revisionID);\n const assetConfig = revisionID ? { revisionID } : { assetGroup };\n const updatedFetchBehavior = fetch_js_1.addQueryParams(fetchBehavior, assetConfig);\n const fetchConfig = Object.assign(Object.assign({}, updatedFetchBehavior), { paths });\n return support_js_1.supportsVoiceFocusWorker(globalThis, fetchConfig, logger);\n }\n static mungeExecutionPreference(preference, logger) {\n const isAuto = (preference === undefined || preference === 'auto');\n if (support_js_1.isSafari(globalThis)) {\n if (isAuto || preference === 'inline') {\n return 'inline';\n }\n if (!isAuto) {\n throw new Error(`Unsupported execution preference ${preference}`);\n }\n }\n if (preference === 'worker-sab' && !support_js_1.supportsSharedArrayBuffer(globalThis, globalThis, logger)) {\n throw new Error(`Unsupported execution preference ${preference}`);\n }\n return preference || 'auto';\n }\n static configure(spec, options) {\n return __awaiter(this, void 0, void 0, function* () {\n const { fetchBehavior, preResolve, logger, } = options || {};\n const { category = 'voicefocus', name = 'default', variant: variantPreference = 'auto', assetGroup = DEFAULT_ASSET_GROUP, revisionID, simd = 'detect', executionPreference = 'auto', executionQuantaPreference, usagePreference = 'interactivity', estimatorBudget = 100, paths = DEFAULT_PATHS, thresholds, } = spec || {};\n logger === null || logger === void 0 ? void 0 : logger.debug('Configuring Voice Focus with spec', spec);\n if (category !== undefined && category !== 'voicefocus') {\n throw new Error(`Unrecognized category ${category}`);\n }\n if (name !== undefined && name !== 'default' && name !== 'ns_es') {\n throw new Error(`Unrecognized feature name ${name}`);\n }\n if (variantPreference !== undefined && !['auto', 'c100', 'c50', 'c20', 'c10'].includes(variantPreference)) {\n throw new Error(`Unrecognized feature variant ${variantPreference}`);\n }\n if (executionQuantaPreference !== undefined && ![1, 2, 3].includes(executionQuantaPreference)) {\n throw new Error(`Unrecognized execution quanta preference ${executionQuantaPreference}`);\n }\n validateAssetSpec(assetGroup, revisionID);\n if (simd !== undefined && !['detect', 'force', 'disable'].includes(simd)) {\n throw new Error(`Unrecognized SIMD option ${simd}`);\n }\n if (executionPreference !== undefined && !['auto', 'inline', 'worker', 'worker-sab', 'worker-postMessage'].includes(executionPreference)) {\n throw new Error(`Unrecognized execution preference ${executionPreference}`);\n }\n if (usagePreference !== undefined && !['quality', 'interactivity'].includes(usagePreference)) {\n throw new Error(`Unrecognized usage preference ${usagePreference}`);\n }\n const executionSpec = {\n executionPreference: this.mungeExecutionPreference(executionPreference, logger),\n usagePreference,\n executionQuantaPreference,\n variantPreference,\n namePreference: name,\n simdPreference: simd,\n estimatorBudget,\n };\n const assetConfig = revisionID ? { revisionID } : { assetGroup };\n const updatedFetchBehavior = fetch_js_1.addQueryParams(fetchBehavior, assetConfig);\n const fetchConfig = Object.assign({ paths }, updatedFetchBehavior);\n const executionDefinition = yield decider_js_1.measureAndDecideExecutionApproach(executionSpec, fetchConfig, logger, thresholds);\n if (executionDefinition.supported === false) {\n return { supported: false, reason: executionDefinition.reason };\n }\n logger === null || logger === void 0 ? void 0 : logger.info('Decided execution approach', executionDefinition);\n const { useSIMD, processor, variant, executionQuanta } = executionDefinition;\n const model = {\n category: category || 'voicefocus',\n name: name || 'default',\n variant,\n simd: useSIMD,\n };\n if (preResolve) {\n const startingURL = urlForModel(model, paths);\n model.url = yield fetch_js_1.resolveURL(startingURL, updatedFetchBehavior);\n }\n return {\n fetchConfig,\n model,\n processor,\n executionQuanta,\n supported: true,\n };\n });\n }\n static init(configuration, { delegate, preload = true, logger, }) {\n return __awaiter(this, void 0, void 0, function* () {\n if (configuration.supported === false) {\n throw new Error('Voice Focus not supported. Reason: ' + configuration.reason);\n }\n const { model, processor, fetchConfig, executionQuanta, } = configuration;\n const { simd, name } = model;\n const { paths } = fetchConfig;\n if (processor !== 'voicefocus-inline-processor' &&\n processor !== 'voicefocus-worker-postMessage-processor' &&\n processor !== 'voicefocus-worker-sab-processor') {\n throw new Error(`Unknown processor ${processor}`);\n }\n const modelURL = model.url || urlForModel(model, paths);\n logger === null || logger === void 0 ? void 0 : logger.debug(`Using model URL ${modelURL}.`);\n const audioBufferURL = `${paths.wasm}audio_buffer-v1${simd ? '_simd' : ''}.wasm`;\n const resamplerURL = `${paths.wasm}resampler-v1${simd ? '_simd' : ''}.wasm`;\n const workerURL = `${paths.workers}worker-v1.js`;\n const { file, node } = PROCESSORS[processor];\n const processorURL = `${paths.processors}${file}`;\n const worker = yield loader_js_1.loadWorker(workerURL, 'VoiceFocusWorker', fetchConfig, logger);\n if (preload) {\n logger === null || logger === void 0 ? void 0 : logger.debug('Preloading', modelURL);\n let message = support_js_1.supportsWASMPostMessage(globalThis) ? 'get-module' : 'get-module-buffer';\n worker.postMessage({\n message,\n preload: true,\n key: 'model',\n fetchBehavior: fetchConfig,\n path: modelURL,\n });\n }\n const numberOfInputs = (name === 'ns_es') ? 2 : 1;\n const nodeOptions = {\n processor,\n worker,\n audioBufferURL,\n resamplerURL,\n fetchBehavior: fetchConfig,\n modelURL,\n delegate,\n logger,\n numberOfInputs,\n };\n const factory = new VoiceFocus(worker, processorURL, node, nodeOptions, executionQuanta);\n return Promise.resolve(factory);\n });\n }\n createNode(context, options) {\n var _a;\n if (this.internal.isDestroyed) {\n throw new Error('Unable to create node because VoiceFocus worker has been destroyed.');\n }\n const { voiceFocusSampleRate = (context.sampleRate === 16000 ? 16000 : 48000), enabled = true, agc = DEFAULT_AGC_SETTING, } = options || {};\n const supportFarendStream = options === null || options === void 0 ? void 0 : options.es;\n const processorOptions = {\n voiceFocusSampleRate,\n enabled,\n sendBufferCount: 10,\n prefill: 6,\n agc,\n executionQuanta: this.executionQuanta,\n supportFarendStream,\n };\n const url = fetch_js_1.withQueryString(this.processorURL, (_a = this.nodeOptions) === null || _a === void 0 ? void 0 : _a.fetchBehavior);\n return context.audioWorklet\n .addModule(url)\n .then(() => new (this.nodeConstructor)(context, Object.assign(Object.assign({}, this.nodeOptions), { processorOptions })));\n }\n applyToStream(stream, context, options) {\n return __awaiter(this, void 0, void 0, function* () {\n if (this.internal.isDestroyed) {\n throw new Error(\"Unable to apply stream because VoiceFocus worker has been destroyed\");\n }\n const source = context.createMediaStreamSource(stream);\n const node = yield this.applyToSourceNode(source, context, options);\n const destination = context.createMediaStreamDestination();\n node.connect(destination);\n return {\n node,\n source,\n destination,\n stream: destination.stream,\n };\n });\n }\n applyToSourceNode(source, context, options) {\n return __awaiter(this, void 0, void 0, function* () {\n const node = yield this.createNode(context, options);\n source.connect(node);\n return node;\n });\n }\n destroy() {\n if (this.internal.worker) {\n this.internal.worker.terminate();\n }\n this.internal.isDestroyed = true;\n }\n}\nexports.VoiceFocus = VoiceFocus;\nconst createAudioContext = (contextHint = DEFAULT_CONTEXT_HINT) => {\n return new (window.AudioContext || window.webkitAudioContext)(contextHint);\n};\nexports.createAudioContext = createAudioContext;\nconst getAudioInput = (context, inputOptions, voiceFocusOptions) => __awaiter(void 0, void 0, void 0, function* () {\n var _a, _b;\n const { constraints, spec, delegate, preload = true, options } = inputOptions;\n const { logger } = voiceFocusOptions;\n const config = yield VoiceFocus.configure(spec, voiceFocusOptions);\n if (!config.supported) {\n (_a = voiceFocusOptions.logger) === null || _a === void 0 ? void 0 : _a.warn('Voice Focus not supported; returning standard stream.');\n return window.navigator.mediaDevices.getUserMedia(constraints);\n }\n const factory = yield VoiceFocus.init(config, { delegate, preload, logger });\n const agc = ((_b = inputOptions.options) === null || _b === void 0 ? void 0 : _b.agc) || DEFAULT_AGC_SETTING;\n const input = yield window.navigator.mediaDevices.getUserMedia(mungeConstraints(constraints, agc));\n return factory.applyToStream(input, context, options).then(result => result.stream);\n});\nexports.getAudioInput = getAudioInput;\n","'use strict';\nmodule.exports = {};\n","'use strict';\n\nvar callBound = require('call-bound');\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar hasOwn = require('hasown');\nvar gOPD = require('gopd');\n\n/** @type {import('.')} */\nvar fn;\n\nif (hasToStringTag) {\n\t/** @type {(receiver: ThisParameterType, ...args: Parameters) => ReturnType} */\n\tvar $exec = callBound('RegExp.prototype.exec');\n\t/** @type {object} */\n\tvar isRegexMarker = {};\n\n\tvar throwRegexMarker = function () {\n\t\tthrow isRegexMarker;\n\t};\n\t/** @type {{ toString(): never, valueOf(): never, [Symbol.toPrimitive]?(): never }} */\n\tvar badStringifier = {\n\t\ttoString: throwRegexMarker,\n\t\tvalueOf: throwRegexMarker\n\t};\n\n\tif (typeof Symbol.toPrimitive === 'symbol') {\n\t\tbadStringifier[Symbol.toPrimitive] = throwRegexMarker;\n\t}\n\n\t/** @type {import('.')} */\n\t// @ts-expect-error TS can't figure out that the $exec call always throws\n\t// eslint-disable-next-line consistent-return\n\tfn = function isRegex(value) {\n\t\tif (!value || typeof value !== 'object') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// eslint-disable-next-line no-extra-parens\n\t\tvar descriptor = /** @type {NonNullable} */ (gOPD)(/** @type {{ lastIndex?: unknown }} */ (value), 'lastIndex');\n\t\tvar hasLastIndexDataProperty = descriptor && hasOwn(descriptor, 'value');\n\t\tif (!hasLastIndexDataProperty) {\n\t\t\treturn false;\n\t\t}\n\n\t\ttry {\n\t\t\t// eslint-disable-next-line no-extra-parens\n\t\t\t$exec(value, /** @type {string} */ (/** @type {unknown} */ (badStringifier)));\n\t\t} catch (e) {\n\t\t\treturn e === isRegexMarker;\n\t\t}\n\t};\n} else {\n\t/** @type {(receiver: ThisParameterType, ...args: Parameters) => ReturnType} */\n\tvar $toString = callBound('Object.prototype.toString');\n\t/** @const @type {'[object RegExp]'} */\n\tvar regexClass = '[object RegExp]';\n\n\t/** @type {import('.')} */\n\tfn = function isRegex(value) {\n\t\t// In older browsers, typeof regex incorrectly returns 'function'\n\t\tif (!value || (typeof value !== 'object' && typeof value !== 'function')) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn $toString(value) === regexClass;\n\t};\n}\n\nmodule.exports = fn;\n","var util = require('../core').util;\n\n/**\n * An object recognizable as a numeric value that stores the underlying number\n * as a string.\n *\n * Intended to be a deserialization target for the DynamoDB Document Client when\n * the `wrapNumbers` flag is set. This allows for numeric values that lose\n * precision when converted to JavaScript's `number` type.\n */\nvar DynamoDBNumberValue = util.inherit({\n constructor: function NumberValue(value) {\n this.wrapperName = 'NumberValue';\n this.value = value.toString();\n },\n\n /**\n * Render the underlying value as a number when converting to JSON.\n */\n toJSON: function () {\n return this.toNumber();\n },\n\n /**\n * Convert the underlying value to a JavaScript number.\n */\n toNumber: function () {\n return Number(this.value);\n },\n\n /**\n * Return a string representing the unaltered value provided to the\n * constructor.\n */\n toString: function () {\n return this.value;\n }\n});\n\n/**\n * @api private\n */\nmodule.exports = DynamoDBNumberValue;\n","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar iterate = require('../internals/iterate');\nvar isCallable = require('../internals/is-callable');\nvar aCallable = require('../internals/a-callable');\nvar Map = require('../internals/map-helpers').Map;\n\n// `Map.keyBy` method\n// https://github.com/tc39/proposal-collection-methods\n$({ target: 'Map', stat: true, forced: true }, {\n keyBy: function keyBy(iterable, keyDerivative) {\n var C = isCallable(this) ? this : Map;\n var newMap = new C();\n aCallable(keyDerivative);\n var setter = aCallable(newMap.set);\n iterate(iterable, function (element) {\n call(setter, newMap, keyDerivative(element), element);\n });\n return newMap;\n }\n});\n","var AWS = require('../core');\n\nvar rdsutil = {\n /**\n * @api private\n */\n setupRequestListeners: function setupRequestListeners(service, request, crossRegionOperations) {\n if (crossRegionOperations.indexOf(request.operation) !== -1 &&\n request.params.SourceRegion) {\n request.params = AWS.util.copy(request.params);\n if (request.params.PreSignedUrl ||\n request.params.SourceRegion === service.config.region) {\n delete request.params.SourceRegion;\n } else {\n var doesParamValidation = !!service.config.paramValidation;\n // remove the validate parameters listener so we can re-add it after we build the URL\n if (doesParamValidation) {\n request.removeListener('validate', AWS.EventListeners.Core.VALIDATE_PARAMETERS);\n }\n request.onAsync('validate', rdsutil.buildCrossRegionPresignedUrl);\n if (doesParamValidation) {\n request.addListener('validate', AWS.EventListeners.Core.VALIDATE_PARAMETERS);\n }\n }\n }\n },\n\n /**\n * @api private\n */\n buildCrossRegionPresignedUrl: function buildCrossRegionPresignedUrl(req, done) {\n var config = AWS.util.copy(req.service.config);\n config.region = req.params.SourceRegion;\n delete req.params.SourceRegion;\n delete config.endpoint;\n // relevant params for the operation will already be in req.params\n delete config.params;\n config.signatureVersion = 'v4';\n var destinationRegion = req.service.config.region;\n\n var svc = new req.service.constructor(config);\n var newReq = svc[req.operation](AWS.util.copy(req.params));\n newReq.on('build', function addDestinationRegionParam(request) {\n var httpRequest = request.httpRequest;\n httpRequest.params.DestinationRegion = destinationRegion;\n httpRequest.body = AWS.util.queryParamsToString(httpRequest.params);\n });\n newReq.presign(function(err, url) {\n if (err) done(err);\n else {\n req.params.PreSignedUrl = url;\n done();\n }\n });\n }\n};\n\n/**\n * @api private\n */\nmodule.exports = rdsutil;\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nmodule.exports = {\n\n /* Allowed flush values; see deflate() and inflate() below for details */\n Z_NO_FLUSH: 0,\n Z_PARTIAL_FLUSH: 1,\n Z_SYNC_FLUSH: 2,\n Z_FULL_FLUSH: 3,\n Z_FINISH: 4,\n Z_BLOCK: 5,\n Z_TREES: 6,\n\n /* Return codes for the compression/decompression functions. Negative values\n * are errors, positive values are used for special but normal events.\n */\n Z_OK: 0,\n Z_STREAM_END: 1,\n Z_NEED_DICT: 2,\n Z_ERRNO: -1,\n Z_STREAM_ERROR: -2,\n Z_DATA_ERROR: -3,\n Z_MEM_ERROR: -4,\n Z_BUF_ERROR: -5,\n //Z_VERSION_ERROR: -6,\n\n /* compression levels */\n Z_NO_COMPRESSION: 0,\n Z_BEST_SPEED: 1,\n Z_BEST_COMPRESSION: 9,\n Z_DEFAULT_COMPRESSION: -1,\n\n\n Z_FILTERED: 1,\n Z_HUFFMAN_ONLY: 2,\n Z_RLE: 3,\n Z_FIXED: 4,\n Z_DEFAULT_STRATEGY: 0,\n\n /* Possible values of the data_type field (though see inflate()) */\n Z_BINARY: 0,\n Z_TEXT: 1,\n //Z_ASCII: 1, // = Z_TEXT (deprecated)\n Z_UNKNOWN: 2,\n\n /* The deflate compression method */\n Z_DEFLATED: 8\n //Z_NULL: null // Use -1 or null inline, depending on var type\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport VideoCaptureAndEncodeParameter from './VideoCaptureAndEncodeParameter';\n\nexport default class DefaultVideoCaptureAndEncodeParameter\n implements VideoCaptureAndEncodeParameter {\n constructor(\n private cameraWidth: number,\n private cameraHeight: number,\n private cameraFrameRate: number,\n private maxEncodeBitrateKbps: number,\n private isSimulcast: boolean,\n private scaleResolutionDownBy: number = 1,\n private isSVC: boolean = false\n ) {}\n\n equal(other: DefaultVideoCaptureAndEncodeParameter): boolean {\n let checkForEqual: boolean =\n other.captureWidth() === this.cameraWidth &&\n other.captureHeight() === this.cameraHeight &&\n other.captureFrameRate() === this.cameraFrameRate &&\n other.encodeBitrates().length === this.encodeBitrates().length &&\n other.encodeScaleResolutionDownBy().length === this.encodeScaleResolutionDownBy().length &&\n other.encodeWidths().length === this.encodeWidths().length &&\n other.encodeHeights().length === this.encodeHeights().length &&\n other.isSVCEncoding() === this.isSVC;\n\n if (checkForEqual) {\n for (let i = 0; i < other.encodeWidths().length; i++) {\n if (\n other.encodeWidths()[i] !== this.encodeWidths()[i] ||\n other.encodeHeights()[i] !== this.encodeHeights()[i] ||\n other.encodeBitrates()[i] !== this.encodeBitrates()[i] ||\n other.encodeScaleResolutionDownBy()[i] !== this.encodeScaleResolutionDownBy()[i]\n ) {\n checkForEqual = false;\n return checkForEqual;\n }\n }\n }\n\n return checkForEqual;\n }\n\n clone(): DefaultVideoCaptureAndEncodeParameter {\n return new DefaultVideoCaptureAndEncodeParameter(\n this.cameraWidth,\n this.cameraHeight,\n this.cameraFrameRate,\n this.maxEncodeBitrateKbps,\n this.isSimulcast,\n this.scaleResolutionDownBy,\n this.isSVC\n );\n }\n\n captureWidth(): number {\n return this.cameraWidth;\n }\n\n captureHeight(): number {\n return this.cameraHeight;\n }\n\n captureFrameRate(): number {\n return this.cameraFrameRate;\n }\n\n encodeBitrates(): number[] {\n // TODO: add simulcast layer\n return [this.maxEncodeBitrateKbps];\n }\n\n encodeScaleResolutionDownBy(): number[] {\n return [this.scaleResolutionDownBy];\n }\n\n encodeWidths(): number[] {\n return [this.cameraWidth];\n }\n\n encodeHeights(): number[] {\n return [this.cameraHeight];\n }\n\n isSVCEncoding(): boolean {\n return this.isSVC;\n }\n}\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['mobileanalytics'] = {};\nAWS.MobileAnalytics = Service.defineService('mobileanalytics', ['2014-06-05']);\nObject.defineProperty(apiLoader.services['mobileanalytics'], '2014-06-05', {\n get: function get() {\n var model = require('../apis/mobileanalytics-2014-06-05.min.json');\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.MobileAnalytics;\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\n/**\n * Indicates the result of an attempted state transition.\n */\nexport enum SessionStateControllerTransitionResult {\n /**\n * The transition was successful.\n */\n Transitioned,\n\n /**\n * No transition is available from the current state using that action.\n */\n NoTransitionAvailable,\n\n /**\n * The transition will be tried on the next state.\n */\n DeferredTransition,\n\n /**\n * An unexpected error occurred while transitioning to the next state.\n */\n TransitionFailed,\n}\n\nexport default SessionStateControllerTransitionResult;\n","'use strict';\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\n\n// `Symbol.observable` well-known symbol\n// https://github.com/tc39/proposal-observable\ndefineWellKnownSymbol('observable');\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\n/**\n * [[MeetingSessionLifecycleEventCondition]] indicates the lifecycle event condition.\n * Add new enums to the bottom. We depend on these numbers for analytics.\n */\nexport enum MeetingSessionLifecycleEventCondition {\n /**\n * The session is connecting for the first time.\n */\n ConnectingNew = 0,\n\n /**\n * The session was connected before and is now reconnecting.\n */\n ReconnectingExisting = 1,\n\n /**\n * The session successfully arrived in the started state for the first time.\n */\n StartedNew = 2,\n\n /**\n * The session successfully arrived in the started state but was connected before.\n * This can happen, for example, when the connection type changes.\n */\n StartedExisting = 3,\n\n /**\n * The session successfully arrived in the started state following a reconnect.\n */\n StartedAfterReconnect = 4,\n\n /**\n * The session stopped cleanly, probably due to leaving the call.\n */\n StoppedCleanly = 5,\n\n /**\n * The session stopped due to a failure. A status code will indicate the cause of\n * the failure.\n */\n StoppedWithFailure = 6,\n}\n\nexport default MeetingSessionLifecycleEventCondition;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['chimesdkmessaging'] = {};\nAWS.ChimeSDKMessaging = Service.defineService('chimesdkmessaging', ['2021-05-15']);\nObject.defineProperty(apiLoader.services['chimesdkmessaging'], '2021-05-15', {\n get: function get() {\n var model = require('../apis/chime-sdk-messaging-2021-05-15.min.json');\n model.paginators = require('../apis/chime-sdk-messaging-2021-05-15.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.ChimeSDKMessaging;\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { SdkSignalFrame } from '../signalingprotocol/SignalingProtocol.js';\nimport SignalingClient from './SignalingClient';\nimport SignalingClientEventType from './SignalingClientEventType';\n\n/*\n * [[SignalingClientEvent]] stores an event that can be sent to observers of the SignalingClient.\n */\nexport default class SignalingClientEvent {\n timestampMs: number;\n\n /** Initializes a SignalingClientEvent with the given SignalingClientEventType.\n *\n * @param client Indicates the SignalingClient associated with the event.\n * @param type Indicates the kind of event.\n * @param message SdkSignalFrame if type is ReceivedSignalFrame\n */\n constructor(\n public client: SignalingClient,\n public type: SignalingClientEventType,\n public message: SdkSignalFrame,\n public closeCode?: number,\n public closeReason?: string\n ) {\n this.timestampMs = Date.now();\n }\n\n isConnectionTerminated(): boolean {\n switch (this.type) {\n case SignalingClientEventType.WebSocketFailed:\n case SignalingClientEventType.WebSocketError:\n case SignalingClientEventType.WebSocketClosing:\n case SignalingClientEventType.WebSocketClosed:\n return true;\n default:\n return false;\n }\n }\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\n\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.decideModel = exports.measureAndDecideExecutionApproach = void 0;\nconst loader_js_1 = require(\"./loader.js\");\nconst support_js_1 = require(\"./support.js\");\nconst DEFAULT_EXECUTION_QUANTA = 3;\nconst SIMD_SCORE_FIXED_POINT = 2.50;\nconst WASM_SCORE_FIXED_POINT = 2.63;\nconst SINGLE_INLINE_SCORE_MULTIPLIER = 0.6;\nconst QUALITY_MULTIPLE_QUANTA_SCORE_MULTIPLIER = 0.65;\nconst INTERACTIVITY_MULTIPLE_QUANTA_SCORE_MULTIPLIER = 0.5;\nconst WORKER_SCORE_MULTIPLIER = 0.7;\nconst PERFORMANCE_THRESHOLDS = {\n wasm: {\n noSupport: 0.07,\n inline: {\n c100: 1,\n c50: 0.36,\n c20: 0.16,\n c10: 0.07,\n },\n worker: {\n c100: 0.5,\n c50: 0.18,\n c20: 0.08,\n c10: 0.06,\n },\n },\n simd: {\n noSupport: 0.10,\n inline: {\n c100: 1,\n c50: 0.43,\n c20: 0.3,\n c10: 0.2,\n },\n worker: {\n c100: 0.5,\n c50: 0.21,\n c20: 0.15,\n c10: 0.10,\n },\n },\n};\nclass Estimator {\n constructor(fetchConfig, logger) {\n this.fetchConfig = fetchConfig;\n this.logger = logger;\n const workerURL = `${fetchConfig.paths.workers}estimator-v1.js`;\n this.fetchBehavior = { headers: fetchConfig.headers, escapedQueryString: fetchConfig.escapedQueryString };\n this.worker = loader_js_1.loadWorker(workerURL, 'VoiceFocusEstimator', this.fetchBehavior, logger);\n }\n roundtrip(toSend, receive, expectedKey) {\n return new Promise((resolve, reject) => {\n this.worker.then(worker => {\n let listener;\n listener = (event) => {\n const { message, key } = event.data;\n if (message === receive && key === expectedKey) {\n worker.removeEventListener('message', listener);\n resolve(event.data);\n }\n };\n worker.addEventListener('message', listener);\n worker.postMessage(toSend);\n }).catch(e => {\n var _a;\n (_a = this.logger) === null || _a === void 0 ? void 0 : _a.error('Failed to load worker.', e);\n reject(e);\n });\n });\n }\n supportsSIMD(url) {\n const key = 'simd';\n const path = url || `${this.fetchConfig.paths.wasm}simd-v1.wasm`;\n const toSend = {\n message: 'supports-simd',\n fetchBehavior: this.fetchBehavior,\n path,\n key,\n };\n return this.roundtrip(toSend, 'simd-support', key)\n .then(data => data.supports);\n }\n measure(simd, budget) {\n const benchWASM = `${this.fetchConfig.paths.wasm}bench-v1.wasm`;\n const benchSIMD = `${this.fetchConfig.paths.wasm}bench-v1_simd.wasm`;\n const path = simd ? benchSIMD : benchWASM;\n const key = `bench:${simd}`;\n const toSend = {\n message: 'measure',\n fetchBehavior: this.fetchBehavior,\n budget,\n path,\n key,\n };\n return this.roundtrip(toSend, 'measurement', key)\n .then(data => {\n if (data.measurement) {\n return data.measurement;\n }\n throw new Error('Failed to measure.');\n });\n }\n stop() {\n this.worker.then(worker => {\n var _a;\n (_a = this.logger) === null || _a === void 0 ? void 0 : _a.debug('Stopping estimator worker.');\n worker.terminate();\n }).catch(e => {\n });\n }\n}\nconst inlineScoreMultiplier = (executionQuanta, usagePreference) => {\n if (executionQuanta === 1) {\n return SINGLE_INLINE_SCORE_MULTIPLIER;\n }\n if (usagePreference === 'quality') {\n return QUALITY_MULTIPLE_QUANTA_SCORE_MULTIPLIER * executionQuanta;\n }\n return INTERACTIVITY_MULTIPLE_QUANTA_SCORE_MULTIPLIER * executionQuanta;\n};\nconst decideExecutionApproach = ({ supportsSIMD, supportsSAB, duration, executionPreference = 'auto', simdPreference, variantPreference = 'auto', namePreference = 'default', usagePreference, executionQuantaPreference = DEFAULT_EXECUTION_QUANTA, }, allThresholds = PERFORMANCE_THRESHOLDS, logger) => {\n const forceSIMD = (simdPreference === 'force');\n const useSIMD = forceSIMD || (simdPreference !== 'disable' && supportsSIMD);\n const checkScores = duration !== -1;\n const baseScore = checkScores ? (useSIMD ? SIMD_SCORE_FIXED_POINT : WASM_SCORE_FIXED_POINT) / duration : 0;\n const thresholds = useSIMD ? allThresholds.simd : allThresholds.wasm;\n const inlineScore = checkScores ? inlineScoreMultiplier(executionQuantaPreference, usagePreference) * baseScore : 0;\n const workerScore = checkScores ? WORKER_SCORE_MULTIPLIER * baseScore : 0;\n const name = namePreference;\n const unsupported = (reason) => {\n return {\n supported: false,\n reason,\n };\n };\n if (checkScores) {\n if (baseScore < thresholds.noSupport) {\n return unsupported(`Performance score ${baseScore} worse than threshold ${thresholds.noSupport}.`);\n }\n }\n else {\n if ((executionPreference === 'auto') ||\n (variantPreference === 'auto')) {\n return unsupported(`Missing explicit execution (${executionPreference}) or variant (${variantPreference}) preference, but no scoring performed.`);\n }\n }\n logger === null || logger === void 0 ? void 0 : logger.debug(`Bench duration ${duration} yields inline score ${inlineScore} and worker score ${workerScore}.`);\n const succeed = (processor, executionApproach, variant) => {\n return {\n supported: true,\n useSIMD,\n processor,\n executionApproach,\n variant,\n executionQuanta: (executionApproach === 'inline' ? executionQuantaPreference : undefined),\n name,\n };\n };\n const resolveVariant = (score, variant, lookup) => {\n if (variant !== 'auto') {\n if (!checkScores || score > lookup[variant]) {\n return variant;\n }\n return 'failed';\n }\n if (score > lookup.c100) {\n return 'c100';\n }\n if (score > lookup.c50) {\n return 'c50';\n }\n if (score > lookup.c20) {\n return 'c20';\n }\n if (score > lookup.c10) {\n return 'c10';\n }\n return 'failed';\n };\n const reducePreference = (preference) => {\n switch (preference || 'auto') {\n case 'auto': {\n let inlineOption = reducePreference('inline');\n let workerOption = reducePreference('worker');\n logger === null || logger === void 0 ? void 0 : logger.debug(`Reducing auto preference: ${JSON.stringify(inlineOption)} vs ${JSON.stringify(workerOption)}`);\n if (inlineOption.supported === false) {\n return workerOption;\n }\n if (workerOption.supported === false) {\n return workerOption;\n }\n if (inlineOption.variant === workerOption.variant || inlineOption.variant === 'c50') {\n return inlineOption;\n }\n return workerOption;\n }\n case 'worker': {\n if (support_js_1.supportsSharedArrayBuffer(globalThis, window, logger)) {\n return reducePreference('worker-sab');\n }\n return reducePreference('worker-postMessage');\n }\n case 'inline': {\n const variant = resolveVariant(inlineScore, variantPreference, thresholds.inline);\n if (variant === 'failed') {\n return unsupported(`Performance score ${inlineScore} not sufficient for inline use with variant preference ${variantPreference}.`);\n }\n ;\n return succeed('voicefocus-inline-processor', 'inline', variant);\n }\n case 'worker-sab': {\n if (!supportsSAB) {\n const reason = 'Requested worker-sab but no SharedArrayBuffer support.';\n logger === null || logger === void 0 ? void 0 : logger.warn(reason);\n return { supported: false, reason };\n }\n const variant = resolveVariant(workerScore, variantPreference, thresholds.worker);\n if (variant === 'failed') {\n return unsupported(`Performance score ${workerScore} not sufficient for worker use with variant preference ${variantPreference}.`);\n }\n ;\n return succeed('voicefocus-worker-sab-processor', 'worker-sab', variant);\n }\n case 'worker-postMessage': {\n const variant = resolveVariant(workerScore, variantPreference, thresholds.worker);\n if (variant === 'failed') {\n return unsupported(`Performance score ${workerScore} not sufficient for worker use.`);\n }\n ;\n if (name === 'ns_es') {\n const reason = 'Requested echo suppression but postMessage executor does not support it.';\n logger === null || logger === void 0 ? void 0 : logger.warn(reason);\n return { supported: false, reason };\n }\n ;\n return succeed('voicefocus-worker-postMessage-processor', 'worker-postMessage', variant);\n }\n }\n };\n return reducePreference(executionPreference);\n};\nconst featureCheck = (forceSIMD, fetchConfig, logger, estimator) => __awaiter(void 0, void 0, void 0, function* () {\n const supports = {\n supportsSIMD: forceSIMD,\n supportsSAB: support_js_1.supportsSharedArrayBuffer(globalThis, window, logger),\n duration: -1,\n };\n if (forceSIMD) {\n logger === null || logger === void 0 ? void 0 : logger.info('Supports SIMD: true (force)');\n return supports;\n }\n const cleanup = !estimator;\n const e = estimator || new Estimator(fetchConfig, logger);\n try {\n const useSIMD = !support_js_1.isOldChrome(window, logger) && (yield e.supportsSIMD());\n logger === null || logger === void 0 ? void 0 : logger.info(`Supports SIMD: ${useSIMD} (force: ${forceSIMD})`);\n supports.supportsSIMD = useSIMD;\n return supports;\n }\n finally {\n if (cleanup) {\n e.stop();\n }\n }\n});\nconst estimateAndFeatureCheck = (forceSIMD, fetchConfig, estimatorBudget, logger) => __awaiter(void 0, void 0, void 0, function* () {\n const estimator = new Estimator(fetchConfig, logger);\n try {\n const supports = yield featureCheck(forceSIMD, fetchConfig, logger, estimator);\n if (supports.supportsSIMD) {\n try {\n supports.duration = yield estimator.measure(true, estimatorBudget);\n logger === null || logger === void 0 ? void 0 : logger.info('SIMD timing:', supports.duration);\n return supports;\n }\n catch (e) {\n logger === null || logger === void 0 ? void 0 : logger.warn('Failed SIMD estimation; falling back to non-SIMD.');\n supports.supportsSIMD = false;\n }\n }\n supports.duration = yield estimator.measure(false, estimatorBudget);\n logger === null || logger === void 0 ? void 0 : logger.info('No-SIMD timing:', supports.duration);\n return supports;\n }\n catch (e) {\n logger === null || logger === void 0 ? void 0 : logger.error('Could not feature check.', e);\n throw e;\n }\n finally {\n estimator.stop();\n }\n});\nconst measureAndDecideExecutionApproach = (spec, fetchConfig, logger, thresholds = PERFORMANCE_THRESHOLDS) => __awaiter(void 0, void 0, void 0, function* () {\n let executionPreference = spec.executionPreference;\n const { usagePreference, variantPreference, namePreference, simdPreference, estimatorBudget, executionQuantaPreference, } = spec;\n if (usagePreference === 'interactivity' && executionPreference !== 'inline') {\n logger === null || logger === void 0 ? void 0 : logger.debug(`Overriding execution preference ${executionPreference} to reflect interactivity preference.`);\n executionPreference = 'inline';\n }\n const forceSIMD = simdPreference === 'force';\n const knownModel = variantPreference !== 'auto';\n const knownExecution = executionPreference !== 'auto';\n let supports;\n try {\n if (knownModel && knownExecution) {\n supports = yield featureCheck(forceSIMD, fetchConfig, logger);\n }\n else {\n supports = yield estimateAndFeatureCheck(forceSIMD, fetchConfig, estimatorBudget, logger);\n }\n }\n catch (e) {\n logger === null || logger === void 0 ? void 0 : logger.error('Could not load estimator.', e);\n throw new Error('Could not load Voice Focus estimator.');\n }\n return decideExecutionApproach(Object.assign(Object.assign({}, supports), { simdPreference,\n executionPreference,\n variantPreference,\n namePreference,\n usagePreference,\n executionQuantaPreference }), thresholds, logger);\n});\nexports.measureAndDecideExecutionApproach = measureAndDecideExecutionApproach;\nconst decideModel = ({ category, name, variant, simd, url }) => {\n return `${category}-${name}-${variant}-v1${simd ? '_simd' : ''}`;\n};\nexports.decideModel = decideModel;\n","'use strict';\nvar aSet = require('../internals/a-set');\nvar has = require('../internals/set-helpers').has;\nvar size = require('../internals/set-size');\nvar getSetRecord = require('../internals/get-set-record');\nvar iterateSet = require('../internals/set-iterate');\nvar iterateSimple = require('../internals/iterate-simple');\nvar iteratorClose = require('../internals/iterator-close');\n\n// `Set.prototype.isDisjointFrom` method\n// https://tc39.github.io/proposal-set-methods/#Set.prototype.isDisjointFrom\nmodule.exports = function isDisjointFrom(other) {\n var O = aSet(this);\n var otherRec = getSetRecord(other);\n if (size(O) <= otherRec.size) return iterateSet(O, function (e) {\n if (otherRec.includes(e)) return false;\n }, true) !== false;\n var iterator = otherRec.getIterator();\n return iterateSimple(iterator, function (e) {\n if (has(O, e)) return iteratorClose(iterator, 'normal', false);\n }) !== false;\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport BackgroundFilterVideoFrameProcessorObserver, {\n FilterCPUUtilizationHighEvent,\n FilterFrameDurationHighEvent,\n} from './BackgroundFilterVideoFrameProcessorObserver';\n\n/**\n * This class adds the functionality to allow for a set of unique observers to be added to the\n * video frame processor.\n */\n/** @internal */\nexport default class BackgroundFilterVideoFrameProcessorDelegate {\n protected observers: Set = new Set();\n\n /**\n * Add an observer to the unique set. If a duplicate observer cannot be added.\n * @param observer An implementation of the observer interface.\n */\n addObserver(observer: BackgroundFilterVideoFrameProcessorObserver): void {\n this.observers.add(observer);\n }\n\n /**\n * Remove the observer from the set of observers.\n * @param observer An implementation of the observer interface.\n */\n removeObserver(observer: BackgroundFilterVideoFrameProcessorObserver): void {\n this.observers.delete(observer);\n }\n\n /**\n * Call the observer method with the event information. See [[BackgroundFilterVideoFrameProcessorObserver]]\n * for detailed info on this event.\n * @param event\n */\n filterFrameDurationHigh(event: FilterFrameDurationHighEvent): void {\n for (const observer of this.observers) {\n observer.filterFrameDurationHigh?.call(observer, event);\n }\n }\n\n filterCPUUtilizationHigh(event: FilterCPUUtilizationHighEvent): void {\n for (const observer of this.observers) {\n observer.filterCPUUtilizationHigh?.call(observer, event);\n }\n }\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nexport enum CheckNetworkTCPConnectivityFeedback {\n Succeeded,\n MeetingSessionURLsNotInitialized,\n ConnectionFailed,\n ICENegotiationFailed,\n}\n\nexport default CheckNetworkTCPConnectivityFeedback;\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport AudioVideoControllerState from '../audiovideocontroller/AudioVideoControllerState';\nimport DefaultModality from '../modality/DefaultModality';\nimport SDP from '../sdp/SDP';\nimport VideoCodecCapability from '../sdp/VideoCodecCapability';\nimport BaseTask from './BaseTask';\n\n/*\n * [[SetRemoteDescriptionTask]] asynchronously calls [[setRemoteDescription]] on the\n * peer connection and then waits for the tracks to be added and for the ICE connection\n * to complete.\n */\nexport default class SetRemoteDescriptionTask extends BaseTask {\n protected taskName = 'SetRemoteDescriptionTask';\n\n private cancelICEPromise: () => void;\n\n constructor(private context: AudioVideoControllerState) {\n super(context.logger);\n }\n\n cancel(): void {\n if (this.cancelICEPromise) {\n this.cancelICEPromise();\n }\n }\n\n async run(): Promise {\n const peer = this.context.peer;\n if (!peer) {\n this.logAndThrow('session does not have peer connection; bypass set remote description');\n }\n\n let sdp = this.context.sdpAnswer;\n sdp = new SDP(sdp).withoutServerReflexiveCandidates().sdp;\n if (this.context.audioProfile) {\n sdp = new SDP(sdp).withAudioMaxAverageBitrate(this.context.audioProfile.audioBitrateBps).sdp;\n if (this.context.audioProfile.isStereo()) {\n sdp = new SDP(sdp).withStereoAudio().sdp;\n }\n }\n\n if (\n this.context.videoSendCodecPreferences !== undefined &&\n this.context.videoSendCodecPreferences.length > 0\n ) {\n sdp = new SDP(sdp).withVideoSendCodecPreferences(\n this.context.meetingSupportedVideoSendCodecPreferences !== undefined\n ? this.context.meetingSupportedVideoSendCodecPreferences\n : this.context.videoSendCodecPreferences\n ).sdp;\n }\n this.context.prioritizedSendVideoCodecCapabilities = new SDP(\n sdp\n ).prioritizedSendVideoCodecCapabilities();\n this.context.currentVideoSendCodec =\n this.context.prioritizedSendVideoCodecCapabilities.length > 0\n ? this.context.prioritizedSendVideoCodecCapabilities[0]\n : undefined;\n\n const mediaStream = this.context.activeVideoInput;\n if (mediaStream !== undefined) {\n const attendeeId = this.context.audioVideoController.configuration.credentials.attendeeId;\n const isContent = new DefaultModality(attendeeId).hasModality(\n DefaultModality.MODALITY_CONTENT\n );\n const videoTrack = mediaStream.getVideoTracks()[0];\n if (isContent) {\n if (\n this.context.currentVideoSendCodec?.codecName === VideoCodecCapability.av1Main().codecName\n ) {\n // Based on our experiments: \"text\" contentHint gives good coding performance for content share using AV1\n // @ts-ignore\n videoTrack.contentHint = 'text';\n this.logger.info(`Setting content hint to text for AV1, attendee: ${attendeeId}`);\n } else if (this.context.audioVideoController.configuration.enableSVC) {\n // Set content hint to `motion` as a workaround for the issue Chrome cannot enable\n // temporal scalability for screen share\n // https://bugs.chromium.org/p/chromium/issues/detail?id=1433486\n // @ts-ignore\n videoTrack.contentHint = 'motion';\n this.logger.info(`Setting content hint to motion to enable SVC, attendee: ${attendeeId}`);\n }\n }\n }\n\n this.logger.info(`processed remote description is >>>${sdp}<<<`);\n const remoteDescription: RTCSessionDescription = {\n type: 'answer',\n sdp: sdp,\n toJSON: null,\n };\n\n try {\n await this.createICEConnectionCompletedPromise(remoteDescription);\n } catch (err) {\n throw err;\n }\n }\n\n private createICEConnectionCompletedPromise(\n remoteDescription: RTCSessionDescription\n ): Promise {\n return new Promise(async (resolve, reject) => {\n const checkConnectionCompleted = (): void => {\n if (\n this.context.peer.iceConnectionState === 'connected' ||\n this.context.peer.iceConnectionState === 'completed'\n ) {\n this.context.peer.removeEventListener(\n 'iceconnectionstatechange',\n checkConnectionCompleted\n );\n resolve();\n }\n };\n\n this.cancelICEPromise = () => {\n if (this.context.peer) {\n this.context.peer.removeEventListener(\n 'iceconnectionstatechange',\n checkConnectionCompleted\n );\n }\n reject(new Error(`${this.name()} got canceled while waiting for the ICE connection state`));\n };\n\n this.context.peer.addEventListener('iceconnectionstatechange', checkConnectionCompleted);\n\n try {\n await this.context.peer.setRemoteDescription(remoteDescription);\n this.logger.info('set remote description, waiting for ICE connection');\n checkConnectionCompleted();\n } catch (err) {\n reject(err);\n }\n });\n }\n}\n","var Buffer = require('buffer/').Buffer;\n\n/**\n * This is a polyfill for the static method `isView` of `ArrayBuffer`, which is\n * e.g. missing in IE 10.\n *\n * @api private\n */\nif (\n typeof ArrayBuffer !== 'undefined' &&\n typeof ArrayBuffer.isView === 'undefined'\n) {\n ArrayBuffer.isView = function(arg) {\n return viewStrings.indexOf(Object.prototype.toString.call(arg)) > -1;\n };\n}\n\n/**\n * @api private\n */\nvar viewStrings = [\n '[object Int8Array]',\n '[object Uint8Array]',\n '[object Uint8ClampedArray]',\n '[object Int16Array]',\n '[object Uint16Array]',\n '[object Int32Array]',\n '[object Uint32Array]',\n '[object Float32Array]',\n '[object Float64Array]',\n '[object DataView]',\n];\n\n/**\n * @api private\n */\nfunction isEmptyData(data) {\n if (typeof data === 'string') {\n return data.length === 0;\n }\n return data.byteLength === 0;\n}\n\n/**\n * @api private\n */\nfunction convertToBuffer(data) {\n if (typeof data === 'string') {\n data = new Buffer(data, 'utf8');\n }\n\n if (ArrayBuffer.isView(data)) {\n return new Uint8Array(data.buffer, data.byteOffset, data.byteLength / Uint8Array.BYTES_PER_ELEMENT);\n }\n\n return new Uint8Array(data);\n}\n\n/**\n * @api private\n */\nmodule.exports = exports = {\n isEmptyData: isEmptyData,\n convertToBuffer: convertToBuffer,\n};\n","/**\n * Node.js module for Forge message digests.\n *\n * @author Dave Longley\n *\n * Copyright 2011-2017 Digital Bazaar, Inc.\n */\nvar forge = require('./forge');\n\nmodule.exports = forge.md = forge.md || {};\nforge.md.algorithms = forge.md.algorithms || {};\n","'use strict';\nvar $ = require('../internals/export');\nvar globalThis = require('../internals/global-this');\nvar clearImmediate = require('../internals/task').clear;\n\n// `clearImmediate` method\n// http://w3c.github.io/setImmediate/#si-clearImmediate\n$({ global: true, bind: true, enumerable: true, forced: globalThis.clearImmediate !== clearImmediate }, {\n clearImmediate: clearImmediate\n});\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport Logger from '../logger/Logger';\nimport SimulcastLayers from '../simulcastlayers/SimulcastLayers';\nimport SimulcastTransceiverController from '../transceivercontroller/SimulcastTransceiverController';\nimport { Maybe } from '../utils/Types';\nimport DefaultVideoAndEncodeParameter from '../videocaptureandencodeparameter/DefaultVideoCaptureAndEncodeParameter';\nimport VideoStreamIndex from '../videostreamindex/VideoStreamIndex';\nimport BitrateParameters from './BitrateParameters';\nimport ConnectionMetrics from './ConnectionMetrics';\nimport SimulcastUplinkObserver from './SimulcastUplinkObserver';\nimport SimulcastUplinkPolicy from './SimulcastUplinkPolicy';\n\nconst enum ActiveStreams {\n kHi,\n kHiAndLow,\n kMidAndLow,\n}\n\n/**\n * [[DefaultSimulcastUplinkPolicy]] determines capture and encode\n * parameters that reacts to estimated uplink bandwidth\n */\nexport default class DefaultSimulcastUplinkPolicy implements SimulcastUplinkPolicy {\n static readonly kHiTargetBitrateKbpsHd = 1200;\n static readonly kMidTargetBitrateKbpsHd = 600;\n static readonly kLowTargetBitrateKbpsHd = 300;\n static readonly kHiTargetBitrateKbpsFhd = 2000;\n static readonly kMidTargetBitrateKbpsFhd = 1000;\n static readonly kLowTargetBitrateKbpsFhd = 500;\n\n private numSenders: number = 0;\n // Simulcast is disabled when there are only 2 or fewer attendees, because in that case the backend will forward REMBs from\n // receiver to sender. Therefore there is no need for simulcast based adaption.\n private shouldDisableSimulcast: boolean = false;\n private optimalParameters: DefaultVideoAndEncodeParameter;\n private parametersInEffect: DefaultVideoAndEncodeParameter;\n private newQualityMap = new Map();\n private currentQualityMap = new Map();\n private newActiveStreams: ActiveStreams = ActiveStreams.kHiAndLow;\n private videoIndex: VideoStreamIndex | null = null;\n private activeStreamsToPublish: ActiveStreams;\n private observerQueue: Set = new Set();\n private hiTargetBitrateKbps: number = DefaultSimulcastUplinkPolicy.kHiTargetBitrateKbpsHd;\n private midTargetBitrateKbps: number = DefaultSimulcastUplinkPolicy.kMidTargetBitrateKbpsHd;\n private lowTargetBitrateKbps: number = DefaultSimulcastUplinkPolicy.kLowTargetBitrateKbpsHd;\n private enableFhdVideo: boolean = false;\n\n constructor(private selfAttendeeId: string, private logger: Logger) {\n this.optimalParameters = new DefaultVideoAndEncodeParameter(0, 0, 0, 0, true);\n this.parametersInEffect = new DefaultVideoAndEncodeParameter(0, 0, 0, 0, true);\n this.currentQualityMap = this.fillEncodingParamWithBitrates([\n this.lowTargetBitrateKbps,\n 0,\n this.hiTargetBitrateKbps,\n ]);\n this.newQualityMap = this.fillEncodingParamWithBitrates([\n this.lowTargetBitrateKbps,\n 0,\n this.hiTargetBitrateKbps,\n ]);\n }\n\n updateConnectionMetric(_metrics: ConnectionMetrics): void {}\n\n private calculateEncodingParameters(): Map {\n // bitrates parameter min is not used for now\n const newBitrates: BitrateParameters[] = [\n new BitrateParameters(),\n new BitrateParameters(),\n new BitrateParameters(),\n ];\n\n if (this.shouldDisableSimulcast) {\n // See comment above `shouldDisableSimulcast` for usage.\n //\n // The value of `newActiveStreams` is somewhat irrelevant since in one to one calls\n // we forward REMBs, so this single stream will adapt anywhere from < 100 kbps to 1200 kbps\n // based on both sender and receiver network conditions. E.g. A receiver may calculate it's\n // receive BWE as 300 kbps, send that in a REMB which is forwarded, and on receipt the sender\n // will set its own BWE at 300 kbps, and start sending that as well (again, only for one-to-one\n // calls). Additionally the value `kHi` is only relevant to the send side (via\n // `encodingSimulcastLayersDidChange`) as it is not transmitted in anyform to the receiver.\n //\n // We use middle layer here to work around a bug in Chromium where\n // it seems when a transceiver is created when BWE is low (e.g. on a reconnection),\n // it will never reset the encoder even when `setParameters` is called. WebRTC bug\n // #12788 seems to call a similar issue out as fixed for VP8, it's not clear if this\n // is the same issue for H.264. Additionally we are not able to force a keyframe\n // request from the backend since it will only be sending padding (which also\n // don't have MID due to #10822). Since we don't scale when simulcast is disabled\n // this doesn't have any end-user effect.\n //\n // Note that this still relies on a little bit (5-6 packets) of padding on reconnect\n // and that technically the browser will still eventually try to send all 3 streams.\n //\n // Also note that due to some uninvestigated logic in bitrate allocation, Chromium\n // will skip the bottom layer if we try setting it to 1200 kbps instead so it will\n // still take a while to recover (as it needs to send padding until it reaches around\n // 1000 kbps).\n this.newActiveStreams = ActiveStreams.kHi;\n newBitrates[0].maxBitrateKbps = 0;\n newBitrates[1].maxBitrateKbps = this.hiTargetBitrateKbps;\n newBitrates[2].maxBitrateKbps = 0;\n } else if (this.numSenders <= 4) {\n // E.g., 320x192+ (640x384) + 1280x768\n this.newActiveStreams = ActiveStreams.kHiAndLow;\n newBitrates[0].maxBitrateKbps = this.lowTargetBitrateKbps;\n newBitrates[1].maxBitrateKbps = 0;\n newBitrates[2].maxBitrateKbps = this.hiTargetBitrateKbps;\n } else {\n // E.g., 320x192 + 640x384 + (1280x768)\n this.newActiveStreams = ActiveStreams.kMidAndLow;\n // Given the high number of senders, we reduce the low bitrate marginally to\n // make it easier to obtain videos from all remote senders\n newBitrates[0].maxBitrateKbps = (this.lowTargetBitrateKbps * 2) / 3;\n newBitrates[1].maxBitrateKbps =\n this.numSenders <= 6 ? this.midTargetBitrateKbps : this.midTargetBitrateKbps * 0.6;\n newBitrates[2].maxBitrateKbps = 0;\n }\n const bitrates: number[] = newBitrates.map((v, _i, _a) => {\n return v.maxBitrateKbps;\n });\n\n this.newQualityMap = this.fillEncodingParamWithBitrates(bitrates);\n if (!this.encodingParametersEqual()) {\n this.logger.info(\n `simulcast: policy:calculateEncodingParameters numSources:${\n this.numSenders\n } shouldDisableSimulcast:${\n this.shouldDisableSimulcast\n } newQualityMap: ${this.getQualityMapString(this.newQualityMap)}`\n );\n }\n return this.newQualityMap;\n }\n\n chooseMediaTrackConstraints(): MediaTrackConstraints {\n return undefined;\n }\n\n chooseEncodingParameters(): Map {\n this.currentQualityMap = this.newQualityMap;\n if (this.activeStreamsToPublish !== this.newActiveStreams) {\n this.activeStreamsToPublish = this.newActiveStreams;\n this.publishEncodingSimulcastLayer();\n }\n return this.currentQualityMap;\n }\n\n updateIndex(videoIndex: VideoStreamIndex): void {\n // the +1 for self is assuming that we intend to send video, since\n // the context here is VideoUplinkBandwidthPolicy\n const numSenders =\n videoIndex.numberOfVideoPublishingParticipantsExcludingSelf(this.selfAttendeeId) + 1;\n const numSendersChanged = numSenders !== this.numSenders;\n\n // See comment above `shouldDisableSimulcast`\n const numParticipants = videoIndex.numberOfParticipants();\n const newShouldDisableSimulcast = numParticipants >= 0 && numParticipants <= 2;\n const shouldDisableSimulcastChanged = this.shouldDisableSimulcast !== newShouldDisableSimulcast;\n\n this.numSenders = numSenders;\n this.shouldDisableSimulcast = newShouldDisableSimulcast;\n this.optimalParameters = new DefaultVideoAndEncodeParameter(\n this.captureWidth(),\n this.captureHeight(),\n this.captureFrameRate(),\n this.maxBandwidthKbps(),\n false\n );\n this.videoIndex = videoIndex;\n if (numSendersChanged || shouldDisableSimulcastChanged) {\n this.newQualityMap = this.calculateEncodingParameters();\n }\n }\n\n wantsResubscribe(): boolean {\n return !this.encodingParametersEqual();\n }\n\n private compareEncodingParameter(\n encoding1: RTCRtpEncodingParameters,\n encoding2: RTCRtpEncodingParameters\n ): boolean {\n return JSON.stringify(encoding1) === JSON.stringify(encoding2);\n }\n\n private encodingParametersEqual(): boolean {\n let different = false;\n for (const ridName of SimulcastTransceiverController.NAME_ARR_ASCENDING) {\n different =\n different ||\n !this.compareEncodingParameter(\n this.newQualityMap.get(ridName),\n this.currentQualityMap.get(ridName)\n );\n if (different) {\n break;\n }\n }\n\n return !different;\n }\n\n chooseCaptureAndEncodeParameters(): DefaultVideoAndEncodeParameter {\n // should deprecate in this policy\n this.parametersInEffect = this.optimalParameters.clone();\n return this.parametersInEffect.clone();\n }\n\n private captureWidth(): number {\n // should deprecate in this policy\n const width = this.enableFhdVideo ? 1920 : 1280;\n return width;\n }\n\n private captureHeight(): number {\n // should deprecate in this policy\n const height = this.enableFhdVideo ? 1080 : 768;\n return height;\n }\n\n private captureFrameRate(): number {\n // should deprecate in this policy\n return 15;\n }\n\n maxBandwidthKbps(): number {\n // should deprecate in this policy\n return this.enableFhdVideo ? 2500 : 1400;\n }\n\n setIdealMaxBandwidthKbps(_idealMaxBandwidthKbps: number): void {}\n setHasBandwidthPriority(_hasBandwidthPriority: boolean): void {}\n\n setHighResolutionFeatureEnabled(enabled: boolean): void {\n this.enableFhdVideo = enabled;\n // Raise the bitrates if we are sending FHD\n this.hiTargetBitrateKbps = enabled\n ? DefaultSimulcastUplinkPolicy.kHiTargetBitrateKbpsFhd\n : DefaultSimulcastUplinkPolicy.kHiTargetBitrateKbpsHd;\n this.midTargetBitrateKbps = enabled\n ? DefaultSimulcastUplinkPolicy.kMidTargetBitrateKbpsFhd\n : DefaultSimulcastUplinkPolicy.kMidTargetBitrateKbpsHd;\n this.lowTargetBitrateKbps = enabled\n ? DefaultSimulcastUplinkPolicy.kLowTargetBitrateKbpsFhd\n : DefaultSimulcastUplinkPolicy.kLowTargetBitrateKbpsHd;\n }\n\n wantsVideoDependencyDescriptorRtpHeaderExtension(): boolean {\n return true;\n }\n\n private fillEncodingParamWithBitrates(\n bitratesKbps: number[]\n ): Map {\n const newMap = new Map();\n const toBps = 1000;\n const nameArr = SimulcastTransceiverController.NAME_ARR_ASCENDING;\n const bitrateArr = bitratesKbps;\n // Don't scale the single simulcast stream regardless of its layer.\n let scale = this.shouldDisableSimulcast ? 1 : 4;\n for (let i = 0; i < nameArr.length; i++) {\n const ridName = nameArr[i];\n newMap.set(ridName, {\n rid: ridName,\n active: bitrateArr[i] > 0,\n scaleResolutionDownBy: Math.max(scale, 1),\n maxBitrate: bitrateArr[i] * toBps,\n });\n scale = scale / 2;\n }\n\n return newMap;\n }\n\n private getQualityMapString(params: Map): string {\n let qualityString = '';\n const localDescriptions = this.videoIndex.localStreamDescriptions();\n if (localDescriptions.length === 3) {\n params.forEach((value: RTCRtpEncodingParameters) => {\n qualityString += `{ rid: ${value.rid} active:${value.active} maxBitrate:${value.maxBitrate}}`;\n });\n }\n return qualityString;\n }\n\n getEncodingSimulcastLayer(activeStreams: ActiveStreams): SimulcastLayers {\n switch (activeStreams) {\n case ActiveStreams.kHi:\n return SimulcastLayers.High;\n case ActiveStreams.kHiAndLow:\n return SimulcastLayers.LowAndHigh;\n case ActiveStreams.kMidAndLow:\n return SimulcastLayers.LowAndMedium;\n }\n }\n\n private publishEncodingSimulcastLayer(): void {\n const simulcastLayers = this.getEncodingSimulcastLayer(this.activeStreamsToPublish);\n this.forEachObserver(observer => {\n Maybe.of(observer.encodingSimulcastLayersDidChange).map(f =>\n f.bind(observer)(simulcastLayers)\n );\n });\n }\n\n addObserver(observer: SimulcastUplinkObserver): void {\n this.logger.info('adding simulcast uplink observer');\n this.observerQueue.add(observer);\n }\n\n removeObserver(observer: SimulcastUplinkObserver): void {\n this.logger.info('removing simulcast uplink observer');\n this.observerQueue.delete(observer);\n }\n\n forEachObserver(observerFunc: (observer: SimulcastUplinkObserver) => void): void {\n for (const observer of this.observerQueue) {\n observerFunc(observer);\n }\n }\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport AudioVideoControllerState from '../audiovideocontroller/AudioVideoControllerState';\nimport RemovableObserver from '../removableobserver/RemovableObserver';\nimport SignalingClientEvent from '../signalingclient/SignalingClientEvent';\nimport SignalingClientEventType from '../signalingclient/SignalingClientEventType';\nimport SignalingClientObserver from '../signalingclientobserver/SignalingClientObserver';\nimport {\n SdkAudioMetadataFrame,\n SdkAudioStreamIdInfoFrame,\n SdkSignalFrame,\n} from '../signalingprotocol/SignalingProtocol.js';\nimport BaseTask from './BaseTask';\n\nexport default class ListenForVolumeIndicatorsTask\n extends BaseTask\n implements RemovableObserver, SignalingClientObserver {\n protected taskName = 'ListenForVolumeIndicatorsTask';\n constructor(private context: AudioVideoControllerState) {\n super(context.logger);\n }\n\n async run(): Promise {\n this.context.removableObservers.push(this);\n this.context.signalingClient.registerObserver(this);\n this.context.realtimeController.realtimeSubscribeToMuteAndUnmuteLocalAudio(\n this.realtimeMuteAndUnmuteHandler\n );\n }\n\n removeObserver(): void {\n this.context.realtimeController.realtimeUnsubscribeToMuteAndUnmuteLocalAudio(\n this.realtimeMuteAndUnmuteHandler\n );\n this.context.signalingClient.removeObserver(this);\n }\n\n handleSignalingClientEvent(event: SignalingClientEvent): void {\n if (event.type !== SignalingClientEventType.ReceivedSignalFrame) {\n return;\n }\n if (event.message.type === SdkSignalFrame.Type.AUDIO_STREAM_ID_INFO) {\n // @ts-ignore\n const audioStreamIdInfo: SdkAudioStreamIdInfoFrame = event.message.audioStreamIdInfo;\n this.context.volumeIndicatorAdapter.sendRealtimeUpdatesForAudioStreamIdInfo(\n audioStreamIdInfo\n );\n } else if (event.message.type === SdkSignalFrame.Type.AUDIO_METADATA) {\n // @ts-ignore\n const audioMetadata: SdkAudioMetadataFrame = event.message.audioMetadata;\n this.context.volumeIndicatorAdapter.sendRealtimeUpdatesForAudioMetadata(audioMetadata);\n }\n }\n\n realtimeMuteAndUnmuteHandler = (muted: boolean): void => {\n this.context.signalingClient.mute(muted);\n };\n}\n","\"use strict\";\n\nexports.__esModule = true;\nexports.default = createWebStorage;\n\nvar _getStorage = _interopRequireDefault(require(\"./getStorage\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction createWebStorage(type) {\n var storage = (0, _getStorage.default)(type);\n return {\n getItem: function getItem(key) {\n return new Promise(function (resolve, reject) {\n resolve(storage.getItem(key));\n });\n },\n setItem: function setItem(key, item) {\n return new Promise(function (resolve, reject) {\n resolve(storage.setItem(key, item));\n });\n },\n removeItem: function removeItem(key) {\n return new Promise(function (resolve, reject) {\n resolve(storage.removeItem(key));\n });\n }\n };\n}","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport DefaultVideoCaptureAndEncodeParameter from '../videocaptureandencodeparameter/DefaultVideoCaptureAndEncodeParameter';\nimport VideoCaptureAndEncodeParameter from '../videocaptureandencodeparameter/VideoCaptureAndEncodeParameter';\nimport VideoStreamIndex from '../videostreamindex/VideoStreamIndex';\nimport VideoUplinkBandwidthPolicy from '../videouplinkbandwidthpolicy/VideoUplinkBandwidthPolicy';\nimport ConnectionMetrics from './ConnectionMetrics';\n\nexport default class NoVideoUplinkBandwidthPolicy implements VideoUplinkBandwidthPolicy {\n constructor() {}\n updateConnectionMetric(_metrics: ConnectionMetrics): void {}\n chooseMediaTrackConstraints(): MediaTrackConstraints {\n return {};\n }\n chooseEncodingParameters(): Map {\n return new Map();\n }\n updateIndex(_videoIndex: VideoStreamIndex): void {}\n wantsResubscribe(): boolean {\n return false;\n }\n chooseCaptureAndEncodeParameters(): VideoCaptureAndEncodeParameter {\n return new DefaultVideoCaptureAndEncodeParameter(0, 0, 0, 0, false);\n }\n maxBandwidthKbps(): number {\n return 0;\n }\n setIdealMaxBandwidthKbps(_idealMaxBandwidthKbps: number): void {}\n setHasBandwidthPriority(_hasBandwidthPriority: boolean): void {}\n setHighResolutionFeatureEnabled?(_enabled: boolean): void {}\n wantsVideoDependencyDescriptorRtpHeaderExtension(): boolean {\n return false;\n }\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport AudioVideoControllerState from '../audiovideocontroller/AudioVideoControllerState';\nimport VideoLogEvent from '../statscollector/VideoLogEvent';\nimport BaseTask from './BaseTask';\n\n/*\n * [[AttachMediaInputTask]] adds audio and video input to peer connection.\n */\nexport default class AttachMediaInputTask extends BaseTask {\n protected taskName = 'AttachMediaInputTask';\n\n constructor(private context: AudioVideoControllerState) {\n super(context.logger);\n }\n\n async run(): Promise {\n const transceiverController = this.context.transceiverController;\n transceiverController.setPeer(this.context.peer);\n transceiverController.setupLocalTransceivers();\n\n const audioInput = this.context.activeAudioInput;\n\n if (audioInput) {\n const audioTracks = audioInput.getAudioTracks();\n this.context.logger.info('attaching audio track to peer connection');\n await transceiverController.setAudioInput(audioTracks.length ? audioTracks[0] : null);\n } else {\n await transceiverController.setAudioInput(null);\n this.context.logger.info('no audio track');\n }\n\n this.setAudioCodecPreferences();\n\n const videoInput = this.context.activeVideoInput;\n if (videoInput) {\n const videoTracks = videoInput.getVideoTracks();\n const videoTrack: MediaStreamTrack | null = videoTracks.length ? videoTracks[0] : null;\n this.context.logger.info('attaching video track to peer connection');\n await transceiverController.setVideoInput(videoTrack);\n if (this.context.enableSimulcast && this.context.videoUplinkBandwidthPolicy) {\n const encodingParam = this.context.videoUplinkBandwidthPolicy.chooseEncodingParameters();\n transceiverController.setEncodingParameters(encodingParam);\n }\n if (videoTrack) {\n this.context.statsCollector.logVideoEvent(\n VideoLogEvent.InputAttached,\n this.context.videoDeviceInformation\n );\n }\n } else {\n await transceiverController.setVideoInput(null);\n this.context.logger.info('no video track');\n }\n\n this.context.videoSubscriptions = transceiverController.updateVideoTransceivers(\n this.context.videoStreamIndex,\n this.context.videosToReceive\n );\n // This will cache the current index so that we maintain the values over the course of the subscribe.\n this.context.videoStreamIndex.subscribeFrameSent();\n }\n\n private setAudioCodecPreferences(): void {\n const supportsSetCodecPreferences =\n window.RTCRtpTransceiver && 'setCodecPreferences' in window.RTCRtpTransceiver.prototype;\n const enableAudioRedundancy = this.context.audioProfile.hasRedundancyEnabled();\n /* istanbul ignore if */\n if (!supportsSetCodecPreferences) {\n this.context.logger.warn(`Setting codec preferences not supported`);\n return;\n }\n const audioTransceiver = this.context.transceiverController.localAudioTransceiver();\n const { codecs } = RTCRtpSender.getCapabilities('audio');\n this.context.logger.debug(`Available audio codecs ${JSON.stringify(codecs, null, 4)}`);\n const redCodecIndex = codecs.findIndex(c => c.mimeType === 'audio/red');\n /* istanbul ignore if */\n if (!audioTransceiver) {\n this.context.logger.error(`audio transceiver is null`);\n return;\n }\n if (redCodecIndex >= 0) {\n const redCodec = codecs[redCodecIndex];\n codecs.splice(redCodecIndex, 1);\n if (enableAudioRedundancy) {\n // Add to the beginning of the codec list to\n // signify that this is the preferred codec.\n // Media backend enables RED only if the preference\n // for RED is highest.\n codecs.unshift(redCodec);\n this.context.logger.info('audio/red set as preferred codec');\n } else {\n this.context.logger.info('audio/red removed from preferred codec');\n }\n audioTransceiver.setCodecPreferences(codecs);\n return;\n }\n this.context.logger.info('audio/red codec not supported');\n }\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport VideoStreamDescription from '../videostreamindex/VideoStreamDescription';\nimport SignalingClientVideoSubscriptionConfiguration from './SignalingClientVideoSubscriptionConfiguration';\n\n/**\n * [[SignalingClientSubscribe]] contains settings for the Subscribe SignalFrame.\n */\nexport default class SignalingClientSubscribe {\n videoSubscriptionConfiguration: SignalingClientVideoSubscriptionConfiguration[] = [];\n\n /** Initializes a SignalingClientSubscribe with the given properties.\n *\n * @param attendeeId Attendee ID of the client\n * @param sdpOffer SDP offer created by WebRTC\n * @param audioHost host\n * @param audioMuted Whether audio from client is muted\n * @param audioCheckin Whether audio is in checked-in state\n * @param receiveStreamIds Which video streams to receive\n * @param localVideoEnabled Whether to send a video stream for the local camera\n * @param array of local video stream description\n * @param connectionTypeHasVideo Whether connection type has video\n * @param compressedSdpOffer Compressed version of the SDP offer which was created by WebRTC\n */\n constructor(\n public attendeeId: string,\n public sdpOffer: string,\n public audioHost: string,\n public audioMuted: boolean,\n public audioCheckin: boolean,\n public receiveStreamIds: number[],\n public localVideoEnabled: boolean,\n public videoStreamDescriptions: VideoStreamDescription[],\n public connectionTypeHasVideo: boolean,\n public compressedSdpOffer: Uint8Array\n ) {}\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\n// Use \"ua-parser-js\" over \"detect-browser\" to get more detailed information.\nimport { UAParser } from 'ua-parser-js';\n\nimport Logger from '../logger/Logger';\nimport Versioning from '../versioning/Versioning';\nimport UserAgentParser from './UserAgentParser';\n\n/**\n * [[DefaultUserAgentParser]] uses UAParser to parse the browser's user agent.\n * It is responsible to hold and provide browser, OS and device specific information.\n */\nexport default class DefaultUserAgentParser implements UserAgentParser {\n private static readonly UNAVAILABLE = 'Unavailable';\n private parserResult: UAParser.IResult;\n private browserName: string;\n private browserVersion: string;\n private deviceName: string;\n private browserMajorVersion: string;\n\n constructor(logger: Logger) {\n try {\n this.parserResult =\n navigator && navigator.userAgent\n ? new UAParser(navigator.userAgent).getResult()\n : undefined;\n } catch (error) {\n /* istanbul ignore next */\n logger.error(error.message);\n }\n\n this.browserMajorVersion =\n this.parserResult?.browser?.version?.split('.')[0] || DefaultUserAgentParser.UNAVAILABLE;\n this.browserName = this.parserResult?.browser.name || DefaultUserAgentParser.UNAVAILABLE;\n this.browserVersion = this.parserResult?.browser.version || DefaultUserAgentParser.UNAVAILABLE;\n this.deviceName =\n [this.parserResult?.device.vendor || '', this.parserResult?.device.model || '']\n .join(' ')\n .trim() || DefaultUserAgentParser.UNAVAILABLE;\n }\n\n getParserResult(): { [key: string]: string } {\n return {\n browserMajorVersion: this.browserMajorVersion,\n browserName: this.browserName,\n browserVersion: this.browserVersion,\n deviceName: this.deviceName,\n osName: this.parserResult?.os.name || DefaultUserAgentParser.UNAVAILABLE,\n osVersion: this.parserResult?.os.version || DefaultUserAgentParser.UNAVAILABLE,\n sdkVersion: Versioning.sdkVersion,\n sdkName: Versioning.sdkName,\n };\n }\n}\n","'use strict';\nvar $ = require('../internals/export');\nvar bind = require('../internals/function-bind-context');\nvar aSet = require('../internals/a-set');\nvar iterate = require('../internals/set-iterate');\n\n// `Set.prototype.find` method\n// https://github.com/tc39/proposal-collection-methods\n$({ target: 'Set', proto: true, real: true, forced: true }, {\n find: function find(callbackfn /* , thisArg */) {\n var set = aSet(this);\n var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n var result = iterate(set, function (value) {\n if (boundFunction(value, value, set)) return { value: value };\n }, true);\n return result && result.value;\n }\n});\n","/** @license React v17.0.2\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var b=60103,c=60106,d=60107,e=60108,f=60114,g=60109,h=60110,k=60112,l=60113,m=60120,n=60115,p=60116,q=60121,r=60122,u=60117,v=60129,w=60131;\nif(\"function\"===typeof Symbol&&Symbol.for){var x=Symbol.for;b=x(\"react.element\");c=x(\"react.portal\");d=x(\"react.fragment\");e=x(\"react.strict_mode\");f=x(\"react.profiler\");g=x(\"react.provider\");h=x(\"react.context\");k=x(\"react.forward_ref\");l=x(\"react.suspense\");m=x(\"react.suspense_list\");n=x(\"react.memo\");p=x(\"react.lazy\");q=x(\"react.block\");r=x(\"react.server.block\");u=x(\"react.fundamental\");v=x(\"react.debug_trace_mode\");w=x(\"react.legacy_hidden\")}\nfunction y(a){if(\"object\"===typeof a&&null!==a){var t=a.$$typeof;switch(t){case b:switch(a=a.type,a){case d:case f:case e:case l:case m:return a;default:switch(a=a&&a.$$typeof,a){case h:case k:case p:case n:case g:return a;default:return t}}case c:return t}}}var z=g,A=b,B=k,C=d,D=p,E=n,F=c,G=f,H=e,I=l;exports.ContextConsumer=h;exports.ContextProvider=z;exports.Element=A;exports.ForwardRef=B;exports.Fragment=C;exports.Lazy=D;exports.Memo=E;exports.Portal=F;exports.Profiler=G;exports.StrictMode=H;\nexports.Suspense=I;exports.isAsyncMode=function(){return!1};exports.isConcurrentMode=function(){return!1};exports.isContextConsumer=function(a){return y(a)===h};exports.isContextProvider=function(a){return y(a)===g};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===b};exports.isForwardRef=function(a){return y(a)===k};exports.isFragment=function(a){return y(a)===d};exports.isLazy=function(a){return y(a)===p};exports.isMemo=function(a){return y(a)===n};\nexports.isPortal=function(a){return y(a)===c};exports.isProfiler=function(a){return y(a)===f};exports.isStrictMode=function(a){return y(a)===e};exports.isSuspense=function(a){return y(a)===l};exports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===d||a===f||a===v||a===e||a===l||a===m||a===w||\"object\"===typeof a&&null!==a&&(a.$$typeof===p||a.$$typeof===n||a.$$typeof===g||a.$$typeof===h||a.$$typeof===k||a.$$typeof===u||a.$$typeof===q||a[0]===r)?!0:!1};\nexports.typeOf=y;\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nexport enum AudioLogEvent {\n DeviceChanged,\n MutedLocal,\n UnmutedLocal,\n Connected,\n ConnectFailed,\n RedmicStartLoss,\n RedmicEndLoss,\n}\n\nexport default AudioLogEvent;\n","var util = require('../util');\nvar XmlNode = require('./xml-node').XmlNode;\nvar XmlText = require('./xml-text').XmlText;\n\nfunction XmlBuilder() { }\n\nXmlBuilder.prototype.toXML = function(params, shape, rootElement, noEmpty) {\n var xml = new XmlNode(rootElement);\n applyNamespaces(xml, shape, true);\n serialize(xml, params, shape);\n return xml.children.length > 0 || noEmpty ? xml.toString() : '';\n};\n\nfunction serialize(xml, value, shape) {\n switch (shape.type) {\n case 'structure': return serializeStructure(xml, value, shape);\n case 'map': return serializeMap(xml, value, shape);\n case 'list': return serializeList(xml, value, shape);\n default: return serializeScalar(xml, value, shape);\n }\n}\n\nfunction serializeStructure(xml, params, shape) {\n util.arrayEach(shape.memberNames, function(memberName) {\n var memberShape = shape.members[memberName];\n if (memberShape.location !== 'body') return;\n\n var value = params[memberName];\n var name = memberShape.name;\n if (value !== undefined && value !== null) {\n if (memberShape.isXmlAttribute) {\n xml.addAttribute(name, value);\n } else if (memberShape.flattened) {\n serialize(xml, value, memberShape);\n } else {\n var element = new XmlNode(name);\n xml.addChildNode(element);\n applyNamespaces(element, memberShape);\n serialize(element, value, memberShape);\n }\n }\n });\n}\n\nfunction serializeMap(xml, map, shape) {\n var xmlKey = shape.key.name || 'key';\n var xmlValue = shape.value.name || 'value';\n\n util.each(map, function(key, value) {\n var entry = new XmlNode(shape.flattened ? shape.name : 'entry');\n xml.addChildNode(entry);\n\n var entryKey = new XmlNode(xmlKey);\n var entryValue = new XmlNode(xmlValue);\n entry.addChildNode(entryKey);\n entry.addChildNode(entryValue);\n\n serialize(entryKey, key, shape.key);\n serialize(entryValue, value, shape.value);\n });\n}\n\nfunction serializeList(xml, list, shape) {\n if (shape.flattened) {\n util.arrayEach(list, function(value) {\n var name = shape.member.name || shape.name;\n var element = new XmlNode(name);\n xml.addChildNode(element);\n serialize(element, value, shape.member);\n });\n } else {\n util.arrayEach(list, function(value) {\n var name = shape.member.name || 'member';\n var element = new XmlNode(name);\n xml.addChildNode(element);\n serialize(element, value, shape.member);\n });\n }\n}\n\nfunction serializeScalar(xml, value, shape) {\n xml.addChildNode(\n new XmlText(shape.toWireFormat(value))\n );\n}\n\nfunction applyNamespaces(xml, shape, isRoot) {\n var uri, prefix = 'xmlns';\n if (shape.xmlNamespaceUri) {\n uri = shape.xmlNamespaceUri;\n if (shape.xmlNamespacePrefix) prefix += ':' + shape.xmlNamespacePrefix;\n } else if (isRoot && shape.api.xmlNamespaceUri) {\n uri = shape.api.xmlNamespaceUri;\n }\n\n if (uri) xml.addAttribute(prefix, uri);\n}\n\n/**\n * @api private\n */\nmodule.exports = XmlBuilder;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['rds'] = {};\nAWS.RDS = Service.defineService('rds', ['2013-01-10', '2013-02-12', '2013-09-09', '2014-09-01', '2014-09-01*', '2014-10-31']);\nrequire('../lib/services/rds');\nObject.defineProperty(apiLoader.services['rds'], '2013-01-10', {\n get: function get() {\n var model = require('../apis/rds-2013-01-10.min.json');\n model.paginators = require('../apis/rds-2013-01-10.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\nObject.defineProperty(apiLoader.services['rds'], '2013-02-12', {\n get: function get() {\n var model = require('../apis/rds-2013-02-12.min.json');\n model.paginators = require('../apis/rds-2013-02-12.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\nObject.defineProperty(apiLoader.services['rds'], '2013-09-09', {\n get: function get() {\n var model = require('../apis/rds-2013-09-09.min.json');\n model.paginators = require('../apis/rds-2013-09-09.paginators.json').pagination;\n model.waiters = require('../apis/rds-2013-09-09.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\nObject.defineProperty(apiLoader.services['rds'], '2014-09-01', {\n get: function get() {\n var model = require('../apis/rds-2014-09-01.min.json');\n model.paginators = require('../apis/rds-2014-09-01.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\nObject.defineProperty(apiLoader.services['rds'], '2014-10-31', {\n get: function get() {\n var model = require('../apis/rds-2014-10-31.min.json');\n model.paginators = require('../apis/rds-2014-10-31.paginators.json').pagination;\n model.waiters = require('../apis/rds-2014-10-31.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.RDS;\n","// String encode/decode helpers\n'use strict';\n\n\n// Quick check if we can use fast array to bin string conversion\n//\n// - apply(Array) can fail on Android 2.2\n// - apply(Uint8Array) can fail on iOS 5.1 Safari\n//\nlet STR_APPLY_UIA_OK = true;\n\ntry { String.fromCharCode.apply(null, new Uint8Array(1)); } catch (__) { STR_APPLY_UIA_OK = false; }\n\n\n// Table with utf8 lengths (calculated by first byte of sequence)\n// Note, that 5 & 6-byte values and some 4-byte values can not be represented in JS,\n// because max possible codepoint is 0x10ffff\nconst _utf8len = new Uint8Array(256);\nfor (let q = 0; q < 256; q++) {\n _utf8len[q] = (q >= 252 ? 6 : q >= 248 ? 5 : q >= 240 ? 4 : q >= 224 ? 3 : q >= 192 ? 2 : 1);\n}\n_utf8len[254] = _utf8len[254] = 1; // Invalid sequence start\n\n\n// convert string to array (typed, when possible)\nmodule.exports.string2buf = (str) => {\n if (typeof TextEncoder === 'function' && TextEncoder.prototype.encode) {\n return new TextEncoder().encode(str);\n }\n\n let buf, c, c2, m_pos, i, str_len = str.length, buf_len = 0;\n\n // count binary size\n for (m_pos = 0; m_pos < str_len; m_pos++) {\n c = str.charCodeAt(m_pos);\n if ((c & 0xfc00) === 0xd800 && (m_pos + 1 < str_len)) {\n c2 = str.charCodeAt(m_pos + 1);\n if ((c2 & 0xfc00) === 0xdc00) {\n c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);\n m_pos++;\n }\n }\n buf_len += c < 0x80 ? 1 : c < 0x800 ? 2 : c < 0x10000 ? 3 : 4;\n }\n\n // allocate buffer\n buf = new Uint8Array(buf_len);\n\n // convert\n for (i = 0, m_pos = 0; i < buf_len; m_pos++) {\n c = str.charCodeAt(m_pos);\n if ((c & 0xfc00) === 0xd800 && (m_pos + 1 < str_len)) {\n c2 = str.charCodeAt(m_pos + 1);\n if ((c2 & 0xfc00) === 0xdc00) {\n c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);\n m_pos++;\n }\n }\n if (c < 0x80) {\n /* one byte */\n buf[i++] = c;\n } else if (c < 0x800) {\n /* two bytes */\n buf[i++] = 0xC0 | (c >>> 6);\n buf[i++] = 0x80 | (c & 0x3f);\n } else if (c < 0x10000) {\n /* three bytes */\n buf[i++] = 0xE0 | (c >>> 12);\n buf[i++] = 0x80 | (c >>> 6 & 0x3f);\n buf[i++] = 0x80 | (c & 0x3f);\n } else {\n /* four bytes */\n buf[i++] = 0xf0 | (c >>> 18);\n buf[i++] = 0x80 | (c >>> 12 & 0x3f);\n buf[i++] = 0x80 | (c >>> 6 & 0x3f);\n buf[i++] = 0x80 | (c & 0x3f);\n }\n }\n\n return buf;\n};\n\n// Helper\nconst buf2binstring = (buf, len) => {\n // On Chrome, the arguments in a function call that are allowed is `65534`.\n // If the length of the buffer is smaller than that, we can use this optimization,\n // otherwise we will take a slower path.\n if (len < 65534) {\n if (buf.subarray && STR_APPLY_UIA_OK) {\n return String.fromCharCode.apply(null, buf.length === len ? buf : buf.subarray(0, len));\n }\n }\n\n let result = '';\n for (let i = 0; i < len; i++) {\n result += String.fromCharCode(buf[i]);\n }\n return result;\n};\n\n\n// convert array to string\nmodule.exports.buf2string = (buf, max) => {\n const len = max || buf.length;\n\n if (typeof TextDecoder === 'function' && TextDecoder.prototype.decode) {\n return new TextDecoder().decode(buf.subarray(0, max));\n }\n\n let i, out;\n\n // Reserve max possible length (2 words per char)\n // NB: by unknown reasons, Array is significantly faster for\n // String.fromCharCode.apply than Uint16Array.\n const utf16buf = new Array(len * 2);\n\n for (out = 0, i = 0; i < len;) {\n let c = buf[i++];\n // quick process ascii\n if (c < 0x80) { utf16buf[out++] = c; continue; }\n\n let c_len = _utf8len[c];\n // skip 5 & 6 byte codes\n if (c_len > 4) { utf16buf[out++] = 0xfffd; i += c_len - 1; continue; }\n\n // apply mask on first byte\n c &= c_len === 2 ? 0x1f : c_len === 3 ? 0x0f : 0x07;\n // join the rest\n while (c_len > 1 && i < len) {\n c = (c << 6) | (buf[i++] & 0x3f);\n c_len--;\n }\n\n // terminated by end of string?\n if (c_len > 1) { utf16buf[out++] = 0xfffd; continue; }\n\n if (c < 0x10000) {\n utf16buf[out++] = c;\n } else {\n c -= 0x10000;\n utf16buf[out++] = 0xd800 | ((c >> 10) & 0x3ff);\n utf16buf[out++] = 0xdc00 | (c & 0x3ff);\n }\n }\n\n return buf2binstring(utf16buf, out);\n};\n\n\n// Calculate max possible position in utf8 buffer,\n// that will not break sequence. If that's not possible\n// - (very small limits) return max size as is.\n//\n// buf[] - utf8 bytes array\n// max - length limit (mandatory);\nmodule.exports.utf8border = (buf, max) => {\n\n max = max || buf.length;\n if (max > buf.length) { max = buf.length; }\n\n // go back from last position, until start of sequence found\n let pos = max - 1;\n while (pos >= 0 && (buf[pos] & 0xC0) === 0x80) { pos--; }\n\n // Very small and broken sequence,\n // return max, because we should return something anyway.\n if (pos < 0) { return max; }\n\n // If we came to start of buffer - that means buffer is too small,\n // return max too.\n if (pos === 0) { return max; }\n\n return (pos + _utf8len[buf[pos]] > max) ? pos : max;\n};\n","var util = require('../util');\nvar AWS = require('../core');\n\n/**\n * Prepend prefix defined by API model to endpoint that's already\n * constructed. This feature does not apply to operations using\n * endpoint discovery and can be disabled.\n * @api private\n */\nfunction populateHostPrefix(request) {\n var enabled = request.service.config.hostPrefixEnabled;\n if (!enabled) return request;\n var operationModel = request.service.api.operations[request.operation];\n //don't marshal host prefix when operation has endpoint discovery traits\n if (hasEndpointDiscover(request)) return request;\n if (operationModel.endpoint && operationModel.endpoint.hostPrefix) {\n var hostPrefixNotation = operationModel.endpoint.hostPrefix;\n var hostPrefix = expandHostPrefix(hostPrefixNotation, request.params, operationModel.input);\n prependEndpointPrefix(request.httpRequest.endpoint, hostPrefix);\n validateHostname(request.httpRequest.endpoint.hostname);\n }\n return request;\n}\n\n/**\n * @api private\n */\nfunction hasEndpointDiscover(request) {\n var api = request.service.api;\n var operationModel = api.operations[request.operation];\n var isEndpointOperation = api.endpointOperation && (api.endpointOperation === util.string.lowerFirst(operationModel.name));\n return (operationModel.endpointDiscoveryRequired !== 'NULL' || isEndpointOperation === true);\n}\n\n/**\n * @api private\n */\nfunction expandHostPrefix(hostPrefixNotation, params, shape) {\n util.each(shape.members, function(name, member) {\n if (member.hostLabel === true) {\n if (typeof params[name] !== 'string' || params[name] === '') {\n throw util.error(new Error(), {\n message: 'Parameter ' + name + ' should be a non-empty string.',\n code: 'InvalidParameter'\n });\n }\n var regex = new RegExp('\\\\{' + name + '\\\\}', 'g');\n hostPrefixNotation = hostPrefixNotation.replace(regex, params[name]);\n }\n });\n return hostPrefixNotation;\n}\n\n/**\n * @api private\n */\nfunction prependEndpointPrefix(endpoint, prefix) {\n if (endpoint.host) {\n endpoint.host = prefix + endpoint.host;\n }\n if (endpoint.hostname) {\n endpoint.hostname = prefix + endpoint.hostname;\n }\n}\n\n/**\n * @api private\n */\nfunction validateHostname(hostname) {\n var labels = hostname.split('.');\n //Reference: https://tools.ietf.org/html/rfc1123#section-2\n var hostPattern = /^[a-zA-Z0-9]{1}$|^[a-zA-Z0-9][a-zA-Z0-9\\-]*[a-zA-Z0-9]$/;\n util.arrayEach(labels, function(label) {\n if (!label.length || label.length < 1 || label.length > 63) {\n throw util.error(new Error(), {\n code: 'ValidationError',\n message: 'Hostname label length should be between 1 to 63 characters, inclusive.'\n });\n }\n if (!hostPattern.test(label)) {\n throw AWS.util.error(new Error(),\n {code: 'ValidationError', message: label + ' is not hostname compatible.'});\n }\n });\n}\n\nmodule.exports = {\n populateHostPrefix: populateHostPrefix\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs support document.cookie\n (function standardBrowserEnv() {\n return {\n write: function write(name, value, expires, path, domain, secure) {\n var cookie = [];\n cookie.push(name + '=' + encodeURIComponent(value));\n\n if (utils.isNumber(expires)) {\n cookie.push('expires=' + new Date(expires).toGMTString());\n }\n\n if (utils.isString(path)) {\n cookie.push('path=' + path);\n }\n\n if (utils.isString(domain)) {\n cookie.push('domain=' + domain);\n }\n\n if (secure === true) {\n cookie.push('secure');\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read: function read(name) {\n var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove: function remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n };\n })() :\n\n // Non standard browser env (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return {\n write: function write() {},\n read: function read() { return null; },\n remove: function remove() {}\n };\n })()\n);\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\n/*\n* When redacting personally identifiable information (PII) from a streaming transcription, Amazon Transcribe replaces each identified instance of PII with [PII] in your transcript.\n* An additional option available for streaming audio is PII identification. \n* When you activate PII Identification, Amazon Transcribe labels the PII in your transcription results under an Entities object. \n* PII identification and redaction for streaming jobs is performed only upon complete transcription of the audio segments.\n* category refers to whether the entity is a PII or PHI data.\n* confidence refers to the confidence that the speech it flagged for redaction/identification is truly PII. Confidence value ranges from 0 to 1 inclusive.\n* type refers to the type of PII/PHI data that is identified. The current supported type values are: BANK_ACCOUNT_NUMBER, BANK_ROUTING, CREDIT_DEBIT_NUMBER, CREDIT_DEBIT_CVV, CREDIT_DEBIT_EXPIRY, PIN, EMAIL, ADDRESS, NAME, PHONE, SSN.\n* type is only available in case of engine transcribe and not in medical transcribe\n* type can be expected to change and grow as Transcribe evolves\n* endTimeMs and startTimeMs are epoch timestamps in milliseconds\n* Sample Redacted PII Data would look similar to this :\n* \"Entities\": [\n {\n \"Content\": \"[NAME]\",\n \"Category\": \"PII\",\n \"Type\": \"NAME\",\n \"StartTime\" : 1636493289421,\n \"EndTime\" : 1636493290016,\n \"Confidence\": 0.9989 \n }\n ]\n* Sample PII Identified data would look similar to this :\n* \"Entities\": [\n {\n \"Content\": \"janet smithy\",\n \"Category\": \"PII\",\n \"Type\": \"NAME\",\n \"StartTime\" : 1636493289421,\n \"EndTime\" : 1636493290016,\n \"Confidence\": 0.9989\n }\n ]\n*/\nexport default class TranscriptEntity {\n category: string;\n confidence: number;\n content: string;\n endTimeMs: number;\n startTimeMs: number;\n type?: string;\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\n/*\n * [[SignalingClientConnectionRequest]] represents an connection request.\n */\nexport default class SignalingClientConnectionRequest {\n /** Creates a request with the given URL, conference id, and join token.\n *\n * @param signalingURL The URL of the signaling proxy.\n * @param joinToken The join token that will authenticate the connection.\n */\n constructor(public signalingURL: string, public joinToken: string) {}\n\n /** Gets the signaling URL representing this request.*/\n url(): string {\n return (\n this.signalingURL + '?X-Chime-Control-Protocol-Version=3&X-Amzn-Chime-Send-Close-On-Error=1'\n );\n }\n\n /** Gets the protocols associated with this request.*/\n protocols(): string[] {\n return ['_aws_wt_session', this.joinToken];\n }\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport TranscriptResult from './TranscriptResult';\n\nexport default class Transcript {\n results: TranscriptResult[];\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\n/**\n * [[MeetingSessionURLs]] contains the URLs that will be used to reach the\n * meeting service.\n */\nexport default class MeetingSessionURLs {\n /**\n * The audio host URL of the session\n */\n private _audioHostURL: string | null = null;\n\n /**\n * The signaling URL of the session\n */\n private _signalingURL: string | null = null;\n\n /**\n * The TURN control URL of the session\n */\n private _turnControlURL: string | null = null;\n\n /**\n * The event ingestion URL to send the meeting events.\n */\n private _eventIngestionURL: string | null = null;\n\n /**\n * Gets or sets the audio host URL with gets reflecting the result of the {@link MeetingSessionURLs.urlRewriter} function.\n */\n get audioHostURL(): string | null {\n return this.urlRewriter(this._audioHostURL);\n }\n\n set audioHostURL(value: string | null) {\n this._audioHostURL = value;\n }\n\n /**\n * Gets or sets the signaling URL with gets reflecting the result of the {@link MeetingSessionURLs.urlRewriter} function.\n */\n get signalingURL(): string | null {\n return this.urlRewriter(this._signalingURL);\n }\n\n set signalingURL(value: string | null) {\n this._signalingURL = value;\n }\n\n /**\n * Gets or sets the TURN control URL with gets reflecting the result of the {@link MeetingSessionURLs.urlRewriter} function.\n *\n * This URL is currently unused by the SDK and will be removed in a later release.\n */\n get turnControlURL(): string | null {\n return this.urlRewriter(this._turnControlURL);\n }\n\n /**\n * This URL is currently unused by the SDK and will be removed in a later release.\n */\n set turnControlURL(value: string | null) {\n this._turnControlURL = value;\n }\n\n /**\n * Gets or sets the events ingestion URL with gets reflecting the result of the {@link MeetingSessionURLs.urlRewriter} function.\n */\n get eventIngestionURL(): string | null {\n return this.urlRewriter(this._eventIngestionURL);\n }\n\n set eventIngestionURL(value: string | null) {\n this._eventIngestionURL = value;\n }\n\n /**\n * Function to transform URLs. Use this to rewrite URLs to traverse proxies.\n * The default implementation returns the original URL unchanged.\n */\n urlRewriter: (url: string | null) => string | null = (url: string | null) => {\n return url;\n };\n}\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['elasticache'] = {};\nAWS.ElastiCache = Service.defineService('elasticache', ['2012-11-15*', '2014-03-24*', '2014-07-15*', '2014-09-30*', '2015-02-02']);\nObject.defineProperty(apiLoader.services['elasticache'], '2015-02-02', {\n get: function get() {\n var model = require('../apis/elasticache-2015-02-02.min.json');\n model.paginators = require('../apis/elasticache-2015-02-02.paginators.json').pagination;\n model.waiters = require('../apis/elasticache-2015-02-02.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.ElastiCache;\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.VoiceFocusAudioWorkletNode = void 0;\nclass VoiceFocusAudioWorkletNode extends ((typeof globalThis !== 'undefined' && globalThis['AudioWorkletNode']) ||\n class Sadness {\n }) {\n}\nexports.VoiceFocusAudioWorkletNode = VoiceFocusAudioWorkletNode;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['dynamodb'] = {};\nAWS.DynamoDB = Service.defineService('dynamodb', ['2011-12-05', '2012-08-10']);\nrequire('../lib/services/dynamodb');\nObject.defineProperty(apiLoader.services['dynamodb'], '2011-12-05', {\n get: function get() {\n var model = require('../apis/dynamodb-2011-12-05.min.json');\n model.paginators = require('../apis/dynamodb-2011-12-05.paginators.json').pagination;\n model.waiters = require('../apis/dynamodb-2011-12-05.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\nObject.defineProperty(apiLoader.services['dynamodb'], '2012-08-10', {\n get: function get() {\n var model = require('../apis/dynamodb-2012-08-10.min.json');\n model.paginators = require('../apis/dynamodb-2012-08-10.paginators.json').pagination;\n model.waiters = require('../apis/dynamodb-2012-08-10.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.DynamoDB;\n","/**\n * Javascript implementation of ASN.1 validators for PKCS#7 v1.5.\n *\n * @author Dave Longley\n * @author Stefan Siegl\n *\n * Copyright (c) 2012-2015 Digital Bazaar, Inc.\n * Copyright (c) 2012 Stefan Siegl \n *\n * The ASN.1 representation of PKCS#7 is as follows\n * (see RFC #2315 for details, http://www.ietf.org/rfc/rfc2315.txt):\n *\n * A PKCS#7 message consists of a ContentInfo on root level, which may\n * contain any number of further ContentInfo nested into it.\n *\n * ContentInfo ::= SEQUENCE {\n * contentType ContentType,\n * content [0] EXPLICIT ANY DEFINED BY contentType OPTIONAL\n * }\n *\n * ContentType ::= OBJECT IDENTIFIER\n *\n * EnvelopedData ::= SEQUENCE {\n * version Version,\n * recipientInfos RecipientInfos,\n * encryptedContentInfo EncryptedContentInfo\n * }\n *\n * EncryptedData ::= SEQUENCE {\n * version Version,\n * encryptedContentInfo EncryptedContentInfo\n * }\n *\n * id-signedData OBJECT IDENTIFIER ::= { iso(1) member-body(2)\n * us(840) rsadsi(113549) pkcs(1) pkcs7(7) 2 }\n *\n * SignedData ::= SEQUENCE {\n * version INTEGER,\n * digestAlgorithms DigestAlgorithmIdentifiers,\n * contentInfo ContentInfo,\n * certificates [0] IMPLICIT Certificates OPTIONAL,\n * crls [1] IMPLICIT CertificateRevocationLists OPTIONAL,\n * signerInfos SignerInfos\n * }\n *\n * SignerInfos ::= SET OF SignerInfo\n *\n * SignerInfo ::= SEQUENCE {\n * version Version,\n * issuerAndSerialNumber IssuerAndSerialNumber,\n * digestAlgorithm DigestAlgorithmIdentifier,\n * authenticatedAttributes [0] IMPLICIT Attributes OPTIONAL,\n * digestEncryptionAlgorithm DigestEncryptionAlgorithmIdentifier,\n * encryptedDigest EncryptedDigest,\n * unauthenticatedAttributes [1] IMPLICIT Attributes OPTIONAL\n * }\n *\n * EncryptedDigest ::= OCTET STRING\n *\n * Attributes ::= SET OF Attribute\n *\n * Attribute ::= SEQUENCE {\n * attrType OBJECT IDENTIFIER,\n * attrValues SET OF AttributeValue\n * }\n *\n * AttributeValue ::= ANY\n *\n * Version ::= INTEGER\n *\n * RecipientInfos ::= SET OF RecipientInfo\n *\n * EncryptedContentInfo ::= SEQUENCE {\n * contentType ContentType,\n * contentEncryptionAlgorithm ContentEncryptionAlgorithmIdentifier,\n * encryptedContent [0] IMPLICIT EncryptedContent OPTIONAL\n * }\n *\n * ContentEncryptionAlgorithmIdentifier ::= AlgorithmIdentifier\n *\n * The AlgorithmIdentifier contains an Object Identifier (OID) and parameters\n * for the algorithm, if any. In the case of AES and DES3, there is only one,\n * the IV.\n *\n * AlgorithmIdentifer ::= SEQUENCE {\n * algorithm OBJECT IDENTIFIER,\n * parameters ANY DEFINED BY algorithm OPTIONAL\n * }\n *\n * EncryptedContent ::= OCTET STRING\n *\n * RecipientInfo ::= SEQUENCE {\n * version Version,\n * issuerAndSerialNumber IssuerAndSerialNumber,\n * keyEncryptionAlgorithm KeyEncryptionAlgorithmIdentifier,\n * encryptedKey EncryptedKey\n * }\n *\n * IssuerAndSerialNumber ::= SEQUENCE {\n * issuer Name,\n * serialNumber CertificateSerialNumber\n * }\n *\n * CertificateSerialNumber ::= INTEGER\n *\n * KeyEncryptionAlgorithmIdentifier ::= AlgorithmIdentifier\n *\n * EncryptedKey ::= OCTET STRING\n */\nvar forge = require('./forge');\nrequire('./asn1');\nrequire('./util');\n\n// shortcut for ASN.1 API\nvar asn1 = forge.asn1;\n\n// shortcut for PKCS#7 API\nvar p7v = module.exports = forge.pkcs7asn1 = forge.pkcs7asn1 || {};\nforge.pkcs7 = forge.pkcs7 || {};\nforge.pkcs7.asn1 = p7v;\n\nvar contentInfoValidator = {\n name: 'ContentInfo',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n value: [{\n name: 'ContentInfo.ContentType',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.OID,\n constructed: false,\n capture: 'contentType'\n }, {\n name: 'ContentInfo.content',\n tagClass: asn1.Class.CONTEXT_SPECIFIC,\n type: 0,\n constructed: true,\n optional: true,\n captureAsn1: 'content'\n }]\n};\np7v.contentInfoValidator = contentInfoValidator;\n\nvar encryptedContentInfoValidator = {\n name: 'EncryptedContentInfo',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n value: [{\n name: 'EncryptedContentInfo.contentType',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.OID,\n constructed: false,\n capture: 'contentType'\n }, {\n name: 'EncryptedContentInfo.contentEncryptionAlgorithm',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n value: [{\n name: 'EncryptedContentInfo.contentEncryptionAlgorithm.algorithm',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.OID,\n constructed: false,\n capture: 'encAlgorithm'\n }, {\n name: 'EncryptedContentInfo.contentEncryptionAlgorithm.parameter',\n tagClass: asn1.Class.UNIVERSAL,\n captureAsn1: 'encParameter'\n }]\n }, {\n name: 'EncryptedContentInfo.encryptedContent',\n tagClass: asn1.Class.CONTEXT_SPECIFIC,\n type: 0,\n /* The PKCS#7 structure output by OpenSSL somewhat differs from what\n * other implementations do generate.\n *\n * OpenSSL generates a structure like this:\n * SEQUENCE {\n * ...\n * [0]\n * 26 DA 67 D2 17 9C 45 3C B1 2A A8 59 2F 29 33 38\n * C3 C3 DF 86 71 74 7A 19 9F 40 D0 29 BE 85 90 45\n * ...\n * }\n *\n * Whereas other implementations (and this PKCS#7 module) generate:\n * SEQUENCE {\n * ...\n * [0] {\n * OCTET STRING\n * 26 DA 67 D2 17 9C 45 3C B1 2A A8 59 2F 29 33 38\n * C3 C3 DF 86 71 74 7A 19 9F 40 D0 29 BE 85 90 45\n * ...\n * }\n * }\n *\n * In order to support both, we just capture the context specific\n * field here. The OCTET STRING bit is removed below.\n */\n capture: 'encryptedContent',\n captureAsn1: 'encryptedContentAsn1'\n }]\n};\n\np7v.envelopedDataValidator = {\n name: 'EnvelopedData',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n value: [{\n name: 'EnvelopedData.Version',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.INTEGER,\n constructed: false,\n capture: 'version'\n }, {\n name: 'EnvelopedData.RecipientInfos',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SET,\n constructed: true,\n captureAsn1: 'recipientInfos'\n }].concat(encryptedContentInfoValidator)\n};\n\np7v.encryptedDataValidator = {\n name: 'EncryptedData',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n value: [{\n name: 'EncryptedData.Version',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.INTEGER,\n constructed: false,\n capture: 'version'\n }].concat(encryptedContentInfoValidator)\n};\n\nvar signerValidator = {\n name: 'SignerInfo',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n value: [{\n name: 'SignerInfo.version',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.INTEGER,\n constructed: false\n }, {\n name: 'SignerInfo.issuerAndSerialNumber',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n value: [{\n name: 'SignerInfo.issuerAndSerialNumber.issuer',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n captureAsn1: 'issuer'\n }, {\n name: 'SignerInfo.issuerAndSerialNumber.serialNumber',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.INTEGER,\n constructed: false,\n capture: 'serial'\n }]\n }, {\n name: 'SignerInfo.digestAlgorithm',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n value: [{\n name: 'SignerInfo.digestAlgorithm.algorithm',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.OID,\n constructed: false,\n capture: 'digestAlgorithm'\n }, {\n name: 'SignerInfo.digestAlgorithm.parameter',\n tagClass: asn1.Class.UNIVERSAL,\n constructed: false,\n captureAsn1: 'digestParameter',\n optional: true\n }]\n }, {\n name: 'SignerInfo.authenticatedAttributes',\n tagClass: asn1.Class.CONTEXT_SPECIFIC,\n type: 0,\n constructed: true,\n optional: true,\n capture: 'authenticatedAttributes'\n }, {\n name: 'SignerInfo.digestEncryptionAlgorithm',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n capture: 'signatureAlgorithm'\n }, {\n name: 'SignerInfo.encryptedDigest',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.OCTETSTRING,\n constructed: false,\n capture: 'signature'\n }, {\n name: 'SignerInfo.unauthenticatedAttributes',\n tagClass: asn1.Class.CONTEXT_SPECIFIC,\n type: 1,\n constructed: true,\n optional: true,\n capture: 'unauthenticatedAttributes'\n }]\n};\n\np7v.signedDataValidator = {\n name: 'SignedData',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n value: [{\n name: 'SignedData.Version',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.INTEGER,\n constructed: false,\n capture: 'version'\n }, {\n name: 'SignedData.DigestAlgorithms',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SET,\n constructed: true,\n captureAsn1: 'digestAlgorithms'\n },\n contentInfoValidator,\n {\n name: 'SignedData.Certificates',\n tagClass: asn1.Class.CONTEXT_SPECIFIC,\n type: 0,\n optional: true,\n captureAsn1: 'certificates'\n }, {\n name: 'SignedData.CertificateRevocationLists',\n tagClass: asn1.Class.CONTEXT_SPECIFIC,\n type: 1,\n optional: true,\n captureAsn1: 'crls'\n }, {\n name: 'SignedData.SignerInfos',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SET,\n capture: 'signerInfos',\n optional: true,\n value: [signerValidator]\n }]\n};\n\np7v.recipientInfoValidator = {\n name: 'RecipientInfo',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n value: [{\n name: 'RecipientInfo.version',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.INTEGER,\n constructed: false,\n capture: 'version'\n }, {\n name: 'RecipientInfo.issuerAndSerial',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n value: [{\n name: 'RecipientInfo.issuerAndSerial.issuer',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n captureAsn1: 'issuer'\n }, {\n name: 'RecipientInfo.issuerAndSerial.serialNumber',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.INTEGER,\n constructed: false,\n capture: 'serial'\n }]\n }, {\n name: 'RecipientInfo.keyEncryptionAlgorithm',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n value: [{\n name: 'RecipientInfo.keyEncryptionAlgorithm.algorithm',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.OID,\n constructed: false,\n capture: 'encAlgorithm'\n }, {\n name: 'RecipientInfo.keyEncryptionAlgorithm.parameter',\n tagClass: asn1.Class.UNIVERSAL,\n constructed: false,\n captureAsn1: 'encParameter',\n optional: true\n }]\n }, {\n name: 'RecipientInfo.encryptedKey',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.OCTETSTRING,\n constructed: false,\n capture: 'encKey'\n }]\n};\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['mturk'] = {};\nAWS.MTurk = Service.defineService('mturk', ['2017-01-17']);\nObject.defineProperty(apiLoader.services['mturk'], '2017-01-17', {\n get: function get() {\n var model = require('../apis/mturk-requester-2017-01-17.min.json');\n model.paginators = require('../apis/mturk-requester-2017-01-17.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.MTurk;\n","'use strict';\n\n/**\n * Update an Error with the specified config, error code, and response.\n *\n * @param {Error} error The error to update.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The error.\n */\nmodule.exports = function enhanceError(error, config, code, request, response) {\n error.config = config;\n if (code) {\n error.code = code;\n }\n\n error.request = request;\n error.response = response;\n error.isAxiosError = true;\n\n error.toJSON = function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: this.config,\n code: this.code\n };\n };\n return error;\n};\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar regExpFlags = require('../internals/regexp-flags');\nvar fails = require('../internals/fails');\n\n// babel-minify and Closure Compiler transpiles RegExp('.', 'd') -> /./d and it causes SyntaxError\nvar RegExp = globalThis.RegExp;\nvar RegExpPrototype = RegExp.prototype;\n\nvar FORCED = DESCRIPTORS && fails(function () {\n var INDICES_SUPPORT = true;\n try {\n RegExp('.', 'd');\n } catch (error) {\n INDICES_SUPPORT = false;\n }\n\n var O = {};\n // modern V8 bug\n var calls = '';\n var expected = INDICES_SUPPORT ? 'dgimsy' : 'gimsy';\n\n var addGetter = function (key, chr) {\n // eslint-disable-next-line es/no-object-defineproperty -- safe\n Object.defineProperty(O, key, { get: function () {\n calls += chr;\n return true;\n } });\n };\n\n var pairs = {\n dotAll: 's',\n global: 'g',\n ignoreCase: 'i',\n multiline: 'm',\n sticky: 'y'\n };\n\n if (INDICES_SUPPORT) pairs.hasIndices = 'd';\n\n for (var key in pairs) addGetter(key, pairs[key]);\n\n // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\n var result = Object.getOwnPropertyDescriptor(RegExpPrototype, 'flags').get.call(O);\n\n return result !== expected || calls !== expected;\n});\n\n// `RegExp.prototype.flags` getter\n// https://tc39.es/ecma262/#sec-get-regexp.prototype.flags\nif (FORCED) defineBuiltInAccessor(RegExpPrototype, 'flags', {\n configurable: true,\n get: regExpFlags\n});\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\n/**\n * [[SessionStateControllerDeferPriority]] indicates the priority level of the action\n * being deferred. For example, stop is more important than update so if forced\n * to pick between the two stop should be chosen.\n */\nexport enum SessionStateControllerDeferPriority {\n DoNotDefer = 0,\n Low = 1,\n Medium = 2,\n High = 3,\n VeryHigh = 4,\n}\n\nexport default SessionStateControllerDeferPriority;\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport AudioVideoControllerState from '../audiovideocontroller/AudioVideoControllerState';\nimport BrowserBehavior from '../browserbehavior/BrowserBehavior';\nimport Logger from '../logger/Logger';\nimport DefaultTransceiverController from './DefaultTransceiverController';\n\nexport default class SimulcastTransceiverController extends DefaultTransceiverController {\n static readonly LOW_LEVEL_NAME: string = 'low';\n static readonly MID_LEVEL_NAME: string = 'mid';\n static readonly HIGH_LEVEL_NAME: string = 'hi';\n static readonly NAME_ARR_ASCENDING = ['low', 'mid', 'hi'];\n static readonly BITRATE_ARR_ASCENDING = [200, 400, 1100];\n protected videoQualityControlParameterMap: Map = new Map<\n string,\n RTCRtpEncodingParameters\n >();\n\n constructor(\n logger: Logger,\n browserBehavior: BrowserBehavior,\n meetingSessionContext?: AudioVideoControllerState\n ) {\n super(logger, browserBehavior, meetingSessionContext);\n let scale = 4;\n for (let i = 0; i < SimulcastTransceiverController.NAME_ARR_ASCENDING.length; i++) {\n const ridName = SimulcastTransceiverController.NAME_ARR_ASCENDING[i];\n this.videoQualityControlParameterMap.set(ridName, {\n rid: ridName,\n scaleResolutionDownBy: scale,\n maxBitrate: SimulcastTransceiverController.BITRATE_ARR_ASCENDING[i] * 1000,\n });\n scale = scale / 2;\n }\n }\n\n // Note: `scaleResolutionDownBy` has only been tested with values 1, 2, and 4.\n async setEncodingParameters(\n encodingParamMap: Map\n ): Promise {\n if (!this._localCameraTransceiver || this._localCameraTransceiver.direction !== 'sendrecv') {\n return;\n }\n\n const sender = this._localCameraTransceiver.sender;\n const newEncodingParams = Array.from(encodingParamMap.values());\n if (newEncodingParams.length <= 0) {\n return;\n }\n\n const oldParam: RTCRtpSendParameters = sender.getParameters();\n if (!oldParam.encodings) {\n oldParam.encodings = newEncodingParams;\n } else {\n for (const encoding of oldParam.encodings) {\n if (encoding.rid === SimulcastTransceiverController.LOW_LEVEL_NAME) {\n this.copyEncodingParams(\n encodingParamMap.get(SimulcastTransceiverController.LOW_LEVEL_NAME),\n encoding\n );\n }\n if (encoding.rid === SimulcastTransceiverController.MID_LEVEL_NAME) {\n this.copyEncodingParams(\n encodingParamMap.get(SimulcastTransceiverController.MID_LEVEL_NAME),\n encoding\n );\n }\n if (encoding.rid === SimulcastTransceiverController.HIGH_LEVEL_NAME) {\n this.copyEncodingParams(\n encodingParamMap.get(SimulcastTransceiverController.HIGH_LEVEL_NAME),\n encoding\n );\n }\n }\n }\n\n await sender.setParameters(oldParam);\n\n this.logVideoTransceiverParameters();\n }\n\n async setVideoSendingBitrateKbps(_bitrateKbps: number): Promise {\n return;\n }\n\n setupLocalTransceivers(): void {\n if (!this.useTransceivers()) {\n return;\n }\n\n if (!this.defaultMediaStream && typeof MediaStream !== 'undefined') {\n this.defaultMediaStream = new MediaStream();\n }\n\n if (!this._localAudioTransceiver) {\n this._localAudioTransceiver = this.peer.addTransceiver('audio', {\n direction: 'inactive',\n streams: [this.defaultMediaStream],\n });\n\n if (this.meetingSessionContext?.audioProfile?.hasRedundancyEnabled()) {\n // This will perform additional necessary setup for the audio transceiver.\n this.setupAudioRedWorker();\n }\n }\n\n if (!this._localCameraTransceiver) {\n const encodingParams = Array.from(this.videoQualityControlParameterMap.values());\n this._localCameraTransceiver = this.addTransceiver('video', {\n direction: 'inactive',\n streams: [this.defaultMediaStream],\n sendEncodings: encodingParams,\n });\n }\n }\n\n protected logVideoTransceiverParameters(): void {\n const params = this._localCameraTransceiver.sender.getParameters();\n const encodings = params.encodings;\n let msg = 'simulcast: current encoding parameters \\n';\n for (const encodingParam of encodings) {\n msg += `rid=${encodingParam.rid} maxBitrate=${encodingParam.maxBitrate} active=${encodingParam.active} scaleDownBy=${encodingParam.scaleResolutionDownBy} maxFrameRate = ${encodingParam.maxFramerate} \\n`;\n }\n this.logger.info(msg);\n }\n\n protected copyEncodingParams(\n fromEncodingParams: RTCRtpEncodingParameters,\n toEncodingParams: RTCRtpEncodingParameters\n ): void {\n toEncodingParams.active = fromEncodingParams.active;\n toEncodingParams.maxBitrate = fromEncodingParams.maxBitrate;\n toEncodingParams.scaleResolutionDownBy = fromEncodingParams.scaleResolutionDownBy;\n toEncodingParams.maxFramerate = fromEncodingParams.maxFramerate;\n }\n}\n","'use strict';\nvar $ = require('../internals/export');\nvar aMap = require('../internals/a-map');\nvar iterate = require('../internals/iterate');\nvar set = require('../internals/map-helpers').set;\n\n// `Map.prototype.merge` method\n// https://github.com/tc39/proposal-collection-methods\n$({ target: 'Map', proto: true, real: true, arity: 1, forced: true }, {\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n merge: function merge(iterable /* ...iterables */) {\n var map = aMap(this);\n var argumentsLength = arguments.length;\n var i = 0;\n while (i < argumentsLength) {\n iterate(arguments[i++], function (key, value) {\n set(map, key, value);\n }, { AS_ENTRIES: true });\n }\n return map;\n }\n});\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['cloudwatchlogs'] = {};\nAWS.CloudWatchLogs = Service.defineService('cloudwatchlogs', ['2014-03-28']);\nObject.defineProperty(apiLoader.services['cloudwatchlogs'], '2014-03-28', {\n get: function get() {\n var model = require('../apis/logs-2014-03-28.min.json');\n model.paginators = require('../apis/logs-2014-03-28.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.CloudWatchLogs;\n","'use strict';\n// TODO: Remove from `core-js@4`\nrequire('../modules/es.map.group-by');\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport BackgroundFilterProcessor from '../backgroundfilter/BackgroundFilterProcessor';\nimport BackgroundFilterSpec from '../backgroundfilter/BackgroundFilterSpec';\nimport EventController from '../eventcontroller/EventController';\nimport VideoFXEventAttributes from '../eventcontroller/VideoFXEventAttributes';\nimport BackgroundBlurOptions from './BackgroundBlurOptions';\nimport BackgroundBlurProcessor from './BackgroundBlurProcessor';\nimport { BlurStrengthMapper } from './BackgroundBlurStrength';\nimport BackgroundBlurVideoFrameProcessorDelegate from './BackgroundBlurVideoFrameProcessorDelegate';\nimport BackgroundBlurVideoFrameProcessorObserver from './BackgroundBlurVideoFrameProcessorObserver';\n\n/**\n * [[BackgroundBlurProcessorProvided]] implements [[BackgroundBlurProcessor]].\n * It's a background blur processor and input is passed into a worker that will apply a segmentation\n * to separate the foreground from the background. Then the background will have a blur applied.\n *\n * The [[BackgroundBlurProcessorProvided]] uses WASM and TensorFlow Lite to apply the blurring of the\n * background image as apposed to [[BackgroundBlurProcessorBuiltIn]] that uses the browser's built-in\n * capability to apply the blur.\n */\n/** @internal */\nexport default class BackgroundBlurProcessorProvided\n extends BackgroundFilterProcessor\n implements BackgroundBlurProcessor {\n protected blurAmount = 0;\n protected _blurStrength: number;\n\n protected validateOptions(options: BackgroundBlurOptions): void {\n super.validateOptions(options);\n if (!options.blurStrength) {\n throw new Error('processor has null options - blurStrength');\n }\n }\n\n /**\n * A constructor that will apply default values if spec and strength are not provided.\n * If no spec is provided the selfie segmentation model is used with default paths to CDN for the\n * worker and wasm files used to process each frame.\n * @param spec The spec defines the assets that will be used for adding background blur to a frame\n * @param options How much blur to apply to a frame\n */\n constructor(spec: BackgroundFilterSpec, options: BackgroundBlurOptions) {\n super('background blur', spec, options, new BackgroundBlurVideoFrameProcessorDelegate());\n\n this.setBlurStrength(options.blurStrength);\n\n this.logger.info('BackgroundBlur processor successfully created');\n this.logger.info(`BackgroundBlur spec: ${this.stringify(this.spec)}`);\n this.logger.info(\n `BackgroundBlur options: { blurStrength: ${options.blurStrength}, filterCPUUtilization: ${options.filterCPUUtilization}, reportingPeriodMillis: ${options.reportingPeriodMillis}}`\n );\n }\n\n initOnFirstExecution(): void {\n this.setBlurPixels();\n }\n\n drawImageWithMask(inputCanvas: HTMLCanvasElement, mask: ImageData): void {\n // Mask will not be set until the worker has completed handling the predict event. Until the first frame is processed,\n // the whole frame will be blurred.\n if (!mask) {\n mask = new ImageData(this.spec.model.input.width, this.spec.model.input.height);\n }\n\n const scaledCtx = this.scaledCanvas.getContext('2d');\n\n scaledCtx.putImageData(mask, 0, 0);\n\n const { canvasCtx, targetCanvas } = this;\n const { width, height } = targetCanvas;\n\n // draw the mask\n canvasCtx.save();\n canvasCtx.clearRect(0, 0, width, height);\n canvasCtx.drawImage(this.scaledCanvas, 0, 0, width, height);\n\n // Only overwrite existing pixels.\n canvasCtx.globalCompositeOperation = 'source-in';\n // draw image over mask...\n canvasCtx.drawImage(inputCanvas, 0, 0, width, height);\n\n // draw under person\n canvasCtx.globalCompositeOperation = 'destination-over';\n canvasCtx.filter = `blur(${this.blurAmount}px)`;\n canvasCtx.drawImage(inputCanvas, 0, 0, targetCanvas.width, targetCanvas.height);\n canvasCtx.restore();\n }\n\n setBlurStrength(blurStrength: number): void {\n this._blurStrength = blurStrength;\n this.logger.info(`blur strength set to ${this._blurStrength}`);\n this.setBlurPixels();\n }\n\n /**\n * Calculate the blur amount based on the blur strength passed in and height of the image being blurred.\n */\n setBlurPixels(): void {\n this.blurAmount = BlurStrengthMapper.getBlurAmount(this._blurStrength, {\n height: this.sourceHeight,\n });\n this.logger.info(`background blur amount set to ${this.blurAmount}`);\n }\n\n addObserver(observer: BackgroundBlurVideoFrameProcessorObserver): void {\n this.delegate.addObserver(observer);\n }\n\n removeObserver(observer: BackgroundBlurVideoFrameProcessorObserver): void {\n this.delegate.removeObserver(observer);\n }\n\n static async isSupported(): Promise {\n const canvas = document.createElement('canvas');\n const supportsBlurFilter = canvas.getContext('2d').filter !== undefined;\n canvas.remove();\n\n return supportsBlurFilter;\n }\n\n /** @internal */\n setEventController(eventController: EventController): void {\n /*\n if this is a first time we set the eventController, need to publish the current BackgroundFilterConfig.\n Otherwise, just set the eventController.\n */\n if (this.eventController) {\n this.eventController = eventController;\n } else {\n this.eventController = eventController;\n this.publishBackgroundFilterEvent();\n }\n }\n\n private publishBackgroundFilterEvent(): void {\n const backgroundFilterEventAttributes: VideoFXEventAttributes = {\n backgroundBlurEnabled: 'true',\n backgroundBlurStrength: this._blurStrength,\n backgroundReplacementEnabled: 'false',\n backgroundFilterVersion: 1,\n };\n this.eventController.publishEvent(\n 'backgroundFilterConfigSelected',\n backgroundFilterEventAttributes\n );\n }\n}\n","/**\n * A Javascript implementation of AES Cipher Suites for TLS.\n *\n * @author Dave Longley\n *\n * Copyright (c) 2009-2015 Digital Bazaar, Inc.\n *\n */\nvar forge = require('./forge');\nrequire('./aes');\nrequire('./tls');\n\nvar tls = module.exports = forge.tls;\n\n/**\n * Supported cipher suites.\n */\ntls.CipherSuites['TLS_RSA_WITH_AES_128_CBC_SHA'] = {\n id: [0x00, 0x2f],\n name: 'TLS_RSA_WITH_AES_128_CBC_SHA',\n initSecurityParameters: function(sp) {\n sp.bulk_cipher_algorithm = tls.BulkCipherAlgorithm.aes;\n sp.cipher_type = tls.CipherType.block;\n sp.enc_key_length = 16;\n sp.block_length = 16;\n sp.fixed_iv_length = 16;\n sp.record_iv_length = 16;\n sp.mac_algorithm = tls.MACAlgorithm.hmac_sha1;\n sp.mac_length = 20;\n sp.mac_key_length = 20;\n },\n initConnectionState: initConnectionState\n};\ntls.CipherSuites['TLS_RSA_WITH_AES_256_CBC_SHA'] = {\n id: [0x00, 0x35],\n name: 'TLS_RSA_WITH_AES_256_CBC_SHA',\n initSecurityParameters: function(sp) {\n sp.bulk_cipher_algorithm = tls.BulkCipherAlgorithm.aes;\n sp.cipher_type = tls.CipherType.block;\n sp.enc_key_length = 32;\n sp.block_length = 16;\n sp.fixed_iv_length = 16;\n sp.record_iv_length = 16;\n sp.mac_algorithm = tls.MACAlgorithm.hmac_sha1;\n sp.mac_length = 20;\n sp.mac_key_length = 20;\n },\n initConnectionState: initConnectionState\n};\n\nfunction initConnectionState(state, c, sp) {\n var client = (c.entity === forge.tls.ConnectionEnd.client);\n\n // cipher setup\n state.read.cipherState = {\n init: false,\n cipher: forge.cipher.createDecipher('AES-CBC', client ?\n sp.keys.server_write_key : sp.keys.client_write_key),\n iv: client ? sp.keys.server_write_IV : sp.keys.client_write_IV\n };\n state.write.cipherState = {\n init: false,\n cipher: forge.cipher.createCipher('AES-CBC', client ?\n sp.keys.client_write_key : sp.keys.server_write_key),\n iv: client ? sp.keys.client_write_IV : sp.keys.server_write_IV\n };\n state.read.cipherFunction = decrypt_aes_cbc_sha1;\n state.write.cipherFunction = encrypt_aes_cbc_sha1;\n\n // MAC setup\n state.read.macLength = state.write.macLength = sp.mac_length;\n state.read.macFunction = state.write.macFunction = tls.hmac_sha1;\n}\n\n/**\n * Encrypts the TLSCompressed record into a TLSCipherText record using AES\n * in CBC mode.\n *\n * @param record the TLSCompressed record to encrypt.\n * @param s the ConnectionState to use.\n *\n * @return true on success, false on failure.\n */\nfunction encrypt_aes_cbc_sha1(record, s) {\n var rval = false;\n\n // append MAC to fragment, update sequence number\n var mac = s.macFunction(s.macKey, s.sequenceNumber, record);\n record.fragment.putBytes(mac);\n s.updateSequenceNumber();\n\n // TLS 1.1+ use an explicit IV every time to protect against CBC attacks\n var iv;\n if(record.version.minor === tls.Versions.TLS_1_0.minor) {\n // use the pre-generated IV when initializing for TLS 1.0, otherwise use\n // the residue from the previous encryption\n iv = s.cipherState.init ? null : s.cipherState.iv;\n } else {\n iv = forge.random.getBytesSync(16);\n }\n\n s.cipherState.init = true;\n\n // start cipher\n var cipher = s.cipherState.cipher;\n cipher.start({iv: iv});\n\n // TLS 1.1+ write IV into output\n if(record.version.minor >= tls.Versions.TLS_1_1.minor) {\n cipher.output.putBytes(iv);\n }\n\n // do encryption (default padding is appropriate)\n cipher.update(record.fragment);\n if(cipher.finish(encrypt_aes_cbc_sha1_padding)) {\n // set record fragment to encrypted output\n record.fragment = cipher.output;\n record.length = record.fragment.length();\n rval = true;\n }\n\n return rval;\n}\n\n/**\n * Handles padding for aes_cbc_sha1 in encrypt mode.\n *\n * @param blockSize the block size.\n * @param input the input buffer.\n * @param decrypt true in decrypt mode, false in encrypt mode.\n *\n * @return true on success, false on failure.\n */\nfunction encrypt_aes_cbc_sha1_padding(blockSize, input, decrypt) {\n /* The encrypted data length (TLSCiphertext.length) is one more than the sum\n of SecurityParameters.block_length, TLSCompressed.length,\n SecurityParameters.mac_length, and padding_length.\n\n The padding may be any length up to 255 bytes long, as long as it results in\n the TLSCiphertext.length being an integral multiple of the block length.\n Lengths longer than necessary might be desirable to frustrate attacks on a\n protocol based on analysis of the lengths of exchanged messages. Each uint8\n in the padding data vector must be filled with the padding length value.\n\n The padding length should be such that the total size of the\n GenericBlockCipher structure is a multiple of the cipher's block length.\n Legal values range from zero to 255, inclusive. This length specifies the\n length of the padding field exclusive of the padding_length field itself.\n\n This is slightly different from PKCS#7 because the padding value is 1\n less than the actual number of padding bytes if you include the\n padding_length uint8 itself as a padding byte. */\n if(!decrypt) {\n // get the number of padding bytes required to reach the blockSize and\n // subtract 1 for the padding value (to make room for the padding_length\n // uint8)\n var padding = blockSize - (input.length() % blockSize);\n input.fillWithByte(padding - 1, padding);\n }\n return true;\n}\n\n/**\n * Handles padding for aes_cbc_sha1 in decrypt mode.\n *\n * @param blockSize the block size.\n * @param output the output buffer.\n * @param decrypt true in decrypt mode, false in encrypt mode.\n *\n * @return true on success, false on failure.\n */\nfunction decrypt_aes_cbc_sha1_padding(blockSize, output, decrypt) {\n var rval = true;\n if(decrypt) {\n /* The last byte in the output specifies the number of padding bytes not\n including itself. Each of the padding bytes has the same value as that\n last byte (known as the padding_length). Here we check all padding\n bytes to ensure they have the value of padding_length even if one of\n them is bad in order to ward-off timing attacks. */\n var len = output.length();\n var paddingLength = output.last();\n for(var i = len - 1 - paddingLength; i < len - 1; ++i) {\n rval = rval && (output.at(i) == paddingLength);\n }\n if(rval) {\n // trim off padding bytes and last padding length byte\n output.truncate(paddingLength + 1);\n }\n }\n return rval;\n}\n\n/**\n * Decrypts a TLSCipherText record into a TLSCompressed record using\n * AES in CBC mode.\n *\n * @param record the TLSCipherText record to decrypt.\n * @param s the ConnectionState to use.\n *\n * @return true on success, false on failure.\n */\nfunction decrypt_aes_cbc_sha1(record, s) {\n var rval = false;\n\n var iv;\n if(record.version.minor === tls.Versions.TLS_1_0.minor) {\n // use pre-generated IV when initializing for TLS 1.0, otherwise use the\n // residue from the previous decryption\n iv = s.cipherState.init ? null : s.cipherState.iv;\n } else {\n // TLS 1.1+ use an explicit IV every time to protect against CBC attacks\n // that is appended to the record fragment\n iv = record.fragment.getBytes(16);\n }\n\n s.cipherState.init = true;\n\n // start cipher\n var cipher = s.cipherState.cipher;\n cipher.start({iv: iv});\n\n // do decryption\n cipher.update(record.fragment);\n rval = cipher.finish(decrypt_aes_cbc_sha1_padding);\n\n // even if decryption fails, keep going to minimize timing attacks\n\n // decrypted data:\n // first (len - 20) bytes = application data\n // last 20 bytes = MAC\n var macLen = s.macLength;\n\n // create a random MAC to check against should the mac length check fail\n // Note: do this regardless of the failure to keep timing consistent\n var mac = forge.random.getBytesSync(macLen);\n\n // get fragment and mac\n var len = cipher.output.length();\n if(len >= macLen) {\n record.fragment = cipher.output.getBytes(len - macLen);\n mac = cipher.output.getBytes(macLen);\n } else {\n // bad data, but get bytes anyway to try to keep timing consistent\n record.fragment = cipher.output.getBytes();\n }\n record.fragment = forge.util.createBuffer(record.fragment);\n record.length = record.fragment.length();\n\n // see if data integrity checks out, update sequence number\n var mac2 = s.macFunction(s.macKey, s.sequenceNumber, record);\n s.updateSequenceNumber();\n rval = compareMacs(s.macKey, mac, mac2) && rval;\n return rval;\n}\n\n/**\n * Safely compare two MACs. This function will compare two MACs in a way\n * that protects against timing attacks.\n *\n * TODO: Expose elsewhere as a utility API.\n *\n * See: https://www.nccgroup.trust/us/about-us/newsroom-and-events/blog/2011/february/double-hmac-verification/\n *\n * @param key the MAC key to use.\n * @param mac1 as a binary-encoded string of bytes.\n * @param mac2 as a binary-encoded string of bytes.\n *\n * @return true if the MACs are the same, false if not.\n */\nfunction compareMacs(key, mac1, mac2) {\n var hmac = forge.hmac.create();\n\n hmac.start('SHA1', key);\n hmac.update(mac1);\n mac1 = hmac.digest().getBytes();\n\n hmac.start(null, null);\n hmac.update(mac2);\n mac2 = hmac.digest().getBytes();\n\n return mac1 === mac2;\n}\n","var AWS = require('./core');\nvar inherit = AWS.util.inherit;\nvar jmespath = require('jmespath');\n\n/**\n * This class encapsulates the response information\n * from a service request operation sent through {AWS.Request}.\n * The response object has two main properties for getting information\n * back from a request:\n *\n * ## The `data` property\n *\n * The `response.data` property contains the serialized object data\n * retrieved from the service request. For instance, for an\n * Amazon DynamoDB `listTables` method call, the response data might\n * look like:\n *\n * ```\n * > resp.data\n * { TableNames:\n * [ 'table1', 'table2', ... ] }\n * ```\n *\n * The `data` property can be null if an error occurs (see below).\n *\n * ## The `error` property\n *\n * In the event of a service error (or transfer error), the\n * `response.error` property will be filled with the given\n * error data in the form:\n *\n * ```\n * { code: 'SHORT_UNIQUE_ERROR_CODE',\n * message: 'Some human readable error message' }\n * ```\n *\n * In the case of an error, the `data` property will be `null`.\n * Note that if you handle events that can be in a failure state,\n * you should always check whether `response.error` is set\n * before attempting to access the `response.data` property.\n *\n * @!attribute data\n * @readonly\n * @!group Data Properties\n * @note Inside of a {AWS.Request~httpData} event, this\n * property contains a single raw packet instead of the\n * full de-serialized service response.\n * @return [Object] the de-serialized response data\n * from the service.\n *\n * @!attribute error\n * An structure containing information about a service\n * or networking error.\n * @readonly\n * @!group Data Properties\n * @note This attribute is only filled if a service or\n * networking error occurs.\n * @return [Error]\n * * code [String] a unique short code representing the\n * error that was emitted.\n * * message [String] a longer human readable error message\n * * retryable [Boolean] whether the error message is\n * retryable.\n * * statusCode [Numeric] in the case of a request that reached the service,\n * this value contains the response status code.\n * * time [Date] the date time object when the error occurred.\n * * hostname [String] set when a networking error occurs to easily\n * identify the endpoint of the request.\n * * region [String] set when a networking error occurs to easily\n * identify the region of the request.\n *\n * @!attribute requestId\n * @readonly\n * @!group Data Properties\n * @return [String] the unique request ID associated with the response.\n * Log this value when debugging requests for AWS support.\n *\n * @!attribute retryCount\n * @readonly\n * @!group Operation Properties\n * @return [Integer] the number of retries that were\n * attempted before the request was completed.\n *\n * @!attribute redirectCount\n * @readonly\n * @!group Operation Properties\n * @return [Integer] the number of redirects that were\n * followed before the request was completed.\n *\n * @!attribute httpResponse\n * @readonly\n * @!group HTTP Properties\n * @return [AWS.HttpResponse] the raw HTTP response object\n * containing the response headers and body information\n * from the server.\n *\n * @see AWS.Request\n */\nAWS.Response = inherit({\n\n /**\n * @api private\n */\n constructor: function Response(request) {\n this.request = request;\n this.data = null;\n this.error = null;\n this.retryCount = 0;\n this.redirectCount = 0;\n this.httpResponse = new AWS.HttpResponse();\n if (request) {\n this.maxRetries = request.service.numRetries();\n this.maxRedirects = request.service.config.maxRedirects;\n }\n },\n\n /**\n * Creates a new request for the next page of response data, calling the\n * callback with the page data if a callback is provided.\n *\n * @callback callback function(err, data)\n * Called when a page of data is returned from the next request.\n *\n * @param err [Error] an error object, if an error occurred in the request\n * @param data [Object] the next page of data, or null, if there are no\n * more pages left.\n * @return [AWS.Request] the request object for the next page of data\n * @return [null] if no callback is provided and there are no pages left\n * to retrieve.\n * @since v1.4.0\n */\n nextPage: function nextPage(callback) {\n var config;\n var service = this.request.service;\n var operation = this.request.operation;\n try {\n config = service.paginationConfig(operation, true);\n } catch (e) { this.error = e; }\n\n if (!this.hasNextPage()) {\n if (callback) callback(this.error, null);\n else if (this.error) throw this.error;\n return null;\n }\n\n var params = AWS.util.copy(this.request.params);\n if (!this.nextPageTokens) {\n return callback ? callback(null, null) : null;\n } else {\n var inputTokens = config.inputToken;\n if (typeof inputTokens === 'string') inputTokens = [inputTokens];\n for (var i = 0; i < inputTokens.length; i++) {\n params[inputTokens[i]] = this.nextPageTokens[i];\n }\n return service.makeRequest(this.request.operation, params, callback);\n }\n },\n\n /**\n * @return [Boolean] whether more pages of data can be returned by further\n * requests\n * @since v1.4.0\n */\n hasNextPage: function hasNextPage() {\n this.cacheNextPageTokens();\n if (this.nextPageTokens) return true;\n if (this.nextPageTokens === undefined) return undefined;\n else return false;\n },\n\n /**\n * @api private\n */\n cacheNextPageTokens: function cacheNextPageTokens() {\n if (Object.prototype.hasOwnProperty.call(this, 'nextPageTokens')) return this.nextPageTokens;\n this.nextPageTokens = undefined;\n\n var config = this.request.service.paginationConfig(this.request.operation);\n if (!config) return this.nextPageTokens;\n\n this.nextPageTokens = null;\n if (config.moreResults) {\n if (!jmespath.search(this.data, config.moreResults)) {\n return this.nextPageTokens;\n }\n }\n\n var exprs = config.outputToken;\n if (typeof exprs === 'string') exprs = [exprs];\n AWS.util.arrayEach.call(this, exprs, function (expr) {\n var output = jmespath.search(this.data, expr);\n if (output) {\n this.nextPageTokens = this.nextPageTokens || [];\n this.nextPageTokens.push(output);\n }\n });\n\n return this.nextPageTokens;\n }\n\n});\n","/** @license React v17.0.2\n * react-jsx-runtime.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';require(\"object-assign\");var f=require(\"react\"),g=60103;exports.Fragment=60107;if(\"function\"===typeof Symbol&&Symbol.for){var h=Symbol.for;g=h(\"react.element\");exports.Fragment=h(\"react.fragment\")}var m=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,n=Object.prototype.hasOwnProperty,p={key:!0,ref:!0,__self:!0,__source:!0};\nfunction q(c,a,k){var b,d={},e=null,l=null;void 0!==k&&(e=\"\"+k);void 0!==a.key&&(e=\"\"+a.key);void 0!==a.ref&&(l=a.ref);for(b in a)n.call(a,b)&&!p.hasOwnProperty(b)&&(d[b]=a[b]);if(c&&c.defaultProps)for(b in a=c.defaultProps,a)void 0===d[b]&&(d[b]=a[b]);return{$$typeof:g,type:c,key:e,ref:l,props:d,_owner:m.current}}exports.jsx=q;exports.jsxs=q;\n","'use strict';\nvar $ = require('../internals/export');\nvar bind = require('../internals/function-bind-context');\nvar aMap = require('../internals/a-map');\nvar iterate = require('../internals/map-iterate');\n\n// `Map.prototype.every` method\n// https://github.com/tc39/proposal-collection-methods\n$({ target: 'Map', proto: true, real: true, forced: true }, {\n every: function every(callbackfn /* , thisArg */) {\n var map = aMap(this);\n var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n return iterate(map, function (value, key) {\n if (!boundFunction(value, key, map)) return false;\n }, true) !== false;\n }\n});\n","'use strict';\n\n/** @type {import('.')} */\nmodule.exports = Object;\n","'use strict';\n\nvar reflectGetProto = require('./Reflect.getPrototypeOf');\nvar originalGetProto = require('./Object.getPrototypeOf');\n\nvar getDunderProto = require('dunder-proto/get');\n\n/** @type {import('.')} */\nmodule.exports = reflectGetProto\n\t? function getProto(O) {\n\t\t// @ts-expect-error TS can't narrow inside a closure, for some reason\n\t\treturn reflectGetProto(O);\n\t}\n\t: originalGetProto\n\t\t? function getProto(O) {\n\t\t\tif (!O || (typeof O !== 'object' && typeof O !== 'function')) {\n\t\t\t\tthrow new TypeError('getProto: not an object');\n\t\t\t}\n\t\t\t// @ts-expect-error TS can't narrow inside a closure, for some reason\n\t\t\treturn originalGetProto(O);\n\t\t}\n\t\t: getDunderProto\n\t\t\t? function getProto(O) {\n\t\t\t\t// @ts-expect-error TS can't narrow inside a closure, for some reason\n\t\t\t\treturn getDunderProto(O);\n\t\t\t}\n\t\t\t: null;\n","var AWS = require('../core');\nvar rdsutil = require('./rdsutil');\nrequire('../rds/signer');\n /**\n * @api private\n */\n var crossRegionOperations = ['copyDBSnapshot', 'createDBInstanceReadReplica', 'createDBCluster', 'copyDBClusterSnapshot', 'startDBInstanceAutomatedBackupsReplication'];\n\n AWS.util.update(AWS.RDS.prototype, {\n /**\n * @api private\n */\n setupRequestListeners: function setupRequestListeners(request) {\n rdsutil.setupRequestListeners(this, request, crossRegionOperations);\n },\n });\n","'use strict';\nvar classof = require('../internals/classof');\nvar getMethod = require('../internals/get-method');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\nvar Iterators = require('../internals/iterators');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = function (it) {\n if (!isNullOrUndefined(it)) return getMethod(it, ITERATOR)\n || getMethod(it, '@@iterator')\n || Iterators[classof(it)];\n};\n","'use strict';\nvar toLength = require('../internals/to-length');\n\n// `LengthOfArrayLike` abstract operation\n// https://tc39.es/ecma262/#sec-lengthofarraylike\nmodule.exports = function (obj) {\n return toLength(obj.length);\n};\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar apply = require('../internals/function-apply');\nvar isCallable = require('../internals/is-callable');\nvar ENVIRONMENT = require('../internals/environment');\nvar USER_AGENT = require('../internals/environment-user-agent');\nvar arraySlice = require('../internals/array-slice');\nvar validateArgumentsLength = require('../internals/validate-arguments-length');\n\nvar Function = globalThis.Function;\n// dirty IE9- and Bun 0.3.0- checks\nvar WRAP = /MSIE .\\./.test(USER_AGENT) || ENVIRONMENT === 'BUN' && (function () {\n var version = globalThis.Bun.version.split('.');\n return version.length < 3 || version[0] === '0' && (version[1] < 3 || version[1] === '3' && version[2] === '0');\n})();\n\n// IE9- / Bun 0.3.0- setTimeout / setInterval / setImmediate additional parameters fix\n// https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#timers\n// https://github.com/oven-sh/bun/issues/1633\nmodule.exports = function (scheduler, hasTimeArg) {\n var firstParamIndex = hasTimeArg ? 2 : 1;\n return WRAP ? function (handler, timeout /* , ...arguments */) {\n var boundArgs = validateArgumentsLength(arguments.length, 1) > firstParamIndex;\n var fn = isCallable(handler) ? handler : Function(handler);\n var params = boundArgs ? arraySlice(arguments, firstParamIndex) : [];\n var callback = boundArgs ? function () {\n apply(fn, this, params);\n } : fn;\n return hasTimeArg ? scheduler(callback, timeout) : scheduler(callback);\n } : scheduler;\n};\n","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n","'use strict';\n\nvar isCallable = require('is-callable');\n\nvar toStr = Object.prototype.toString;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\n/** @type {(arr: A, iterator: (this: This | void, value: A[number], index: number, arr: A) => void, receiver: This | undefined) => void} */\nvar forEachArray = function forEachArray(array, iterator, receiver) {\n for (var i = 0, len = array.length; i < len; i++) {\n if (hasOwnProperty.call(array, i)) {\n if (receiver == null) {\n iterator(array[i], i, array);\n } else {\n iterator.call(receiver, array[i], i, array);\n }\n }\n }\n};\n\n/** @type {(string: S, iterator: (this: This | void, value: S[number], index: number, string: S) => void, receiver: This | undefined) => void} */\nvar forEachString = function forEachString(string, iterator, receiver) {\n for (var i = 0, len = string.length; i < len; i++) {\n // no such thing as a sparse string.\n if (receiver == null) {\n iterator(string.charAt(i), i, string);\n } else {\n iterator.call(receiver, string.charAt(i), i, string);\n }\n }\n};\n\n/** @type {(obj: O, iterator: (this: This | void, value: O[keyof O], index: keyof O, obj: O) => void, receiver: This | undefined) => void} */\nvar forEachObject = function forEachObject(object, iterator, receiver) {\n for (var k in object) {\n if (hasOwnProperty.call(object, k)) {\n if (receiver == null) {\n iterator(object[k], k, object);\n } else {\n iterator.call(receiver, object[k], k, object);\n }\n }\n }\n};\n\n/** @type {(x: unknown) => x is readonly unknown[]} */\nfunction isArray(x) {\n return toStr.call(x) === '[object Array]';\n}\n\n/** @type {import('.')._internal} */\nmodule.exports = function forEach(list, iterator, thisArg) {\n if (!isCallable(iterator)) {\n throw new TypeError('iterator must be a function');\n }\n\n var receiver;\n if (arguments.length >= 3) {\n receiver = thisArg;\n }\n\n if (isArray(list)) {\n forEachArray(list, iterator, receiver);\n } else if (typeof list === 'string') {\n forEachString(list, iterator, receiver);\n } else {\n forEachObject(list, iterator, receiver);\n }\n};\n","'use strict';\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\nmodule.exports = function (index, length) {\n var integer = toIntegerOrInfinity(index);\n return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n","'use strict';\nvar NATIVE_WEAK_MAP = require('../internals/weak-map-basic-detection');\nvar globalThis = require('../internals/global-this');\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar hasOwn = require('../internals/has-own-property');\nvar shared = require('../internals/shared-store');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar OBJECT_ALREADY_INITIALIZED = 'Object already initialized';\nvar TypeError = globalThis.TypeError;\nvar WeakMap = globalThis.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n return function (it) {\n var state;\n if (!isObject(it) || (state = get(it)).type !== TYPE) {\n throw new TypeError('Incompatible receiver, ' + TYPE + ' required');\n } return state;\n };\n};\n\nif (NATIVE_WEAK_MAP || shared.state) {\n var store = shared.state || (shared.state = new WeakMap());\n /* eslint-disable no-self-assign -- prototype methods protection */\n store.get = store.get;\n store.has = store.has;\n store.set = store.set;\n /* eslint-enable no-self-assign -- prototype methods protection */\n set = function (it, metadata) {\n if (store.has(it)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n store.set(it, metadata);\n return metadata;\n };\n get = function (it) {\n return store.get(it) || {};\n };\n has = function (it) {\n return store.has(it);\n };\n} else {\n var STATE = sharedKey('state');\n hiddenKeys[STATE] = true;\n set = function (it, metadata) {\n if (hasOwn(it, STATE)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n createNonEnumerableProperty(it, STATE, metadata);\n return metadata;\n };\n get = function (it) {\n return hasOwn(it, STATE) ? it[STATE] : {};\n };\n has = function (it) {\n return hasOwn(it, STATE);\n };\n}\n\nmodule.exports = {\n set: set,\n get: get,\n has: has,\n enforce: enforce,\n getterFor: getterFor\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport ServerSideNetworkAdaption from '../signalingclient/ServerSideNetworkAdaption';\n\n/** @internal */\nconst enum NetworkEvent {\n Stable,\n Decrease,\n Increase,\n}\n\n/**\n * [[VideoPriorityBasedPolicyConfig]] contains the network issue response delay and network issue recovery delay.\n */\nexport default class VideoPriorityBasedPolicyConfig {\n private static readonly MINIMUM_DELAY_MS = 2000;\n private static readonly MAXIMUM_DELAY_MS = 8000;\n\n static readonly Default = new VideoPriorityBasedPolicyConfig(0, 0);\n static readonly UnstableNetworkPreset = new VideoPriorityBasedPolicyConfig(0, 1);\n static readonly StableNetworkPreset = new VideoPriorityBasedPolicyConfig(1, 0);\n\n private currentNetworkEvent: NetworkEvent = NetworkEvent.Stable;\n private bandwidthDecreaseTimestamp: number = 0; // the last time bandwidth decreases\n private referenceBitrate: number = 0;\n\n /**\n * Additional server side features to be enabled for network adaption. The only currently\n * recommended value is `ServerSideNetworkAdaption.BandwidthProbingAndRemoteVideoQualityAdaption`\n */\n serverSideNetworkAdaption =\n ServerSideNetworkAdaption.BandwidthProbingAndRemoteVideoQualityAdaption;\n\n /** Initializes a [[VideoPriorityBasedPolicyConfig]] with the network event delays.\n *\n * @deprecated These values are not used when server side network adaptation is used, which will\n * become the default in the future. Therefore these constructors\n * will be deprecated and removed in a later releases.\n *\n * @param networkIssueResponseDelayFactor Delays before reducing subscribed video bitrate. Input should be a value between 0 and 1.\n * @param networkIssueRecoveryDelayFactor Delays before starting to increase bitrates after a network event and\n * delays between increasing video bitrates on each individual stream. Input should be a value between 0 and 1.\n */\n constructor(\n public networkIssueResponseDelayFactor: number = 0,\n public networkIssueRecoveryDelayFactor: number = 0\n ) {\n if (networkIssueResponseDelayFactor < 0) {\n networkIssueResponseDelayFactor = 0;\n } else if (networkIssueResponseDelayFactor > 1) {\n networkIssueResponseDelayFactor = 1;\n }\n this.networkIssueResponseDelayFactor = networkIssueResponseDelayFactor;\n\n if (networkIssueRecoveryDelayFactor < 0) {\n networkIssueRecoveryDelayFactor = 0;\n } else if (networkIssueRecoveryDelayFactor > 1) {\n networkIssueRecoveryDelayFactor = 1;\n }\n this.networkIssueRecoveryDelayFactor = networkIssueRecoveryDelayFactor;\n }\n\n // determine if subscribe is allowed based on network issue/recovery delays\n allowSubscribe(numberOfParticipants: number, currentEstimated: number): boolean {\n let timeBeforeAllowSubscribeMs = 0;\n const previousNetworkEvent = this.currentNetworkEvent;\n\n if (currentEstimated > this.referenceBitrate) {\n // if bw increases\n this.currentNetworkEvent = NetworkEvent.Increase;\n this.referenceBitrate = currentEstimated;\n return true;\n } else if (currentEstimated < this.referenceBitrate) {\n // if bw decreases, we use response delay\n this.currentNetworkEvent = NetworkEvent.Decrease;\n timeBeforeAllowSubscribeMs = this.getSubscribeDelay(\n this.currentNetworkEvent,\n numberOfParticipants\n );\n\n if (previousNetworkEvent !== NetworkEvent.Decrease) {\n this.bandwidthDecreaseTimestamp = Date.now();\n } else if (Date.now() - this.bandwidthDecreaseTimestamp > timeBeforeAllowSubscribeMs) {\n this.referenceBitrate = currentEstimated;\n return true;\n }\n return false;\n } else {\n this.currentNetworkEvent = NetworkEvent.Stable;\n return false;\n }\n }\n\n // convert network event delay factor to actual delay in ms\n private getSubscribeDelay(event: NetworkEvent, numberOfParticipants: number): number {\n // left and right boundary of the delay\n let subscribeDelay = VideoPriorityBasedPolicyConfig.MINIMUM_DELAY_MS;\n const range =\n VideoPriorityBasedPolicyConfig.MAXIMUM_DELAY_MS -\n VideoPriorityBasedPolicyConfig.MINIMUM_DELAY_MS;\n\n const responseFactor = this.networkIssueResponseDelayFactor;\n\n switch (event) {\n case NetworkEvent.Decrease:\n // we include number of participants here since bigger size of the meeting will generate higher bitrate\n subscribeDelay += range * responseFactor * (1 + numberOfParticipants / 10);\n subscribeDelay = Math.min(VideoPriorityBasedPolicyConfig.MAXIMUM_DELAY_MS, subscribeDelay);\n break;\n }\n\n return subscribeDelay;\n }\n}\n","/**\n * An API for getting cryptographically-secure random bytes. The bytes are\n * generated using the Fortuna algorithm devised by Bruce Schneier and\n * Niels Ferguson.\n *\n * Getting strong random bytes is not yet easy to do in javascript. The only\n * truish random entropy that can be collected is from the mouse, keyboard, or\n * from timing with respect to page loads, etc. This generator makes a poor\n * attempt at providing random bytes when those sources haven't yet provided\n * enough entropy to initially seed or to reseed the PRNG.\n *\n * @author Dave Longley\n *\n * Copyright (c) 2009-2014 Digital Bazaar, Inc.\n */\nvar forge = require('./forge');\nrequire('./aes');\nrequire('./sha256');\nrequire('./prng');\nrequire('./util');\n\n(function() {\n\n// forge.random already defined\nif(forge.random && forge.random.getBytes) {\n module.exports = forge.random;\n return;\n}\n\n(function(jQuery) {\n\n// the default prng plugin, uses AES-128\nvar prng_aes = {};\nvar _prng_aes_output = new Array(4);\nvar _prng_aes_buffer = forge.util.createBuffer();\nprng_aes.formatKey = function(key) {\n // convert the key into 32-bit integers\n var tmp = forge.util.createBuffer(key);\n key = new Array(4);\n key[0] = tmp.getInt32();\n key[1] = tmp.getInt32();\n key[2] = tmp.getInt32();\n key[3] = tmp.getInt32();\n\n // return the expanded key\n return forge.aes._expandKey(key, false);\n};\nprng_aes.formatSeed = function(seed) {\n // convert seed into 32-bit integers\n var tmp = forge.util.createBuffer(seed);\n seed = new Array(4);\n seed[0] = tmp.getInt32();\n seed[1] = tmp.getInt32();\n seed[2] = tmp.getInt32();\n seed[3] = tmp.getInt32();\n return seed;\n};\nprng_aes.cipher = function(key, seed) {\n forge.aes._updateBlock(key, seed, _prng_aes_output, false);\n _prng_aes_buffer.putInt32(_prng_aes_output[0]);\n _prng_aes_buffer.putInt32(_prng_aes_output[1]);\n _prng_aes_buffer.putInt32(_prng_aes_output[2]);\n _prng_aes_buffer.putInt32(_prng_aes_output[3]);\n return _prng_aes_buffer.getBytes();\n};\nprng_aes.increment = function(seed) {\n // FIXME: do we care about carry or signed issues?\n ++seed[3];\n return seed;\n};\nprng_aes.md = forge.md.sha256;\n\n/**\n * Creates a new PRNG.\n */\nfunction spawnPrng() {\n var ctx = forge.prng.create(prng_aes);\n\n /**\n * Gets random bytes. If a native secure crypto API is unavailable, this\n * method tries to make the bytes more unpredictable by drawing from data that\n * can be collected from the user of the browser, eg: mouse movement.\n *\n * If a callback is given, this method will be called asynchronously.\n *\n * @param count the number of random bytes to get.\n * @param [callback(err, bytes)] called once the operation completes.\n *\n * @return the random bytes in a string.\n */\n ctx.getBytes = function(count, callback) {\n return ctx.generate(count, callback);\n };\n\n /**\n * Gets random bytes asynchronously. If a native secure crypto API is\n * unavailable, this method tries to make the bytes more unpredictable by\n * drawing from data that can be collected from the user of the browser,\n * eg: mouse movement.\n *\n * @param count the number of random bytes to get.\n *\n * @return the random bytes in a string.\n */\n ctx.getBytesSync = function(count) {\n return ctx.generate(count);\n };\n\n return ctx;\n}\n\n// create default prng context\nvar _ctx = spawnPrng();\n\n// add other sources of entropy only if window.crypto.getRandomValues is not\n// available -- otherwise this source will be automatically used by the prng\nvar getRandomValues = null;\nvar globalScope = forge.util.globalScope;\nvar _crypto = globalScope.crypto || globalScope.msCrypto;\nif(_crypto && _crypto.getRandomValues) {\n getRandomValues = function(arr) {\n return _crypto.getRandomValues(arr);\n };\n}\n\nif(forge.options.usePureJavaScript ||\n (!forge.util.isNodejs && !getRandomValues)) {\n // if this is a web worker, do not use weak entropy, instead register to\n // receive strong entropy asynchronously from the main thread\n if(typeof window === 'undefined' || window.document === undefined) {\n // FIXME:\n }\n\n // get load time entropy\n _ctx.collectInt(+new Date(), 32);\n\n // add some entropy from navigator object\n if(typeof(navigator) !== 'undefined') {\n var _navBytes = '';\n for(var key in navigator) {\n try {\n if(typeof(navigator[key]) == 'string') {\n _navBytes += navigator[key];\n }\n } catch(e) {\n /* Some navigator keys might not be accessible, e.g. the geolocation\n attribute throws an exception if touched in Mozilla chrome://\n context.\n\n Silently ignore this and just don't use this as a source of\n entropy. */\n }\n }\n _ctx.collect(_navBytes);\n _navBytes = null;\n }\n\n // add mouse and keyboard collectors if jquery is available\n if(jQuery) {\n // set up mouse entropy capture\n jQuery().mousemove(function(e) {\n // add mouse coords\n _ctx.collectInt(e.clientX, 16);\n _ctx.collectInt(e.clientY, 16);\n });\n\n // set up keyboard entropy capture\n jQuery().keypress(function(e) {\n _ctx.collectInt(e.charCode, 8);\n });\n }\n}\n\n/* Random API */\nif(!forge.random) {\n forge.random = _ctx;\n} else {\n // extend forge.random with _ctx\n for(var key in _ctx) {\n forge.random[key] = _ctx[key];\n }\n}\n\n// expose spawn PRNG\nforge.random.createInstance = spawnPrng;\n\nmodule.exports = forge.random;\n\n})(typeof(jQuery) !== 'undefined' ? jQuery : null);\n\n})();\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport AudioVideoControllerState from '../audiovideocontroller/AudioVideoControllerState';\nimport BaseTask from './BaseTask';\n\n/**\n * [[ReceiveAudioInputTask]] acquires an audio input.\n */\nexport default class ReceiveAudioInputTask extends BaseTask {\n protected taskName = 'ReceiveAudioInputTask';\n\n constructor(private context: AudioVideoControllerState) {\n super(context.logger);\n }\n\n async run(): Promise {\n if (!this.context.meetingSessionConfiguration?.urls?.audioHostURL) {\n this.context.logger.info('No audio connection: not acquiring audio input');\n return;\n }\n\n if (this.context.activeAudioInput) {\n this.context.logger.info('an active audio input exists');\n return;\n }\n let audioInput: MediaStream | undefined;\n try {\n audioInput = await this.context.mediaStreamBroker.acquireAudioInputStream();\n } catch (error) {\n this.context.logger.warn('could not acquire audio input from current device');\n }\n\n if (audioInput) {\n this.context.activeAudioInput = audioInput;\n } else {\n this.context.logger.warn('an audio input is not available');\n }\n }\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\n/** Defines the event types generated by SignalingClient and the underlying WebSocket connection. */\nexport enum SignalingClientEventType {\n WebSocketConnecting,\n WebSocketOpen,\n WebSocketError,\n WebSocketClosing,\n WebSocketClosed,\n WebSocketFailed,\n WebSocketMessage,\n WebSocketSendMessageFailure,\n WebSocketSentMessage,\n ProtocolDecodeFailure,\n ReceivedSignalFrame,\n WebSocketSkippedMessage,\n}\n\nexport default SignalingClientEventType;\n","\"use strict\";\nmodule.exports = Service;\n\nvar util = require(\"../util/minimal\");\n\n// Extends EventEmitter\n(Service.prototype = Object.create(util.EventEmitter.prototype)).constructor = Service;\n\n/**\n * A service method callback as used by {@link rpc.ServiceMethod|ServiceMethod}.\n *\n * Differs from {@link RPCImplCallback} in that it is an actual callback of a service method which may not return `response = null`.\n * @typedef rpc.ServiceMethodCallback\n * @template TRes extends Message\n * @type {function}\n * @param {Error|null} error Error, if any\n * @param {TRes} [response] Response message\n * @returns {undefined}\n */\n\n/**\n * A service method part of a {@link rpc.Service} as created by {@link Service.create}.\n * @typedef rpc.ServiceMethod\n * @template TReq extends Message\n * @template TRes extends Message\n * @type {function}\n * @param {TReq|Properties} request Request message or plain object\n * @param {rpc.ServiceMethodCallback} [callback] Node-style callback called with the error, if any, and the response message\n * @returns {Promise>} Promise if `callback` has been omitted, otherwise `undefined`\n */\n\n/**\n * Constructs a new RPC service instance.\n * @classdesc An RPC service as returned by {@link Service#create}.\n * @exports rpc.Service\n * @extends util.EventEmitter\n * @constructor\n * @param {RPCImpl} rpcImpl RPC implementation\n * @param {boolean} [requestDelimited=false] Whether requests are length-delimited\n * @param {boolean} [responseDelimited=false] Whether responses are length-delimited\n */\nfunction Service(rpcImpl, requestDelimited, responseDelimited) {\n\n if (typeof rpcImpl !== \"function\")\n throw TypeError(\"rpcImpl must be a function\");\n\n util.EventEmitter.call(this);\n\n /**\n * RPC implementation. Becomes `null` once the service is ended.\n * @type {RPCImpl|null}\n */\n this.rpcImpl = rpcImpl;\n\n /**\n * Whether requests are length-delimited.\n * @type {boolean}\n */\n this.requestDelimited = Boolean(requestDelimited);\n\n /**\n * Whether responses are length-delimited.\n * @type {boolean}\n */\n this.responseDelimited = Boolean(responseDelimited);\n}\n\n/**\n * Calls a service method through {@link rpc.Service#rpcImpl|rpcImpl}.\n * @param {Method|rpc.ServiceMethod} method Reflected or static method\n * @param {Constructor} requestCtor Request constructor\n * @param {Constructor} responseCtor Response constructor\n * @param {TReq|Properties} request Request message or plain object\n * @param {rpc.ServiceMethodCallback} callback Service callback\n * @returns {undefined}\n * @template TReq extends Message\n * @template TRes extends Message\n */\nService.prototype.rpcCall = function rpcCall(method, requestCtor, responseCtor, request, callback) {\n\n if (!request)\n throw TypeError(\"request must be specified\");\n\n var self = this;\n if (!callback)\n return util.asPromise(rpcCall, self, method, requestCtor, responseCtor, request);\n\n if (!self.rpcImpl) {\n setTimeout(function() { callback(Error(\"already ended\")); }, 0);\n return undefined;\n }\n\n try {\n return self.rpcImpl(\n method,\n requestCtor[self.requestDelimited ? \"encodeDelimited\" : \"encode\"](request).finish(),\n function rpcCallback(err, response) {\n\n if (err) {\n self.emit(\"error\", err, method);\n return callback(err);\n }\n\n if (response === null) {\n self.end(/* endedByRPC */ true);\n return undefined;\n }\n\n if (!(response instanceof responseCtor)) {\n try {\n response = responseCtor[self.responseDelimited ? \"decodeDelimited\" : \"decode\"](response);\n } catch (err) {\n self.emit(\"error\", err, method);\n return callback(err);\n }\n }\n\n self.emit(\"data\", response, method);\n return callback(null, response);\n }\n );\n } catch (err) {\n self.emit(\"error\", err, method);\n setTimeout(function() { callback(err); }, 0);\n return undefined;\n }\n};\n\n/**\n * Ends this service and emits the `end` event.\n * @param {boolean} [endedByRPC=false] Whether the service has been ended by the RPC implementation.\n * @returns {rpc.Service} `this`\n */\nService.prototype.end = function end(endedByRPC) {\n if (this.rpcImpl) {\n if (!endedByRPC) // signal end to rpcImpl\n this.rpcImpl(null, null, null);\n this.rpcImpl = null;\n this.emit(\"end\").off();\n }\n return this;\n};\n","'use strict';\n\n/** @type {import('./abs')} */\nmodule.exports = Math.abs;\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nexport enum CheckAudioConnectivityFeedback {\n Succeeded,\n AudioInputRequestFailed,\n AudioInputPermissionDenied,\n ConnectionFailed,\n AudioNotReceived,\n}\n\nexport default CheckAudioConnectivityFeedback;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['comprehendmedical'] = {};\nAWS.ComprehendMedical = Service.defineService('comprehendmedical', ['2018-10-30']);\nObject.defineProperty(apiLoader.services['comprehendmedical'], '2018-10-30', {\n get: function get() {\n var model = require('../apis/comprehendmedical-2018-10-30.min.json');\n model.paginators = require('../apis/comprehendmedical-2018-10-30.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.ComprehendMedical;\n","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar toSetLike = require('../internals/to-set-like');\nvar $isDisjointFrom = require('../internals/set-is-disjoint-from');\n\n// `Set.prototype.isDisjointFrom` method\n// https://github.com/tc39/proposal-set-methods\n// TODO: Obsolete version, remove from `core-js@4`\n$({ target: 'Set', proto: true, real: true, forced: true }, {\n isDisjointFrom: function isDisjointFrom(other) {\n return call($isDisjointFrom, this, toSetLike(other));\n }\n});\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['lambda'] = {};\nAWS.Lambda = Service.defineService('lambda', ['2014-11-11', '2015-03-31']);\nrequire('../lib/services/lambda');\nObject.defineProperty(apiLoader.services['lambda'], '2014-11-11', {\n get: function get() {\n var model = require('../apis/lambda-2014-11-11.min.json');\n model.paginators = require('../apis/lambda-2014-11-11.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\nObject.defineProperty(apiLoader.services['lambda'], '2015-03-31', {\n get: function get() {\n var model = require('../apis/lambda-2015-03-31.min.json');\n model.paginators = require('../apis/lambda-2015-03-31.paginators.json').pagination;\n model.waiters = require('../apis/lambda-2015-03-31.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.Lambda;\n","'use strict';\nvar $propertyIsEnumerable = {}.propertyIsEnumerable;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n var descriptor = getOwnPropertyDescriptor(this, V);\n return !!descriptor && descriptor.enumerable;\n} : $propertyIsEnumerable;\n","/////////////////////////////////////////////////////////////////////////////////\n/* UAParser.js v1.0.40\n Copyright © 2012-2024 Faisal Salman \n MIT License *//*\n Detect Browser, Engine, OS, CPU, and Device type/model from User-Agent data.\n Supports browser & node.js environment. \n Demo : https://faisalman.github.io/ua-parser-js\n Source : https://github.com/faisalman/ua-parser-js */\n/////////////////////////////////////////////////////////////////////////////////\n\n(function (window, undefined) {\n\n 'use strict';\n\n //////////////\n // Constants\n /////////////\n\n\n var LIBVERSION = '1.0.40',\n EMPTY = '',\n UNKNOWN = '?',\n FUNC_TYPE = 'function',\n UNDEF_TYPE = 'undefined',\n OBJ_TYPE = 'object',\n STR_TYPE = 'string',\n MAJOR = 'major',\n MODEL = 'model',\n NAME = 'name',\n TYPE = 'type',\n VENDOR = 'vendor',\n VERSION = 'version',\n ARCHITECTURE= 'architecture',\n CONSOLE = 'console',\n MOBILE = 'mobile',\n TABLET = 'tablet',\n SMARTTV = 'smarttv',\n WEARABLE = 'wearable',\n EMBEDDED = 'embedded',\n UA_MAX_LENGTH = 500;\n\n var AMAZON = 'Amazon',\n APPLE = 'Apple',\n ASUS = 'ASUS',\n BLACKBERRY = 'BlackBerry',\n BROWSER = 'Browser',\n CHROME = 'Chrome',\n EDGE = 'Edge',\n FIREFOX = 'Firefox',\n GOOGLE = 'Google',\n HUAWEI = 'Huawei',\n LG = 'LG',\n MICROSOFT = 'Microsoft',\n MOTOROLA = 'Motorola',\n OPERA = 'Opera',\n SAMSUNG = 'Samsung',\n SHARP = 'Sharp',\n SONY = 'Sony',\n XIAOMI = 'Xiaomi',\n ZEBRA = 'Zebra',\n FACEBOOK = 'Facebook',\n CHROMIUM_OS = 'Chromium OS',\n MAC_OS = 'Mac OS',\n SUFFIX_BROWSER = ' Browser';\n\n ///////////\n // Helper\n //////////\n\n var extend = function (regexes, extensions) {\n var mergedRegexes = {};\n for (var i in regexes) {\n if (extensions[i] && extensions[i].length % 2 === 0) {\n mergedRegexes[i] = extensions[i].concat(regexes[i]);\n } else {\n mergedRegexes[i] = regexes[i];\n }\n }\n return mergedRegexes;\n },\n enumerize = function (arr) {\n var enums = {};\n for (var i=0; i 0) {\n if (q.length === 2) {\n if (typeof q[1] == FUNC_TYPE) {\n // assign modified match\n this[q[0]] = q[1].call(this, match);\n } else {\n // assign given value, ignore regex match\n this[q[0]] = q[1];\n }\n } else if (q.length === 3) {\n // check whether function or regex\n if (typeof q[1] === FUNC_TYPE && !(q[1].exec && q[1].test)) {\n // call function (usually string mapper)\n this[q[0]] = match ? q[1].call(this, match, q[2]) : undefined;\n } else {\n // sanitize match using given regex\n this[q[0]] = match ? match.replace(q[1], q[2]) : undefined;\n }\n } else if (q.length === 4) {\n this[q[0]] = match ? q[3].call(this, match.replace(q[1], q[2])) : undefined;\n }\n } else {\n this[q] = match ? match : undefined;\n }\n }\n }\n }\n i += 2;\n }\n },\n\n strMapper = function (str, map) {\n\n for (var i in map) {\n // check if current value is array\n if (typeof map[i] === OBJ_TYPE && map[i].length > 0) {\n for (var j = 0; j < map[i].length; j++) {\n if (has(map[i][j], str)) {\n return (i === UNKNOWN) ? undefined : i;\n }\n }\n } else if (has(map[i], str)) {\n return (i === UNKNOWN) ? undefined : i;\n }\n }\n return map.hasOwnProperty('*') ? map['*'] : str;\n };\n\n ///////////////\n // String map\n //////////////\n\n // Safari < 3.0\n var oldSafariMap = {\n '1.0' : '/8',\n '1.2' : '/1',\n '1.3' : '/3',\n '2.0' : '/412',\n '2.0.2' : '/416',\n '2.0.3' : '/417',\n '2.0.4' : '/419',\n '?' : '/'\n },\n windowsVersionMap = {\n 'ME' : '4.90',\n 'NT 3.11' : 'NT3.51',\n 'NT 4.0' : 'NT4.0',\n '2000' : 'NT 5.0',\n 'XP' : ['NT 5.1', 'NT 5.2'],\n 'Vista' : 'NT 6.0',\n '7' : 'NT 6.1',\n '8' : 'NT 6.2',\n '8.1' : 'NT 6.3',\n '10' : ['NT 6.4', 'NT 10.0'],\n 'RT' : 'ARM'\n };\n\n //////////////\n // Regex map\n /////////////\n\n var regexes = {\n\n browser : [[\n\n /\\b(?:crmo|crios)\\/([\\w\\.]+)/i // Chrome for Android/iOS\n ], [VERSION, [NAME, 'Chrome']], [\n /edg(?:e|ios|a)?\\/([\\w\\.]+)/i // Microsoft Edge\n ], [VERSION, [NAME, 'Edge']], [\n\n // Presto based\n /(opera mini)\\/([-\\w\\.]+)/i, // Opera Mini\n /(opera [mobiletab]{3,6})\\b.+version\\/([-\\w\\.]+)/i, // Opera Mobi/Tablet\n /(opera)(?:.+version\\/|[\\/ ]+)([\\w\\.]+)/i // Opera\n ], [NAME, VERSION], [\n /opios[\\/ ]+([\\w\\.]+)/i // Opera mini on iphone >= 8.0\n ], [VERSION, [NAME, OPERA+' Mini']], [\n /\\bop(?:rg)?x\\/([\\w\\.]+)/i // Opera GX\n ], [VERSION, [NAME, OPERA+' GX']], [\n /\\bopr\\/([\\w\\.]+)/i // Opera Webkit\n ], [VERSION, [NAME, OPERA]], [\n\n // Mixed\n /\\bb[ai]*d(?:uhd|[ub]*[aekoprswx]{5,6})[\\/ ]?([\\w\\.]+)/i // Baidu\n ], [VERSION, [NAME, 'Baidu']], [\n /\\b(?:mxbrowser|mxios|myie2)\\/?([-\\w\\.]*)\\b/i // Maxthon\n ], [VERSION, [NAME, 'Maxthon']], [\n /(kindle)\\/([\\w\\.]+)/i, // Kindle\n /(lunascape|maxthon|netfront|jasmine|blazer|sleipnir)[\\/ ]?([\\w\\.]*)/i, \n // Lunascape/Maxthon/Netfront/Jasmine/Blazer/Sleipnir\n // Trident based\n /(avant|iemobile|slim(?:browser|boat|jet))[\\/ ]?([\\d\\.]*)/i, // Avant/IEMobile/SlimBrowser/SlimBoat/Slimjet\n /(?:ms|\\()(ie) ([\\w\\.]+)/i, // Internet Explorer\n\n // Blink/Webkit/KHTML based // Flock/RockMelt/Midori/Epiphany/Silk/Skyfire/Bolt/Iron/Iridium/PhantomJS/Bowser/QupZilla/Falkon\n /(flock|rockmelt|midori|epiphany|silk|skyfire|ovibrowser|bolt|iron|vivaldi|iridium|phantomjs|bowser|qupzilla|falkon|rekonq|puffin|brave|whale(?!.+naver)|qqbrowserlite|duckduckgo|klar|helio|(?=comodo_)?dragon)\\/([-\\w\\.]+)/i,\n // Rekonq/Puffin/Brave/Whale/QQBrowserLite/QQ//Vivaldi/DuckDuckGo/Klar/Helio/Dragon\n /(heytap|ovi|115)browser\\/([\\d\\.]+)/i, // HeyTap/Ovi/115\n /(weibo)__([\\d\\.]+)/i // Weibo\n ], [NAME, VERSION], [\n /quark(?:pc)?\\/([-\\w\\.]+)/i // Quark\n ], [VERSION, [NAME, 'Quark']], [\n /\\bddg\\/([\\w\\.]+)/i // DuckDuckGo\n ], [VERSION, [NAME, 'DuckDuckGo']], [\n /(?:\\buc? ?browser|(?:juc.+)ucweb)[\\/ ]?([\\w\\.]+)/i // UCBrowser\n ], [VERSION, [NAME, 'UC'+BROWSER]], [\n /microm.+\\bqbcore\\/([\\w\\.]+)/i, // WeChat Desktop for Windows Built-in Browser\n /\\bqbcore\\/([\\w\\.]+).+microm/i,\n /micromessenger\\/([\\w\\.]+)/i // WeChat\n ], [VERSION, [NAME, 'WeChat']], [\n /konqueror\\/([\\w\\.]+)/i // Konqueror\n ], [VERSION, [NAME, 'Konqueror']], [\n /trident.+rv[: ]([\\w\\.]{1,9})\\b.+like gecko/i // IE11\n ], [VERSION, [NAME, 'IE']], [\n /ya(?:search)?browser\\/([\\w\\.]+)/i // Yandex\n ], [VERSION, [NAME, 'Yandex']], [\n /slbrowser\\/([\\w\\.]+)/i // Smart Lenovo Browser\n ], [VERSION, [NAME, 'Smart Lenovo '+BROWSER]], [\n /(avast|avg)\\/([\\w\\.]+)/i // Avast/AVG Secure Browser\n ], [[NAME, /(.+)/, '$1 Secure '+BROWSER], VERSION], [\n /\\bfocus\\/([\\w\\.]+)/i // Firefox Focus\n ], [VERSION, [NAME, FIREFOX+' Focus']], [\n /\\bopt\\/([\\w\\.]+)/i // Opera Touch\n ], [VERSION, [NAME, OPERA+' Touch']], [\n /coc_coc\\w+\\/([\\w\\.]+)/i // Coc Coc Browser\n ], [VERSION, [NAME, 'Coc Coc']], [\n /dolfin\\/([\\w\\.]+)/i // Dolphin\n ], [VERSION, [NAME, 'Dolphin']], [\n /coast\\/([\\w\\.]+)/i // Opera Coast\n ], [VERSION, [NAME, OPERA+' Coast']], [\n /miuibrowser\\/([\\w\\.]+)/i // MIUI Browser\n ], [VERSION, [NAME, 'MIUI' + SUFFIX_BROWSER]], [\n /fxios\\/([\\w\\.-]+)/i // Firefox for iOS\n ], [VERSION, [NAME, FIREFOX]], [\n /\\bqihoobrowser\\/?([\\w\\.]*)/i // 360\n ], [VERSION, [NAME, '360']], [\n /\\b(qq)\\/([\\w\\.]+)/i // QQ\n ], [[NAME, /(.+)/, '$1Browser'], VERSION], [\n /(oculus|sailfish|huawei|vivo|pico)browser\\/([\\w\\.]+)/i\n ], [[NAME, /(.+)/, '$1' + SUFFIX_BROWSER], VERSION], [ // Oculus/Sailfish/HuaweiBrowser/VivoBrowser/PicoBrowser\n /samsungbrowser\\/([\\w\\.]+)/i // Samsung Internet\n ], [VERSION, [NAME, SAMSUNG + ' Internet']], [\n /metasr[\\/ ]?([\\d\\.]+)/i // Sogou Explorer\n ], [VERSION, [NAME, 'Sogou Explorer']], [\n /(sogou)mo\\w+\\/([\\d\\.]+)/i // Sogou Mobile\n ], [[NAME, 'Sogou Mobile'], VERSION], [\n /(electron)\\/([\\w\\.]+) safari/i, // Electron-based App\n /(tesla)(?: qtcarbrowser|\\/(20\\d\\d\\.[-\\w\\.]+))/i, // Tesla\n /m?(qqbrowser|2345(?=browser|chrome|explorer))\\w*[\\/ ]?v?([\\w\\.]+)/i // QQ/2345\n ], [NAME, VERSION], [\n /(lbbrowser|rekonq)/i, // LieBao Browser/Rekonq\n /\\[(linkedin)app\\]/i // LinkedIn App for iOS & Android\n ], [NAME], [\n /ome\\/([\\w\\.]+) \\w* ?(iron) saf/i, // Iron\n /ome\\/([\\w\\.]+).+qihu (360)[es]e/i // 360\n ], [VERSION, NAME], [\n\n // WebView\n /((?:fban\\/fbios|fb_iab\\/fb4a)(?!.+fbav)|;fbav\\/([\\w\\.]+);)/i // Facebook App for iOS & Android\n ], [[NAME, FACEBOOK], VERSION], [\n /(Klarna)\\/([\\w\\.]+)/i, // Klarna Shopping Browser for iOS & Android\n /(kakao(?:talk|story))[\\/ ]([\\w\\.]+)/i, // Kakao App\n /(naver)\\(.*?(\\d+\\.[\\w\\.]+).*\\)/i, // Naver InApp\n /safari (line)\\/([\\w\\.]+)/i, // Line App for iOS\n /\\b(line)\\/([\\w\\.]+)\\/iab/i, // Line App for Android\n /(alipay)client\\/([\\w\\.]+)/i, // Alipay\n /(twitter)(?:and| f.+e\\/([\\w\\.]+))/i, // Twitter\n /(chromium|instagram|snapchat)[\\/ ]([-\\w\\.]+)/i // Chromium/Instagram/Snapchat\n ], [NAME, VERSION], [\n /\\bgsa\\/([\\w\\.]+) .*safari\\//i // Google Search Appliance on iOS\n ], [VERSION, [NAME, 'GSA']], [\n /musical_ly(?:.+app_?version\\/|_)([\\w\\.]+)/i // TikTok\n ], [VERSION, [NAME, 'TikTok']], [\n\n /headlesschrome(?:\\/([\\w\\.]+)| )/i // Chrome Headless\n ], [VERSION, [NAME, CHROME+' Headless']], [\n\n / wv\\).+(chrome)\\/([\\w\\.]+)/i // Chrome WebView\n ], [[NAME, CHROME+' WebView'], VERSION], [\n\n /droid.+ version\\/([\\w\\.]+)\\b.+(?:mobile safari|safari)/i // Android Browser\n ], [VERSION, [NAME, 'Android '+BROWSER]], [\n\n /(chrome|omniweb|arora|[tizenoka]{5} ?browser)\\/v?([\\w\\.]+)/i // Chrome/OmniWeb/Arora/Tizen/Nokia\n ], [NAME, VERSION], [\n\n /version\\/([\\w\\.\\,]+) .*mobile\\/\\w+ (safari)/i // Mobile Safari\n ], [VERSION, [NAME, 'Mobile Safari']], [\n /version\\/([\\w(\\.|\\,)]+) .*(mobile ?safari|safari)/i // Safari & Safari Mobile\n ], [VERSION, NAME], [\n /webkit.+?(mobile ?safari|safari)(\\/[\\w\\.]+)/i // Safari < 3.0\n ], [NAME, [VERSION, strMapper, oldSafariMap]], [\n\n /(webkit|khtml)\\/([\\w\\.]+)/i\n ], [NAME, VERSION], [\n\n // Gecko based\n /(navigator|netscape\\d?)\\/([-\\w\\.]+)/i // Netscape\n ], [[NAME, 'Netscape'], VERSION], [\n /(wolvic|librewolf)\\/([\\w\\.]+)/i // Wolvic/LibreWolf\n ], [NAME, VERSION], [\n /mobile vr; rv:([\\w\\.]+)\\).+firefox/i // Firefox Reality\n ], [VERSION, [NAME, FIREFOX+' Reality']], [\n /ekiohf.+(flow)\\/([\\w\\.]+)/i, // Flow\n /(swiftfox)/i, // Swiftfox\n /(icedragon|iceweasel|camino|chimera|fennec|maemo browser|minimo|conkeror)[\\/ ]?([\\w\\.\\+]+)/i,\n // IceDragon/Iceweasel/Camino/Chimera/Fennec/Maemo/Minimo/Conkeror\n /(seamonkey|k-meleon|icecat|iceape|firebird|phoenix|palemoon|basilisk|waterfox)\\/([-\\w\\.]+)$/i,\n // Firefox/SeaMonkey/K-Meleon/IceCat/IceApe/Firebird/Phoenix\n /(firefox)\\/([\\w\\.]+)/i, // Other Firefox-based\n /(mozilla)\\/([\\w\\.]+) .+rv\\:.+gecko\\/\\d+/i, // Mozilla\n\n // Other\n /(polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf|obigo|mosaic|(?:go|ice|up)[\\. ]?browser)[-\\/ ]?v?([\\w\\.]+)/i,\n // Polaris/Lynx/Dillo/iCab/Doris/Amaya/w3m/NetSurf/Obigo/Mosaic/Go/ICE/UP.Browser\n /(links) \\(([\\w\\.]+)/i // Links\n ], [NAME, [VERSION, /_/g, '.']], [\n \n /(cobalt)\\/([\\w\\.]+)/i // Cobalt\n ], [NAME, [VERSION, /master.|lts./, \"\"]]\n ],\n\n cpu : [[\n\n /(?:(amd|x(?:(?:86|64)[-_])?|wow|win)64)[;\\)]/i // AMD64 (x64)\n ], [[ARCHITECTURE, 'amd64']], [\n\n /(ia32(?=;))/i // IA32 (quicktime)\n ], [[ARCHITECTURE, lowerize]], [\n\n /((?:i[346]|x)86)[;\\)]/i // IA32 (x86)\n ], [[ARCHITECTURE, 'ia32']], [\n\n /\\b(aarch64|arm(v?8e?l?|_?64))\\b/i // ARM64\n ], [[ARCHITECTURE, 'arm64']], [\n\n /\\b(arm(?:v[67])?ht?n?[fl]p?)\\b/i // ARMHF\n ], [[ARCHITECTURE, 'armhf']], [\n\n // PocketPC mistakenly identified as PowerPC\n /windows (ce|mobile); ppc;/i\n ], [[ARCHITECTURE, 'arm']], [\n\n /((?:ppc|powerpc)(?:64)?)(?: mac|;|\\))/i // PowerPC\n ], [[ARCHITECTURE, /ower/, EMPTY, lowerize]], [\n\n /(sun4\\w)[;\\)]/i // SPARC\n ], [[ARCHITECTURE, 'sparc']], [\n\n /((?:avr32|ia64(?=;))|68k(?=\\))|\\barm(?=v(?:[1-7]|[5-7]1)l?|;|eabi)|(?=atmel )avr|(?:irix|mips|sparc)(?:64)?\\b|pa-risc)/i\n // IA64, 68K, ARM/64, AVR/32, IRIX/64, MIPS/64, SPARC/64, PA-RISC\n ], [[ARCHITECTURE, lowerize]]\n ],\n\n device : [[\n\n //////////////////////////\n // MOBILES & TABLETS\n /////////////////////////\n\n // Samsung\n /\\b(sch-i[89]0\\d|shw-m380s|sm-[ptx]\\w{2,4}|gt-[pn]\\d{2,4}|sgh-t8[56]9|nexus 10)/i\n ], [MODEL, [VENDOR, SAMSUNG], [TYPE, TABLET]], [\n /\\b((?:s[cgp]h|gt|sm)-(?![lr])\\w+|sc[g-]?[\\d]+a?|galaxy nexus)/i,\n /samsung[- ]((?!sm-[lr])[-\\w]+)/i,\n /sec-(sgh\\w+)/i\n ], [MODEL, [VENDOR, SAMSUNG], [TYPE, MOBILE]], [\n\n // Apple\n /(?:\\/|\\()(ip(?:hone|od)[\\w, ]*)(?:\\/|;)/i // iPod/iPhone\n ], [MODEL, [VENDOR, APPLE], [TYPE, MOBILE]], [\n /\\((ipad);[-\\w\\),; ]+apple/i, // iPad\n /applecoremedia\\/[\\w\\.]+ \\((ipad)/i,\n /\\b(ipad)\\d\\d?,\\d\\d?[;\\]].+ios/i\n ], [MODEL, [VENDOR, APPLE], [TYPE, TABLET]], [\n /(macintosh);/i\n ], [MODEL, [VENDOR, APPLE]], [\n\n // Sharp\n /\\b(sh-?[altvz]?\\d\\d[a-ekm]?)/i\n ], [MODEL, [VENDOR, SHARP], [TYPE, MOBILE]], [\n\n // Honor\n /(?:honor)([-\\w ]+)[;\\)]/i\n ], [MODEL, [VENDOR, 'Honor'], [TYPE, MOBILE]], [\n\n // Huawei\n /\\b((?:ag[rs][23]?|bah2?|sht?|btv)-a?[lw]\\d{2})\\b(?!.+d\\/s)/i\n ], [MODEL, [VENDOR, HUAWEI], [TYPE, TABLET]], [\n /(?:huawei)([-\\w ]+)[;\\)]/i,\n /\\b(nexus 6p|\\w{2,4}e?-[atu]?[ln][\\dx][012359c][adn]?)\\b(?!.+d\\/s)/i\n ], [MODEL, [VENDOR, HUAWEI], [TYPE, MOBILE]], [\n\n // Xiaomi\n /\\b(poco[\\w ]+|m2\\d{3}j\\d\\d[a-z]{2})(?: bui|\\))/i, // Xiaomi POCO\n /\\b; (\\w+) build\\/hm\\1/i, // Xiaomi Hongmi 'numeric' models\n /\\b(hm[-_ ]?note?[_ ]?(?:\\d\\w)?) bui/i, // Xiaomi Hongmi\n /\\b(redmi[\\-_ ]?(?:note|k)?[\\w_ ]+)(?: bui|\\))/i, // Xiaomi Redmi\n /oid[^\\)]+; (m?[12][0-389][01]\\w{3,6}[c-y])( bui|; wv|\\))/i, // Xiaomi Redmi 'numeric' models\n /\\b(mi[-_ ]?(?:a\\d|one|one[_ ]plus|note lte|max|cc)?[_ ]?(?:\\d?\\w?)[_ ]?(?:plus|se|lite|pro)?)(?: bui|\\))/i // Xiaomi Mi\n ], [[MODEL, /_/g, ' '], [VENDOR, XIAOMI], [TYPE, MOBILE]], [\n /oid[^\\)]+; (2\\d{4}(283|rpbf)[cgl])( bui|\\))/i, // Redmi Pad\n /\\b(mi[-_ ]?(?:pad)(?:[\\w_ ]+))(?: bui|\\))/i // Mi Pad tablets\n ],[[MODEL, /_/g, ' '], [VENDOR, XIAOMI], [TYPE, TABLET]], [\n\n // OPPO\n /; (\\w+) bui.+ oppo/i,\n /\\b(cph[12]\\d{3}|p(?:af|c[al]|d\\w|e[ar])[mt]\\d0|x9007|a101op)\\b/i\n ], [MODEL, [VENDOR, 'OPPO'], [TYPE, MOBILE]], [\n /\\b(opd2\\d{3}a?) bui/i\n ], [MODEL, [VENDOR, 'OPPO'], [TYPE, TABLET]], [\n\n // Vivo\n /vivo (\\w+)(?: bui|\\))/i,\n /\\b(v[12]\\d{3}\\w?[at])(?: bui|;)/i\n ], [MODEL, [VENDOR, 'Vivo'], [TYPE, MOBILE]], [\n\n // Realme\n /\\b(rmx[1-3]\\d{3})(?: bui|;|\\))/i\n ], [MODEL, [VENDOR, 'Realme'], [TYPE, MOBILE]], [\n\n // Motorola\n /\\b(milestone|droid(?:[2-4x]| (?:bionic|x2|pro|razr))?:?( 4g)?)\\b[\\w ]+build\\//i,\n /\\bmot(?:orola)?[- ](\\w*)/i,\n /((?:moto[\\w\\(\\) ]+|xt\\d{3,4}|nexus 6)(?= bui|\\)))/i\n ], [MODEL, [VENDOR, MOTOROLA], [TYPE, MOBILE]], [\n /\\b(mz60\\d|xoom[2 ]{0,2}) build\\//i\n ], [MODEL, [VENDOR, MOTOROLA], [TYPE, TABLET]], [\n\n // LG\n /((?=lg)?[vl]k\\-?\\d{3}) bui| 3\\.[-\\w; ]{10}lg?-([06cv9]{3,4})/i\n ], [MODEL, [VENDOR, LG], [TYPE, TABLET]], [\n /(lm(?:-?f100[nv]?|-[\\w\\.]+)(?= bui|\\))|nexus [45])/i,\n /\\blg[-e;\\/ ]+((?!browser|netcast|android tv)\\w+)/i,\n /\\blg-?([\\d\\w]+) bui/i\n ], [MODEL, [VENDOR, LG], [TYPE, MOBILE]], [\n\n // Lenovo\n /(ideatab[-\\w ]+)/i,\n /lenovo ?(s[56]000[-\\w]+|tab(?:[\\w ]+)|yt[-\\d\\w]{6}|tb[-\\d\\w]{6})/i\n ], [MODEL, [VENDOR, 'Lenovo'], [TYPE, TABLET]], [\n\n // Nokia\n /(?:maemo|nokia).*(n900|lumia \\d+)/i,\n /nokia[-_ ]?([-\\w\\.]*)/i\n ], [[MODEL, /_/g, ' '], [VENDOR, 'Nokia'], [TYPE, MOBILE]], [\n\n // Google\n /(pixel c)\\b/i // Google Pixel C\n ], [MODEL, [VENDOR, GOOGLE], [TYPE, TABLET]], [\n /droid.+; (pixel[\\daxl ]{0,6})(?: bui|\\))/i // Google Pixel\n ], [MODEL, [VENDOR, GOOGLE], [TYPE, MOBILE]], [\n\n // Sony\n /droid.+; (a?\\d[0-2]{2}so|[c-g]\\d{4}|so[-gl]\\w+|xq-a\\w[4-7][12])(?= bui|\\).+chrome\\/(?![1-6]{0,1}\\d\\.))/i\n ], [MODEL, [VENDOR, SONY], [TYPE, MOBILE]], [\n /sony tablet [ps]/i,\n /\\b(?:sony)?sgp\\w+(?: bui|\\))/i\n ], [[MODEL, 'Xperia Tablet'], [VENDOR, SONY], [TYPE, TABLET]], [\n\n // OnePlus\n / (kb2005|in20[12]5|be20[12][59])\\b/i,\n /(?:one)?(?:plus)? (a\\d0\\d\\d)(?: b|\\))/i\n ], [MODEL, [VENDOR, 'OnePlus'], [TYPE, MOBILE]], [\n\n // Amazon\n /(alexa)webm/i,\n /(kf[a-z]{2}wi|aeo(?!bc)\\w\\w)( bui|\\))/i, // Kindle Fire without Silk / Echo Show\n /(kf[a-z]+)( bui|\\)).+silk\\//i // Kindle Fire HD\n ], [MODEL, [VENDOR, AMAZON], [TYPE, TABLET]], [\n /((?:sd|kf)[0349hijorstuw]+)( bui|\\)).+silk\\//i // Fire Phone\n ], [[MODEL, /(.+)/g, 'Fire Phone $1'], [VENDOR, AMAZON], [TYPE, MOBILE]], [\n\n // BlackBerry\n /(playbook);[-\\w\\),; ]+(rim)/i // BlackBerry PlayBook\n ], [MODEL, VENDOR, [TYPE, TABLET]], [\n /\\b((?:bb[a-f]|st[hv])100-\\d)/i,\n /\\(bb10; (\\w+)/i // BlackBerry 10\n ], [MODEL, [VENDOR, BLACKBERRY], [TYPE, MOBILE]], [\n\n // Asus\n /(?:\\b|asus_)(transfo[prime ]{4,10} \\w+|eeepc|slider \\w+|nexus 7|padfone|p00[cj])/i\n ], [MODEL, [VENDOR, ASUS], [TYPE, TABLET]], [\n / (z[bes]6[027][012][km][ls]|zenfone \\d\\w?)\\b/i\n ], [MODEL, [VENDOR, ASUS], [TYPE, MOBILE]], [\n\n // HTC\n /(nexus 9)/i // HTC Nexus 9\n ], [MODEL, [VENDOR, 'HTC'], [TYPE, TABLET]], [\n /(htc)[-;_ ]{1,2}([\\w ]+(?=\\)| bui)|\\w+)/i, // HTC\n\n // ZTE\n /(zte)[- ]([\\w ]+?)(?: bui|\\/|\\))/i,\n /(alcatel|geeksphone|nexian|panasonic(?!(?:;|\\.))|sony(?!-bra))[-_ ]?([-\\w]*)/i // Alcatel/GeeksPhone/Nexian/Panasonic/Sony\n ], [VENDOR, [MODEL, /_/g, ' '], [TYPE, MOBILE]], [\n\n // TCL\n /droid [\\w\\.]+; ((?:8[14]9[16]|9(?:0(?:48|60|8[01])|1(?:3[27]|66)|2(?:6[69]|9[56])|466))[gqswx])\\w*(\\)| bui)/i\n ], [MODEL, [VENDOR, 'TCL'], [TYPE, TABLET]], [\n\n // itel\n /(itel) ((\\w+))/i\n ], [[VENDOR, lowerize], MODEL, [TYPE, strMapper, { 'tablet' : ['p10001l', 'w7001'], '*' : 'mobile' }]], [\n\n // Acer\n /droid.+; ([ab][1-7]-?[0178a]\\d\\d?)/i\n ], [MODEL, [VENDOR, 'Acer'], [TYPE, TABLET]], [\n\n // Meizu\n /droid.+; (m[1-5] note) bui/i,\n /\\bmz-([-\\w]{2,})/i\n ], [MODEL, [VENDOR, 'Meizu'], [TYPE, MOBILE]], [\n \n // Ulefone\n /; ((?:power )?armor(?:[\\w ]{0,8}))(?: bui|\\))/i\n ], [MODEL, [VENDOR, 'Ulefone'], [TYPE, MOBILE]], [\n\n // Energizer\n /; (energy ?\\w+)(?: bui|\\))/i,\n /; energizer ([\\w ]+)(?: bui|\\))/i\n ], [MODEL, [VENDOR, 'Energizer'], [TYPE, MOBILE]], [\n\n // Cat\n /; cat (b35);/i,\n /; (b15q?|s22 flip|s48c|s62 pro)(?: bui|\\))/i\n ], [MODEL, [VENDOR, 'Cat'], [TYPE, MOBILE]], [\n\n // Smartfren\n /((?:new )?andromax[\\w- ]+)(?: bui|\\))/i\n ], [MODEL, [VENDOR, 'Smartfren'], [TYPE, MOBILE]], [\n\n // Nothing\n /droid.+; (a(?:015|06[35]|142p?))/i\n ], [MODEL, [VENDOR, 'Nothing'], [TYPE, MOBILE]], [\n\n // MIXED\n /(blackberry|benq|palm(?=\\-)|sonyericsson|acer|asus|dell|meizu|motorola|polytron|infinix|tecno|micromax|advan)[-_ ]?([-\\w]*)/i,\n // BlackBerry/BenQ/Palm/Sony-Ericsson/Acer/Asus/Dell/Meizu/Motorola/Polytron/Infinix/Tecno/Micromax/Advan\n /; (imo) ((?!tab)[\\w ]+?)(?: bui|\\))/i, // IMO\n /(hp) ([\\w ]+\\w)/i, // HP iPAQ\n /(asus)-?(\\w+)/i, // Asus\n /(microsoft); (lumia[\\w ]+)/i, // Microsoft Lumia\n /(lenovo)[-_ ]?([-\\w]+)/i, // Lenovo\n /(jolla)/i, // Jolla\n /(oppo) ?([\\w ]+) bui/i // OPPO\n ], [VENDOR, MODEL, [TYPE, MOBILE]], [\n\n /(imo) (tab \\w+)/i, // IMO\n /(kobo)\\s(ereader|touch)/i, // Kobo\n /(archos) (gamepad2?)/i, // Archos\n /(hp).+(touchpad(?!.+tablet)|tablet)/i, // HP TouchPad\n /(kindle)\\/([\\w\\.]+)/i, // Kindle\n /(nook)[\\w ]+build\\/(\\w+)/i, // Nook\n /(dell) (strea[kpr\\d ]*[\\dko])/i, // Dell Streak\n /(le[- ]+pan)[- ]+(\\w{1,9}) bui/i, // Le Pan Tablets\n /(trinity)[- ]*(t\\d{3}) bui/i, // Trinity Tablets\n /(gigaset)[- ]+(q\\w{1,9}) bui/i, // Gigaset Tablets\n /(vodafone) ([\\w ]+)(?:\\)| bui)/i // Vodafone\n ], [VENDOR, MODEL, [TYPE, TABLET]], [\n\n /(surface duo)/i // Surface Duo\n ], [MODEL, [VENDOR, MICROSOFT], [TYPE, TABLET]], [\n /droid [\\d\\.]+; (fp\\du?)(?: b|\\))/i // Fairphone\n ], [MODEL, [VENDOR, 'Fairphone'], [TYPE, MOBILE]], [\n /(u304aa)/i // AT&T\n ], [MODEL, [VENDOR, 'AT&T'], [TYPE, MOBILE]], [\n /\\bsie-(\\w*)/i // Siemens\n ], [MODEL, [VENDOR, 'Siemens'], [TYPE, MOBILE]], [\n /\\b(rct\\w+) b/i // RCA Tablets\n ], [MODEL, [VENDOR, 'RCA'], [TYPE, TABLET]], [\n /\\b(venue[\\d ]{2,7}) b/i // Dell Venue Tablets\n ], [MODEL, [VENDOR, 'Dell'], [TYPE, TABLET]], [\n /\\b(q(?:mv|ta)\\w+) b/i // Verizon Tablet\n ], [MODEL, [VENDOR, 'Verizon'], [TYPE, TABLET]], [\n /\\b(?:barnes[& ]+noble |bn[rt])([\\w\\+ ]*) b/i // Barnes & Noble Tablet\n ], [MODEL, [VENDOR, 'Barnes & Noble'], [TYPE, TABLET]], [\n /\\b(tm\\d{3}\\w+) b/i\n ], [MODEL, [VENDOR, 'NuVision'], [TYPE, TABLET]], [\n /\\b(k88) b/i // ZTE K Series Tablet\n ], [MODEL, [VENDOR, 'ZTE'], [TYPE, TABLET]], [\n /\\b(nx\\d{3}j) b/i // ZTE Nubia\n ], [MODEL, [VENDOR, 'ZTE'], [TYPE, MOBILE]], [\n /\\b(gen\\d{3}) b.+49h/i // Swiss GEN Mobile\n ], [MODEL, [VENDOR, 'Swiss'], [TYPE, MOBILE]], [\n /\\b(zur\\d{3}) b/i // Swiss ZUR Tablet\n ], [MODEL, [VENDOR, 'Swiss'], [TYPE, TABLET]], [\n /\\b((zeki)?tb.*\\b) b/i // Zeki Tablets\n ], [MODEL, [VENDOR, 'Zeki'], [TYPE, TABLET]], [\n /\\b([yr]\\d{2}) b/i,\n /\\b(dragon[- ]+touch |dt)(\\w{5}) b/i // Dragon Touch Tablet\n ], [[VENDOR, 'Dragon Touch'], MODEL, [TYPE, TABLET]], [\n /\\b(ns-?\\w{0,9}) b/i // Insignia Tablets\n ], [MODEL, [VENDOR, 'Insignia'], [TYPE, TABLET]], [\n /\\b((nxa|next)-?\\w{0,9}) b/i // NextBook Tablets\n ], [MODEL, [VENDOR, 'NextBook'], [TYPE, TABLET]], [\n /\\b(xtreme\\_)?(v(1[045]|2[015]|[3469]0|7[05])) b/i // Voice Xtreme Phones\n ], [[VENDOR, 'Voice'], MODEL, [TYPE, MOBILE]], [\n /\\b(lvtel\\-)?(v1[12]) b/i // LvTel Phones\n ], [[VENDOR, 'LvTel'], MODEL, [TYPE, MOBILE]], [\n /\\b(ph-1) /i // Essential PH-1\n ], [MODEL, [VENDOR, 'Essential'], [TYPE, MOBILE]], [\n /\\b(v(100md|700na|7011|917g).*\\b) b/i // Envizen Tablets\n ], [MODEL, [VENDOR, 'Envizen'], [TYPE, TABLET]], [\n /\\b(trio[-\\w\\. ]+) b/i // MachSpeed Tablets\n ], [MODEL, [VENDOR, 'MachSpeed'], [TYPE, TABLET]], [\n /\\btu_(1491) b/i // Rotor Tablets\n ], [MODEL, [VENDOR, 'Rotor'], [TYPE, TABLET]], [\n /(shield[\\w ]+) b/i // Nvidia Shield Tablets\n ], [MODEL, [VENDOR, 'Nvidia'], [TYPE, TABLET]], [\n /(sprint) (\\w+)/i // Sprint Phones\n ], [VENDOR, MODEL, [TYPE, MOBILE]], [\n /(kin\\.[onetw]{3})/i // Microsoft Kin\n ], [[MODEL, /\\./g, ' '], [VENDOR, MICROSOFT], [TYPE, MOBILE]], [\n /droid.+; (cc6666?|et5[16]|mc[239][23]x?|vc8[03]x?)\\)/i // Zebra\n ], [MODEL, [VENDOR, ZEBRA], [TYPE, TABLET]], [\n /droid.+; (ec30|ps20|tc[2-8]\\d[kx])\\)/i\n ], [MODEL, [VENDOR, ZEBRA], [TYPE, MOBILE]], [\n\n ///////////////////\n // SMARTTVS\n ///////////////////\n\n /smart-tv.+(samsung)/i // Samsung\n ], [VENDOR, [TYPE, SMARTTV]], [\n /hbbtv.+maple;(\\d+)/i\n ], [[MODEL, /^/, 'SmartTV'], [VENDOR, SAMSUNG], [TYPE, SMARTTV]], [\n /(nux; netcast.+smarttv|lg (netcast\\.tv-201\\d|android tv))/i // LG SmartTV\n ], [[VENDOR, LG], [TYPE, SMARTTV]], [\n /(apple) ?tv/i // Apple TV\n ], [VENDOR, [MODEL, APPLE+' TV'], [TYPE, SMARTTV]], [\n /crkey/i // Google Chromecast\n ], [[MODEL, CHROME+'cast'], [VENDOR, GOOGLE], [TYPE, SMARTTV]], [\n /droid.+aft(\\w+)( bui|\\))/i // Fire TV\n ], [MODEL, [VENDOR, AMAZON], [TYPE, SMARTTV]], [\n /\\(dtv[\\);].+(aquos)/i,\n /(aquos-tv[\\w ]+)\\)/i // Sharp\n ], [MODEL, [VENDOR, SHARP], [TYPE, SMARTTV]],[\n /(bravia[\\w ]+)( bui|\\))/i // Sony\n ], [MODEL, [VENDOR, SONY], [TYPE, SMARTTV]], [\n /(mitv-\\w{5}) bui/i // Xiaomi\n ], [MODEL, [VENDOR, XIAOMI], [TYPE, SMARTTV]], [\n /Hbbtv.*(technisat) (.*);/i // TechniSAT\n ], [VENDOR, MODEL, [TYPE, SMARTTV]], [\n /\\b(roku)[\\dx]*[\\)\\/]((?:dvp-)?[\\d\\.]*)/i, // Roku\n /hbbtv\\/\\d+\\.\\d+\\.\\d+ +\\([\\w\\+ ]*; *([\\w\\d][^;]*);([^;]*)/i // HbbTV devices\n ], [[VENDOR, trim], [MODEL, trim], [TYPE, SMARTTV]], [\n /\\b(android tv|smart[- ]?tv|opera tv|tv; rv:)\\b/i // SmartTV from Unidentified Vendors\n ], [[TYPE, SMARTTV]], [\n\n ///////////////////\n // CONSOLES\n ///////////////////\n\n /(ouya)/i, // Ouya\n /(nintendo) ([wids3utch]+)/i // Nintendo\n ], [VENDOR, MODEL, [TYPE, CONSOLE]], [\n /droid.+; (shield) bui/i // Nvidia\n ], [MODEL, [VENDOR, 'Nvidia'], [TYPE, CONSOLE]], [\n /(playstation [345portablevi]+)/i // Playstation\n ], [MODEL, [VENDOR, SONY], [TYPE, CONSOLE]], [\n /\\b(xbox(?: one)?(?!; xbox))[\\); ]/i // Microsoft Xbox\n ], [MODEL, [VENDOR, MICROSOFT], [TYPE, CONSOLE]], [\n\n ///////////////////\n // WEARABLES\n ///////////////////\n\n /\\b(sm-[lr]\\d\\d[05][fnuw]?s?)\\b/i // Samsung Galaxy Watch\n ], [MODEL, [VENDOR, SAMSUNG], [TYPE, WEARABLE]], [\n /((pebble))app/i // Pebble\n ], [VENDOR, MODEL, [TYPE, WEARABLE]], [\n /(watch)(?: ?os[,\\/]|\\d,\\d\\/)[\\d\\.]+/i // Apple Watch\n ], [MODEL, [VENDOR, APPLE], [TYPE, WEARABLE]], [\n /droid.+; (glass) \\d/i // Google Glass\n ], [MODEL, [VENDOR, GOOGLE], [TYPE, WEARABLE]], [\n /droid.+; (wt63?0{2,3})\\)/i\n ], [MODEL, [VENDOR, ZEBRA], [TYPE, WEARABLE]], [\n\n ///////////////////\n // XR\n ///////////////////\n\n /droid.+; (glass) \\d/i // Google Glass\n ], [MODEL, [VENDOR, GOOGLE], [TYPE, WEARABLE]], [\n /(pico) (4|neo3(?: link|pro)?)/i // Pico\n ], [VENDOR, MODEL, [TYPE, WEARABLE]], [\n /; (quest( \\d| pro)?)/i // Oculus Quest\n ], [MODEL, [VENDOR, FACEBOOK], [TYPE, WEARABLE]], [\n\n ///////////////////\n // EMBEDDED\n ///////////////////\n\n /(tesla)(?: qtcarbrowser|\\/[-\\w\\.]+)/i // Tesla\n ], [VENDOR, [TYPE, EMBEDDED]], [\n /(aeobc)\\b/i // Echo Dot\n ], [MODEL, [VENDOR, AMAZON], [TYPE, EMBEDDED]], [\n\n ////////////////////\n // MIXED (GENERIC)\n ///////////////////\n\n /droid .+?; ([^;]+?)(?: bui|; wv\\)|\\) applew).+? mobile safari/i // Android Phones from Unidentified Vendors\n ], [MODEL, [TYPE, MOBILE]], [\n /droid .+?; ([^;]+?)(?: bui|\\) applew).+?(?! mobile) safari/i // Android Tablets from Unidentified Vendors\n ], [MODEL, [TYPE, TABLET]], [\n /\\b((tablet|tab)[;\\/]|focus\\/\\d(?!.+mobile))/i // Unidentifiable Tablet\n ], [[TYPE, TABLET]], [\n /(phone|mobile(?:[;\\/]| [ \\w\\/\\.]*safari)|pda(?=.+windows ce))/i // Unidentifiable Mobile\n ], [[TYPE, MOBILE]], [\n /(android[-\\w\\. ]{0,9});.+buil/i // Generic Android Device\n ], [MODEL, [VENDOR, 'Generic']]\n ],\n\n engine : [[\n\n /windows.+ edge\\/([\\w\\.]+)/i // EdgeHTML\n ], [VERSION, [NAME, EDGE+'HTML']], [\n\n /(arkweb)\\/([\\w\\.]+)/i // ArkWeb\n ], [NAME, VERSION], [\n\n /webkit\\/537\\.36.+chrome\\/(?!27)([\\w\\.]+)/i // Blink\n ], [VERSION, [NAME, 'Blink']], [\n\n /(presto)\\/([\\w\\.]+)/i, // Presto\n /(webkit|trident|netfront|netsurf|amaya|lynx|w3m|goanna|servo)\\/([\\w\\.]+)/i, // WebKit/Trident/NetFront/NetSurf/Amaya/Lynx/w3m/Goanna/Servo\n /ekioh(flow)\\/([\\w\\.]+)/i, // Flow\n /(khtml|tasman|links)[\\/ ]\\(?([\\w\\.]+)/i, // KHTML/Tasman/Links\n /(icab)[\\/ ]([23]\\.[\\d\\.]+)/i, // iCab\n /\\b(libweb)/i\n ], [NAME, VERSION], [\n\n /rv\\:([\\w\\.]{1,9})\\b.+(gecko)/i // Gecko\n ], [VERSION, NAME]\n ],\n\n os : [[\n\n // Windows\n /microsoft (windows) (vista|xp)/i // Windows (iTunes)\n ], [NAME, VERSION], [\n /(windows (?:phone(?: os)?|mobile))[\\/ ]?([\\d\\.\\w ]*)/i // Windows Phone\n ], [NAME, [VERSION, strMapper, windowsVersionMap]], [\n /windows nt 6\\.2; (arm)/i, // Windows RT\n /windows[\\/ ]?([ntce\\d\\. ]+\\w)(?!.+xbox)/i,\n /(?:win(?=3|9|n)|win 9x )([nt\\d\\.]+)/i\n ], [[VERSION, strMapper, windowsVersionMap], [NAME, 'Windows']], [\n\n // iOS/macOS\n /ip[honead]{2,4}\\b(?:.*os ([\\w]+) like mac|; opera)/i, // iOS\n /(?:ios;fbsv\\/|iphone.+ios[\\/ ])([\\d\\.]+)/i,\n /cfnetwork\\/.+darwin/i\n ], [[VERSION, /_/g, '.'], [NAME, 'iOS']], [\n /(mac os x) ?([\\w\\. ]*)/i,\n /(macintosh|mac_powerpc\\b)(?!.+haiku)/i // Mac OS\n ], [[NAME, MAC_OS], [VERSION, /_/g, '.']], [\n\n // Mobile OSes\n /droid ([\\w\\.]+)\\b.+(android[- ]x86|harmonyos)/i // Android-x86/HarmonyOS\n ], [VERSION, NAME], [ // Android/WebOS/QNX/Bada/RIM/Maemo/MeeGo/Sailfish OS/OpenHarmony\n /(android|webos|qnx|bada|rim tablet os|maemo|meego|sailfish|openharmony)[-\\/ ]?([\\w\\.]*)/i,\n /(blackberry)\\w*\\/([\\w\\.]*)/i, // Blackberry\n /(tizen|kaios)[\\/ ]([\\w\\.]+)/i, // Tizen/KaiOS\n /\\((series40);/i // Series 40\n ], [NAME, VERSION], [\n /\\(bb(10);/i // BlackBerry 10\n ], [VERSION, [NAME, BLACKBERRY]], [\n /(?:symbian ?os|symbos|s60(?=;)|series60)[-\\/ ]?([\\w\\.]*)/i // Symbian\n ], [VERSION, [NAME, 'Symbian']], [\n /mozilla\\/[\\d\\.]+ \\((?:mobile|tablet|tv|mobile; [\\w ]+); rv:.+ gecko\\/([\\w\\.]+)/i // Firefox OS\n ], [VERSION, [NAME, FIREFOX+' OS']], [\n /web0s;.+rt(tv)/i,\n /\\b(?:hp)?wos(?:browser)?\\/([\\w\\.]+)/i // WebOS\n ], [VERSION, [NAME, 'webOS']], [\n /watch(?: ?os[,\\/]|\\d,\\d\\/)([\\d\\.]+)/i // watchOS\n ], [VERSION, [NAME, 'watchOS']], [\n\n // Google Chromecast\n /crkey\\/([\\d\\.]+)/i // Google Chromecast\n ], [VERSION, [NAME, CHROME+'cast']], [\n /(cros) [\\w]+(?:\\)| ([\\w\\.]+)\\b)/i // Chromium OS\n ], [[NAME, CHROMIUM_OS], VERSION],[\n\n // Smart TVs\n /panasonic;(viera)/i, // Panasonic Viera\n /(netrange)mmh/i, // Netrange\n /(nettv)\\/(\\d+\\.[\\w\\.]+)/i, // NetTV\n\n // Console\n /(nintendo|playstation) ([wids345portablevuch]+)/i, // Nintendo/Playstation\n /(xbox); +xbox ([^\\);]+)/i, // Microsoft Xbox (360, One, X, S, Series X, Series S)\n\n // Other\n /\\b(joli|palm)\\b ?(?:os)?\\/?([\\w\\.]*)/i, // Joli/Palm\n /(mint)[\\/\\(\\) ]?(\\w*)/i, // Mint\n /(mageia|vectorlinux)[; ]/i, // Mageia/VectorLinux\n /([kxln]?ubuntu|debian|suse|opensuse|gentoo|arch(?= linux)|slackware|fedora|mandriva|centos|pclinuxos|red ?hat|zenwalk|linpus|raspbian|plan 9|minix|risc os|contiki|deepin|manjaro|elementary os|sabayon|linspire)(?: gnu\\/linux)?(?: enterprise)?(?:[- ]linux)?(?:-gnu)?[-\\/ ]?(?!chrom|package)([-\\w\\.]*)/i,\n // Ubuntu/Debian/SUSE/Gentoo/Arch/Slackware/Fedora/Mandriva/CentOS/PCLinuxOS/RedHat/Zenwalk/Linpus/Raspbian/Plan9/Minix/RISCOS/Contiki/Deepin/Manjaro/elementary/Sabayon/Linspire\n /(hurd|linux) ?([\\w\\.]*)/i, // Hurd/Linux\n /(gnu) ?([\\w\\.]*)/i, // GNU\n /\\b([-frentopcghs]{0,5}bsd|dragonfly)[\\/ ]?(?!amd|[ix346]{1,2}86)([\\w\\.]*)/i, // FreeBSD/NetBSD/OpenBSD/PC-BSD/GhostBSD/DragonFly\n /(haiku) (\\w+)/i // Haiku\n ], [NAME, VERSION], [\n /(sunos) ?([\\w\\.\\d]*)/i // Solaris\n ], [[NAME, 'Solaris'], VERSION], [\n /((?:open)?solaris)[-\\/ ]?([\\w\\.]*)/i, // Solaris\n /(aix) ((\\d)(?=\\.|\\)| )[\\w\\.])*/i, // AIX\n /\\b(beos|os\\/2|amigaos|morphos|openvms|fuchsia|hp-ux|serenityos)/i, // BeOS/OS2/AmigaOS/MorphOS/OpenVMS/Fuchsia/HP-UX/SerenityOS\n /(unix) ?([\\w\\.]*)/i // UNIX\n ], [NAME, VERSION]\n ]\n };\n\n /////////////////\n // Constructor\n ////////////////\n\n var UAParser = function (ua, extensions) {\n\n if (typeof ua === OBJ_TYPE) {\n extensions = ua;\n ua = undefined;\n }\n\n if (!(this instanceof UAParser)) {\n return new UAParser(ua, extensions).getResult();\n }\n\n var _navigator = (typeof window !== UNDEF_TYPE && window.navigator) ? window.navigator : undefined;\n var _ua = ua || ((_navigator && _navigator.userAgent) ? _navigator.userAgent : EMPTY);\n var _uach = (_navigator && _navigator.userAgentData) ? _navigator.userAgentData : undefined;\n var _rgxmap = extensions ? extend(regexes, extensions) : regexes;\n var _isSelfNav = _navigator && _navigator.userAgent == _ua;\n\n this.getBrowser = function () {\n var _browser = {};\n _browser[NAME] = undefined;\n _browser[VERSION] = undefined;\n rgxMapper.call(_browser, _ua, _rgxmap.browser);\n _browser[MAJOR] = majorize(_browser[VERSION]);\n // Brave-specific detection\n if (_isSelfNav && _navigator && _navigator.brave && typeof _navigator.brave.isBrave == FUNC_TYPE) {\n _browser[NAME] = 'Brave';\n }\n return _browser;\n };\n this.getCPU = function () {\n var _cpu = {};\n _cpu[ARCHITECTURE] = undefined;\n rgxMapper.call(_cpu, _ua, _rgxmap.cpu);\n return _cpu;\n };\n this.getDevice = function () {\n var _device = {};\n _device[VENDOR] = undefined;\n _device[MODEL] = undefined;\n _device[TYPE] = undefined;\n rgxMapper.call(_device, _ua, _rgxmap.device);\n if (_isSelfNav && !_device[TYPE] && _uach && _uach.mobile) {\n _device[TYPE] = MOBILE;\n }\n // iPadOS-specific detection: identified as Mac, but has some iOS-only properties\n if (_isSelfNav && _device[MODEL] == 'Macintosh' && _navigator && typeof _navigator.standalone !== UNDEF_TYPE && _navigator.maxTouchPoints && _navigator.maxTouchPoints > 2) {\n _device[MODEL] = 'iPad';\n _device[TYPE] = TABLET;\n }\n return _device;\n };\n this.getEngine = function () {\n var _engine = {};\n _engine[NAME] = undefined;\n _engine[VERSION] = undefined;\n rgxMapper.call(_engine, _ua, _rgxmap.engine);\n return _engine;\n };\n this.getOS = function () {\n var _os = {};\n _os[NAME] = undefined;\n _os[VERSION] = undefined;\n rgxMapper.call(_os, _ua, _rgxmap.os);\n if (_isSelfNav && !_os[NAME] && _uach && _uach.platform && _uach.platform != 'Unknown') {\n _os[NAME] = _uach.platform \n .replace(/chrome os/i, CHROMIUM_OS)\n .replace(/macos/i, MAC_OS); // backward compatibility\n }\n return _os;\n };\n this.getResult = function () {\n return {\n ua : this.getUA(),\n browser : this.getBrowser(),\n engine : this.getEngine(),\n os : this.getOS(),\n device : this.getDevice(),\n cpu : this.getCPU()\n };\n };\n this.getUA = function () {\n return _ua;\n };\n this.setUA = function (ua) {\n _ua = (typeof ua === STR_TYPE && ua.length > UA_MAX_LENGTH) ? trim(ua, UA_MAX_LENGTH) : ua;\n return this;\n };\n this.setUA(_ua);\n return this;\n };\n\n UAParser.VERSION = LIBVERSION;\n UAParser.BROWSER = enumerize([NAME, VERSION, MAJOR]);\n UAParser.CPU = enumerize([ARCHITECTURE]);\n UAParser.DEVICE = enumerize([MODEL, VENDOR, TYPE, CONSOLE, MOBILE, SMARTTV, TABLET, WEARABLE, EMBEDDED]);\n UAParser.ENGINE = UAParser.OS = enumerize([NAME, VERSION]);\n\n ///////////\n // Export\n //////////\n\n // check js environment\n if (typeof(exports) !== UNDEF_TYPE) {\n // nodejs env\n if (typeof module !== UNDEF_TYPE && module.exports) {\n exports = module.exports = UAParser;\n }\n exports.UAParser = UAParser;\n } else {\n // requirejs env (optional)\n if (typeof(define) === FUNC_TYPE && define.amd) {\n define(function () {\n return UAParser;\n });\n } else if (typeof window !== UNDEF_TYPE) {\n // browser env\n window.UAParser = UAParser;\n }\n }\n\n // jQuery/Zepto specific (optional)\n // Note:\n // In AMD env the global scope should be kept clean, but jQuery is an exception.\n // jQuery always exports to global scope, unless jQuery.noConflict(true) is used,\n // and we should catch that.\n var $ = typeof window !== UNDEF_TYPE && (window.jQuery || window.Zepto);\n if ($ && !$.ua) {\n var parser = new UAParser();\n $.ua = parser.getResult();\n $.ua.get = function () {\n return parser.getUA();\n };\n $.ua.set = function (ua) {\n parser.setUA(ua);\n var result = parser.getResult();\n for (var prop in result) {\n $.ua[prop] = result[prop];\n }\n };\n }\n\n})(typeof window === 'object' ? window : this);\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport Logger from '../logger/Logger';\nimport { SdkMetric, SdkStreamDimension } from '../signalingprotocol/SignalingProtocol.js';\nimport VideoStreamIndex from '../videostreamindex/VideoStreamIndex';\nimport Direction from './ClientMetricReportDirection';\nimport MediaType from './ClientMetricReportMediaType';\nimport GlobalMetricReport from './GlobalMetricReport';\nimport StreamMetricReport from './StreamMetricReport';\n\n// eslint-disable-next-line\nexport type CustomStatsReport = any;\n\n/**\n * [[ClientMetricReport]] gets the media metrics used by ConnectionMonitor to\n * update connection health data.\n */\nexport default class ClientMetricReport {\n globalMetricReport: GlobalMetricReport = new GlobalMetricReport();\n streamMetricReports: { [id: number]: StreamMetricReport } = {};\n // Will contain the raw RTCStatsReport from RTCPeerConnection.getStats() API.\n rtcStatsReport: RTCStatsReport = {} as RTCStatsReport;\n // Will contain any custom metric reports generated by the SDK.\n customStatsReports: CustomStatsReport[] = [];\n currentTimestampMs: number = 0;\n previousTimestampMs: number = 0;\n currentSsrcs: { [id: number]: number } = {};\n\n private overriddenObservableMetrics: Map = new Map();\n\n constructor(\n private logger: Logger,\n private videoStreamIndex?: VideoStreamIndex,\n private selfAttendeeId?: string\n ) {}\n\n /**\n * Metric transform functions\n */\n\n identityValue = (metricName?: string, ssrc?: number): number => {\n const metricReport = ssrc ? this.streamMetricReports[ssrc] : this.globalMetricReport;\n return Number(metricReport.currentMetrics[metricName]);\n };\n\n decoderLossPercent = (metricName?: string, ssrc?: number): number => {\n const metricReport = this.streamMetricReports[ssrc];\n const concealedSamples =\n metricReport.currentMetrics['concealedSamples'] -\n (metricReport.previousMetrics['concealedSamples'] || 0);\n const totalSamplesReceived =\n metricReport.currentMetrics['totalSamplesReceived'] -\n (metricReport.previousMetrics['totalSamplesReceived'] || 0);\n if (totalSamplesReceived <= 0) {\n return 0;\n }\n const decoderAbnormal = totalSamplesReceived - concealedSamples;\n if (decoderAbnormal <= 0) {\n return 0;\n }\n return (concealedSamples / totalSamplesReceived) * 100;\n };\n\n packetLossPercent = (sourceMetricName?: string, ssrc?: number): number => {\n const metricReport = this.streamMetricReports[ssrc];\n const sentOrReceived =\n metricReport.currentMetrics[sourceMetricName] -\n (metricReport.previousMetrics[sourceMetricName] || 0);\n const lost =\n metricReport.currentMetrics['packetsLost'] -\n (metricReport.previousMetrics['packetsLost'] || 0);\n const total = sentOrReceived + lost;\n if (total <= 0 || lost <= 0) {\n return 0;\n }\n return (lost * 100) / total;\n };\n\n jitterBufferMs = (metricName?: string, ssrc?: number): number => {\n const metricReport = this.streamMetricReports[ssrc];\n const jitterBufferDelay =\n metricReport.currentMetrics['jitterBufferDelay'] -\n (metricReport.previousMetrics['jitterBufferDelay'] || 0);\n const jitterBufferEmittedCount =\n metricReport.currentMetrics['jitterBufferEmittedCount'] -\n (metricReport.previousMetrics['jitterBufferEmittedCount'] || 0);\n if (jitterBufferDelay <= 0) {\n return 0;\n }\n if (jitterBufferEmittedCount <= 0) {\n return 0;\n }\n return (jitterBufferDelay / jitterBufferEmittedCount) * 1000;\n };\n\n countPerSecond = (metricName?: string, ssrc?: number): number => {\n const metricReport = ssrc ? this.streamMetricReports[ssrc] : this.globalMetricReport;\n let intervalSeconds = (this.currentTimestampMs - this.previousTimestampMs) / 1000;\n if (intervalSeconds <= 0) {\n return 0;\n }\n if (this.previousTimestampMs <= 0) {\n intervalSeconds = 1;\n }\n const diff =\n metricReport.currentMetrics[metricName] - (metricReport.previousMetrics[metricName] || 0);\n if (diff <= 0) {\n return 0;\n }\n return Math.trunc(diff / intervalSeconds);\n };\n\n bitsPerSecond = (metricName?: string, ssrc?: number): number => {\n const metricReport = ssrc ? this.streamMetricReports[ssrc] : this.globalMetricReport;\n let intervalSeconds = (this.currentTimestampMs - this.previousTimestampMs) / 1000;\n if (intervalSeconds <= 0) {\n return 0;\n }\n if (this.previousTimestampMs <= 0) {\n intervalSeconds = 1;\n }\n const diff =\n (metricReport.currentMetrics[metricName] - (metricReport.previousMetrics[metricName] || 0)) *\n 8;\n if (diff <= 0) {\n return 0;\n }\n return Math.trunc(diff / intervalSeconds);\n };\n\n secondsToMilliseconds = (metricName?: string, ssrc?: number): number => {\n const metricReport = ssrc ? this.streamMetricReports[ssrc] : this.globalMetricReport;\n return Number(metricReport.currentMetrics[metricName] * 1000);\n };\n\n averageTimeSpentPerSecondInMilliseconds = (metricName?: string, ssrc?: number): number => {\n const metricReport = ssrc ? this.streamMetricReports[ssrc] : this.globalMetricReport;\n let intervalSeconds = (this.currentTimestampMs - this.previousTimestampMs) / 1000;\n if (intervalSeconds <= 0) {\n return 0;\n }\n if (this.previousTimestampMs <= 0) {\n intervalSeconds = 1;\n }\n const diff =\n metricReport.currentMetrics[metricName] - (metricReport.previousMetrics[metricName] || 0);\n if (diff <= 0) {\n return 0;\n }\n return (diff * 1000) / intervalSeconds;\n };\n\n averageCpuQualityLimitationDurationPerSecondInMilliseconds = (\n metricName?: string,\n ssrc?: number\n ): number => {\n const metricReport = this.streamMetricReports[ssrc];\n if (\n metricReport.previousObjectMetrics[metricName] === undefined ||\n metricReport.currentObjectMetrics[metricName] === undefined\n ) {\n return NaN;\n }\n let intervalSeconds = (this.currentTimestampMs - this.previousTimestampMs) / 1000;\n if (intervalSeconds <= 0) {\n return 0;\n }\n if (this.previousTimestampMs <= 0) {\n intervalSeconds = 1;\n }\n\n let previousValue = 0;\n let currentValue = 0;\n for (const [key, value] of Object.entries(metricReport.previousObjectMetrics[metricName])) {\n if (key === 'cpu') {\n previousValue = value;\n }\n }\n for (const [key, value] of Object.entries(metricReport.currentObjectMetrics[metricName])) {\n if (key === 'cpu') {\n currentValue = value;\n }\n }\n\n const diff = currentValue - previousValue;\n if (diff <= 0) {\n return 0;\n }\n return (diff * 1000) / intervalSeconds;\n };\n\n isHardwareImplementation = (metricName?: string, ssrc?: number): number => {\n const metricReport = this.streamMetricReports[ssrc];\n if (metricReport.currentStringMetrics[metricName] === undefined) {\n return NaN;\n }\n const implName = String(metricReport.currentStringMetrics[metricName]);\n const hasHwName =\n implName.includes('ExternalDecoder') ||\n implName.includes('ExternalEncoder') ||\n implName.includes('EncodeAccelerator') ||\n implName.includes('DecodeAccelerator');\n const isFallback = implName.includes('fallback from');\n return hasHwName && !isFallback ? 1 : 0;\n };\n\n /**\n * Canonical and derived metric maps\n */\n\n readonly globalMetricMap: {\n [id: string]: {\n transform?: (metricName?: string, ssrc?: number) => number;\n type?: SdkMetric.Type;\n source?: string;\n };\n } = {\n retransmittedBytesSent: {\n transform: this.identityValue,\n type: SdkMetric.Type.VIDEO_RETRANSMIT_BITRATE,\n },\n totalEncodedBytesTarget: {\n transform: this.identityValue,\n type: SdkMetric.Type.VIDEO_TARGET_ENCODER_BITRATE,\n },\n totalPacketSendDelay: {\n transform: this.identityValue,\n type: SdkMetric.Type.VIDEO_BUCKET_DELAY_MS,\n },\n packetsDiscardedOnSend: {\n transform: this.countPerSecond,\n type: SdkMetric.Type.SOCKET_DISCARDED_PPS,\n },\n\n availableIncomingBitrate: {\n transform: this.identityValue,\n type: SdkMetric.Type.VIDEO_AVAILABLE_RECEIVE_BANDWIDTH,\n },\n availableOutgoingBitrate: {\n transform: this.identityValue,\n type: SdkMetric.Type.VIDEO_AVAILABLE_SEND_BANDWIDTH,\n },\n currentRoundTripTime: {\n transform: this.secondsToMilliseconds,\n type: SdkMetric.Type.STUN_RTT_MS,\n },\n // Upstream AudioLevel is collected through RTCAudioSourceStats\n // (https://developer.mozilla.org/en-US/docs/Web/API/RTCAudioSourceStats)\n // That one doesn't have ssrc field so we must collect it through Global Metric Report\n audioLevel: {\n transform: this.identityValue,\n type: SdkMetric.Type.RTC_MIC_AUDIO_LEVEL,\n source: 'audioLevel',\n },\n };\n\n readonly audioUpstreamMetricMap: {\n [id: string]: {\n transform?: (metricName?: string, ssrc?: number) => number;\n type?: SdkMetric.Type;\n source?: string;\n };\n } = {\n jitter: { transform: this.secondsToMilliseconds, type: SdkMetric.Type.RTC_MIC_JITTER_MS },\n packetsSent: { transform: this.countPerSecond, type: SdkMetric.Type.RTC_MIC_PPS },\n bytesSent: { transform: this.bitsPerSecond, type: SdkMetric.Type.RTC_MIC_BITRATE },\n roundTripTime: { transform: this.secondsToMilliseconds, type: SdkMetric.Type.RTC_MIC_RTT_MS },\n packetsLost: {\n transform: this.packetLossPercent,\n type: SdkMetric.Type.RTC_MIC_FRACTION_PACKET_LOST_PERCENT,\n source: 'packetsSent',\n },\n };\n\n readonly audioDownstreamMetricMap: {\n [id: string]: {\n transform?: (metricName?: string, ssrc?: number) => number;\n type?: SdkMetric.Type;\n source?: string;\n };\n } = {\n concealedSamples: {\n transform: this.countPerSecond,\n },\n totalSamplesReceived: {\n transform: this.countPerSecond,\n },\n decoderLoss: {\n transform: this.decoderLossPercent,\n type: SdkMetric.Type.RTC_SPK_FRACTION_DECODER_LOSS_PERCENT,\n },\n packetsReceived: { transform: this.countPerSecond, type: SdkMetric.Type.RTC_SPK_PPS },\n packetsLost: {\n transform: this.packetLossPercent,\n type: SdkMetric.Type.RTC_SPK_FRACTION_PACKET_LOST_PERCENT,\n source: 'packetsReceived',\n },\n jitter: { transform: this.secondsToMilliseconds, type: SdkMetric.Type.RTC_SPK_JITTER_MS },\n jitterBufferDelay: {\n transform: this.countPerSecond,\n },\n jitterBufferEmittedCount: {\n transform: this.countPerSecond,\n },\n jitterBufferMs: {\n transform: this.jitterBufferMs,\n type: SdkMetric.Type.RTC_SPK_JITTER_BUFFER_MS,\n },\n bytesReceived: { transform: this.bitsPerSecond, type: SdkMetric.Type.RTC_SPK_BITRATE },\n audioLevel: { transform: this.identityValue, type: SdkMetric.Type.RTC_SPK_AUDIO_LEVEL },\n totalAudioPacketsLost: {\n transform: this.identityValue,\n type: SdkMetric.Type.RTC_SPK_TOTAL_LOST,\n },\n totalAudioPacketsExpected: {\n transform: this.identityValue,\n type: SdkMetric.Type.RTC_SPK_TOTAL_EXPECTED,\n },\n totalAudioPacketsRecoveredRed: {\n transform: this.identityValue,\n type: SdkMetric.Type.RTC_SPK_TOTAL_RECOVERED_RED,\n },\n totalAudioPacketsRecoveredFec: {\n transform: this.identityValue,\n type: SdkMetric.Type.RTC_SPK_TOTAL_RECOVERED_FEC,\n },\n };\n\n readonly videoUpstreamMetricMap: {\n [id: string]: {\n transform?: (metricName?: string, ssrc?: number) => number;\n type?: SdkMetric.Type;\n source?: string;\n };\n } = {\n roundTripTime: {\n transform: this.secondsToMilliseconds,\n type: SdkMetric.Type.VIDEO_SENT_RTT_MS,\n },\n nackCount: { transform: this.countPerSecond, type: SdkMetric.Type.VIDEO_NACKS_RECEIVED },\n pliCount: { transform: this.countPerSecond, type: SdkMetric.Type.VIDEO_PLIS_RECEIVED },\n firCount: { transform: this.countPerSecond, type: SdkMetric.Type.VIDEO_FIRS_RECEIVED },\n framesPerSecond: { transform: this.identityValue, type: SdkMetric.Type.VIDEO_INPUT_FPS },\n framesEncoded: { transform: this.countPerSecond, type: SdkMetric.Type.VIDEO_ENCODE_FPS },\n packetsSent: { transform: this.countPerSecond, type: SdkMetric.Type.VIDEO_SENT_PPS },\n packetsLost: {\n transform: this.packetLossPercent,\n type: SdkMetric.Type.VIDEO_SENT_FRACTION_PACKET_LOST_PERCENT,\n source: 'packetsSent',\n },\n bytesSent: { transform: this.bitsPerSecond, type: SdkMetric.Type.VIDEO_SENT_BITRATE },\n qpSum: { transform: this.countPerSecond, type: SdkMetric.Type.VIDEO_SENT_QP_SUM },\n frameHeight: { transform: this.identityValue, type: SdkMetric.Type.VIDEO_ENCODE_HEIGHT },\n frameWidth: { transform: this.identityValue, type: SdkMetric.Type.VIDEO_ENCODE_WIDTH },\n jitter: {\n transform: this.secondsToMilliseconds,\n type: SdkMetric.Type.VIDEO_SENT_JITTER_MS,\n },\n totalEncodeTime: {\n transform: this.averageTimeSpentPerSecondInMilliseconds,\n type: SdkMetric.Type.VIDEO_ENCODE_MS,\n },\n encoderImplementation: {\n transform: this.isHardwareImplementation,\n type: SdkMetric.Type.VIDEO_ENCODER_IS_HARDWARE,\n },\n qualityLimitationDurations: {\n transform: this.averageCpuQualityLimitationDurationPerSecondInMilliseconds,\n type: SdkMetric.Type.VIDEO_QUALITY_LIMITATION_DURATION_CPU,\n },\n videoCodecDegradationHighEncodeCpu: {\n transform: this.identityValue,\n type: SdkMetric.Type.VIDEO_CODEC_DEGRADATION_HIGH_ENCODE_CPU,\n },\n videoCodecDegradationEncodeFailure: {\n transform: this.identityValue,\n type: SdkMetric.Type.VIDEO_CODEC_DEGRADATION_ENCODE_FAILURE,\n },\n videoInputWidth: {\n transform: this.identityValue,\n type: SdkMetric.Type.VIDEO_INPUT_WIDTH,\n },\n videoInputHeight: {\n transform: this.identityValue,\n type: SdkMetric.Type.VIDEO_INPUT_HEIGHT,\n },\n };\n\n readonly videoDownstreamMetricMap: {\n [id: string]: {\n transform?: (metricName?: string, ssrc?: number) => number;\n type?: SdkMetric.Type;\n source?: string;\n };\n } = {\n packetsReceived: { transform: this.countPerSecond, type: SdkMetric.Type.VIDEO_RECEIVED_PPS },\n packetsLost: {\n transform: this.packetLossPercent,\n type: SdkMetric.Type.VIDEO_RECEIVED_FRACTION_PACKET_LOST_PERCENT,\n source: 'packetsReceived',\n },\n framesReceived: {\n transform: this.identityValue,\n type: SdkMetric.Type.VIDEO_RECEIVED_FPS,\n },\n framesDecoded: { transform: this.countPerSecond, type: SdkMetric.Type.VIDEO_DECODE_FPS },\n nackCount: { transform: this.countPerSecond, type: SdkMetric.Type.VIDEO_NACKS_SENT },\n firCount: { transform: this.countPerSecond, type: SdkMetric.Type.VIDEO_FIRS_SENT },\n pliCount: { transform: this.countPerSecond, type: SdkMetric.Type.VIDEO_PLIS_SENT },\n bytesReceived: { transform: this.bitsPerSecond, type: SdkMetric.Type.VIDEO_RECEIVED_BITRATE },\n jitter: {\n transform: this.secondsToMilliseconds,\n type: SdkMetric.Type.VIDEO_RECEIVED_JITTER_MS,\n },\n jitterBufferDelay: {\n transform: this.countPerSecond,\n },\n jitterBufferEmittedCount: {\n transform: this.countPerSecond,\n },\n jitterBufferMs: {\n transform: this.jitterBufferMs,\n type: SdkMetric.Type.VIDEO_JITTER_BUFFER_MS,\n },\n qpSum: {\n transform: this.countPerSecond,\n type: SdkMetric.Type.VIDEO_RECEIVED_QP_SUM,\n },\n frameHeight: { transform: this.identityValue, type: SdkMetric.Type.VIDEO_DECODE_HEIGHT },\n frameWidth: { transform: this.identityValue, type: SdkMetric.Type.VIDEO_DECODE_WIDTH },\n totalDecodeTime: {\n transform: this.averageTimeSpentPerSecondInMilliseconds,\n type: SdkMetric.Type.VIDEO_DECODE_MS,\n },\n decoderImplementation: {\n transform: this.isHardwareImplementation,\n type: SdkMetric.Type.VIDEO_DECODER_IS_HARDWARE,\n },\n totalFreezesDuration: {\n transform: this.averageTimeSpentPerSecondInMilliseconds,\n type: SdkMetric.Type.VIDEO_FREEZE_DURATION,\n },\n freezeCount: {\n transform: this.countPerSecond,\n type: SdkMetric.Type.VIDEO_FREEZE_COUNT,\n },\n totalPausesDuration: {\n transform: this.averageTimeSpentPerSecondInMilliseconds,\n type: SdkMetric.Type.VIDEO_PAUSE_DURATION,\n },\n pauseCount: {\n transform: this.countPerSecond,\n type: SdkMetric.Type.VIDEO_PAUSE_COUNT,\n },\n framesDropped: {\n transform: this.countPerSecond,\n type: SdkMetric.Type.VIDEO_DROPPED_FPS,\n },\n videoRenderWidth: {\n transform: this.identityValue,\n type: SdkMetric.Type.VIDEO_RENDER_WIDTH,\n },\n videoRenderHeight: {\n transform: this.identityValue,\n type: SdkMetric.Type.VIDEO_RENDER_HEIGHT,\n },\n };\n\n getMetricMap(\n mediaType?: MediaType,\n direction?: Direction\n ): {\n [id: string]: {\n transform?: (metricName?: string, ssrc?: number) => number;\n type?: SdkMetric.Type;\n source?: string;\n };\n } {\n switch (mediaType) {\n case MediaType.AUDIO:\n switch (direction) {\n case Direction.UPSTREAM:\n return this.audioUpstreamMetricMap;\n case Direction.DOWNSTREAM:\n return this.audioDownstreamMetricMap;\n }\n case MediaType.VIDEO:\n switch (direction) {\n case Direction.UPSTREAM:\n return this.videoUpstreamMetricMap;\n case Direction.DOWNSTREAM:\n return this.videoDownstreamMetricMap;\n }\n default:\n return this.globalMetricMap;\n }\n }\n\n /**\n * Dimensions derived from metric\n */\n readonly streamDimensionMap: {\n [id: string]: SdkStreamDimension.Type;\n } = {\n encoderImplementation: SdkStreamDimension.Type.VIDEO_ENCODER_NAME,\n decoderImplementation: SdkStreamDimension.Type.VIDEO_DECODER_NAME,\n };\n\n getStreamDimensionMap(): {\n [id: string]: SdkStreamDimension.Type;\n } {\n return this.streamDimensionMap;\n }\n\n /**\n * media Stream metrics\n */\n\n readonly observableVideoMetricSpec: {\n [id: string]: {\n source: string;\n media?: MediaType;\n dir?: Direction;\n };\n } = {\n videoUpstreamBitrate: {\n source: 'bytesSent',\n media: MediaType.VIDEO,\n dir: Direction.UPSTREAM,\n },\n videoUpstreamPacketsSent: {\n source: 'packetsSent',\n media: MediaType.VIDEO,\n dir: Direction.UPSTREAM,\n },\n videoUpstreamPacketLossPercent: {\n source: 'packetsLost',\n media: MediaType.VIDEO,\n dir: Direction.UPSTREAM,\n },\n videoUpstreamFramesEncodedPerSecond: {\n source: 'framesEncoded',\n media: MediaType.VIDEO,\n dir: Direction.UPSTREAM,\n },\n videoUpstreamFramesInputPerSecond: {\n source: 'framesPerSecond',\n media: MediaType.VIDEO,\n dir: Direction.UPSTREAM,\n },\n videoUpstreamFrameHeight: {\n source: 'frameHeight',\n media: MediaType.VIDEO,\n dir: Direction.UPSTREAM,\n },\n videoUpstreamFrameWidth: {\n source: 'frameWidth',\n media: MediaType.VIDEO,\n dir: Direction.UPSTREAM,\n },\n videoUpstreamJitterMs: {\n source: 'jitter',\n media: MediaType.VIDEO,\n dir: Direction.UPSTREAM,\n },\n videoUpstreamRoundTripTimeMs: {\n source: 'roundTripTime',\n media: MediaType.VIDEO,\n dir: Direction.UPSTREAM,\n },\n videoUpstreamEncoderImplementation: {\n source: 'encoderImplementation',\n media: MediaType.VIDEO,\n dir: Direction.UPSTREAM,\n },\n videoUpstreamTotalEncodeTimePerSecond: {\n source: 'totalEncodeTime',\n media: MediaType.VIDEO,\n dir: Direction.UPSTREAM,\n },\n videoUpstreamCpuQualityLimitationDurationPerSecond: {\n source: 'qualityLimitationDurations',\n media: MediaType.VIDEO,\n dir: Direction.UPSTREAM,\n },\n videoDownstreamBitrate: {\n source: 'bytesReceived',\n media: MediaType.VIDEO,\n dir: Direction.DOWNSTREAM,\n },\n videoDownstreamPacketLossPercent: {\n source: 'packetsLost',\n media: MediaType.VIDEO,\n dir: Direction.DOWNSTREAM,\n },\n videoDownstreamPacketsReceived: {\n source: 'packetsReceived',\n media: MediaType.VIDEO,\n dir: Direction.DOWNSTREAM,\n },\n videoDownstreamFramesDecodedPerSecond: {\n source: 'framesDecoded',\n media: MediaType.VIDEO,\n dir: Direction.DOWNSTREAM,\n },\n videoDownstreamFrameHeight: {\n source: 'frameHeight',\n media: MediaType.VIDEO,\n dir: Direction.DOWNSTREAM,\n },\n videoDownstreamFrameWidth: {\n source: 'frameWidth',\n media: MediaType.VIDEO,\n dir: Direction.DOWNSTREAM,\n },\n videoDownstreamJitterMs: {\n source: 'jitter',\n media: MediaType.VIDEO,\n dir: Direction.DOWNSTREAM,\n },\n videoDownstreamDelayMs: {\n source: 'jitterBufferMs',\n media: MediaType.VIDEO,\n dir: Direction.DOWNSTREAM,\n },\n };\n\n /**\n * Observable metrics and related APIs\n */\n\n readonly observableMetricSpec: {\n [id: string]: {\n source: string;\n media?: MediaType;\n dir?: Direction;\n };\n } = {\n audioPacketsReceived: {\n source: 'packetsReceived',\n media: MediaType.AUDIO,\n dir: Direction.DOWNSTREAM,\n },\n audioPacketsReceivedFractionLoss: {\n source: 'packetsLost',\n media: MediaType.AUDIO,\n dir: Direction.DOWNSTREAM,\n },\n audioDecoderLoss: {\n source: 'decoderLoss',\n media: MediaType.AUDIO,\n dir: Direction.DOWNSTREAM,\n },\n audioPacketsSent: {\n source: 'packetsSent',\n media: MediaType.AUDIO,\n dir: Direction.UPSTREAM,\n },\n audioPacketLossPercent: {\n source: 'packetsLost',\n media: MediaType.AUDIO,\n dir: Direction.UPSTREAM,\n },\n audioUpstreamRoundTripTimeMs: {\n source: 'roundTripTime',\n media: MediaType.AUDIO,\n dir: Direction.UPSTREAM,\n },\n videoUpstreamBitrate: { source: 'bytesSent', media: MediaType.VIDEO, dir: Direction.UPSTREAM },\n videoPacketSentPerSecond: {\n source: 'packetsSent',\n media: MediaType.VIDEO,\n dir: Direction.UPSTREAM,\n },\n audioSpeakerDelayMs: {\n source: 'jitterBufferMs',\n media: MediaType.AUDIO,\n dir: Direction.DOWNSTREAM,\n },\n audioUpstreamJitterMs: {\n source: 'jitter',\n media: MediaType.AUDIO,\n dir: Direction.UPSTREAM,\n },\n audioDownstreamJitterMs: {\n source: 'jitter',\n media: MediaType.AUDIO,\n dir: Direction.DOWNSTREAM,\n },\n nackCountReceivedPerSecond: {\n source: 'nackCount',\n media: MediaType.VIDEO,\n dir: Direction.UPSTREAM,\n },\n availableOutgoingBitrate: { source: 'availableOutgoingBitrate' },\n availableIncomingBitrate: { source: 'availableIncomingBitrate' },\n currentRoundTripTimeMs: { source: 'currentRoundTripTime' },\n // Downstream AudioLevel is collected through RTCInboundRtpStreamStats\n // (https://developer.mozilla.org/en-US/docs/Web/API/RTCInboundRtpStreamStats)\n audioDownstreamLevel: {\n source: 'audioLevel',\n media: MediaType.AUDIO,\n dir: Direction.DOWNSTREAM,\n },\n // Upstream AudioLevel is collected through RTCAudioSourceStats\n // (https://developer.mozilla.org/en-US/docs/Web/API/RTCAudioSourceStats)\n // That one doesn't have ssrc field so we must collect it through Global Metric Report\n audioUpstreamLevel: {\n source: 'audioLevel',\n },\n };\n\n /**\n * Returns the value of the specific metric in observableMetricSpec.\n */\n getObservableMetricValue(metricName: string): number {\n if (this.overriddenObservableMetrics.has(metricName)) {\n return this.overriddenObservableMetrics.get(metricName);\n }\n\n const observableMetricSpec = this.observableMetricSpec[metricName];\n const metricMap = this.getMetricMap(observableMetricSpec.media, observableMetricSpec.dir);\n const metricSpec = metricMap[observableMetricSpec.source];\n const { transform, source } = metricSpec;\n if (observableMetricSpec.hasOwnProperty('media')) {\n for (const ssrc in this.streamMetricReports) {\n const streamMetricReport = this.streamMetricReports[ssrc];\n if (\n streamMetricReport.direction === observableMetricSpec.dir &&\n streamMetricReport.mediaType === observableMetricSpec.media\n ) {\n return source\n ? transform(source, Number(ssrc))\n : transform(observableMetricSpec.source, Number(ssrc));\n }\n }\n } else {\n return source ? transform(source) : transform(observableMetricSpec.source);\n }\n return 0;\n }\n\n /**\n * Returns the value of the specific metric in observableVideoMetricSpec.\n */\n getObservableVideoMetricValue(metricName: string, ssrcNum: number): number {\n const observableVideoMetricSpec = this.observableVideoMetricSpec[metricName];\n const metricMap = this.getMetricMap(\n observableVideoMetricSpec.media,\n observableVideoMetricSpec.dir\n );\n const metricSpec = metricMap[observableVideoMetricSpec.source];\n const { transform, source } = metricSpec;\n\n return source\n ? transform(source, ssrcNum)\n : transform(observableVideoMetricSpec.source, ssrcNum);\n }\n\n /**\n * Get ssrcs of upstream video streams\n * @returns ssrcs of video upstream streams\n */\n getVideoUpstreamSsrcs(): number[] {\n const ssrcs: number[] = [];\n for (const ssrc in this.streamMetricReports) {\n if (\n this.streamMetricReports[ssrc].mediaType === MediaType.VIDEO &&\n this.streamMetricReports[ssrc].direction === Direction.UPSTREAM\n ) {\n ssrcs.push(Number(ssrc));\n }\n }\n return ssrcs;\n }\n\n /**\n * Returns the value of metrics in observableMetricSpec.\n */\n getObservableMetrics(): { [id: string]: number } {\n const metric: { [id: string]: number } = {};\n for (const metricName in this.observableMetricSpec) {\n metric[metricName] = this.getObservableMetricValue(metricName);\n }\n return metric;\n }\n\n /**\n * Returns the value of metrics in observableVideoMetricSpec for each SSRC.\n */\n getObservableVideoMetrics(): { [id: string]: { [id: string]: {} } } {\n const videoStreamMetrics: { [id: string]: { [id: string]: {} } } = {};\n if (!this.videoStreamIndex || !this.selfAttendeeId) {\n this.logger.error(\n 'Need to define VideoStreamIndex and selfAttendeeId if using getObservableVideoMetrics API'\n );\n return videoStreamMetrics;\n }\n for (const ssrc in this.streamMetricReports) {\n if (this.streamMetricReports[ssrc].mediaType === MediaType.VIDEO) {\n const metric: { [id: string]: number } = {};\n for (const metricName in this.observableVideoMetricSpec) {\n if (\n this.observableVideoMetricSpec[metricName].dir ===\n this.streamMetricReports[ssrc].direction\n ) {\n const metricValue = this.getObservableVideoMetricValue(metricName, Number(ssrc));\n if (!isNaN(metricValue)) {\n metric[metricName] = metricValue;\n }\n }\n }\n const groupId = this.streamMetricReports[ssrc].groupId;\n const streamId = this.streamMetricReports[ssrc].streamId;\n let attendeeId = '';\n /* istanbul ignore else */\n if (this.videoStreamIndex.attendeeIdForGroupId !== undefined) {\n attendeeId = groupId\n ? this.videoStreamIndex.attendeeIdForGroupId(groupId)\n : this.selfAttendeeId;\n } else {\n // This usage may be inaccurate if server side network adaptation (SSNA) is enabled,\n // and a simulcast sender has dropped their originally highest stream.\n //\n // We are ok with this given the unlikeliness of someone reimplmententing the entire\n // audio video controller (no way otherwise to inject your own index impl.), implementing\n // both simulcast and SSNA, but reusing this class :) .\n attendeeId = streamId\n ? this.videoStreamIndex.attendeeIdForStreamId(streamId)\n : this.selfAttendeeId;\n }\n\n videoStreamMetrics[attendeeId] = videoStreamMetrics[attendeeId]\n ? videoStreamMetrics[attendeeId]\n : {};\n videoStreamMetrics[attendeeId][ssrc] = metric;\n }\n }\n return videoStreamMetrics;\n }\n\n /**\n * Returns the raw RTCStatsReport from RTCPeerConnection.getStats() API.\n */\n getRTCStatsReport(): RTCStatsReport {\n return this.rtcStatsReport;\n }\n\n /**\n * Clones the ClientMetricReport and returns it.\n */\n clone(): ClientMetricReport {\n const cloned = new ClientMetricReport(this.logger, this.videoStreamIndex, this.selfAttendeeId);\n cloned.globalMetricReport = this.globalMetricReport;\n cloned.streamMetricReports = this.streamMetricReports;\n cloned.rtcStatsReport = this.rtcStatsReport;\n cloned.customStatsReports = this.customStatsReports;\n cloned.currentTimestampMs = this.currentTimestampMs;\n cloned.previousTimestampMs = this.previousTimestampMs;\n cloned.overriddenObservableMetrics = this.overriddenObservableMetrics;\n return cloned;\n }\n\n /**\n * Prints out the globalMetricReport, streamMetricReports and the corresponding timestamps from the current ClientMetricReport.\n */\n print(): void {\n const clientMetricReport = {\n globalMetricReport: this.globalMetricReport,\n streamMetricReports: this.streamMetricReports,\n currentTimestampMs: this.currentTimestampMs,\n previousTimestampMs: this.previousTimestampMs,\n };\n this.logger.debug(() => {\n return `Client Metric Report: ${JSON.stringify(clientMetricReport)}`;\n });\n }\n\n /**\n * Removes the SSRCs that are no longer valid.\n */\n removeDestroyedSsrcs(): void {\n for (const ssrc in this.streamMetricReports) {\n if (!this.currentSsrcs[ssrc]) {\n delete this.streamMetricReports[ssrc];\n }\n }\n }\n\n /**\n * Overrides a specific observable metric value (e.g. with one that didn't come from the WebRTC report)\n */\n overrideObservableMetric(name: string, value: number): void {\n this.overriddenObservableMetrics.set(name, value);\n }\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport ActiveSpeakerPolicy from '../activespeakerpolicy/ActiveSpeakerPolicy';\nimport type { Destroyable } from '../destroyable/Destroyable';\nimport RealtimeController from '../realtimecontroller/RealtimeController';\nimport IntervalScheduler from '../scheduler/IntervalScheduler';\nimport ActiveSpeakerDetector from './ActiveSpeakerDetector';\n\n/**\n * Implements the DefaultActiveSpeakerDetector with the [[ActiveSpeakerPolicy]]\n */\ntype DetectorCallback = (attendeeIds: string[]) => void;\ntype DetectorHandler = (attendeeId: string, present: boolean) => void;\n\nexport default class DefaultActiveSpeakerDetector implements ActiveSpeakerDetector, Destroyable {\n private speakerScores: { [attendeeId: string]: number } = {};\n private speakerMuteState: { [attendeeId: string]: boolean } = {};\n\n private activeSpeakers: string[] | undefined;\n\n private detectorCallbackToHandler: Map = new Map<\n DetectorCallback,\n DetectorHandler\n >();\n private detectorCallbackToScoresTimer: Map = new Map<\n DetectorCallback,\n IntervalScheduler\n >();\n private detectorCallbackToActivityTimer: Map = new Map<\n DetectorCallback,\n IntervalScheduler\n >();\n private hasBandwidthPriority = false;\n\n private mostRecentUpdateTimestamp: { [attendeeId: string]: number } = {};\n\n constructor(\n private realtimeController: RealtimeController,\n private selfAttendeeId: string,\n private hasBandwidthPriorityCallback: (hasBandwidthPriority: boolean) => void,\n private waitIntervalMs: number = 1000,\n private updateIntervalMs: number = 200\n ) {}\n\n private needUpdate(attendeeId: string): boolean {\n if (!this.activeSpeakers) {\n return true;\n }\n return (\n (this.speakerScores[attendeeId] === 0 && this.activeSpeakers.includes(attendeeId)) ||\n (this.speakerScores[attendeeId] > 0 && !this.activeSpeakers.includes(attendeeId))\n );\n }\n\n private updateActiveSpeakers(\n policy: ActiveSpeakerPolicy,\n callback: DetectorCallback,\n attendeeId: string\n ): void {\n if (!this.needUpdate(attendeeId)) {\n return;\n }\n const sortedSpeakers: { attendeeId: string; activeScore: number }[] = [];\n\n const attendeeIds = Object.keys(this.speakerScores);\n for (let i = 0; i < attendeeIds.length; i++) {\n const attendeeId = attendeeIds[i];\n sortedSpeakers.push({ attendeeId: attendeeId, activeScore: this.speakerScores[attendeeId] });\n }\n\n const sortedAttendeeIds = sortedSpeakers\n .sort((s1, s2) => s2.activeScore - s1.activeScore)\n .filter(function (s) {\n return s.activeScore > 0;\n })\n .map(function (s) {\n return s.attendeeId;\n });\n this.activeSpeakers = sortedAttendeeIds;\n callback(sortedAttendeeIds);\n const selfIsActive =\n sortedAttendeeIds.length > 0 && sortedAttendeeIds[0] === this.selfAttendeeId;\n const hasBandwidthPriority =\n selfIsActive && policy.prioritizeVideoSendBandwidthForActiveSpeaker();\n const hasBandwidthPriorityDidChange = this.hasBandwidthPriority !== hasBandwidthPriority;\n if (hasBandwidthPriorityDidChange) {\n this.hasBandwidthPriority = hasBandwidthPriority;\n this.hasBandwidthPriorityCallback(hasBandwidthPriority);\n }\n }\n\n private updateScore(\n policy: ActiveSpeakerPolicy,\n callback: DetectorCallback,\n attendeeId: string,\n volume: number | null,\n muted: boolean | null\n ): void {\n const activeScore = policy.calculateScore(attendeeId, volume, muted);\n if (this.speakerScores[attendeeId] !== activeScore) {\n this.speakerScores[attendeeId] = activeScore;\n this.mostRecentUpdateTimestamp[attendeeId] = Date.now();\n this.updateActiveSpeakers(policy, callback, attendeeId);\n }\n }\n\n subscribe(\n policy: ActiveSpeakerPolicy,\n callback: DetectorCallback,\n scoresCallback?: (scores: { [attendeeId: string]: number }) => void,\n scoresCallbackIntervalMs?: number\n ): void {\n const handler = (attendeeId: string, present: boolean): void => {\n if (!present) {\n this.speakerScores[attendeeId] = 0;\n this.mostRecentUpdateTimestamp[attendeeId] = Date.now();\n this.updateActiveSpeakers(policy, callback, attendeeId);\n return;\n }\n this.realtimeController.realtimeSubscribeToVolumeIndicator(\n attendeeId,\n (\n attendeeId: string,\n volume: number | null,\n muted: boolean | null,\n _signalStrength: number | null\n ) => {\n this.mostRecentUpdateTimestamp[attendeeId] = Date.now();\n if (muted !== null) {\n this.speakerMuteState[attendeeId] = muted;\n }\n this.updateScore(policy, callback, attendeeId, volume, muted);\n }\n );\n };\n this.detectorCallbackToHandler.set(callback, handler);\n\n const activityTimer = new IntervalScheduler(this.updateIntervalMs);\n activityTimer.start(() => {\n for (const attendeeId in this.speakerScores) {\n if (Date.now() - this.mostRecentUpdateTimestamp[attendeeId] > this.waitIntervalMs) {\n this.updateScore(policy, callback, attendeeId, 0, this.speakerMuteState[attendeeId]);\n }\n }\n });\n this.detectorCallbackToActivityTimer.set(callback, activityTimer);\n\n if (scoresCallback && scoresCallbackIntervalMs) {\n const scoresTimer = new IntervalScheduler(scoresCallbackIntervalMs);\n scoresTimer.start(() => {\n scoresCallback(this.speakerScores);\n });\n this.detectorCallbackToScoresTimer.set(callback, scoresTimer);\n }\n this.realtimeController.realtimeSubscribeToAttendeeIdPresence(handler);\n }\n\n unsubscribe(callback: DetectorCallback): void {\n const handler = this.detectorCallbackToHandler.get(callback);\n this.detectorCallbackToHandler.delete(callback);\n if (handler) {\n this.realtimeController.realtimeUnsubscribeToAttendeeIdPresence(handler);\n }\n\n const activityTimer = this.detectorCallbackToActivityTimer.get(callback);\n if (activityTimer) {\n activityTimer.stop();\n this.detectorCallbackToActivityTimer.delete(callback);\n }\n\n const scoresTimer = this.detectorCallbackToScoresTimer.get(callback);\n if (scoresTimer) {\n scoresTimer.stop();\n this.detectorCallbackToHandler.delete(callback);\n }\n }\n\n async destroy(): Promise {\n for (const handler of this.detectorCallbackToHandler.values()) {\n this.realtimeController.realtimeUnsubscribeToAttendeeIdPresence(handler);\n }\n for (const activityTimer of this.detectorCallbackToActivityTimer.values()) {\n activityTimer.stop();\n }\n for (const scoresTimer of this.detectorCallbackToScoresTimer.values()) {\n scoresTimer.stop();\n }\n\n this.detectorCallbackToHandler.clear();\n this.detectorCallbackToActivityTimer.clear();\n this.detectorCallbackToScoresTimer.clear();\n }\n}\n","var AWS = require('../core');\nvar resolveRegionalEndpointsFlag = require('../config_regional_endpoint');\nvar ENV_REGIONAL_ENDPOINT_ENABLED = 'AWS_STS_REGIONAL_ENDPOINTS';\nvar CONFIG_REGIONAL_ENDPOINT_ENABLED = 'sts_regional_endpoints';\n\nAWS.util.update(AWS.STS.prototype, {\n /**\n * @overload credentialsFrom(data, credentials = null)\n * Creates a credentials object from STS response data containing\n * credentials information. Useful for quickly setting AWS credentials.\n *\n * @note This is a low-level utility function. If you want to load temporary\n * credentials into your process for subsequent requests to AWS resources,\n * you should use {AWS.TemporaryCredentials} instead.\n * @param data [map] data retrieved from a call to {getFederatedToken},\n * {getSessionToken}, {assumeRole}, or {assumeRoleWithWebIdentity}.\n * @param credentials [AWS.Credentials] an optional credentials object to\n * fill instead of creating a new object. Useful when modifying an\n * existing credentials object from a refresh call.\n * @return [AWS.TemporaryCredentials] the set of temporary credentials\n * loaded from a raw STS operation response.\n * @example Using credentialsFrom to load global AWS credentials\n * var sts = new AWS.STS();\n * sts.getSessionToken(function (err, data) {\n * if (err) console.log(\"Error getting credentials\");\n * else {\n * AWS.config.credentials = sts.credentialsFrom(data);\n * }\n * });\n * @see AWS.TemporaryCredentials\n */\n credentialsFrom: function credentialsFrom(data, credentials) {\n if (!data) return null;\n if (!credentials) credentials = new AWS.TemporaryCredentials();\n credentials.expired = false;\n credentials.accessKeyId = data.Credentials.AccessKeyId;\n credentials.secretAccessKey = data.Credentials.SecretAccessKey;\n credentials.sessionToken = data.Credentials.SessionToken;\n credentials.expireTime = data.Credentials.Expiration;\n return credentials;\n },\n\n assumeRoleWithWebIdentity: function assumeRoleWithWebIdentity(params, callback) {\n return this.makeUnauthenticatedRequest('assumeRoleWithWebIdentity', params, callback);\n },\n\n assumeRoleWithSAML: function assumeRoleWithSAML(params, callback) {\n return this.makeUnauthenticatedRequest('assumeRoleWithSAML', params, callback);\n },\n\n /**\n * @api private\n */\n setupRequestListeners: function setupRequestListeners(request) {\n request.addListener('validate', this.optInRegionalEndpoint, true);\n },\n\n /**\n * @api private\n */\n optInRegionalEndpoint: function optInRegionalEndpoint(req) {\n var service = req.service;\n var config = service.config;\n config.stsRegionalEndpoints = resolveRegionalEndpointsFlag(service._originalConfig, {\n env: ENV_REGIONAL_ENDPOINT_ENABLED,\n sharedConfig: CONFIG_REGIONAL_ENDPOINT_ENABLED,\n clientConfig: 'stsRegionalEndpoints'\n });\n if (\n config.stsRegionalEndpoints === 'regional' &&\n service.isGlobalEndpoint\n ) {\n //client will throw if region is not supplied; request will be signed with specified region\n if (!config.region) {\n throw AWS.util.error(new Error(),\n {code: 'ConfigError', message: 'Missing region in config'});\n }\n var insertPoint = config.endpoint.indexOf('.amazonaws.com');\n var regionalEndpoint = config.endpoint.substring(0, insertPoint) +\n '.' + config.region + config.endpoint.substring(insertPoint);\n req.httpRequest.updateEndpoint(regionalEndpoint);\n req.httpRequest.region = config.region;\n }\n }\n\n});\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar shared = require('../internals/shared');\nvar hasOwn = require('../internals/has-own-property');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar Symbol = globalThis.Symbol;\nvar WellKnownSymbolsStore = shared('wks');\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol['for'] || Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n if (!hasOwn(WellKnownSymbolsStore, name)) {\n WellKnownSymbolsStore[name] = NATIVE_SYMBOL && hasOwn(Symbol, name)\n ? Symbol[name]\n : createWellKnownSymbol('Symbol.' + name);\n } return WellKnownSymbolsStore[name];\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport AudioProfile from '../audioprofile/AudioProfile';\nimport AudioVideoController from '../audiovideocontroller/AudioVideoController';\nimport AudioVideoObserver from '../audiovideoobserver/AudioVideoObserver';\nimport ContentShareObserver from '../contentshareobserver/ContentShareObserver';\nimport Destroyable from '../destroyable/Destroyable';\nimport VideoQualitySettings from '../devicecontroller/VideoQualitySettings';\nimport MeetingSessionConfiguration from '../meetingsession/MeetingSessionConfiguration';\nimport MeetingSessionCredentials from '../meetingsession/MeetingSessionCredentials';\nimport MeetingSessionStatus from '../meetingsession/MeetingSessionStatus';\nimport DefaultModality from '../modality/DefaultModality';\nimport AsyncScheduler from '../scheduler/AsyncScheduler';\nimport VideoCodecCapability from '../sdp/VideoCodecCapability';\nimport { Maybe } from '../utils/Types';\nimport NoVideoDownlinkBandwidthPolicy from '../videodownlinkbandwidthpolicy/NoVideoDownlinkBandwidthPolicy';\nimport VideoTile from '../videotile/VideoTile';\nimport ContentShareSimulcastEncodingParameters from '../videouplinkbandwidthpolicy/ContentShareSimulcastEncodingParameters';\nimport DefaultSimulcastUplinkPolicyForContentShare from '../videouplinkbandwidthpolicy/DefaultSimulcastUplinkPolicyForContentShare';\nimport ContentShareConstants from './ContentShareConstants';\nimport ContentShareController from './ContentShareController';\nimport ContentShareMediaStreamBroker from './ContentShareMediaStreamBroker';\n\nexport default class DefaultContentShareController\n implements ContentShareController, AudioVideoObserver, Destroyable {\n static createContentShareMeetingSessionConfigure(\n configuration: MeetingSessionConfiguration\n ): MeetingSessionConfiguration {\n const contentShareConfiguration = new MeetingSessionConfiguration();\n contentShareConfiguration.meetingId = configuration.meetingId;\n contentShareConfiguration.externalMeetingId = configuration.externalMeetingId;\n contentShareConfiguration.urls = configuration.urls;\n contentShareConfiguration.disablePeriodicKeyframeRequestOnContentSender =\n configuration.disablePeriodicKeyframeRequestOnContentSender;\n contentShareConfiguration.credentials = new MeetingSessionCredentials();\n contentShareConfiguration.credentials.attendeeId =\n configuration.credentials.attendeeId + ContentShareConstants.Modality;\n contentShareConfiguration.credentials.externalUserId = configuration.credentials.externalUserId;\n contentShareConfiguration.credentials.joinToken =\n configuration.credentials.joinToken + ContentShareConstants.Modality;\n contentShareConfiguration.meetingFeatures = configuration.meetingFeatures.clone();\n contentShareConfiguration.videoDownlinkBandwidthPolicy = new NoVideoDownlinkBandwidthPolicy();\n return contentShareConfiguration;\n }\n\n private observerQueue: Set = new Set();\n private contentShareTile: VideoTile;\n destroyed = false;\n\n constructor(\n private mediaStreamBroker: ContentShareMediaStreamBroker,\n private contentAudioVideo: AudioVideoController,\n private attendeeAudioVideo: AudioVideoController\n ) {\n this.contentAudioVideo.addObserver(this);\n this.setupContentShareEvents();\n }\n\n setContentAudioProfile(audioProfile: AudioProfile): void {\n this.contentAudioVideo.setAudioProfile(audioProfile);\n }\n\n enableSimulcastForContentShare(\n enable: boolean,\n encodingParams?: ContentShareSimulcastEncodingParameters\n ): void {\n if (enable) {\n this.contentAudioVideo.configuration.enableSimulcastForUnifiedPlanChromiumBasedBrowsers = true;\n this.contentAudioVideo.configuration.videoUplinkBandwidthPolicy = new DefaultSimulcastUplinkPolicyForContentShare(\n this.contentAudioVideo.logger,\n encodingParams\n );\n } else {\n this.contentAudioVideo.configuration.enableSimulcastForUnifiedPlanChromiumBasedBrowsers = false;\n this.contentAudioVideo.configuration.videoUplinkBandwidthPolicy = undefined;\n }\n }\n\n enableSVCForContentShare(enable: boolean): void {\n if (enable) {\n this.contentAudioVideo.configuration.enableSVC = true;\n } else {\n this.contentAudioVideo.configuration.enableSVC = false;\n }\n }\n\n async startContentShare(stream: MediaStream): Promise {\n if (!stream) {\n return;\n }\n if (\n this.contentAudioVideo.configuration.meetingFeatures.contentMaxResolution ===\n VideoQualitySettings.VideoDisabled\n ) {\n this.contentAudioVideo.logger.info(\n 'Could not start content because max content resolution was set to None'\n );\n return;\n }\n this.mediaStreamBroker.mediaStream = stream;\n for (let i = 0; i < this.mediaStreamBroker.mediaStream.getTracks().length; i++) {\n this.mediaStreamBroker.mediaStream.getTracks()[i].addEventListener('ended', () => {\n this.stopContentShare();\n });\n }\n this.contentAudioVideo.start();\n }\n\n async startContentShareFromScreenCapture(\n sourceId?: string,\n frameRate?: number\n ): Promise {\n const mediaStream = await this.mediaStreamBroker.acquireScreenCaptureDisplayInputStream(\n sourceId,\n frameRate\n );\n await this.startContentShare(mediaStream);\n return mediaStream;\n }\n\n pauseContentShare(): void {\n if (this.mediaStreamBroker.toggleMediaStream(false)) {\n this.forEachContentShareObserver(observer => {\n Maybe.of(observer.contentShareDidPause).map(f => f.call(observer));\n });\n }\n }\n\n unpauseContentShare(): void {\n if (this.mediaStreamBroker.toggleMediaStream(true)) {\n this.forEachContentShareObserver(observer => {\n Maybe.of(observer.contentShareDidUnpause).map(f => f.call(observer));\n });\n }\n }\n\n setContentShareVideoCodecPreferences(preferences: VideoCodecCapability[]): void {\n this.contentAudioVideo.setVideoCodecSendPreferences(preferences);\n }\n\n async destroy(): Promise {\n // Idempotency.\n /* istanbul ignore if */\n if (!this.contentAudioVideo) {\n return;\n }\n this.destroyed = true;\n this.contentAudioVideo.removeObserver(this);\n this.stopContentShare();\n this.observerQueue.clear();\n this.contentAudioVideo = undefined;\n this.attendeeAudioVideo = undefined;\n this.mediaStreamBroker = undefined;\n }\n\n stopContentShare(): void {\n this.contentAudioVideo.stop();\n this.mediaStreamBroker.cleanup();\n }\n\n addContentShareObserver(observer: ContentShareObserver): void {\n this.observerQueue.add(observer);\n }\n\n removeContentShareObserver(observer: ContentShareObserver): void {\n this.observerQueue.delete(observer);\n }\n\n forEachContentShareObserver(observerFunc: (observer: ContentShareObserver) => void): void {\n for (const observer of this.observerQueue) {\n AsyncScheduler.nextTick(() => {\n if (this.observerQueue.has(observer)) {\n observerFunc(observer);\n }\n });\n }\n }\n\n audioVideoDidStart(): void {\n if (this.mediaStreamBroker.mediaStream?.getVideoTracks().length > 0) {\n this.contentAudioVideo.videoTileController.startLocalVideoTile();\n }\n }\n\n audioVideoDidStop(_sessionStatus: MeetingSessionStatus): void {\n // If the content attendee got dropped or could not connect, stopContentShare will not be called\n // so make sure to clean up the media stream.\n this.mediaStreamBroker.cleanup();\n if (this.contentShareTile) {\n this.attendeeAudioVideo.videoTileController.removeVideoTile(this.contentShareTile.id());\n this.contentShareTile = null;\n }\n this.forEachContentShareObserver(observer => {\n Maybe.of(observer.contentShareDidStop).map(f => f.call(observer));\n });\n }\n\n private setupContentShareEvents(): void {\n // We use realtimeSubscribeToAttendeeIdPresence instead of audioVideoDidStart because audioVideoDidStart fires\n // before the capacity check in the media backend while when realtimeSubscribeToAttendeeIdPresence fires, we know the\n // content attendee has been able to pass the capacity check and join the call so we can start the local\n // content share video\n this.attendeeAudioVideo.realtimeController.realtimeSubscribeToAttendeeIdPresence(\n (attendeeId: string, present: boolean, _externalUserId: string, _dropped: boolean): void => {\n const isContentAttendee = new DefaultModality(attendeeId).hasModality(\n DefaultModality.MODALITY_CONTENT\n );\n const isSelfAttendee =\n new DefaultModality(attendeeId).base() ===\n this.attendeeAudioVideo.configuration.credentials.attendeeId;\n if (!isContentAttendee || !isSelfAttendee || !present || this.contentShareTile) {\n return;\n }\n const stream = this.mediaStreamBroker.mediaStream;\n if (stream?.getVideoTracks().length) {\n this.contentShareTile = this.attendeeAudioVideo.videoTileController.addVideoTile();\n const track = stream.getVideoTracks()[0];\n let width, height;\n if (track.getSettings) {\n const cap: MediaTrackSettings = track.getSettings();\n width = cap.width as number;\n height = cap.height as number;\n } else {\n const cap: MediaTrackCapabilities = track.getCapabilities();\n width = cap.width as number;\n height = cap.height as number;\n }\n this.contentShareTile.bindVideoStream(\n this.contentAudioVideo.configuration.credentials.attendeeId,\n false,\n stream,\n width,\n height,\n null,\n this.contentAudioVideo.configuration.credentials.externalUserId\n );\n }\n this.forEachContentShareObserver(observer => {\n Maybe.of(observer.contentShareDidStart).map(f => f.call(observer));\n });\n }\n );\n }\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport Logger from '../logger/Logger';\nimport SimulcastContentShareTransceiverController from '../transceivercontroller/SimulcastContentShareTransceiverController';\nimport DefaultVideoCaptureAndEncodeParameter from '../videocaptureandencodeparameter/DefaultVideoCaptureAndEncodeParameter';\nimport VideoStreamIndex from '../videostreamindex/VideoStreamIndex';\nimport ConnectionMetrics from './ConnectionMetrics';\nimport ContentShareSimulcastEncodingParameters from './ContentShareSimulcastEncodingParameters';\nimport SimulcastUplinkObserver from './SimulcastUplinkObserver';\nimport SimulcastUplinkPolicy from './SimulcastUplinkPolicy';\n\n/**\n * [[DefaultSimulcastUplinkPolicyForContentShare]] sets the capture and encode\n * parameters based on constructor input parameters\n */\nexport default class DefaultSimulcastUplinkPolicyForContentShare implements SimulcastUplinkPolicy {\n private enableUhdContent: boolean = false;\n private defaultHiTargetBitrateKbps: number = 1200;\n private defaultLowTargetBitrateKbps: number = 300;\n\n constructor(_logger: Logger, private encodingParams?: ContentShareSimulcastEncodingParameters) {}\n\n updateConnectionMetric(_metrics: ConnectionMetrics): void {}\n\n chooseMediaTrackConstraints(): MediaTrackConstraints {\n return undefined;\n }\n\n chooseEncodingParameters(): Map {\n const newMap = new Map();\n const toBps = 1000;\n const nameArr = SimulcastContentShareTransceiverController.NAME_ARR_ASCENDING;\n newMap.set(nameArr[0], {\n rid: nameArr[0],\n active: true,\n scaleResolutionDownBy: this.encodingParams?.low?.scaleResolutionDownBy || 2,\n maxBitrate:\n (this.encodingParams?.low?.maxBitrateKbps || this.defaultLowTargetBitrateKbps) * toBps,\n maxFramerate: this.encodingParams?.low?.maxFramerate || 5,\n });\n newMap.set(nameArr[1], {\n rid: nameArr[1],\n active: true,\n scaleResolutionDownBy: this.encodingParams?.high?.scaleResolutionDownBy || 1,\n maxBitrate:\n (this.encodingParams?.high?.maxBitrateKbps || this.defaultHiTargetBitrateKbps) * toBps,\n maxFramerate: this.encodingParams?.high?.maxFramerate,\n });\n return newMap;\n }\n\n updateIndex(_videoIndex: VideoStreamIndex): void {}\n\n wantsResubscribe(): boolean {\n return false;\n }\n\n chooseCaptureAndEncodeParameters(): DefaultVideoCaptureAndEncodeParameter {\n return undefined;\n }\n\n maxBandwidthKbps(): number {\n return this.enableUhdContent ? 2000 : 1200;\n }\n\n setIdealMaxBandwidthKbps(_idealMaxBandwidthKbps: number): void {}\n\n setHasBandwidthPriority(_hasBandwidthPriority: boolean): void {}\n\n setHighResolutionFeatureEnabled(enabled: boolean): void {\n this.enableUhdContent = enabled;\n this.defaultHiTargetBitrateKbps = enabled ? 2000 : 1200;\n this.defaultLowTargetBitrateKbps = enabled ? 500 : 300;\n }\n\n addObserver(_observer: SimulcastUplinkObserver): void {}\n\n removeObserver(_observer: SimulcastUplinkObserver): void {}\n\n forEachObserver(_observerFunc: (observer: SimulcastUplinkObserver) => void): void {}\n}\n","'use strict';\nvar $ = require('../internals/export');\nvar aCallable = require('../internals/a-callable');\nvar aMap = require('../internals/a-map');\nvar MapHelpers = require('../internals/map-helpers');\n\nvar $TypeError = TypeError;\nvar get = MapHelpers.get;\nvar has = MapHelpers.has;\nvar set = MapHelpers.set;\n\n// `Map.prototype.update` method\n// https://github.com/tc39/proposal-collection-methods\n$({ target: 'Map', proto: true, real: true, forced: true }, {\n update: function update(key, callback /* , thunk */) {\n var map = aMap(this);\n var length = arguments.length;\n aCallable(callback);\n var isPresentInMap = has(map, key);\n if (!isPresentInMap && length < 3) {\n throw new $TypeError('Updating absent value');\n }\n var value = isPresentInMap ? get(map, key) : aCallable(length > 2 ? arguments[2] : undefined)(key, map);\n set(map, key, callback(value, key, map));\n return map;\n }\n});\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport VideoEncodingCpuConnectionHealthPolicy from '../connectionhealthpolicy/VideoEncodingCpuConnectionHealthPolicy';\nimport VideoEncodingFramerateConnectionHealthPolicy from '../connectionhealthpolicy/VideoEncodingFramerateConnectionHealthPolicy';\n\nexport default class ConnectionHealthPolicyConfiguration {\n minHealth: number = 0;\n maxHealth: number = 1;\n initialHealth: number = 1;\n connectionUnhealthyThreshold = 25;\n noSignalThresholdTimeMs = 10000;\n connectionWaitTimeMs = 10000;\n zeroBarsNoSignalTimeMs = 5000;\n oneBarWeakSignalTimeMs = 5000;\n twoBarsTimeMs = 5000;\n threeBarsTimeMs = 10000;\n fourBarsTimeMs = 20000;\n fiveBarsTimeMs = 60000;\n cooldownTimeMs = 60000;\n pastSamplesToConsider = 15;\n goodSignalTimeMs = 15000;\n fractionalLoss = 0.5;\n packetsExpected = 50;\n maximumTimesToWarn = 2;\n missedPongsLowerThreshold = 1;\n missedPongsUpperThreshold = 4;\n maximumAudioDelayMs = 60000;\n maximumAudioDelayDataPoints = 10;\n\n /**\n * The number of samples required to consider sending-audio to be unhealthy\n *\n * The default value is derived from the median for time taken for receiving an attendee presence message from the\n * server after joining. Attendee presence is only received when the client sends audio packets to the server, so\n * this metric is used as a proxy.\n */\n sendingAudioFailureSamplesToConsider = 2;\n\n /**\n * The purpose of this field is to add a wait time/delay to our evaluation of sending audio health\n * as the microphone may sometimes cause a delay in sending audio packets during the initial stages of a connection.\n */\n sendingAudioFailureInitialWaitTimeMs = 3000;\n\n /**\n * Policies and parameters related to video encoding health montoring\n */\n videoEncodingHealthPolicies = [\n VideoEncodingCpuConnectionHealthPolicy,\n VideoEncodingFramerateConnectionHealthPolicy,\n ];\n\n /**\n * Consecutive seconds of high encode CPU to trigger video codec degradation in video encoding health monitoring.\n * Increasing the value results in less sensitive video codec degradaion and vice versa.\n */\n consecutiveHighEncodeCpuThreshold = 10;\n\n /**\n * Encode time threshold to determine high CPU usage of software encoders in video encoding health monitoring.\n * Recuding the value results in video codec degradation due to high CPU usage software encoder to be triggered\n * at a lower CPU usage.\n */\n highEncodeCpuMsThreshold = 500;\n\n /**\n * Encode time per frame threshold to determine high CPU usage of software encoders in video encoding health\n * monitoring. Recuding the value results in video codec degradation due to high CPU usage software encoder to\n * be triggered at a lower CPU usage. Note that encoder counts each SVC spatial layer of a frame as an encoded\n * frame. The magnification in framerate should be considered when configuring this parameter with SVC enabled.\n */\n highEncodeCpuMsPerFrameThreshold = 15;\n\n /**\n * Consecutive seconds of zero encoded framerate to trigger video codec degradation in video encoding health monitoring.\n * Increasing the value results in less sensitive video codec degradaion and vice versa.\n */\n consecutiveVideoEncodingFailureThreshold = 5;\n}\n","'use strict';\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar call = Function.prototype.call;\n// eslint-disable-next-line es/no-function-prototype-bind -- safe\nmodule.exports = NATIVE_BIND ? call.bind(call) : function () {\n return call.apply(call, arguments);\n};\n","'use strict';\n\n/** @type {import('./type')} */\nmodule.exports = TypeError;\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar call = require('../internals/function-call');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPropertyKey = require('../internals/to-property-key');\nvar hasOwn = require('../internals/has-own-property');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\n\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n O = toIndexedObject(O);\n P = toPropertyKey(P);\n if (IE8_DOM_DEFINE) try {\n return $getOwnPropertyDescriptor(O, P);\n } catch (error) { /* empty */ }\n if (hasOwn(O, P)) return createPropertyDescriptor(!call(propertyIsEnumerableModule.f, O, P), O[P]);\n};\n","/**\n * Javascript implementation of basic PEM (Privacy Enhanced Mail) algorithms.\n *\n * See: RFC 1421.\n *\n * @author Dave Longley\n *\n * Copyright (c) 2013-2014 Digital Bazaar, Inc.\n *\n * A Forge PEM object has the following fields:\n *\n * type: identifies the type of message (eg: \"RSA PRIVATE KEY\").\n *\n * procType: identifies the type of processing performed on the message,\n * it has two subfields: version and type, eg: 4,ENCRYPTED.\n *\n * contentDomain: identifies the type of content in the message, typically\n * only uses the value: \"RFC822\".\n *\n * dekInfo: identifies the message encryption algorithm and mode and includes\n * any parameters for the algorithm, it has two subfields: algorithm and\n * parameters, eg: DES-CBC,F8143EDE5960C597.\n *\n * headers: contains all other PEM encapsulated headers -- where order is\n * significant (for pairing data like recipient ID + key info).\n *\n * body: the binary-encoded body.\n */\nvar forge = require('./forge');\nrequire('./util');\n\n// shortcut for pem API\nvar pem = module.exports = forge.pem = forge.pem || {};\n\n/**\n * Encodes (serializes) the given PEM object.\n *\n * @param msg the PEM message object to encode.\n * @param options the options to use:\n * maxline the maximum characters per line for the body, (default: 64).\n *\n * @return the PEM-formatted string.\n */\npem.encode = function(msg, options) {\n options = options || {};\n var rval = '-----BEGIN ' + msg.type + '-----\\r\\n';\n\n // encode special headers\n var header;\n if(msg.procType) {\n header = {\n name: 'Proc-Type',\n values: [String(msg.procType.version), msg.procType.type]\n };\n rval += foldHeader(header);\n }\n if(msg.contentDomain) {\n header = {name: 'Content-Domain', values: [msg.contentDomain]};\n rval += foldHeader(header);\n }\n if(msg.dekInfo) {\n header = {name: 'DEK-Info', values: [msg.dekInfo.algorithm]};\n if(msg.dekInfo.parameters) {\n header.values.push(msg.dekInfo.parameters);\n }\n rval += foldHeader(header);\n }\n\n if(msg.headers) {\n // encode all other headers\n for(var i = 0; i < msg.headers.length; ++i) {\n rval += foldHeader(msg.headers[i]);\n }\n }\n\n // terminate header\n if(msg.procType) {\n rval += '\\r\\n';\n }\n\n // add body\n rval += forge.util.encode64(msg.body, options.maxline || 64) + '\\r\\n';\n\n rval += '-----END ' + msg.type + '-----\\r\\n';\n return rval;\n};\n\n/**\n * Decodes (deserializes) all PEM messages found in the given string.\n *\n * @param str the PEM-formatted string to decode.\n *\n * @return the PEM message objects in an array.\n */\npem.decode = function(str) {\n var rval = [];\n\n // split string into PEM messages (be lenient w/EOF on BEGIN line)\n var rMessage = /\\s*-----BEGIN ([A-Z0-9- ]+)-----\\r?\\n?([\\x21-\\x7e\\s]+?(?:\\r?\\n\\r?\\n))?([:A-Za-z0-9+\\/=\\s]+?)-----END \\1-----/g;\n var rHeader = /([\\x21-\\x7e]+):\\s*([\\x21-\\x7e\\s^:]+)/;\n var rCRLF = /\\r?\\n/;\n var match;\n while(true) {\n match = rMessage.exec(str);\n if(!match) {\n break;\n }\n\n // accept \"NEW CERTIFICATE REQUEST\" as \"CERTIFICATE REQUEST\"\n // https://datatracker.ietf.org/doc/html/rfc7468#section-7\n var type = match[1];\n if(type === 'NEW CERTIFICATE REQUEST') {\n type = 'CERTIFICATE REQUEST';\n }\n\n var msg = {\n type: type,\n procType: null,\n contentDomain: null,\n dekInfo: null,\n headers: [],\n body: forge.util.decode64(match[3])\n };\n rval.push(msg);\n\n // no headers\n if(!match[2]) {\n continue;\n }\n\n // parse headers\n var lines = match[2].split(rCRLF);\n var li = 0;\n while(match && li < lines.length) {\n // get line, trim any rhs whitespace\n var line = lines[li].replace(/\\s+$/, '');\n\n // RFC2822 unfold any following folded lines\n for(var nl = li + 1; nl < lines.length; ++nl) {\n var next = lines[nl];\n if(!/\\s/.test(next[0])) {\n break;\n }\n line += next;\n li = nl;\n }\n\n // parse header\n match = line.match(rHeader);\n if(match) {\n var header = {name: match[1], values: []};\n var values = match[2].split(',');\n for(var vi = 0; vi < values.length; ++vi) {\n header.values.push(ltrim(values[vi]));\n }\n\n // Proc-Type must be the first header\n if(!msg.procType) {\n if(header.name !== 'Proc-Type') {\n throw new Error('Invalid PEM formatted message. The first ' +\n 'encapsulated header must be \"Proc-Type\".');\n } else if(header.values.length !== 2) {\n throw new Error('Invalid PEM formatted message. The \"Proc-Type\" ' +\n 'header must have two subfields.');\n }\n msg.procType = {version: values[0], type: values[1]};\n } else if(!msg.contentDomain && header.name === 'Content-Domain') {\n // special-case Content-Domain\n msg.contentDomain = values[0] || '';\n } else if(!msg.dekInfo && header.name === 'DEK-Info') {\n // special-case DEK-Info\n if(header.values.length === 0) {\n throw new Error('Invalid PEM formatted message. The \"DEK-Info\" ' +\n 'header must have at least one subfield.');\n }\n msg.dekInfo = {algorithm: values[0], parameters: values[1] || null};\n } else {\n msg.headers.push(header);\n }\n }\n\n ++li;\n }\n\n if(msg.procType === 'ENCRYPTED' && !msg.dekInfo) {\n throw new Error('Invalid PEM formatted message. The \"DEK-Info\" ' +\n 'header must be present if \"Proc-Type\" is \"ENCRYPTED\".');\n }\n }\n\n if(rval.length === 0) {\n throw new Error('Invalid PEM formatted message.');\n }\n\n return rval;\n};\n\nfunction foldHeader(header) {\n var rval = header.name + ': ';\n\n // ensure values with CRLF are folded\n var values = [];\n var insertSpace = function(match, $1) {\n return ' ' + $1;\n };\n for(var i = 0; i < header.values.length; ++i) {\n values.push(header.values[i].replace(/^(\\S+\\r\\n)/, insertSpace));\n }\n rval += values.join(',') + '\\r\\n';\n\n // do folding\n var length = 0;\n var candidate = -1;\n for(var i = 0; i < rval.length; ++i, ++length) {\n if(length > 65 && candidate !== -1) {\n var insert = rval[candidate];\n if(insert === ',') {\n ++candidate;\n rval = rval.substr(0, candidate) + '\\r\\n ' + rval.substr(candidate);\n } else {\n rval = rval.substr(0, candidate) +\n '\\r\\n' + insert + rval.substr(candidate + 1);\n }\n length = (i - candidate - 1);\n candidate = -1;\n ++i;\n } else if(rval[i] === ' ' || rval[i] === '\\t' || rval[i] === ',') {\n candidate = i;\n }\n }\n\n return rval;\n}\n\nfunction ltrim(str) {\n return str.replace(/^\\s+/, '');\n}\n","'use strict';\n\n/**\n * A `Cancel` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */\nfunction Cancel(message) {\n this.message = message;\n}\n\nCancel.prototype.toString = function toString() {\n return 'Cancel' + (this.message ? ': ' + this.message : '');\n};\n\nCancel.prototype.__CANCEL__ = true;\n\nmodule.exports = Cancel;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['connect'] = {};\nAWS.Connect = Service.defineService('connect', ['2017-08-08']);\nObject.defineProperty(apiLoader.services['connect'], '2017-08-08', {\n get: function get() {\n var model = require('../apis/connect-2017-08-08.min.json');\n model.paginators = require('../apis/connect-2017-08-08.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.Connect;\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nconst MAXBITS = 15;\nconst ENOUGH_LENS = 852;\nconst ENOUGH_DISTS = 592;\n//const ENOUGH = (ENOUGH_LENS+ENOUGH_DISTS);\n\nconst CODES = 0;\nconst LENS = 1;\nconst DISTS = 2;\n\nconst lbase = new Uint16Array([ /* Length codes 257..285 base */\n 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31,\n 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0\n]);\n\nconst lext = new Uint8Array([ /* Length codes 257..285 extra */\n 16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18,\n 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 72, 78\n]);\n\nconst dbase = new Uint16Array([ /* Distance codes 0..29 base */\n 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193,\n 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145,\n 8193, 12289, 16385, 24577, 0, 0\n]);\n\nconst dext = new Uint8Array([ /* Distance codes 0..29 extra */\n 16, 16, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22,\n 23, 23, 24, 24, 25, 25, 26, 26, 27, 27,\n 28, 28, 29, 29, 64, 64\n]);\n\nconst inflate_table = (type, lens, lens_index, codes, table, table_index, work, opts) =>\n{\n const bits = opts.bits;\n //here = opts.here; /* table entry for duplication */\n\n let len = 0; /* a code's length in bits */\n let sym = 0; /* index of code symbols */\n let min = 0, max = 0; /* minimum and maximum code lengths */\n let root = 0; /* number of index bits for root table */\n let curr = 0; /* number of index bits for current table */\n let drop = 0; /* code bits to drop for sub-table */\n let left = 0; /* number of prefix codes available */\n let used = 0; /* code entries in table used */\n let huff = 0; /* Huffman code */\n let incr; /* for incrementing code, index */\n let fill; /* index for replicating entries */\n let low; /* low bits for current root entry */\n let mask; /* mask for low root bits */\n let next; /* next available space in table */\n let base = null; /* base value table to use */\n// let shoextra; /* extra bits table to use */\n let match; /* use base and extra for symbol >= match */\n const count = new Uint16Array(MAXBITS + 1); //[MAXBITS+1]; /* number of codes of each length */\n const offs = new Uint16Array(MAXBITS + 1); //[MAXBITS+1]; /* offsets in table for each length */\n let extra = null;\n\n let here_bits, here_op, here_val;\n\n /*\n Process a set of code lengths to create a canonical Huffman code. The\n code lengths are lens[0..codes-1]. Each length corresponds to the\n symbols 0..codes-1. The Huffman code is generated by first sorting the\n symbols by length from short to long, and retaining the symbol order\n for codes with equal lengths. Then the code starts with all zero bits\n for the first code of the shortest length, and the codes are integer\n increments for the same length, and zeros are appended as the length\n increases. For the deflate format, these bits are stored backwards\n from their more natural integer increment ordering, and so when the\n decoding tables are built in the large loop below, the integer codes\n are incremented backwards.\n\n This routine assumes, but does not check, that all of the entries in\n lens[] are in the range 0..MAXBITS. The caller must assure this.\n 1..MAXBITS is interpreted as that code length. zero means that that\n symbol does not occur in this code.\n\n The codes are sorted by computing a count of codes for each length,\n creating from that a table of starting indices for each length in the\n sorted table, and then entering the symbols in order in the sorted\n table. The sorted table is work[], with that space being provided by\n the caller.\n\n The length counts are used for other purposes as well, i.e. finding\n the minimum and maximum length codes, determining if there are any\n codes at all, checking for a valid set of lengths, and looking ahead\n at length counts to determine sub-table sizes when building the\n decoding tables.\n */\n\n /* accumulate lengths for codes (assumes lens[] all in 0..MAXBITS) */\n for (len = 0; len <= MAXBITS; len++) {\n count[len] = 0;\n }\n for (sym = 0; sym < codes; sym++) {\n count[lens[lens_index + sym]]++;\n }\n\n /* bound code lengths, force root to be within code lengths */\n root = bits;\n for (max = MAXBITS; max >= 1; max--) {\n if (count[max] !== 0) { break; }\n }\n if (root > max) {\n root = max;\n }\n if (max === 0) { /* no symbols to code at all */\n //table.op[opts.table_index] = 64; //here.op = (var char)64; /* invalid code marker */\n //table.bits[opts.table_index] = 1; //here.bits = (var char)1;\n //table.val[opts.table_index++] = 0; //here.val = (var short)0;\n table[table_index++] = (1 << 24) | (64 << 16) | 0;\n\n\n //table.op[opts.table_index] = 64;\n //table.bits[opts.table_index] = 1;\n //table.val[opts.table_index++] = 0;\n table[table_index++] = (1 << 24) | (64 << 16) | 0;\n\n opts.bits = 1;\n return 0; /* no symbols, but wait for decoding to report error */\n }\n for (min = 1; min < max; min++) {\n if (count[min] !== 0) { break; }\n }\n if (root < min) {\n root = min;\n }\n\n /* check for an over-subscribed or incomplete set of lengths */\n left = 1;\n for (len = 1; len <= MAXBITS; len++) {\n left <<= 1;\n left -= count[len];\n if (left < 0) {\n return -1;\n } /* over-subscribed */\n }\n if (left > 0 && (type === CODES || max !== 1)) {\n return -1; /* incomplete set */\n }\n\n /* generate offsets into symbol table for each length for sorting */\n offs[1] = 0;\n for (len = 1; len < MAXBITS; len++) {\n offs[len + 1] = offs[len] + count[len];\n }\n\n /* sort symbols by length, by symbol order within each length */\n for (sym = 0; sym < codes; sym++) {\n if (lens[lens_index + sym] !== 0) {\n work[offs[lens[lens_index + sym]]++] = sym;\n }\n }\n\n /*\n Create and fill in decoding tables. In this loop, the table being\n filled is at next and has curr index bits. The code being used is huff\n with length len. That code is converted to an index by dropping drop\n bits off of the bottom. For codes where len is less than drop + curr,\n those top drop + curr - len bits are incremented through all values to\n fill the table with replicated entries.\n\n root is the number of index bits for the root table. When len exceeds\n root, sub-tables are created pointed to by the root entry with an index\n of the low root bits of huff. This is saved in low to check for when a\n new sub-table should be started. drop is zero when the root table is\n being filled, and drop is root when sub-tables are being filled.\n\n When a new sub-table is needed, it is necessary to look ahead in the\n code lengths to determine what size sub-table is needed. The length\n counts are used for this, and so count[] is decremented as codes are\n entered in the tables.\n\n used keeps track of how many table entries have been allocated from the\n provided *table space. It is checked for LENS and DIST tables against\n the constants ENOUGH_LENS and ENOUGH_DISTS to guard against changes in\n the initial root table size constants. See the comments in inftrees.h\n for more information.\n\n sym increments through all symbols, and the loop terminates when\n all codes of length max, i.e. all codes, have been processed. This\n routine permits incomplete codes, so another loop after this one fills\n in the rest of the decoding tables with invalid code markers.\n */\n\n /* set up for code type */\n // poor man optimization - use if-else instead of switch,\n // to avoid deopts in old v8\n if (type === CODES) {\n base = extra = work; /* dummy value--not used */\n match = 20;\n\n } else if (type === LENS) {\n base = lbase;\n extra = lext;\n match = 257;\n\n } else { /* DISTS */\n base = dbase;\n extra = dext;\n match = 0;\n }\n\n /* initialize opts for loop */\n huff = 0; /* starting code */\n sym = 0; /* starting code symbol */\n len = min; /* starting code length */\n next = table_index; /* current table to fill in */\n curr = root; /* current table index bits */\n drop = 0; /* current bits to drop from code for index */\n low = -1; /* trigger new sub-table when len > root */\n used = 1 << root; /* use root table entries */\n mask = used - 1; /* mask for comparing low */\n\n /* check available table space */\n if ((type === LENS && used > ENOUGH_LENS) ||\n (type === DISTS && used > ENOUGH_DISTS)) {\n return 1;\n }\n\n /* process all codes and make table entries */\n for (;;) {\n /* create table entry */\n here_bits = len - drop;\n if (work[sym] + 1 < match) {\n here_op = 0;\n here_val = work[sym];\n }\n else if (work[sym] >= match) {\n here_op = extra[work[sym] - match];\n here_val = base[work[sym] - match];\n }\n else {\n here_op = 32 + 64; /* end of block */\n here_val = 0;\n }\n\n /* replicate for those indices with low len bits equal to huff */\n incr = 1 << (len - drop);\n fill = 1 << curr;\n min = fill; /* save offset to next table */\n do {\n fill -= incr;\n table[next + (huff >> drop) + fill] = (here_bits << 24) | (here_op << 16) | here_val |0;\n } while (fill !== 0);\n\n /* backwards increment the len-bit code huff */\n incr = 1 << (len - 1);\n while (huff & incr) {\n incr >>= 1;\n }\n if (incr !== 0) {\n huff &= incr - 1;\n huff += incr;\n } else {\n huff = 0;\n }\n\n /* go to next symbol, update count, len */\n sym++;\n if (--count[len] === 0) {\n if (len === max) { break; }\n len = lens[lens_index + work[sym]];\n }\n\n /* create new sub-table if needed */\n if (len > root && (huff & mask) !== low) {\n /* if first time, transition to sub-tables */\n if (drop === 0) {\n drop = root;\n }\n\n /* increment past last table */\n next += min; /* here min is 1 << curr */\n\n /* determine length of next table */\n curr = len - drop;\n left = 1 << curr;\n while (curr + drop < max) {\n left -= count[curr + drop];\n if (left <= 0) { break; }\n curr++;\n left <<= 1;\n }\n\n /* check for enough space */\n used += 1 << curr;\n if ((type === LENS && used > ENOUGH_LENS) ||\n (type === DISTS && used > ENOUGH_DISTS)) {\n return 1;\n }\n\n /* point entry in root table to sub-table */\n low = huff & mask;\n /*table.op[low] = curr;\n table.bits[low] = root;\n table.val[low] = next - opts.table_index;*/\n table[low] = (root << 24) | (curr << 16) | (next - table_index) |0;\n }\n }\n\n /* fill in remaining table entry if code is incomplete (guaranteed to have\n at most one remaining entry, since if the code is incomplete, the\n maximum code length that was allowed to get this far is one bit) */\n if (huff !== 0) {\n //table.op[next + huff] = 64; /* invalid code marker */\n //table.bits[next + huff] = len - drop;\n //table.val[next + huff] = 0;\n table[next + huff] = ((len - drop) << 24) | (64 << 16) |0;\n }\n\n /* set return parameters */\n //opts.table_index += used;\n opts.bits = root;\n return 0;\n};\n\n\nmodule.exports = inflate_table;\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nexport default class RedundantAudioEncoder {\n // Each payload must be less than 1024 bytes to fit the 10 bit block length\n private readonly maxRedPacketSizeBytes = 1 << 10;\n\n // Limit payload to 1000 bytes to handle small MTU. 1000 is chosen because in Chromium-based browsers, writing audio\n // payloads larger than 1000 bytes using the WebRTC Insertable Streams API (which is used to enable dynamic audio\n // redundancy) will cause an error to be thrown and cause audio flow to permanently stop. See\n // https://crbug.com/1248479.\n private readonly maxAudioPayloadSizeBytes = 1000;\n\n // Each payload can encode a timestamp delta of 14 bits\n private readonly maxRedTimestampOffset = 1 << 14;\n\n // 4 byte RED header\n private readonly redHeaderSizeBytes = 4;\n\n // reduced size for last RED header\n private readonly redLastHeaderSizeBytes = 1;\n\n // P-Time for Opus 20 msec packets\n // We do not support other p-times or clock rates\n private readonly redPacketizationTime = 960;\n\n // distance between redundant payloads, Opus FEC handles a distance of 1\n // TODO(https://issues.amazon.com/issues/ChimeSDKAudio-55):\n // Consider making this dynamic\n private readonly redPacketDistance = 2;\n\n // maximum number of redundant payloads per RTP packet\n private readonly maxRedEncodings = 2;\n\n // Maximum number of encodings that can be recovered with a single RED packet, assuming the primary and redundant\n // payloads have FEC.\n private readonly redMaxRecoveryDistance = this.redPacketDistance * this.maxRedEncodings + 1;\n\n // maximum history of prior payloads to keep\n // generally we will expire old entries based on timestamp\n // this limit is in place just to make sure the history does not\n // grow too large in the case of erroneous timestamp inputs\n private readonly maxEncodingHistorySize = 10;\n\n // Holds the RED payload type obtained from the local SDP\n // This is updated when the transceiver controller sends\n // a message of type RedPayloadType\n private redPayloadType: number;\n\n // Holds the RED payload type obtained from the local SDP\n // This is updated when the transceiver controller sends\n // a message of type RedPayloadType\n private opusPayloadType: number;\n\n // Current number of encodings we want to send\n // to the remote end. This will be dynamically\n // updated through the setNumEncodingsFromPacketloss API\n private numRedundantEncodings: number = 0;\n\n // Holds a history of primary payloads in order\n // oldest to newest\n private encodingHistory: Array;\n\n // Used to enable or disable redundancy\n // in response to very high packet loss events\n private redundancyEnabled: boolean = true;\n\n // This is a workaround for unit testing due to issues with mocking `self`\n // which is a part of DedicatedWorker scope and is currently used to post\n // messages to the main thread\n static shouldLog: boolean = false;\n\n // This is a workaround for unit testing due to issues with mocking `self`\n // which is a part of DedicatedWorker scope and is currently used to post\n // messages to the main thread\n static shouldReportStats: boolean = false;\n\n constructor() {\n this.encodingHistory = new Array();\n this.opusPayloadType = 0;\n this.redPayloadType = 0;\n this.initializePacketLogs();\n }\n\n /**\n * Creates an instance of RedundantAudioEncoder and sets up callbacks.\n */\n static initializeWorker(): void {\n RedundantAudioEncoder.log('Initializing RedundantAudioEncoder');\n const encoder = new RedundantAudioEncoder();\n\n // RED encoding is done using WebRTC Encoded Transform\n // https://github.com/w3c/webrtc-encoded-transform/blob/main/explainer.md\n\n // Check the DedicatedWorkerGlobalScope for existence of\n // RTCRtpScriptTransformer interface. If exists, then\n // RTCRtpScriptTransform is supported by this browser.\n // @ts-ignore\n if (self.RTCRtpScriptTransformer) {\n // @ts-ignore\n self.onrtctransform = (event: RTCTransformEvent) => {\n if (event.transformer.options.type === 'SenderTransform') {\n encoder.setupSenderTransform(event.transformer.readable, event.transformer.writable);\n } else if (event.transformer.options.type === 'ReceiverTransform') {\n encoder.setupReceiverTransform(event.transformer.readable, event.transformer.writable);\n } else if (event.transformer.options.type === 'PassthroughTransform') {\n encoder.setupPassthroughTransform(event.transformer.readable, event.transformer.writable);\n }\n };\n }\n\n self.onmessage = (event: MessageEvent) => {\n if (event.data.msgType === 'StartRedWorker') {\n encoder.setupSenderTransform(event.data.send.readable, event.data.send.writable);\n encoder.setupReceiverTransform(event.data.receive.readable, event.data.receive.writable);\n } else if (event.data.msgType === 'PassthroughTransform') {\n encoder.setupPassthroughTransform(event.data.send.readable, event.data.send.writable);\n encoder.setupPassthroughTransform(event.data.receive.readable, event.data.receive.writable);\n } else if (event.data.msgType === 'RedPayloadType') {\n encoder.setRedPayloadType(event.data.payloadType);\n } else if (event.data.msgType === 'OpusPayloadType') {\n encoder.setOpusPayloadType(event.data.payloadType);\n } else if (event.data.msgType === 'UpdateNumRedundantEncodings') {\n encoder.setNumRedundantEncodings(event.data.numRedundantEncodings);\n } else if (event.data.msgType === 'Enable') {\n encoder.setRedundancyEnabled(true);\n } else if (event.data.msgType === 'Disable') {\n encoder.setRedundancyEnabled(false);\n }\n };\n }\n\n /**\n * Post logs to the main thread\n */\n static log(msg: string): void {\n if (RedundantAudioEncoder.shouldLog) {\n // @ts-ignore\n self.postMessage({\n type: 'REDWorkerLog',\n log: `[AudioRed] ${msg}`,\n });\n }\n }\n\n /**\n * Returns the number of encodings based on packetLoss value. This is used by `DefaultTransceiverController` to\n * determine when to alert the encoder to update the number of encodings. It also determines if we need to\n * turn off red in cases of very high packet loss to avoid congestion collapse.\n */\n static getNumRedundantEncodingsForPacketLoss(packetLoss: number): [number, boolean] {\n let recommendedRedundantEncodings = 0;\n let shouldTurnOffRed = false;\n if (packetLoss <= 8) {\n recommendedRedundantEncodings = 0;\n } else if (packetLoss <= 18) {\n recommendedRedundantEncodings = 1;\n } else if (packetLoss <= 75) {\n recommendedRedundantEncodings = 2;\n } else {\n recommendedRedundantEncodings = 0;\n shouldTurnOffRed = true;\n }\n return [recommendedRedundantEncodings, shouldTurnOffRed];\n }\n\n /**\n * Sets up a passthrough (no-op) transform for the given streams.\n */\n setupPassthroughTransform(readable: ReadableStream, writable: WritableStream): void {\n RedundantAudioEncoder.log('Setting up passthrough transform');\n readable.pipeTo(writable);\n }\n\n /**\n * Sets up the transform stream and pipes the outgoing encoded audio frames through the transform function.\n */\n setupSenderTransform(readable: ReadableStream, writable: WritableStream): void {\n RedundantAudioEncoder.log('Setting up sender RED transform');\n const transformStream = new TransformStream({\n transform: this.senderTransform.bind(this),\n });\n readable.pipeThrough(transformStream).pipeTo(writable);\n return;\n }\n\n /**\n * Sets up the transform stream and pipes the received encoded audio frames through the transform function.\n */\n setupReceiverTransform(readable: ReadableStream, writable: WritableStream): void {\n RedundantAudioEncoder.log('Setting up receiver RED transform');\n const transformStream = new TransformStream({\n transform: this.receivePacketLogTransform.bind(this),\n });\n readable.pipeThrough(transformStream).pipeTo(writable);\n return;\n }\n\n /**\n * Set the RED payload type ideally obtained from local offer.\n */\n setRedPayloadType(payloadType: number): void {\n this.redPayloadType = payloadType;\n RedundantAudioEncoder.log(`red payload type set to ${this.redPayloadType}`);\n }\n\n /**\n * Set the opus payload type ideally obtained from local offer.\n */\n setOpusPayloadType(payloadType: number): void {\n this.opusPayloadType = payloadType;\n RedundantAudioEncoder.log(`opus payload type set to ${this.opusPayloadType}`);\n }\n\n /**\n * Set the number of redundant encodings\n */\n setNumRedundantEncodings(numRedundantEncodings: number): void {\n this.numRedundantEncodings = numRedundantEncodings;\n if (this.numRedundantEncodings > this.maxRedEncodings) {\n this.numRedundantEncodings = this.maxRedEncodings;\n }\n RedundantAudioEncoder.log(`Updated numRedundantEncodings to ${this.numRedundantEncodings}`);\n }\n\n /**\n * Enable or disable redundancy in response to\n * high packet loss event.\n */\n setRedundancyEnabled(enabled: boolean): void {\n this.redundancyEnabled = enabled;\n RedundantAudioEncoder.log(`redundancy ${this.redundancyEnabled ? 'enabled' : 'disabled'}`);\n }\n\n /**\n * Helper function to only enqueue audio frames if they do not exceed the audio payload byte limit imposed by\n * Chromium-based browsers. Chromium will throw an error (https://crbug.com/1248479) if an audio payload larger than\n * 1000 bytes is enqueued. Any controller that attempts to enqueue an audio payload larger than 1000 bytes will\n * encounter this error and will permanently stop sending or receiving audio.\n */\n private enqueueAudioFrameIfPayloadSizeIsValid(\n // @ts-ignore\n frame: RTCEncodedAudioFrame,\n controller: TransformStreamDefaultController\n ): void {\n if (frame.data.byteLength > this.maxAudioPayloadSizeBytes) return;\n controller.enqueue(frame);\n }\n\n /**\n * Receives encoded frames and modifies as needed before sending to transport.\n */\n private senderTransform(\n // @ts-ignore\n frame: RTCEncodedAudioFrame,\n controller: TransformStreamDefaultController\n ): void {\n const frameMetadata = frame.getMetadata();\n // @ts-ignore\n if (frameMetadata.payloadType !== this.redPayloadType) {\n this.enqueueAudioFrameIfPayloadSizeIsValid(frame, controller);\n return;\n }\n const primaryPayloadBuffer = this.getPrimaryPayload(frame.timestamp, frame.data);\n if (!primaryPayloadBuffer) {\n this.enqueueAudioFrameIfPayloadSizeIsValid(frame, controller);\n return;\n }\n const encodedBuffer = this.encode(frame.timestamp, primaryPayloadBuffer);\n /* istanbul ignore next */\n if (!encodedBuffer) {\n this.enqueueAudioFrameIfPayloadSizeIsValid(frame, controller);\n return;\n }\n frame.data = encodedBuffer;\n this.enqueueAudioFrameIfPayloadSizeIsValid(frame, controller);\n return;\n }\n\n /**\n * Get the primary payload from encoding\n */\n private getPrimaryPayload(primaryTimestamp: number, frame: ArrayBuffer): ArrayBuffer | null {\n const encodings = this.splitEncodings(primaryTimestamp, frame);\n if (!encodings || encodings.length < 1) return null;\n return encodings[encodings.length - 1].payload;\n }\n\n /**\n * Split up the encoding received into primary and redundant encodings\n * These will be ordered oldest to newest which is the same ordering\n * in the RTP red payload.\n */\n private splitEncodings(\n primaryTimestamp: number,\n frame: ArrayBuffer,\n getFecInfo: boolean = false,\n primarySequenceNumber: number = undefined\n ): RedundantAudioEncoder.Encoding[] | null {\n // process RED headers (according to RFC 2198)\n // 0 1 2 3\n // 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1\n // +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+\n // |F| block PT | timestamp offset | block length |\n // +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+\n //\n // last header\n // 0 1 2 3 4 5 6 7\n // +-+-+-+-+-+-+-+-+\n // |0| Block PT |\n // +-+-+-+-+-+-+-+-+\n\n const payload = new DataView(frame);\n let payloadSizeBytes = payload.byteLength;\n let totalPayloadSizeBytes = 0;\n let totalHeaderSizeBytes = 0;\n let primaryPayloadSizeBytes = 0;\n let payloadOffset = 0;\n let gotLastBlock = false;\n const encodings = new Array();\n const redundantEncodingBlockLengths = new Array();\n const redundantEncodingTimestamps = new Array();\n\n while (payloadSizeBytes > 0) {\n gotLastBlock = (payload.getUint8(payloadOffset) & 0x80) === 0;\n if (gotLastBlock) {\n // Bits 1 through 7 are payload type\n const payloadType = payload.getUint8(payloadOffset) & 0x7f;\n\n // Unexpected payload type. This is a bad packet.\n if (payloadType !== this.opusPayloadType) {\n return null;\n }\n\n totalPayloadSizeBytes += this.redLastHeaderSizeBytes;\n totalHeaderSizeBytes += this.redLastHeaderSizeBytes;\n\n // Accumulated block lengths are equal to or larger than the buffer, which means there is no primary block. This\n // is a bad packet.\n if (totalPayloadSizeBytes >= payload.byteLength) {\n return null;\n }\n\n primaryPayloadSizeBytes = payload.byteLength - totalPayloadSizeBytes;\n break;\n } else {\n if (payloadSizeBytes < this.redHeaderSizeBytes) {\n return null;\n }\n\n // Bits 22 through 31 are payload length\n const blockLength =\n ((payload.getUint8(payloadOffset + 2) & 0x03) << 8) + payload.getUint8(payloadOffset + 3);\n redundantEncodingBlockLengths.push(blockLength);\n const timestampOffset = payload.getUint16(payloadOffset + 1) >> 2;\n const timestamp = primaryTimestamp - timestampOffset;\n redundantEncodingTimestamps.push(timestamp);\n totalPayloadSizeBytes += blockLength + this.redHeaderSizeBytes;\n totalHeaderSizeBytes += this.redHeaderSizeBytes;\n payloadOffset += this.redHeaderSizeBytes;\n payloadSizeBytes -= this.redHeaderSizeBytes;\n }\n }\n\n // The last block was never found. The packet we received\n // does not have a good RED payload.\n if (!gotLastBlock) {\n // Note that sequence numbers only exist for\n // incoming audio frames.\n if (primarySequenceNumber !== undefined) {\n // This could be a possible padding packet used\n // for BWE with a good sequence number.\n // Create a dummy encoding to make sure loss values\n // are calculated correctly by consuming sequence number.\n // Note that for the receive side, we process packets only\n // for loss/recovery calculations and forward the original\n // packet without changing it even in the error case.\n encodings.push({\n payload: frame,\n isRedundant: false,\n seq: primarySequenceNumber,\n });\n return encodings;\n }\n // This is a bad packet.\n return null;\n }\n\n let redundantPayloadOffset = totalHeaderSizeBytes;\n for (let i = 0; i < redundantEncodingTimestamps.length; i++) {\n const redundantPayloadBuffer = new ArrayBuffer(redundantEncodingBlockLengths[i]);\n const redundantPayloadArray = new Uint8Array(redundantPayloadBuffer);\n redundantPayloadArray.set(\n new Uint8Array(payload.buffer, redundantPayloadOffset, redundantEncodingBlockLengths[i]),\n 0\n );\n const encoding: RedundantAudioEncoder.Encoding = {\n timestamp: redundantEncodingTimestamps[i],\n payload: redundantPayloadBuffer,\n isRedundant: true,\n };\n if (getFecInfo) {\n encoding.hasFec = this.opusPacketHasFec(\n new DataView(redundantPayloadBuffer),\n redundantPayloadBuffer.byteLength\n );\n }\n encodings.push(encoding);\n redundantPayloadOffset += redundantEncodingBlockLengths[i];\n }\n\n const primaryPayloadOffset = payload.byteLength - primaryPayloadSizeBytes;\n const primaryPayloadBuffer = new ArrayBuffer(primaryPayloadSizeBytes);\n const primaryArray = new Uint8Array(primaryPayloadBuffer);\n primaryArray.set(\n new Uint8Array(payload.buffer, primaryPayloadOffset, primaryPayloadSizeBytes),\n 0\n );\n const encoding: RedundantAudioEncoder.Encoding = {\n timestamp: primaryTimestamp,\n payload: primaryPayloadBuffer,\n isRedundant: false,\n seq: primarySequenceNumber,\n };\n if (getFecInfo) {\n encoding.hasFec = this.opusPacketHasFec(\n new DataView(primaryPayloadBuffer),\n primaryPayloadBuffer.byteLength\n );\n }\n encodings.push(encoding);\n return encodings;\n }\n\n /**\n * Create a new encoding with current primary payload and the older payloads of choice.\n */\n private encode(primaryTimestamp: number, primaryPayload: ArrayBuffer): ArrayBuffer | null {\n const primaryPayloadSize = primaryPayload.byteLength;\n\n // Payload size needs to be valid.\n if (\n primaryPayloadSize === 0 ||\n primaryPayloadSize >= this.maxRedPacketSizeBytes ||\n primaryPayloadSize >= this.maxAudioPayloadSizeBytes\n ) {\n return null;\n }\n\n const numRedundantEncodings = this.numRedundantEncodings;\n let headerSizeBytes = this.redLastHeaderSizeBytes;\n let payloadSizeBytes = primaryPayloadSize;\n let bytesAvailable = this.maxAudioPayloadSizeBytes - primaryPayloadSize - headerSizeBytes;\n const redundantEncodingTimestamps: Array = new Array();\n const redundantEncodingPayloads: Array = new Array();\n\n // If redundancy is disabled then only send the primary payload\n if (this.redundancyEnabled) {\n // Determine how much redundancy we can fit into our packet\n let redundantTimestamp = this.uint32WrapAround(\n primaryTimestamp - this.redPacketizationTime * this.redPacketDistance\n );\n for (let i = 0; i < numRedundantEncodings; i++) {\n // Do not add redundant encodings that are beyond the maximum timestamp offset.\n if (\n this.uint32WrapAround(primaryTimestamp - redundantTimestamp) >= this.maxRedTimestampOffset\n ) {\n break;\n }\n\n let findTimestamp = redundantTimestamp;\n let encoding = this.encodingHistory.find(e => e.timestamp === findTimestamp);\n\n if (!encoding) {\n // If not found or not important then look for the previous packet.\n // The current packet may have included FEC for the previous, so just\n // use the previous packet instead provided that it has voice activity.\n findTimestamp = this.uint32WrapAround(redundantTimestamp - this.redPacketizationTime);\n encoding = this.encodingHistory.find(e => e.timestamp === findTimestamp);\n }\n\n if (encoding) {\n const redundantEncodingSizeBytes = encoding.payload.byteLength;\n\n // Only add redundancy if there are enough bytes available.\n if (bytesAvailable < this.redHeaderSizeBytes + redundantEncodingSizeBytes) break;\n\n bytesAvailable -= this.redHeaderSizeBytes + redundantEncodingSizeBytes;\n headerSizeBytes += this.redHeaderSizeBytes;\n payloadSizeBytes += redundantEncodingSizeBytes;\n redundantEncodingTimestamps.unshift(encoding.timestamp);\n redundantEncodingPayloads.unshift(encoding.payload);\n }\n redundantTimestamp -= this.redPacketizationTime * this.redPacketDistance;\n redundantTimestamp = this.uint32WrapAround(redundantTimestamp);\n }\n }\n\n const redPayloadBuffer = new ArrayBuffer(headerSizeBytes + payloadSizeBytes);\n const redPayloadView = new DataView(redPayloadBuffer);\n\n // Add redundant encoding header(s) to new buffer\n let redPayloadOffset = 0;\n for (let i = 0; i < redundantEncodingTimestamps.length; i++) {\n const timestampDelta = primaryTimestamp - redundantEncodingTimestamps[i];\n redPayloadView.setUint8(redPayloadOffset, this.opusPayloadType | 0x80);\n redPayloadView.setUint16(\n redPayloadOffset + 1,\n (timestampDelta << 2) | (redundantEncodingPayloads[i].byteLength >> 8)\n );\n redPayloadView.setUint8(redPayloadOffset + 3, redundantEncodingPayloads[i].byteLength & 0xff);\n redPayloadOffset += this.redHeaderSizeBytes;\n }\n\n // Add primary encoding header to new buffer\n redPayloadView.setUint8(redPayloadOffset, this.opusPayloadType);\n redPayloadOffset += this.redLastHeaderSizeBytes;\n\n // Add redundant payload(s) to new buffer\n const redPayloadArray = new Uint8Array(redPayloadBuffer);\n for (let i = 0; i < redundantEncodingPayloads.length; i++) {\n redPayloadArray.set(new Uint8Array(redundantEncodingPayloads[i]), redPayloadOffset);\n redPayloadOffset += redundantEncodingPayloads[i].byteLength;\n }\n\n // Add primary payload to new buffer\n redPayloadArray.set(new Uint8Array(primaryPayload), redPayloadOffset);\n redPayloadOffset += primaryPayload.byteLength;\n\n /* istanbul ignore next */\n // Sanity check that we got the expected total payload size.\n if (redPayloadOffset !== headerSizeBytes + payloadSizeBytes) return null;\n\n this.updateEncodingHistory(primaryTimestamp, primaryPayload);\n\n return redPayloadBuffer;\n }\n\n /**\n * Update the encoding history with the latest primary encoding\n */\n private updateEncodingHistory(primaryTimestamp: number, primaryPayload: ArrayBuffer): void {\n // Remove encodings from the history if they are too old.\n for (const encoding of this.encodingHistory) {\n const maxTimestampDelta = this.redPacketizationTime * this.redMaxRecoveryDistance;\n\n if (primaryTimestamp - encoding.timestamp >= maxTimestampDelta) {\n this.encodingHistory.shift();\n } else {\n break;\n }\n }\n\n // Only add an encoding to the history if the encoding is deemed to be important. An encoding is important if it is\n // a CELT-only packet or contains voice activity.\n const packet = new DataView(primaryPayload);\n if (\n this.opusPacketIsCeltOnly(packet) ||\n this.opusPacketHasVoiceActivity(packet, packet.byteLength) > 0\n ) {\n // Check if adding an encoding will cause the length of the encoding history to exceed the maximum history size.\n // This is not expected to happen but could occur if we get incorrect timestamps. We want to make sure our memory\n // usage is bounded. In this case, just clear the history and start over from empty.\n if (this.encodingHistory.length + 1 > this.maxEncodingHistorySize)\n this.encodingHistory.length = 0;\n\n this.encodingHistory.push({ timestamp: primaryTimestamp, payload: primaryPayload });\n }\n }\n\n // Keep track of timestamps of primary packets received\n // from the server\n private primaryPacketLog: RedundantAudioEncoder.PacketLog;\n\n // Keeps track of timestamps of payloads we recovered\n // through redundant payloads.\n private redRecoveryLog: RedundantAudioEncoder.PacketLog;\n\n // Keeps track of timestamps of payloads we recovered\n // through fec payloads.\n private fecRecoveryLog: RedundantAudioEncoder.PacketLog;\n\n // Most recent sequence number of a primary packet received\n // from the server\n private newestSequenceNumber: number;\n\n // Total number of packets we expected from the server.\n private totalAudioPacketsExpected: number;\n\n // Total number of packets from the server that were lost.\n private totalAudioPacketsLost: number;\n\n // Total number of packets we recovered by consuming\n // redundant payloads.\n private totalAudioPacketsRecoveredRed: number;\n\n // Total number of packets we recovered by consuming\n // payloads with FEC.\n private totalAudioPacketsRecoveredFec: number;\n\n // The timestamp at which we last reported loss stats\n // to the main thread.\n private lastLossReportTimestamp: number;\n\n // Loss stats are reported to the main thread every 5 seconds.\n // Since timestamp differences between 2 consecutive packets\n // give us the number of samples in each channel, 1 second\n // is equivalent to 48000 samples:\n // P-time * (1000ms/1s)\n // = (960 samples/20ms) * (1000ms/1s)\n // = 48000 samples/s\n private readonly lossReportInterval: number = 48000 * 5;\n\n // Maximum distance of a packet from the most recent packet timestamp\n // that we will consider for recovery.\n private readonly maxOutOfOrderPacketDistance = 16;\n\n /**\n * Initialize packet logs and metric values.\n */\n private initializePacketLogs(): void {\n // The extra space from the max RED recovery distance is to ensure that we do not incorrectly count recovery for\n // packets that have already been received but are outside of the max out-of-order distance.\n const packetLogSize = this.maxOutOfOrderPacketDistance + this.redMaxRecoveryDistance;\n\n this.primaryPacketLog = {\n window: new Array(packetLogSize),\n index: 0,\n windowSize: packetLogSize,\n };\n this.redRecoveryLog = {\n window: new Array(packetLogSize),\n index: 0,\n windowSize: packetLogSize,\n };\n this.fecRecoveryLog = {\n window: new Array(packetLogSize),\n index: 0,\n windowSize: packetLogSize,\n };\n this.totalAudioPacketsExpected = 0;\n this.totalAudioPacketsLost = 0;\n this.totalAudioPacketsRecoveredRed = 0;\n this.totalAudioPacketsRecoveredFec = 0;\n }\n\n /**\n * Receives encoded frames from the server\n * and adds the timestamps to a packet log\n * to calculate an approximate recovery metric.\n */\n private receivePacketLogTransform(\n // @ts-ignore\n frame: RTCEncodedAudioFrame,\n controller: TransformStreamDefaultController\n ): void {\n const frameMetadata = frame.getMetadata();\n // @ts-ignore\n if (frameMetadata.payloadType !== this.redPayloadType) {\n this.enqueueAudioFrameIfPayloadSizeIsValid(frame, controller);\n return;\n }\n // @ts-ignore\n const encodings = this.splitEncodings(\n frame.timestamp,\n frame.data,\n /*getFecInfo*/ true,\n frameMetadata.sequenceNumber\n );\n if (!encodings) {\n this.enqueueAudioFrameIfPayloadSizeIsValid(frame, controller);\n return;\n }\n for (let i = encodings.length - 1; i >= 0; i--) {\n if (this.updateLossStats(encodings[i])) {\n this.updateRedStats(encodings[i]);\n this.updateFecStats(encodings[i]);\n }\n }\n this.maybeReportLossStats(\n frameMetadata.synchronizationSource,\n encodings[encodings.length - 1].timestamp\n );\n this.enqueueAudioFrameIfPayloadSizeIsValid(frame, controller);\n }\n\n /**\n * Adds a timestamp to the primary packet log.\n * This also updates totalAudioPacketsLost and totalAudioPacketsExpected by looking\n * at the difference between timestamps.\n *\n * @param encoding : The encoding to be analyzed\n * @returns false if sequence number was greater than max out of order distance\n * true otherwise\n */\n private updateLossStats(encoding: RedundantAudioEncoder.Encoding): boolean {\n if (encoding.isRedundant) return true;\n\n const timestamp = encoding.timestamp;\n const seq = encoding.seq;\n\n if (this.totalAudioPacketsExpected === 0) {\n this.totalAudioPacketsExpected = 1;\n this.newestSequenceNumber = seq;\n this.addTimestamp(this.primaryPacketLog, timestamp);\n return true;\n }\n\n const diff = this.int16(seq - this.newestSequenceNumber);\n if (diff < -this.maxOutOfOrderPacketDistance) return false;\n\n if (diff < 0) {\n if (!this.hasTimestamp(this.primaryPacketLog, timestamp)) {\n if (this.totalAudioPacketsLost > 0) this.totalAudioPacketsLost--;\n this.addTimestamp(this.primaryPacketLog, timestamp);\n this.removeFromRecoveryWindows(timestamp);\n }\n } else if (diff > 1) {\n this.totalAudioPacketsLost += diff - 1;\n }\n\n if (diff > 0) {\n this.totalAudioPacketsExpected += diff;\n this.newestSequenceNumber = encoding.seq;\n this.addTimestamp(this.primaryPacketLog, timestamp);\n }\n return true;\n }\n\n /**\n * Adds a timestamp to the red recovery log if it is not present in\n * the primary packet log and if it's not too old.\n *\n * @param encoding : The encoding to be analyzed\n */\n private updateRedStats(encoding: RedundantAudioEncoder.Encoding): void {\n if (!encoding.isRedundant || this.totalAudioPacketsLost === 0) return;\n\n const timestamp = encoding.timestamp;\n\n if (!this.hasTimestamp(this.primaryPacketLog, timestamp)) {\n if (!this.hasTimestamp(this.redRecoveryLog, timestamp)) {\n this.totalAudioPacketsRecoveredRed++;\n this.addTimestamp(this.redRecoveryLog, timestamp);\n }\n if (this.removeTimestamp(this.fecRecoveryLog, timestamp)) {\n /* istanbul ignore else */\n if (this.totalAudioPacketsRecoveredFec > 0) this.totalAudioPacketsRecoveredFec--;\n }\n }\n }\n\n /**\n * Adds a timestamp to the fec recovery log if it is not present in\n * the primary packet log and red recovery log and if it is not too old.\n *\n * @param encoding : The encoding to be analyzed\n */\n private updateFecStats(encoding: RedundantAudioEncoder.Encoding): void {\n if (!encoding.hasFec || this.totalAudioPacketsLost === 0) return;\n\n const fecTimestamp = encoding.timestamp - this.redPacketizationTime;\n\n if (\n this.hasTimestamp(this.primaryPacketLog, fecTimestamp) ||\n this.hasTimestamp(this.redRecoveryLog, fecTimestamp) ||\n this.hasTimestamp(this.fecRecoveryLog, fecTimestamp)\n ) {\n return;\n }\n\n this.totalAudioPacketsRecoveredFec++;\n this.addTimestamp(this.fecRecoveryLog, fecTimestamp);\n }\n\n /**\n * Reports loss metrics to DefaultTransceiverController\n *\n * @param timestamp : Timestamp of most recent primary packet\n */\n private maybeReportLossStats(ssrc: number, timestamp?: number): void {\n if (\n timestamp === undefined ||\n timestamp - this.lastLossReportTimestamp < this.lossReportInterval\n )\n return;\n\n /* istanbul ignore next */\n if (RedundantAudioEncoder.shouldReportStats) {\n // @ts-ignore\n self.postMessage({\n type: 'RedundantAudioEncoderStats',\n ssrc,\n totalAudioPacketsLost: this.totalAudioPacketsLost,\n totalAudioPacketsExpected: this.totalAudioPacketsExpected,\n totalAudioPacketsRecoveredRed: this.totalAudioPacketsRecoveredRed,\n totalAudioPacketsRecoveredFec: this.totalAudioPacketsRecoveredFec,\n });\n }\n\n this.lastLossReportTimestamp = timestamp;\n }\n\n /**\n * Adds a timestamp to a packet log\n *\n * @param packetLog : The packetlog to add the timestamp to\n * @param timestamp : The timestamp that should be added\n */\n private addTimestamp(packetLog: RedundantAudioEncoder.PacketLog, timestamp?: number): void {\n if (timestamp === undefined) {\n return;\n }\n packetLog.window[packetLog.index] = timestamp;\n packetLog.index = (packetLog.index + 1) % packetLog.windowSize;\n }\n\n /**\n * Checks if a timestamp is in a packetlog\n *\n * @param packetLog : The packetlog to search\n * @param timestamp : The timestamp to search for\n * @returns true if timestamp is present, false otherwise\n */\n private hasTimestamp(packetLog: RedundantAudioEncoder.PacketLog, timestamp: number): boolean {\n const element = packetLog.window.find(t => t === timestamp);\n return !!element;\n }\n\n /**\n * Removes a timestamp from a packet log\n *\n * @param packetLog : The packetlog from which the timestamp should be removed\n * @param timestamp : The timestamp to be removed\n * @returns true if timestamp was present in the log and removed, false otherwise\n */\n private removeTimestamp(packetLog: RedundantAudioEncoder.PacketLog, timestamp: number): boolean {\n const index = packetLog.window.indexOf(timestamp);\n if (index >= 0) {\n packetLog.window[index] = undefined;\n return true;\n }\n return false;\n }\n\n /**\n * Removes a timestamp from red and fec recovery windows.\n *\n * @param timestamp : The timestamp to be removed\n */\n private removeFromRecoveryWindows(timestamp: number): void {\n let removed = this.removeTimestamp(this.redRecoveryLog, timestamp);\n if (removed) {\n if (this.totalAudioPacketsRecoveredRed > 0) this.totalAudioPacketsRecoveredRed--;\n }\n removed = this.removeTimestamp(this.fecRecoveryLog, timestamp);\n if (removed) {\n if (this.totalAudioPacketsRecoveredFec > 0) this.totalAudioPacketsRecoveredFec--;\n }\n }\n\n /**\n * Converts the supplied argument to 32-bit unsigned integer\n */\n private uint32WrapAround(num: number): number {\n const mod = 4294967296; // 2^32\n let res: number = num;\n if (num >= mod) {\n res = num - mod;\n } else if (num < 0) {\n res = mod + num;\n }\n return res;\n }\n\n /**\n * Converts the supplied argument to 16-bit signed integer\n */\n private int16(num: number): number {\n return (num << 16) >> 16;\n }\n\n /**\n * Below are Opus helper methods and constants.\n */\n\n private readonly OPUS_BAD_ARG = -1;\n private readonly OPUS_INVALID_PACKET = -4;\n\n // Max number of Opus frames in an Opus packet is 48 (https://www.rfc-editor.org/rfc/rfc6716#section-3.2.5).\n private readonly OPUS_MAX_OPUS_FRAMES = 48;\n\n // Max number of bytes that any individual Opus frame can have.\n private readonly OPUS_MAX_FRAME_SIZE_BYTES = 1275;\n\n /**\n * Determines if an Opus packet is in CELT-only mode.\n *\n * @param packet Opus packet.\n * @returns `true` if the packet is in CELT-only mode.\n */\n private opusPacketIsCeltOnly(packet: DataView): boolean {\n // TOC byte format (https://www.rfc-editor.org/rfc/rfc6716#section-3.1):\n // 0\n // 0 1 2 3 4 5 6 7\n // +-+-+-+-+-+-+-+-+\n // | config |s| c |\n // +-+-+-+-+-+-+-+-+\n\n // Since CELT-only packets are represented using configurations 16 to 31, the highest 'config' bit will always be 1\n // for CELT-only packets.\n return !!(packet.getUint8(0) & 0x80);\n }\n\n /**\n * Gets the number of samples per frame from an Opus packet.\n *\n * @param packet Opus packet. This must contain at least one byte of data.\n * @param sampleRateHz 32-bit integer sampling rate in Hz. This must be a multiple of 400 or inaccurate results will\n * be returned.\n * @returns Number of samples per frame.\n */\n private opusPacketGetSamplesPerFrame(packet: DataView, sampleRateHz: number): number {\n // Sample rate must be a 32-bit integer.\n sampleRateHz = Math.round(sampleRateHz);\n sampleRateHz = Math.min(Math.max(sampleRateHz, -(2 ** 32)), 2 ** 32 - 1);\n\n // TOC byte format (https://www.rfc-editor.org/rfc/rfc6716#section-3.1):\n // 0\n // 0 1 2 3 4 5 6 7\n // +-+-+-+-+-+-+-+-+\n // | config |s| c |\n // +-+-+-+-+-+-+-+-+\n\n let numSamples: number;\n let frameSizeOption: number;\n\n // Case for CELT-only packet.\n if (this.opusPacketIsCeltOnly(packet)) {\n // The lower 3 'config' bits indicate the frame size option.\n frameSizeOption = (packet.getUint8(0) >> 3) & 0x3;\n\n // The frame size options 0, 1, 2, 3 correspond to frame sizes of 2.5, 5, 10, 20 ms. Notice that the frame sizes\n // can be represented as (2.5 * 2^0), (2.5 * 2^1), (2.5 * 2^2), (2.5 * 2^3) ms. So, the number of samples can be\n // calculated as follows:\n // (sample/s) * (1s/1000ms) * (2.5ms) * 2^(frameSizeOption)\n // = (sample/s) * (1s/400) * 2^(frameSizeOption)\n // = (sample/s) * 2^(frameSizeOption) * (1s/400)\n numSamples = (sampleRateHz << frameSizeOption) / 400;\n }\n // Case for Hybrid packet. Since Hybrid packets are represented using configurations 12 to 15, bits 1 and 2 in the\n // above TOC byte diagram will both be 1.\n else if ((packet.getUint8(0) & 0x60) === 0x60) {\n // In the case of configuration 13 or 15, bit 4 in the above TOC byte diagram will be 1. Configurations 13 and 15\n // correspond to a 20ms frame size, so the number of samples is calculated as follows:\n // (sample/s) * (1s/1000ms) * (20ms)\n // = (sample/s) * (1s/50)\n //\n // In the case of configuration 12 or 14, bit 4 in the above TOC byte diagram will be 0. Configurations 12 and 14\n // correspond to a 10ms frame size, so the number of samples is calculated as follows:\n // (sample/s) * (1s/1000ms) * (10ms)\n // = (sample/s) * (1s/100)\n numSamples = packet.getUint8(0) & 0x08 ? sampleRateHz / 50 : sampleRateHz / 100;\n }\n // Case for SILK-only packet.\n else {\n // The lower 3 'config' bits indicate the frame size option for SILK-only packets.\n frameSizeOption = (packet.getUint8(0) >> 3) & 0x3;\n\n if (frameSizeOption === 3) {\n // Frame size option 3 corresponds to a frame size of 60ms, so the number of samples is calculated as follows:\n // (sample/s) * (1s/1000ms) * (60ms)\n // = (sample/s) * (60ms) * (1s/1000ms)\n numSamples = (sampleRateHz * 60) / 1000;\n } else {\n // The frame size options 0, 1, 2 correspond to frame sizes of 10, 20, 40 ms. Notice that the frame sizes can be\n // represented as (10 * 2^0), (10 * 2^1), (10 * 2^2) ms. So, the number of samples can be calculated as follows:\n // (sample/s) * (1s/1000ms) * (10ms) * 2^(frameSizeOption)\n // = (sample/s) * (1s/100) * 2^(frameSizeOption)\n // = (sample/s) * 2^(frameSizeOption) * (1s/100)\n numSamples = (sampleRateHz << frameSizeOption) / 100;\n }\n }\n\n return numSamples;\n }\n\n /**\n * Gets the number of SILK frames per Opus frame.\n *\n * @param packet Opus packet.\n * @returns Number of SILK frames per Opus frame.\n */\n private opusNumSilkFrames(packet: DataView): number {\n // For computing the frame length in ms, the sample rate is not important since it cancels out. We use 48 kHz, but\n // any valid sample rate would work.\n //\n // To calculate the length of a frame (with a 48kHz sample rate) in ms:\n // (samples/frame) * (1s/48000 samples) * (1000ms/s)\n // = (samples/frame) * (1000ms/48000 samples)\n // = (samples/frame) * (1ms/48 samples)\n let frameLengthMs = this.opusPacketGetSamplesPerFrame(packet, 48000) / 48;\n\n if (frameLengthMs < 10) frameLengthMs = 10;\n\n // The number of SILK frames per Opus frame is described in https://www.rfc-editor.org/rfc/rfc6716#section-4.2.2.\n switch (frameLengthMs) {\n case 10:\n case 20:\n return 1;\n case 40:\n return 2;\n case 60:\n return 3;\n // It is not possible to reach the default case since an Opus packet can only encode sizes of 2.5, 5, 10, 20, 40,\n // or 60 ms, so we ignore the default case for test coverage.\n /* istanbul ignore next */\n default:\n return 0;\n }\n }\n\n /**\n * Gets the number of channels from an Opus packet.\n *\n * @param packet Opus packet.\n * @returns Number of channels.\n */\n private opusPacketGetNumChannels(packet: DataView): number {\n // TOC byte format (https://www.rfc-editor.org/rfc/rfc6716#section-3.1):\n // 0\n // 0 1 2 3 4 5 6 7\n // +-+-+-+-+-+-+-+-+\n // | config |s| c |\n // +-+-+-+-+-+-+-+-+\n\n // The 's' bit indicates mono or stereo audio, with 0 indicating mono and 1 indicating stereo.\n return packet.getUint8(0) & 0x4 ? 2 : 1;\n }\n\n /**\n * Determine the size (in bytes) of an Opus frame.\n *\n * @param packet Opus packet.\n * @param byteOffset Offset (from the start of the packet) to the byte containing the size information.\n * @param remainingBytes Remaining number of bytes to parse from the Opus packet.\n * @param sizeBytes Variable to store the parsed frame size (in bytes).\n * @returns Number of bytes that were parsed to determine the frame size.\n */\n private opusParseSize(\n packet: DataView,\n byteOffset: number,\n remainingBytes: number,\n sizeBytes: [number]\n ): number {\n // See https://www.rfc-editor.org/rfc/rfc6716#section-3.2.1 for an explanation of how frame size is represented.\n\n // If there are no remaining bytes to parse the size from, then the size cannot be determined.\n if (remainingBytes < 1) {\n sizeBytes[0] = -1;\n return -1;\n }\n // If the first byte is in the range 0...251, then this value is the size of the frame.\n else if (packet.getUint8(byteOffset) < 252) {\n sizeBytes[0] = packet.getUint8(byteOffset);\n return 1;\n }\n // If the first byte is in the range 252...255, a second byte is needed. If there is no second byte, then the size\n // cannot be determined.\n else if (remainingBytes < 2) {\n sizeBytes[0] = -1;\n return -1;\n }\n // The total size of the frame given two size bytes is:\n // (4 * secondSizeByte) + firstSizeByte\n else {\n sizeBytes[0] = 4 * packet.getUint8(byteOffset + 1) + packet.getUint8(byteOffset);\n return 2;\n }\n }\n\n /**\n * Parse binary data containing an Opus packet into one or more Opus frames.\n *\n * @param data Binary data containing an Opus packet to be parsed. The data should begin with the first byte (i.e the\n * TOC byte) of an Opus packet. Note that the size of the data does not have to equal the size of the\n * contained Opus packet.\n * @param lenBytes Size of the data (in bytes).\n * @param selfDelimited Indicates if the Opus packet is self-delimiting\n * (https://www.rfc-editor.org/rfc/rfc6716#appendix-B).\n * @param tocByte Optional variable to store the TOC (table of contents) byte.\n * @param frameOffsets Optional variable to store the offsets (from the start of the data) to the first bytes of each\n * Opus frame.\n * @param frameSizes Required variable to store the sizes (in bytes) of each Opus frame.\n * @param payloadOffset Optional variable to store the offset (from the start of the data) to the first byte of the\n * payload.\n * @param packetLenBytes Optional variable to store the length of the Opus packet (in bytes).\n * @returns Number of Opus frames.\n */\n private opusPacketParseImpl(\n data: DataView,\n lenBytes: number,\n selfDelimited: boolean,\n tocByte: [number],\n frameOffsets: Array<[number]>,\n frameSizes: Array<[number]>,\n payloadOffset: [number],\n packetLenBytes: [number]\n ): number {\n if (!frameSizes || lenBytes < 0) return this.OPUS_BAD_ARG;\n if (lenBytes === 0) return this.OPUS_INVALID_PACKET;\n\n // The number of Opus frames in the packet.\n let numFrames: number;\n\n // Intermediate storage for the number of bytes parsed to determine the size of a frame.\n let numBytesParsed: number;\n\n // The number of the padding bytes (excluding the padding count bytes) in the packet.\n let paddingBytes = 0;\n\n // Indicates whether CBR (constant bitrate) framing is used.\n let cbr = false;\n\n // The TOC (table of contents) byte (https://www.rfc-editor.org/rfc/rfc6716#section-3.1).\n const toc = data.getUint8(0);\n\n // Store the TOC byte.\n if (tocByte) tocByte[0] = toc;\n\n // The remaining number of bytes to parse from the packet. Note that the TOC byte has already been parsed, hence the\n // minus 1.\n let remainingBytes = lenBytes - 1;\n\n // This keeps track of where we are in the packet. This starts at 1 since the TOC byte has already been read.\n let byteOffset = 1;\n\n // The size of the last Opus frame in bytes.\n let lastSizeBytes = remainingBytes;\n\n // Read the `c` bits (i.e. code bits) from the TOC byte.\n switch (toc & 0x3) {\n // A code 0 packet (https://www.rfc-editor.org/rfc/rfc6716#section-3.2.2) has one frame.\n case 0:\n numFrames = 1;\n break;\n // A code 1 packet (https://www.rfc-editor.org/rfc/rfc6716#section-3.2.3) has two CBR (constant bitrate) frames.\n case 1:\n numFrames = 2;\n cbr = true;\n\n if (!selfDelimited) {\n // Undelimited code 1 packets must be an even number of data bytes, otherwise the packet is invalid.\n if (remainingBytes & 0x1) return this.OPUS_INVALID_PACKET;\n\n // The sizes of both frames are equal (i.e. half of the number of data bytes).\n lastSizeBytes = remainingBytes / 2;\n\n // If `lastSizeBytes` is too large, we will catch it later.\n frameSizes[0][0] = lastSizeBytes;\n }\n break;\n // A code 2 packet (https://www.rfc-editor.org/rfc/rfc6716#section-3.2.4) has two VBR (variable bitrate) frames.\n case 2:\n numFrames = 2;\n\n numBytesParsed = this.opusParseSize(data, byteOffset, remainingBytes, frameSizes[0]);\n remainingBytes -= numBytesParsed;\n\n // The parsed size of the first frame cannot be larger than the number of remaining bytes in the packet.\n if (frameSizes[0][0] < 0 || frameSizes[0][0] > remainingBytes) {\n return this.OPUS_INVALID_PACKET;\n }\n\n byteOffset += numBytesParsed;\n\n // The size of the second frame is the remaining number of bytes after the first frame.\n lastSizeBytes = remainingBytes - frameSizes[0][0];\n break;\n // A code 3 packet (https://www.rfc-editor.org/rfc/rfc6716#section-3.2.5) has multiple CBR/VBR frames (from 0 to\n // 120 ms).\n default:\n // Code 3 packets must have at least 2 bytes (i.e. at least 1 byte after the TOC byte).\n if (remainingBytes < 1) return this.OPUS_INVALID_PACKET;\n\n // Frame count byte format:\n // 0\n // 0 1 2 3 4 5 6 7\n // +-+-+-+-+-+-+-+-+\n // |v|p| M |\n // +-+-+-+-+-+-+-+-+\n //\n // Read the frame count byte, which immediately follows the TOC byte.\n const frameCountByte = data.getUint8(byteOffset++);\n --remainingBytes;\n\n // Read the 'M' bits of the frame count byte, which encode the number of frames.\n numFrames = frameCountByte & 0x3f;\n\n // The number of frames in a code 3 packet must not be 0.\n if (numFrames <= 0) return this.OPUS_INVALID_PACKET;\n\n const samplesPerFrame = this.opusPacketGetSamplesPerFrame(data, 48000);\n\n // A single frame can have at most 2880 samples, which happens in the case where 60ms of 48kHz audio is encoded\n // per frame. A code 3 packet cannot contain more than 120ms of audio, so the total number of samples cannot\n // exceed 2880 * 2 = 5760.\n if (samplesPerFrame * numFrames > 5760) return this.OPUS_INVALID_PACKET;\n\n // Parse padding bytes if the 'p' bit is 1.\n if (frameCountByte & 0x40) {\n let paddingCountByte: number;\n let numPaddingBytes: number;\n\n // Remove padding bytes (including padding count bytes) from the remaining byte count.\n do {\n // Sanity check that there are enough bytes to parse and remove the padding.\n if (remainingBytes <= 0) return this.OPUS_INVALID_PACKET;\n\n // Get the next padding count byte.\n paddingCountByte = data.getUint8(byteOffset++);\n --remainingBytes;\n\n // If the padding count byte has a value in the range 0...254, then the total size of the padding is the\n // value in the padding count byte.\n //\n // If the padding count byte has value 255, then the total size of the padding is 254 plus the value in the\n // next padding count byte. Therefore, keep reading padding count bytes while the value is 255.\n numPaddingBytes = paddingCountByte === 255 ? 254 : paddingCountByte;\n remainingBytes -= numPaddingBytes;\n paddingBytes += numPaddingBytes;\n } while (paddingCountByte === 255);\n }\n\n // Sanity check that the remaining number of bytes is not negative after removing the padding.\n if (remainingBytes < 0) return this.OPUS_INVALID_PACKET;\n\n // Read the 'v' bit (i.e. VBR bit).\n cbr = !(frameCountByte & 0x80);\n\n // VBR case\n if (!cbr) {\n lastSizeBytes = remainingBytes;\n\n // Let M be the number of frames. There will be M - 1 frame length indicators (which can be 1 or 2 bytes)\n // corresponding to the lengths of frames 0 to M - 2. The size of the last frame (i.e. frame M - 1) is the\n // number of data bytes after the end of frame M - 2 and before the start of the padding bytes.\n for (let i = 0; i < numFrames - 1; ++i) {\n numBytesParsed = this.opusParseSize(data, byteOffset, remainingBytes, frameSizes[i]);\n remainingBytes -= numBytesParsed;\n\n // The remaining number of data bytes must be enough to contain each frame.\n if (frameSizes[i][0] < 0 || frameSizes[i][0] > remainingBytes) {\n return this.OPUS_INVALID_PACKET;\n }\n\n byteOffset += numBytesParsed;\n\n lastSizeBytes -= numBytesParsed + frameSizes[i][0];\n }\n\n // Sanity check that the size of the last frame is not negative.\n if (lastSizeBytes < 0) return this.OPUS_INVALID_PACKET;\n }\n // CBR case\n else if (!selfDelimited) {\n // The size of each frame is the number of data bytes divided by the number of frames.\n lastSizeBytes = Math.trunc(remainingBytes / numFrames);\n\n // The number of data bytes must be a non-negative integer multiple of the number of frames.\n if (lastSizeBytes * numFrames !== remainingBytes) return this.OPUS_INVALID_PACKET;\n\n // All frames have equal size in the undelimited CBR case.\n for (let i = 0; i < numFrames - 1; ++i) {\n frameSizes[i][0] = lastSizeBytes;\n }\n }\n }\n\n // Self-delimited framing uses an extra 1 or 2 bytes, immediately preceding the data bytes, to indicate either the\n // size of the last frame (for code 0, code 2, and VBR code 3 packets) or the size of all the frames (for code 1 and\n // CBR code 3 packets). See https://www.rfc-editor.org/rfc/rfc6716#appendix-B.\n if (selfDelimited) {\n // The extra frame size byte(s) will always indicate the size of the last frame.\n numBytesParsed = this.opusParseSize(\n data,\n byteOffset,\n remainingBytes,\n frameSizes[numFrames - 1]\n );\n remainingBytes -= numBytesParsed;\n\n // There must be enough data bytes for the last frame.\n if (frameSizes[numFrames - 1][0] < 0 || frameSizes[numFrames - 1][0] > remainingBytes) {\n return this.OPUS_INVALID_PACKET;\n }\n\n byteOffset += numBytesParsed;\n\n // For CBR packets, the sizes of all the frames are equal.\n if (cbr) {\n // There must be enough data bytes for all the frames.\n if (frameSizes[numFrames - 1][0] * numFrames > remainingBytes) {\n return this.OPUS_INVALID_PACKET;\n }\n\n for (let i = 0; i < numFrames - 1; ++i) {\n frameSizes[i][0] = frameSizes[numFrames - 1][0];\n }\n }\n // At this point, `lastSizeBytes` contains the size of the last frame plus the size of the extra frame size\n // byte(s), so sanity check that `lastSizeBytes` is the upper bound for the size of the last frame.\n else if (!(numBytesParsed + frameSizes[numFrames - 1][0] <= lastSizeBytes)) {\n return this.OPUS_INVALID_PACKET;\n }\n }\n // Undelimited case\n else {\n // Because the size of the last packet is not encoded explicitly, it is possible that the size of the last packet\n // (or of all the packets, for the CBR case) is larger than maximum frame size.\n if (lastSizeBytes > this.OPUS_MAX_FRAME_SIZE_BYTES) return this.OPUS_INVALID_PACKET;\n\n frameSizes[numFrames - 1][0] = lastSizeBytes;\n }\n\n // Store the offset to the start of the payload.\n if (payloadOffset) payloadOffset[0] = byteOffset;\n\n // Store the offsets to the start of each frame.\n for (let i = 0; i < numFrames; ++i) {\n if (frameOffsets) frameOffsets[i][0] = byteOffset;\n\n byteOffset += frameSizes[i][0];\n }\n\n // Store the length of the Opus packet.\n if (packetLenBytes) packetLenBytes[0] = byteOffset + paddingBytes;\n\n return numFrames;\n }\n\n /**\n * Parse a single undelimited Opus packet into one or more Opus frames.\n *\n * @param packet Opus packet to be parsed.\n * @param lenBytes Size of the packet (in bytes).\n * @param tocByte Optional variable to store the TOC (table of contents) byte.\n * @param frameOffsets Optional variable to store the offsets (from the start of the packet) to the first bytes of\n * each Opus frame.\n * @param frameSizes Required variable to store the sizes (in bytes) of each Opus frame.\n * @param payloadOffset Optional variable to store the offset (from the start of the packet) to the first byte of the\n * payload.\n * @returns Number of Opus frames.\n */\n private opusPacketParse(\n packet: DataView,\n lenBytes: number,\n tocByte: [number],\n frameOffsets: Array<[number]>,\n frameSizes: Array<[number]>,\n payloadOffset: [number]\n ): number {\n return this.opusPacketParseImpl(\n packet,\n lenBytes,\n /* selfDelimited */ false,\n tocByte,\n frameOffsets,\n frameSizes,\n payloadOffset,\n null\n );\n }\n\n /**\n * This function returns the SILK VAD (voice activity detection) information encoded in the Opus packet. For CELT-only\n * packets that do not have VAD information, it returns -1.\n *\n * @param packet Opus packet.\n * @param lenBytes Size of the packet (in bytes).\n * @returns 0: no frame had the VAD flag set.\n * 1: at least one frame had the VAD flag set.\n * -1: VAD status could not be determined.\n */\n private opusPacketHasVoiceActivity(packet: DataView, lenBytes: number): number {\n if (!packet || lenBytes <= 0) return 0;\n\n // In CELT-only mode, we can not determine whether there is VAD.\n if (this.opusPacketIsCeltOnly(packet)) return -1;\n\n const numSilkFrames = this.opusNumSilkFrames(packet);\n\n // It is not possible for `opusNumSilkFrames()` to return 0, so we ignore the next sanity check for test coverage.\n /* istanbul ignore next */\n if (numSilkFrames === 0) return -1;\n\n const opusFrameOffsets = new Array<[number]>(this.OPUS_MAX_OPUS_FRAMES);\n const opusFrameSizes = new Array<[number]>(this.OPUS_MAX_OPUS_FRAMES);\n for (let i = 0; i < this.OPUS_MAX_OPUS_FRAMES; ++i) {\n opusFrameOffsets[i] = [undefined];\n opusFrameSizes[i] = [undefined];\n }\n\n // Parse packet to get the Opus frames.\n const numOpusFrames = this.opusPacketParse(\n packet,\n lenBytes,\n null,\n opusFrameOffsets,\n opusFrameSizes,\n null\n );\n\n // VAD status cannot be determined for invalid packets.\n if (numOpusFrames < 0) return -1;\n\n // Iterate over all Opus frames, which may contain multiple SILK frames, to determine the VAD status.\n for (let i = 0; i < numOpusFrames; ++i) {\n if (opusFrameSizes[i][0] < 1) continue;\n\n // LP layer header bits format (https://www.rfc-editor.org/rfc/rfc6716#section-4.2.3):\n //\n // Mono case:\n // +-----------------+----------+\n // | 1 to 3 VAD bits | LBRR bit |\n // +-----------------+----------+\n //\n // Stereo case:\n // +---------------------+--------------+----------------------+---------------+\n // | 1 to 3 mid VAD bits | mid LBRR bit | 1 to 3 side VAD bits | side LBRR bit |\n // +---------------------+--------------+----------------------+---------------+\n\n // The upper 1 to 3 bits (dependent on the number of SILK frames) of the LP layer contain VAD bits. If any of\n // these VAD bits are 1, then voice activity is present.\n if (packet.getUint8(opusFrameOffsets[i][0]) >> (8 - numSilkFrames)) return 1;\n\n // In the stereo case, there is a second set of 1 to 3 VAD bits, so also check these VAD bits.\n const channels = this.opusPacketGetNumChannels(packet);\n if (\n channels === 2 &&\n (packet.getUint8(opusFrameOffsets[i][0]) << (numSilkFrames + 1)) >> (8 - numSilkFrames)\n ) {\n return 1;\n }\n }\n // No voice activity was detected.\n return 0;\n }\n\n /**\n * This method is based on Definition of the Opus Audio Codec\n * (https://tools.ietf.org/html/rfc6716). Basically, this method is based on\n * parsing the LP layer of an Opus packet, particularly the LBRR flag.\n *\n * @param packet Opus packet.\n * @param lenBytes Size of the packet (in bytes).\n * @returns true: packet has fec encoding about previous packet.\n * false: no fec encoding present.\n */\n private opusPacketHasFec(packet: DataView, lenBytes: number): boolean {\n if (!packet || lenBytes <= 0) return false;\n\n // In CELT-only mode, packets should not have FEC.\n if (this.opusPacketIsCeltOnly(packet)) return false;\n\n const opusFrameOffsets = new Array<[number]>(this.OPUS_MAX_OPUS_FRAMES);\n const opusFrameSizes = new Array<[number]>(this.OPUS_MAX_OPUS_FRAMES);\n for (let i = 0; i < this.OPUS_MAX_OPUS_FRAMES; ++i) {\n opusFrameOffsets[i] = [undefined];\n opusFrameSizes[i] = [undefined];\n }\n\n // Parse packet to get the Opus frames.\n const numOpusFrames = this.opusPacketParse(\n packet,\n lenBytes,\n null,\n opusFrameOffsets,\n opusFrameSizes,\n null\n );\n\n if (numOpusFrames < 0) return false;\n\n /* istanbul ignore next */\n if (opusFrameSizes[0][0] <= 1) return false;\n\n const numSilkFrames = this.opusNumSilkFrames(packet);\n /* istanbul ignore next */\n if (numSilkFrames === 0) return false;\n\n const channels = this.opusPacketGetNumChannels(packet);\n /* istanbul ignore next */\n if (channels !== 1 && channels !== 2) return false;\n\n // A frame starts with the LP layer. The LP layer begins with two to eight\n // header bits.These consist of one VAD bit per SILK frame (up to 3),\n // followed by a single flag indicating the presence of LBRR frames.\n // For a stereo packet, these first flags correspond to the mid channel, and\n // a second set of flags is included for the side channel. Because these are\n // the first symbols decoded by the range coder and because they are coded\n // as binary values with uniform probability, they can be extracted directly\n // from the most significant bits of the first byte of compressed data.\n for (let i = 0; i < channels; i++) {\n if (packet.getUint8(opusFrameOffsets[0][0]) & (0x80 >> ((i + 1) * (numSilkFrames + 1) - 1)))\n return true;\n }\n return false;\n }\n}\n\nnamespace RedundantAudioEncoder {\n export interface Encoding {\n timestamp?: number;\n seq?: number;\n payload: ArrayBuffer;\n isRedundant?: boolean;\n hasFec?: boolean;\n }\n\n export interface PacketLog {\n window: Array;\n index: number;\n windowSize: number;\n }\n}\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['iam'] = {};\nAWS.IAM = Service.defineService('iam', ['2010-05-08']);\nObject.defineProperty(apiLoader.services['iam'], '2010-05-08', {\n get: function get() {\n var model = require('../apis/iam-2010-05-08.min.json');\n model.paginators = require('../apis/iam-2010-05-08.paginators.json').pagination;\n model.waiters = require('../apis/iam-2010-05-08.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.IAM;\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nexport enum CheckAudioOutputFeedback {\n Succeeded,\n Failed,\n}\n\nexport default CheckAudioOutputFeedback;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['ses'] = {};\nAWS.SES = Service.defineService('ses', ['2010-12-01']);\nObject.defineProperty(apiLoader.services['ses'], '2010-12-01', {\n get: function get() {\n var model = require('../apis/email-2010-12-01.min.json');\n model.paginators = require('../apis/email-2010-12-01.paginators.json').pagination;\n model.waiters = require('../apis/email-2010-12-01.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.SES;\n","'use strict';\n\nvar bind = require('function-bind');\nvar $apply = require('./functionApply');\nvar actualApply = require('./actualApply');\n\n/** @type {import('./applyBind')} */\nmodule.exports = function applyBind() {\n\treturn actualApply(bind, $apply, arguments);\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toObject = require('../internals/to-object');\n\nvar hasOwnProperty = uncurryThis({}.hasOwnProperty);\n\n// `HasOwnProperty` abstract operation\n// https://tc39.es/ecma262/#sec-hasownproperty\n// eslint-disable-next-line es/no-object-hasown -- safe\nmodule.exports = Object.hasOwn || function hasOwn(it, key) {\n return hasOwnProperty(toObject(it), key);\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport Logger from '../logger/Logger';\nimport VideoFxConfig from './VideoFxConfig';\nimport { SEGMENTATION_MODEL } from './VideoFxConstants';\nimport { VideoFxStreamParameters } from './VideoFxStreamParameters';\n\n/**\n * [[VideoFxCanvasOpsManager]] Mechanism drives the canvas based operations\n * for the VideoFxProcessor. This includes input stream resizing to segmentation model\n * dimensions and managing the canvas loading for background replacement.\n */\nexport class VideoFxCanvasOpsManager {\n private logger: Logger;\n private streamParameters: VideoFxStreamParameters;\n private inferenceCanvas: HTMLCanvasElement;\n private inferenceCtx: CanvasRenderingContext2D;\n private outputCanvas: HTMLCanvasElement;\n private horizontalResizeScalar: number;\n private verticalResizeScalar: number;\n private backgroundReplacementCanvas: HTMLCanvasElement;\n private backgroundReplacementImage: HTMLImageElement;\n\n constructor(streamParameters: VideoFxStreamParameters, outputCanvas: HTMLCanvasElement) {\n this.streamParameters = streamParameters;\n this.outputCanvas = outputCanvas;\n this.configureCanvasPipeline();\n }\n\n /**\n * Generate the raw image data in a format that is directly importable into\n * the segmentation model\n * @param inputCanvas\n * @returns ImageData\n */\n getInferenceInputData(inputCanvas: HTMLCanvasElement): ImageData {\n // Resize our full resolution frame into a new canvas scaled to the\n // size of our segmentation model\n this.inferenceCtx.save();\n this.inferenceCtx.scale(this.horizontalResizeScalar, this.verticalResizeScalar);\n this.inferenceCtx.drawImage(inputCanvas, 0, 0);\n this.inferenceCtx.restore();\n // Now we can directly take image data that is the desired size of\n // of our segmentation model linput\n const inferenceInputData = this.inferenceCtx.getImageData(\n 0,\n 0,\n SEGMENTATION_MODEL.WIDTH_IN_PIXELS,\n SEGMENTATION_MODEL.HEIGHT_IN_PIXELS\n );\n return inferenceInputData;\n }\n\n /**\n * Reconfigure the canvas operations/pipeline to fit the dimensions of the new\n * video stream, and resize background replacement canvas.\n * @param streamParameters an VideoFxStreamParameters object specifying stream dimensions\n */\n async configureForStreamParameters(streamParameters: VideoFxStreamParameters): Promise {\n this.streamParameters = streamParameters;\n this.outputCanvas.width = this.streamParameters.width;\n this.outputCanvas.height = this.streamParameters.height;\n\n // Resize background replacement canvas -- if it exists\n if (this.backgroundReplacementCanvas) {\n const resizedCanvas = document.createElement('canvas');\n resizedCanvas.width = this.streamParameters.width;\n resizedCanvas.height = this.streamParameters.height;\n resizedCanvas\n .getContext('2d')\n .drawImage(\n this.backgroundReplacementCanvas,\n 0,\n 0,\n this.streamParameters.width,\n this.streamParameters.height\n );\n this.backgroundReplacementCanvas = resizedCanvas;\n }\n\n this.configureCanvasPipeline();\n }\n\n /**\n * Configure the inference canvas so that write operations to the canvas\n * result in an image resizing.\n */\n private configureCanvasPipeline(): void {\n // Create new inference canvas and context\n this.inferenceCanvas = document.createElement('canvas');\n this.inferenceCtx = this.inferenceCanvas.getContext('2d', {\n willReadFrequently: true,\n }) as CanvasRenderingContext2D;\n // Configure the resize operation, which will be utilized by calling scale\n // and then drawing any sized input to the canvas\n this.inferenceCanvas.width = SEGMENTATION_MODEL.WIDTH_IN_PIXELS;\n this.inferenceCanvas.height = SEGMENTATION_MODEL.HEIGHT_IN_PIXELS;\n this.horizontalResizeScalar = SEGMENTATION_MODEL.WIDTH_IN_PIXELS / this.streamParameters.width;\n this.verticalResizeScalar = SEGMENTATION_MODEL.HEIGHT_IN_PIXELS / this.streamParameters.height;\n }\n\n /**\n * Return the background replacement canvas\n * @returns HTMLCanvasElement\n */\n getBackgroundReplacementCanvas(): HTMLCanvasElement {\n return this.backgroundReplacementCanvas;\n }\n\n /**\n * Attempt to load custom replacement background image from URL, or the default background color.\n * The backgroundReplacementCanvas is then set from the loaded image.\n * @param effectConfig\n */\n async loadReplacementBackground(effectConfig: VideoFxConfig): Promise {\n const imageURL = effectConfig.backgroundReplacement.backgroundImageURL;\n const defaultColor = effectConfig.backgroundReplacement.defaultColor;\n if (imageURL) {\n try {\n const backgroundImage = await this.loadImage(imageURL);\n this.backgroundReplacementImage = backgroundImage;\n this.resizeAndSetReplacementImage(this.backgroundReplacementImage);\n } catch (error) /* istanbul ignore next */ {\n // The following can only happen due to an intermittent network issue.\n this.logger.error(error);\n throw new Error('Failed to set the replacement image.');\n }\n } else {\n this.resizeAndSetReplacementColor(defaultColor);\n }\n }\n\n /**\n * Draw loaded image on a canvas sized to the stream parameters, which is then set to the\n * backgroundReplacementCanvas member variable.\n * @param backgroundImage\n */\n private resizeAndSetReplacementImage(backgroundImage: HTMLImageElement): void {\n const resizedCanvas = document.createElement('canvas');\n const resizedCtx = resizedCanvas.getContext('2d');\n resizedCanvas.width = this.streamParameters.width;\n resizedCanvas.height = this.streamParameters.height;\n resizedCtx.drawImage(\n backgroundImage,\n 0,\n 0,\n this.streamParameters.width,\n this.streamParameters.height\n );\n this.backgroundReplacementCanvas = resizedCanvas;\n }\n\n /**\n * Fill default color on a canvas sized to the stream parameters, which is then set to the\n * backgroundReplacementCanvas member variable.\n * @param defaultColor\n */\n private resizeAndSetReplacementColor(defaultColor: string): void {\n const resizedCanvas = document.createElement('canvas');\n const resizedCtx = resizedCanvas.getContext('2d');\n resizedCanvas.width = this.streamParameters.width;\n resizedCanvas.height = this.streamParameters.height;\n resizedCtx.fillStyle = defaultColor;\n resizedCtx.fillRect(0, 0, this.streamParameters.width, this.streamParameters.height);\n this.backgroundReplacementCanvas = resizedCanvas;\n }\n\n /**\n * Attempt to load background image from URL.\n * @param backgroundImageURL\n * @returns Promise\n */\n async loadImage(backgroundImageURL: string): Promise {\n // Attempt to fetch the image\n const image = await fetch(backgroundImageURL).catch(error => {\n this.logger.error(error.toString());\n // Error returned in unit tests from mock fetch is non-compatible\n /* istanbul ignore next */\n throw new Error('Failed to fetch image.');\n });\n\n // Convert successful fetch into an HTMLImageElement\n const imageBlob = await image.blob();\n const img = new Image();\n img.src = URL.createObjectURL(imageBlob);\n return new Promise((resolve, reject) => {\n img.onload = () => {\n resolve(img);\n };\n img.onerror = error => {\n reject(error);\n };\n });\n }\n}\n","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n * @returns {Object} New object resulting from merging config2 to config1\n */\nmodule.exports = function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n var config = {};\n\n var valueFromConfig2Keys = ['url', 'method', 'data'];\n var mergeDeepPropertiesKeys = ['headers', 'auth', 'proxy', 'params'];\n var defaultToConfig2Keys = [\n 'baseURL', 'transformRequest', 'transformResponse', 'paramsSerializer',\n 'timeout', 'timeoutMessage', 'withCredentials', 'adapter', 'responseType', 'xsrfCookieName',\n 'xsrfHeaderName', 'onUploadProgress', 'onDownloadProgress', 'decompress',\n 'maxContentLength', 'maxBodyLength', 'maxRedirects', 'transport', 'httpAgent',\n 'httpsAgent', 'cancelToken', 'socketPath', 'responseEncoding'\n ];\n var directMergeKeys = ['validateStatus'];\n\n function getMergedValue(target, source) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge(target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n function mergeDeepProperties(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(config1[prop], config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n }\n\n utils.forEach(valueFromConfig2Keys, function valueFromConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(undefined, config2[prop]);\n }\n });\n\n utils.forEach(mergeDeepPropertiesKeys, mergeDeepProperties);\n\n utils.forEach(defaultToConfig2Keys, function defaultToConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(undefined, config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n });\n\n utils.forEach(directMergeKeys, function merge(prop) {\n if (prop in config2) {\n config[prop] = getMergedValue(config1[prop], config2[prop]);\n } else if (prop in config1) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n });\n\n var axiosKeys = valueFromConfig2Keys\n .concat(mergeDeepPropertiesKeys)\n .concat(defaultToConfig2Keys)\n .concat(directMergeKeys);\n\n var otherKeys = Object\n .keys(config1)\n .concat(Object.keys(config2))\n .filter(function filterAxiosKeys(key) {\n return axiosKeys.indexOf(key) === -1;\n });\n\n utils.forEach(otherKeys, mergeDeepProperties);\n\n return config;\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport DataMessage from '../datamessage/DataMessage';\nimport RealtimeAttendeePositionInFrame from './RealtimeAttendeePositionInFrame';\nimport RealtimeVolumeIndicator from './RealtimeVolumeIndicator';\nimport type VolumeIndicatorCallback from './VolumeIndicatorCallback';\n\n/**\n * [[RealtimeState]] stores all realtime persistent state.\n */\nexport default class RealtimeState {\n /**\n * Stores the attendee id of the current user\n */\n localAttendeeId: string | null = null;\n\n /**\n * Stores the external user id of the current user\n */\n localExternalUserId: string | null = null;\n\n /**\n * Callbacks to listen for attendee id changes\n */\n attendeeIdChangesCallbacks: ((\n attendeeId: string,\n present: boolean,\n externalUserId: string,\n dropped: boolean,\n posInFrame: RealtimeAttendeePositionInFrame | null\n ) => void)[] = [];\n\n /**\n * Stores whether the user can transition from muted to unmuted\n */\n canUnmute: boolean = true;\n\n /**\n * Callbacks to listen for changes to can-unmute local audio state\n */\n setCanUnmuteLocalAudioCallbacks: ((canUnmute: boolean) => void)[] = [];\n\n /**\n * Stores whether the user is presently muted\n */\n muted: boolean = false;\n\n /**\n * Callbacks to listen for local audio mutes and unmutes\n */\n muteAndUnmuteLocalAudioCallbacks: ((muted: boolean) => void)[] = [];\n\n /**\n * Stores per-attendee id volume indicator state\n */\n volumeIndicatorState: { [key: string]: RealtimeVolumeIndicator } = {};\n\n /**\n * Stores attendee id to external user id mappings\n */\n attendeeIdToExternalUserId: { [attendeeId: string]: string } = {};\n\n /**\n * Stores per-attendee id callbacks called when volume indicators change\n */\n volumeIndicatorCallbacks: {\n [key: string]: VolumeIndicatorCallback[];\n } = {};\n\n /**\n * Callbacks to listen for changes to local signal strength\n */\n localSignalStrengthChangeCallbacks: ((signalStrength: number) => void)[] = [];\n\n /**\n * Callbacks to listen for fatal errors\n */\n fatalErrorCallbacks: ((error: Error) => void)[] = [];\n\n /**\n * Callbacks to trigger when sending message\n */\n sendDataMessageCallbacks: ((\n topic: string, // eslint-disable-next-line @typescript-eslint/no-explicit-any\n data: Uint8Array | string | any,\n lifetimeMs?: number\n ) => void)[] = [];\n\n /**\n * Callbacks to listen for receiving message from data channel based on given topic\n */\n receiveDataMessageCallbacks: Map void)[]> = new Map();\n}\n","\"use strict\";\r\nmodule.exports = pool;\r\n\r\n/**\r\n * An allocator as used by {@link util.pool}.\r\n * @typedef PoolAllocator\r\n * @type {function}\r\n * @param {number} size Buffer size\r\n * @returns {Uint8Array} Buffer\r\n */\r\n\r\n/**\r\n * A slicer as used by {@link util.pool}.\r\n * @typedef PoolSlicer\r\n * @type {function}\r\n * @param {number} start Start offset\r\n * @param {number} end End offset\r\n * @returns {Uint8Array} Buffer slice\r\n * @this {Uint8Array}\r\n */\r\n\r\n/**\r\n * A general purpose buffer pool.\r\n * @memberof util\r\n * @function\r\n * @param {PoolAllocator} alloc Allocator\r\n * @param {PoolSlicer} slice Slicer\r\n * @param {number} [size=8192] Slab size\r\n * @returns {PoolAllocator} Pooled allocator\r\n */\r\nfunction pool(alloc, slice, size) {\r\n var SIZE = size || 8192;\r\n var MAX = SIZE >>> 1;\r\n var slab = null;\r\n var offset = SIZE;\r\n return function pool_alloc(size) {\r\n if (size < 1 || size > MAX)\r\n return alloc(size);\r\n if (offset + size > SIZE) {\r\n slab = alloc(SIZE);\r\n offset = 0;\r\n }\r\n var buf = slice.call(slab, offset, offset += size);\r\n if (offset & 7) // align to 32 bit\r\n offset = (offset | 7) + 1;\r\n return buf;\r\n };\r\n}\r\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport AudioNodeSubgraph from './AudioNodeSubgraph';\nimport Device from './Device';\n\n/**\n * A device that applies some transform to another device, returning a device and optional\n * `AudioNode` for use by the device controller.\n *\n * The results are applied by the device controller in two stages:\n *\n * 1. The transform device is used to retrieve the constraints that identify an inner media stream.\n * This will be managed by the controller.\n * 2. The transform device provides a Web Audio node that will be connected between the input and\n * the output of the device controller's audio graph. This is returned as a pair, `(start, end)`,\n * to allow an arbitrary subgraph of nodes to be returned.\n *\n * The application should call `stop` when the device will no longer be used. This method is\n * defined on this interface to establish that convention.\n */\nexport default interface AudioTransformDevice {\n /**\n * Called when `realtimeMuteLocalAudio` is called on the `RealtimeController`. Implement this\n * callback to avoid doing expensive processing when the audio output is disabled.\n */\n mute(muted: boolean): Promise;\n\n /**\n * `stop` should be called by the application to free any resources associated\n * with the device (e.g., workers).\n *\n * After this is called, the device should be discarded.\n */\n stop(): Promise;\n\n /**\n * Return the inner {@link Device} that the device controller should select as part\n * of the application of this `AudioTransformDevice`.\n */\n intrinsicDevice(): Promise;\n\n /**\n * Optionally return a pair of `AudioNode`s that should be connected to the applied inner\n * device. The two nodes can be the same, indicating the smallest possible subgraph.\n *\n * Each device can be used no more than once at a time in an audio graph. It is acceptable\n * to reuse audio nodes for successive calls to `createAudioNode`, so long as the context\n * does not differ.\n *\n * @param context The `AudioContext` to use when instantiating the nodes.\n */\n createAudioNode?(context: AudioContext): Promise;\n}\n\n/**\n * `isAudioTransformDevice` is a type guard for {@link AudioTransformDevice}.\n *\n * @param device the value to check.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any,@typescript-eslint/explicit-module-boundary-types\nexport function isAudioTransformDevice(device: any): device is AudioTransformDevice {\n return (\n !!device &&\n typeof device === 'object' &&\n 'mute' in device &&\n 'stop' in device &&\n 'intrinsicDevice' in device\n );\n}\n","'use strict';\n// https://tc39.github.io/proposal-setmap-offrom/\nvar bind = require('../internals/function-bind-context');\nvar anObject = require('../internals/an-object');\nvar toObject = require('../internals/to-object');\nvar iterate = require('../internals/iterate');\n\nmodule.exports = function (C, adder, ENTRY) {\n return function from(source /* , mapFn, thisArg */) {\n var O = toObject(source);\n var length = arguments.length;\n var mapFn = length > 1 ? arguments[1] : undefined;\n var mapping = mapFn !== undefined;\n var boundFunction = mapping ? bind(mapFn, length > 2 ? arguments[2] : undefined) : undefined;\n var result = new C();\n var n = 0;\n iterate(O, function (nextItem) {\n var entry = mapping ? boundFunction(nextItem, n++) : nextItem;\n if (ENTRY) adder(result, anObject(entry)[0], entry[1]);\n else adder(result, entry);\n });\n return result;\n };\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { VoiceFocusFetchBehavior, VoiceFocusPaths } from '../../libs/voicefocus/types';\nimport { Logger as VoiceFocusLogger } from '../../libs/voicefocus/types';\nimport type { NodeArguments } from '../../libs/voicefocus/voicefocus';\nimport { VoiceFocus } from '../../libs/voicefocus/voicefocus';\nimport type Device from '../devicecontroller/Device';\nimport Logger from '../logger/Logger';\nimport { isIFramed } from '../utils/Utils';\nimport Versioning from '../versioning/Versioning';\nimport type AssetSpec from './AssetSpec';\nimport LoggerAdapter from './LoggerAdapter';\nimport type VoiceFocusConfig from './VoiceFocusConfig';\nimport type VoiceFocusDeviceOptions from './VoiceFocusDeviceOptions';\nimport type VoiceFocusSpec from './VoiceFocusSpec';\nimport VoiceFocusTransformDevice from './VoiceFocusTransformDevice';\nimport VoiceFocusTransformDeviceDelegate from './VoiceFocusTransformDeviceDelegate';\n\n/**\n * `VoiceFocusDeviceTransformer` is used to create {@link VoiceFocusTransformDevice|transform devices}\n * that apply Amazon Voice Focus noise suppression to audio input.\n *\n * This transformer captures relevant configuration. You should check for support, initialize,\n * and then create a device as follows:\n *\n * ```typescript\n * const deviceID = null;\n *\n * // This check for support is cheap and quick, and should be used to gate use\n * // of this feature.\n * if (!(await VoiceFocusDeviceTransformer.isSupported()) {\n * console.log('Amazon Voice Focus not supported in this browser.');\n * return deviceID;\n * }\n *\n * let transformer: VoiceFocusDeviceTransformer;\n * try {\n * // This operation can fail in ways that do not indicate no support,\n * // but do indicate an inability to apply Amazon Voice Focus. Trying again\n * // might succeed.\n * transformer = await VoiceFocusDeviceTransformer.create({});\n * } catch (e) {\n * // Something went wrong.\n * console.log('Unable to instantiate Amazon Voice Focus.');\n * return deviceID;\n * }\n *\n * if (!transformer.isSupported()) {\n * // The transformer will fall through, but your UI might care.\n * console.log('Amazon Voice Focus not supported in this browser.');\n * }\n *\n * return await transformer.createTransformDevice(deviceID);\n * ```\n */\nexport class VoiceFocusDeviceTransformer {\n // The Voice Focus logger is a bit more sophisticated, allowing following args,\n // and allows drop-in use of {@link console}. We create an adapter to allow SDK loggers\n // to be used until they match.\n private logger: Logger;\n private vfLogger: VoiceFocusLogger;\n private preload: boolean;\n private vf: VoiceFocus;\n\n private configuration: Promise;\n private fetchBehavior: VoiceFocusFetchBehavior;\n private pendingVoiceFocus: Promise<[VoiceFocus, VoiceFocusTransformDeviceDelegate]>;\n private supported = true;\n\n /**\n * Quickly check whether Amazon Voice Focus is supported on this platform.\n *\n * This will return `false` if key technologies are absent. A value of `true` does not\n * necessarily mean that adding Amazon Voice Focus will succeed: it is still possible that the\n * configuration of the page or the CPU speed of the device are limiting factors.\n *\n * {@link VoiceFocusDeviceTransformer.create} will return an instance whose\n * `isSupported` method more accurately reflects whether Amazon Voice Focus\n * is supported in the current environment.\n *\n * This method will only reject if you provide invalid inputs.\n *\n * @param spec An optional asset group and URL paths to use when fetching. You can pass\n * a complete {@link VoiceFocusSpec} here for convenience, matching the signature of {@link VoiceFocusDeviceTransformer.create}.\n * @param options Additional named arguments, including `logger`. Set\n * `allowIFrame` to false to cause the support check to fail in\n * an iframe.\n * Chromium's security model means that audio processing works\n * poorly in iframes.\n */\n static isSupported(\n spec?: AssetSpec & { paths?: VoiceFocusPaths },\n options?: {\n logger?: Logger;\n allowIFrame?: boolean;\n }\n ): Promise {\n const fetchBehavior = VoiceFocusDeviceTransformer.defaultFetchBehavior();\n const logger = options?.logger ? new LoggerAdapter(options.logger) : undefined;\n const opts = {\n fetchBehavior,\n logger,\n };\n\n // This is impossible to test in Node, so Istanbul ignore.\n /* istanbul ignore next */\n if (isIFramed()) {\n if (options?.allowIFrame === false) {\n options?.logger?.error('Amazon Voice Focus support check inside iframe: not supported.');\n return Promise.resolve(false);\n } else {\n options?.logger?.warn('Amazon Voice Focus support check inside iframe: not recommended.');\n }\n }\n\n return VoiceFocus.isSupported(VoiceFocusDeviceTransformer.augmentSpec(spec), opts);\n }\n\n /**\n * Create a transformer that can apply Amazon Voice Focus noise suppression to a device.\n *\n * This method will reject if the provided spec is invalid, or if the process of\n * checking for support or estimating fails (e.g., because the network is unreachable).\n *\n * If Amazon Voice Focus is not supported on this device, this call will not reject and\n * `isSupported` will return `false` on the returned instance. That instance will\n * pass through devices unmodified.\n *\n * @param spec A definition of how you want Amazon Voice Focus to behave. See the declaration of\n * {@link VoiceFocusSpec} for details.\n * @param options Additional named arguments, including `logger` and `preload`.\n */\n static async create(\n spec: VoiceFocusSpec = {},\n options: VoiceFocusDeviceOptions = {},\n config?: VoiceFocusConfig,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n createMeetingResponse?: any,\n // eslint-disable-next-line\n createAttendeeResponse?: any\n ): Promise {\n if (createMeetingResponse) {\n if (createMeetingResponse.Meeting.Meeting) {\n createMeetingResponse = createMeetingResponse.Meeting;\n }\n }\n const meetingFeaturesAllowsES =\n createMeetingResponse?.Meeting?.MeetingFeatures?.Audio?.EchoReduction === 'AVAILABLE';\n const forbiddenConfig =\n config &&\n config.supported === true &&\n config.model.name === 'ns_es' &&\n !meetingFeaturesAllowsES;\n const forbiddenSpec = spec.name === 'ns_es' && !meetingFeaturesAllowsES;\n if (forbiddenConfig || forbiddenSpec) {\n throw new Error('Echo Reduction requested but not enabled.');\n }\n const transformer = new VoiceFocusDeviceTransformer(spec, options, config);\n\n // This also preps the first `VoiceFocus` instance.\n await transformer.init();\n return transformer;\n }\n\n /**\n * Given a spec and options, perform the configuration work that is\n * ordinarily performed during creation of a transformer.\n *\n * The computed configuration is not portable between devices or sessions,\n * but is useful for 'moving' transformers between windows.\n *\n * Pass the returned configuration as the third argument to a call to\n * {@link VoiceFocusDeviceTransformer.create} with the matching spec.\n */\n static async configure(\n spec: VoiceFocusSpec = {},\n options: VoiceFocusDeviceOptions = {}\n ): Promise {\n const transformer = new VoiceFocusDeviceTransformer(spec, options, undefined);\n return transformer.configure(true);\n }\n\n /**\n * Return the computed configuration for this transformer.\n */\n getConfiguration(): Promise {\n return this.configuration;\n }\n\n /**\n * Return whether this transformer is able to function in this environment.\n * If not, calls to\n * {@link VoiceFocusDeviceTransformer.createTransformDevice|createTransformDevice}\n * will pass through an unmodified device.\n */\n isSupported(): boolean {\n return this.supported;\n }\n\n /**\n * Apply Amazon Voice Focus to the selected {@link Device}.\n *\n * If this is a stream, it should be one that does not include other noise suppression features,\n * and you should consider whether to disable automatic gain control (AGC) on the stream, because\n * it can interact with noise suppression.\n *\n * @returns a device promise. This will always resolve to either a\n * {@link VoiceFocusTransformDevice} or undefined; it will never reject.\n */\n async createTransformDevice(\n device: Device,\n nodeOptions?: NodeArguments\n ): Promise {\n if (!this.supported) {\n // Fall back.\n return undefined;\n }\n\n try {\n const preload = true;\n const [vf, delegate] = await this.allocateVoiceFocus(preload);\n const options = { ...nodeOptions, es: this.spec.name === 'ns_es' };\n return new VoiceFocusTransformDevice(device, vf, delegate, options);\n } catch (e) {\n // Fall back.\n /* istanbul ignore next */\n return undefined;\n }\n }\n\n /**\n * Destroy the Voice Focus instance and worker thread associated with the transformer.\n */\n static async destroyVoiceFocus(transformer: VoiceFocusDeviceTransformer): Promise {\n /* istanbul ignore next */\n transformer?.vf?.destroy();\n }\n\n private constructor(\n private spec: VoiceFocusSpec,\n {\n preload = true,\n logger,\n fetchBehavior = VoiceFocusDeviceTransformer.defaultFetchBehavior(),\n }: VoiceFocusDeviceOptions,\n config: VoiceFocusConfig | undefined\n ) {\n this.logger = logger;\n this.vfLogger = logger ? new LoggerAdapter(logger) : undefined;\n this.preload = preload;\n this.fetchBehavior = fetchBehavior;\n\n // If the user didn't specify one, add the default, which is\n // identified by the major and minor SDK version.\n this.spec = VoiceFocusDeviceTransformer.augmentSpec(this.spec);\n\n if (config) {\n this.configuration = Promise.resolve(config);\n }\n }\n\n private static augmentSpec(spec: VoiceFocusSpec): VoiceFocusSpec {\n if (!spec || (!spec.assetGroup && !spec.revisionID)) {\n return {\n ...spec,\n assetGroup: VoiceFocusDeviceTransformer.currentSDKAssetGroup(),\n };\n }\n return spec;\n }\n\n private async configure(preResolve: boolean = false): Promise {\n const options = {\n fetchBehavior: this.fetchBehavior,\n preResolve,\n logger: this.vfLogger,\n };\n\n return VoiceFocus.configure(this.spec, options);\n }\n\n private async init(): Promise {\n if (!this.configuration) {\n this.configuration = this.configure();\n }\n\n const config = await this.configuration;\n if (!config.supported) {\n // No need to init: it won't work.\n this.supported = false;\n return;\n }\n\n // We initialize the first one right now, which makes it easier to detect\n // possible failures.\n // This can throw for malformed input. Pass that up the chain.\n this.pendingVoiceFocus = this.createVoiceFocus(config, this.preload);\n\n try {\n await this.pendingVoiceFocus;\n } catch (e) {\n this.logger?.error(`Unable to initialize Amazon Voice Focus: ${e}`);\n this.supported = false;\n }\n }\n\n private async createVoiceFocus(\n config: VoiceFocusConfig,\n preload: boolean\n ): Promise<[VoiceFocus, VoiceFocusTransformDeviceDelegate]> {\n const delegate = new VoiceFocusTransformDeviceDelegate();\n this.vf = await VoiceFocus.init(config, { delegate, preload, logger: this.vfLogger });\n return [this.vf, delegate];\n }\n\n private async allocateVoiceFocus(\n preload: boolean\n ): Promise<[VoiceFocus, VoiceFocusTransformDeviceDelegate]> {\n // A little safety.\n /* istanbul ignore next */\n if (!this.supported) {\n throw new Error('Not supported.');\n }\n\n if (this.pendingVoiceFocus) {\n // Use the one we already have, and free the slot for any future execution.\n const vf = this.pendingVoiceFocus;\n this.pendingVoiceFocus = undefined;\n return vf;\n }\n\n return this.createVoiceFocus(await this.configuration, preload);\n }\n\n private static majorVersion(): string {\n return Versioning.sdkVersion.match(/^[1-9][0-9]*\\.(?:0|[1-9][0-9]*)/)[0];\n }\n\n private static majorMinorVersion(): string {\n return Versioning.sdkVersion.match(/^[1-9][0-9]*\\.(?:0|(?:[1-9][0-9]*))\\.(?:0|[1-9][0-9]*)/)[0];\n }\n\n private static currentSDKAssetGroup(): string {\n // Just on the off chance someone does something silly, handle\n // malformed version strings here.\n const v = this.majorVersion();\n\n // Just a little safety.\n /* istanbul ignore next */\n if (!v) {\n return `stable-v1`;\n }\n\n return `sdk-${v}`;\n }\n\n // Note that we use query strings here, not headers, in order to make these requests 'simple' and\n // avoid the need for CORS preflights.\n // Be very, very careful if you choose to add headers here. You should never need to.\n private static defaultFetchBehavior(): VoiceFocusFetchBehavior {\n // Just a little safety.\n /* istanbul ignore next */\n const version = VoiceFocusDeviceTransformer.majorMinorVersion() || 'unknown';\n const ua = Versioning.sdkUserAgentLowResolution;\n return {\n escapedQueryString: `sdk=${encodeURIComponent(version)}&ua=${encodeURIComponent(ua)}`,\n };\n }\n}\n\nexport default VoiceFocusDeviceTransformer;\n","var AWS = require('./core');\nvar Api = require('./model/api');\nvar regionConfig = require('./region_config');\n\nvar inherit = AWS.util.inherit;\nvar clientCount = 0;\nvar region_utils = require('./region/utils');\n\n/**\n * The service class representing an AWS service.\n *\n * @class_abstract This class is an abstract class.\n *\n * @!attribute apiVersions\n * @return [Array] the list of API versions supported by this service.\n * @readonly\n */\nAWS.Service = inherit({\n /**\n * Create a new service object with a configuration object\n *\n * @param config [map] a map of configuration options\n */\n constructor: function Service(config) {\n if (!this.loadServiceClass) {\n throw AWS.util.error(new Error(),\n 'Service must be constructed with `new\\' operator');\n }\n\n if (config) {\n if (config.region) {\n var region = config.region;\n if (region_utils.isFipsRegion(region)) {\n config.region = region_utils.getRealRegion(region);\n config.useFipsEndpoint = true;\n }\n if (region_utils.isGlobalRegion(region)) {\n config.region = region_utils.getRealRegion(region);\n }\n }\n if (typeof config.useDualstack === 'boolean'\n && typeof config.useDualstackEndpoint !== 'boolean') {\n config.useDualstackEndpoint = config.useDualstack;\n }\n }\n\n var ServiceClass = this.loadServiceClass(config || {});\n if (ServiceClass) {\n var originalConfig = AWS.util.copy(config);\n var svc = new ServiceClass(config);\n Object.defineProperty(svc, '_originalConfig', {\n get: function() { return originalConfig; },\n enumerable: false,\n configurable: true\n });\n svc._clientId = ++clientCount;\n return svc;\n }\n this.initialize(config);\n },\n\n /**\n * @api private\n */\n initialize: function initialize(config) {\n var svcConfig = AWS.config[this.serviceIdentifier];\n this.config = new AWS.Config(AWS.config);\n if (svcConfig) this.config.update(svcConfig, true);\n if (config) this.config.update(config, true);\n\n this.validateService();\n if (!this.config.endpoint) regionConfig.configureEndpoint(this);\n\n this.config.endpoint = this.endpointFromTemplate(this.config.endpoint);\n this.setEndpoint(this.config.endpoint);\n //enable attaching listeners to service client\n AWS.SequentialExecutor.call(this);\n AWS.Service.addDefaultMonitoringListeners(this);\n if ((this.config.clientSideMonitoring || AWS.Service._clientSideMonitoring) && this.publisher) {\n var publisher = this.publisher;\n this.addNamedListener('PUBLISH_API_CALL', 'apiCall', function PUBLISH_API_CALL(event) {\n process.nextTick(function() {publisher.eventHandler(event);});\n });\n this.addNamedListener('PUBLISH_API_ATTEMPT', 'apiCallAttempt', function PUBLISH_API_ATTEMPT(event) {\n process.nextTick(function() {publisher.eventHandler(event);});\n });\n }\n },\n\n /**\n * @api private\n */\n validateService: function validateService() {\n },\n\n /**\n * @api private\n */\n loadServiceClass: function loadServiceClass(serviceConfig) {\n var config = serviceConfig;\n if (!AWS.util.isEmpty(this.api)) {\n return null;\n } else if (config.apiConfig) {\n return AWS.Service.defineServiceApi(this.constructor, config.apiConfig);\n } else if (!this.constructor.services) {\n return null;\n } else {\n config = new AWS.Config(AWS.config);\n config.update(serviceConfig, true);\n var version = config.apiVersions[this.constructor.serviceIdentifier];\n version = version || config.apiVersion;\n return this.getLatestServiceClass(version);\n }\n },\n\n /**\n * @api private\n */\n getLatestServiceClass: function getLatestServiceClass(version) {\n version = this.getLatestServiceVersion(version);\n if (this.constructor.services[version] === null) {\n AWS.Service.defineServiceApi(this.constructor, version);\n }\n\n return this.constructor.services[version];\n },\n\n /**\n * @api private\n */\n getLatestServiceVersion: function getLatestServiceVersion(version) {\n if (!this.constructor.services || this.constructor.services.length === 0) {\n throw new Error('No services defined on ' +\n this.constructor.serviceIdentifier);\n }\n\n if (!version) {\n version = 'latest';\n } else if (AWS.util.isType(version, Date)) {\n version = AWS.util.date.iso8601(version).split('T')[0];\n }\n\n if (Object.hasOwnProperty(this.constructor.services, version)) {\n return version;\n }\n\n var keys = Object.keys(this.constructor.services).sort();\n var selectedVersion = null;\n for (var i = keys.length - 1; i >= 0; i--) {\n // versions that end in \"*\" are not available on disk and can be\n // skipped, so do not choose these as selectedVersions\n if (keys[i][keys[i].length - 1] !== '*') {\n selectedVersion = keys[i];\n }\n if (keys[i].substr(0, 10) <= version) {\n return selectedVersion;\n }\n }\n\n throw new Error('Could not find ' + this.constructor.serviceIdentifier +\n ' API to satisfy version constraint `' + version + '\\'');\n },\n\n /**\n * @api private\n */\n api: {},\n\n /**\n * @api private\n */\n defaultRetryCount: 3,\n\n /**\n * @api private\n */\n customizeRequests: function customizeRequests(callback) {\n if (!callback) {\n this.customRequestHandler = null;\n } else if (typeof callback === 'function') {\n this.customRequestHandler = callback;\n } else {\n throw new Error('Invalid callback type \\'' + typeof callback + '\\' provided in customizeRequests');\n }\n },\n\n /**\n * Calls an operation on a service with the given input parameters.\n *\n * @param operation [String] the name of the operation to call on the service.\n * @param params [map] a map of input options for the operation\n * @callback callback function(err, data)\n * If a callback is supplied, it is called when a response is returned\n * from the service.\n * @param err [Error] the error object returned from the request.\n * Set to `null` if the request is successful.\n * @param data [Object] the de-serialized data returned from\n * the request. Set to `null` if a request error occurs.\n */\n makeRequest: function makeRequest(operation, params, callback) {\n if (typeof params === 'function') {\n callback = params;\n params = null;\n }\n\n params = params || {};\n if (this.config.params) { // copy only toplevel bound params\n var rules = this.api.operations[operation];\n if (rules) {\n params = AWS.util.copy(params);\n AWS.util.each(this.config.params, function(key, value) {\n if (rules.input.members[key]) {\n if (params[key] === undefined || params[key] === null) {\n params[key] = value;\n }\n }\n });\n }\n }\n\n var request = new AWS.Request(this, operation, params);\n this.addAllRequestListeners(request);\n this.attachMonitoringEmitter(request);\n if (callback) request.send(callback);\n return request;\n },\n\n /**\n * Calls an operation on a service with the given input parameters, without\n * any authentication data. This method is useful for \"public\" API operations.\n *\n * @param operation [String] the name of the operation to call on the service.\n * @param params [map] a map of input options for the operation\n * @callback callback function(err, data)\n * If a callback is supplied, it is called when a response is returned\n * from the service.\n * @param err [Error] the error object returned from the request.\n * Set to `null` if the request is successful.\n * @param data [Object] the de-serialized data returned from\n * the request. Set to `null` if a request error occurs.\n */\n makeUnauthenticatedRequest: function makeUnauthenticatedRequest(operation, params, callback) {\n if (typeof params === 'function') {\n callback = params;\n params = {};\n }\n\n var request = this.makeRequest(operation, params).toUnauthenticated();\n return callback ? request.send(callback) : request;\n },\n\n /**\n * Waits for a given state\n *\n * @param state [String] the state on the service to wait for\n * @param params [map] a map of parameters to pass with each request\n * @option params $waiter [map] a map of configuration options for the waiter\n * @option params $waiter.delay [Number] The number of seconds to wait between\n * requests\n * @option params $waiter.maxAttempts [Number] The maximum number of requests\n * to send while waiting\n * @callback callback function(err, data)\n * If a callback is supplied, it is called when a response is returned\n * from the service.\n * @param err [Error] the error object returned from the request.\n * Set to `null` if the request is successful.\n * @param data [Object] the de-serialized data returned from\n * the request. Set to `null` if a request error occurs.\n */\n waitFor: function waitFor(state, params, callback) {\n var waiter = new AWS.ResourceWaiter(this, state);\n return waiter.wait(params, callback);\n },\n\n /**\n * @api private\n */\n addAllRequestListeners: function addAllRequestListeners(request) {\n var list = [AWS.events, AWS.EventListeners.Core, this.serviceInterface(),\n AWS.EventListeners.CorePost];\n for (var i = 0; i < list.length; i++) {\n if (list[i]) request.addListeners(list[i]);\n }\n\n // disable parameter validation\n if (!this.config.paramValidation) {\n request.removeListener('validate',\n AWS.EventListeners.Core.VALIDATE_PARAMETERS);\n }\n\n if (this.config.logger) { // add logging events\n request.addListeners(AWS.EventListeners.Logger);\n }\n\n this.setupRequestListeners(request);\n // call prototype's customRequestHandler\n if (typeof this.constructor.prototype.customRequestHandler === 'function') {\n this.constructor.prototype.customRequestHandler(request);\n }\n // call instance's customRequestHandler\n if (Object.prototype.hasOwnProperty.call(this, 'customRequestHandler') && typeof this.customRequestHandler === 'function') {\n this.customRequestHandler(request);\n }\n },\n\n /**\n * Event recording metrics for a whole API call.\n * @returns {object} a subset of api call metrics\n * @api private\n */\n apiCallEvent: function apiCallEvent(request) {\n var api = request.service.api.operations[request.operation];\n var monitoringEvent = {\n Type: 'ApiCall',\n Api: api ? api.name : request.operation,\n Version: 1,\n Service: request.service.api.serviceId || request.service.api.endpointPrefix,\n Region: request.httpRequest.region,\n MaxRetriesExceeded: 0,\n UserAgent: request.httpRequest.getUserAgent(),\n };\n var response = request.response;\n if (response.httpResponse.statusCode) {\n monitoringEvent.FinalHttpStatusCode = response.httpResponse.statusCode;\n }\n if (response.error) {\n var error = response.error;\n var statusCode = response.httpResponse.statusCode;\n if (statusCode > 299) {\n if (error.code) monitoringEvent.FinalAwsException = error.code;\n if (error.message) monitoringEvent.FinalAwsExceptionMessage = error.message;\n } else {\n if (error.code || error.name) monitoringEvent.FinalSdkException = error.code || error.name;\n if (error.message) monitoringEvent.FinalSdkExceptionMessage = error.message;\n }\n }\n return monitoringEvent;\n },\n\n /**\n * Event recording metrics for an API call attempt.\n * @returns {object} a subset of api call attempt metrics\n * @api private\n */\n apiAttemptEvent: function apiAttemptEvent(request) {\n var api = request.service.api.operations[request.operation];\n var monitoringEvent = {\n Type: 'ApiCallAttempt',\n Api: api ? api.name : request.operation,\n Version: 1,\n Service: request.service.api.serviceId || request.service.api.endpointPrefix,\n Fqdn: request.httpRequest.endpoint.hostname,\n UserAgent: request.httpRequest.getUserAgent(),\n };\n var response = request.response;\n if (response.httpResponse.statusCode) {\n monitoringEvent.HttpStatusCode = response.httpResponse.statusCode;\n }\n if (\n !request._unAuthenticated &&\n request.service.config.credentials &&\n request.service.config.credentials.accessKeyId\n ) {\n monitoringEvent.AccessKey = request.service.config.credentials.accessKeyId;\n }\n if (!response.httpResponse.headers) return monitoringEvent;\n if (request.httpRequest.headers['x-amz-security-token']) {\n monitoringEvent.SessionToken = request.httpRequest.headers['x-amz-security-token'];\n }\n if (response.httpResponse.headers['x-amzn-requestid']) {\n monitoringEvent.XAmznRequestId = response.httpResponse.headers['x-amzn-requestid'];\n }\n if (response.httpResponse.headers['x-amz-request-id']) {\n monitoringEvent.XAmzRequestId = response.httpResponse.headers['x-amz-request-id'];\n }\n if (response.httpResponse.headers['x-amz-id-2']) {\n monitoringEvent.XAmzId2 = response.httpResponse.headers['x-amz-id-2'];\n }\n return monitoringEvent;\n },\n\n /**\n * Add metrics of failed request.\n * @api private\n */\n attemptFailEvent: function attemptFailEvent(request) {\n var monitoringEvent = this.apiAttemptEvent(request);\n var response = request.response;\n var error = response.error;\n if (response.httpResponse.statusCode > 299 ) {\n if (error.code) monitoringEvent.AwsException = error.code;\n if (error.message) monitoringEvent.AwsExceptionMessage = error.message;\n } else {\n if (error.code || error.name) monitoringEvent.SdkException = error.code || error.name;\n if (error.message) monitoringEvent.SdkExceptionMessage = error.message;\n }\n return monitoringEvent;\n },\n\n /**\n * Attach listeners to request object to fetch metrics of each request\n * and emit data object through \\'ApiCall\\' and \\'ApiCallAttempt\\' events.\n * @api private\n */\n attachMonitoringEmitter: function attachMonitoringEmitter(request) {\n var attemptTimestamp; //timestamp marking the beginning of a request attempt\n var attemptStartRealTime; //Start time of request attempt. Used to calculating attemptLatency\n var attemptLatency; //latency from request sent out to http response reaching SDK\n var callStartRealTime; //Start time of API call. Used to calculating API call latency\n var attemptCount = 0; //request.retryCount is not reliable here\n var region; //region cache region for each attempt since it can be updated in plase (e.g. s3)\n var callTimestamp; //timestamp when the request is created\n var self = this;\n var addToHead = true;\n\n request.on('validate', function () {\n callStartRealTime = AWS.util.realClock.now();\n callTimestamp = Date.now();\n }, addToHead);\n request.on('sign', function () {\n attemptStartRealTime = AWS.util.realClock.now();\n attemptTimestamp = Date.now();\n region = request.httpRequest.region;\n attemptCount++;\n }, addToHead);\n request.on('validateResponse', function() {\n attemptLatency = Math.round(AWS.util.realClock.now() - attemptStartRealTime);\n });\n request.addNamedListener('API_CALL_ATTEMPT', 'success', function API_CALL_ATTEMPT() {\n var apiAttemptEvent = self.apiAttemptEvent(request);\n apiAttemptEvent.Timestamp = attemptTimestamp;\n apiAttemptEvent.AttemptLatency = attemptLatency >= 0 ? attemptLatency : 0;\n apiAttemptEvent.Region = region;\n self.emit('apiCallAttempt', [apiAttemptEvent]);\n });\n request.addNamedListener('API_CALL_ATTEMPT_RETRY', 'retry', function API_CALL_ATTEMPT_RETRY() {\n var apiAttemptEvent = self.attemptFailEvent(request);\n apiAttemptEvent.Timestamp = attemptTimestamp;\n //attemptLatency may not be available if fail before response\n attemptLatency = attemptLatency ||\n Math.round(AWS.util.realClock.now() - attemptStartRealTime);\n apiAttemptEvent.AttemptLatency = attemptLatency >= 0 ? attemptLatency : 0;\n apiAttemptEvent.Region = region;\n self.emit('apiCallAttempt', [apiAttemptEvent]);\n });\n request.addNamedListener('API_CALL', 'complete', function API_CALL() {\n var apiCallEvent = self.apiCallEvent(request);\n apiCallEvent.AttemptCount = attemptCount;\n if (apiCallEvent.AttemptCount <= 0) return;\n apiCallEvent.Timestamp = callTimestamp;\n var latency = Math.round(AWS.util.realClock.now() - callStartRealTime);\n apiCallEvent.Latency = latency >= 0 ? latency : 0;\n var response = request.response;\n if (\n response.error &&\n response.error.retryable &&\n typeof response.retryCount === 'number' &&\n typeof response.maxRetries === 'number' &&\n (response.retryCount >= response.maxRetries)\n ) {\n apiCallEvent.MaxRetriesExceeded = 1;\n }\n self.emit('apiCall', [apiCallEvent]);\n });\n },\n\n /**\n * Override this method to setup any custom request listeners for each\n * new request to the service.\n *\n * @method_abstract This is an abstract method.\n */\n setupRequestListeners: function setupRequestListeners(request) {\n },\n\n /**\n * Gets the signing name for a given request\n * @api private\n */\n getSigningName: function getSigningName() {\n return this.api.signingName || this.api.endpointPrefix;\n },\n\n /**\n * Gets the signer class for a given request\n * @api private\n */\n getSignerClass: function getSignerClass(request) {\n var version;\n // get operation authtype if present\n var operation = null;\n var authtype = '';\n if (request) {\n var operations = request.service.api.operations || {};\n operation = operations[request.operation] || null;\n authtype = operation ? operation.authtype : '';\n }\n if (this.config.signatureVersion) {\n version = this.config.signatureVersion;\n } else if (authtype === 'v4' || authtype === 'v4-unsigned-body') {\n version = 'v4';\n } else if (authtype === 'bearer') {\n version = 'bearer';\n } else {\n version = this.api.signatureVersion;\n }\n return AWS.Signers.RequestSigner.getVersion(version);\n },\n\n /**\n * @api private\n */\n serviceInterface: function serviceInterface() {\n switch (this.api.protocol) {\n case 'ec2': return AWS.EventListeners.Query;\n case 'query': return AWS.EventListeners.Query;\n case 'json': return AWS.EventListeners.Json;\n case 'rest-json': return AWS.EventListeners.RestJson;\n case 'rest-xml': return AWS.EventListeners.RestXml;\n }\n if (this.api.protocol) {\n throw new Error('Invalid service `protocol\\' ' +\n this.api.protocol + ' in API config');\n }\n },\n\n /**\n * @api private\n */\n successfulResponse: function successfulResponse(resp) {\n return resp.httpResponse.statusCode < 300;\n },\n\n /**\n * How many times a failed request should be retried before giving up.\n * the defaultRetryCount can be overriden by service classes.\n *\n * @api private\n */\n numRetries: function numRetries() {\n if (this.config.maxRetries !== undefined) {\n return this.config.maxRetries;\n } else {\n return this.defaultRetryCount;\n }\n },\n\n /**\n * @api private\n */\n retryDelays: function retryDelays(retryCount, err) {\n return AWS.util.calculateRetryDelay(retryCount, this.config.retryDelayOptions, err);\n },\n\n /**\n * @api private\n */\n retryableError: function retryableError(error) {\n if (this.timeoutError(error)) return true;\n if (this.networkingError(error)) return true;\n if (this.expiredCredentialsError(error)) return true;\n if (this.throttledError(error)) return true;\n if (error.statusCode >= 500) return true;\n return false;\n },\n\n /**\n * @api private\n */\n networkingError: function networkingError(error) {\n return error.code === 'NetworkingError';\n },\n\n /**\n * @api private\n */\n timeoutError: function timeoutError(error) {\n return error.code === 'TimeoutError';\n },\n\n /**\n * @api private\n */\n expiredCredentialsError: function expiredCredentialsError(error) {\n // TODO : this only handles *one* of the expired credential codes\n return (error.code === 'ExpiredTokenException');\n },\n\n /**\n * @api private\n */\n clockSkewError: function clockSkewError(error) {\n switch (error.code) {\n case 'RequestTimeTooSkewed':\n case 'RequestExpired':\n case 'InvalidSignatureException':\n case 'SignatureDoesNotMatch':\n case 'AuthFailure':\n case 'RequestInTheFuture':\n return true;\n default: return false;\n }\n },\n\n /**\n * @api private\n */\n getSkewCorrectedDate: function getSkewCorrectedDate() {\n return new Date(Date.now() + this.config.systemClockOffset);\n },\n\n /**\n * @api private\n */\n applyClockOffset: function applyClockOffset(newServerTime) {\n if (newServerTime) {\n this.config.systemClockOffset = newServerTime - Date.now();\n }\n },\n\n /**\n * @api private\n */\n isClockSkewed: function isClockSkewed(newServerTime) {\n if (newServerTime) {\n return Math.abs(this.getSkewCorrectedDate().getTime() - newServerTime) >= 300000;\n }\n },\n\n /**\n * @api private\n */\n throttledError: function throttledError(error) {\n // this logic varies between services\n if (error.statusCode === 429) return true;\n switch (error.code) {\n case 'ProvisionedThroughputExceededException':\n case 'Throttling':\n case 'ThrottlingException':\n case 'RequestLimitExceeded':\n case 'RequestThrottled':\n case 'RequestThrottledException':\n case 'TooManyRequestsException':\n case 'TransactionInProgressException': //dynamodb\n case 'EC2ThrottledException':\n return true;\n default:\n return false;\n }\n },\n\n /**\n * @api private\n */\n endpointFromTemplate: function endpointFromTemplate(endpoint) {\n if (typeof endpoint !== 'string') return endpoint;\n\n var e = endpoint;\n e = e.replace(/\\{service\\}/g, this.api.endpointPrefix);\n e = e.replace(/\\{region\\}/g, this.config.region);\n e = e.replace(/\\{scheme\\}/g, this.config.sslEnabled ? 'https' : 'http');\n return e;\n },\n\n /**\n * @api private\n */\n setEndpoint: function setEndpoint(endpoint) {\n this.endpoint = new AWS.Endpoint(endpoint, this.config);\n },\n\n /**\n * @api private\n */\n paginationConfig: function paginationConfig(operation, throwException) {\n var paginator = this.api.operations[operation].paginator;\n if (!paginator) {\n if (throwException) {\n var e = new Error();\n throw AWS.util.error(e, 'No pagination configuration for ' + operation);\n }\n return null;\n }\n\n return paginator;\n }\n});\n\nAWS.util.update(AWS.Service, {\n\n /**\n * Adds one method for each operation described in the api configuration\n *\n * @api private\n */\n defineMethods: function defineMethods(svc) {\n AWS.util.each(svc.prototype.api.operations, function iterator(method) {\n if (svc.prototype[method]) return;\n var operation = svc.prototype.api.operations[method];\n if (operation.authtype === 'none') {\n svc.prototype[method] = function (params, callback) {\n return this.makeUnauthenticatedRequest(method, params, callback);\n };\n } else {\n svc.prototype[method] = function (params, callback) {\n return this.makeRequest(method, params, callback);\n };\n }\n });\n },\n\n /**\n * Defines a new Service class using a service identifier and list of versions\n * including an optional set of features (functions) to apply to the class\n * prototype.\n *\n * @param serviceIdentifier [String] the identifier for the service\n * @param versions [Array] a list of versions that work with this\n * service\n * @param features [Object] an object to attach to the prototype\n * @return [Class] the service class defined by this function.\n */\n defineService: function defineService(serviceIdentifier, versions, features) {\n AWS.Service._serviceMap[serviceIdentifier] = true;\n if (!Array.isArray(versions)) {\n features = versions;\n versions = [];\n }\n\n var svc = inherit(AWS.Service, features || {});\n\n if (typeof serviceIdentifier === 'string') {\n AWS.Service.addVersions(svc, versions);\n\n var identifier = svc.serviceIdentifier || serviceIdentifier;\n svc.serviceIdentifier = identifier;\n } else { // defineService called with an API\n svc.prototype.api = serviceIdentifier;\n AWS.Service.defineMethods(svc);\n }\n AWS.SequentialExecutor.call(this.prototype);\n //util.clientSideMonitoring is only available in node\n if (!this.prototype.publisher && AWS.util.clientSideMonitoring) {\n var Publisher = AWS.util.clientSideMonitoring.Publisher;\n var configProvider = AWS.util.clientSideMonitoring.configProvider;\n var publisherConfig = configProvider();\n this.prototype.publisher = new Publisher(publisherConfig);\n if (publisherConfig.enabled) {\n //if csm is enabled in environment, SDK should send all metrics\n AWS.Service._clientSideMonitoring = true;\n }\n }\n AWS.SequentialExecutor.call(svc.prototype);\n AWS.Service.addDefaultMonitoringListeners(svc.prototype);\n return svc;\n },\n\n /**\n * @api private\n */\n addVersions: function addVersions(svc, versions) {\n if (!Array.isArray(versions)) versions = [versions];\n\n svc.services = svc.services || {};\n for (var i = 0; i < versions.length; i++) {\n if (svc.services[versions[i]] === undefined) {\n svc.services[versions[i]] = null;\n }\n }\n\n svc.apiVersions = Object.keys(svc.services).sort();\n },\n\n /**\n * @api private\n */\n defineServiceApi: function defineServiceApi(superclass, version, apiConfig) {\n var svc = inherit(superclass, {\n serviceIdentifier: superclass.serviceIdentifier\n });\n\n function setApi(api) {\n if (api.isApi) {\n svc.prototype.api = api;\n } else {\n svc.prototype.api = new Api(api, {\n serviceIdentifier: superclass.serviceIdentifier\n });\n }\n }\n\n if (typeof version === 'string') {\n if (apiConfig) {\n setApi(apiConfig);\n } else {\n try {\n setApi(AWS.apiLoader(superclass.serviceIdentifier, version));\n } catch (err) {\n throw AWS.util.error(err, {\n message: 'Could not find API configuration ' +\n superclass.serviceIdentifier + '-' + version\n });\n }\n }\n if (!Object.prototype.hasOwnProperty.call(superclass.services, version)) {\n superclass.apiVersions = superclass.apiVersions.concat(version).sort();\n }\n superclass.services[version] = svc;\n } else {\n setApi(version);\n }\n\n AWS.Service.defineMethods(svc);\n return svc;\n },\n\n /**\n * @api private\n */\n hasService: function(identifier) {\n return Object.prototype.hasOwnProperty.call(AWS.Service._serviceMap, identifier);\n },\n\n /**\n * @param attachOn attach default monitoring listeners to object\n *\n * Each monitoring event should be emitted from service client to service constructor prototype and then\n * to global service prototype like bubbling up. These default monitoring events listener will transfer\n * the monitoring events to the upper layer.\n * @api private\n */\n addDefaultMonitoringListeners: function addDefaultMonitoringListeners(attachOn) {\n attachOn.addNamedListener('MONITOR_EVENTS_BUBBLE', 'apiCallAttempt', function EVENTS_BUBBLE(event) {\n var baseClass = Object.getPrototypeOf(attachOn);\n if (baseClass._events) baseClass.emit('apiCallAttempt', [event]);\n });\n attachOn.addNamedListener('CALL_EVENTS_BUBBLE', 'apiCall', function CALL_EVENTS_BUBBLE(event) {\n var baseClass = Object.getPrototypeOf(attachOn);\n if (baseClass._events) baseClass.emit('apiCall', [event]);\n });\n },\n\n /**\n * @api private\n */\n _serviceMap: {}\n});\n\nAWS.util.mixin(AWS.Service, AWS.SequentialExecutor);\n\n/**\n * @api private\n */\nmodule.exports = AWS.Service;\n","if performance? and performance.now\n module.exports = -> performance.now()\nelse if process? and process.hrtime\n module.exports = -> (getNanoSeconds() - nodeLoadTime) / 1e6\n hrtime = process.hrtime\n getNanoSeconds = ->\n hr = hrtime()\n hr[0] * 1e9 + hr[1]\n moduleLoadTime = getNanoSeconds()\n upTime = process.uptime() * 1e9\n nodeLoadTime = moduleLoadTime - upTime\nelse if Date.now\n module.exports = -> Date.now() - loadTime\n loadTime = Date.now()\nelse\n module.exports = -> new Date().getTime() - loadTime\n loadTime = new Date().getTime()\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\n\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst support_js_1 = require(\"./support.js\");\nconst types_js_1 = require(\"./types.js\");\nconst INDICES = {\n ready: 0,\n enabled: 1,\n};\nconst STATES = {\n disabled: 0,\n enabled: 1,\n stopped: 2,\n};\nclass VoiceFocusWorkerBufferNode extends types_js_1.VoiceFocusAudioWorkletNode {\n constructor(context, options) {\n super(context, options.processor, options);\n this.channelCountMode = 'explicit';\n this.channelCount = 1;\n const { modelURL, resamplerURL, worker, fetchBehavior, delegate, } = options;\n this.delegate = delegate;\n this.worker = worker;\n this.worker.onmessage = this.onWorkerMessage.bind(this);\n this.port.onmessage = this.onProcessorMessage.bind(this);\n const { enabled, supportFarendStream } = options.processorOptions;\n this.worker.postMessage({\n message: 'init',\n approach: 'sab',\n frames: context.sampleRate === 16000 ? 160 : 480,\n enabled,\n model: modelURL,\n supportFarendStream,\n });\n const message = support_js_1.supportsWASMPostMessage(globalThis) ? 'get-module' : 'get-module-buffer';\n this.worker.postMessage({\n message,\n key: 'resampler',\n fetchBehavior,\n path: resamplerURL,\n });\n }\n enable() {\n return __awaiter(this, void 0, void 0, function* () {\n if (this.state) {\n Atomics.store(this.state, INDICES.enabled, STATES.enabled);\n Atomics.notify(this.state, INDICES.ready, 1);\n }\n else {\n this.worker.postMessage({ message: 'enable' });\n }\n });\n }\n disable() {\n return __awaiter(this, void 0, void 0, function* () {\n if (this.state) {\n Atomics.store(this.state, INDICES.enabled, STATES.disabled);\n Atomics.notify(this.state, INDICES.ready, 1);\n }\n else {\n this.worker.postMessage({ message: 'disable' });\n }\n });\n }\n stop() {\n return __awaiter(this, void 0, void 0, function* () {\n if (this.state) {\n Atomics.store(this.state, INDICES.enabled, STATES.stopped);\n Atomics.notify(this.state, INDICES.ready, 1);\n }\n else {\n try {\n this.worker.postMessage({ message: 'stop' });\n }\n catch (e) {\n }\n }\n this.disconnect();\n });\n }\n onWorkerMessage(event) {\n var _a;\n const data = event.data;\n switch (data.message) {\n case 'ready':\n if (!data.shared) {\n throw new Error('No shared state.');\n }\n this.state = new Int32Array(data.shared.state);\n this.port.postMessage(data);\n break;\n case 'stopped':\n this.worker.terminate();\n break;\n case 'module-buffer':\n case 'module':\n this.port.postMessage(data);\n break;\n case 'cpu':\n (_a = this.delegate) === null || _a === void 0 ? void 0 : _a.onCPUWarning();\n break;\n case 'processing':\n this.port.postMessage(data);\n break;\n default:\n return;\n }\n }\n onProcessorMessage(event) {\n var _a;\n const data = event.data;\n switch (data.message) {\n case 'cpu':\n (_a = this.delegate) === null || _a === void 0 ? void 0 : _a.onCPUWarning();\n break;\n case 'prepare-for-frames':\n this.worker.postMessage(data);\n break;\n default:\n }\n }\n}\nexports.default = VoiceFocusWorkerBufferNode;\n","'use strict';\n\nvar forEach = require('for-each');\nvar availableTypedArrays = require('available-typed-arrays');\nvar callBind = require('call-bind');\nvar callBound = require('call-bound');\nvar gOPD = require('gopd');\nvar getProto = require('get-proto');\n\nvar $toString = callBound('Object.prototype.toString');\nvar hasToStringTag = require('has-tostringtag/shams')();\n\nvar g = typeof globalThis === 'undefined' ? global : globalThis;\nvar typedArrays = availableTypedArrays();\n\nvar $slice = callBound('String.prototype.slice');\n\n/** @type {(array: readonly T[], value: unknown) => number} */\nvar $indexOf = callBound('Array.prototype.indexOf', true) || function indexOf(array, value) {\n\tfor (var i = 0; i < array.length; i += 1) {\n\t\tif (array[i] === value) {\n\t\t\treturn i;\n\t\t}\n\t}\n\treturn -1;\n};\n\n/** @typedef {import('./types').Getter} Getter */\n/** @type {import('./types').Cache} */\nvar cache = { __proto__: null };\nif (hasToStringTag && gOPD && getProto) {\n\tforEach(typedArrays, function (typedArray) {\n\t\tvar arr = new g[typedArray]();\n\t\tif (Symbol.toStringTag in arr && getProto) {\n\t\t\tvar proto = getProto(arr);\n\t\t\t// @ts-expect-error TS won't narrow inside a closure\n\t\t\tvar descriptor = gOPD(proto, Symbol.toStringTag);\n\t\t\tif (!descriptor && proto) {\n\t\t\t\tvar superProto = getProto(proto);\n\t\t\t\t// @ts-expect-error TS won't narrow inside a closure\n\t\t\t\tdescriptor = gOPD(superProto, Symbol.toStringTag);\n\t\t\t}\n\t\t\t// @ts-expect-error TODO: fix\n\t\t\tcache['$' + typedArray] = callBind(descriptor.get);\n\t\t}\n\t});\n} else {\n\tforEach(typedArrays, function (typedArray) {\n\t\tvar arr = new g[typedArray]();\n\t\tvar fn = arr.slice || arr.set;\n\t\tif (fn) {\n\t\t\tcache[\n\t\t\t\t/** @type {`$${import('.').TypedArrayName}`} */ ('$' + typedArray)\n\t\t\t] = /** @type {import('./types').BoundSlice | import('./types').BoundSet} */ (\n\t\t\t\t// @ts-expect-error TODO FIXME\n\t\t\t\tcallBind(fn)\n\t\t\t);\n\t\t}\n\t});\n}\n\n/** @type {(value: object) => false | import('.').TypedArrayName} */\nvar tryTypedArrays = function tryAllTypedArrays(value) {\n\t/** @type {ReturnType} */ var found = false;\n\tforEach(\n\t\t/** @type {Record<`\\$${import('.').TypedArrayName}`, Getter>} */ (cache),\n\t\t/** @type {(getter: Getter, name: `\\$${import('.').TypedArrayName}`) => void} */\n\t\tfunction (getter, typedArray) {\n\t\t\tif (!found) {\n\t\t\t\ttry {\n\t\t\t\t\t// @ts-expect-error a throw is fine here\n\t\t\t\t\tif ('$' + getter(value) === typedArray) {\n\t\t\t\t\t\tfound = /** @type {import('.').TypedArrayName} */ ($slice(typedArray, 1));\n\t\t\t\t\t}\n\t\t\t\t} catch (e) { /**/ }\n\t\t\t}\n\t\t}\n\t);\n\treturn found;\n};\n\n/** @type {(value: object) => false | import('.').TypedArrayName} */\nvar trySlices = function tryAllSlices(value) {\n\t/** @type {ReturnType} */ var found = false;\n\tforEach(\n\t\t/** @type {Record<`\\$${import('.').TypedArrayName}`, Getter>} */(cache),\n\t\t/** @type {(getter: Getter, name: `\\$${import('.').TypedArrayName}`) => void} */ function (getter, name) {\n\t\t\tif (!found) {\n\t\t\t\ttry {\n\t\t\t\t\t// @ts-expect-error a throw is fine here\n\t\t\t\t\tgetter(value);\n\t\t\t\t\tfound = /** @type {import('.').TypedArrayName} */ ($slice(name, 1));\n\t\t\t\t} catch (e) { /**/ }\n\t\t\t}\n\t\t}\n\t);\n\treturn found;\n};\n\n/** @type {import('.')} */\nmodule.exports = function whichTypedArray(value) {\n\tif (!value || typeof value !== 'object') { return false; }\n\tif (!hasToStringTag) {\n\t\t/** @type {string} */\n\t\tvar tag = $slice($toString(value), 8, -1);\n\t\tif ($indexOf(typedArrays, tag) > -1) {\n\t\t\treturn tag;\n\t\t}\n\t\tif (tag !== 'Object') {\n\t\t\treturn false;\n\t\t}\n\t\t// node < 0.6 hits here on real Typed Arrays\n\t\treturn trySlices(value);\n\t}\n\tif (!gOPD) { return null; } // unknown engine\n\treturn tryTypedArrays(value);\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport DefaultBrowserBehavior from '../browserbehavior/DefaultBrowserBehavior';\nimport DefaultDeviceController from '../devicecontroller/DefaultDeviceController';\nimport Logger from '../logger/Logger';\nimport MediaStreamBroker from '../mediastreambroker/MediaStreamBroker';\nimport MediaStreamBrokerObserver from '../mediastreambrokerobserver/MediaStreamBrokerObserver';\n\nexport default class ContentShareMediaStreamBroker implements MediaStreamBroker {\n private static defaultFrameRate = 15;\n private _mediaStream: MediaStream;\n\n constructor(private logger: Logger) {}\n\n get mediaStream(): MediaStream {\n return this._mediaStream;\n }\n\n set mediaStream(mediaStream: MediaStream) {\n this._mediaStream = mediaStream;\n }\n\n async acquireAudioInputStream(): Promise {\n if (this._mediaStream.getAudioTracks().length === 0) {\n this.logger.info('No audio stream available. Synthesizing an audio stream.');\n return DefaultDeviceController.synthesizeAudioDevice(0) as MediaStream;\n }\n return this._mediaStream;\n }\n\n async acquireVideoInputStream(): Promise {\n return this._mediaStream;\n }\n\n async acquireDisplayInputStream(streamConstraints: MediaStreamConstraints): Promise {\n if (\n streamConstraints &&\n streamConstraints.video &&\n // @ts-ignore\n streamConstraints.video.mandatory &&\n // @ts-ignore\n streamConstraints.video.mandatory.chromeMediaSource &&\n // @ts-ignore\n streamConstraints.video.mandatory.chromeMediaSourceId\n ) {\n return navigator.mediaDevices.getUserMedia(streamConstraints);\n }\n // @ts-ignore https://github.com/microsoft/TypeScript/issues/31821\n return navigator.mediaDevices.getDisplayMedia(streamConstraints);\n }\n\n async acquireScreenCaptureDisplayInputStream(\n sourceId?: string,\n frameRate?: number\n ): Promise {\n return this.acquireDisplayInputStream(\n this.screenCaptureDisplayMediaConstraints(sourceId, frameRate)\n );\n }\n\n private screenCaptureDisplayMediaConstraints(\n sourceId?: string,\n frameRate?: number\n ): MediaStreamConstraints {\n return {\n audio:\n !sourceId && new DefaultBrowserBehavior().getDisplayMediaAudioCaptureSupport()\n ? true\n : false,\n video: {\n ...(!sourceId && {\n frameRate: {\n max: frameRate ? frameRate : ContentShareMediaStreamBroker.defaultFrameRate,\n },\n }),\n ...(sourceId && {\n mandatory: {\n chromeMediaSource: 'desktop',\n chromeMediaSourceId: sourceId,\n maxFrameRate: frameRate ? frameRate : ContentShareMediaStreamBroker.defaultFrameRate,\n },\n }),\n },\n };\n }\n\n toggleMediaStream(enable: boolean): boolean {\n let changed = false;\n if (this.mediaStream) {\n for (let i = 0; i < this.mediaStream.getTracks().length; i++) {\n if (this.mediaStream.getTracks()[i].enabled !== enable) {\n this.mediaStream.getTracks()[i].enabled = enable;\n changed = true;\n }\n }\n }\n return changed;\n }\n\n cleanup(): void {\n if (this.mediaStream) {\n for (let i = 0; i < this.mediaStream.getTracks().length; i++) {\n const track = this.mediaStream.getTracks()[i];\n track.stop();\n }\n }\n this.mediaStream = null;\n }\n\n muteLocalAudioInputStream(): void {\n throw new Error('unsupported');\n }\n\n unmuteLocalAudioInputStream(): void {\n throw new Error('unsupported');\n }\n\n addMediaStreamBrokerObserver(_observer: MediaStreamBrokerObserver): void {}\n\n removeMediaStreamBrokerObserver(_observer: MediaStreamBrokerObserver): void {}\n}\n","var util = require('../util');\nvar property = util.property;\n\nfunction ResourceWaiter(name, waiter, options) {\n options = options || {};\n property(this, 'name', name);\n property(this, 'api', options.api, false);\n\n if (waiter.operation) {\n property(this, 'operation', util.string.lowerFirst(waiter.operation));\n }\n\n var self = this;\n var keys = [\n 'type',\n 'description',\n 'delay',\n 'maxAttempts',\n 'acceptors'\n ];\n\n keys.forEach(function(key) {\n var value = waiter[key];\n if (value) {\n property(self, key, value);\n }\n });\n}\n\n/**\n * @api private\n */\nmodule.exports = ResourceWaiter;\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nexport enum ClientMetricReportMediaType {\n AUDIO,\n VIDEO,\n}\n\nexport default ClientMetricReportMediaType;\n","var map = {\n\t\"./AR-Black.png\": [\n\t\t99475,\n\t\t1,\n\t\t9475\n\t],\n\t\"./AR-white.png\": [\n\t\t78045,\n\t\t1\n\t],\n\t\"./Ar-blue.png\": [\n\t\t93832,\n\t\t1,\n\t\t3832\n\t],\n\t\"./Bosch-Supergraphic.png\": [\n\t\t17,\n\t\t1,\n\t\t17\n\t],\n\t\"./Bosch-Supergraphic_.png\": [\n\t\t89474,\n\t\t1\n\t],\n\t\"./Bosch_DigitalLogo_BlackAnchor_144x96px.png\": [\n\t\t6435,\n\t\t1\n\t],\n\t\"./Homepage.jpg\": [\n\t\t49012,\n\t\t1,\n\t\t9012\n\t],\n\t\"./Picture1.png\": [\n\t\t33431,\n\t\t1,\n\t\t3431\n\t],\n\t\"./Picture2.png\": [\n\t\t25852,\n\t\t1,\n\t\t5852\n\t],\n\t\"./Picture3.png\": [\n\t\t61765,\n\t\t1,\n\t\t1765\n\t],\n\t\"./Picture4.png\": [\n\t\t91338,\n\t\t1,\n\t\t1338\n\t],\n\t\"./TR_Bild_Bosch_Visual_Connect_A.png\": [\n\t\t86606,\n\t\t1,\n\t\t6606\n\t],\n\t\"./css/semantic-bosch/_theme.css\": [\n\t\t54578,\n\t\t9,\n\t\t4578\n\t],\n\t\"./css/semantic-bosch/button.css\": [\n\t\t53432,\n\t\t9,\n\t\t3432\n\t],\n\t\"./css/semantic-bosch/checkbox.css\": [\n\t\t25947,\n\t\t9,\n\t\t5947\n\t],\n\t\"./css/semantic-bosch/dropdown.css\": [\n\t\t40283,\n\t\t9,\n\t\t283\n\t],\n\t\"./css/semantic-bosch/form.css\": [\n\t\t82306,\n\t\t9,\n\t\t2306\n\t],\n\t\"./css/semantic-bosch/input.css\": [\n\t\t86118,\n\t\t9,\n\t\t6118\n\t],\n\t\"./css/semantic-bosch/modal.css\": [\n\t\t51157,\n\t\t9,\n\t\t1157\n\t],\n\t\"./css/semantic-bosch/tab.css\": [\n\t\t72831,\n\t\t9,\n\t\t2831\n\t],\n\t\"./css/semantic-bosch/text-area.css\": [\n\t\t68387,\n\t\t9,\n\t\t8387\n\t],\n\t\"./default-img.jpg\": [\n\t\t84927,\n\t\t1\n\t],\n\t\"./fonts/Bosch-Icon.eot\": [\n\t\t81048,\n\t\t1,\n\t\t1048\n\t],\n\t\"./fonts/Bosch-Icon.svg\": [\n\t\t7062,\n\t\t1,\n\t\t7062\n\t],\n\t\"./fonts/Bosch-Icon.ttf\": [\n\t\t55490,\n\t\t1,\n\t\t5490\n\t],\n\t\"./fonts/Bosch-Icon.woff\": [\n\t\t87346,\n\t\t1,\n\t\t7346\n\t],\n\t\"./fonts/Bosch-Icon.woff2\": [\n\t\t59815,\n\t\t1,\n\t\t2196\n\t],\n\t\"./semantic-bosch/_theme.css\": [\n\t\t36106,\n\t\t9,\n\t\t6106\n\t],\n\t\"./semantic-bosch/button.css\": [\n\t\t22176,\n\t\t9,\n\t\t2176\n\t],\n\t\"./semantic-bosch/checkbox.css\": [\n\t\t82979,\n\t\t9,\n\t\t2979\n\t],\n\t\"./semantic-bosch/dropdown.css\": [\n\t\t44915,\n\t\t9,\n\t\t4915\n\t],\n\t\"./semantic-bosch/form.css\": [\n\t\t98058,\n\t\t9,\n\t\t8058\n\t],\n\t\"./semantic-bosch/input.css\": [\n\t\t97118,\n\t\t9,\n\t\t7118\n\t],\n\t\"./semantic-bosch/modal.css\": [\n\t\t54877,\n\t\t9,\n\t\t4877\n\t],\n\t\"./semantic-bosch/tab.css\": [\n\t\t48919,\n\t\t9,\n\t\t8919\n\t],\n\t\"./semantic-bosch/text-area.css\": [\n\t\t10363,\n\t\t9,\n\t\t363\n\t],\n\t\"./svg/abort-frame.svg\": [\n\t\t69539,\n\t\t1,\n\t\t9539\n\t],\n\t\"./svg/binary.svg\": [\n\t\t17100,\n\t\t1,\n\t\t7100\n\t],\n\t\"./svg/call.svg\": [\n\t\t50259,\n\t\t1,\n\t\t259\n\t],\n\t\"./svg/call_black.svg\": [\n\t\t27927,\n\t\t1,\n\t\t7927\n\t],\n\t\"./svg/chat-language.svg\": [\n\t\t89200,\n\t\t1,\n\t\t9200\n\t],\n\t\"./svg/chat-remove.svg\": [\n\t\t12866,\n\t\t1,\n\t\t2866\n\t],\n\t\"./svg/checkmark-frame.svg\": [\n\t\t39226,\n\t\t1,\n\t\t9226\n\t],\n\t\"./svg/close.svg\": [\n\t\t91825,\n\t\t1,\n\t\t1825\n\t],\n\t\"./svg/desktop.svg\": [\n\t\t88289,\n\t\t1,\n\t\t8289\n\t],\n\t\"./svg/document-plain.svg\": [\n\t\t90247,\n\t\t1,\n\t\t247\n\t],\n\t\"./svg/emoji-happy.svg\": [\n\t\t75098,\n\t\t1,\n\t\t5098\n\t],\n\t\"./svg/flash-off.svg\": [\n\t\t95131,\n\t\t1,\n\t\t5131\n\t],\n\t\"./svg/flash.svg\": [\n\t\t86963,\n\t\t1,\n\t\t6963\n\t],\n\t\"./svg/languagePopup.svg\": [\n\t\t62081,\n\t\t1,\n\t\t2081\n\t],\n\t\"./svg/lightbulb-halogen-cracked-disabled-light.svg\": [\n\t\t94829,\n\t\t1,\n\t\t4829\n\t],\n\t\"./svg/livechat.svg\": [\n\t\t1883,\n\t\t1,\n\t\t1883\n\t],\n\t\"./svg/mail.svg\": [\n\t\t43930,\n\t\t1,\n\t\t3930\n\t],\n\t\"./svg/my-brand-frame.svg\": [\n\t\t35709,\n\t\t1,\n\t\t5709\n\t],\n\t\"./svg/notification-active.svg\": [\n\t\t23857,\n\t\t1,\n\t\t3857\n\t],\n\t\"./svg/notification.svg\": [\n\t\t71250,\n\t\t1,\n\t\t1250\n\t],\n\t\"./svg/paperplane.svg\": [\n\t\t75811,\n\t\t1,\n\t\t5811\n\t],\n\t\"./svg/profile.svg\": [\n\t\t72941,\n\t\t1,\n\t\t5322\n\t],\n\t\"./svg/settings.svg\": [\n\t\t79416,\n\t\t1,\n\t\t9416\n\t],\n\t\"./svg/shield-stop.svg\": [\n\t\t54890,\n\t\t1,\n\t\t2509\n\t],\n\t\"./svg/smartphone-loading-wheel.svg\": [\n\t\t81951,\n\t\t1,\n\t\t1951\n\t],\n\t\"./svg/ticket-black.svg\": [\n\t\t89609,\n\t\t1,\n\t\t9609\n\t],\n\t\"./svg/ticket.svg\": [\n\t\t51343,\n\t\t1,\n\t\t1343\n\t],\n\t\"./svg/user-mouth-spreechless.svg\": [\n\t\t51550,\n\t\t1,\n\t\t1550\n\t],\n\t\"./svg/video.svg\": [\n\t\t82332,\n\t\t1,\n\t\t2332\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(() => {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn Promise.all(ids.slice(2).map(__webpack_require__.e)).then(() => {\n\t\treturn __webpack_require__.t(id, ids[1] | 16)\n\t});\n}\nwebpackAsyncContext.keys = () => (Object.keys(map));\nwebpackAsyncContext.id = 58388;\nmodule.exports = webpackAsyncContext;","var AWS = require('./core');\n/**\n * @api private\n */\nfunction validateRegionalEndpointsFlagValue(configValue, errorOptions) {\n if (typeof configValue !== 'string') return undefined;\n else if (['legacy', 'regional'].indexOf(configValue.toLowerCase()) >= 0) {\n return configValue.toLowerCase();\n } else {\n throw AWS.util.error(new Error(), errorOptions);\n }\n}\n\n/**\n * Resolve the configuration value for regional endpoint from difference sources: client\n * config, environmental variable, shared config file. Value can be case-insensitive\n * 'legacy' or 'reginal'.\n * @param originalConfig user-supplied config object to resolve\n * @param options a map of config property names from individual configuration source\n * - env: name of environmental variable that refers to the config\n * - sharedConfig: name of shared configuration file property that refers to the config\n * - clientConfig: name of client configuration property that refers to the config\n *\n * @api private\n */\nfunction resolveRegionalEndpointsFlag(originalConfig, options) {\n originalConfig = originalConfig || {};\n //validate config value\n var resolved;\n if (originalConfig[options.clientConfig]) {\n resolved = validateRegionalEndpointsFlagValue(originalConfig[options.clientConfig], {\n code: 'InvalidConfiguration',\n message: 'invalid \"' + options.clientConfig + '\" configuration. Expect \"legacy\" ' +\n ' or \"regional\". Got \"' + originalConfig[options.clientConfig] + '\".'\n });\n if (resolved) return resolved;\n }\n if (!AWS.util.isNode()) return resolved;\n //validate environmental variable\n if (Object.prototype.hasOwnProperty.call(process.env, options.env)) {\n var envFlag = process.env[options.env];\n resolved = validateRegionalEndpointsFlagValue(envFlag, {\n code: 'InvalidEnvironmentalVariable',\n message: 'invalid ' + options.env + ' environmental variable. Expect \"legacy\" ' +\n ' or \"regional\". Got \"' + process.env[options.env] + '\".'\n });\n if (resolved) return resolved;\n }\n //validate shared config file\n var profile = {};\n try {\n var profiles = AWS.util.getProfilesFromSharedConfig(AWS.util.iniLoader);\n profile = profiles[process.env.AWS_PROFILE || AWS.util.defaultProfile];\n } catch (e) {};\n if (profile && Object.prototype.hasOwnProperty.call(profile, options.sharedConfig)) {\n var fileFlag = profile[options.sharedConfig];\n resolved = validateRegionalEndpointsFlagValue(fileFlag, {\n code: 'InvalidConfiguration',\n message: 'invalid ' + options.sharedConfig + ' profile config. Expect \"legacy\" ' +\n ' or \"regional\". Got \"' + profile[options.sharedConfig] + '\".'\n });\n if (resolved) return resolved;\n }\n return resolved;\n}\n\nmodule.exports = resolveRegionalEndpointsFlag;\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isValidRevisionID = exports.isValidAssetGroup = exports.resolveURL = exports.addQueryParams = exports.withQueryString = exports.withRequestHeaders = exports.fetchWithBehavior = void 0;\nfunction fetchWithBehavior(url, init, fetchBehavior) {\n if (!fetchBehavior) {\n return fetch(url, init);\n }\n const withQuery = withQueryString(url, fetchBehavior);\n const withHeaders = withRequestHeaders(init, fetchBehavior);\n return fetch(withQuery, withHeaders);\n}\nexports.fetchWithBehavior = fetchWithBehavior;\nfunction withRequestHeaders(init, fetchBehavior) {\n if (!(fetchBehavior === null || fetchBehavior === void 0 ? void 0 : fetchBehavior.headers)) {\n return init;\n }\n if (!init) {\n return {\n headers: fetchBehavior.headers,\n };\n }\n return Object.assign(Object.assign({}, init), { headers: Object.assign(Object.assign({}, init.headers || {}), fetchBehavior.headers) });\n}\nexports.withRequestHeaders = withRequestHeaders;\nfunction withQueryString(url, fetchBehavior) {\n if (!(fetchBehavior === null || fetchBehavior === void 0 ? void 0 : fetchBehavior.escapedQueryString)) {\n return url;\n }\n const hasQuery = url.lastIndexOf('?') !== -1;\n return `${url}${hasQuery ? '&' : '?'}${fetchBehavior.escapedQueryString}`;\n}\nexports.withQueryString = withQueryString;\nfunction addQueryParams(fetchBehavior, queryParams) {\n const keys = Object.keys(queryParams);\n if (!keys.length) {\n return fetchBehavior;\n }\n const params = new URLSearchParams(fetchBehavior === null || fetchBehavior === void 0 ? void 0 : fetchBehavior.escapedQueryString);\n for (const key of keys) {\n params.append(key, queryParams[key]);\n }\n return Object.assign(Object.assign({}, fetchBehavior), { escapedQueryString: params.toString() });\n}\nexports.addQueryParams = addQueryParams;\nconst HEAD_OPTIONS = {\n method: 'HEAD',\n mode: 'cors',\n credentials: 'omit',\n redirect: 'follow',\n referrerPolicy: 'origin',\n};\nfunction resolveURL(url, fetchBehavior) {\n return fetchWithBehavior(url, HEAD_OPTIONS, fetchBehavior)\n .then(response => response.redirected ? response.url : url);\n}\nexports.resolveURL = resolveURL;\nfunction isValidAssetGroup(assetGroup) {\n return !!assetGroup && /^[-.a-zA-Z0-9]+$/.test(assetGroup);\n}\nexports.isValidAssetGroup = isValidAssetGroup;\nfunction isValidRevisionID(revisionID) {\n return !!revisionID && /^[123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ]{22}$/.test(revisionID);\n}\nexports.isValidRevisionID = isValidRevisionID;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['iot'] = {};\nAWS.Iot = Service.defineService('iot', ['2015-05-28']);\nObject.defineProperty(apiLoader.services['iot'], '2015-05-28', {\n get: function get() {\n var model = require('../apis/iot-2015-05-28.min.json');\n model.paginators = require('../apis/iot-2015-05-28.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.Iot;\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport Logger from '../logger/Logger';\n\nexport default class CSPMonitor {\n private static loggers: Set = new Set();\n private static shouldRegisterCSPMonitor: boolean = true;\n private static added = false;\n\n /* istanbul ignore next */\n static register(): void {\n if (!('document' in global) || !document.addEventListener) {\n return;\n }\n if (CSPMonitor.shouldRegisterCSPMonitor) {\n if (!CSPMonitor.added) {\n document.addEventListener('securitypolicyviolation', CSPMonitor.listener);\n CSPMonitor.added = true;\n }\n }\n }\n\n /* istanbul ignore next */\n static unregister(): void {\n if (!('document' in global) || !document.removeEventListener) {\n return;\n }\n document.removeEventListener('securitypolicyviolation', CSPMonitor.listener);\n CSPMonitor.loggers = new Set();\n CSPMonitor.added = false;\n }\n\n static disable(): void {\n CSPMonitor.shouldRegisterCSPMonitor = false;\n CSPMonitor.unregister();\n }\n\n static addLogger(logger: Logger): void {\n if (logger) {\n CSPMonitor.loggers.add(logger);\n }\n }\n\n static removeLogger(logger: Logger): void {\n if (logger) {\n CSPMonitor.loggers.delete(logger);\n }\n }\n\n /* istanbul ignore next */\n private static listener = (event: SecurityPolicyViolationEvent): void => {\n const message =\n 'Security Policy Violation\\n' +\n `Blocked URI: ${event.blockedURI}\\n` +\n `Violated Directive: ${event.violatedDirective}\\n` +\n `Original Policy: ${event.originalPolicy}\\n` +\n `Document URI: ${event.documentURI}\\n` +\n `Source File: ${event.sourceFile}\\n` +\n `Line No.: ${event.lineNumber}\\n`;\n\n for (const logger of CSPMonitor.loggers) {\n logger.error(message);\n }\n if (CSPMonitor.loggers.size === 0) {\n console.error(message);\n }\n };\n}\n","'use strict';\nvar userAgent = require('../internals/environment-user-agent');\n\n// eslint-disable-next-line redos/no-vulnerable -- safe\nmodule.exports = /(?:ipad|iphone|ipod).*applewebkit/i.test(userAgent);\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","/**\n * Advanced Encryption Standard (AES) implementation.\n *\n * This implementation is based on the public domain library 'jscrypto' which\n * was written by:\n *\n * Emily Stark (estark@stanford.edu)\n * Mike Hamburg (mhamburg@stanford.edu)\n * Dan Boneh (dabo@cs.stanford.edu)\n *\n * Parts of this code are based on the OpenSSL implementation of AES:\n * http://www.openssl.org\n *\n * @author Dave Longley\n *\n * Copyright (c) 2010-2014 Digital Bazaar, Inc.\n */\nvar forge = require('./forge');\nrequire('./cipher');\nrequire('./cipherModes');\nrequire('./util');\n\n/* AES API */\nmodule.exports = forge.aes = forge.aes || {};\n\n/**\n * Deprecated. Instead, use:\n *\n * var cipher = forge.cipher.createCipher('AES-', key);\n * cipher.start({iv: iv});\n *\n * Creates an AES cipher object to encrypt data using the given symmetric key.\n * The output will be stored in the 'output' member of the returned cipher.\n *\n * The key and iv may be given as a string of bytes, an array of bytes,\n * a byte buffer, or an array of 32-bit words.\n *\n * @param key the symmetric key to use.\n * @param iv the initialization vector to use.\n * @param output the buffer to write to, null to create one.\n * @param mode the cipher mode to use (default: 'CBC').\n *\n * @return the cipher.\n */\nforge.aes.startEncrypting = function(key, iv, output, mode) {\n var cipher = _createCipher({\n key: key,\n output: output,\n decrypt: false,\n mode: mode\n });\n cipher.start(iv);\n return cipher;\n};\n\n/**\n * Deprecated. Instead, use:\n *\n * var cipher = forge.cipher.createCipher('AES-', key);\n *\n * Creates an AES cipher object to encrypt data using the given symmetric key.\n *\n * The key may be given as a string of bytes, an array of bytes, a\n * byte buffer, or an array of 32-bit words.\n *\n * @param key the symmetric key to use.\n * @param mode the cipher mode to use (default: 'CBC').\n *\n * @return the cipher.\n */\nforge.aes.createEncryptionCipher = function(key, mode) {\n return _createCipher({\n key: key,\n output: null,\n decrypt: false,\n mode: mode\n });\n};\n\n/**\n * Deprecated. Instead, use:\n *\n * var decipher = forge.cipher.createDecipher('AES-', key);\n * decipher.start({iv: iv});\n *\n * Creates an AES cipher object to decrypt data using the given symmetric key.\n * The output will be stored in the 'output' member of the returned cipher.\n *\n * The key and iv may be given as a string of bytes, an array of bytes,\n * a byte buffer, or an array of 32-bit words.\n *\n * @param key the symmetric key to use.\n * @param iv the initialization vector to use.\n * @param output the buffer to write to, null to create one.\n * @param mode the cipher mode to use (default: 'CBC').\n *\n * @return the cipher.\n */\nforge.aes.startDecrypting = function(key, iv, output, mode) {\n var cipher = _createCipher({\n key: key,\n output: output,\n decrypt: true,\n mode: mode\n });\n cipher.start(iv);\n return cipher;\n};\n\n/**\n * Deprecated. Instead, use:\n *\n * var decipher = forge.cipher.createDecipher('AES-', key);\n *\n * Creates an AES cipher object to decrypt data using the given symmetric key.\n *\n * The key may be given as a string of bytes, an array of bytes, a\n * byte buffer, or an array of 32-bit words.\n *\n * @param key the symmetric key to use.\n * @param mode the cipher mode to use (default: 'CBC').\n *\n * @return the cipher.\n */\nforge.aes.createDecryptionCipher = function(key, mode) {\n return _createCipher({\n key: key,\n output: null,\n decrypt: true,\n mode: mode\n });\n};\n\n/**\n * Creates a new AES cipher algorithm object.\n *\n * @param name the name of the algorithm.\n * @param mode the mode factory function.\n *\n * @return the AES algorithm object.\n */\nforge.aes.Algorithm = function(name, mode) {\n if(!init) {\n initialize();\n }\n var self = this;\n self.name = name;\n self.mode = new mode({\n blockSize: 16,\n cipher: {\n encrypt: function(inBlock, outBlock) {\n return _updateBlock(self._w, inBlock, outBlock, false);\n },\n decrypt: function(inBlock, outBlock) {\n return _updateBlock(self._w, inBlock, outBlock, true);\n }\n }\n });\n self._init = false;\n};\n\n/**\n * Initializes this AES algorithm by expanding its key.\n *\n * @param options the options to use.\n * key the key to use with this algorithm.\n * decrypt true if the algorithm should be initialized for decryption,\n * false for encryption.\n */\nforge.aes.Algorithm.prototype.initialize = function(options) {\n if(this._init) {\n return;\n }\n\n var key = options.key;\n var tmp;\n\n /* Note: The key may be a string of bytes, an array of bytes, a byte\n buffer, or an array of 32-bit integers. If the key is in bytes, then\n it must be 16, 24, or 32 bytes in length. If it is in 32-bit\n integers, it must be 4, 6, or 8 integers long. */\n\n if(typeof key === 'string' &&\n (key.length === 16 || key.length === 24 || key.length === 32)) {\n // convert key string into byte buffer\n key = forge.util.createBuffer(key);\n } else if(forge.util.isArray(key) &&\n (key.length === 16 || key.length === 24 || key.length === 32)) {\n // convert key integer array into byte buffer\n tmp = key;\n key = forge.util.createBuffer();\n for(var i = 0; i < tmp.length; ++i) {\n key.putByte(tmp[i]);\n }\n }\n\n // convert key byte buffer into 32-bit integer array\n if(!forge.util.isArray(key)) {\n tmp = key;\n key = [];\n\n // key lengths of 16, 24, 32 bytes allowed\n var len = tmp.length();\n if(len === 16 || len === 24 || len === 32) {\n len = len >>> 2;\n for(var i = 0; i < len; ++i) {\n key.push(tmp.getInt32());\n }\n }\n }\n\n // key must be an array of 32-bit integers by now\n if(!forge.util.isArray(key) ||\n !(key.length === 4 || key.length === 6 || key.length === 8)) {\n throw new Error('Invalid key parameter.');\n }\n\n // encryption operation is always used for these modes\n var mode = this.mode.name;\n var encryptOp = (['CFB', 'OFB', 'CTR', 'GCM'].indexOf(mode) !== -1);\n\n // do key expansion\n this._w = _expandKey(key, options.decrypt && !encryptOp);\n this._init = true;\n};\n\n/**\n * Expands a key. Typically only used for testing.\n *\n * @param key the symmetric key to expand, as an array of 32-bit words.\n * @param decrypt true to expand for decryption, false for encryption.\n *\n * @return the expanded key.\n */\nforge.aes._expandKey = function(key, decrypt) {\n if(!init) {\n initialize();\n }\n return _expandKey(key, decrypt);\n};\n\n/**\n * Updates a single block. Typically only used for testing.\n *\n * @param w the expanded key to use.\n * @param input an array of block-size 32-bit words.\n * @param output an array of block-size 32-bit words.\n * @param decrypt true to decrypt, false to encrypt.\n */\nforge.aes._updateBlock = _updateBlock;\n\n/** Register AES algorithms **/\n\nregisterAlgorithm('AES-ECB', forge.cipher.modes.ecb);\nregisterAlgorithm('AES-CBC', forge.cipher.modes.cbc);\nregisterAlgorithm('AES-CFB', forge.cipher.modes.cfb);\nregisterAlgorithm('AES-OFB', forge.cipher.modes.ofb);\nregisterAlgorithm('AES-CTR', forge.cipher.modes.ctr);\nregisterAlgorithm('AES-GCM', forge.cipher.modes.gcm);\n\nfunction registerAlgorithm(name, mode) {\n var factory = function() {\n return new forge.aes.Algorithm(name, mode);\n };\n forge.cipher.registerAlgorithm(name, factory);\n}\n\n/** AES implementation **/\n\nvar init = false; // not yet initialized\nvar Nb = 4; // number of words comprising the state (AES = 4)\nvar sbox; // non-linear substitution table used in key expansion\nvar isbox; // inversion of sbox\nvar rcon; // round constant word array\nvar mix; // mix-columns table\nvar imix; // inverse mix-columns table\n\n/**\n * Performs initialization, ie: precomputes tables to optimize for speed.\n *\n * One way to understand how AES works is to imagine that 'addition' and\n * 'multiplication' are interfaces that require certain mathematical\n * properties to hold true (ie: they are associative) but they might have\n * different implementations and produce different kinds of results ...\n * provided that their mathematical properties remain true. AES defines\n * its own methods of addition and multiplication but keeps some important\n * properties the same, ie: associativity and distributivity. The\n * explanation below tries to shed some light on how AES defines addition\n * and multiplication of bytes and 32-bit words in order to perform its\n * encryption and decryption algorithms.\n *\n * The basics:\n *\n * The AES algorithm views bytes as binary representations of polynomials\n * that have either 1 or 0 as the coefficients. It defines the addition\n * or subtraction of two bytes as the XOR operation. It also defines the\n * multiplication of two bytes as a finite field referred to as GF(2^8)\n * (Note: 'GF' means \"Galois Field\" which is a field that contains a finite\n * number of elements so GF(2^8) has 256 elements).\n *\n * This means that any two bytes can be represented as binary polynomials;\n * when they multiplied together and modularly reduced by an irreducible\n * polynomial of the 8th degree, the results are the field GF(2^8). The\n * specific irreducible polynomial that AES uses in hexadecimal is 0x11b.\n * This multiplication is associative with 0x01 as the identity:\n *\n * (b * 0x01 = GF(b, 0x01) = b).\n *\n * The operation GF(b, 0x02) can be performed at the byte level by left\n * shifting b once and then XOR'ing it (to perform the modular reduction)\n * with 0x11b if b is >= 128. Repeated application of the multiplication\n * of 0x02 can be used to implement the multiplication of any two bytes.\n *\n * For instance, multiplying 0x57 and 0x13, denoted as GF(0x57, 0x13), can\n * be performed by factoring 0x13 into 0x01, 0x02, and 0x10. Then these\n * factors can each be multiplied by 0x57 and then added together. To do\n * the multiplication, values for 0x57 multiplied by each of these 3 factors\n * can be precomputed and stored in a table. To add them, the values from\n * the table are XOR'd together.\n *\n * AES also defines addition and multiplication of words, that is 4-byte\n * numbers represented as polynomials of 3 degrees where the coefficients\n * are the values of the bytes.\n *\n * The word [a0, a1, a2, a3] is a polynomial a3x^3 + a2x^2 + a1x + a0.\n *\n * Addition is performed by XOR'ing like powers of x. Multiplication\n * is performed in two steps, the first is an algebriac expansion as\n * you would do normally (where addition is XOR). But the result is\n * a polynomial larger than 3 degrees and thus it cannot fit in a word. So\n * next the result is modularly reduced by an AES-specific polynomial of\n * degree 4 which will always produce a polynomial of less than 4 degrees\n * such that it will fit in a word. In AES, this polynomial is x^4 + 1.\n *\n * The modular product of two polynomials 'a' and 'b' is thus:\n *\n * d(x) = d3x^3 + d2x^2 + d1x + d0\n * with\n * d0 = GF(a0, b0) ^ GF(a3, b1) ^ GF(a2, b2) ^ GF(a1, b3)\n * d1 = GF(a1, b0) ^ GF(a0, b1) ^ GF(a3, b2) ^ GF(a2, b3)\n * d2 = GF(a2, b0) ^ GF(a1, b1) ^ GF(a0, b2) ^ GF(a3, b3)\n * d3 = GF(a3, b0) ^ GF(a2, b1) ^ GF(a1, b2) ^ GF(a0, b3)\n *\n * As a matrix:\n *\n * [d0] = [a0 a3 a2 a1][b0]\n * [d1] [a1 a0 a3 a2][b1]\n * [d2] [a2 a1 a0 a3][b2]\n * [d3] [a3 a2 a1 a0][b3]\n *\n * Special polynomials defined by AES (0x02 == {02}):\n * a(x) = {03}x^3 + {01}x^2 + {01}x + {02}\n * a^-1(x) = {0b}x^3 + {0d}x^2 + {09}x + {0e}.\n *\n * These polynomials are used in the MixColumns() and InverseMixColumns()\n * operations, respectively, to cause each element in the state to affect\n * the output (referred to as diffusing).\n *\n * RotWord() uses: a0 = a1 = a2 = {00} and a3 = {01}, which is the\n * polynomial x3.\n *\n * The ShiftRows() method modifies the last 3 rows in the state (where\n * the state is 4 words with 4 bytes per word) by shifting bytes cyclically.\n * The 1st byte in the second row is moved to the end of the row. The 1st\n * and 2nd bytes in the third row are moved to the end of the row. The 1st,\n * 2nd, and 3rd bytes are moved in the fourth row.\n *\n * More details on how AES arithmetic works:\n *\n * In the polynomial representation of binary numbers, XOR performs addition\n * and subtraction and multiplication in GF(2^8) denoted as GF(a, b)\n * corresponds with the multiplication of polynomials modulo an irreducible\n * polynomial of degree 8. In other words, for AES, GF(a, b) will multiply\n * polynomial 'a' with polynomial 'b' and then do a modular reduction by\n * an AES-specific irreducible polynomial of degree 8.\n *\n * A polynomial is irreducible if its only divisors are one and itself. For\n * the AES algorithm, this irreducible polynomial is:\n *\n * m(x) = x^8 + x^4 + x^3 + x + 1,\n *\n * or {01}{1b} in hexadecimal notation, where each coefficient is a bit:\n * 100011011 = 283 = 0x11b.\n *\n * For example, GF(0x57, 0x83) = 0xc1 because\n *\n * 0x57 = 87 = 01010111 = x^6 + x^4 + x^2 + x + 1\n * 0x85 = 131 = 10000101 = x^7 + x + 1\n *\n * (x^6 + x^4 + x^2 + x + 1) * (x^7 + x + 1)\n * = x^13 + x^11 + x^9 + x^8 + x^7 +\n * x^7 + x^5 + x^3 + x^2 + x +\n * x^6 + x^4 + x^2 + x + 1\n * = x^13 + x^11 + x^9 + x^8 + x^6 + x^5 + x^4 + x^3 + 1 = y\n * y modulo (x^8 + x^4 + x^3 + x + 1)\n * = x^7 + x^6 + 1.\n *\n * The modular reduction by m(x) guarantees the result will be a binary\n * polynomial of less than degree 8, so that it can fit in a byte.\n *\n * The operation to multiply a binary polynomial b with x (the polynomial\n * x in binary representation is 00000010) is:\n *\n * b_7x^8 + b_6x^7 + b_5x^6 + b_4x^5 + b_3x^4 + b_2x^3 + b_1x^2 + b_0x^1\n *\n * To get GF(b, x) we must reduce that by m(x). If b_7 is 0 (that is the\n * most significant bit is 0 in b) then the result is already reduced. If\n * it is 1, then we can reduce it by subtracting m(x) via an XOR.\n *\n * It follows that multiplication by x (00000010 or 0x02) can be implemented\n * by performing a left shift followed by a conditional bitwise XOR with\n * 0x1b. This operation on bytes is denoted by xtime(). Multiplication by\n * higher powers of x can be implemented by repeated application of xtime().\n *\n * By adding intermediate results, multiplication by any constant can be\n * implemented. For instance:\n *\n * GF(0x57, 0x13) = 0xfe because:\n *\n * xtime(b) = (b & 128) ? (b << 1 ^ 0x11b) : (b << 1)\n *\n * Note: We XOR with 0x11b instead of 0x1b because in javascript our\n * datatype for b can be larger than 1 byte, so a left shift will not\n * automatically eliminate bits that overflow a byte ... by XOR'ing the\n * overflow bit with 1 (the extra one from 0x11b) we zero it out.\n *\n * GF(0x57, 0x02) = xtime(0x57) = 0xae\n * GF(0x57, 0x04) = xtime(0xae) = 0x47\n * GF(0x57, 0x08) = xtime(0x47) = 0x8e\n * GF(0x57, 0x10) = xtime(0x8e) = 0x07\n *\n * GF(0x57, 0x13) = GF(0x57, (0x01 ^ 0x02 ^ 0x10))\n *\n * And by the distributive property (since XOR is addition and GF() is\n * multiplication):\n *\n * = GF(0x57, 0x01) ^ GF(0x57, 0x02) ^ GF(0x57, 0x10)\n * = 0x57 ^ 0xae ^ 0x07\n * = 0xfe.\n */\nfunction initialize() {\n init = true;\n\n /* Populate the Rcon table. These are the values given by\n [x^(i-1),{00},{00},{00}] where x^(i-1) are powers of x (and x = 0x02)\n in the field of GF(2^8), where i starts at 1.\n\n rcon[0] = [0x00, 0x00, 0x00, 0x00]\n rcon[1] = [0x01, 0x00, 0x00, 0x00] 2^(1-1) = 2^0 = 1\n rcon[2] = [0x02, 0x00, 0x00, 0x00] 2^(2-1) = 2^1 = 2\n ...\n rcon[9] = [0x1B, 0x00, 0x00, 0x00] 2^(9-1) = 2^8 = 0x1B\n rcon[10] = [0x36, 0x00, 0x00, 0x00] 2^(10-1) = 2^9 = 0x36\n\n We only store the first byte because it is the only one used.\n */\n rcon = [0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1B, 0x36];\n\n // compute xtime table which maps i onto GF(i, 0x02)\n var xtime = new Array(256);\n for(var i = 0; i < 128; ++i) {\n xtime[i] = i << 1;\n xtime[i + 128] = (i + 128) << 1 ^ 0x11B;\n }\n\n // compute all other tables\n sbox = new Array(256);\n isbox = new Array(256);\n mix = new Array(4);\n imix = new Array(4);\n for(var i = 0; i < 4; ++i) {\n mix[i] = new Array(256);\n imix[i] = new Array(256);\n }\n var e = 0, ei = 0, e2, e4, e8, sx, sx2, me, ime;\n for(var i = 0; i < 256; ++i) {\n /* We need to generate the SubBytes() sbox and isbox tables so that\n we can perform byte substitutions. This requires us to traverse\n all of the elements in GF, find their multiplicative inverses,\n and apply to each the following affine transformation:\n\n bi' = bi ^ b(i + 4) mod 8 ^ b(i + 5) mod 8 ^ b(i + 6) mod 8 ^\n b(i + 7) mod 8 ^ ci\n for 0 <= i < 8, where bi is the ith bit of the byte, and ci is the\n ith bit of a byte c with the value {63} or {01100011}.\n\n It is possible to traverse every possible value in a Galois field\n using what is referred to as a 'generator'. There are many\n generators (128 out of 256): 3,5,6,9,11,82 to name a few. To fully\n traverse GF we iterate 255 times, multiplying by our generator\n each time.\n\n On each iteration we can determine the multiplicative inverse for\n the current element.\n\n Suppose there is an element in GF 'e'. For a given generator 'g',\n e = g^x. The multiplicative inverse of e is g^(255 - x). It turns\n out that if use the inverse of a generator as another generator\n it will produce all of the corresponding multiplicative inverses\n at the same time. For this reason, we choose 5 as our inverse\n generator because it only requires 2 multiplies and 1 add and its\n inverse, 82, requires relatively few operations as well.\n\n In order to apply the affine transformation, the multiplicative\n inverse 'ei' of 'e' can be repeatedly XOR'd (4 times) with a\n bit-cycling of 'ei'. To do this 'ei' is first stored in 's' and\n 'x'. Then 's' is left shifted and the high bit of 's' is made the\n low bit. The resulting value is stored in 's'. Then 'x' is XOR'd\n with 's' and stored in 'x'. On each subsequent iteration the same\n operation is performed. When 4 iterations are complete, 'x' is\n XOR'd with 'c' (0x63) and the transformed value is stored in 'x'.\n For example:\n\n s = 01000001\n x = 01000001\n\n iteration 1: s = 10000010, x ^= s\n iteration 2: s = 00000101, x ^= s\n iteration 3: s = 00001010, x ^= s\n iteration 4: s = 00010100, x ^= s\n x ^= 0x63\n\n This can be done with a loop where s = (s << 1) | (s >> 7). However,\n it can also be done by using a single 16-bit (in this case 32-bit)\n number 'sx'. Since XOR is an associative operation, we can set 'sx'\n to 'ei' and then XOR it with 'sx' left-shifted 1,2,3, and 4 times.\n The most significant bits will flow into the high 8 bit positions\n and be correctly XOR'd with one another. All that remains will be\n to cycle the high 8 bits by XOR'ing them all with the lower 8 bits\n afterwards.\n\n At the same time we're populating sbox and isbox we can precompute\n the multiplication we'll need to do to do MixColumns() later.\n */\n\n // apply affine transformation\n sx = ei ^ (ei << 1) ^ (ei << 2) ^ (ei << 3) ^ (ei << 4);\n sx = (sx >> 8) ^ (sx & 255) ^ 0x63;\n\n // update tables\n sbox[e] = sx;\n isbox[sx] = e;\n\n /* Mixing columns is done using matrix multiplication. The columns\n that are to be mixed are each a single word in the current state.\n The state has Nb columns (4 columns). Therefore each column is a\n 4 byte word. So to mix the columns in a single column 'c' where\n its rows are r0, r1, r2, and r3, we use the following matrix\n multiplication:\n\n [2 3 1 1]*[r0,c]=[r'0,c]\n [1 2 3 1] [r1,c] [r'1,c]\n [1 1 2 3] [r2,c] [r'2,c]\n [3 1 1 2] [r3,c] [r'3,c]\n\n r0, r1, r2, and r3 are each 1 byte of one of the words in the\n state (a column). To do matrix multiplication for each mixed\n column c' we multiply the corresponding row from the left matrix\n with the corresponding column from the right matrix. In total, we\n get 4 equations:\n\n r0,c' = 2*r0,c + 3*r1,c + 1*r2,c + 1*r3,c\n r1,c' = 1*r0,c + 2*r1,c + 3*r2,c + 1*r3,c\n r2,c' = 1*r0,c + 1*r1,c + 2*r2,c + 3*r3,c\n r3,c' = 3*r0,c + 1*r1,c + 1*r2,c + 2*r3,c\n\n As usual, the multiplication is as previously defined and the\n addition is XOR. In order to optimize mixing columns we can store\n the multiplication results in tables. If you think of the whole\n column as a word (it might help to visualize by mentally rotating\n the equations above by counterclockwise 90 degrees) then you can\n see that it would be useful to map the multiplications performed on\n each byte (r0, r1, r2, r3) onto a word as well. For instance, we\n could map 2*r0,1*r0,1*r0,3*r0 onto a word by storing 2*r0 in the\n highest 8 bits and 3*r0 in the lowest 8 bits (with the other two\n respectively in the middle). This means that a table can be\n constructed that uses r0 as an index to the word. We can do the\n same with r1, r2, and r3, creating a total of 4 tables.\n\n To construct a full c', we can just look up each byte of c in\n their respective tables and XOR the results together.\n\n Also, to build each table we only have to calculate the word\n for 2,1,1,3 for every byte ... which we can do on each iteration\n of this loop since we will iterate over every byte. After we have\n calculated 2,1,1,3 we can get the results for the other tables\n by cycling the byte at the end to the beginning. For instance\n we can take the result of table 2,1,1,3 and produce table 3,2,1,1\n by moving the right most byte to the left most position just like\n how you can imagine the 3 moved out of 2,1,1,3 and to the front\n to produce 3,2,1,1.\n\n There is another optimization in that the same multiples of\n the current element we need in order to advance our generator\n to the next iteration can be reused in performing the 2,1,1,3\n calculation. We also calculate the inverse mix column tables,\n with e,9,d,b being the inverse of 2,1,1,3.\n\n When we're done, and we need to actually mix columns, the first\n byte of each state word should be put through mix[0] (2,1,1,3),\n the second through mix[1] (3,2,1,1) and so forth. Then they should\n be XOR'd together to produce the fully mixed column.\n */\n\n // calculate mix and imix table values\n sx2 = xtime[sx];\n e2 = xtime[e];\n e4 = xtime[e2];\n e8 = xtime[e4];\n me =\n (sx2 << 24) ^ // 2\n (sx << 16) ^ // 1\n (sx << 8) ^ // 1\n (sx ^ sx2); // 3\n ime =\n (e2 ^ e4 ^ e8) << 24 ^ // E (14)\n (e ^ e8) << 16 ^ // 9\n (e ^ e4 ^ e8) << 8 ^ // D (13)\n (e ^ e2 ^ e8); // B (11)\n // produce each of the mix tables by rotating the 2,1,1,3 value\n for(var n = 0; n < 4; ++n) {\n mix[n][e] = me;\n imix[n][sx] = ime;\n // cycle the right most byte to the left most position\n // ie: 2,1,1,3 becomes 3,2,1,1\n me = me << 24 | me >>> 8;\n ime = ime << 24 | ime >>> 8;\n }\n\n // get next element and inverse\n if(e === 0) {\n // 1 is the inverse of 1\n e = ei = 1;\n } else {\n // e = 2e + 2*2*2*(10e)) = multiply e by 82 (chosen generator)\n // ei = ei + 2*2*ei = multiply ei by 5 (inverse generator)\n e = e2 ^ xtime[xtime[xtime[e2 ^ e8]]];\n ei ^= xtime[xtime[ei]];\n }\n }\n}\n\n/**\n * Generates a key schedule using the AES key expansion algorithm.\n *\n * The AES algorithm takes the Cipher Key, K, and performs a Key Expansion\n * routine to generate a key schedule. The Key Expansion generates a total\n * of Nb*(Nr + 1) words: the algorithm requires an initial set of Nb words,\n * and each of the Nr rounds requires Nb words of key data. The resulting\n * key schedule consists of a linear array of 4-byte words, denoted [wi ],\n * with i in the range 0 <= i < Nb(Nr + 1).\n *\n * KeyExpansion(byte key[4*Nk], word w[Nb*(Nr+1)], Nk)\n * AES-128 (Nb=4, Nk=4, Nr=10)\n * AES-192 (Nb=4, Nk=6, Nr=12)\n * AES-256 (Nb=4, Nk=8, Nr=14)\n * Note: Nr=Nk+6.\n *\n * Nb is the number of columns (32-bit words) comprising the State (or\n * number of bytes in a block). For AES, Nb=4.\n *\n * @param key the key to schedule (as an array of 32-bit words).\n * @param decrypt true to modify the key schedule to decrypt, false not to.\n *\n * @return the generated key schedule.\n */\nfunction _expandKey(key, decrypt) {\n // copy the key's words to initialize the key schedule\n var w = key.slice(0);\n\n /* RotWord() will rotate a word, moving the first byte to the last\n byte's position (shifting the other bytes left).\n\n We will be getting the value of Rcon at i / Nk. 'i' will iterate\n from Nk to (Nb * Nr+1). Nk = 4 (4 byte key), Nb = 4 (4 words in\n a block), Nr = Nk + 6 (10). Therefore 'i' will iterate from\n 4 to 44 (exclusive). Each time we iterate 4 times, i / Nk will\n increase by 1. We use a counter iNk to keep track of this.\n */\n\n // go through the rounds expanding the key\n var temp, iNk = 1;\n var Nk = w.length;\n var Nr1 = Nk + 6 + 1;\n var end = Nb * Nr1;\n for(var i = Nk; i < end; ++i) {\n temp = w[i - 1];\n if(i % Nk === 0) {\n // temp = SubWord(RotWord(temp)) ^ Rcon[i / Nk]\n temp =\n sbox[temp >>> 16 & 255] << 24 ^\n sbox[temp >>> 8 & 255] << 16 ^\n sbox[temp & 255] << 8 ^\n sbox[temp >>> 24] ^ (rcon[iNk] << 24);\n iNk++;\n } else if(Nk > 6 && (i % Nk === 4)) {\n // temp = SubWord(temp)\n temp =\n sbox[temp >>> 24] << 24 ^\n sbox[temp >>> 16 & 255] << 16 ^\n sbox[temp >>> 8 & 255] << 8 ^\n sbox[temp & 255];\n }\n w[i] = w[i - Nk] ^ temp;\n }\n\n /* When we are updating a cipher block we always use the code path for\n encryption whether we are decrypting or not (to shorten code and\n simplify the generation of look up tables). However, because there\n are differences in the decryption algorithm, other than just swapping\n in different look up tables, we must transform our key schedule to\n account for these changes:\n\n 1. The decryption algorithm gets its key rounds in reverse order.\n 2. The decryption algorithm adds the round key before mixing columns\n instead of afterwards.\n\n We don't need to modify our key schedule to handle the first case,\n we can just traverse the key schedule in reverse order when decrypting.\n\n The second case requires a little work.\n\n The tables we built for performing rounds will take an input and then\n perform SubBytes() and MixColumns() or, for the decrypt version,\n InvSubBytes() and InvMixColumns(). But the decrypt algorithm requires\n us to AddRoundKey() before InvMixColumns(). This means we'll need to\n apply some transformations to the round key to inverse-mix its columns\n so they'll be correct for moving AddRoundKey() to after the state has\n had its columns inverse-mixed.\n\n To inverse-mix the columns of the state when we're decrypting we use a\n lookup table that will apply InvSubBytes() and InvMixColumns() at the\n same time. However, the round key's bytes are not inverse-substituted\n in the decryption algorithm. To get around this problem, we can first\n substitute the bytes in the round key so that when we apply the\n transformation via the InvSubBytes()+InvMixColumns() table, it will\n undo our substitution leaving us with the original value that we\n want -- and then inverse-mix that value.\n\n This change will correctly alter our key schedule so that we can XOR\n each round key with our already transformed decryption state. This\n allows us to use the same code path as the encryption algorithm.\n\n We make one more change to the decryption key. Since the decryption\n algorithm runs in reverse from the encryption algorithm, we reverse\n the order of the round keys to avoid having to iterate over the key\n schedule backwards when running the encryption algorithm later in\n decryption mode. In addition to reversing the order of the round keys,\n we also swap each round key's 2nd and 4th rows. See the comments\n section where rounds are performed for more details about why this is\n done. These changes are done inline with the other substitution\n described above.\n */\n if(decrypt) {\n var tmp;\n var m0 = imix[0];\n var m1 = imix[1];\n var m2 = imix[2];\n var m3 = imix[3];\n var wnew = w.slice(0);\n end = w.length;\n for(var i = 0, wi = end - Nb; i < end; i += Nb, wi -= Nb) {\n // do not sub the first or last round key (round keys are Nb\n // words) as no column mixing is performed before they are added,\n // but do change the key order\n if(i === 0 || i === (end - Nb)) {\n wnew[i] = w[wi];\n wnew[i + 1] = w[wi + 3];\n wnew[i + 2] = w[wi + 2];\n wnew[i + 3] = w[wi + 1];\n } else {\n // substitute each round key byte because the inverse-mix\n // table will inverse-substitute it (effectively cancel the\n // substitution because round key bytes aren't sub'd in\n // decryption mode) and swap indexes 3 and 1\n for(var n = 0; n < Nb; ++n) {\n tmp = w[wi + n];\n wnew[i + (3&-n)] =\n m0[sbox[tmp >>> 24]] ^\n m1[sbox[tmp >>> 16 & 255]] ^\n m2[sbox[tmp >>> 8 & 255]] ^\n m3[sbox[tmp & 255]];\n }\n }\n }\n w = wnew;\n }\n\n return w;\n}\n\n/**\n * Updates a single block (16 bytes) using AES. The update will either\n * encrypt or decrypt the block.\n *\n * @param w the key schedule.\n * @param input the input block (an array of 32-bit words).\n * @param output the updated output block.\n * @param decrypt true to decrypt the block, false to encrypt it.\n */\nfunction _updateBlock(w, input, output, decrypt) {\n /*\n Cipher(byte in[4*Nb], byte out[4*Nb], word w[Nb*(Nr+1)])\n begin\n byte state[4,Nb]\n state = in\n AddRoundKey(state, w[0, Nb-1])\n for round = 1 step 1 to Nr-1\n SubBytes(state)\n ShiftRows(state)\n MixColumns(state)\n AddRoundKey(state, w[round*Nb, (round+1)*Nb-1])\n end for\n SubBytes(state)\n ShiftRows(state)\n AddRoundKey(state, w[Nr*Nb, (Nr+1)*Nb-1])\n out = state\n end\n\n InvCipher(byte in[4*Nb], byte out[4*Nb], word w[Nb*(Nr+1)])\n begin\n byte state[4,Nb]\n state = in\n AddRoundKey(state, w[Nr*Nb, (Nr+1)*Nb-1])\n for round = Nr-1 step -1 downto 1\n InvShiftRows(state)\n InvSubBytes(state)\n AddRoundKey(state, w[round*Nb, (round+1)*Nb-1])\n InvMixColumns(state)\n end for\n InvShiftRows(state)\n InvSubBytes(state)\n AddRoundKey(state, w[0, Nb-1])\n out = state\n end\n */\n\n // Encrypt: AddRoundKey(state, w[0, Nb-1])\n // Decrypt: AddRoundKey(state, w[Nr*Nb, (Nr+1)*Nb-1])\n var Nr = w.length / 4 - 1;\n var m0, m1, m2, m3, sub;\n if(decrypt) {\n m0 = imix[0];\n m1 = imix[1];\n m2 = imix[2];\n m3 = imix[3];\n sub = isbox;\n } else {\n m0 = mix[0];\n m1 = mix[1];\n m2 = mix[2];\n m3 = mix[3];\n sub = sbox;\n }\n var a, b, c, d, a2, b2, c2;\n a = input[0] ^ w[0];\n b = input[decrypt ? 3 : 1] ^ w[1];\n c = input[2] ^ w[2];\n d = input[decrypt ? 1 : 3] ^ w[3];\n var i = 3;\n\n /* In order to share code we follow the encryption algorithm when both\n encrypting and decrypting. To account for the changes required in the\n decryption algorithm, we use different lookup tables when decrypting\n and use a modified key schedule to account for the difference in the\n order of transformations applied when performing rounds. We also get\n key rounds in reverse order (relative to encryption). */\n for(var round = 1; round < Nr; ++round) {\n /* As described above, we'll be using table lookups to perform the\n column mixing. Each column is stored as a word in the state (the\n array 'input' has one column as a word at each index). In order to\n mix a column, we perform these transformations on each row in c,\n which is 1 byte in each word. The new column for c0 is c'0:\n\n m0 m1 m2 m3\n r0,c'0 = 2*r0,c0 + 3*r1,c0 + 1*r2,c0 + 1*r3,c0\n r1,c'0 = 1*r0,c0 + 2*r1,c0 + 3*r2,c0 + 1*r3,c0\n r2,c'0 = 1*r0,c0 + 1*r1,c0 + 2*r2,c0 + 3*r3,c0\n r3,c'0 = 3*r0,c0 + 1*r1,c0 + 1*r2,c0 + 2*r3,c0\n\n So using mix tables where c0 is a word with r0 being its upper\n 8 bits and r3 being its lower 8 bits:\n\n m0[c0 >> 24] will yield this word: [2*r0,1*r0,1*r0,3*r0]\n ...\n m3[c0 & 255] will yield this word: [1*r3,1*r3,3*r3,2*r3]\n\n Therefore to mix the columns in each word in the state we\n do the following (& 255 omitted for brevity):\n c'0,r0 = m0[c0 >> 24] ^ m1[c1 >> 16] ^ m2[c2 >> 8] ^ m3[c3]\n c'0,r1 = m0[c0 >> 24] ^ m1[c1 >> 16] ^ m2[c2 >> 8] ^ m3[c3]\n c'0,r2 = m0[c0 >> 24] ^ m1[c1 >> 16] ^ m2[c2 >> 8] ^ m3[c3]\n c'0,r3 = m0[c0 >> 24] ^ m1[c1 >> 16] ^ m2[c2 >> 8] ^ m3[c3]\n\n However, before mixing, the algorithm requires us to perform\n ShiftRows(). The ShiftRows() transformation cyclically shifts the\n last 3 rows of the state over different offsets. The first row\n (r = 0) is not shifted.\n\n s'_r,c = s_r,(c + shift(r, Nb) mod Nb\n for 0 < r < 4 and 0 <= c < Nb and\n shift(1, 4) = 1\n shift(2, 4) = 2\n shift(3, 4) = 3.\n\n This causes the first byte in r = 1 to be moved to the end of\n the row, the first 2 bytes in r = 2 to be moved to the end of\n the row, the first 3 bytes in r = 3 to be moved to the end of\n the row:\n\n r1: [c0 c1 c2 c3] => [c1 c2 c3 c0]\n r2: [c0 c1 c2 c3] [c2 c3 c0 c1]\n r3: [c0 c1 c2 c3] [c3 c0 c1 c2]\n\n We can make these substitutions inline with our column mixing to\n generate an updated set of equations to produce each word in the\n state (note the columns have changed positions):\n\n c0 c1 c2 c3 => c0 c1 c2 c3\n c0 c1 c2 c3 c1 c2 c3 c0 (cycled 1 byte)\n c0 c1 c2 c3 c2 c3 c0 c1 (cycled 2 bytes)\n c0 c1 c2 c3 c3 c0 c1 c2 (cycled 3 bytes)\n\n Therefore:\n\n c'0 = 2*r0,c0 + 3*r1,c1 + 1*r2,c2 + 1*r3,c3\n c'0 = 1*r0,c0 + 2*r1,c1 + 3*r2,c2 + 1*r3,c3\n c'0 = 1*r0,c0 + 1*r1,c1 + 2*r2,c2 + 3*r3,c3\n c'0 = 3*r0,c0 + 1*r1,c1 + 1*r2,c2 + 2*r3,c3\n\n c'1 = 2*r0,c1 + 3*r1,c2 + 1*r2,c3 + 1*r3,c0\n c'1 = 1*r0,c1 + 2*r1,c2 + 3*r2,c3 + 1*r3,c0\n c'1 = 1*r0,c1 + 1*r1,c2 + 2*r2,c3 + 3*r3,c0\n c'1 = 3*r0,c1 + 1*r1,c2 + 1*r2,c3 + 2*r3,c0\n\n ... and so forth for c'2 and c'3. The important distinction is\n that the columns are cycling, with c0 being used with the m0\n map when calculating c0, but c1 being used with the m0 map when\n calculating c1 ... and so forth.\n\n When performing the inverse we transform the mirror image and\n skip the bottom row, instead of the top one, and move upwards:\n\n c3 c2 c1 c0 => c0 c3 c2 c1 (cycled 3 bytes) *same as encryption\n c3 c2 c1 c0 c1 c0 c3 c2 (cycled 2 bytes)\n c3 c2 c1 c0 c2 c1 c0 c3 (cycled 1 byte) *same as encryption\n c3 c2 c1 c0 c3 c2 c1 c0\n\n If you compare the resulting matrices for ShiftRows()+MixColumns()\n and for InvShiftRows()+InvMixColumns() the 2nd and 4th columns are\n different (in encrypt mode vs. decrypt mode). So in order to use\n the same code to handle both encryption and decryption, we will\n need to do some mapping.\n\n If in encryption mode we let a=c0, b=c1, c=c2, d=c3, and r be\n a row number in the state, then the resulting matrix in encryption\n mode for applying the above transformations would be:\n\n r1: a b c d\n r2: b c d a\n r3: c d a b\n r4: d a b c\n\n If we did the same in decryption mode we would get:\n\n r1: a d c b\n r2: b a d c\n r3: c b a d\n r4: d c b a\n\n If instead we swap d and b (set b=c3 and d=c1), then we get:\n\n r1: a b c d\n r2: d a b c\n r3: c d a b\n r4: b c d a\n\n Now the 1st and 3rd rows are the same as the encryption matrix. All\n we need to do then to make the mapping exactly the same is to swap\n the 2nd and 4th rows when in decryption mode. To do this without\n having to do it on each iteration, we swapped the 2nd and 4th rows\n in the decryption key schedule. We also have to do the swap above\n when we first pull in the input and when we set the final output. */\n a2 =\n m0[a >>> 24] ^\n m1[b >>> 16 & 255] ^\n m2[c >>> 8 & 255] ^\n m3[d & 255] ^ w[++i];\n b2 =\n m0[b >>> 24] ^\n m1[c >>> 16 & 255] ^\n m2[d >>> 8 & 255] ^\n m3[a & 255] ^ w[++i];\n c2 =\n m0[c >>> 24] ^\n m1[d >>> 16 & 255] ^\n m2[a >>> 8 & 255] ^\n m3[b & 255] ^ w[++i];\n d =\n m0[d >>> 24] ^\n m1[a >>> 16 & 255] ^\n m2[b >>> 8 & 255] ^\n m3[c & 255] ^ w[++i];\n a = a2;\n b = b2;\n c = c2;\n }\n\n /*\n Encrypt:\n SubBytes(state)\n ShiftRows(state)\n AddRoundKey(state, w[Nr*Nb, (Nr+1)*Nb-1])\n\n Decrypt:\n InvShiftRows(state)\n InvSubBytes(state)\n AddRoundKey(state, w[0, Nb-1])\n */\n // Note: rows are shifted inline\n output[0] =\n (sub[a >>> 24] << 24) ^\n (sub[b >>> 16 & 255] << 16) ^\n (sub[c >>> 8 & 255] << 8) ^\n (sub[d & 255]) ^ w[++i];\n output[decrypt ? 3 : 1] =\n (sub[b >>> 24] << 24) ^\n (sub[c >>> 16 & 255] << 16) ^\n (sub[d >>> 8 & 255] << 8) ^\n (sub[a & 255]) ^ w[++i];\n output[2] =\n (sub[c >>> 24] << 24) ^\n (sub[d >>> 16 & 255] << 16) ^\n (sub[a >>> 8 & 255] << 8) ^\n (sub[b & 255]) ^ w[++i];\n output[decrypt ? 1 : 3] =\n (sub[d >>> 24] << 24) ^\n (sub[a >>> 16 & 255] << 16) ^\n (sub[b >>> 8 & 255] << 8) ^\n (sub[c & 255]) ^ w[++i];\n}\n\n/**\n * Deprecated. Instead, use:\n *\n * forge.cipher.createCipher('AES-', key);\n * forge.cipher.createDecipher('AES-', key);\n *\n * Creates a deprecated AES cipher object. This object's mode will default to\n * CBC (cipher-block-chaining).\n *\n * The key and iv may be given as a string of bytes, an array of bytes, a\n * byte buffer, or an array of 32-bit words.\n *\n * @param options the options to use.\n * key the symmetric key to use.\n * output the buffer to write to.\n * decrypt true for decryption, false for encryption.\n * mode the cipher mode to use (default: 'CBC').\n *\n * @return the cipher.\n */\nfunction _createCipher(options) {\n options = options || {};\n var mode = (options.mode || 'CBC').toUpperCase();\n var algorithm = 'AES-' + mode;\n\n var cipher;\n if(options.decrypt) {\n cipher = forge.cipher.createDecipher(algorithm, options.key);\n } else {\n cipher = forge.cipher.createCipher(algorithm, options.key);\n }\n\n // backwards compatible start API\n var start = cipher.start;\n cipher.start = function(iv, options) {\n // backwards compatibility: support second arg as output buffer\n var output = null;\n if(options instanceof forge.util.ByteBuffer) {\n output = options;\n options = {};\n }\n options = options || {};\n options.output = output;\n options.iv = iv;\n start.call(cipher, options);\n };\n\n return cipher;\n}\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['rekognition'] = {};\nAWS.Rekognition = Service.defineService('rekognition', ['2016-06-27']);\nObject.defineProperty(apiLoader.services['rekognition'], '2016-06-27', {\n get: function get() {\n var model = require('../apis/rekognition-2016-06-27.min.json');\n model.paginators = require('../apis/rekognition-2016-06-27.paginators.json').pagination;\n model.waiters = require('../apis/rekognition-2016-06-27.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.Rekognition;\n","/**\n * Javascript implementation of basic RSA algorithms.\n *\n * @author Dave Longley\n *\n * Copyright (c) 2010-2014 Digital Bazaar, Inc.\n *\n * The only algorithm currently supported for PKI is RSA.\n *\n * An RSA key is often stored in ASN.1 DER format. The SubjectPublicKeyInfo\n * ASN.1 structure is composed of an algorithm of type AlgorithmIdentifier\n * and a subjectPublicKey of type bit string.\n *\n * The AlgorithmIdentifier contains an Object Identifier (OID) and parameters\n * for the algorithm, if any. In the case of RSA, there aren't any.\n *\n * SubjectPublicKeyInfo ::= SEQUENCE {\n * algorithm AlgorithmIdentifier,\n * subjectPublicKey BIT STRING\n * }\n *\n * AlgorithmIdentifer ::= SEQUENCE {\n * algorithm OBJECT IDENTIFIER,\n * parameters ANY DEFINED BY algorithm OPTIONAL\n * }\n *\n * For an RSA public key, the subjectPublicKey is:\n *\n * RSAPublicKey ::= SEQUENCE {\n * modulus INTEGER, -- n\n * publicExponent INTEGER -- e\n * }\n *\n * PrivateKeyInfo ::= SEQUENCE {\n * version Version,\n * privateKeyAlgorithm PrivateKeyAlgorithmIdentifier,\n * privateKey PrivateKey,\n * attributes [0] IMPLICIT Attributes OPTIONAL\n * }\n *\n * Version ::= INTEGER\n * PrivateKeyAlgorithmIdentifier ::= AlgorithmIdentifier\n * PrivateKey ::= OCTET STRING\n * Attributes ::= SET OF Attribute\n *\n * An RSA private key as the following structure:\n *\n * RSAPrivateKey ::= SEQUENCE {\n * version Version,\n * modulus INTEGER, -- n\n * publicExponent INTEGER, -- e\n * privateExponent INTEGER, -- d\n * prime1 INTEGER, -- p\n * prime2 INTEGER, -- q\n * exponent1 INTEGER, -- d mod (p-1)\n * exponent2 INTEGER, -- d mod (q-1)\n * coefficient INTEGER -- (inverse of q) mod p\n * }\n *\n * Version ::= INTEGER\n *\n * The OID for the RSA key algorithm is: 1.2.840.113549.1.1.1\n */\nvar forge = require('./forge');\nrequire('./asn1');\nrequire('./jsbn');\nrequire('./oids');\nrequire('./pkcs1');\nrequire('./prime');\nrequire('./random');\nrequire('./util');\n\nif(typeof BigInteger === 'undefined') {\n var BigInteger = forge.jsbn.BigInteger;\n}\n\nvar _crypto = forge.util.isNodejs ? require('crypto') : null;\n\n// shortcut for asn.1 API\nvar asn1 = forge.asn1;\n\n// shortcut for util API\nvar util = forge.util;\n\n/*\n * RSA encryption and decryption, see RFC 2313.\n */\nforge.pki = forge.pki || {};\nmodule.exports = forge.pki.rsa = forge.rsa = forge.rsa || {};\nvar pki = forge.pki;\n\n// for finding primes, which are 30k+i for i = 1, 7, 11, 13, 17, 19, 23, 29\nvar GCD_30_DELTA = [6, 4, 2, 4, 2, 4, 6, 2];\n\n// validator for a PrivateKeyInfo structure\nvar privateKeyValidator = {\n // PrivateKeyInfo\n name: 'PrivateKeyInfo',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n value: [{\n // Version (INTEGER)\n name: 'PrivateKeyInfo.version',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.INTEGER,\n constructed: false,\n capture: 'privateKeyVersion'\n }, {\n // privateKeyAlgorithm\n name: 'PrivateKeyInfo.privateKeyAlgorithm',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n value: [{\n name: 'AlgorithmIdentifier.algorithm',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.OID,\n constructed: false,\n capture: 'privateKeyOid'\n }]\n }, {\n // PrivateKey\n name: 'PrivateKeyInfo',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.OCTETSTRING,\n constructed: false,\n capture: 'privateKey'\n }]\n};\n\n// validator for an RSA private key\nvar rsaPrivateKeyValidator = {\n // RSAPrivateKey\n name: 'RSAPrivateKey',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n value: [{\n // Version (INTEGER)\n name: 'RSAPrivateKey.version',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.INTEGER,\n constructed: false,\n capture: 'privateKeyVersion'\n }, {\n // modulus (n)\n name: 'RSAPrivateKey.modulus',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.INTEGER,\n constructed: false,\n capture: 'privateKeyModulus'\n }, {\n // publicExponent (e)\n name: 'RSAPrivateKey.publicExponent',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.INTEGER,\n constructed: false,\n capture: 'privateKeyPublicExponent'\n }, {\n // privateExponent (d)\n name: 'RSAPrivateKey.privateExponent',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.INTEGER,\n constructed: false,\n capture: 'privateKeyPrivateExponent'\n }, {\n // prime1 (p)\n name: 'RSAPrivateKey.prime1',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.INTEGER,\n constructed: false,\n capture: 'privateKeyPrime1'\n }, {\n // prime2 (q)\n name: 'RSAPrivateKey.prime2',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.INTEGER,\n constructed: false,\n capture: 'privateKeyPrime2'\n }, {\n // exponent1 (d mod (p-1))\n name: 'RSAPrivateKey.exponent1',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.INTEGER,\n constructed: false,\n capture: 'privateKeyExponent1'\n }, {\n // exponent2 (d mod (q-1))\n name: 'RSAPrivateKey.exponent2',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.INTEGER,\n constructed: false,\n capture: 'privateKeyExponent2'\n }, {\n // coefficient ((inverse of q) mod p)\n name: 'RSAPrivateKey.coefficient',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.INTEGER,\n constructed: false,\n capture: 'privateKeyCoefficient'\n }]\n};\n\n// validator for an RSA public key\nvar rsaPublicKeyValidator = {\n // RSAPublicKey\n name: 'RSAPublicKey',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n value: [{\n // modulus (n)\n name: 'RSAPublicKey.modulus',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.INTEGER,\n constructed: false,\n capture: 'publicKeyModulus'\n }, {\n // publicExponent (e)\n name: 'RSAPublicKey.exponent',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.INTEGER,\n constructed: false,\n capture: 'publicKeyExponent'\n }]\n};\n\n// validator for an SubjectPublicKeyInfo structure\n// Note: Currently only works with an RSA public key\nvar publicKeyValidator = forge.pki.rsa.publicKeyValidator = {\n name: 'SubjectPublicKeyInfo',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n captureAsn1: 'subjectPublicKeyInfo',\n value: [{\n name: 'SubjectPublicKeyInfo.AlgorithmIdentifier',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n value: [{\n name: 'AlgorithmIdentifier.algorithm',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.OID,\n constructed: false,\n capture: 'publicKeyOid'\n }]\n }, {\n // subjectPublicKey\n name: 'SubjectPublicKeyInfo.subjectPublicKey',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.BITSTRING,\n constructed: false,\n value: [{\n // RSAPublicKey\n name: 'SubjectPublicKeyInfo.subjectPublicKey.RSAPublicKey',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n optional: true,\n captureAsn1: 'rsaPublicKey'\n }]\n }]\n};\n\n// validator for a DigestInfo structure\nvar digestInfoValidator = {\n name: 'DigestInfo',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n value: [{\n name: 'DigestInfo.DigestAlgorithm',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n value: [{\n name: 'DigestInfo.DigestAlgorithm.algorithmIdentifier',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.OID,\n constructed: false,\n capture: 'algorithmIdentifier'\n }, {\n // NULL paramters\n name: 'DigestInfo.DigestAlgorithm.parameters',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.NULL,\n // captured only to check existence for md2 and md5\n capture: 'parameters',\n optional: true,\n constructed: false\n }]\n }, {\n // digest\n name: 'DigestInfo.digest',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.OCTETSTRING,\n constructed: false,\n capture: 'digest'\n }]\n};\n\n/**\n * Wrap digest in DigestInfo object.\n *\n * This function implements EMSA-PKCS1-v1_5-ENCODE as per RFC 3447.\n *\n * DigestInfo ::= SEQUENCE {\n * digestAlgorithm DigestAlgorithmIdentifier,\n * digest Digest\n * }\n *\n * DigestAlgorithmIdentifier ::= AlgorithmIdentifier\n * Digest ::= OCTET STRING\n *\n * @param md the message digest object with the hash to sign.\n *\n * @return the encoded message (ready for RSA encrytion)\n */\nvar emsaPkcs1v15encode = function(md) {\n // get the oid for the algorithm\n var oid;\n if(md.algorithm in pki.oids) {\n oid = pki.oids[md.algorithm];\n } else {\n var error = new Error('Unknown message digest algorithm.');\n error.algorithm = md.algorithm;\n throw error;\n }\n var oidBytes = asn1.oidToDer(oid).getBytes();\n\n // create the digest info\n var digestInfo = asn1.create(\n asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, []);\n var digestAlgorithm = asn1.create(\n asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, []);\n digestAlgorithm.value.push(asn1.create(\n asn1.Class.UNIVERSAL, asn1.Type.OID, false, oidBytes));\n digestAlgorithm.value.push(asn1.create(\n asn1.Class.UNIVERSAL, asn1.Type.NULL, false, ''));\n var digest = asn1.create(\n asn1.Class.UNIVERSAL, asn1.Type.OCTETSTRING,\n false, md.digest().getBytes());\n digestInfo.value.push(digestAlgorithm);\n digestInfo.value.push(digest);\n\n // encode digest info\n return asn1.toDer(digestInfo).getBytes();\n};\n\n/**\n * Performs x^c mod n (RSA encryption or decryption operation).\n *\n * @param x the number to raise and mod.\n * @param key the key to use.\n * @param pub true if the key is public, false if private.\n *\n * @return the result of x^c mod n.\n */\nvar _modPow = function(x, key, pub) {\n if(pub) {\n return x.modPow(key.e, key.n);\n }\n\n if(!key.p || !key.q) {\n // allow calculation without CRT params (slow)\n return x.modPow(key.d, key.n);\n }\n\n // pre-compute dP, dQ, and qInv if necessary\n if(!key.dP) {\n key.dP = key.d.mod(key.p.subtract(BigInteger.ONE));\n }\n if(!key.dQ) {\n key.dQ = key.d.mod(key.q.subtract(BigInteger.ONE));\n }\n if(!key.qInv) {\n key.qInv = key.q.modInverse(key.p);\n }\n\n /* Chinese remainder theorem (CRT) states:\n\n Suppose n1, n2, ..., nk are positive integers which are pairwise\n coprime (n1 and n2 have no common factors other than 1). For any\n integers x1, x2, ..., xk there exists an integer x solving the\n system of simultaneous congruences (where ~= means modularly\n congruent so a ~= b mod n means a mod n = b mod n):\n\n x ~= x1 mod n1\n x ~= x2 mod n2\n ...\n x ~= xk mod nk\n\n This system of congruences has a single simultaneous solution x\n between 0 and n - 1. Furthermore, each xk solution and x itself\n is congruent modulo the product n = n1*n2*...*nk.\n So x1 mod n = x2 mod n = xk mod n = x mod n.\n\n The single simultaneous solution x can be solved with the following\n equation:\n\n x = sum(xi*ri*si) mod n where ri = n/ni and si = ri^-1 mod ni.\n\n Where x is less than n, xi = x mod ni.\n\n For RSA we are only concerned with k = 2. The modulus n = pq, where\n p and q are coprime. The RSA decryption algorithm is:\n\n y = x^d mod n\n\n Given the above:\n\n x1 = x^d mod p\n r1 = n/p = q\n s1 = q^-1 mod p\n x2 = x^d mod q\n r2 = n/q = p\n s2 = p^-1 mod q\n\n So y = (x1r1s1 + x2r2s2) mod n\n = ((x^d mod p)q(q^-1 mod p) + (x^d mod q)p(p^-1 mod q)) mod n\n\n According to Fermat's Little Theorem, if the modulus P is prime,\n for any integer A not evenly divisible by P, A^(P-1) ~= 1 mod P.\n Since A is not divisible by P it follows that if:\n N ~= M mod (P - 1), then A^N mod P = A^M mod P. Therefore:\n\n A^N mod P = A^(M mod (P - 1)) mod P. (The latter takes less effort\n to calculate). In order to calculate x^d mod p more quickly the\n exponent d mod (p - 1) is stored in the RSA private key (the same\n is done for x^d mod q). These values are referred to as dP and dQ\n respectively. Therefore we now have:\n\n y = ((x^dP mod p)q(q^-1 mod p) + (x^dQ mod q)p(p^-1 mod q)) mod n\n\n Since we'll be reducing x^dP by modulo p (same for q) we can also\n reduce x by p (and q respectively) before hand. Therefore, let\n\n xp = ((x mod p)^dP mod p), and\n xq = ((x mod q)^dQ mod q), yielding:\n\n y = (xp*q*(q^-1 mod p) + xq*p*(p^-1 mod q)) mod n\n\n This can be further reduced to a simple algorithm that only\n requires 1 inverse (the q inverse is used) to be used and stored.\n The algorithm is called Garner's algorithm. If qInv is the\n inverse of q, we simply calculate:\n\n y = (qInv*(xp - xq) mod p) * q + xq\n\n However, there are two further complications. First, we need to\n ensure that xp > xq to prevent signed BigIntegers from being used\n so we add p until this is true (since we will be mod'ing with\n p anyway). Then, there is a known timing attack on algorithms\n using the CRT. To mitigate this risk, \"cryptographic blinding\"\n should be used. This requires simply generating a random number r\n between 0 and n-1 and its inverse and multiplying x by r^e before\n calculating y and then multiplying y by r^-1 afterwards. Note that\n r must be coprime with n (gcd(r, n) === 1) in order to have an\n inverse.\n */\n\n // cryptographic blinding\n var r;\n do {\n r = new BigInteger(\n forge.util.bytesToHex(forge.random.getBytes(key.n.bitLength() / 8)),\n 16);\n } while(r.compareTo(key.n) >= 0 || !r.gcd(key.n).equals(BigInteger.ONE));\n x = x.multiply(r.modPow(key.e, key.n)).mod(key.n);\n\n // calculate xp and xq\n var xp = x.mod(key.p).modPow(key.dP, key.p);\n var xq = x.mod(key.q).modPow(key.dQ, key.q);\n\n // xp must be larger than xq to avoid signed bit usage\n while(xp.compareTo(xq) < 0) {\n xp = xp.add(key.p);\n }\n\n // do last step\n var y = xp.subtract(xq)\n .multiply(key.qInv).mod(key.p)\n .multiply(key.q).add(xq);\n\n // remove effect of random for cryptographic blinding\n y = y.multiply(r.modInverse(key.n)).mod(key.n);\n\n return y;\n};\n\n/**\n * NOTE: THIS METHOD IS DEPRECATED, use 'sign' on a private key object or\n * 'encrypt' on a public key object instead.\n *\n * Performs RSA encryption.\n *\n * The parameter bt controls whether to put padding bytes before the\n * message passed in. Set bt to either true or false to disable padding\n * completely (in order to handle e.g. EMSA-PSS encoding seperately before),\n * signaling whether the encryption operation is a public key operation\n * (i.e. encrypting data) or not, i.e. private key operation (data signing).\n *\n * For PKCS#1 v1.5 padding pass in the block type to use, i.e. either 0x01\n * (for signing) or 0x02 (for encryption). The key operation mode (private\n * or public) is derived from this flag in that case).\n *\n * @param m the message to encrypt as a byte string.\n * @param key the RSA key to use.\n * @param bt for PKCS#1 v1.5 padding, the block type to use\n * (0x01 for private key, 0x02 for public),\n * to disable padding: true = public key, false = private key.\n *\n * @return the encrypted bytes as a string.\n */\npki.rsa.encrypt = function(m, key, bt) {\n var pub = bt;\n var eb;\n\n // get the length of the modulus in bytes\n var k = Math.ceil(key.n.bitLength() / 8);\n\n if(bt !== false && bt !== true) {\n // legacy, default to PKCS#1 v1.5 padding\n pub = (bt === 0x02);\n eb = _encodePkcs1_v1_5(m, key, bt);\n } else {\n eb = forge.util.createBuffer();\n eb.putBytes(m);\n }\n\n // load encryption block as big integer 'x'\n // FIXME: hex conversion inefficient, get BigInteger w/byte strings\n var x = new BigInteger(eb.toHex(), 16);\n\n // do RSA encryption\n var y = _modPow(x, key, pub);\n\n // convert y into the encrypted data byte string, if y is shorter in\n // bytes than k, then prepend zero bytes to fill up ed\n // FIXME: hex conversion inefficient, get BigInteger w/byte strings\n var yhex = y.toString(16);\n var ed = forge.util.createBuffer();\n var zeros = k - Math.ceil(yhex.length / 2);\n while(zeros > 0) {\n ed.putByte(0x00);\n --zeros;\n }\n ed.putBytes(forge.util.hexToBytes(yhex));\n return ed.getBytes();\n};\n\n/**\n * NOTE: THIS METHOD IS DEPRECATED, use 'decrypt' on a private key object or\n * 'verify' on a public key object instead.\n *\n * Performs RSA decryption.\n *\n * The parameter ml controls whether to apply PKCS#1 v1.5 padding\n * or not. Set ml = false to disable padding removal completely\n * (in order to handle e.g. EMSA-PSS later on) and simply pass back\n * the RSA encryption block.\n *\n * @param ed the encrypted data to decrypt in as a byte string.\n * @param key the RSA key to use.\n * @param pub true for a public key operation, false for private.\n * @param ml the message length, if known, false to disable padding.\n *\n * @return the decrypted message as a byte string.\n */\npki.rsa.decrypt = function(ed, key, pub, ml) {\n // get the length of the modulus in bytes\n var k = Math.ceil(key.n.bitLength() / 8);\n\n // error if the length of the encrypted data ED is not k\n if(ed.length !== k) {\n var error = new Error('Encrypted message length is invalid.');\n error.length = ed.length;\n error.expected = k;\n throw error;\n }\n\n // convert encrypted data into a big integer\n // FIXME: hex conversion inefficient, get BigInteger w/byte strings\n var y = new BigInteger(forge.util.createBuffer(ed).toHex(), 16);\n\n // y must be less than the modulus or it wasn't the result of\n // a previous mod operation (encryption) using that modulus\n if(y.compareTo(key.n) >= 0) {\n throw new Error('Encrypted message is invalid.');\n }\n\n // do RSA decryption\n var x = _modPow(y, key, pub);\n\n // create the encryption block, if x is shorter in bytes than k, then\n // prepend zero bytes to fill up eb\n // FIXME: hex conversion inefficient, get BigInteger w/byte strings\n var xhex = x.toString(16);\n var eb = forge.util.createBuffer();\n var zeros = k - Math.ceil(xhex.length / 2);\n while(zeros > 0) {\n eb.putByte(0x00);\n --zeros;\n }\n eb.putBytes(forge.util.hexToBytes(xhex));\n\n if(ml !== false) {\n // legacy, default to PKCS#1 v1.5 padding\n return _decodePkcs1_v1_5(eb.getBytes(), key, pub);\n }\n\n // return message\n return eb.getBytes();\n};\n\n/**\n * Creates an RSA key-pair generation state object. It is used to allow\n * key-generation to be performed in steps. It also allows for a UI to\n * display progress updates.\n *\n * @param bits the size for the private key in bits, defaults to 2048.\n * @param e the public exponent to use, defaults to 65537 (0x10001).\n * @param [options] the options to use.\n * prng a custom crypto-secure pseudo-random number generator to use,\n * that must define \"getBytesSync\".\n * algorithm the algorithm to use (default: 'PRIMEINC').\n *\n * @return the state object to use to generate the key-pair.\n */\npki.rsa.createKeyPairGenerationState = function(bits, e, options) {\n // TODO: migrate step-based prime generation code to forge.prime\n\n // set default bits\n if(typeof(bits) === 'string') {\n bits = parseInt(bits, 10);\n }\n bits = bits || 2048;\n\n // create prng with api that matches BigInteger secure random\n options = options || {};\n var prng = options.prng || forge.random;\n var rng = {\n // x is an array to fill with bytes\n nextBytes: function(x) {\n var b = prng.getBytesSync(x.length);\n for(var i = 0; i < x.length; ++i) {\n x[i] = b.charCodeAt(i);\n }\n }\n };\n\n var algorithm = options.algorithm || 'PRIMEINC';\n\n // create PRIMEINC algorithm state\n var rval;\n if(algorithm === 'PRIMEINC') {\n rval = {\n algorithm: algorithm,\n state: 0,\n bits: bits,\n rng: rng,\n eInt: e || 65537,\n e: new BigInteger(null),\n p: null,\n q: null,\n qBits: bits >> 1,\n pBits: bits - (bits >> 1),\n pqState: 0,\n num: null,\n keys: null\n };\n rval.e.fromInt(rval.eInt);\n } else {\n throw new Error('Invalid key generation algorithm: ' + algorithm);\n }\n\n return rval;\n};\n\n/**\n * Attempts to runs the key-generation algorithm for at most n seconds\n * (approximately) using the given state. When key-generation has completed,\n * the keys will be stored in state.keys.\n *\n * To use this function to update a UI while generating a key or to prevent\n * causing browser lockups/warnings, set \"n\" to a value other than 0. A\n * simple pattern for generating a key and showing a progress indicator is:\n *\n * var state = pki.rsa.createKeyPairGenerationState(2048);\n * var step = function() {\n * // step key-generation, run algorithm for 100 ms, repeat\n * if(!forge.pki.rsa.stepKeyPairGenerationState(state, 100)) {\n * setTimeout(step, 1);\n * } else {\n * // key-generation complete\n * // TODO: turn off progress indicator here\n * // TODO: use the generated key-pair in \"state.keys\"\n * }\n * };\n * // TODO: turn on progress indicator here\n * setTimeout(step, 0);\n *\n * @param state the state to use.\n * @param n the maximum number of milliseconds to run the algorithm for, 0\n * to run the algorithm to completion.\n *\n * @return true if the key-generation completed, false if not.\n */\npki.rsa.stepKeyPairGenerationState = function(state, n) {\n // set default algorithm if not set\n if(!('algorithm' in state)) {\n state.algorithm = 'PRIMEINC';\n }\n\n // TODO: migrate step-based prime generation code to forge.prime\n // TODO: abstract as PRIMEINC algorithm\n\n // do key generation (based on Tom Wu's rsa.js, see jsbn.js license)\n // with some minor optimizations and designed to run in steps\n\n // local state vars\n var THIRTY = new BigInteger(null);\n THIRTY.fromInt(30);\n var deltaIdx = 0;\n var op_or = function(x, y) {return x | y;};\n\n // keep stepping until time limit is reached or done\n var t1 = +new Date();\n var t2;\n var total = 0;\n while(state.keys === null && (n <= 0 || total < n)) {\n // generate p or q\n if(state.state === 0) {\n /* Note: All primes are of the form:\n\n 30k+i, for i < 30 and gcd(30, i)=1, where there are 8 values for i\n\n When we generate a random number, we always align it at 30k + 1. Each\n time the number is determined not to be prime we add to get to the\n next 'i', eg: if the number was at 30k + 1 we add 6. */\n var bits = (state.p === null) ? state.pBits : state.qBits;\n var bits1 = bits - 1;\n\n // get a random number\n if(state.pqState === 0) {\n state.num = new BigInteger(bits, state.rng);\n // force MSB set\n if(!state.num.testBit(bits1)) {\n state.num.bitwiseTo(\n BigInteger.ONE.shiftLeft(bits1), op_or, state.num);\n }\n // align number on 30k+1 boundary\n state.num.dAddOffset(31 - state.num.mod(THIRTY).byteValue(), 0);\n deltaIdx = 0;\n\n ++state.pqState;\n } else if(state.pqState === 1) {\n // try to make the number a prime\n if(state.num.bitLength() > bits) {\n // overflow, try again\n state.pqState = 0;\n // do primality test\n } else if(state.num.isProbablePrime(\n _getMillerRabinTests(state.num.bitLength()))) {\n ++state.pqState;\n } else {\n // get next potential prime\n state.num.dAddOffset(GCD_30_DELTA[deltaIdx++ % 8], 0);\n }\n } else if(state.pqState === 2) {\n // ensure number is coprime with e\n state.pqState =\n (state.num.subtract(BigInteger.ONE).gcd(state.e)\n .compareTo(BigInteger.ONE) === 0) ? 3 : 0;\n } else if(state.pqState === 3) {\n // store p or q\n state.pqState = 0;\n if(state.p === null) {\n state.p = state.num;\n } else {\n state.q = state.num;\n }\n\n // advance state if both p and q are ready\n if(state.p !== null && state.q !== null) {\n ++state.state;\n }\n state.num = null;\n }\n } else if(state.state === 1) {\n // ensure p is larger than q (swap them if not)\n if(state.p.compareTo(state.q) < 0) {\n state.num = state.p;\n state.p = state.q;\n state.q = state.num;\n }\n ++state.state;\n } else if(state.state === 2) {\n // compute phi: (p - 1)(q - 1) (Euler's totient function)\n state.p1 = state.p.subtract(BigInteger.ONE);\n state.q1 = state.q.subtract(BigInteger.ONE);\n state.phi = state.p1.multiply(state.q1);\n ++state.state;\n } else if(state.state === 3) {\n // ensure e and phi are coprime\n if(state.phi.gcd(state.e).compareTo(BigInteger.ONE) === 0) {\n // phi and e are coprime, advance\n ++state.state;\n } else {\n // phi and e aren't coprime, so generate a new p and q\n state.p = null;\n state.q = null;\n state.state = 0;\n }\n } else if(state.state === 4) {\n // create n, ensure n is has the right number of bits\n state.n = state.p.multiply(state.q);\n\n // ensure n is right number of bits\n if(state.n.bitLength() === state.bits) {\n // success, advance\n ++state.state;\n } else {\n // failed, get new q\n state.q = null;\n state.state = 0;\n }\n } else if(state.state === 5) {\n // set keys\n var d = state.e.modInverse(state.phi);\n state.keys = {\n privateKey: pki.rsa.setPrivateKey(\n state.n, state.e, d, state.p, state.q,\n d.mod(state.p1), d.mod(state.q1),\n state.q.modInverse(state.p)),\n publicKey: pki.rsa.setPublicKey(state.n, state.e)\n };\n }\n\n // update timing\n t2 = +new Date();\n total += t2 - t1;\n t1 = t2;\n }\n\n return state.keys !== null;\n};\n\n/**\n * Generates an RSA public-private key pair in a single call.\n *\n * To generate a key-pair in steps (to allow for progress updates and to\n * prevent blocking or warnings in slow browsers) then use the key-pair\n * generation state functions.\n *\n * To generate a key-pair asynchronously (either through web-workers, if\n * available, or by breaking up the work on the main thread), pass a\n * callback function.\n *\n * @param [bits] the size for the private key in bits, defaults to 2048.\n * @param [e] the public exponent to use, defaults to 65537.\n * @param [options] options for key-pair generation, if given then 'bits'\n * and 'e' must *not* be given:\n * bits the size for the private key in bits, (default: 2048).\n * e the public exponent to use, (default: 65537 (0x10001)).\n * workerScript the worker script URL.\n * workers the number of web workers (if supported) to use,\n * (default: 2).\n * workLoad the size of the work load, ie: number of possible prime\n * numbers for each web worker to check per work assignment,\n * (default: 100).\n * prng a custom crypto-secure pseudo-random number generator to use,\n * that must define \"getBytesSync\". Disables use of native APIs.\n * algorithm the algorithm to use (default: 'PRIMEINC').\n * @param [callback(err, keypair)] called once the operation completes.\n *\n * @return an object with privateKey and publicKey properties.\n */\npki.rsa.generateKeyPair = function(bits, e, options, callback) {\n // (bits), (options), (callback)\n if(arguments.length === 1) {\n if(typeof bits === 'object') {\n options = bits;\n bits = undefined;\n } else if(typeof bits === 'function') {\n callback = bits;\n bits = undefined;\n }\n } else if(arguments.length === 2) {\n // (bits, e), (bits, options), (bits, callback), (options, callback)\n if(typeof bits === 'number') {\n if(typeof e === 'function') {\n callback = e;\n e = undefined;\n } else if(typeof e !== 'number') {\n options = e;\n e = undefined;\n }\n } else {\n options = bits;\n callback = e;\n bits = undefined;\n e = undefined;\n }\n } else if(arguments.length === 3) {\n // (bits, e, options), (bits, e, callback), (bits, options, callback)\n if(typeof e === 'number') {\n if(typeof options === 'function') {\n callback = options;\n options = undefined;\n }\n } else {\n callback = options;\n options = e;\n e = undefined;\n }\n }\n options = options || {};\n if(bits === undefined) {\n bits = options.bits || 2048;\n }\n if(e === undefined) {\n e = options.e || 0x10001;\n }\n\n // use native code if permitted, available, and parameters are acceptable\n if(!forge.options.usePureJavaScript && !options.prng &&\n bits >= 256 && bits <= 16384 && (e === 0x10001 || e === 3)) {\n if(callback) {\n // try native async\n if(_detectNodeCrypto('generateKeyPair')) {\n return _crypto.generateKeyPair('rsa', {\n modulusLength: bits,\n publicExponent: e,\n publicKeyEncoding: {\n type: 'spki',\n format: 'pem'\n },\n privateKeyEncoding: {\n type: 'pkcs8',\n format: 'pem'\n }\n }, function(err, pub, priv) {\n if(err) {\n return callback(err);\n }\n callback(null, {\n privateKey: pki.privateKeyFromPem(priv),\n publicKey: pki.publicKeyFromPem(pub)\n });\n });\n }\n if(_detectSubtleCrypto('generateKey') &&\n _detectSubtleCrypto('exportKey')) {\n // use standard native generateKey\n return util.globalScope.crypto.subtle.generateKey({\n name: 'RSASSA-PKCS1-v1_5',\n modulusLength: bits,\n publicExponent: _intToUint8Array(e),\n hash: {name: 'SHA-256'}\n }, true /* key can be exported*/, ['sign', 'verify'])\n .then(function(pair) {\n return util.globalScope.crypto.subtle.exportKey(\n 'pkcs8', pair.privateKey);\n // avoiding catch(function(err) {...}) to support IE <= 8\n }).then(undefined, function(err) {\n callback(err);\n }).then(function(pkcs8) {\n if(pkcs8) {\n var privateKey = pki.privateKeyFromAsn1(\n asn1.fromDer(forge.util.createBuffer(pkcs8)));\n callback(null, {\n privateKey: privateKey,\n publicKey: pki.setRsaPublicKey(privateKey.n, privateKey.e)\n });\n }\n });\n }\n if(_detectSubtleMsCrypto('generateKey') &&\n _detectSubtleMsCrypto('exportKey')) {\n var genOp = util.globalScope.msCrypto.subtle.generateKey({\n name: 'RSASSA-PKCS1-v1_5',\n modulusLength: bits,\n publicExponent: _intToUint8Array(e),\n hash: {name: 'SHA-256'}\n }, true /* key can be exported*/, ['sign', 'verify']);\n genOp.oncomplete = function(e) {\n var pair = e.target.result;\n var exportOp = util.globalScope.msCrypto.subtle.exportKey(\n 'pkcs8', pair.privateKey);\n exportOp.oncomplete = function(e) {\n var pkcs8 = e.target.result;\n var privateKey = pki.privateKeyFromAsn1(\n asn1.fromDer(forge.util.createBuffer(pkcs8)));\n callback(null, {\n privateKey: privateKey,\n publicKey: pki.setRsaPublicKey(privateKey.n, privateKey.e)\n });\n };\n exportOp.onerror = function(err) {\n callback(err);\n };\n };\n genOp.onerror = function(err) {\n callback(err);\n };\n return;\n }\n } else {\n // try native sync\n if(_detectNodeCrypto('generateKeyPairSync')) {\n var keypair = _crypto.generateKeyPairSync('rsa', {\n modulusLength: bits,\n publicExponent: e,\n publicKeyEncoding: {\n type: 'spki',\n format: 'pem'\n },\n privateKeyEncoding: {\n type: 'pkcs8',\n format: 'pem'\n }\n });\n return {\n privateKey: pki.privateKeyFromPem(keypair.privateKey),\n publicKey: pki.publicKeyFromPem(keypair.publicKey)\n };\n }\n }\n }\n\n // use JavaScript implementation\n var state = pki.rsa.createKeyPairGenerationState(bits, e, options);\n if(!callback) {\n pki.rsa.stepKeyPairGenerationState(state, 0);\n return state.keys;\n }\n _generateKeyPair(state, options, callback);\n};\n\n/**\n * Sets an RSA public key from BigIntegers modulus and exponent.\n *\n * @param n the modulus.\n * @param e the exponent.\n *\n * @return the public key.\n */\npki.setRsaPublicKey = pki.rsa.setPublicKey = function(n, e) {\n var key = {\n n: n,\n e: e\n };\n\n /**\n * Encrypts the given data with this public key. Newer applications\n * should use the 'RSA-OAEP' decryption scheme, 'RSAES-PKCS1-V1_5' is for\n * legacy applications.\n *\n * @param data the byte string to encrypt.\n * @param scheme the encryption scheme to use:\n * 'RSAES-PKCS1-V1_5' (default),\n * 'RSA-OAEP',\n * 'RAW', 'NONE', or null to perform raw RSA encryption,\n * an object with an 'encode' property set to a function\n * with the signature 'function(data, key)' that returns\n * a binary-encoded string representing the encoded data.\n * @param schemeOptions any scheme-specific options.\n *\n * @return the encrypted byte string.\n */\n key.encrypt = function(data, scheme, schemeOptions) {\n if(typeof scheme === 'string') {\n scheme = scheme.toUpperCase();\n } else if(scheme === undefined) {\n scheme = 'RSAES-PKCS1-V1_5';\n }\n\n if(scheme === 'RSAES-PKCS1-V1_5') {\n scheme = {\n encode: function(m, key, pub) {\n return _encodePkcs1_v1_5(m, key, 0x02).getBytes();\n }\n };\n } else if(scheme === 'RSA-OAEP' || scheme === 'RSAES-OAEP') {\n scheme = {\n encode: function(m, key) {\n return forge.pkcs1.encode_rsa_oaep(key, m, schemeOptions);\n }\n };\n } else if(['RAW', 'NONE', 'NULL', null].indexOf(scheme) !== -1) {\n scheme = {encode: function(e) {return e;}};\n } else if(typeof scheme === 'string') {\n throw new Error('Unsupported encryption scheme: \"' + scheme + '\".');\n }\n\n // do scheme-based encoding then rsa encryption\n var e = scheme.encode(data, key, true);\n return pki.rsa.encrypt(e, key, true);\n };\n\n /**\n * Verifies the given signature against the given digest.\n *\n * PKCS#1 supports multiple (currently two) signature schemes:\n * RSASSA-PKCS1-V1_5 and RSASSA-PSS.\n *\n * By default this implementation uses the \"old scheme\", i.e.\n * RSASSA-PKCS1-V1_5, in which case once RSA-decrypted, the\n * signature is an OCTET STRING that holds a DigestInfo.\n *\n * DigestInfo ::= SEQUENCE {\n * digestAlgorithm DigestAlgorithmIdentifier,\n * digest Digest\n * }\n * DigestAlgorithmIdentifier ::= AlgorithmIdentifier\n * Digest ::= OCTET STRING\n *\n * To perform PSS signature verification, provide an instance\n * of Forge PSS object as the scheme parameter.\n *\n * @param digest the message digest hash to compare against the signature,\n * as a binary-encoded string.\n * @param signature the signature to verify, as a binary-encoded string.\n * @param scheme signature verification scheme to use:\n * 'RSASSA-PKCS1-V1_5' or undefined for RSASSA PKCS#1 v1.5,\n * a Forge PSS object for RSASSA-PSS,\n * 'NONE' or null for none, DigestInfo will not be expected, but\n * PKCS#1 v1.5 padding will still be used.\n * @param options optional verify options\n * _parseAllDigestBytes testing flag to control parsing of all\n * digest bytes. Unsupported and not for general usage.\n * (default: true)\n *\n * @return true if the signature was verified, false if not.\n */\n key.verify = function(digest, signature, scheme, options) {\n if(typeof scheme === 'string') {\n scheme = scheme.toUpperCase();\n } else if(scheme === undefined) {\n scheme = 'RSASSA-PKCS1-V1_5';\n }\n if(options === undefined) {\n options = {\n _parseAllDigestBytes: true\n };\n }\n if(!('_parseAllDigestBytes' in options)) {\n options._parseAllDigestBytes = true;\n }\n\n if(scheme === 'RSASSA-PKCS1-V1_5') {\n scheme = {\n verify: function(digest, d) {\n // remove padding\n d = _decodePkcs1_v1_5(d, key, true);\n // d is ASN.1 BER-encoded DigestInfo\n var obj = asn1.fromDer(d, {\n parseAllBytes: options._parseAllDigestBytes\n });\n\n // validate DigestInfo\n var capture = {};\n var errors = [];\n if(!asn1.validate(obj, digestInfoValidator, capture, errors)) {\n var error = new Error(\n 'ASN.1 object does not contain a valid RSASSA-PKCS1-v1_5 ' +\n 'DigestInfo value.');\n error.errors = errors;\n throw error;\n }\n // check hash algorithm identifier\n // see PKCS1-v1-5DigestAlgorithms in RFC 8017\n // FIXME: add support to vaidator for strict value choices\n var oid = asn1.derToOid(capture.algorithmIdentifier);\n if(!(oid === forge.oids.md2 ||\n oid === forge.oids.md5 ||\n oid === forge.oids.sha1 ||\n oid === forge.oids.sha224 ||\n oid === forge.oids.sha256 ||\n oid === forge.oids.sha384 ||\n oid === forge.oids.sha512 ||\n oid === forge.oids['sha512-224'] ||\n oid === forge.oids['sha512-256'])) {\n var error = new Error(\n 'Unknown RSASSA-PKCS1-v1_5 DigestAlgorithm identifier.');\n error.oid = oid;\n throw error;\n }\n\n // special check for md2 and md5 that NULL parameters exist\n if(oid === forge.oids.md2 || oid === forge.oids.md5) {\n if(!('parameters' in capture)) {\n throw new Error(\n 'ASN.1 object does not contain a valid RSASSA-PKCS1-v1_5 ' +\n 'DigestInfo value. ' +\n 'Missing algorithm identifer NULL parameters.');\n }\n }\n\n // compare the given digest to the decrypted one\n return digest === capture.digest;\n }\n };\n } else if(scheme === 'NONE' || scheme === 'NULL' || scheme === null) {\n scheme = {\n verify: function(digest, d) {\n // remove padding\n d = _decodePkcs1_v1_5(d, key, true);\n return digest === d;\n }\n };\n }\n\n // do rsa decryption w/o any decoding, then verify -- which does decoding\n var d = pki.rsa.decrypt(signature, key, true, false);\n return scheme.verify(digest, d, key.n.bitLength());\n };\n\n return key;\n};\n\n/**\n * Sets an RSA private key from BigIntegers modulus, exponent, primes,\n * prime exponents, and modular multiplicative inverse.\n *\n * @param n the modulus.\n * @param e the public exponent.\n * @param d the private exponent ((inverse of e) mod n).\n * @param p the first prime.\n * @param q the second prime.\n * @param dP exponent1 (d mod (p-1)).\n * @param dQ exponent2 (d mod (q-1)).\n * @param qInv ((inverse of q) mod p)\n *\n * @return the private key.\n */\npki.setRsaPrivateKey = pki.rsa.setPrivateKey = function(\n n, e, d, p, q, dP, dQ, qInv) {\n var key = {\n n: n,\n e: e,\n d: d,\n p: p,\n q: q,\n dP: dP,\n dQ: dQ,\n qInv: qInv\n };\n\n /**\n * Decrypts the given data with this private key. The decryption scheme\n * must match the one used to encrypt the data.\n *\n * @param data the byte string to decrypt.\n * @param scheme the decryption scheme to use:\n * 'RSAES-PKCS1-V1_5' (default),\n * 'RSA-OAEP',\n * 'RAW', 'NONE', or null to perform raw RSA decryption.\n * @param schemeOptions any scheme-specific options.\n *\n * @return the decrypted byte string.\n */\n key.decrypt = function(data, scheme, schemeOptions) {\n if(typeof scheme === 'string') {\n scheme = scheme.toUpperCase();\n } else if(scheme === undefined) {\n scheme = 'RSAES-PKCS1-V1_5';\n }\n\n // do rsa decryption w/o any decoding\n var d = pki.rsa.decrypt(data, key, false, false);\n\n if(scheme === 'RSAES-PKCS1-V1_5') {\n scheme = {decode: _decodePkcs1_v1_5};\n } else if(scheme === 'RSA-OAEP' || scheme === 'RSAES-OAEP') {\n scheme = {\n decode: function(d, key) {\n return forge.pkcs1.decode_rsa_oaep(key, d, schemeOptions);\n }\n };\n } else if(['RAW', 'NONE', 'NULL', null].indexOf(scheme) !== -1) {\n scheme = {decode: function(d) {return d;}};\n } else {\n throw new Error('Unsupported encryption scheme: \"' + scheme + '\".');\n }\n\n // decode according to scheme\n return scheme.decode(d, key, false);\n };\n\n /**\n * Signs the given digest, producing a signature.\n *\n * PKCS#1 supports multiple (currently two) signature schemes:\n * RSASSA-PKCS1-V1_5 and RSASSA-PSS.\n *\n * By default this implementation uses the \"old scheme\", i.e.\n * RSASSA-PKCS1-V1_5. In order to generate a PSS signature, provide\n * an instance of Forge PSS object as the scheme parameter.\n *\n * @param md the message digest object with the hash to sign.\n * @param scheme the signature scheme to use:\n * 'RSASSA-PKCS1-V1_5' or undefined for RSASSA PKCS#1 v1.5,\n * a Forge PSS object for RSASSA-PSS,\n * 'NONE' or null for none, DigestInfo will not be used but\n * PKCS#1 v1.5 padding will still be used.\n *\n * @return the signature as a byte string.\n */\n key.sign = function(md, scheme) {\n /* Note: The internal implementation of RSA operations is being\n transitioned away from a PKCS#1 v1.5 hard-coded scheme. Some legacy\n code like the use of an encoding block identifier 'bt' will eventually\n be removed. */\n\n // private key operation\n var bt = false;\n\n if(typeof scheme === 'string') {\n scheme = scheme.toUpperCase();\n }\n\n if(scheme === undefined || scheme === 'RSASSA-PKCS1-V1_5') {\n scheme = {encode: emsaPkcs1v15encode};\n bt = 0x01;\n } else if(scheme === 'NONE' || scheme === 'NULL' || scheme === null) {\n scheme = {encode: function() {return md;}};\n bt = 0x01;\n }\n\n // encode and then encrypt\n var d = scheme.encode(md, key.n.bitLength());\n return pki.rsa.encrypt(d, key, bt);\n };\n\n return key;\n};\n\n/**\n * Wraps an RSAPrivateKey ASN.1 object in an ASN.1 PrivateKeyInfo object.\n *\n * @param rsaKey the ASN.1 RSAPrivateKey.\n *\n * @return the ASN.1 PrivateKeyInfo.\n */\npki.wrapRsaPrivateKey = function(rsaKey) {\n // PrivateKeyInfo\n return asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n // version (0)\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.INTEGER, false,\n asn1.integerToDer(0).getBytes()),\n // privateKeyAlgorithm\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n asn1.create(\n asn1.Class.UNIVERSAL, asn1.Type.OID, false,\n asn1.oidToDer(pki.oids.rsaEncryption).getBytes()),\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.NULL, false, '')\n ]),\n // PrivateKey\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OCTETSTRING, false,\n asn1.toDer(rsaKey).getBytes())\n ]);\n};\n\n/**\n * Converts a private key from an ASN.1 object.\n *\n * @param obj the ASN.1 representation of a PrivateKeyInfo containing an\n * RSAPrivateKey or an RSAPrivateKey.\n *\n * @return the private key.\n */\npki.privateKeyFromAsn1 = function(obj) {\n // get PrivateKeyInfo\n var capture = {};\n var errors = [];\n if(asn1.validate(obj, privateKeyValidator, capture, errors)) {\n obj = asn1.fromDer(forge.util.createBuffer(capture.privateKey));\n }\n\n // get RSAPrivateKey\n capture = {};\n errors = [];\n if(!asn1.validate(obj, rsaPrivateKeyValidator, capture, errors)) {\n var error = new Error('Cannot read private key. ' +\n 'ASN.1 object does not contain an RSAPrivateKey.');\n error.errors = errors;\n throw error;\n }\n\n // Note: Version is currently ignored.\n // capture.privateKeyVersion\n // FIXME: inefficient, get a BigInteger that uses byte strings\n var n, e, d, p, q, dP, dQ, qInv;\n n = forge.util.createBuffer(capture.privateKeyModulus).toHex();\n e = forge.util.createBuffer(capture.privateKeyPublicExponent).toHex();\n d = forge.util.createBuffer(capture.privateKeyPrivateExponent).toHex();\n p = forge.util.createBuffer(capture.privateKeyPrime1).toHex();\n q = forge.util.createBuffer(capture.privateKeyPrime2).toHex();\n dP = forge.util.createBuffer(capture.privateKeyExponent1).toHex();\n dQ = forge.util.createBuffer(capture.privateKeyExponent2).toHex();\n qInv = forge.util.createBuffer(capture.privateKeyCoefficient).toHex();\n\n // set private key\n return pki.setRsaPrivateKey(\n new BigInteger(n, 16),\n new BigInteger(e, 16),\n new BigInteger(d, 16),\n new BigInteger(p, 16),\n new BigInteger(q, 16),\n new BigInteger(dP, 16),\n new BigInteger(dQ, 16),\n new BigInteger(qInv, 16));\n};\n\n/**\n * Converts a private key to an ASN.1 RSAPrivateKey.\n *\n * @param key the private key.\n *\n * @return the ASN.1 representation of an RSAPrivateKey.\n */\npki.privateKeyToAsn1 = pki.privateKeyToRSAPrivateKey = function(key) {\n // RSAPrivateKey\n return asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n // version (0 = only 2 primes, 1 multiple primes)\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.INTEGER, false,\n asn1.integerToDer(0).getBytes()),\n // modulus (n)\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.INTEGER, false,\n _bnToBytes(key.n)),\n // publicExponent (e)\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.INTEGER, false,\n _bnToBytes(key.e)),\n // privateExponent (d)\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.INTEGER, false,\n _bnToBytes(key.d)),\n // privateKeyPrime1 (p)\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.INTEGER, false,\n _bnToBytes(key.p)),\n // privateKeyPrime2 (q)\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.INTEGER, false,\n _bnToBytes(key.q)),\n // privateKeyExponent1 (dP)\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.INTEGER, false,\n _bnToBytes(key.dP)),\n // privateKeyExponent2 (dQ)\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.INTEGER, false,\n _bnToBytes(key.dQ)),\n // coefficient (qInv)\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.INTEGER, false,\n _bnToBytes(key.qInv))\n ]);\n};\n\n/**\n * Converts a public key from an ASN.1 SubjectPublicKeyInfo or RSAPublicKey.\n *\n * @param obj the asn1 representation of a SubjectPublicKeyInfo or RSAPublicKey.\n *\n * @return the public key.\n */\npki.publicKeyFromAsn1 = function(obj) {\n // get SubjectPublicKeyInfo\n var capture = {};\n var errors = [];\n if(asn1.validate(obj, publicKeyValidator, capture, errors)) {\n // get oid\n var oid = asn1.derToOid(capture.publicKeyOid);\n if(oid !== pki.oids.rsaEncryption) {\n var error = new Error('Cannot read public key. Unknown OID.');\n error.oid = oid;\n throw error;\n }\n obj = capture.rsaPublicKey;\n }\n\n // get RSA params\n errors = [];\n if(!asn1.validate(obj, rsaPublicKeyValidator, capture, errors)) {\n var error = new Error('Cannot read public key. ' +\n 'ASN.1 object does not contain an RSAPublicKey.');\n error.errors = errors;\n throw error;\n }\n\n // FIXME: inefficient, get a BigInteger that uses byte strings\n var n = forge.util.createBuffer(capture.publicKeyModulus).toHex();\n var e = forge.util.createBuffer(capture.publicKeyExponent).toHex();\n\n // set public key\n return pki.setRsaPublicKey(\n new BigInteger(n, 16),\n new BigInteger(e, 16));\n};\n\n/**\n * Converts a public key to an ASN.1 SubjectPublicKeyInfo.\n *\n * @param key the public key.\n *\n * @return the asn1 representation of a SubjectPublicKeyInfo.\n */\npki.publicKeyToAsn1 = pki.publicKeyToSubjectPublicKeyInfo = function(key) {\n // SubjectPublicKeyInfo\n return asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n // AlgorithmIdentifier\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n // algorithm\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false,\n asn1.oidToDer(pki.oids.rsaEncryption).getBytes()),\n // parameters (null)\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.NULL, false, '')\n ]),\n // subjectPublicKey\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.BITSTRING, false, [\n pki.publicKeyToRSAPublicKey(key)\n ])\n ]);\n};\n\n/**\n * Converts a public key to an ASN.1 RSAPublicKey.\n *\n * @param key the public key.\n *\n * @return the asn1 representation of a RSAPublicKey.\n */\npki.publicKeyToRSAPublicKey = function(key) {\n // RSAPublicKey\n return asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n // modulus (n)\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.INTEGER, false,\n _bnToBytes(key.n)),\n // publicExponent (e)\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.INTEGER, false,\n _bnToBytes(key.e))\n ]);\n};\n\n/**\n * Encodes a message using PKCS#1 v1.5 padding.\n *\n * @param m the message to encode.\n * @param key the RSA key to use.\n * @param bt the block type to use, i.e. either 0x01 (for signing) or 0x02\n * (for encryption).\n *\n * @return the padded byte buffer.\n */\nfunction _encodePkcs1_v1_5(m, key, bt) {\n var eb = forge.util.createBuffer();\n\n // get the length of the modulus in bytes\n var k = Math.ceil(key.n.bitLength() / 8);\n\n /* use PKCS#1 v1.5 padding */\n if(m.length > (k - 11)) {\n var error = new Error('Message is too long for PKCS#1 v1.5 padding.');\n error.length = m.length;\n error.max = k - 11;\n throw error;\n }\n\n /* A block type BT, a padding string PS, and the data D shall be\n formatted into an octet string EB, the encryption block:\n\n EB = 00 || BT || PS || 00 || D\n\n The block type BT shall be a single octet indicating the structure of\n the encryption block. For this version of the document it shall have\n value 00, 01, or 02. For a private-key operation, the block type\n shall be 00 or 01. For a public-key operation, it shall be 02.\n\n The padding string PS shall consist of k-3-||D|| octets. For block\n type 00, the octets shall have value 00; for block type 01, they\n shall have value FF; and for block type 02, they shall be\n pseudorandomly generated and nonzero. This makes the length of the\n encryption block EB equal to k. */\n\n // build the encryption block\n eb.putByte(0x00);\n eb.putByte(bt);\n\n // create the padding\n var padNum = k - 3 - m.length;\n var padByte;\n // private key op\n if(bt === 0x00 || bt === 0x01) {\n padByte = (bt === 0x00) ? 0x00 : 0xFF;\n for(var i = 0; i < padNum; ++i) {\n eb.putByte(padByte);\n }\n } else {\n // public key op\n // pad with random non-zero values\n while(padNum > 0) {\n var numZeros = 0;\n var padBytes = forge.random.getBytes(padNum);\n for(var i = 0; i < padNum; ++i) {\n padByte = padBytes.charCodeAt(i);\n if(padByte === 0) {\n ++numZeros;\n } else {\n eb.putByte(padByte);\n }\n }\n padNum = numZeros;\n }\n }\n\n // zero followed by message\n eb.putByte(0x00);\n eb.putBytes(m);\n\n return eb;\n}\n\n/**\n * Decodes a message using PKCS#1 v1.5 padding.\n *\n * @param em the message to decode.\n * @param key the RSA key to use.\n * @param pub true if the key is a public key, false if it is private.\n * @param ml the message length, if specified.\n *\n * @return the decoded bytes.\n */\nfunction _decodePkcs1_v1_5(em, key, pub, ml) {\n // get the length of the modulus in bytes\n var k = Math.ceil(key.n.bitLength() / 8);\n\n /* It is an error if any of the following conditions occurs:\n\n 1. The encryption block EB cannot be parsed unambiguously.\n 2. The padding string PS consists of fewer than eight octets\n or is inconsisent with the block type BT.\n 3. The decryption process is a public-key operation and the block\n type BT is not 00 or 01, or the decryption process is a\n private-key operation and the block type is not 02.\n */\n\n // parse the encryption block\n var eb = forge.util.createBuffer(em);\n var first = eb.getByte();\n var bt = eb.getByte();\n if(first !== 0x00 ||\n (pub && bt !== 0x00 && bt !== 0x01) ||\n (!pub && bt != 0x02) ||\n (pub && bt === 0x00 && typeof(ml) === 'undefined')) {\n throw new Error('Encryption block is invalid.');\n }\n\n var padNum = 0;\n if(bt === 0x00) {\n // check all padding bytes for 0x00\n padNum = k - 3 - ml;\n for(var i = 0; i < padNum; ++i) {\n if(eb.getByte() !== 0x00) {\n throw new Error('Encryption block is invalid.');\n }\n }\n } else if(bt === 0x01) {\n // find the first byte that isn't 0xFF, should be after all padding\n padNum = 0;\n while(eb.length() > 1) {\n if(eb.getByte() !== 0xFF) {\n --eb.read;\n break;\n }\n ++padNum;\n }\n } else if(bt === 0x02) {\n // look for 0x00 byte\n padNum = 0;\n while(eb.length() > 1) {\n if(eb.getByte() === 0x00) {\n --eb.read;\n break;\n }\n ++padNum;\n }\n }\n\n // zero must be 0x00 and padNum must be (k - 3 - message length)\n var zero = eb.getByte();\n if(zero !== 0x00 || padNum !== (k - 3 - eb.length())) {\n throw new Error('Encryption block is invalid.');\n }\n\n return eb.getBytes();\n}\n\n/**\n * Runs the key-generation algorithm asynchronously, either in the background\n * via Web Workers, or using the main thread and setImmediate.\n *\n * @param state the key-pair generation state.\n * @param [options] options for key-pair generation:\n * workerScript the worker script URL.\n * workers the number of web workers (if supported) to use,\n * (default: 2, -1 to use estimated cores minus one).\n * workLoad the size of the work load, ie: number of possible prime\n * numbers for each web worker to check per work assignment,\n * (default: 100).\n * @param callback(err, keypair) called once the operation completes.\n */\nfunction _generateKeyPair(state, options, callback) {\n if(typeof options === 'function') {\n callback = options;\n options = {};\n }\n options = options || {};\n\n var opts = {\n algorithm: {\n name: options.algorithm || 'PRIMEINC',\n options: {\n workers: options.workers || 2,\n workLoad: options.workLoad || 100,\n workerScript: options.workerScript\n }\n }\n };\n if('prng' in options) {\n opts.prng = options.prng;\n }\n\n generate();\n\n function generate() {\n // find p and then q (done in series to simplify)\n getPrime(state.pBits, function(err, num) {\n if(err) {\n return callback(err);\n }\n state.p = num;\n if(state.q !== null) {\n return finish(err, state.q);\n }\n getPrime(state.qBits, finish);\n });\n }\n\n function getPrime(bits, callback) {\n forge.prime.generateProbablePrime(bits, opts, callback);\n }\n\n function finish(err, num) {\n if(err) {\n return callback(err);\n }\n\n // set q\n state.q = num;\n\n // ensure p is larger than q (swap them if not)\n if(state.p.compareTo(state.q) < 0) {\n var tmp = state.p;\n state.p = state.q;\n state.q = tmp;\n }\n\n // ensure p is coprime with e\n if(state.p.subtract(BigInteger.ONE).gcd(state.e)\n .compareTo(BigInteger.ONE) !== 0) {\n state.p = null;\n generate();\n return;\n }\n\n // ensure q is coprime with e\n if(state.q.subtract(BigInteger.ONE).gcd(state.e)\n .compareTo(BigInteger.ONE) !== 0) {\n state.q = null;\n getPrime(state.qBits, finish);\n return;\n }\n\n // compute phi: (p - 1)(q - 1) (Euler's totient function)\n state.p1 = state.p.subtract(BigInteger.ONE);\n state.q1 = state.q.subtract(BigInteger.ONE);\n state.phi = state.p1.multiply(state.q1);\n\n // ensure e and phi are coprime\n if(state.phi.gcd(state.e).compareTo(BigInteger.ONE) !== 0) {\n // phi and e aren't coprime, so generate a new p and q\n state.p = state.q = null;\n generate();\n return;\n }\n\n // create n, ensure n is has the right number of bits\n state.n = state.p.multiply(state.q);\n if(state.n.bitLength() !== state.bits) {\n // failed, get new q\n state.q = null;\n getPrime(state.qBits, finish);\n return;\n }\n\n // set keys\n var d = state.e.modInverse(state.phi);\n state.keys = {\n privateKey: pki.rsa.setPrivateKey(\n state.n, state.e, d, state.p, state.q,\n d.mod(state.p1), d.mod(state.q1),\n state.q.modInverse(state.p)),\n publicKey: pki.rsa.setPublicKey(state.n, state.e)\n };\n\n callback(null, state.keys);\n }\n}\n\n/**\n * Converts a positive BigInteger into 2's-complement big-endian bytes.\n *\n * @param b the big integer to convert.\n *\n * @return the bytes.\n */\nfunction _bnToBytes(b) {\n // prepend 0x00 if first byte >= 0x80\n var hex = b.toString(16);\n if(hex[0] >= '8') {\n hex = '00' + hex;\n }\n var bytes = forge.util.hexToBytes(hex);\n\n // ensure integer is minimally-encoded\n if(bytes.length > 1 &&\n // leading 0x00 for positive integer\n ((bytes.charCodeAt(0) === 0 &&\n (bytes.charCodeAt(1) & 0x80) === 0) ||\n // leading 0xFF for negative integer\n (bytes.charCodeAt(0) === 0xFF &&\n (bytes.charCodeAt(1) & 0x80) === 0x80))) {\n return bytes.substr(1);\n }\n return bytes;\n}\n\n/**\n * Returns the required number of Miller-Rabin tests to generate a\n * prime with an error probability of (1/2)^80.\n *\n * See Handbook of Applied Cryptography Chapter 4, Table 4.4.\n *\n * @param bits the bit size.\n *\n * @return the required number of iterations.\n */\nfunction _getMillerRabinTests(bits) {\n if(bits <= 100) return 27;\n if(bits <= 150) return 18;\n if(bits <= 200) return 15;\n if(bits <= 250) return 12;\n if(bits <= 300) return 9;\n if(bits <= 350) return 8;\n if(bits <= 400) return 7;\n if(bits <= 500) return 6;\n if(bits <= 600) return 5;\n if(bits <= 800) return 4;\n if(bits <= 1250) return 3;\n return 2;\n}\n\n/**\n * Performs feature detection on the Node crypto interface.\n *\n * @param fn the feature (function) to detect.\n *\n * @return true if detected, false if not.\n */\nfunction _detectNodeCrypto(fn) {\n return forge.util.isNodejs && typeof _crypto[fn] === 'function';\n}\n\n/**\n * Performs feature detection on the SubtleCrypto interface.\n *\n * @param fn the feature (function) to detect.\n *\n * @return true if detected, false if not.\n */\nfunction _detectSubtleCrypto(fn) {\n return (typeof util.globalScope !== 'undefined' &&\n typeof util.globalScope.crypto === 'object' &&\n typeof util.globalScope.crypto.subtle === 'object' &&\n typeof util.globalScope.crypto.subtle[fn] === 'function');\n}\n\n/**\n * Performs feature detection on the deprecated Microsoft Internet Explorer\n * outdated SubtleCrypto interface. This function should only be used after\n * checking for the modern, standard SubtleCrypto interface.\n *\n * @param fn the feature (function) to detect.\n *\n * @return true if detected, false if not.\n */\nfunction _detectSubtleMsCrypto(fn) {\n return (typeof util.globalScope !== 'undefined' &&\n typeof util.globalScope.msCrypto === 'object' &&\n typeof util.globalScope.msCrypto.subtle === 'object' &&\n typeof util.globalScope.msCrypto.subtle[fn] === 'function');\n}\n\nfunction _intToUint8Array(x) {\n var bytes = forge.util.hexToBytes(x.toString(16));\n var buffer = new Uint8Array(bytes.length);\n for(var i = 0; i < bytes.length; ++i) {\n buffer[i] = bytes.charCodeAt(i);\n }\n return buffer;\n}\n\nfunction _privateKeyFromJwk(jwk) {\n if(jwk.kty !== 'RSA') {\n throw new Error(\n 'Unsupported key algorithm \"' + jwk.kty + '\"; algorithm must be \"RSA\".');\n }\n return pki.setRsaPrivateKey(\n _base64ToBigInt(jwk.n),\n _base64ToBigInt(jwk.e),\n _base64ToBigInt(jwk.d),\n _base64ToBigInt(jwk.p),\n _base64ToBigInt(jwk.q),\n _base64ToBigInt(jwk.dp),\n _base64ToBigInt(jwk.dq),\n _base64ToBigInt(jwk.qi));\n}\n\nfunction _publicKeyFromJwk(jwk) {\n if(jwk.kty !== 'RSA') {\n throw new Error('Key algorithm must be \"RSA\".');\n }\n return pki.setRsaPublicKey(\n _base64ToBigInt(jwk.n),\n _base64ToBigInt(jwk.e));\n}\n\nfunction _base64ToBigInt(b64) {\n return new BigInteger(forge.util.bytesToHex(forge.util.decode64(b64)), 16);\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport ContentShareConstants from '../contentsharecontroller/ContentShareConstants';\nimport Modality from './Modality';\n\nexport default class DefaultModality implements Modality {\n private static MODALITY_SEPARATOR = ContentShareConstants.Modality[0];\n\n static MODALITY_CONTENT = ContentShareConstants.Modality.substring(1);\n\n constructor(private _id: string) {}\n\n id(): string {\n return this._id;\n }\n\n base(): string {\n if (!this._id) {\n return '';\n }\n return this._id.split(DefaultModality.MODALITY_SEPARATOR)[0];\n }\n\n modality(): string {\n if (!this._id) {\n return '';\n }\n const components = this._id.split(DefaultModality.MODALITY_SEPARATOR);\n if (components.length === 2) {\n return components[1];\n }\n return '';\n }\n\n hasModality(modality: string): boolean {\n return modality !== '' && this.modality() === modality;\n }\n\n withModality(modality: string): Modality {\n const m = new DefaultModality(this.base() + DefaultModality.MODALITY_SEPARATOR + modality);\n if (\n modality === '' ||\n this.base() === '' ||\n new DefaultModality(m._id).modality() !== modality\n ) {\n return new DefaultModality(this.base());\n }\n return m;\n }\n}\n","'use strict';\nvar fails = require('../internals/fails');\n\n// Detect IE8's incomplete defineProperty implementation\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] !== 7;\n});\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport Task from './Task';\n\nexport default class NoOpTask implements Task {\n cancel(): void {}\n\n name(): string {\n return 'NoOpTask';\n }\n\n run(): Promise {\n return Promise.resolve();\n }\n\n setParent(_parentTask: Task): void {}\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport DataMessage from '../datamessage/DataMessage';\nimport {\n SdkTranscriptFrame,\n SdkTranscriptionStatus,\n SdkTranscriptItem,\n} from '../signalingprotocol/SignalingProtocol';\nimport Transcript from './Transcript';\nimport TranscriptAlternative from './TranscriptAlternative';\nimport TranscriptEntity from './TranscriptEntity';\nimport TranscriptionStatus from './TranscriptionStatus';\nimport TranscriptionStatusType from './TranscriptionStatusType';\nimport TranscriptItem from './TranscriptItem';\nimport TranscriptItemType from './TranscriptItemType';\nimport TranscriptLanguageWithScore from './TranscriptLanguageWithScore';\nimport TranscriptResult from './TranscriptResult';\n\nconst TranscriptionStatusTypes = {\n [SdkTranscriptionStatus.Type.STARTED]: TranscriptionStatusType.STARTED,\n [SdkTranscriptionStatus.Type.INTERRUPTED]: TranscriptionStatusType.INTERRUPTED,\n [SdkTranscriptionStatus.Type.RESUMED]: TranscriptionStatusType.RESUMED,\n [SdkTranscriptionStatus.Type.STOPPED]: TranscriptionStatusType.STOPPED,\n [SdkTranscriptionStatus.Type.FAILED]: TranscriptionStatusType.FAILED,\n};\n\ntype TranscriptEvent = Transcript | TranscriptionStatus;\n\nexport class TranscriptEventConverter {\n /**\n * Decodes a list of TranscriptEvent from a data message.\n * @param dataMessage Data message to decode from\n * @returns List of TranscriptEvent\n * @throws {Error} If the data message payload cannot be decoded\n */\n static from(dataMessage: DataMessage): TranscriptEvent[] {\n let frame;\n try {\n frame = SdkTranscriptFrame.decode(dataMessage.data);\n } catch (e) {\n throw new Error('Cannot decode transcript data message: ' + e);\n }\n\n const transcriptEvents: TranscriptEvent[] = [];\n for (const sdkTranscriptEvent of frame.events) {\n if (sdkTranscriptEvent.status) {\n const transcriptionStatusType = TranscriptionStatusTypes[sdkTranscriptEvent.status.type];\n if (!transcriptionStatusType) {\n continue;\n }\n const transcriptionStatus = new TranscriptionStatus();\n transcriptionStatus.type = transcriptionStatusType;\n transcriptionStatus.eventTimeMs = sdkTranscriptEvent.status.eventTime as number;\n transcriptionStatus.transcriptionRegion = sdkTranscriptEvent.status.transcriptionRegion;\n transcriptionStatus.transcriptionConfiguration =\n sdkTranscriptEvent.status.transcriptionConfiguration;\n\n if (sdkTranscriptEvent.status.message) {\n transcriptionStatus.message = sdkTranscriptEvent.status.message;\n }\n\n transcriptEvents.push(transcriptionStatus);\n } else if (sdkTranscriptEvent.transcript) {\n const transcript = new Transcript();\n transcript.results = [];\n\n for (const result of sdkTranscriptEvent.transcript.results) {\n const transcriptResult: TranscriptResult = {\n channelId: result.channelId,\n isPartial: result.isPartial,\n resultId: result.resultId,\n startTimeMs: result.startTime as number,\n endTimeMs: result.endTime as number,\n alternatives: [],\n };\n\n if (result.languageCode) {\n transcriptResult.languageCode = result.languageCode;\n }\n\n if (result.languageIdentification && result.languageIdentification.length > 0) {\n transcriptResult.languageIdentification = [];\n for (const languageIdentification of result.languageIdentification) {\n const transcriptLanguageWithScore: TranscriptLanguageWithScore = {\n languageCode: languageIdentification.languageCode,\n score: languageIdentification.score,\n };\n\n transcriptResult.languageIdentification.push(transcriptLanguageWithScore);\n }\n }\n\n for (const alternative of result.alternatives) {\n const transcriptAlternative: TranscriptAlternative = {\n items: [],\n transcript: alternative.transcript,\n };\n\n for (const item of alternative.items) {\n const transcriptItem: TranscriptItem = {\n content: item.content,\n attendee: {\n attendeeId: item.speakerAttendeeId,\n externalUserId: item.speakerExternalUserId,\n },\n startTimeMs: item.startTime as number,\n endTimeMs: item.endTime as number,\n type: null,\n };\n\n if (item.vocabularyFilterMatch) {\n transcriptItem.vocabularyFilterMatch = item.vocabularyFilterMatch;\n }\n\n if (item.hasOwnProperty('stable')) {\n transcriptItem.stable = item.stable;\n }\n\n if (item.hasOwnProperty('confidence')) {\n transcriptItem.confidence = item.confidence;\n }\n\n switch (item.type) {\n case SdkTranscriptItem.Type.PRONUNCIATION:\n transcriptItem.type = TranscriptItemType.PRONUNCIATION;\n break;\n case SdkTranscriptItem.Type.PUNCTUATION:\n transcriptItem.type = TranscriptItemType.PUNCTUATION;\n break;\n }\n\n transcriptAlternative.items.push(transcriptItem);\n }\n\n for (const entity of alternative.entities) {\n if (!transcriptAlternative.entities) {\n transcriptAlternative.entities = [];\n }\n const transcriptEntity: TranscriptEntity = {\n category: entity.category,\n confidence: entity.confidence,\n content: entity.content,\n startTimeMs: entity.startTime as number,\n endTimeMs: entity.endTime as number,\n };\n\n if (entity.type) {\n transcriptEntity.type = entity.type;\n }\n transcriptAlternative.entities.push(transcriptEntity);\n }\n\n transcriptResult.alternatives.push(transcriptAlternative);\n }\n\n transcript.results.push(transcriptResult);\n }\n\n transcriptEvents.push(transcript);\n }\n }\n\n return transcriptEvents;\n }\n}\n\nexport default TranscriptEvent;\n","var AWS = require('./core');\nvar SequentialExecutor = require('./sequential_executor');\nvar DISCOVER_ENDPOINT = require('./discover_endpoint').discoverEndpoint;\n/**\n * The namespace used to register global event listeners for request building\n * and sending.\n */\nAWS.EventListeners = {\n /**\n * @!attribute VALIDATE_CREDENTIALS\n * A request listener that validates whether the request is being\n * sent with credentials.\n * Handles the {AWS.Request~validate 'validate' Request event}\n * @example Sending a request without validating credentials\n * var listener = AWS.EventListeners.Core.VALIDATE_CREDENTIALS;\n * request.removeListener('validate', listener);\n * @readonly\n * @return [Function]\n * @!attribute VALIDATE_REGION\n * A request listener that validates whether the region is set\n * for a request.\n * Handles the {AWS.Request~validate 'validate' Request event}\n * @example Sending a request without validating region configuration\n * var listener = AWS.EventListeners.Core.VALIDATE_REGION;\n * request.removeListener('validate', listener);\n * @readonly\n * @return [Function]\n * @!attribute VALIDATE_PARAMETERS\n * A request listener that validates input parameters in a request.\n * Handles the {AWS.Request~validate 'validate' Request event}\n * @example Sending a request without validating parameters\n * var listener = AWS.EventListeners.Core.VALIDATE_PARAMETERS;\n * request.removeListener('validate', listener);\n * @example Disable parameter validation globally\n * AWS.EventListeners.Core.removeListener('validate',\n * AWS.EventListeners.Core.VALIDATE_REGION);\n * @readonly\n * @return [Function]\n * @!attribute SEND\n * A request listener that initiates the HTTP connection for a\n * request being sent. Handles the {AWS.Request~send 'send' Request event}\n * @example Replacing the HTTP handler\n * var listener = AWS.EventListeners.Core.SEND;\n * request.removeListener('send', listener);\n * request.on('send', function(response) {\n * customHandler.send(response);\n * });\n * @return [Function]\n * @readonly\n * @!attribute HTTP_DATA\n * A request listener that reads data from the HTTP connection in order\n * to build the response data.\n * Handles the {AWS.Request~httpData 'httpData' Request event}.\n * Remove this handler if you are overriding the 'httpData' event and\n * do not want extra data processing and buffering overhead.\n * @example Disabling default data processing\n * var listener = AWS.EventListeners.Core.HTTP_DATA;\n * request.removeListener('httpData', listener);\n * @return [Function]\n * @readonly\n */\n Core: {} /* doc hack */\n};\n\n/**\n * @api private\n */\nfunction getOperationAuthtype(req) {\n if (!req.service.api.operations) {\n return '';\n }\n var operation = req.service.api.operations[req.operation];\n return operation ? operation.authtype : '';\n}\n\n/**\n * @api private\n */\nfunction getIdentityType(req) {\n var service = req.service;\n\n if (service.config.signatureVersion) {\n return service.config.signatureVersion;\n }\n\n if (service.api.signatureVersion) {\n return service.api.signatureVersion;\n }\n\n return getOperationAuthtype(req);\n}\n\nAWS.EventListeners = {\n Core: new SequentialExecutor().addNamedListeners(function(add, addAsync) {\n addAsync(\n 'VALIDATE_CREDENTIALS', 'validate',\n function VALIDATE_CREDENTIALS(req, done) {\n if (!req.service.api.signatureVersion && !req.service.config.signatureVersion) return done(); // none\n\n var identityType = getIdentityType(req);\n if (identityType === 'bearer') {\n req.service.config.getToken(function(err) {\n if (err) {\n req.response.error = AWS.util.error(err, {code: 'TokenError'});\n }\n done();\n });\n return;\n }\n\n req.service.config.getCredentials(function(err) {\n if (err) {\n req.response.error = AWS.util.error(err,\n {\n code: 'CredentialsError',\n message: 'Missing credentials in config, if using AWS_CONFIG_FILE, set AWS_SDK_LOAD_CONFIG=1'\n }\n );\n }\n done();\n });\n });\n\n add('VALIDATE_REGION', 'validate', function VALIDATE_REGION(req) {\n if (!req.service.isGlobalEndpoint) {\n var dnsHostRegex = new RegExp(/^([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9])$/);\n if (!req.service.config.region) {\n req.response.error = AWS.util.error(new Error(),\n {code: 'ConfigError', message: 'Missing region in config'});\n } else if (!dnsHostRegex.test(req.service.config.region)) {\n req.response.error = AWS.util.error(new Error(),\n {code: 'ConfigError', message: 'Invalid region in config'});\n }\n }\n });\n\n add('BUILD_IDEMPOTENCY_TOKENS', 'validate', function BUILD_IDEMPOTENCY_TOKENS(req) {\n if (!req.service.api.operations) {\n return;\n }\n var operation = req.service.api.operations[req.operation];\n if (!operation) {\n return;\n }\n var idempotentMembers = operation.idempotentMembers;\n if (!idempotentMembers.length) {\n return;\n }\n // creates a copy of params so user's param object isn't mutated\n var params = AWS.util.copy(req.params);\n for (var i = 0, iLen = idempotentMembers.length; i < iLen; i++) {\n if (!params[idempotentMembers[i]]) {\n // add the member\n params[idempotentMembers[i]] = AWS.util.uuid.v4();\n }\n }\n req.params = params;\n });\n\n add('VALIDATE_PARAMETERS', 'validate', function VALIDATE_PARAMETERS(req) {\n if (!req.service.api.operations) {\n return;\n }\n var rules = req.service.api.operations[req.operation].input;\n var validation = req.service.config.paramValidation;\n new AWS.ParamValidator(validation).validate(rules, req.params);\n });\n\n add('COMPUTE_CHECKSUM', 'afterBuild', function COMPUTE_CHECKSUM(req) {\n if (!req.service.api.operations) {\n return;\n }\n var operation = req.service.api.operations[req.operation];\n if (!operation) {\n return;\n }\n var body = req.httpRequest.body;\n var isNonStreamingPayload = body && (AWS.util.Buffer.isBuffer(body) || typeof body === 'string');\n var headers = req.httpRequest.headers;\n if (\n operation.httpChecksumRequired &&\n req.service.config.computeChecksums &&\n isNonStreamingPayload &&\n !headers['Content-MD5']\n ) {\n var md5 = AWS.util.crypto.md5(body, 'base64');\n headers['Content-MD5'] = md5;\n }\n });\n\n addAsync('COMPUTE_SHA256', 'afterBuild', function COMPUTE_SHA256(req, done) {\n req.haltHandlersOnError();\n if (!req.service.api.operations) {\n return;\n }\n var operation = req.service.api.operations[req.operation];\n var authtype = operation ? operation.authtype : '';\n if (!req.service.api.signatureVersion && !authtype && !req.service.config.signatureVersion) return done(); // none\n if (req.service.getSignerClass(req) === AWS.Signers.V4) {\n var body = req.httpRequest.body || '';\n if (authtype.indexOf('unsigned-body') >= 0) {\n req.httpRequest.headers['X-Amz-Content-Sha256'] = 'UNSIGNED-PAYLOAD';\n return done();\n }\n AWS.util.computeSha256(body, function(err, sha) {\n if (err) {\n done(err);\n }\n else {\n req.httpRequest.headers['X-Amz-Content-Sha256'] = sha;\n done();\n }\n });\n } else {\n done();\n }\n });\n\n add('SET_CONTENT_LENGTH', 'afterBuild', function SET_CONTENT_LENGTH(req) {\n var authtype = getOperationAuthtype(req);\n var payloadMember = AWS.util.getRequestPayloadShape(req);\n if (req.httpRequest.headers['Content-Length'] === undefined) {\n try {\n var length = AWS.util.string.byteLength(req.httpRequest.body);\n req.httpRequest.headers['Content-Length'] = length;\n } catch (err) {\n if (payloadMember && payloadMember.isStreaming) {\n if (payloadMember.requiresLength) {\n //streaming payload requires length(s3, glacier)\n throw err;\n } else if (authtype.indexOf('unsigned-body') >= 0) {\n //unbounded streaming payload(lex, mediastore)\n req.httpRequest.headers['Transfer-Encoding'] = 'chunked';\n return;\n } else {\n throw err;\n }\n }\n throw err;\n }\n }\n });\n\n add('SET_HTTP_HOST', 'afterBuild', function SET_HTTP_HOST(req) {\n req.httpRequest.headers['Host'] = req.httpRequest.endpoint.host;\n });\n\n add('SET_TRACE_ID', 'afterBuild', function SET_TRACE_ID(req) {\n var traceIdHeaderName = 'X-Amzn-Trace-Id';\n if (AWS.util.isNode() && !Object.hasOwnProperty.call(req.httpRequest.headers, traceIdHeaderName)) {\n var ENV_LAMBDA_FUNCTION_NAME = 'AWS_LAMBDA_FUNCTION_NAME';\n var ENV_TRACE_ID = '_X_AMZN_TRACE_ID';\n var functionName = process.env[ENV_LAMBDA_FUNCTION_NAME];\n var traceId = process.env[ENV_TRACE_ID];\n if (\n typeof functionName === 'string' &&\n functionName.length > 0 &&\n typeof traceId === 'string' &&\n traceId.length > 0\n ) {\n req.httpRequest.headers[traceIdHeaderName] = traceId;\n }\n }\n });\n\n add('RESTART', 'restart', function RESTART() {\n var err = this.response.error;\n if (!err || !err.retryable) return;\n\n this.httpRequest = new AWS.HttpRequest(\n this.service.endpoint,\n this.service.region\n );\n\n if (this.response.retryCount < this.service.config.maxRetries) {\n this.response.retryCount++;\n } else {\n this.response.error = null;\n }\n });\n\n var addToHead = true;\n addAsync('DISCOVER_ENDPOINT', 'sign', DISCOVER_ENDPOINT, addToHead);\n\n addAsync('SIGN', 'sign', function SIGN(req, done) {\n var service = req.service;\n var identityType = getIdentityType(req);\n if (!identityType || identityType.length === 0) return done(); // none\n\n if (identityType === 'bearer') {\n service.config.getToken(function (err, token) {\n if (err) {\n req.response.error = err;\n return done();\n }\n\n try {\n var SignerClass = service.getSignerClass(req);\n var signer = new SignerClass(req.httpRequest);\n signer.addAuthorization(token);\n } catch (e) {\n req.response.error = e;\n }\n done();\n });\n } else {\n service.config.getCredentials(function (err, credentials) {\n if (err) {\n req.response.error = err;\n return done();\n }\n\n try {\n var date = service.getSkewCorrectedDate();\n var SignerClass = service.getSignerClass(req);\n var operations = req.service.api.operations || {};\n var operation = operations[req.operation];\n var signer = new SignerClass(req.httpRequest,\n service.getSigningName(req),\n {\n signatureCache: service.config.signatureCache,\n operation: operation,\n signatureVersion: service.api.signatureVersion\n });\n signer.setServiceClientId(service._clientId);\n\n // clear old authorization headers\n delete req.httpRequest.headers['Authorization'];\n delete req.httpRequest.headers['Date'];\n delete req.httpRequest.headers['X-Amz-Date'];\n\n // add new authorization\n signer.addAuthorization(credentials, date);\n req.signedAt = date;\n } catch (e) {\n req.response.error = e;\n }\n done();\n });\n\n }\n });\n\n add('VALIDATE_RESPONSE', 'validateResponse', function VALIDATE_RESPONSE(resp) {\n if (this.service.successfulResponse(resp, this)) {\n resp.data = {};\n resp.error = null;\n } else {\n resp.data = null;\n resp.error = AWS.util.error(new Error(),\n {code: 'UnknownError', message: 'An unknown error occurred.'});\n }\n });\n\n add('ERROR', 'error', function ERROR(err, resp) {\n var awsQueryCompatible = resp.request.service.api.awsQueryCompatible;\n if (awsQueryCompatible) {\n var headers = resp.httpResponse.headers;\n var queryErrorCode = headers ? headers['x-amzn-query-error'] : undefined;\n if (queryErrorCode && queryErrorCode.includes(';')) {\n resp.error.code = queryErrorCode.split(';')[0];\n }\n }\n }, true);\n\n addAsync('SEND', 'send', function SEND(resp, done) {\n resp.httpResponse._abortCallback = done;\n resp.error = null;\n resp.data = null;\n\n function callback(httpResp) {\n resp.httpResponse.stream = httpResp;\n var stream = resp.request.httpRequest.stream;\n var service = resp.request.service;\n var api = service.api;\n var operationName = resp.request.operation;\n var operation = api.operations[operationName] || {};\n\n httpResp.on('headers', function onHeaders(statusCode, headers, statusMessage) {\n resp.request.emit(\n 'httpHeaders',\n [statusCode, headers, resp, statusMessage]\n );\n\n if (!resp.httpResponse.streaming) {\n if (AWS.HttpClient.streamsApiVersion === 2) { // streams2 API check\n // if we detect event streams, we're going to have to\n // return the stream immediately\n if (operation.hasEventOutput && service.successfulResponse(resp)) {\n // skip reading the IncomingStream\n resp.request.emit('httpDone');\n done();\n return;\n }\n\n httpResp.on('readable', function onReadable() {\n var data = httpResp.read();\n if (data !== null) {\n resp.request.emit('httpData', [data, resp]);\n }\n });\n } else { // legacy streams API\n httpResp.on('data', function onData(data) {\n resp.request.emit('httpData', [data, resp]);\n });\n }\n }\n });\n\n httpResp.on('end', function onEnd() {\n if (!stream || !stream.didCallback) {\n if (AWS.HttpClient.streamsApiVersion === 2 && (operation.hasEventOutput && service.successfulResponse(resp))) {\n // don't concatenate response chunks when streaming event stream data when response is successful\n return;\n }\n resp.request.emit('httpDone');\n done();\n }\n });\n }\n\n function progress(httpResp) {\n httpResp.on('sendProgress', function onSendProgress(value) {\n resp.request.emit('httpUploadProgress', [value, resp]);\n });\n\n httpResp.on('receiveProgress', function onReceiveProgress(value) {\n resp.request.emit('httpDownloadProgress', [value, resp]);\n });\n }\n\n function error(err) {\n if (err.code !== 'RequestAbortedError') {\n var errCode = err.code === 'TimeoutError' ? err.code : 'NetworkingError';\n err = AWS.util.error(err, {\n code: errCode,\n region: resp.request.httpRequest.region,\n hostname: resp.request.httpRequest.endpoint.hostname,\n retryable: true\n });\n }\n resp.error = err;\n resp.request.emit('httpError', [resp.error, resp], function() {\n done();\n });\n }\n\n function executeSend() {\n var http = AWS.HttpClient.getInstance();\n var httpOptions = resp.request.service.config.httpOptions || {};\n try {\n var stream = http.handleRequest(resp.request.httpRequest, httpOptions,\n callback, error);\n progress(stream);\n } catch (err) {\n error(err);\n }\n }\n var timeDiff = (resp.request.service.getSkewCorrectedDate() - this.signedAt) / 1000;\n if (timeDiff >= 60 * 10) { // if we signed 10min ago, re-sign\n this.emit('sign', [this], function(err) {\n if (err) done(err);\n else executeSend();\n });\n } else {\n executeSend();\n }\n });\n\n add('HTTP_HEADERS', 'httpHeaders',\n function HTTP_HEADERS(statusCode, headers, resp, statusMessage) {\n resp.httpResponse.statusCode = statusCode;\n resp.httpResponse.statusMessage = statusMessage;\n resp.httpResponse.headers = headers;\n resp.httpResponse.body = AWS.util.buffer.toBuffer('');\n resp.httpResponse.buffers = [];\n resp.httpResponse.numBytes = 0;\n var dateHeader = headers.date || headers.Date;\n var service = resp.request.service;\n if (dateHeader) {\n var serverTime = Date.parse(dateHeader);\n if (service.config.correctClockSkew\n && service.isClockSkewed(serverTime)) {\n service.applyClockOffset(serverTime);\n }\n }\n });\n\n add('HTTP_DATA', 'httpData', function HTTP_DATA(chunk, resp) {\n if (chunk) {\n if (AWS.util.isNode()) {\n resp.httpResponse.numBytes += chunk.length;\n\n var total = resp.httpResponse.headers['content-length'];\n var progress = { loaded: resp.httpResponse.numBytes, total: total };\n resp.request.emit('httpDownloadProgress', [progress, resp]);\n }\n\n resp.httpResponse.buffers.push(AWS.util.buffer.toBuffer(chunk));\n }\n });\n\n add('HTTP_DONE', 'httpDone', function HTTP_DONE(resp) {\n // convert buffers array into single buffer\n if (resp.httpResponse.buffers && resp.httpResponse.buffers.length > 0) {\n var body = AWS.util.buffer.concat(resp.httpResponse.buffers);\n resp.httpResponse.body = body;\n }\n delete resp.httpResponse.numBytes;\n delete resp.httpResponse.buffers;\n });\n\n add('FINALIZE_ERROR', 'retry', function FINALIZE_ERROR(resp) {\n if (resp.httpResponse.statusCode) {\n resp.error.statusCode = resp.httpResponse.statusCode;\n if (resp.error.retryable === undefined) {\n resp.error.retryable = this.service.retryableError(resp.error, this);\n }\n }\n });\n\n add('INVALIDATE_CREDENTIALS', 'retry', function INVALIDATE_CREDENTIALS(resp) {\n if (!resp.error) return;\n switch (resp.error.code) {\n case 'RequestExpired': // EC2 only\n case 'ExpiredTokenException':\n case 'ExpiredToken':\n resp.error.retryable = true;\n resp.request.service.config.credentials.expired = true;\n }\n });\n\n add('EXPIRED_SIGNATURE', 'retry', function EXPIRED_SIGNATURE(resp) {\n var err = resp.error;\n if (!err) return;\n if (typeof err.code === 'string' && typeof err.message === 'string') {\n if (err.code.match(/Signature/) && err.message.match(/expired/)) {\n resp.error.retryable = true;\n }\n }\n });\n\n add('CLOCK_SKEWED', 'retry', function CLOCK_SKEWED(resp) {\n if (!resp.error) return;\n if (this.service.clockSkewError(resp.error)\n && this.service.config.correctClockSkew) {\n resp.error.retryable = true;\n }\n });\n\n add('REDIRECT', 'retry', function REDIRECT(resp) {\n if (resp.error && resp.error.statusCode >= 300 &&\n resp.error.statusCode < 400 && resp.httpResponse.headers['location']) {\n this.httpRequest.endpoint =\n new AWS.Endpoint(resp.httpResponse.headers['location']);\n this.httpRequest.headers['Host'] = this.httpRequest.endpoint.host;\n this.httpRequest.path = this.httpRequest.endpoint.path;\n resp.error.redirect = true;\n resp.error.retryable = true;\n }\n });\n\n add('RETRY_CHECK', 'retry', function RETRY_CHECK(resp) {\n if (resp.error) {\n if (resp.error.redirect && resp.redirectCount < resp.maxRedirects) {\n resp.error.retryDelay = 0;\n } else if (resp.retryCount < resp.maxRetries) {\n resp.error.retryDelay = this.service.retryDelays(resp.retryCount, resp.error) || 0;\n }\n }\n });\n\n addAsync('RESET_RETRY_STATE', 'afterRetry', function RESET_RETRY_STATE(resp, done) {\n var delay, willRetry = false;\n\n if (resp.error) {\n delay = resp.error.retryDelay || 0;\n if (resp.error.retryable && resp.retryCount < resp.maxRetries) {\n resp.retryCount++;\n willRetry = true;\n } else if (resp.error.redirect && resp.redirectCount < resp.maxRedirects) {\n resp.redirectCount++;\n willRetry = true;\n }\n }\n\n // delay < 0 is a signal from customBackoff to skip retries\n if (willRetry && delay >= 0) {\n resp.error = null;\n setTimeout(done, delay);\n } else {\n done();\n }\n });\n }),\n\n CorePost: new SequentialExecutor().addNamedListeners(function(add) {\n add('EXTRACT_REQUEST_ID', 'extractData', AWS.util.extractRequestId);\n add('EXTRACT_REQUEST_ID', 'extractError', AWS.util.extractRequestId);\n\n add('ENOTFOUND_ERROR', 'httpError', function ENOTFOUND_ERROR(err) {\n function isDNSError(err) {\n return err.errno === 'ENOTFOUND' ||\n typeof err.errno === 'number' &&\n typeof AWS.util.getSystemErrorName === 'function' &&\n ['EAI_NONAME', 'EAI_NODATA'].indexOf(AWS.util.getSystemErrorName(err.errno) >= 0);\n }\n if (err.code === 'NetworkingError' && isDNSError(err)) {\n var message = 'Inaccessible host: `' + err.hostname + '\\' at port `' + err.port +\n '\\'. This service may not be available in the `' + err.region +\n '\\' region.';\n this.response.error = AWS.util.error(new Error(message), {\n code: 'UnknownEndpoint',\n region: err.region,\n hostname: err.hostname,\n retryable: true,\n originalError: err\n });\n }\n });\n }),\n\n Logger: new SequentialExecutor().addNamedListeners(function(add) {\n add('LOG_REQUEST', 'complete', function LOG_REQUEST(resp) {\n var req = resp.request;\n var logger = req.service.config.logger;\n if (!logger) return;\n function filterSensitiveLog(inputShape, shape) {\n if (!shape) {\n return shape;\n }\n if (inputShape.isSensitive) {\n return '***SensitiveInformation***';\n }\n switch (inputShape.type) {\n case 'structure':\n var struct = {};\n AWS.util.each(shape, function(subShapeName, subShape) {\n if (Object.prototype.hasOwnProperty.call(inputShape.members, subShapeName)) {\n struct[subShapeName] = filterSensitiveLog(inputShape.members[subShapeName], subShape);\n } else {\n struct[subShapeName] = subShape;\n }\n });\n return struct;\n case 'list':\n var list = [];\n AWS.util.arrayEach(shape, function(subShape, index) {\n list.push(filterSensitiveLog(inputShape.member, subShape));\n });\n return list;\n case 'map':\n var map = {};\n AWS.util.each(shape, function(key, value) {\n map[key] = filterSensitiveLog(inputShape.value, value);\n });\n return map;\n default:\n return shape;\n }\n }\n\n function buildMessage() {\n var time = resp.request.service.getSkewCorrectedDate().getTime();\n var delta = (time - req.startTime.getTime()) / 1000;\n var ansi = logger.isTTY ? true : false;\n var status = resp.httpResponse.statusCode;\n var censoredParams = req.params;\n if (\n req.service.api.operations &&\n req.service.api.operations[req.operation] &&\n req.service.api.operations[req.operation].input\n ) {\n var inputShape = req.service.api.operations[req.operation].input;\n censoredParams = filterSensitiveLog(inputShape, req.params);\n }\n var params = require('util').inspect(censoredParams, true, null);\n var message = '';\n if (ansi) message += '\\x1B[33m';\n message += '[AWS ' + req.service.serviceIdentifier + ' ' + status;\n message += ' ' + delta.toString() + 's ' + resp.retryCount + ' retries]';\n if (ansi) message += '\\x1B[0;1m';\n message += ' ' + AWS.util.string.lowerFirst(req.operation);\n message += '(' + params + ')';\n if (ansi) message += '\\x1B[0m';\n return message;\n }\n\n var line = buildMessage();\n if (typeof logger.log === 'function') {\n logger.log(line);\n } else if (typeof logger.write === 'function') {\n logger.write(line + '\\n');\n }\n });\n }),\n\n Json: new SequentialExecutor().addNamedListeners(function(add) {\n var svc = require('./protocol/json');\n add('BUILD', 'build', svc.buildRequest);\n add('EXTRACT_DATA', 'extractData', svc.extractData);\n add('EXTRACT_ERROR', 'extractError', svc.extractError);\n }),\n\n Rest: new SequentialExecutor().addNamedListeners(function(add) {\n var svc = require('./protocol/rest');\n add('BUILD', 'build', svc.buildRequest);\n add('EXTRACT_DATA', 'extractData', svc.extractData);\n add('EXTRACT_ERROR', 'extractError', svc.extractError);\n }),\n\n RestJson: new SequentialExecutor().addNamedListeners(function(add) {\n var svc = require('./protocol/rest_json');\n add('BUILD', 'build', svc.buildRequest);\n add('EXTRACT_DATA', 'extractData', svc.extractData);\n add('EXTRACT_ERROR', 'extractError', svc.extractError);\n add('UNSET_CONTENT_LENGTH', 'afterBuild', svc.unsetContentLength);\n }),\n\n RestXml: new SequentialExecutor().addNamedListeners(function(add) {\n var svc = require('./protocol/rest_xml');\n add('BUILD', 'build', svc.buildRequest);\n add('EXTRACT_DATA', 'extractData', svc.extractData);\n add('EXTRACT_ERROR', 'extractError', svc.extractError);\n }),\n\n Query: new SequentialExecutor().addNamedListeners(function(add) {\n var svc = require('./protocol/query');\n add('BUILD', 'build', svc.buildRequest);\n add('EXTRACT_DATA', 'extractData', svc.extractData);\n add('EXTRACT_ERROR', 'extractError', svc.extractError);\n })\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport Logger from './Logger';\nimport LogLevel from './LogLevel';\n\n/**\n * MultiLogger writes logs to multiple other loggers\n */\nexport default class MultiLogger implements Logger {\n private _loggers: Logger[];\n\n constructor(...loggers: Logger[]) {\n this._loggers = loggers;\n }\n\n info(msg: string): void {\n for (const logger of this._loggers) {\n logger.info(msg);\n }\n }\n\n warn(msg: string): void {\n for (const logger of this._loggers) {\n logger.warn(msg);\n }\n }\n\n error(msg: string): void {\n for (const logger of this._loggers) {\n logger.error(msg);\n }\n }\n\n debug(debugFunction: string | (() => string)): void {\n let message: string;\n let memoized: string | (() => string);\n if (typeof debugFunction === 'string') {\n memoized = debugFunction;\n } else if (debugFunction) {\n memoized = () => {\n if (!message) {\n message = debugFunction();\n }\n return message;\n };\n } else {\n memoized = '' + debugFunction;\n }\n\n for (const logger of this._loggers) {\n logger.debug(memoized);\n }\n }\n\n setLogLevel(level: LogLevel): void {\n for (const logger of this._loggers) {\n logger.setLogLevel(level);\n }\n }\n\n getLogLevel(): LogLevel {\n for (const logger of this._loggers) {\n return logger.getLogLevel();\n }\n return LogLevel.OFF;\n }\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport VideoFrameBuffer from './VideoFrameBuffer';\nimport VideoFrameProcessor from './VideoFrameProcessor';\n\n/**\n * [[NoOpVideoFrameProcessor]] implements [[VideoFrameProcessor]].\n * It's a no-op processor and input is passed to output directly.\n */\nexport default class NoOpVideoFrameProcessor implements VideoFrameProcessor {\n async process(buffers: VideoFrameBuffer[]): Promise {\n return buffers;\n }\n\n async destroy(): Promise {\n return;\n }\n}\n","var Collection = require('./collection');\nvar Operation = require('./operation');\nvar Shape = require('./shape');\nvar Paginator = require('./paginator');\nvar ResourceWaiter = require('./resource_waiter');\nvar metadata = require('../../apis/metadata.json');\n\nvar util = require('../util');\nvar property = util.property;\nvar memoizedProperty = util.memoizedProperty;\n\nfunction Api(api, options) {\n var self = this;\n api = api || {};\n options = options || {};\n options.api = this;\n\n api.metadata = api.metadata || {};\n\n var serviceIdentifier = options.serviceIdentifier;\n delete options.serviceIdentifier;\n\n property(this, 'isApi', true, false);\n property(this, 'apiVersion', api.metadata.apiVersion);\n property(this, 'endpointPrefix', api.metadata.endpointPrefix);\n property(this, 'signingName', api.metadata.signingName);\n property(this, 'globalEndpoint', api.metadata.globalEndpoint);\n property(this, 'signatureVersion', api.metadata.signatureVersion);\n property(this, 'jsonVersion', api.metadata.jsonVersion);\n property(this, 'targetPrefix', api.metadata.targetPrefix);\n property(this, 'protocol', api.metadata.protocol);\n property(this, 'timestampFormat', api.metadata.timestampFormat);\n property(this, 'xmlNamespaceUri', api.metadata.xmlNamespace);\n property(this, 'abbreviation', api.metadata.serviceAbbreviation);\n property(this, 'fullName', api.metadata.serviceFullName);\n property(this, 'serviceId', api.metadata.serviceId);\n if (serviceIdentifier && metadata[serviceIdentifier]) {\n property(this, 'xmlNoDefaultLists', metadata[serviceIdentifier].xmlNoDefaultLists, false);\n }\n\n memoizedProperty(this, 'className', function() {\n var name = api.metadata.serviceAbbreviation || api.metadata.serviceFullName;\n if (!name) return null;\n\n name = name.replace(/^Amazon|AWS\\s*|\\(.*|\\s+|\\W+/g, '');\n if (name === 'ElasticLoadBalancing') name = 'ELB';\n return name;\n });\n\n function addEndpointOperation(name, operation) {\n if (operation.endpointoperation === true) {\n property(self, 'endpointOperation', util.string.lowerFirst(name));\n }\n if (operation.endpointdiscovery && !self.hasRequiredEndpointDiscovery) {\n property(\n self,\n 'hasRequiredEndpointDiscovery',\n operation.endpointdiscovery.required === true\n );\n }\n }\n\n property(this, 'operations', new Collection(api.operations, options, function(name, operation) {\n return new Operation(name, operation, options);\n }, util.string.lowerFirst, addEndpointOperation));\n\n property(this, 'shapes', new Collection(api.shapes, options, function(name, shape) {\n return Shape.create(shape, options);\n }));\n\n property(this, 'paginators', new Collection(api.paginators, options, function(name, paginator) {\n return new Paginator(name, paginator, options);\n }));\n\n property(this, 'waiters', new Collection(api.waiters, options, function(name, waiter) {\n return new ResourceWaiter(name, waiter, options);\n }, util.string.lowerFirst));\n\n if (options.documentation) {\n property(this, 'documentation', api.documentation);\n property(this, 'documentationUrl', api.documentationUrl);\n }\n property(this, 'awsQueryCompatible', api.metadata.awsQueryCompatible);\n}\n\n/**\n * @api private\n */\nmodule.exports = Api;\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nenum TranscriptionStatusType {\n STARTED = 'started',\n INTERRUPTED = 'interrupted',\n RESUMED = 'resumed',\n STOPPED = 'stopped',\n FAILED = 'failed',\n}\n\nexport default TranscriptionStatusType;\n","'use strict';\n\nvar whichTypedArray = require('which-typed-array');\n\n/** @type {import('.')} */\nmodule.exports = function isTypedArray(value) {\n\treturn !!whichTypedArray(value);\n};\n","/**\n * The main AWS namespace\n */\nvar AWS = { util: require('./util') };\n\n/**\n * @api private\n * @!macro [new] nobrowser\n * @note This feature is not supported in the browser environment of the SDK.\n */\nvar _hidden = {}; _hidden.toString(); // hack to parse macro\n\n/**\n * @api private\n */\nmodule.exports = AWS;\n\nAWS.util.update(AWS, {\n\n /**\n * @constant\n */\n VERSION: '2.1692.0',\n\n /**\n * @api private\n */\n Signers: {},\n\n /**\n * @api private\n */\n Protocol: {\n Json: require('./protocol/json'),\n Query: require('./protocol/query'),\n Rest: require('./protocol/rest'),\n RestJson: require('./protocol/rest_json'),\n RestXml: require('./protocol/rest_xml')\n },\n\n /**\n * @api private\n */\n XML: {\n Builder: require('./xml/builder'),\n Parser: null // conditionally set based on environment\n },\n\n /**\n * @api private\n */\n JSON: {\n Builder: require('./json/builder'),\n Parser: require('./json/parser')\n },\n\n /**\n * @api private\n */\n Model: {\n Api: require('./model/api'),\n Operation: require('./model/operation'),\n Shape: require('./model/shape'),\n Paginator: require('./model/paginator'),\n ResourceWaiter: require('./model/resource_waiter')\n },\n\n /**\n * @api private\n */\n apiLoader: require('./api_loader'),\n\n /**\n * @api private\n */\n EndpointCache: require('../vendor/endpoint-cache').EndpointCache\n});\nrequire('./sequential_executor');\nrequire('./service');\nrequire('./config');\nrequire('./http');\nrequire('./event_listeners');\nrequire('./request');\nrequire('./response');\nrequire('./resource_waiter');\nrequire('./signers/request_signer');\nrequire('./param_validator');\nrequire('./maintenance_mode_message');\n\n/**\n * @readonly\n * @return [AWS.SequentialExecutor] a collection of global event listeners that\n * are attached to every sent request.\n * @see AWS.Request AWS.Request for a list of events to listen for\n * @example Logging the time taken to send a request\n * AWS.events.on('send', function startSend(resp) {\n * resp.startTime = new Date().getTime();\n * }).on('complete', function calculateTime(resp) {\n * var time = (new Date().getTime() - resp.startTime) / 1000;\n * console.log('Request took ' + time + ' seconds');\n * });\n *\n * new AWS.S3().listBuckets(); // prints 'Request took 0.285 seconds'\n */\nAWS.events = new AWS.SequentialExecutor();\n\n//create endpoint cache lazily\nAWS.util.memoizedProperty(AWS, 'endpointCache', function() {\n return new AWS.EndpointCache(AWS.config.endpointCacheSize);\n}, true);\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';\nvar classof = require('../internals/classof');\nvar hasOwn = require('../internals/has-own-property');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar Iterators = require('../internals/iterators');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar $Object = Object;\n\nmodule.exports = function (it) {\n if (isNullOrUndefined(it)) return false;\n var O = $Object(it);\n return O[ITERATOR] !== undefined\n || '@@iterator' in O\n || hasOwn(Iterators, classof(O));\n};\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['waf'] = {};\nAWS.WAF = Service.defineService('waf', ['2015-08-24']);\nObject.defineProperty(apiLoader.services['waf'], '2015-08-24', {\n get: function get() {\n var model = require('../apis/waf-2015-08-24.min.json');\n model.paginators = require('../apis/waf-2015-08-24.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.WAF;\n","'use strict';\nvar anObject = require('../internals/an-object');\n\n// https://tc39.github.io/proposal-setmap-offrom/\nmodule.exports = function (C, adder, ENTRY) {\n return function of() {\n var result = new C();\n var length = arguments.length;\n for (var index = 0; index < length; index++) {\n var entry = arguments[index];\n if (ENTRY) adder(result, anObject(entry)[0], entry[1]);\n else adder(result, entry);\n } return result;\n };\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar aCallable = require('../internals/a-callable');\n\nmodule.exports = function (object, key, method) {\n try {\n // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\n return uncurryThis(aCallable(Object.getOwnPropertyDescriptor(object, key)[method]));\n } catch (error) { /* empty */ }\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","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['cur'] = {};\nAWS.CUR = Service.defineService('cur', ['2017-01-06']);\nObject.defineProperty(apiLoader.services['cur'], '2017-01-06', {\n get: function get() {\n var model = require('../apis/cur-2017-01-06.min.json');\n model.paginators = require('../apis/cur-2017-01-06.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.CUR;\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport AudioVideoControllerState from '../audiovideocontroller/AudioVideoControllerState';\nimport RemovableObserver from '../removableobserver/RemovableObserver';\nimport VideoTile from '../videotile/VideoTile';\nimport VideoTileState from '../videotile/VideoTileState';\nimport BaseTask from './BaseTask';\n\n/*\n * [[CreatePeerConnectionTask]] sets up the peer connection object.\n */\nexport default class CreatePeerConnectionTask extends BaseTask implements RemovableObserver {\n protected taskName = 'CreatePeerConnectionTask';\n\n private removeTrackAddedEventListener: (() => void) | null = null;\n private removeTrackRemovedEventListeners: { [trackId: string]: () => void } = {};\n\n private readonly trackEvents: string[] = [\n 'ended',\n 'mute',\n 'unmute',\n 'isolationchange',\n 'overconstrained',\n ];\n private removeVideoTrackEventListeners: { [trackId: string]: (() => void)[] } = {};\n\n static readonly REMOVE_HANDLER_INTERVAL_MS: number = 10000;\n\n constructor(private context: AudioVideoControllerState) {\n super(context.logger);\n }\n\n removeObserver(): void {\n this.removeTrackAddedEventListener && this.removeTrackAddedEventListener();\n for (const trackId in this.removeTrackRemovedEventListeners) {\n this.removeTrackRemovedEventListeners[trackId]();\n }\n }\n\n private addPeerConnectionEventLogger(): void {\n const peer = this.context.peer;\n peer.addEventListener('connectionstatechange', () => {\n this.context.logger.info(`peer connection state changed: ${peer.connectionState}`);\n });\n peer.addEventListener('negotiationneeded', () => {\n this.context.logger.info('peer connection negotiation is needed');\n });\n peer.addEventListener('icegatheringstatechange', () => {\n this.context.logger.info(\n `peer connection ice gathering state changed: ${peer.iceGatheringState}`\n );\n });\n peer.addEventListener('icecandidate', (event: RTCPeerConnectionIceEvent) => {\n this.context.logger.info(\n `peer connection ice candidate: ${event.candidate ? event.candidate.candidate : '(null)'}`\n );\n });\n peer.addEventListener('iceconnectionstatechange', () => {\n this.context.logger.info(\n `peer connection ice connection state changed: ${peer.iceConnectionState}`\n );\n });\n }\n\n async run(): Promise {\n this.context.removableObservers.push(this);\n const hasTurnCredentials =\n this.context.turnCredentials && this.context.turnCredentials.uris.length > 0;\n const configuration: RTCConfiguration = hasTurnCredentials\n ? {\n iceServers: [\n {\n urls: this.context.turnCredentials.uris,\n username: this.context.turnCredentials.username,\n credential: this.context.turnCredentials.password,\n credentialType: 'password',\n },\n ],\n iceTransportPolicy: 'relay',\n }\n : {};\n configuration.bundlePolicy = this.context.browserBehavior.requiresBundlePolicy();\n // @ts-ignore\n configuration.sdpSemantics = 'unified-plan';\n // @ts-ignore\n configuration.encodedInsertableStreams = this.context.audioProfile.hasRedundancyEnabled();\n if (this.context.peer) {\n this.context.logger.info('reusing peer connection');\n } else {\n this.context.logger.info('creating new peer connection');\n // @ts-ignore\n this.context.peer = new RTCPeerConnection(configuration);\n this.addPeerConnectionEventLogger();\n }\n\n this.removeTrackAddedEventListener = () => {\n if (this.context.peer) {\n this.context.peer.removeEventListener('track', this.trackAddedHandler);\n }\n this.removeTrackAddedEventListener = null;\n };\n this.context.peer.addEventListener('track', this.trackAddedHandler);\n }\n\n private trackAddedHandler = (event: RTCTrackEvent): void => {\n const track: MediaStreamTrack = event.track;\n this.context.logger.info(\n `received track event: kind=${track.kind} id=${track.id} label=${track.label}`\n );\n\n if (event.transceiver && event.transceiver.currentDirection === 'inactive') {\n return;\n }\n\n if (event.streams.length === 0) {\n this.context.logger.warn(`Track event but no stream`);\n return;\n }\n\n const stream: MediaStream = event.streams[0];\n if (track.kind === 'audio') {\n this.context.audioMixController.bindAudioStream(stream);\n } else if (track.kind === 'video' && !this.trackIsVideoInput(track)) {\n this.addRemoteVideoTrack(track, stream);\n }\n };\n\n private trackIsVideoInput(track: MediaStreamTrack): boolean {\n if (this.context.transceiverController.useTransceivers()) {\n this.logger.debug(() => {\n return `getting video track type`;\n });\n return this.context.transceiverController.trackIsVideoInput(track);\n }\n return false;\n }\n\n private addRemoteVideoTrack(track: MediaStreamTrack, stream: MediaStream): void {\n const trackId = stream.id;\n const attendeeId = this.context.videoStreamIndex.attendeeIdForTrack(trackId);\n let skipAdding: boolean;\n let tile: VideoTile;\n if (this.context.videoTileController.getVideoTileForAttendeeId) {\n tile = this.context.videoTileController.getVideoTileForAttendeeId(attendeeId);\n skipAdding = !!tile?.state()?.boundVideoStream;\n } else {\n skipAdding = this.context.videoTileController.haveVideoTileForAttendeeId(attendeeId);\n }\n\n if (skipAdding) {\n this.context.logger.info(\n `Not adding remote track. Already have tile for attendeeId: ${attendeeId}`\n );\n return;\n }\n\n if (!tile) {\n tile = this.context.videoTileController.addVideoTile();\n this.logger.info(`Created video tile ${tile.id()}`);\n }\n let streamId: number | null = this.context.videoStreamIndex.streamIdForTrack(trackId);\n if (typeof streamId === 'undefined') {\n this.logger.warn(`stream not found for tile=${tile.id()} track=${trackId}`);\n streamId = null;\n }\n let groupId = this.context.videoStreamIndex.groupIdForStreamId(streamId);\n if (groupId === undefined) {\n groupId = null;\n }\n\n for (let i = 0; i < this.trackEvents.length; i++) {\n const trackEvent: string = this.trackEvents[i];\n const videoTracks = stream.getVideoTracks();\n if (videoTracks && videoTracks.length) {\n const videoTrack: MediaStreamTrack = videoTracks[0];\n const callback: EventListenerOrEventListenerObject = (): void => {\n this.context.logger.info(\n `received the ${trackEvent} event for tile=${tile.id()} id=${\n track.id\n } streamId=${streamId}`\n );\n if (trackEvent === 'ended') {\n this.removeRemoteVideoTrack(track, tile.state());\n }\n };\n videoTrack.addEventListener(trackEvent, callback);\n if (!this.removeVideoTrackEventListeners[track.id]) {\n this.removeVideoTrackEventListeners[track.id] = [];\n }\n this.removeVideoTrackEventListeners[track.id].push(() => {\n videoTrack.removeEventListener(trackEvent, callback);\n });\n }\n }\n\n let width: number;\n let height: number;\n if (track.getSettings) {\n const cap: MediaTrackSettings = track.getSettings();\n width = cap.width as number;\n height = cap.height as number;\n } else {\n const cap: MediaTrackCapabilities = track.getCapabilities();\n width = cap.width as number;\n height = cap.height as number;\n }\n const externalUserId = this.context.videoStreamIndex.externalUserIdForTrack(trackId);\n tile.bindVideoStream(\n attendeeId,\n false,\n stream,\n width,\n height,\n streamId,\n externalUserId,\n groupId\n );\n this.logger.info(\n `video track added, use tile=${tile.id()} track=${trackId} streamId=${streamId} groupId=${groupId}`\n );\n\n const endEvent = 'removetrack';\n const target: MediaStream = stream;\n\n const trackRemovedHandler = (): void => this.removeRemoteVideoTrack(track, tile.state());\n this.removeTrackRemovedEventListeners[track.id] = () => {\n target.removeEventListener(endEvent, trackRemovedHandler);\n delete this.removeTrackRemovedEventListeners[track.id];\n };\n target.addEventListener(endEvent, trackRemovedHandler);\n }\n\n private removeRemoteVideoTrack(track: MediaStreamTrack, tileState: VideoTileState): void {\n if (this.removeTrackRemovedEventListeners.hasOwnProperty(track.id)) {\n this.removeTrackRemovedEventListeners[track.id]();\n\n for (const removeVideoTrackEventListener of this.removeVideoTrackEventListeners[track.id]) {\n removeVideoTrackEventListener();\n }\n delete this.removeVideoTrackEventListeners[track.id];\n }\n\n this.logger.info(\n `video track ended, removing tile=${tileState.tileId} id=${track.id} stream=${tileState.streamId}`\n );\n\n if (tileState.streamId) {\n this.context.videosPaused.remove(tileState.streamId);\n } else {\n this.logger.warn(`no stream found for tile=${tileState.tileId}`);\n }\n this.context.videoTileController.removeVideoTile(tileState.tileId);\n }\n}\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar iterateSimple = require('../internals/iterate-simple');\nvar MapHelpers = require('../internals/map-helpers');\n\nvar Map = MapHelpers.Map;\nvar MapPrototype = MapHelpers.proto;\nvar forEach = uncurryThis(MapPrototype.forEach);\nvar entries = uncurryThis(MapPrototype.entries);\nvar next = entries(new Map()).next;\n\nmodule.exports = function (map, fn, interruptible) {\n return interruptible ? iterateSimple({ iterator: entries(map), next: next }, function (entry) {\n return fn(entry[1], entry[0]);\n }) : forEach(map, fn);\n};\n","var property = require('../util').property;\n\nfunction Paginator(name, paginator) {\n property(this, 'inputToken', paginator.input_token);\n property(this, 'limitKey', paginator.limit_key);\n property(this, 'moreResults', paginator.more_results);\n property(this, 'outputToken', paginator.output_token);\n property(this, 'resultKey', paginator.result_key);\n}\n\n/**\n * @api private\n */\nmodule.exports = Paginator;\n","'use strict';\n\n/** @type {import('./Reflect.getPrototypeOf')} */\nmodule.exports = (typeof Reflect !== 'undefined' && Reflect.getPrototypeOf) || null;\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nenum TranscriptItemType {\n PRONUNCIATION = 'pronunciation',\n PUNCTUATION = 'punctuation',\n}\n\nexport default TranscriptItemType;\n","'use strict';\n\n/** @type {import('./round')} */\nmodule.exports = Math.round;\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport TranscriptEntity from './TranscriptEntity';\nimport TranscriptItem from './TranscriptItem';\n\nexport default class TranscriptAlternative {\n items: TranscriptItem[];\n transcript: string;\n entities?: TranscriptEntity[];\n}\n","/**\n * A javascript implementation of a cryptographically-secure\n * Pseudo Random Number Generator (PRNG). The Fortuna algorithm is followed\n * here though the use of SHA-256 is not enforced; when generating an\n * a PRNG context, the hashing algorithm and block cipher used for\n * the generator are specified via a plugin.\n *\n * @author Dave Longley\n *\n * Copyright (c) 2010-2014 Digital Bazaar, Inc.\n */\nvar forge = require('./forge');\nrequire('./util');\n\nvar _crypto = null;\nif(forge.util.isNodejs && !forge.options.usePureJavaScript &&\n !process.versions['node-webkit']) {\n _crypto = require('crypto');\n}\n\n/* PRNG API */\nvar prng = module.exports = forge.prng = forge.prng || {};\n\n/**\n * Creates a new PRNG context.\n *\n * A PRNG plugin must be passed in that will provide:\n *\n * 1. A function that initializes the key and seed of a PRNG context. It\n * will be given a 16 byte key and a 16 byte seed. Any key expansion\n * or transformation of the seed from a byte string into an array of\n * integers (or similar) should be performed.\n * 2. The cryptographic function used by the generator. It takes a key and\n * a seed.\n * 3. A seed increment function. It takes the seed and returns seed + 1.\n * 4. An api to create a message digest.\n *\n * For an example, see random.js.\n *\n * @param plugin the PRNG plugin to use.\n */\nprng.create = function(plugin) {\n var ctx = {\n plugin: plugin,\n key: null,\n seed: null,\n time: null,\n // number of reseeds so far\n reseeds: 0,\n // amount of data generated so far\n generated: 0,\n // no initial key bytes\n keyBytes: ''\n };\n\n // create 32 entropy pools (each is a message digest)\n var md = plugin.md;\n var pools = new Array(32);\n for(var i = 0; i < 32; ++i) {\n pools[i] = md.create();\n }\n ctx.pools = pools;\n\n // entropy pools are written to cyclically, starting at index 0\n ctx.pool = 0;\n\n /**\n * Generates random bytes. The bytes may be generated synchronously or\n * asynchronously. Web workers must use the asynchronous interface or\n * else the behavior is undefined.\n *\n * @param count the number of random bytes to generate.\n * @param [callback(err, bytes)] called once the operation completes.\n *\n * @return count random bytes as a string.\n */\n ctx.generate = function(count, callback) {\n // do synchronously\n if(!callback) {\n return ctx.generateSync(count);\n }\n\n // simple generator using counter-based CBC\n var cipher = ctx.plugin.cipher;\n var increment = ctx.plugin.increment;\n var formatKey = ctx.plugin.formatKey;\n var formatSeed = ctx.plugin.formatSeed;\n var b = forge.util.createBuffer();\n\n // paranoid deviation from Fortuna:\n // reset key for every request to protect previously\n // generated random bytes should the key be discovered;\n // there is no 100ms based reseeding because of this\n // forced reseed for every `generate` call\n ctx.key = null;\n\n generate();\n\n function generate(err) {\n if(err) {\n return callback(err);\n }\n\n // sufficient bytes generated\n if(b.length() >= count) {\n return callback(null, b.getBytes(count));\n }\n\n // if amount of data generated is greater than 1 MiB, trigger reseed\n if(ctx.generated > 0xfffff) {\n ctx.key = null;\n }\n\n if(ctx.key === null) {\n // prevent stack overflow\n return forge.util.nextTick(function() {\n _reseed(generate);\n });\n }\n\n // generate the random bytes\n var bytes = cipher(ctx.key, ctx.seed);\n ctx.generated += bytes.length;\n b.putBytes(bytes);\n\n // generate bytes for a new key and seed\n ctx.key = formatKey(cipher(ctx.key, increment(ctx.seed)));\n ctx.seed = formatSeed(cipher(ctx.key, ctx.seed));\n\n forge.util.setImmediate(generate);\n }\n };\n\n /**\n * Generates random bytes synchronously.\n *\n * @param count the number of random bytes to generate.\n *\n * @return count random bytes as a string.\n */\n ctx.generateSync = function(count) {\n // simple generator using counter-based CBC\n var cipher = ctx.plugin.cipher;\n var increment = ctx.plugin.increment;\n var formatKey = ctx.plugin.formatKey;\n var formatSeed = ctx.plugin.formatSeed;\n\n // paranoid deviation from Fortuna:\n // reset key for every request to protect previously\n // generated random bytes should the key be discovered;\n // there is no 100ms based reseeding because of this\n // forced reseed for every `generateSync` call\n ctx.key = null;\n\n var b = forge.util.createBuffer();\n while(b.length() < count) {\n // if amount of data generated is greater than 1 MiB, trigger reseed\n if(ctx.generated > 0xfffff) {\n ctx.key = null;\n }\n\n if(ctx.key === null) {\n _reseedSync();\n }\n\n // generate the random bytes\n var bytes = cipher(ctx.key, ctx.seed);\n ctx.generated += bytes.length;\n b.putBytes(bytes);\n\n // generate bytes for a new key and seed\n ctx.key = formatKey(cipher(ctx.key, increment(ctx.seed)));\n ctx.seed = formatSeed(cipher(ctx.key, ctx.seed));\n }\n\n return b.getBytes(count);\n };\n\n /**\n * Private function that asynchronously reseeds a generator.\n *\n * @param callback(err) called once the operation completes.\n */\n function _reseed(callback) {\n if(ctx.pools[0].messageLength >= 32) {\n _seed();\n return callback();\n }\n // not enough seed data...\n var needed = (32 - ctx.pools[0].messageLength) << 5;\n ctx.seedFile(needed, function(err, bytes) {\n if(err) {\n return callback(err);\n }\n ctx.collect(bytes);\n _seed();\n callback();\n });\n }\n\n /**\n * Private function that synchronously reseeds a generator.\n */\n function _reseedSync() {\n if(ctx.pools[0].messageLength >= 32) {\n return _seed();\n }\n // not enough seed data...\n var needed = (32 - ctx.pools[0].messageLength) << 5;\n ctx.collect(ctx.seedFileSync(needed));\n _seed();\n }\n\n /**\n * Private function that seeds a generator once enough bytes are available.\n */\n function _seed() {\n // update reseed count\n ctx.reseeds = (ctx.reseeds === 0xffffffff) ? 0 : ctx.reseeds + 1;\n\n // goal is to update `key` via:\n // key = hash(key + s)\n // where 's' is all collected entropy from selected pools, then...\n\n // create a plugin-based message digest\n var md = ctx.plugin.md.create();\n\n // consume current key bytes\n md.update(ctx.keyBytes);\n\n // digest the entropy of pools whose index k meet the\n // condition 'n mod 2^k == 0' where n is the number of reseeds\n var _2powK = 1;\n for(var k = 0; k < 32; ++k) {\n if(ctx.reseeds % _2powK === 0) {\n md.update(ctx.pools[k].digest().getBytes());\n ctx.pools[k].start();\n }\n _2powK = _2powK << 1;\n }\n\n // get digest for key bytes\n ctx.keyBytes = md.digest().getBytes();\n\n // paranoid deviation from Fortuna:\n // update `seed` via `seed = hash(key)`\n // instead of initializing to zero once and only\n // ever incrementing it\n md.start();\n md.update(ctx.keyBytes);\n var seedBytes = md.digest().getBytes();\n\n // update state\n ctx.key = ctx.plugin.formatKey(ctx.keyBytes);\n ctx.seed = ctx.plugin.formatSeed(seedBytes);\n ctx.generated = 0;\n }\n\n /**\n * The built-in default seedFile. This seedFile is used when entropy\n * is needed immediately.\n *\n * @param needed the number of bytes that are needed.\n *\n * @return the random bytes.\n */\n function defaultSeedFile(needed) {\n // use window.crypto.getRandomValues strong source of entropy if available\n var getRandomValues = null;\n var globalScope = forge.util.globalScope;\n var _crypto = globalScope.crypto || globalScope.msCrypto;\n if(_crypto && _crypto.getRandomValues) {\n getRandomValues = function(arr) {\n return _crypto.getRandomValues(arr);\n };\n }\n\n var b = forge.util.createBuffer();\n if(getRandomValues) {\n while(b.length() < needed) {\n // max byte length is 65536 before QuotaExceededError is thrown\n // http://www.w3.org/TR/WebCryptoAPI/#RandomSource-method-getRandomValues\n var count = Math.max(1, Math.min(needed - b.length(), 65536) / 4);\n var entropy = new Uint32Array(Math.floor(count));\n try {\n getRandomValues(entropy);\n for(var i = 0; i < entropy.length; ++i) {\n b.putInt32(entropy[i]);\n }\n } catch(e) {\n /* only ignore QuotaExceededError */\n if(!(typeof QuotaExceededError !== 'undefined' &&\n e instanceof QuotaExceededError)) {\n throw e;\n }\n }\n }\n }\n\n // be sad and add some weak random data\n if(b.length() < needed) {\n /* Draws from Park-Miller \"minimal standard\" 31 bit PRNG,\n implemented with David G. Carta's optimization: with 32 bit math\n and without division (Public Domain). */\n var hi, lo, next;\n var seed = Math.floor(Math.random() * 0x010000);\n while(b.length() < needed) {\n lo = 16807 * (seed & 0xFFFF);\n hi = 16807 * (seed >> 16);\n lo += (hi & 0x7FFF) << 16;\n lo += hi >> 15;\n lo = (lo & 0x7FFFFFFF) + (lo >> 31);\n seed = lo & 0xFFFFFFFF;\n\n // consume lower 3 bytes of seed\n for(var i = 0; i < 3; ++i) {\n // throw in more pseudo random\n next = seed >>> (i << 3);\n next ^= Math.floor(Math.random() * 0x0100);\n b.putByte(next & 0xFF);\n }\n }\n }\n\n return b.getBytes(needed);\n }\n // initialize seed file APIs\n if(_crypto) {\n // use nodejs async API\n ctx.seedFile = function(needed, callback) {\n _crypto.randomBytes(needed, function(err, bytes) {\n if(err) {\n return callback(err);\n }\n callback(null, bytes.toString());\n });\n };\n // use nodejs sync API\n ctx.seedFileSync = function(needed) {\n return _crypto.randomBytes(needed).toString();\n };\n } else {\n ctx.seedFile = function(needed, callback) {\n try {\n callback(null, defaultSeedFile(needed));\n } catch(e) {\n callback(e);\n }\n };\n ctx.seedFileSync = defaultSeedFile;\n }\n\n /**\n * Adds entropy to a prng ctx's accumulator.\n *\n * @param bytes the bytes of entropy as a string.\n */\n ctx.collect = function(bytes) {\n // iterate over pools distributing entropy cyclically\n var count = bytes.length;\n for(var i = 0; i < count; ++i) {\n ctx.pools[ctx.pool].update(bytes.substr(i, 1));\n ctx.pool = (ctx.pool === 31) ? 0 : ctx.pool + 1;\n }\n };\n\n /**\n * Collects an integer of n bits.\n *\n * @param i the integer entropy.\n * @param n the number of bits in the integer.\n */\n ctx.collectInt = function(i, n) {\n var bytes = '';\n for(var x = 0; x < n; x += 8) {\n bytes += String.fromCharCode((i >> x) & 0xFF);\n }\n ctx.collect(bytes);\n };\n\n /**\n * Registers a Web Worker to receive immediate entropy from the main thread.\n * This method is required until Web Workers can access the native crypto\n * API. This method should be called twice for each created worker, once in\n * the main thread, and once in the worker itself.\n *\n * @param worker the worker to register.\n */\n ctx.registerWorker = function(worker) {\n // worker receives random bytes\n if(worker === self) {\n ctx.seedFile = function(needed, callback) {\n function listener(e) {\n var data = e.data;\n if(data.forge && data.forge.prng) {\n self.removeEventListener('message', listener);\n callback(data.forge.prng.err, data.forge.prng.bytes);\n }\n }\n self.addEventListener('message', listener);\n self.postMessage({forge: {prng: {needed: needed}}});\n };\n } else {\n // main thread sends random bytes upon request\n var listener = function(e) {\n var data = e.data;\n if(data.forge && data.forge.prng) {\n ctx.seedFile(data.forge.prng.needed, function(err, bytes) {\n worker.postMessage({forge: {prng: {err: err, bytes: bytes}}});\n });\n }\n };\n // TODO: do we need to remove the event listener when the worker dies?\n worker.addEventListener('message', listener);\n }\n };\n\n return ctx;\n};\n","'use strict';\n\n/** @type {import('./min')} */\nmodule.exports = Math.min;\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport Logger from '../logger/Logger';\nimport Versioning from '../versioning/Versioning';\nimport WebSocketAdapter from './WebSocketAdapter';\nimport WebSocketReadyState from './WebSocketReadyState';\n\nexport default class DefaultWebSocketAdapter implements WebSocketAdapter {\n private connection: WebSocket | undefined;\n\n constructor(private logger: Logger) {}\n\n create(url: string, protocols: string[], isSignedUrl?: boolean): void {\n this.connection = new WebSocket(isSignedUrl ? url : Versioning.urlWithVersion(url), protocols);\n this.connection.binaryType = 'arraybuffer';\n }\n\n send(message: Uint8Array | string): boolean {\n if (!this.connection) {\n this.logger.error('WebSocket not yet created or already destroyed.');\n return false;\n }\n\n try {\n if (message instanceof Uint8Array) {\n this.connection.send(message.buffer);\n } else {\n this.connection.send(message);\n }\n return true;\n } catch (err) {\n this.logger.debug(\n () =>\n `send error: ${err.message}, websocket state=${WebSocketReadyState[this.readyState()]}`\n );\n return false;\n }\n }\n\n close(code?: number, reason?: string): void {\n this.connection?.close(code, reason);\n }\n\n destroy(): void {\n this.connection = undefined;\n }\n\n addEventListener(handler: string, eventListener: EventListener): void {\n /* istanbul ignore if */\n if (!this.connection) {\n this.logger.warn('Cannot add event listener with no WebSocket connection.');\n return;\n }\n this.connection.addEventListener(handler, eventListener);\n }\n\n removeEventListener(handler: string, eventListener: EventListener): void {\n this.connection?.removeEventListener(handler, eventListener);\n }\n\n readyState(): WebSocketReadyState {\n if (!this.connection) {\n return WebSocketReadyState.None;\n }\n switch (this.connection.readyState) {\n case WebSocket.CONNECTING:\n return WebSocketReadyState.Connecting;\n case WebSocket.OPEN:\n return WebSocketReadyState.Open;\n case WebSocket.CLOSING:\n return WebSocketReadyState.Closing;\n case WebSocket.CLOSED:\n return WebSocketReadyState.Closed;\n }\n }\n}\n","var AWS = require('../core');\n\n/**\n * @api private\n */\nvar cachedSecret = {};\n\n/**\n * @api private\n */\nvar cacheQueue = [];\n\n/**\n * @api private\n */\nvar maxCacheEntries = 50;\n\n/**\n * @api private\n */\nvar v4Identifier = 'aws4_request';\n\n/**\n * @api private\n */\nmodule.exports = {\n /**\n * @api private\n *\n * @param date [String]\n * @param region [String]\n * @param serviceName [String]\n * @return [String]\n */\n createScope: function createScope(date, region, serviceName) {\n return [\n date.substr(0, 8),\n region,\n serviceName,\n v4Identifier\n ].join('/');\n },\n\n /**\n * @api private\n *\n * @param credentials [Credentials]\n * @param date [String]\n * @param region [String]\n * @param service [String]\n * @param shouldCache [Boolean]\n * @return [String]\n */\n getSigningKey: function getSigningKey(\n credentials,\n date,\n region,\n service,\n shouldCache\n ) {\n var credsIdentifier = AWS.util.crypto\n .hmac(credentials.secretAccessKey, credentials.accessKeyId, 'base64');\n var cacheKey = [credsIdentifier, date, region, service].join('_');\n shouldCache = shouldCache !== false;\n if (shouldCache && (cacheKey in cachedSecret)) {\n return cachedSecret[cacheKey];\n }\n\n var kDate = AWS.util.crypto.hmac(\n 'AWS4' + credentials.secretAccessKey,\n date,\n 'buffer'\n );\n var kRegion = AWS.util.crypto.hmac(kDate, region, 'buffer');\n var kService = AWS.util.crypto.hmac(kRegion, service, 'buffer');\n\n var signingKey = AWS.util.crypto.hmac(kService, v4Identifier, 'buffer');\n if (shouldCache) {\n cachedSecret[cacheKey] = signingKey;\n cacheQueue.push(cacheKey);\n if (cacheQueue.length > maxCacheEntries) {\n // remove the oldest entry (not the least recently used)\n delete cachedSecret[cacheQueue.shift()];\n }\n }\n\n return signingKey;\n },\n\n /**\n * @api private\n *\n * Empties the derived signing key cache. Made available for testing purposes\n * only.\n */\n emptyCache: function emptyCache() {\n cachedSecret = {};\n cacheQueue = [];\n }\n};\n","'use strict';\n\nvar setFunctionLength = require('set-function-length');\n\nvar $defineProperty = require('es-define-property');\n\nvar callBindBasic = require('call-bind-apply-helpers');\nvar applyBind = require('call-bind-apply-helpers/applyBind');\n\nmodule.exports = function callBind(originalFunction) {\n\tvar func = callBindBasic(arguments);\n\tvar adjustedLength = originalFunction.length - (arguments.length - 1);\n\treturn setFunctionLength(\n\t\tfunc,\n\t\t1 + (adjustedLength > 0 ? adjustedLength : 0),\n\t\ttrue\n\t);\n};\n\nif ($defineProperty) {\n\t$defineProperty(module.exports, 'apply', { value: applyBind });\n} else {\n\tmodule.exports.apply = applyBind;\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport AudioVideoController from '../audiovideocontroller/AudioVideoController';\nimport DefaultAudioVideoController from '../audiovideocontroller/DefaultAudioVideoController';\nimport AudioVideoFacade from '../audiovideofacade/AudioVideoFacade';\nimport DefaultAudioVideoFacade from '../audiovideofacade/DefaultAudioVideoFacade';\nimport FullJitterBackoff from '../backoff/FullJitterBackoff';\nimport DefaultBrowserBehavior from '../browserbehavior/DefaultBrowserBehavior';\nimport ContentShareController from '../contentsharecontroller/ContentShareController';\nimport ContentShareMediaStreamBroker from '../contentsharecontroller/ContentShareMediaStreamBroker';\nimport DefaultContentShareController from '../contentsharecontroller/DefaultContentShareController';\nimport CSPMonitor from '../cspmonitor/CSPMonitor';\nimport Destroyable, { isDestroyable } from '../destroyable/Destroyable';\nimport DeviceController from '../devicecontroller/DeviceController';\nimport DefaultEventController from '../eventcontroller/DefaultEventController';\nimport EventController from '../eventcontroller/EventController';\nimport Logger from '../logger/Logger';\nimport DeviceControllerBasedMediaStreamBroker from '../mediastreambroker/DeviceControllerBasedMediaStreamBroker';\nimport DefaultReconnectController from '../reconnectcontroller/DefaultReconnectController';\nimport SimulcastUplinkPolicy from '../videouplinkbandwidthpolicy/SimulcastUplinkPolicy';\nimport VideoUplinkBandwidthPolicy from '../videouplinkbandwidthpolicy/VideoUplinkBandwidthPolicy';\nimport DefaultWebSocketAdapter from '../websocketadapter/DefaultWebSocketAdapter';\nimport MeetingSession from './MeetingSession';\nimport MeetingSessionConfiguration from './MeetingSessionConfiguration';\n\nexport default class DefaultMeetingSession implements MeetingSession, Destroyable {\n private _configuration: MeetingSessionConfiguration;\n private _logger: Logger;\n private audioVideoController: AudioVideoController;\n private contentShareController: ContentShareController;\n private _deviceController: DeviceController;\n private audioVideoFacade: AudioVideoFacade;\n\n constructor(\n configuration: MeetingSessionConfiguration,\n logger: Logger,\n deviceController: DeviceControllerBasedMediaStreamBroker,\n private _eventController?: EventController\n ) {\n this._configuration = configuration;\n this._logger = logger;\n\n this.checkBrowserSupportAndFeatureConfiguration();\n\n CSPMonitor.addLogger(this._logger);\n CSPMonitor.register();\n if (!this._eventController) {\n this._eventController = new DefaultEventController(configuration, logger);\n }\n /* istanbul ignore else */\n if (!deviceController.eventController) {\n deviceController.eventController = this.eventController;\n }\n this.audioVideoController = new DefaultAudioVideoController(\n this._configuration,\n this._logger,\n new DefaultWebSocketAdapter(this._logger),\n deviceController,\n new DefaultReconnectController(\n this._configuration.reconnectTimeoutMs,\n new FullJitterBackoff(\n this._configuration.reconnectFixedWaitMs,\n this._configuration.reconnectShortBackOffMs,\n this._configuration.reconnectLongBackOffMs\n )\n ),\n this.eventController\n );\n this._deviceController = deviceController;\n this.logger.info(`MeetingFeatures: ${JSON.stringify(configuration.meetingFeatures)}`);\n const contentShareMediaStreamBroker = new ContentShareMediaStreamBroker(this._logger);\n this.contentShareController = new DefaultContentShareController(\n contentShareMediaStreamBroker,\n new DefaultAudioVideoController(\n DefaultContentShareController.createContentShareMeetingSessionConfigure(\n this._configuration\n ),\n this._logger,\n new DefaultWebSocketAdapter(this._logger),\n contentShareMediaStreamBroker,\n new DefaultReconnectController(\n this._configuration.reconnectTimeoutMs,\n new FullJitterBackoff(\n this._configuration.reconnectFixedWaitMs,\n this._configuration.reconnectShortBackOffMs,\n this._configuration.reconnectLongBackOffMs\n )\n )\n ),\n this.audioVideoController\n );\n this.audioVideoFacade = new DefaultAudioVideoFacade(\n this.audioVideoController,\n this.audioVideoController.videoTileController,\n this.audioVideoController.realtimeController,\n this.audioVideoController.audioMixController,\n this._deviceController,\n this.contentShareController\n );\n }\n\n get configuration(): MeetingSessionConfiguration {\n return this._configuration;\n }\n\n get logger(): Logger {\n return this._logger;\n }\n\n get audioVideo(): AudioVideoFacade {\n return this.audioVideoFacade;\n }\n\n get contentShare(): ContentShareController {\n return this.contentShareController;\n }\n\n get deviceController(): DeviceController {\n return this._deviceController;\n }\n\n get eventController(): EventController {\n return this._eventController;\n }\n\n /**\n * Clean up this instance and resources that it created.\n *\n * After calling `destroy`, internal fields like `audioVideoController` will be unavailable.\n */\n async destroy(): Promise {\n if (isDestroyable(this.contentShareController)) {\n await this.contentShareController.destroy();\n }\n if (isDestroyable(this.audioVideoController)) {\n await this.audioVideoController.destroy();\n }\n if (isDestroyable(this.eventController)) {\n await this.eventController.destroy();\n }\n\n CSPMonitor.removeLogger(this._logger);\n\n this._logger = undefined;\n this._configuration = undefined;\n this._deviceController = undefined;\n this.audioVideoFacade = undefined;\n this.audioVideoController = undefined;\n this.contentShareController = undefined;\n this._eventController = undefined;\n }\n\n private checkBrowserSupportAndFeatureConfiguration(): void {\n const browserBehavior = new DefaultBrowserBehavior();\n const browser = `${browserBehavior.name()} ${browserBehavior.majorVersion()} (${browserBehavior.version()})`;\n this.logger.info(`browser is ${browser}`);\n if (!browserBehavior.isSupported()) {\n this.logger.warn(\n 'this browser is not currently supported. ' +\n 'Stability may suffer. ' +\n `Supported browsers are: ${browserBehavior.supportString()}.`\n );\n }\n\n // Validation if a custom video uplink policy is specified\n if (this._configuration.videoUplinkBandwidthPolicy) {\n if (this.isSimulcastUplinkPolicy(this._configuration.videoUplinkBandwidthPolicy)) {\n if (!browserBehavior.hasChromiumWebRTC()) {\n throw new Error('Simulcast is only supported on Chromium-based browsers');\n }\n this._configuration.enableSimulcastForUnifiedPlanChromiumBasedBrowsers = true;\n } else {\n this._configuration.enableSimulcastForUnifiedPlanChromiumBasedBrowsers = false;\n }\n }\n\n if (this._configuration.enableSimulcastForUnifiedPlanChromiumBasedBrowsers) {\n if (browserBehavior.hasChromiumWebRTC()) {\n this.logger.info(`Simulcast is enabled for ${browserBehavior.name()}`);\n } else {\n this._configuration.enableSimulcastForUnifiedPlanChromiumBasedBrowsers = false;\n this.logger.info('Simulcast is only supported on Chromium-based browsers');\n }\n\n if (this._configuration.enableSVC) {\n this._configuration.enableSVC = false;\n this.logger.info('SVC is not successfully enabled since simulcast is enabled');\n }\n }\n\n if (this._configuration.enableSVC && !browserBehavior.supportsScalableVideoCoding()) {\n this._configuration.enableSVC = false;\n this.logger.info(\n 'SVC is only supported on Chromium-based browsers with version 111 or above'\n );\n }\n }\n\n private isSimulcastUplinkPolicy(policy: VideoUplinkBandwidthPolicy | undefined): boolean {\n return !!(policy && (policy as SimulcastUplinkPolicy).addObserver);\n }\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport BackgroundFilterProcessor from '../backgroundfilter/BackgroundFilterProcessor';\nimport BackgroundFilterSpec from '../backgroundfilter/BackgroundFilterSpec';\nimport EventController from '../eventcontroller/EventController';\nimport VideoFXEventAttributes from '../eventcontroller/VideoFXEventAttributes';\nimport BackgroundReplacementOptions from './BackgroundReplacementOptions';\nimport BackgroundReplacementProcessor from './BackgroundReplacementProcessor';\nimport BackgroundReplacementVideoFrameProcessorDelegate from './BackgroundReplacementVideoFrameProcessorDelegate';\nimport BackgroundReplacementVideoFrameProcessorObserver from './BackgroundReplacementVideoFrameProcessorObserver';\n\n/**\n * [[BackgroundReplacementFilter]] implements [[BackgroundReplacementProcessor]].\n * It's a background replacement processor and input is passed into a worker that will apply a segmentation\n * to separate the foreground from the background. Then the background will have a replacement applied.\n *\n * The [[BackgroundReplacementProcessorProvided]] uses WASM and TensorFlow Lite to apply replacement of the\n * background image.\n */\n/** @internal */\nexport default class BackgroundReplacementFilter\n extends BackgroundFilterProcessor\n implements BackgroundReplacementProcessor {\n private replacementBlob?: Blob;\n private replacementObjectUrl?: string;\n /**\n * A constructor that will apply default values if spec and strength are not provided.\n * If no spec is provided the selfie segmentation model is used with default paths to CDN for the\n * worker and wasm files used to process each frame.\n * @param spec The spec defines the assets that will be used for adding background filter to a frame\n * @param options The background replacement image path\n */\n constructor(spec: BackgroundFilterSpec, options: BackgroundReplacementOptions) {\n super(\n 'background replacement',\n spec,\n options,\n new BackgroundReplacementVideoFrameProcessorDelegate()\n );\n\n this.replacementBlob = options.imageBlob;\n\n this.logger.info('BackgroundReplacement processor successfully created');\n this.logger.info(`BackgroundReplacement spec: ${this.stringify(this.spec)}`);\n this.logger.info(\n `BackgroundReplacement options: { filterCPUUtilization: ${options.filterCPUUtilization}, reportingPeriodMillis: ${options.reportingPeriodMillis}}`\n );\n }\n\n async setImageBlob(blob: Blob): Promise {\n this.replacementBlob = blob;\n this.replacementImage = await BackgroundReplacementFilter.loadImage(\n this.createReplacementObjectUrl()\n );\n }\n\n initOnFirstExecution(): void {}\n\n drawImageWithMask(inputCanvas: HTMLCanvasElement, mask: ImageData): void {\n // Mask will not be set until the worker has completed handling the predict event. Until the first frame is processed,\n // the whole frame will be replaced.\n if (!mask) {\n mask = new ImageData(this.spec.model.input.width, this.spec.model.input.height);\n }\n\n const scaledCtx = this.scaledCanvas.getContext('2d');\n\n scaledCtx.putImageData(mask, 0, 0);\n\n const { canvasCtx, targetCanvas } = this;\n const { width, height } = targetCanvas;\n\n // draw the mask\n canvasCtx.save();\n canvasCtx.clearRect(0, 0, width, height);\n canvasCtx.drawImage(this.scaledCanvas, 0, 0, width, height);\n\n // Only overwrite existing pixels.\n canvasCtx.globalCompositeOperation = 'source-in';\n // draw image over mask...\n canvasCtx.drawImage(inputCanvas, 0, 0, width, height);\n\n // draw under person\n canvasCtx.globalCompositeOperation = 'destination-over';\n\n canvasCtx.drawImage(this.replacementImage, 0, 0, targetCanvas.width, targetCanvas.height);\n canvasCtx.restore();\n }\n\n /* istanbul ignore next */\n private static loadImageExecutor(\n resolve: (image: HTMLImageElement) => void,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n reject: (reason?: any) => void,\n imageUrl: string\n ): void {\n const image = new Image();\n image.crossOrigin = 'Anonymous';\n image.addEventListener(\n 'load',\n () => {\n resolve(image);\n },\n false\n );\n image.addEventListener(\n 'error',\n error => {\n reject(new Error(`Could not load replacement image ${image.src}: ${error.message}`));\n },\n false\n );\n image.src = imageUrl;\n }\n\n /** @internal */\n static async loadImage(imageUrl: string): Promise {\n return new Promise((resolve, reject) =>\n this.loadImageExecutor(resolve, reject, imageUrl)\n );\n }\n\n private revokeReplacementObjectUrl(): void {\n if (this.replacementObjectUrl) {\n URL.revokeObjectURL(this.replacementObjectUrl);\n }\n }\n\n private createReplacementObjectUrl(): string {\n this.revokeReplacementObjectUrl();\n this.replacementObjectUrl = URL.createObjectURL(this.replacementBlob);\n return this.replacementObjectUrl;\n }\n\n /**\n * This method initializes all of the resource necessary to process background replacement. It returns\n * a promise and resolves or rejects the promise once the initialization is complete.\n * @returns\n * @throws An error will be thrown\n */\n async loadAssets(): Promise {\n this.replacementImage = await BackgroundReplacementFilter.loadImage(\n this.createReplacementObjectUrl()\n );\n super.loadAssets();\n return;\n }\n\n addObserver(observer: BackgroundReplacementVideoFrameProcessorObserver): void {\n this.delegate.addObserver(observer);\n }\n\n removeObserver(observer: BackgroundReplacementVideoFrameProcessorObserver): void {\n this.delegate.removeObserver(observer);\n }\n\n async destroy(): Promise {\n super.destroy();\n this.revokeReplacementObjectUrl();\n }\n\n /** @internal */\n setEventController(eventController: EventController): void {\n /*\n if this is a first time we set the eventController, need to publish the current BackgroundFilterConfig.\n Otherwise, just set the eventController.\n */\n if (this.eventController) {\n this.eventController = eventController;\n } else {\n this.eventController = eventController;\n this.publishBackgroundFilterEvent();\n }\n }\n\n private publishBackgroundFilterEvent(): void {\n const backgroundFilterEventAttributes: VideoFXEventAttributes = {\n backgroundBlurEnabled: 'false',\n backgroundBlurStrength: 'low',\n backgroundReplacementEnabled: 'true',\n backgroundFilterVersion: 1,\n };\n this.eventController.publishEvent(\n 'backgroundFilterConfigSelected',\n backgroundFilterEventAttributes\n );\n }\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport VideoFrameBuffer from './VideoFrameBuffer';\n\n/**\n * [[CanvasVideoFrameBuffer]] implements [[VideoFrameBuffer]]. It internally holds an `HTMLCanvasElement`.\n */\nexport default class CanvasVideoFrameBuffer implements VideoFrameBuffer {\n private destroyed: boolean = false;\n framerate: number;\n width: number;\n height: number;\n\n constructor(private canvas: HTMLCanvasElement) {}\n\n destroy(): void {\n this.canvas = null;\n this.destroyed = true;\n }\n\n async asCanvasImageSource(): Promise {\n if (this.destroyed) {\n return Promise.reject('canvas buffer is destroyed');\n }\n return Promise.resolve(this.canvas);\n }\n\n asCanvasElement(): HTMLCanvasElement | null {\n return this.canvas;\n }\n}\n","var util = require('../core').util;\nvar toBuffer = util.buffer.toBuffer;\n\n/**\n * A lossless representation of a signed, 64-bit integer. Instances of this\n * class may be used in arithmetic expressions as if they were numeric\n * primitives, but the binary representation will be preserved unchanged as the\n * `bytes` property of the object. The bytes should be encoded as big-endian,\n * two's complement integers.\n * @param {Buffer} bytes\n *\n * @api private\n */\nfunction Int64(bytes) {\n if (bytes.length !== 8) {\n throw new Error('Int64 buffers must be exactly 8 bytes');\n }\n if (!util.Buffer.isBuffer(bytes)) bytes = toBuffer(bytes);\n\n this.bytes = bytes;\n}\n\n/**\n * @param {number} number\n * @returns {Int64}\n *\n * @api private\n */\nInt64.fromNumber = function(number) {\n if (number > 9223372036854775807 || number < -9223372036854775808) {\n throw new Error(\n number + ' is too large (or, if negative, too small) to represent as an Int64'\n );\n }\n\n var bytes = new Uint8Array(8);\n for (\n var i = 7, remaining = Math.abs(Math.round(number));\n i > -1 && remaining > 0;\n i--, remaining /= 256\n ) {\n bytes[i] = remaining;\n }\n\n if (number < 0) {\n negate(bytes);\n }\n\n return new Int64(bytes);\n};\n\n/**\n * @returns {number}\n *\n * @api private\n */\nInt64.prototype.valueOf = function() {\n var bytes = this.bytes.slice(0);\n var negative = bytes[0] & 128;\n if (negative) {\n negate(bytes);\n }\n\n return parseInt(bytes.toString('hex'), 16) * (negative ? -1 : 1);\n};\n\nInt64.prototype.toString = function() {\n return String(this.valueOf());\n};\n\n/**\n * @param {Buffer} bytes\n *\n * @api private\n */\nfunction negate(bytes) {\n for (var i = 0; i < 8; i++) {\n bytes[i] ^= 0xFF;\n }\n for (var i = 7; i > -1; i--) {\n bytes[i]++;\n if (bytes[i] !== 0) {\n break;\n }\n }\n}\n\n/**\n * @api private\n */\nmodule.exports = {\n Int64: Int64\n};\n","var AWS = require('../core');\nvar rest = AWS.Protocol.Rest;\n\n/**\n * A presigner object can be used to generate presigned urls for the Polly service.\n */\nAWS.Polly.Presigner = AWS.util.inherit({\n /**\n * Creates a presigner object with a set of configuration options.\n *\n * @option options params [map] An optional map of parameters to bind to every\n * request sent by this service object.\n * @option options service [AWS.Polly] An optional pre-configured instance\n * of the AWS.Polly service object to use for requests. The object may\n * bound parameters used by the presigner.\n * @see AWS.Polly.constructor\n */\n constructor: function Signer(options) {\n options = options || {};\n this.options = options;\n this.service = options.service;\n this.bindServiceObject(options);\n this._operations = {};\n },\n\n /**\n * @api private\n */\n bindServiceObject: function bindServiceObject(options) {\n options = options || {};\n if (!this.service) {\n this.service = new AWS.Polly(options);\n } else {\n var config = AWS.util.copy(this.service.config);\n this.service = new this.service.constructor.__super__(config);\n this.service.config.params = AWS.util.merge(this.service.config.params || {}, options.params);\n }\n },\n\n /**\n * @api private\n */\n modifyInputMembers: function modifyInputMembers(input) {\n // make copies of the input so we don't overwrite the api\n // need to be careful to copy anything we access/modify\n var modifiedInput = AWS.util.copy(input);\n modifiedInput.members = AWS.util.copy(input.members);\n AWS.util.each(input.members, function(name, member) {\n modifiedInput.members[name] = AWS.util.copy(member);\n // update location and locationName\n if (!member.location || member.location === 'body') {\n modifiedInput.members[name].location = 'querystring';\n modifiedInput.members[name].locationName = name;\n }\n });\n return modifiedInput;\n },\n\n /**\n * @api private\n */\n convertPostToGet: function convertPostToGet(req) {\n // convert method\n req.httpRequest.method = 'GET';\n\n var operation = req.service.api.operations[req.operation];\n // get cached operation input first\n var input = this._operations[req.operation];\n if (!input) {\n // modify the original input\n this._operations[req.operation] = input = this.modifyInputMembers(operation.input);\n }\n\n var uri = rest.generateURI(req.httpRequest.endpoint.path, operation.httpPath, input, req.params);\n\n req.httpRequest.path = uri;\n req.httpRequest.body = '';\n\n // don't need these headers on a GET request\n delete req.httpRequest.headers['Content-Length'];\n delete req.httpRequest.headers['Content-Type'];\n },\n\n /**\n * @overload getSynthesizeSpeechUrl(params = {}, [expires = 3600], [callback])\n * Generate a presigned url for {AWS.Polly.synthesizeSpeech}.\n * @note You must ensure that you have static or previously resolved\n * credentials if you call this method synchronously (with no callback),\n * otherwise it may not properly sign the request. If you cannot guarantee\n * this (you are using an asynchronous credential provider, i.e., EC2\n * IAM roles), you should always call this method with an asynchronous\n * callback.\n * @param params [map] parameters to pass to the operation. See the {AWS.Polly.synthesizeSpeech}\n * operation for the expected operation parameters.\n * @param expires [Integer] (3600) the number of seconds to expire the pre-signed URL operation in.\n * Defaults to 1 hour.\n * @return [string] if called synchronously (with no callback), returns the signed URL.\n * @return [null] nothing is returned if a callback is provided.\n * @callback callback function (err, url)\n * If a callback is supplied, it is called when a signed URL has been generated.\n * @param err [Error] the error object returned from the presigner.\n * @param url [String] the signed URL.\n * @see AWS.Polly.synthesizeSpeech\n */\n getSynthesizeSpeechUrl: function getSynthesizeSpeechUrl(params, expires, callback) {\n var self = this;\n var request = this.service.makeRequest('synthesizeSpeech', params);\n // remove existing build listeners\n request.removeAllListeners('build');\n request.on('build', function(req) {\n self.convertPostToGet(req);\n });\n return request.presign(expires, callback);\n }\n});\n","'use strict';\n\n/** @type {import('./syntax')} */\nmodule.exports = SyntaxError;\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\n/**\n * A simple promise queue to enforce the order of async APIs for example, start/stop video/audio input.\n */\nexport default class PromiseQueue {\n queue = Promise.resolve();\n\n // eslint-disable-next-line\n add(func: () => Promise): Promise {\n return new Promise((resolve, reject) => {\n this.queue = this.queue.then(func).then(resolve).catch(reject);\n });\n }\n}\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['apigateway'] = {};\nAWS.APIGateway = Service.defineService('apigateway', ['2015-07-09']);\nrequire('../lib/services/apigateway');\nObject.defineProperty(apiLoader.services['apigateway'], '2015-07-09', {\n get: function get() {\n var model = require('../apis/apigateway-2015-07-09.min.json');\n model.paginators = require('../apis/apigateway-2015-07-09.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.APIGateway;\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { detect } from 'detect-browser';\nimport { UAParser } from 'ua-parser-js';\n\nimport BrowserBehavior from './BrowserBehavior';\nimport ExtendedBrowserBehavior from './ExtendedBrowserBehavior';\n\nexport default class DefaultBrowserBehavior implements BrowserBehavior, ExtendedBrowserBehavior {\n private readonly FALLBACK_BROWSER = {\n type: 'browser',\n name: 'unknown',\n version: 'unknown',\n os: 'unknown',\n };\n private readonly browser = detect() || this.FALLBACK_BROWSER;\n private readonly uaParserResult =\n navigator && navigator.userAgent ? new UAParser(navigator.userAgent).getResult() : null;\n\n private browserSupport: { [id: string]: number } = {\n chrome: 78,\n 'edge-chromium': 79,\n electron: 7,\n firefox: 75,\n ios: 13,\n safari: 13,\n opera: 66,\n samsung: 12,\n crios: 86,\n fxios: 23,\n 'ios-webview': 605,\n 'chromium-webview': 92,\n };\n\n private browserName: { [id: string]: string } = {\n chrome: 'Google Chrome',\n 'edge-chromium': 'Microsoft Edge',\n electron: 'Electron',\n firefox: 'Mozilla Firefox',\n ios: 'Safari iOS',\n safari: 'Safari',\n opera: 'Opera',\n samsung: 'Samsung Internet',\n crios: 'Chrome iOS',\n fxios: 'Firefox iOS',\n 'ios-webview': 'WKWebView iOS',\n 'chromium-webview': 'Chrome WebView',\n };\n\n private chromeLike: string[] = [\n 'chrome',\n 'edge-chromium',\n 'chromium-webview',\n 'opera',\n 'samsung',\n ];\n\n private webkitBrowsers: string[] = ['crios', 'fxios', 'safari', 'ios', 'ios-webview', 'edge-ios'];\n private static MIN_IOS_SUPPORT_CANVAS_STREAM_PLAYBACK = 16;\n private static MIN_IOS_NON_SAFARI_SUPPORT_CANVAS_STREAM_PLAYBACK = 106;\n\n version(): string {\n return this.browser.version;\n }\n\n majorVersion(): number {\n return this.version() !== null ? parseInt(this.version().split('.')[0]) : -1;\n }\n\n osMajorVersion(): number {\n return parseInt(this.uaParserResult.os.version.split('.')[0]);\n }\n\n private engine(): string {\n return this.uaParserResult.engine.name;\n }\n\n private engineMajorVersion(): number {\n return parseInt(this.uaParserResult.engine.version.split('.')[0]);\n }\n\n name(): string {\n return this.browser.name;\n }\n\n hasChromiumWebRTC(): boolean {\n for (const browser of this.chromeLike) {\n if (browser === this.browser.name) {\n return true;\n }\n }\n return false;\n }\n\n hasWebKitWebRTC(): boolean {\n for (const browser of this.webkitBrowsers) {\n if (browser === this.browser.name) {\n return true;\n }\n }\n return false;\n }\n\n hasFirefoxWebRTC(): boolean {\n return this.isFirefox();\n }\n\n requiresPlaybackLatencyHintForAudioContext(): boolean {\n return navigator.userAgent.indexOf('Windows') !== -1;\n }\n\n supportsCanvasCapturedStreamPlayback(): boolean {\n return (\n // Desktop browser\n (!this.isIOSSafari() && !this.isIOSChrome() && !this.isIOSFirefox() && !this.isIOSEdge()) ||\n // iOS Safari (Firefox on iOS with desktop view will be identified as iOS Safari\n (this.isIOSSafari() &&\n this.majorVersion() >= DefaultBrowserBehavior.MIN_IOS_SUPPORT_CANVAS_STREAM_PLAYBACK) ||\n // Chrome, Edge, or Firefox (mobile view) on iOS\n this.majorVersion() >=\n DefaultBrowserBehavior.MIN_IOS_NON_SAFARI_SUPPORT_CANVAS_STREAM_PLAYBACK\n );\n }\n\n supportsBackgroundFilter(): boolean {\n // disable Safari 15\n // see: https://github.com/aws/amazon-chime-sdk-js/issues/1059\n if (this.name() === 'safari' && this.majorVersion() === 15) {\n return false;\n }\n\n if (!this.supportsCanvasCapturedStreamPlayback()) {\n return false;\n }\n\n return true;\n }\n\n supportsVideoLayersAllocationRtpHeaderExtension(): boolean {\n return this.hasChromiumWebRTC();\n }\n\n supportsDependencyDescriptorRtpHeaderExtension(): boolean {\n return this.hasChromiumWebRTC();\n }\n\n supportsScalableVideoCoding(): boolean {\n return (\n // Currently `this.hasChromiumWebRTC() && this.engine() === 'Blink'` completely\n // overlaps but we keep both just in case that changes in the future.\n this.hasChromiumWebRTC() && this.engine() === 'Blink' && this.engineMajorVersion() >= 111\n );\n }\n\n supportsAudioRedundancy(): boolean {\n if (this.hasChromiumWebRTC()) {\n // Audio redundancy may cause video decoding failure for Chromium version 106 and\n // earlier. Marking such Chromium versions as not supporting audio redundancy.\n return this.engineMajorVersion() >= 107;\n }\n return !this.hasFirefoxWebRTC();\n }\n\n requiresResolutionAlignment(width: number, height: number): [number, number] {\n if (this.isAndroid() && this.isPixel3()) {\n return [Math.ceil(width / 64) * 64, Math.ceil(height / 64) * 64];\n }\n return [width, height];\n }\n\n requiresCheckForSdpConnectionAttributes(): boolean {\n return !this.isIOSSafari() && !this.isIOSChrome() && !this.isIOSFirefox();\n }\n\n requiresIceCandidateGatheringTimeoutWorkaround(): boolean {\n return this.hasChromiumWebRTC();\n }\n\n requiresBundlePolicy(): RTCBundlePolicy {\n return 'max-bundle';\n }\n\n requiresNoExactMediaStreamConstraints(): boolean {\n return this.isSamsungInternet();\n }\n\n requiresGroupIdMediaStreamConstraints(): boolean {\n return this.isSamsungInternet();\n }\n\n getDisplayMediaAudioCaptureSupport(): boolean {\n return this.isChrome() || this.isEdge();\n }\n\n // There's a issue in Chormium WebView that causes enumerate devices to return empty labels, this is a check for this issue.\n // https://bugs.chromium.org/p/chromium/issues/detail?id=669492\n doesNotSupportMediaDeviceLabels(): boolean {\n return this.browser.name === 'chromium-webview';\n }\n\n isSupported(): boolean {\n if (\n !this.browserSupport[this.browser.name] ||\n this.majorVersion() < this.browserSupport[this.browser.name]\n ) {\n return false;\n }\n if (this.browser.name === 'firefox' && this.isAndroid()) {\n return false;\n }\n return true;\n }\n\n isSimulcastSupported(): boolean {\n return this.hasChromiumWebRTC();\n }\n\n supportDownlinkBandwidthEstimation(): boolean {\n return !this.isFirefox();\n }\n\n supportString(): string {\n if (this.isAndroid()) {\n return `${this.browserName['chrome']} ${this.browserSupport['chrome']}+, ${this.browserName['samsung']} ${this.browserSupport['samsung']}+`;\n }\n const s: string[] = [];\n for (const k in this.browserSupport) {\n s.push(`${this.browserName[k]} ${this.browserSupport[k]}+`);\n }\n return s.join(', ');\n }\n\n async supportedVideoCodecs(): Promise {\n const pc = new RTCPeerConnection();\n pc.addTransceiver('video', { direction: 'inactive', streams: [] });\n return (await pc.createOffer({ offerToReceiveVideo: true })).sdp\n .split('\\r\\n')\n .filter(x => {\n return x.includes('a=rtpmap:');\n })\n .map(x => {\n return x.replace(/.* /, '').replace(/\\/.*/, '');\n })\n .filter((v, i, a) => {\n return a.indexOf(v) === i;\n })\n .filter(x => {\n return x !== 'rtx' && x !== 'red' && x !== 'ulpfec';\n });\n }\n\n supportsSetSinkId(): boolean {\n return 'setSinkId' in HTMLAudioElement.prototype;\n }\n\n disableResolutionScaleDown(): boolean {\n return this.isAndroid();\n }\n\n disable480pResolutionScaleDown(): boolean {\n return /( Chrome\\/98\\.)/i.test(navigator.userAgent) && this.browser.os.startsWith('Windows');\n }\n\n requiresDisablingH264Encoding(): boolean {\n return this.isIOS() && (this.version() === '15.1.0' || /( OS 15_1)/i.test(navigator.userAgent));\n }\n\n // In Safari, a hidden video element can show a black screen.\n // See https://bugs.webkit.org/show_bug.cgi?id=241152 for more information.\n requiresVideoPlayWorkaround(): boolean {\n return this.isSafari();\n }\n\n requiresAudioContextResetOnDeviceFailureForWebAudio(): boolean {\n // In iOS Safari, when an audio media stream fails (i.e. in the case of being\n // unplugged), the audio context becomes broken, and e.g. stops transmitting\n // audio. This can be mitigated by suspending and resuming the context.\n //\n // The WebKit bug is https://bugs.webkit.org/show_bug.cgi?id=232640\n return this.isIOS();\n }\n\n /**\n * Check if the current browser supports the [[VideoFxProcessor]].\n * @returns boolean representing if browser supports [[VideoFxProcessor]].\n */\n isVideoFxSupportedBrowser(): boolean {\n // Not supported on safari 15 and on environments without canvas capture playback\n return this.supportsBackgroundFilter();\n }\n\n // These helpers should be kept private to encourage\n // feature detection instead of browser detection.\n private isIOSSafari(): boolean {\n return (\n this.browser.name === 'ios' ||\n this.browser.name === 'ios-webview' ||\n (this.browser.name === 'safari' &&\n /( Mac )/i.test(navigator.userAgent) &&\n navigator.maxTouchPoints > 1) //Ipad\n );\n }\n\n private isSafari(): boolean {\n return this.browser.name === 'safari' || this.isIOSSafari();\n }\n\n private isFirefox(): boolean {\n return this.browser.name === 'firefox';\n }\n\n private isIOSFirefox(): boolean {\n return this.browser.name === 'fxios';\n }\n\n private isIOSChrome(): boolean {\n return this.browser.name === 'crios';\n }\n\n private isChrome(): boolean {\n return this.browser.name === 'chrome';\n }\n\n private isEdge(): boolean {\n return this.browser.name === 'edge-chromium';\n }\n\n private isIOSEdge(): boolean {\n return this.browser.name === 'edge-ios';\n }\n\n private isSamsungInternet(): boolean {\n return this.browser.name === 'samsung';\n }\n\n private isAndroid(): boolean {\n return /(android)/i.test(navigator.userAgent);\n }\n\n private isPixel3(): boolean {\n return /( pixel 3)/i.test(navigator.userAgent);\n }\n\n private isIOS(): boolean {\n // Is one of the supported iOS browsers\n return this.isIOSSafari() || this.isIOSChrome() || this.isIOSFirefox();\n }\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _v = _interopRequireDefault(require(\"./v35.js\"));\n\nvar _sha = _interopRequireDefault(require(\"./sha1.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nconst v5 = (0, _v.default)('v5', 0x50, _sha.default);\nvar _default = v5;\nexports.default = _default;","var util = require('../util');\nvar populateHostPrefix = require('./helpers').populateHostPrefix;\n\nfunction populateMethod(req) {\n req.httpRequest.method = req.service.api.operations[req.operation].httpMethod;\n}\n\nfunction generateURI(endpointPath, operationPath, input, params) {\n var uri = [endpointPath, operationPath].join('/');\n uri = uri.replace(/\\/+/g, '/');\n\n var queryString = {}, queryStringSet = false;\n util.each(input.members, function (name, member) {\n var paramValue = params[name];\n if (paramValue === null || paramValue === undefined) return;\n if (member.location === 'uri') {\n var regex = new RegExp('\\\\{' + member.name + '(\\\\+)?\\\\}');\n uri = uri.replace(regex, function(_, plus) {\n var fn = plus ? util.uriEscapePath : util.uriEscape;\n return fn(String(paramValue));\n });\n } else if (member.location === 'querystring') {\n queryStringSet = true;\n\n if (member.type === 'list') {\n queryString[member.name] = paramValue.map(function(val) {\n return util.uriEscape(member.member.toWireFormat(val).toString());\n });\n } else if (member.type === 'map') {\n util.each(paramValue, function(key, value) {\n if (Array.isArray(value)) {\n queryString[key] = value.map(function(val) {\n return util.uriEscape(String(val));\n });\n } else {\n queryString[key] = util.uriEscape(String(value));\n }\n });\n } else {\n queryString[member.name] = util.uriEscape(member.toWireFormat(paramValue).toString());\n }\n }\n });\n\n if (queryStringSet) {\n uri += (uri.indexOf('?') >= 0 ? '&' : '?');\n var parts = [];\n util.arrayEach(Object.keys(queryString).sort(), function(key) {\n if (!Array.isArray(queryString[key])) {\n queryString[key] = [queryString[key]];\n }\n for (var i = 0; i < queryString[key].length; i++) {\n parts.push(util.uriEscape(String(key)) + '=' + queryString[key][i]);\n }\n });\n uri += parts.join('&');\n }\n\n return uri;\n}\n\nfunction populateURI(req) {\n var operation = req.service.api.operations[req.operation];\n var input = operation.input;\n\n var uri = generateURI(req.httpRequest.endpoint.path, operation.httpPath, input, req.params);\n req.httpRequest.path = uri;\n}\n\nfunction populateHeaders(req) {\n var operation = req.service.api.operations[req.operation];\n util.each(operation.input.members, function (name, member) {\n var value = req.params[name];\n if (value === null || value === undefined) return;\n\n if (member.location === 'headers' && member.type === 'map') {\n util.each(value, function(key, memberValue) {\n req.httpRequest.headers[member.name + key] = memberValue;\n });\n } else if (member.location === 'header') {\n value = member.toWireFormat(value).toString();\n if (member.isJsonValue) {\n value = util.base64.encode(value);\n }\n req.httpRequest.headers[member.name] = value;\n }\n });\n}\n\nfunction buildRequest(req) {\n populateMethod(req);\n populateURI(req);\n populateHeaders(req);\n populateHostPrefix(req);\n}\n\nfunction extractError() {\n}\n\nfunction extractData(resp) {\n var req = resp.request;\n var data = {};\n var r = resp.httpResponse;\n var operation = req.service.api.operations[req.operation];\n var output = operation.output;\n\n // normalize headers names to lower-cased keys for matching\n var headers = {};\n util.each(r.headers, function (k, v) {\n headers[k.toLowerCase()] = v;\n });\n\n util.each(output.members, function(name, member) {\n var header = (member.name || name).toLowerCase();\n if (member.location === 'headers' && member.type === 'map') {\n data[name] = {};\n var location = member.isLocationName ? member.name : '';\n var pattern = new RegExp('^' + location + '(.+)', 'i');\n util.each(r.headers, function (k, v) {\n var result = k.match(pattern);\n if (result !== null) {\n data[name][result[1]] = v;\n }\n });\n } else if (member.location === 'header') {\n if (headers[header] !== undefined) {\n var value = member.isJsonValue ?\n util.base64.decode(headers[header]) :\n headers[header];\n data[name] = member.toType(value);\n }\n } else if (member.location === 'statusCode') {\n data[name] = parseInt(r.statusCode, 10);\n }\n });\n\n resp.data = data;\n}\n\n/**\n * @api private\n */\nmodule.exports = {\n buildRequest: buildRequest,\n extractError: extractError,\n extractData: extractData,\n generateURI: generateURI\n};\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['cloudformation'] = {};\nAWS.CloudFormation = Service.defineService('cloudformation', ['2010-05-15']);\nObject.defineProperty(apiLoader.services['cloudformation'], '2010-05-15', {\n get: function get() {\n var model = require('../apis/cloudformation-2010-05-15.min.json');\n model.paginators = require('../apis/cloudformation-2010-05-15.paginators.json').pagination;\n model.waiters = require('../apis/cloudformation-2010-05-15.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.CloudFormation;\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport BrowserBehavior from '../browserbehavior/BrowserBehavior';\nimport DefaultBrowserBehavior from '../browserbehavior/DefaultBrowserBehavior';\nimport Device from '../devicecontroller/Device';\nimport VideoTransformDevice from '../devicecontroller/VideoTransformDevice';\nimport EventController from '../eventcontroller/EventController';\nimport Logger from '../logger/Logger';\nimport DefaultVideoFrameProcessorPipeline from './DefaultVideoFrameProcessorPipeline';\nimport DefaultVideoTransformDeviceObserver from './DefaultVideoTransformDeviceObserver';\nimport VideoFrameProcessor from './VideoFrameProcessor';\nimport VideoFrameProcessorPipeline from './VideoFrameProcessorPipeline';\nimport VideoFrameProcessorPipelineObserver from './VideoFrameProcessorPipelineObserver';\n\n/**\n * [[DefaultVideoTransformDevice]] is an augmented [[VideoInputDevice]].\n * It transform the input {@link Device} with an array of {@link VideoFrameProcessor} to produce a `MediaStream`.\n */\nexport default class DefaultVideoTransformDevice\n implements VideoTransformDevice, VideoFrameProcessorPipelineObserver {\n private pipe: VideoFrameProcessorPipeline;\n private inputMediaStream: MediaStream;\n private observers: Set = new Set<\n DefaultVideoTransformDeviceObserver\n >();\n\n constructor(\n private logger: Logger,\n private device: Device,\n private processors: VideoFrameProcessor[],\n private browserBehavior: BrowserBehavior = new DefaultBrowserBehavior()\n ) {\n this.pipe = new DefaultVideoFrameProcessorPipeline(this.logger, this.processors);\n this.pipe.addObserver(this);\n }\n\n /**\n * getter for `outputMediaStream`.\n * `outputMediaStream` is returned by internal {@link VideoFrameProcessorPipeline}.\n * It is possible, but unlikely, that this accessor will throw.\n */\n get outputMediaStream(): MediaStream {\n return this.pipe.outputMediaStream;\n }\n\n /** @internal */\n passEventControllerToProcessors(eventController: EventController): void {\n /* istanbul ignore else */\n if (this.pipe.processors) {\n for (const processor of this.pipe.processors) {\n // Only certain processors are configured to provide event reporting,\n // so here will confirm that the processor has event controller capablility\n if (typeof processor.setEventController === 'function') {\n processor.setEventController(eventController);\n }\n }\n }\n }\n\n /**\n * `chooseNewInnerDevice` preserves the inner pipeline and processing state and switches\n * the inner device. Since the pipeline and processors are shared with the new transform device\n * only one transform device can be used.\n */\n chooseNewInnerDevice(newDevice: Device): DefaultVideoTransformDevice {\n const newTransformDevice = new DefaultVideoTransformDevice(\n this.logger,\n newDevice,\n this.processors,\n this.browserBehavior\n );\n newTransformDevice.pipe = this.pipe;\n return newTransformDevice;\n }\n\n /**\n * Return the inner device as provided during construction.\n */\n getInnerDevice(): Device {\n return this.device;\n }\n\n async intrinsicDevice(): Promise {\n return this.device;\n }\n\n /**\n * Create {@link VideoFrameProcessorPipeline} if there is not a existing one and start video processors.\n * Returns output `MediaStream` produced by {@link VideoFrameProcessorPipeline}.\n */\n async transformStream(mediaStream?: MediaStream): Promise {\n await this.pipe.setInputMediaStream(mediaStream);\n this.inputMediaStream = mediaStream;\n return this.pipe.getActiveOutputMediaStream();\n }\n\n /**\n * onOutputStreamDisconnect is called when device controller wants to detach\n * the transform device. The default behavior is to stop the output\n * media stream and release the input the media stream. If the input media stream\n * is the provided device, it will not be released.\n */\n onOutputStreamDisconnect(): void {\n this.logger.info('DefaultVideoTransformDevice: detach stopping input media stream');\n\n const deviceIsMediaStream = this.device && (this.device as MediaStream).id;\n\n // Stop processing but keep the pipe and processors\n this.pipe.stop();\n\n // Turn off the camera, unless device is a MediaStream\n if (!deviceIsMediaStream) {\n if (this.inputMediaStream) {\n for (const track of this.inputMediaStream.getVideoTracks()) {\n track.stop();\n }\n }\n }\n }\n\n /**\n * Dispose of the inner workings of the transform device, including pipeline and processors.\n * `stop` can only be called when the transform device is not used by device controller anymore.\n * After `stop` is called, all transform devices which share the pipeline must be discarded.\n */\n async stop(): Promise {\n if (this.inputMediaStream) {\n for (const track of this.inputMediaStream.getVideoTracks()) {\n track.stop();\n }\n }\n\n this.pipe.destroy();\n this.inputMediaStream = null;\n }\n\n /**\n * Add an observer to receive notifications about lifecycle events.\n * See {@link DefaultVideoTransformDeviceObserver} for details.\n * If the observer has already been added, this method call has no effect.\n */\n addObserver(observer: DefaultVideoTransformDeviceObserver): void {\n this.observers.add(observer);\n }\n\n /**\n * Remove an existing observer. If the observer has not been previously. this method call has no effect.\n */\n removeObserver(observer: DefaultVideoTransformDeviceObserver): void {\n this.observers.delete(observer);\n }\n\n processingDidStart(): void {\n this.logger.info('video transform device processing started');\n this.forEachObserver(observer => {\n if (observer.processingDidStart) {\n observer.processingDidStart();\n }\n });\n }\n\n processingLatencyTooHigh(latencyMs: number): void {\n this.forEachObserver(observer => {\n if (observer.processingLatencyTooHigh) {\n observer.processingLatencyTooHigh(latencyMs);\n }\n });\n }\n\n processingDidFailToStart(): void {\n this.logger.info('video transform device processing failed to start');\n this.forEachObserver(observer => {\n if (observer.processingDidFailToStart) {\n observer.processingDidFailToStart();\n }\n });\n }\n\n processingDidStop(): void {\n this.logger.info('video transform device processing stopped');\n this.forEachObserver(observer => {\n if (observer.processingDidStop) {\n observer.processingDidStop();\n }\n });\n }\n\n private forEachObserver(\n observerFunc: (observer: VideoFrameProcessorPipelineObserver) => void\n ): void {\n for (const observer of this.observers) {\n setTimeout(() => {\n observerFunc(observer);\n }, 0);\n }\n }\n\n get framerate(): number {\n return this.pipe.framerate;\n }\n\n set framerate(value: number) {\n this.pipe.framerate = value;\n }\n}\n","/**\n * @internal\n */\nexport const BLOCK_SIZE: number = 64;\n\n/**\n * @internal\n */\nexport const DIGEST_LENGTH: number = 32;\n\n/**\n * @internal\n */\nexport const KEY = new Uint32Array([\n 0x428a2f98,\n 0x71374491,\n 0xb5c0fbcf,\n 0xe9b5dba5,\n 0x3956c25b,\n 0x59f111f1,\n 0x923f82a4,\n 0xab1c5ed5,\n 0xd807aa98,\n 0x12835b01,\n 0x243185be,\n 0x550c7dc3,\n 0x72be5d74,\n 0x80deb1fe,\n 0x9bdc06a7,\n 0xc19bf174,\n 0xe49b69c1,\n 0xefbe4786,\n 0x0fc19dc6,\n 0x240ca1cc,\n 0x2de92c6f,\n 0x4a7484aa,\n 0x5cb0a9dc,\n 0x76f988da,\n 0x983e5152,\n 0xa831c66d,\n 0xb00327c8,\n 0xbf597fc7,\n 0xc6e00bf3,\n 0xd5a79147,\n 0x06ca6351,\n 0x14292967,\n 0x27b70a85,\n 0x2e1b2138,\n 0x4d2c6dfc,\n 0x53380d13,\n 0x650a7354,\n 0x766a0abb,\n 0x81c2c92e,\n 0x92722c85,\n 0xa2bfe8a1,\n 0xa81a664b,\n 0xc24b8b70,\n 0xc76c51a3,\n 0xd192e819,\n 0xd6990624,\n 0xf40e3585,\n 0x106aa070,\n 0x19a4c116,\n 0x1e376c08,\n 0x2748774c,\n 0x34b0bcb5,\n 0x391c0cb3,\n 0x4ed8aa4a,\n 0x5b9cca4f,\n 0x682e6ff3,\n 0x748f82ee,\n 0x78a5636f,\n 0x84c87814,\n 0x8cc70208,\n 0x90befffa,\n 0xa4506ceb,\n 0xbef9a3f7,\n 0xc67178f2\n]);\n\n/**\n * @internal\n */\nexport const INIT = [\n 0x6a09e667,\n 0xbb67ae85,\n 0x3c6ef372,\n 0xa54ff53a,\n 0x510e527f,\n 0x9b05688c,\n 0x1f83d9ab,\n 0x5be0cd19\n];\n\n/**\n * @internal\n */\nexport const MAX_HASHABLE_LENGTH = 2 ** 53 - 1;\n","'use strict';\n\n/** @type {import('./uri')} */\nmodule.exports = URIError;\n","'use strict';\n\nvar utils = require('./../utils');\n\n// Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nvar ignoreDuplicateOf = [\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n];\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\nmodule.exports = function parseHeaders(headers) {\n var parsed = {};\n var key;\n var val;\n var i;\n\n if (!headers) { return parsed; }\n\n utils.forEach(headers.split('\\n'), function parser(line) {\n i = line.indexOf(':');\n key = utils.trim(line.substr(0, i)).toLowerCase();\n val = utils.trim(line.substr(i + 1));\n\n if (key) {\n if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n return;\n }\n if (key === 'set-cookie') {\n parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n }\n });\n\n return parsed;\n};\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['personalizeruntime'] = {};\nAWS.PersonalizeRuntime = Service.defineService('personalizeruntime', ['2018-05-22']);\nObject.defineProperty(apiLoader.services['personalizeruntime'], '2018-05-22', {\n get: function get() {\n var model = require('../apis/personalize-runtime-2018-05-22.min.json');\n model.paginators = require('../apis/personalize-runtime-2018-05-22.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.PersonalizeRuntime;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['servicecatalog'] = {};\nAWS.ServiceCatalog = Service.defineService('servicecatalog', ['2015-12-10']);\nObject.defineProperty(apiLoader.services['servicecatalog'], '2015-12-10', {\n get: function get() {\n var model = require('../apis/servicecatalog-2015-12-10.min.json');\n model.paginators = require('../apis/servicecatalog-2015-12-10.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.ServiceCatalog;\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport AudioVideoControllerState from '../audiovideocontroller/AudioVideoControllerState';\nimport DataMessage from '../datamessage/DataMessage';\nimport RemovableObserver from '../removableobserver/RemovableObserver';\nimport SignalingClientEvent from '../signalingclient/SignalingClientEvent';\nimport SignalingClientEventType from '../signalingclient/SignalingClientEventType';\nimport SignalingClientObserver from '../signalingclientobserver/SignalingClientObserver';\nimport {\n SdkDataMessageFrame,\n SdkDataMessagePayload,\n SdkSignalFrame,\n} from '../signalingprotocol/SignalingProtocol.js';\nimport BaseTask from './BaseTask';\n\nexport default class SendAndReceiveDataMessagesTask\n extends BaseTask\n implements RemovableObserver, SignalingClientObserver {\n protected taskName = 'SendAndReceiveDataMessagesTask';\n\n private static TOPIC_REGEX = new RegExp(/^[a-zA-Z0-9_-]{1,36}$/);\n private static DATA_SIZE = 2048;\n\n constructor(private context: AudioVideoControllerState) {\n super(context.logger);\n }\n\n async run(): Promise {\n this.context.removableObservers.push(this);\n this.context.signalingClient.registerObserver(this);\n this.context.realtimeController.realtimeSubscribeToSendDataMessage(this.sendDataMessageHandler);\n }\n\n removeObserver(): void {\n this.context.realtimeController.realtimeUnsubscribeFromSendDataMessage(\n this.sendDataMessageHandler\n );\n this.context.signalingClient.removeObserver(this);\n }\n\n handleSignalingClientEvent(event: SignalingClientEvent): void {\n if (\n event.type === SignalingClientEventType.ReceivedSignalFrame &&\n event.message.type === SdkSignalFrame.Type.DATA_MESSAGE\n ) {\n for (const message of event.message.dataMessage.messages) {\n const dataMessage = new DataMessage(\n (message.ingestTimeNs as number) / 1000000,\n message.topic,\n message.data,\n message.senderAttendeeId,\n message.senderExternalUserId,\n (message.ingestTimeNs as number) === 0\n );\n this.context.realtimeController.realtimeReceiveDataMessage(dataMessage);\n }\n }\n }\n\n sendDataMessageHandler = (\n topic: string,\n data: Uint8Array | string | any, // eslint-disable-line @typescript-eslint/no-explicit-any\n lifetimeMs?: number\n ): void => {\n if (this.context.signalingClient.ready()) {\n let uint8Data;\n if (data instanceof Uint8Array) {\n uint8Data = data;\n } else if (typeof data === 'string') {\n uint8Data = new TextEncoder().encode(data);\n } else {\n uint8Data = new TextEncoder().encode(JSON.stringify(data));\n }\n this.validateDataMessage(topic, uint8Data, lifetimeMs);\n const message = SdkDataMessagePayload.create();\n message.topic = topic;\n message.lifetimeMs = lifetimeMs;\n message.data = uint8Data;\n const messageFrame = SdkDataMessageFrame.create();\n messageFrame.messages = [message];\n this.context.signalingClient.sendDataMessage(messageFrame);\n } else {\n this.context.logger.error('Cannot send data message because signaling client is not ready');\n }\n };\n\n private validateDataMessage(topic: string, data: Uint8Array, lifetimeMs?: number): void {\n if (!SendAndReceiveDataMessagesTask.TOPIC_REGEX.test(topic)) {\n throw new Error('Invalid topic');\n }\n\n if (data.length > SendAndReceiveDataMessagesTask.DATA_SIZE) {\n throw new Error('Data size has to be less than 2048 bytes');\n }\n\n if (lifetimeMs && lifetimeMs < 0) {\n throw new Error('The life time of the message has to be non negative');\n }\n }\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { loadWorker } from '../../libs/voicefocus/loader';\nimport BackgroundFilterOptions from '../backgroundfilter/BackgroundFilterOptions';\nimport BackgroundFilterVideoFrameProcessorObserver from '../backgroundfilter/BackgroundFilterVideoFrameProcessorObserver';\nimport EventController from '../eventcontroller/EventController';\nimport Logger from '../logger/Logger';\nimport CanvasVideoFrameBuffer from '../videoframeprocessor/CanvasVideoFrameBuffer';\nimport VideoFrameBuffer from '../videoframeprocessor/VideoFrameBuffer';\nimport BackgroundFilterFrameCounter from './BackgroundFilterFrameCounter';\nimport BackgroundFilterSpec from './BackgroundFilterSpec';\nimport BackgroundFilterVideoFrameProcessorDelegate from './BackgroundFilterVideoFrameProcessorDelegate';\n/** @internal */\nclass DeferredObservable {\n /** Access the last-resolved value of next()\n */\n value: T | undefined = undefined;\n\n private promise?: Promise;\n private resolve: (value: T) => void = null;\n\n /** Create a promise that resolves once next() is called\n */\n whenNext(): Promise {\n /* istanbul ignore else */\n if (!this.promise) {\n // externally-resolvable promise\n this.promise = new Promise(resolve => (this.resolve = resolve));\n }\n return this.promise;\n }\n\n /** Update the value and resolve\n */\n next(value: T): void {\n // store the value, for sync access\n this.value = value;\n // resolve the promise so anyone awaiting whenNext resolves\n this.resolve(value);\n // delete the promise so future whenNext calls get a new promise\n delete this.promise;\n }\n}\n\n/**\n * The [[BackgroundFilterProcessor]] uses WASM and TensorFlow Lite to apply changes to the\n * background image.\n */\n/** @internal */\nexport default abstract class BackgroundFilterProcessor {\n protected targetCanvas: HTMLCanvasElement = document.createElement('canvas') as HTMLCanvasElement;\n protected canvasCtx = this.targetCanvas.getContext('2d');\n protected replacementImage: HTMLImageElement;\n protected filterType: string;\n\n protected canvasVideoFrameBuffer = new CanvasVideoFrameBuffer(this.targetCanvas);\n protected mask$ = new DeferredObservable();\n protected sourceWidth = 0;\n protected sourceHeight = 0;\n protected frameNumber = 0;\n protected videoFramesPerFilterUpdate = 1;\n\n protected spec: BackgroundFilterSpec;\n protected cpuMonitor: BackgroundFilterMonitor;\n protected worker: Worker;\n protected logger: Logger;\n protected delegate: BackgroundFilterVideoFrameProcessorDelegate;\n\n protected initWorkerPromise = BackgroundFilterProcessor.createWorkerPromise<{\n message?: string;\n }>();\n protected loadModelPromise = BackgroundFilterProcessor.createWorkerPromise<{\n message?: string;\n }>();\n\n protected scaledCanvas: HTMLCanvasElement;\n protected frameCounter: BackgroundFilterFrameCounter;\n protected modelInitialized = false;\n protected eventController?: EventController | undefined;\n private destroyed = false;\n\n protected static createWorkerPromise(): {\n resolve: (value: T) => void;\n reject: (value: Error) => void;\n promise: Promise;\n } {\n const resolver: {\n resolve: (value: T) => void;\n reject: (value: Error) => void;\n promise: Promise;\n } = { resolve: null, reject: null, promise: null };\n resolver.promise = new Promise((resolve, reject) => {\n resolver.resolve = resolve;\n resolver.reject = reject;\n });\n return resolver;\n }\n\n /** Check if the input spec are not null\n */\n protected validateSpec(spec: BackgroundFilterSpec): void {\n if (!spec) {\n throw new Error('processor has null spec');\n }\n\n if (!spec.model) {\n throw new Error('processor spec has null model');\n }\n\n if (!spec.paths) {\n throw new Error('processor spec has null paths');\n }\n }\n\n protected validateOptions(options: BackgroundFilterOptions): void {\n if (!options) {\n throw new Error('processor has null options');\n }\n\n if (!options.logger) {\n throw new Error('processor has null options - logger');\n }\n\n if (!options.reportingPeriodMillis) {\n throw new Error('processor has null options - reportingPeriodMillis');\n }\n\n if (!options.filterCPUUtilization) {\n throw new Error('processor has null options - filterCPUUtilization');\n }\n }\n\n abstract initOnFirstExecution(): void;\n\n constructor(\n filterType: string,\n spec: BackgroundFilterSpec,\n options: BackgroundFilterOptions,\n delegate: BackgroundFilterVideoFrameProcessorDelegate,\n eventController?: EventController | undefined\n ) {\n this.filterType = filterType;\n this.validateSpec(spec);\n this.validateOptions(options);\n this.spec = spec;\n this.logger = options.logger;\n this.delegate = delegate;\n this.initCPUMonitor(options);\n this.eventController = eventController;\n }\n\n initCPUMonitor(options: BackgroundFilterOptions): void {\n const CPU_MONITORING_PERIOD_MILLIS = 5000;\n const MAX_SEGMENTATION_SKIP_RATE = 10;\n const MIN_SEGMENTATION_SKIP_RATE = 1;\n this.videoFramesPerFilterUpdate = 1;\n this.frameCounter = new BackgroundFilterFrameCounter(\n this.delegate,\n options.reportingPeriodMillis,\n options.filterCPUUtilization,\n this.logger\n );\n this.cpuMonitor = new BackgroundFilterMonitor(CPU_MONITORING_PERIOD_MILLIS, {\n reduceCPUUtilization: () => {\n this.updateVideoFramesPerFilterUpdate(\n Math.min(this.videoFramesPerFilterUpdate + 1, MAX_SEGMENTATION_SKIP_RATE)\n );\n },\n increaseCPUUtilization: () => {\n this.updateVideoFramesPerFilterUpdate(\n Math.max(this.videoFramesPerFilterUpdate - 1, MIN_SEGMENTATION_SKIP_RATE)\n );\n },\n });\n this.delegate.addObserver(this.cpuMonitor);\n }\n /** Converts a value to a JSON string\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n protected stringify(value: any): string {\n return JSON.stringify(value, null, 2);\n }\n\n /**\n * Sends a message to worker and resolves promise in response to worker's initialize event\n */\n handleInitialize(msg: { payload: number }): void {\n this.logger.info(`received initialize message: ${this.stringify(msg)}`);\n if (!msg.payload) {\n this.logger.error('failed to initialize module');\n this.initWorkerPromise.reject(new Error('failed to initialize the module'));\n return;\n }\n const model = this.spec.model;\n this.worker.postMessage({\n msg: 'loadModel',\n payload: {\n modelUrl: model.path,\n inputHeight: model.input.height,\n inputWidth: model.input.width,\n inputChannels: 4,\n modelRangeMin: model.input.range[0],\n modelRangeMax: model.input.range[1],\n blurPixels: 0,\n },\n });\n this.initWorkerPromise.resolve({});\n }\n\n /**\n * Resolves promise in response to worker's loadModel event\n */\n handleLoadModel(msg: { payload: number }): void {\n this.logger.info(`received load model message: ${this.stringify(msg)}`);\n if (msg.payload !== 2) {\n this.logger.error('failed to load model! status: ' + msg.payload);\n /** Rejects model promise\n */\n this.loadModelPromise.reject(new Error('failed to load model! status: ' + msg.payload));\n return;\n }\n this.modelInitialized = true;\n this.loadModelPromise.resolve({});\n }\n\n /** Updates the payload output value in response to worker's predict event\n */\n handlePredict(msg: { payload: { output: ImageData } }): void {\n this.mask$.next(msg.payload.output as ImageData);\n }\n\n /**\n * This method will handle the asynchronous messaging between the main JS thread\n * and the worker thread.\n * @param evt An event that was sent from the worker to the JS thread.\n * @returns\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n protected handleWorkerEvent(evt: MessageEvent): void {\n const msg = evt.data;\n switch (msg.msg) {\n case 'initialize':\n this.handleInitialize(msg);\n break;\n case 'loadModel':\n this.handleLoadModel(msg);\n break;\n case 'predict':\n this.handlePredict(msg);\n break;\n default:\n this.logger.info(`unexpected event msg: ${this.stringify(msg)}`);\n break;\n }\n }\n\n /**\n * This method initializes all of the resource necessary to processs background filter. It returns\n * a promise and resolves or rejects the promise once the initialization is complete.\n * @returns\n * @throws An error will be thrown\n */\n async loadAssets(): Promise {\n this.logger.info('start initializing the processor');\n try {\n this.worker = await loadWorker(this.spec.paths.worker, 'BackgroundFilterWorker', {}, null);\n this.worker.addEventListener('message', ev => this.handleWorkerEvent(ev));\n\n this.worker.postMessage({\n msg: 'initialize',\n payload: {\n wasmPath: this.spec.paths.wasm,\n simdPath: this.spec.paths.simd,\n },\n });\n\n await this.initWorkerPromise.promise;\n this.logger.info(`successfully initialized the ${this.filterType} worker`);\n\n await this.loadModelPromise.promise;\n this.logger.info(`successfully loaded ${this.filterType} worker segmentation model`);\n } catch (error) {\n throw new Error(\n `could not initialize the ${this.filterType} video frame processor due to '${error.message}'`\n );\n }\n this.logger.info(`successfully initialized the ${this.filterType} processor`);\n }\n\n /**\n * Processes the VideoFrameBuffer by applying a segmentation mask and replacing the background.\n * @param buffers object that contains the canvas element that will be used to obtain the image data to process\n * @returns the updated buffer that contains the image with the background replaced.\n */\n async process(buffers: VideoFrameBuffer[]): Promise {\n if (this.destroyed) {\n return buffers;\n }\n\n this.frameCounter.frameReceived(buffers[0].framerate);\n this.cpuMonitor.frameReceived();\n const inputCanvas = buffers[0].asCanvasElement() as HTMLCanvasElement;\n if (!inputCanvas) {\n return buffers;\n }\n\n if (!this.modelInitialized) {\n // return existing buffer, if any\n buffers[0] = this.canvasVideoFrameBuffer;\n return buffers;\n }\n\n const frameWidth = inputCanvas.width;\n const frameHeight = inputCanvas.height;\n if (frameWidth === 0 || frameHeight === 0) {\n return buffers;\n }\n\n // on first execution of process the source width will be zero\n if (this.sourceWidth === 0) {\n this.sourceWidth = frameWidth;\n this.sourceHeight = frameHeight;\n\n // update target canvas size to match the frame size\n this.targetCanvas.width = this.sourceWidth;\n this.targetCanvas.height = this.sourceHeight;\n\n this.logger.info(`${this.filterType} source width: ${this.sourceWidth}`);\n this.logger.info(`${this.filterType} source height: ${this.sourceHeight}`);\n\n this.initOnFirstExecution();\n }\n\n if (this.sourceWidth !== frameWidth || this.sourceHeight !== frameHeight) {\n this.sourceWidth = frameWidth;\n this.sourceHeight = frameHeight;\n\n // update target canvas size to match the frame size\n this.targetCanvas.width = this.sourceWidth;\n this.targetCanvas.height = this.sourceHeight;\n }\n\n try {\n this.frameCounter.filterSubmitted();\n let mask = this.mask$.value;\n\n const hscale = this.spec.model.input.width / inputCanvas.width;\n const vscale = this.spec.model.input.height / inputCanvas.height;\n\n if (this.scaledCanvas === undefined) {\n this.scaledCanvas = document.createElement('canvas');\n this.scaledCanvas.width = this.spec.model.input.width;\n this.scaledCanvas.height = this.spec.model.input.height;\n }\n\n const scaledCtx = this.scaledCanvas.getContext('2d');\n scaledCtx.save();\n scaledCtx.scale(hscale, vscale);\n scaledCtx.drawImage(inputCanvas, 0, 0);\n scaledCtx.restore();\n\n const imageData = scaledCtx.getImageData(\n 0,\n 0,\n this.scaledCanvas.width,\n this.scaledCanvas.height\n );\n\n // update the filter mask based on the filter update rate\n if (this.frameNumber % this.videoFramesPerFilterUpdate === 0) {\n // process frame...\n const maskPromise = this.mask$.whenNext();\n this.worker.postMessage({ msg: 'predict', payload: imageData }, [imageData.data.buffer]);\n mask = await maskPromise;\n }\n // It's possible that while waiting for the predict to complete the processor was destroyed.\n // adding a destroyed check here to ensure the implementation of drawImageWithMask does not throw\n // an error due to destroyed processor.\n if (!this.destroyed) {\n this.drawImageWithMask(inputCanvas, mask);\n }\n } catch (error) {\n this.logger.error(`could not process ${this.filterType} frame buffer due to ${error}`);\n return buffers;\n } finally {\n this.frameCounter.filterComplete();\n this.frameNumber++;\n }\n\n buffers[0] = this.canvasVideoFrameBuffer;\n\n return buffers;\n }\n\n protected updateVideoFramesPerFilterUpdate(newRate: number): void {\n if (newRate !== this.videoFramesPerFilterUpdate) {\n this.videoFramesPerFilterUpdate = newRate;\n this.logger.info(\n `Adjusting filter rate to compensate for CPU utilization. ` +\n `Filter rate is ${this.videoFramesPerFilterUpdate} video frames per filter.`\n );\n }\n }\n\n /**\n * Clean up processor resources\n */\n async destroy(): Promise {\n this.destroyed = true;\n this.delegate.removeObserver(this.cpuMonitor);\n this.canvasVideoFrameBuffer.destroy();\n this.worker?.postMessage({ msg: 'destroy' });\n this.worker?.postMessage({ msg: 'stop' });\n this.targetCanvas?.remove();\n this.targetCanvas = undefined;\n this.scaledCanvas?.remove();\n this.scaledCanvas = undefined;\n this.logger.info(`${this.filterType} frame process destroyed`);\n }\n\n /**\n * Draw image with mask\n */\n abstract drawImageWithMask(inputCanvas: HTMLCanvasElement, mask: ImageData): void;\n}\n\n/** @internal */\ninterface MonitorCpuObserver {\n reduceCPUUtilization: () => void;\n increaseCPUUtilization: () => void;\n}\n\n/** @internal */\nexport class BackgroundFilterMonitor implements BackgroundFilterVideoFrameProcessorObserver {\n private lastCPUChangeTimestamp: number = 0;\n constructor(private monitoringPeriodMillis: number, private observer: MonitorCpuObserver) {}\n\n filterCPUUtilizationHigh(): void {\n const timestamp = Date.now();\n // Allow some time to pass before we check CPU utilization.\n if (timestamp - this.lastCPUChangeTimestamp >= this.monitoringPeriodMillis) {\n this.lastCPUChangeTimestamp = timestamp;\n this.observer.reduceCPUUtilization();\n }\n }\n\n frameReceived(): void {\n const timestamp = Date.now();\n // If a enough time has passed, reset the processor and continue to monitor\n if (timestamp - this.lastCPUChangeTimestamp >= this.monitoringPeriodMillis * 2) {\n this.lastCPUChangeTimestamp = timestamp;\n this.observer.increaseCPUUtilization();\n }\n }\n}\n","var AWS = require('../core');\nvar EventEmitter = require('events').EventEmitter;\nrequire('../http');\n\n/**\n * @api private\n */\nAWS.XHRClient = AWS.util.inherit({\n handleRequest: function handleRequest(httpRequest, httpOptions, callback, errCallback) {\n var self = this;\n var endpoint = httpRequest.endpoint;\n var emitter = new EventEmitter();\n var href = endpoint.protocol + '//' + endpoint.hostname;\n if (endpoint.port !== 80 && endpoint.port !== 443) {\n href += ':' + endpoint.port;\n }\n href += httpRequest.path;\n\n var xhr = new XMLHttpRequest(), headersEmitted = false;\n httpRequest.stream = xhr;\n\n xhr.addEventListener('readystatechange', function() {\n try {\n if (xhr.status === 0) return; // 0 code is invalid\n } catch (e) { return; }\n\n if (this.readyState >= this.HEADERS_RECEIVED && !headersEmitted) {\n emitter.statusCode = xhr.status;\n emitter.headers = self.parseHeaders(xhr.getAllResponseHeaders());\n emitter.emit(\n 'headers',\n emitter.statusCode,\n emitter.headers,\n xhr.statusText\n );\n headersEmitted = true;\n }\n if (this.readyState === this.DONE) {\n self.finishRequest(xhr, emitter);\n }\n }, false);\n xhr.upload.addEventListener('progress', function (evt) {\n emitter.emit('sendProgress', evt);\n });\n xhr.addEventListener('progress', function (evt) {\n emitter.emit('receiveProgress', evt);\n }, false);\n xhr.addEventListener('timeout', function () {\n errCallback(AWS.util.error(new Error('Timeout'), {code: 'TimeoutError'}));\n }, false);\n xhr.addEventListener('error', function () {\n errCallback(AWS.util.error(new Error('Network Failure'), {\n code: 'NetworkingError'\n }));\n }, false);\n xhr.addEventListener('abort', function () {\n errCallback(AWS.util.error(new Error('Request aborted'), {\n code: 'RequestAbortedError'\n }));\n }, false);\n\n callback(emitter);\n xhr.open(httpRequest.method, href, httpOptions.xhrAsync !== false);\n AWS.util.each(httpRequest.headers, function (key, value) {\n if (key !== 'Content-Length' && key !== 'User-Agent' && key !== 'Host') {\n xhr.setRequestHeader(key, value);\n }\n });\n\n if (httpOptions.timeout && httpOptions.xhrAsync !== false) {\n xhr.timeout = httpOptions.timeout;\n }\n\n if (httpOptions.xhrWithCredentials) {\n xhr.withCredentials = true;\n }\n try { xhr.responseType = 'arraybuffer'; } catch (e) {}\n\n try {\n if (httpRequest.body) {\n xhr.send(httpRequest.body);\n } else {\n xhr.send();\n }\n } catch (err) {\n if (httpRequest.body && typeof httpRequest.body.buffer === 'object') {\n xhr.send(httpRequest.body.buffer); // send ArrayBuffer directly\n } else {\n throw err;\n }\n }\n\n return emitter;\n },\n\n parseHeaders: function parseHeaders(rawHeaders) {\n var headers = {};\n AWS.util.arrayEach(rawHeaders.split(/\\r?\\n/), function (line) {\n var key = line.split(':', 1)[0];\n var value = line.substring(key.length + 2);\n if (key.length > 0) headers[key.toLowerCase()] = value;\n });\n return headers;\n },\n\n finishRequest: function finishRequest(xhr, emitter) {\n var buffer;\n if (xhr.responseType === 'arraybuffer' && xhr.response) {\n var ab = xhr.response;\n buffer = new AWS.util.Buffer(ab.byteLength);\n var view = new Uint8Array(ab);\n for (var i = 0; i < buffer.length; ++i) {\n buffer[i] = view[i];\n }\n }\n\n try {\n if (!buffer && typeof xhr.responseText === 'string') {\n buffer = new AWS.util.Buffer(xhr.responseText);\n }\n } catch (e) {}\n\n if (buffer) emitter.emit('data', buffer);\n emitter.emit('end');\n }\n});\n\n/**\n * @api private\n */\nAWS.HttpClient.prototype = AWS.XHRClient.prototype;\n\n/**\n * @api private\n */\nAWS.HttpClient.streamsApiVersion = 1;\n","var AWS = require('./core');\nvar inherit = AWS.util.inherit;\n\n/**\n * The endpoint that a service will talk to, for example,\n * `'https://ec2.ap-southeast-1.amazonaws.com'`. If\n * you need to override an endpoint for a service, you can\n * set the endpoint on a service by passing the endpoint\n * object with the `endpoint` option key:\n *\n * ```javascript\n * var ep = new AWS.Endpoint('awsproxy.example.com');\n * var s3 = new AWS.S3({endpoint: ep});\n * s3.service.endpoint.hostname == 'awsproxy.example.com'\n * ```\n *\n * Note that if you do not specify a protocol, the protocol will\n * be selected based on your current {AWS.config} configuration.\n *\n * @!attribute protocol\n * @return [String] the protocol (http or https) of the endpoint\n * URL\n * @!attribute hostname\n * @return [String] the host portion of the endpoint, e.g.,\n * example.com\n * @!attribute host\n * @return [String] the host portion of the endpoint including\n * the port, e.g., example.com:80\n * @!attribute port\n * @return [Integer] the port of the endpoint\n * @!attribute href\n * @return [String] the full URL of the endpoint\n */\nAWS.Endpoint = inherit({\n\n /**\n * @overload Endpoint(endpoint)\n * Constructs a new endpoint given an endpoint URL. If the\n * URL omits a protocol (http or https), the default protocol\n * set in the global {AWS.config} will be used.\n * @param endpoint [String] the URL to construct an endpoint from\n */\n constructor: function Endpoint(endpoint, config) {\n AWS.util.hideProperties(this, ['slashes', 'auth', 'hash', 'search', 'query']);\n\n if (typeof endpoint === 'undefined' || endpoint === null) {\n throw new Error('Invalid endpoint: ' + endpoint);\n } else if (typeof endpoint !== 'string') {\n return AWS.util.copy(endpoint);\n }\n\n if (!endpoint.match(/^http/)) {\n var useSSL = config && config.sslEnabled !== undefined ?\n config.sslEnabled : AWS.config.sslEnabled;\n endpoint = (useSSL ? 'https' : 'http') + '://' + endpoint;\n }\n\n AWS.util.update(this, AWS.util.urlParse(endpoint));\n\n // Ensure the port property is set as an integer\n if (this.port) {\n this.port = parseInt(this.port, 10);\n } else {\n this.port = this.protocol === 'https:' ? 443 : 80;\n }\n }\n\n});\n\n/**\n * The low level HTTP request object, encapsulating all HTTP header\n * and body data sent by a service request.\n *\n * @!attribute method\n * @return [String] the HTTP method of the request\n * @!attribute path\n * @return [String] the path portion of the URI, e.g.,\n * \"/list/?start=5&num=10\"\n * @!attribute headers\n * @return [map]\n * a map of header keys and their respective values\n * @!attribute body\n * @return [String] the request body payload\n * @!attribute endpoint\n * @return [AWS.Endpoint] the endpoint for the request\n * @!attribute region\n * @api private\n * @return [String] the region, for signing purposes only.\n */\nAWS.HttpRequest = inherit({\n\n /**\n * @api private\n */\n constructor: function HttpRequest(endpoint, region) {\n endpoint = new AWS.Endpoint(endpoint);\n this.method = 'POST';\n this.path = endpoint.path || '/';\n this.headers = {};\n this.body = '';\n this.endpoint = endpoint;\n this.region = region;\n this._userAgent = '';\n this.setUserAgent();\n },\n\n /**\n * @api private\n */\n setUserAgent: function setUserAgent() {\n this._userAgent = this.headers[this.getUserAgentHeaderName()] = AWS.util.userAgent();\n },\n\n getUserAgentHeaderName: function getUserAgentHeaderName() {\n var prefix = AWS.util.isBrowser() ? 'X-Amz-' : '';\n return prefix + 'User-Agent';\n },\n\n /**\n * @api private\n */\n appendToUserAgent: function appendToUserAgent(agentPartial) {\n if (typeof agentPartial === 'string' && agentPartial) {\n this._userAgent += ' ' + agentPartial;\n }\n this.headers[this.getUserAgentHeaderName()] = this._userAgent;\n },\n\n /**\n * @api private\n */\n getUserAgent: function getUserAgent() {\n return this._userAgent;\n },\n\n /**\n * @return [String] the part of the {path} excluding the\n * query string\n */\n pathname: function pathname() {\n return this.path.split('?', 1)[0];\n },\n\n /**\n * @return [String] the query string portion of the {path}\n */\n search: function search() {\n var query = this.path.split('?', 2)[1];\n if (query) {\n query = AWS.util.queryStringParse(query);\n return AWS.util.queryParamsToString(query);\n }\n return '';\n },\n\n /**\n * @api private\n * update httpRequest endpoint with endpoint string\n */\n updateEndpoint: function updateEndpoint(endpointStr) {\n var newEndpoint = new AWS.Endpoint(endpointStr);\n this.endpoint = newEndpoint;\n this.path = newEndpoint.path || '/';\n if (this.headers['Host']) {\n this.headers['Host'] = newEndpoint.host;\n }\n }\n});\n\n/**\n * The low level HTTP response object, encapsulating all HTTP header\n * and body data returned from the request.\n *\n * @!attribute statusCode\n * @return [Integer] the HTTP status code of the response (e.g., 200, 404)\n * @!attribute headers\n * @return [map]\n * a map of response header keys and their respective values\n * @!attribute body\n * @return [String] the response body payload\n * @!attribute [r] streaming\n * @return [Boolean] whether this response is being streamed at a low-level.\n * Defaults to `false` (buffered reads). Do not modify this manually, use\n * {createUnbufferedStream} to convert the stream to unbuffered mode\n * instead.\n */\nAWS.HttpResponse = inherit({\n\n /**\n * @api private\n */\n constructor: function HttpResponse() {\n this.statusCode = undefined;\n this.headers = {};\n this.body = undefined;\n this.streaming = false;\n this.stream = null;\n },\n\n /**\n * Disables buffering on the HTTP response and returns the stream for reading.\n * @return [Stream, XMLHttpRequest, null] the underlying stream object.\n * Use this object to directly read data off of the stream.\n * @note This object is only available after the {AWS.Request~httpHeaders}\n * event has fired. This method must be called prior to\n * {AWS.Request~httpData}.\n * @example Taking control of a stream\n * request.on('httpHeaders', function(statusCode, headers) {\n * if (statusCode < 300) {\n * if (headers.etag === 'xyz') {\n * // pipe the stream, disabling buffering\n * var stream = this.response.httpResponse.createUnbufferedStream();\n * stream.pipe(process.stdout);\n * } else { // abort this request and set a better error message\n * this.abort();\n * this.response.error = new Error('Invalid ETag');\n * }\n * }\n * }).send(console.log);\n */\n createUnbufferedStream: function createUnbufferedStream() {\n this.streaming = true;\n return this.stream;\n }\n});\n\n\nAWS.HttpClient = inherit({});\n\n/**\n * @api private\n */\nAWS.HttpClient.getInstance = function getInstance() {\n if (this.singleton === undefined) {\n this.singleton = new this();\n }\n return this.singleton;\n};\n","'use strict';\nvar aSet = require('../internals/a-set');\nvar add = require('../internals/set-helpers').add;\nvar clone = require('../internals/set-clone');\nvar getSetRecord = require('../internals/get-set-record');\nvar iterateSimple = require('../internals/iterate-simple');\n\n// `Set.prototype.union` method\n// https://github.com/tc39/proposal-set-methods\nmodule.exports = function union(other) {\n var O = aSet(this);\n var keysIter = getSetRecord(other).getIterator();\n var result = clone(O);\n iterateSimple(keysIter, function (it) {\n add(result, it);\n });\n return result;\n};\n","/**\n * Password-based encryption functions.\n *\n * @author Dave Longley\n * @author Stefan Siegl \n *\n * Copyright (c) 2010-2013 Digital Bazaar, Inc.\n * Copyright (c) 2012 Stefan Siegl \n *\n * An EncryptedPrivateKeyInfo:\n *\n * EncryptedPrivateKeyInfo ::= SEQUENCE {\n * encryptionAlgorithm EncryptionAlgorithmIdentifier,\n * encryptedData EncryptedData }\n *\n * EncryptionAlgorithmIdentifier ::= AlgorithmIdentifier\n *\n * EncryptedData ::= OCTET STRING\n */\nvar forge = require('./forge');\nrequire('./aes');\nrequire('./asn1');\nrequire('./des');\nrequire('./md');\nrequire('./oids');\nrequire('./pbkdf2');\nrequire('./pem');\nrequire('./random');\nrequire('./rc2');\nrequire('./rsa');\nrequire('./util');\n\nif(typeof BigInteger === 'undefined') {\n var BigInteger = forge.jsbn.BigInteger;\n}\n\n// shortcut for asn.1 API\nvar asn1 = forge.asn1;\n\n/* Password-based encryption implementation. */\nvar pki = forge.pki = forge.pki || {};\nmodule.exports = pki.pbe = forge.pbe = forge.pbe || {};\nvar oids = pki.oids;\n\n// validator for an EncryptedPrivateKeyInfo structure\n// Note: Currently only works w/algorithm params\nvar encryptedPrivateKeyValidator = {\n name: 'EncryptedPrivateKeyInfo',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n value: [{\n name: 'EncryptedPrivateKeyInfo.encryptionAlgorithm',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n value: [{\n name: 'AlgorithmIdentifier.algorithm',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.OID,\n constructed: false,\n capture: 'encryptionOid'\n }, {\n name: 'AlgorithmIdentifier.parameters',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n captureAsn1: 'encryptionParams'\n }]\n }, {\n // encryptedData\n name: 'EncryptedPrivateKeyInfo.encryptedData',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.OCTETSTRING,\n constructed: false,\n capture: 'encryptedData'\n }]\n};\n\n// validator for a PBES2Algorithms structure\n// Note: Currently only works w/PBKDF2 + AES encryption schemes\nvar PBES2AlgorithmsValidator = {\n name: 'PBES2Algorithms',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n value: [{\n name: 'PBES2Algorithms.keyDerivationFunc',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n value: [{\n name: 'PBES2Algorithms.keyDerivationFunc.oid',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.OID,\n constructed: false,\n capture: 'kdfOid'\n }, {\n name: 'PBES2Algorithms.params',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n value: [{\n name: 'PBES2Algorithms.params.salt',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.OCTETSTRING,\n constructed: false,\n capture: 'kdfSalt'\n }, {\n name: 'PBES2Algorithms.params.iterationCount',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.INTEGER,\n constructed: false,\n capture: 'kdfIterationCount'\n }, {\n name: 'PBES2Algorithms.params.keyLength',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.INTEGER,\n constructed: false,\n optional: true,\n capture: 'keyLength'\n }, {\n // prf\n name: 'PBES2Algorithms.params.prf',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n optional: true,\n value: [{\n name: 'PBES2Algorithms.params.prf.algorithm',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.OID,\n constructed: false,\n capture: 'prfOid'\n }]\n }]\n }]\n }, {\n name: 'PBES2Algorithms.encryptionScheme',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n value: [{\n name: 'PBES2Algorithms.encryptionScheme.oid',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.OID,\n constructed: false,\n capture: 'encOid'\n }, {\n name: 'PBES2Algorithms.encryptionScheme.iv',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.OCTETSTRING,\n constructed: false,\n capture: 'encIv'\n }]\n }]\n};\n\nvar pkcs12PbeParamsValidator = {\n name: 'pkcs-12PbeParams',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n value: [{\n name: 'pkcs-12PbeParams.salt',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.OCTETSTRING,\n constructed: false,\n capture: 'salt'\n }, {\n name: 'pkcs-12PbeParams.iterations',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.INTEGER,\n constructed: false,\n capture: 'iterations'\n }]\n};\n\n/**\n * Encrypts a ASN.1 PrivateKeyInfo object, producing an EncryptedPrivateKeyInfo.\n *\n * PBES2Algorithms ALGORITHM-IDENTIFIER ::=\n * { {PBES2-params IDENTIFIED BY id-PBES2}, ...}\n *\n * id-PBES2 OBJECT IDENTIFIER ::= {pkcs-5 13}\n *\n * PBES2-params ::= SEQUENCE {\n * keyDerivationFunc AlgorithmIdentifier {{PBES2-KDFs}},\n * encryptionScheme AlgorithmIdentifier {{PBES2-Encs}}\n * }\n *\n * PBES2-KDFs ALGORITHM-IDENTIFIER ::=\n * { {PBKDF2-params IDENTIFIED BY id-PBKDF2}, ... }\n *\n * PBES2-Encs ALGORITHM-IDENTIFIER ::= { ... }\n *\n * PBKDF2-params ::= SEQUENCE {\n * salt CHOICE {\n * specified OCTET STRING,\n * otherSource AlgorithmIdentifier {{PBKDF2-SaltSources}}\n * },\n * iterationCount INTEGER (1..MAX),\n * keyLength INTEGER (1..MAX) OPTIONAL,\n * prf AlgorithmIdentifier {{PBKDF2-PRFs}} DEFAULT algid-hmacWithSHA1\n * }\n *\n * @param obj the ASN.1 PrivateKeyInfo object.\n * @param password the password to encrypt with.\n * @param options:\n * algorithm the encryption algorithm to use\n * ('aes128', 'aes192', 'aes256', '3des'), defaults to 'aes128'.\n * count the iteration count to use.\n * saltSize the salt size to use.\n * prfAlgorithm the PRF message digest algorithm to use\n * ('sha1', 'sha224', 'sha256', 'sha384', 'sha512')\n *\n * @return the ASN.1 EncryptedPrivateKeyInfo.\n */\npki.encryptPrivateKeyInfo = function(obj, password, options) {\n // set default options\n options = options || {};\n options.saltSize = options.saltSize || 8;\n options.count = options.count || 2048;\n options.algorithm = options.algorithm || 'aes128';\n options.prfAlgorithm = options.prfAlgorithm || 'sha1';\n\n // generate PBE params\n var salt = forge.random.getBytesSync(options.saltSize);\n var count = options.count;\n var countBytes = asn1.integerToDer(count);\n var dkLen;\n var encryptionAlgorithm;\n var encryptedData;\n if(options.algorithm.indexOf('aes') === 0 || options.algorithm === 'des') {\n // do PBES2\n var ivLen, encOid, cipherFn;\n switch(options.algorithm) {\n case 'aes128':\n dkLen = 16;\n ivLen = 16;\n encOid = oids['aes128-CBC'];\n cipherFn = forge.aes.createEncryptionCipher;\n break;\n case 'aes192':\n dkLen = 24;\n ivLen = 16;\n encOid = oids['aes192-CBC'];\n cipherFn = forge.aes.createEncryptionCipher;\n break;\n case 'aes256':\n dkLen = 32;\n ivLen = 16;\n encOid = oids['aes256-CBC'];\n cipherFn = forge.aes.createEncryptionCipher;\n break;\n case 'des':\n dkLen = 8;\n ivLen = 8;\n encOid = oids['desCBC'];\n cipherFn = forge.des.createEncryptionCipher;\n break;\n default:\n var error = new Error('Cannot encrypt private key. Unknown encryption algorithm.');\n error.algorithm = options.algorithm;\n throw error;\n }\n\n // get PRF message digest\n var prfAlgorithm = 'hmacWith' + options.prfAlgorithm.toUpperCase();\n var md = prfAlgorithmToMessageDigest(prfAlgorithm);\n\n // encrypt private key using pbe SHA-1 and AES/DES\n var dk = forge.pkcs5.pbkdf2(password, salt, count, dkLen, md);\n var iv = forge.random.getBytesSync(ivLen);\n var cipher = cipherFn(dk);\n cipher.start(iv);\n cipher.update(asn1.toDer(obj));\n cipher.finish();\n encryptedData = cipher.output.getBytes();\n\n // get PBKDF2-params\n var params = createPbkdf2Params(salt, countBytes, dkLen, prfAlgorithm);\n\n encryptionAlgorithm = asn1.create(\n asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false,\n asn1.oidToDer(oids['pkcs5PBES2']).getBytes()),\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n // keyDerivationFunc\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false,\n asn1.oidToDer(oids['pkcs5PBKDF2']).getBytes()),\n // PBKDF2-params\n params\n ]),\n // encryptionScheme\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false,\n asn1.oidToDer(encOid).getBytes()),\n // iv\n asn1.create(\n asn1.Class.UNIVERSAL, asn1.Type.OCTETSTRING, false, iv)\n ])\n ])\n ]);\n } else if(options.algorithm === '3des') {\n // Do PKCS12 PBE\n dkLen = 24;\n\n var saltBytes = new forge.util.ByteBuffer(salt);\n var dk = pki.pbe.generatePkcs12Key(password, saltBytes, 1, count, dkLen);\n var iv = pki.pbe.generatePkcs12Key(password, saltBytes, 2, count, dkLen);\n var cipher = forge.des.createEncryptionCipher(dk);\n cipher.start(iv);\n cipher.update(asn1.toDer(obj));\n cipher.finish();\n encryptedData = cipher.output.getBytes();\n\n encryptionAlgorithm = asn1.create(\n asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false,\n asn1.oidToDer(oids['pbeWithSHAAnd3-KeyTripleDES-CBC']).getBytes()),\n // pkcs-12PbeParams\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n // salt\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OCTETSTRING, false, salt),\n // iteration count\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.INTEGER, false,\n countBytes.getBytes())\n ])\n ]);\n } else {\n var error = new Error('Cannot encrypt private key. Unknown encryption algorithm.');\n error.algorithm = options.algorithm;\n throw error;\n }\n\n // EncryptedPrivateKeyInfo\n var rval = asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n // encryptionAlgorithm\n encryptionAlgorithm,\n // encryptedData\n asn1.create(\n asn1.Class.UNIVERSAL, asn1.Type.OCTETSTRING, false, encryptedData)\n ]);\n return rval;\n};\n\n/**\n * Decrypts a ASN.1 PrivateKeyInfo object.\n *\n * @param obj the ASN.1 EncryptedPrivateKeyInfo object.\n * @param password the password to decrypt with.\n *\n * @return the ASN.1 PrivateKeyInfo on success, null on failure.\n */\npki.decryptPrivateKeyInfo = function(obj, password) {\n var rval = null;\n\n // get PBE params\n var capture = {};\n var errors = [];\n if(!asn1.validate(obj, encryptedPrivateKeyValidator, capture, errors)) {\n var error = new Error('Cannot read encrypted private key. ' +\n 'ASN.1 object is not a supported EncryptedPrivateKeyInfo.');\n error.errors = errors;\n throw error;\n }\n\n // get cipher\n var oid = asn1.derToOid(capture.encryptionOid);\n var cipher = pki.pbe.getCipher(oid, capture.encryptionParams, password);\n\n // get encrypted data\n var encrypted = forge.util.createBuffer(capture.encryptedData);\n\n cipher.update(encrypted);\n if(cipher.finish()) {\n rval = asn1.fromDer(cipher.output);\n }\n\n return rval;\n};\n\n/**\n * Converts a EncryptedPrivateKeyInfo to PEM format.\n *\n * @param epki the EncryptedPrivateKeyInfo.\n * @param maxline the maximum characters per line, defaults to 64.\n *\n * @return the PEM-formatted encrypted private key.\n */\npki.encryptedPrivateKeyToPem = function(epki, maxline) {\n // convert to DER, then PEM-encode\n var msg = {\n type: 'ENCRYPTED PRIVATE KEY',\n body: asn1.toDer(epki).getBytes()\n };\n return forge.pem.encode(msg, {maxline: maxline});\n};\n\n/**\n * Converts a PEM-encoded EncryptedPrivateKeyInfo to ASN.1 format. Decryption\n * is not performed.\n *\n * @param pem the EncryptedPrivateKeyInfo in PEM-format.\n *\n * @return the ASN.1 EncryptedPrivateKeyInfo.\n */\npki.encryptedPrivateKeyFromPem = function(pem) {\n var msg = forge.pem.decode(pem)[0];\n\n if(msg.type !== 'ENCRYPTED PRIVATE KEY') {\n var error = new Error('Could not convert encrypted private key from PEM; ' +\n 'PEM header type is \"ENCRYPTED PRIVATE KEY\".');\n error.headerType = msg.type;\n throw error;\n }\n if(msg.procType && msg.procType.type === 'ENCRYPTED') {\n throw new Error('Could not convert encrypted private key from PEM; ' +\n 'PEM is encrypted.');\n }\n\n // convert DER to ASN.1 object\n return asn1.fromDer(msg.body);\n};\n\n/**\n * Encrypts an RSA private key. By default, the key will be wrapped in\n * a PrivateKeyInfo and encrypted to produce a PKCS#8 EncryptedPrivateKeyInfo.\n * This is the standard, preferred way to encrypt a private key.\n *\n * To produce a non-standard PEM-encrypted private key that uses encapsulated\n * headers to indicate the encryption algorithm (old-style non-PKCS#8 OpenSSL\n * private key encryption), set the 'legacy' option to true. Note: Using this\n * option will cause the iteration count to be forced to 1.\n *\n * Note: The 'des' algorithm is supported, but it is not considered to be\n * secure because it only uses a single 56-bit key. If possible, it is highly\n * recommended that a different algorithm be used.\n *\n * @param rsaKey the RSA key to encrypt.\n * @param password the password to use.\n * @param options:\n * algorithm: the encryption algorithm to use\n * ('aes128', 'aes192', 'aes256', '3des', 'des').\n * count: the iteration count to use.\n * saltSize: the salt size to use.\n * legacy: output an old non-PKCS#8 PEM-encrypted+encapsulated\n * headers (DEK-Info) private key.\n *\n * @return the PEM-encoded ASN.1 EncryptedPrivateKeyInfo.\n */\npki.encryptRsaPrivateKey = function(rsaKey, password, options) {\n // standard PKCS#8\n options = options || {};\n if(!options.legacy) {\n // encrypt PrivateKeyInfo\n var rval = pki.wrapRsaPrivateKey(pki.privateKeyToAsn1(rsaKey));\n rval = pki.encryptPrivateKeyInfo(rval, password, options);\n return pki.encryptedPrivateKeyToPem(rval);\n }\n\n // legacy non-PKCS#8\n var algorithm;\n var iv;\n var dkLen;\n var cipherFn;\n switch(options.algorithm) {\n case 'aes128':\n algorithm = 'AES-128-CBC';\n dkLen = 16;\n iv = forge.random.getBytesSync(16);\n cipherFn = forge.aes.createEncryptionCipher;\n break;\n case 'aes192':\n algorithm = 'AES-192-CBC';\n dkLen = 24;\n iv = forge.random.getBytesSync(16);\n cipherFn = forge.aes.createEncryptionCipher;\n break;\n case 'aes256':\n algorithm = 'AES-256-CBC';\n dkLen = 32;\n iv = forge.random.getBytesSync(16);\n cipherFn = forge.aes.createEncryptionCipher;\n break;\n case '3des':\n algorithm = 'DES-EDE3-CBC';\n dkLen = 24;\n iv = forge.random.getBytesSync(8);\n cipherFn = forge.des.createEncryptionCipher;\n break;\n case 'des':\n algorithm = 'DES-CBC';\n dkLen = 8;\n iv = forge.random.getBytesSync(8);\n cipherFn = forge.des.createEncryptionCipher;\n break;\n default:\n var error = new Error('Could not encrypt RSA private key; unsupported ' +\n 'encryption algorithm \"' + options.algorithm + '\".');\n error.algorithm = options.algorithm;\n throw error;\n }\n\n // encrypt private key using OpenSSL legacy key derivation\n var dk = forge.pbe.opensslDeriveBytes(password, iv.substr(0, 8), dkLen);\n var cipher = cipherFn(dk);\n cipher.start(iv);\n cipher.update(asn1.toDer(pki.privateKeyToAsn1(rsaKey)));\n cipher.finish();\n\n var msg = {\n type: 'RSA PRIVATE KEY',\n procType: {\n version: '4',\n type: 'ENCRYPTED'\n },\n dekInfo: {\n algorithm: algorithm,\n parameters: forge.util.bytesToHex(iv).toUpperCase()\n },\n body: cipher.output.getBytes()\n };\n return forge.pem.encode(msg);\n};\n\n/**\n * Decrypts an RSA private key.\n *\n * @param pem the PEM-formatted EncryptedPrivateKeyInfo to decrypt.\n * @param password the password to use.\n *\n * @return the RSA key on success, null on failure.\n */\npki.decryptRsaPrivateKey = function(pem, password) {\n var rval = null;\n\n var msg = forge.pem.decode(pem)[0];\n\n if(msg.type !== 'ENCRYPTED PRIVATE KEY' &&\n msg.type !== 'PRIVATE KEY' &&\n msg.type !== 'RSA PRIVATE KEY') {\n var error = new Error('Could not convert private key from PEM; PEM header type ' +\n 'is not \"ENCRYPTED PRIVATE KEY\", \"PRIVATE KEY\", or \"RSA PRIVATE KEY\".');\n error.headerType = error;\n throw error;\n }\n\n if(msg.procType && msg.procType.type === 'ENCRYPTED') {\n var dkLen;\n var cipherFn;\n switch(msg.dekInfo.algorithm) {\n case 'DES-CBC':\n dkLen = 8;\n cipherFn = forge.des.createDecryptionCipher;\n break;\n case 'DES-EDE3-CBC':\n dkLen = 24;\n cipherFn = forge.des.createDecryptionCipher;\n break;\n case 'AES-128-CBC':\n dkLen = 16;\n cipherFn = forge.aes.createDecryptionCipher;\n break;\n case 'AES-192-CBC':\n dkLen = 24;\n cipherFn = forge.aes.createDecryptionCipher;\n break;\n case 'AES-256-CBC':\n dkLen = 32;\n cipherFn = forge.aes.createDecryptionCipher;\n break;\n case 'RC2-40-CBC':\n dkLen = 5;\n cipherFn = function(key) {\n return forge.rc2.createDecryptionCipher(key, 40);\n };\n break;\n case 'RC2-64-CBC':\n dkLen = 8;\n cipherFn = function(key) {\n return forge.rc2.createDecryptionCipher(key, 64);\n };\n break;\n case 'RC2-128-CBC':\n dkLen = 16;\n cipherFn = function(key) {\n return forge.rc2.createDecryptionCipher(key, 128);\n };\n break;\n default:\n var error = new Error('Could not decrypt private key; unsupported ' +\n 'encryption algorithm \"' + msg.dekInfo.algorithm + '\".');\n error.algorithm = msg.dekInfo.algorithm;\n throw error;\n }\n\n // use OpenSSL legacy key derivation\n var iv = forge.util.hexToBytes(msg.dekInfo.parameters);\n var dk = forge.pbe.opensslDeriveBytes(password, iv.substr(0, 8), dkLen);\n var cipher = cipherFn(dk);\n cipher.start(iv);\n cipher.update(forge.util.createBuffer(msg.body));\n if(cipher.finish()) {\n rval = cipher.output.getBytes();\n } else {\n return rval;\n }\n } else {\n rval = msg.body;\n }\n\n if(msg.type === 'ENCRYPTED PRIVATE KEY') {\n rval = pki.decryptPrivateKeyInfo(asn1.fromDer(rval), password);\n } else {\n // decryption already performed above\n rval = asn1.fromDer(rval);\n }\n\n if(rval !== null) {\n rval = pki.privateKeyFromAsn1(rval);\n }\n\n return rval;\n};\n\n/**\n * Derives a PKCS#12 key.\n *\n * @param password the password to derive the key material from, null or\n * undefined for none.\n * @param salt the salt, as a ByteBuffer, to use.\n * @param id the PKCS#12 ID byte (1 = key material, 2 = IV, 3 = MAC).\n * @param iter the iteration count.\n * @param n the number of bytes to derive from the password.\n * @param md the message digest to use, defaults to SHA-1.\n *\n * @return a ByteBuffer with the bytes derived from the password.\n */\npki.pbe.generatePkcs12Key = function(password, salt, id, iter, n, md) {\n var j, l;\n\n if(typeof md === 'undefined' || md === null) {\n if(!('sha1' in forge.md)) {\n throw new Error('\"sha1\" hash algorithm unavailable.');\n }\n md = forge.md.sha1.create();\n }\n\n var u = md.digestLength;\n var v = md.blockLength;\n var result = new forge.util.ByteBuffer();\n\n /* Convert password to Unicode byte buffer + trailing 0-byte. */\n var passBuf = new forge.util.ByteBuffer();\n if(password !== null && password !== undefined) {\n for(l = 0; l < password.length; l++) {\n passBuf.putInt16(password.charCodeAt(l));\n }\n passBuf.putInt16(0);\n }\n\n /* Length of salt and password in BYTES. */\n var p = passBuf.length();\n var s = salt.length();\n\n /* 1. Construct a string, D (the \"diversifier\"), by concatenating\n v copies of ID. */\n var D = new forge.util.ByteBuffer();\n D.fillWithByte(id, v);\n\n /* 2. Concatenate copies of the salt together to create a string S of length\n v * ceil(s / v) bytes (the final copy of the salt may be trunacted\n to create S).\n Note that if the salt is the empty string, then so is S. */\n var Slen = v * Math.ceil(s / v);\n var S = new forge.util.ByteBuffer();\n for(l = 0; l < Slen; l++) {\n S.putByte(salt.at(l % s));\n }\n\n /* 3. Concatenate copies of the password together to create a string P of\n length v * ceil(p / v) bytes (the final copy of the password may be\n truncated to create P).\n Note that if the password is the empty string, then so is P. */\n var Plen = v * Math.ceil(p / v);\n var P = new forge.util.ByteBuffer();\n for(l = 0; l < Plen; l++) {\n P.putByte(passBuf.at(l % p));\n }\n\n /* 4. Set I=S||P to be the concatenation of S and P. */\n var I = S;\n I.putBuffer(P);\n\n /* 5. Set c=ceil(n / u). */\n var c = Math.ceil(n / u);\n\n /* 6. For i=1, 2, ..., c, do the following: */\n for(var i = 1; i <= c; i++) {\n /* a) Set Ai=H^r(D||I). (l.e. the rth hash of D||I, H(H(H(...H(D||I)))) */\n var buf = new forge.util.ByteBuffer();\n buf.putBytes(D.bytes());\n buf.putBytes(I.bytes());\n for(var round = 0; round < iter; round++) {\n md.start();\n md.update(buf.getBytes());\n buf = md.digest();\n }\n\n /* b) Concatenate copies of Ai to create a string B of length v bytes (the\n final copy of Ai may be truncated to create B). */\n var B = new forge.util.ByteBuffer();\n for(l = 0; l < v; l++) {\n B.putByte(buf.at(l % u));\n }\n\n /* c) Treating I as a concatenation I0, I1, ..., Ik-1 of v-byte blocks,\n where k=ceil(s / v) + ceil(p / v), modify I by setting\n Ij=(Ij+B+1) mod 2v for each j. */\n var k = Math.ceil(s / v) + Math.ceil(p / v);\n var Inew = new forge.util.ByteBuffer();\n for(j = 0; j < k; j++) {\n var chunk = new forge.util.ByteBuffer(I.getBytes(v));\n var x = 0x1ff;\n for(l = B.length() - 1; l >= 0; l--) {\n x = x >> 8;\n x += B.at(l) + chunk.at(l);\n chunk.setAt(l, x & 0xff);\n }\n Inew.putBuffer(chunk);\n }\n I = Inew;\n\n /* Add Ai to A. */\n result.putBuffer(buf);\n }\n\n result.truncate(result.length() - n);\n return result;\n};\n\n/**\n * Get new Forge cipher object instance.\n *\n * @param oid the OID (in string notation).\n * @param params the ASN.1 params object.\n * @param password the password to decrypt with.\n *\n * @return new cipher object instance.\n */\npki.pbe.getCipher = function(oid, params, password) {\n switch(oid) {\n case pki.oids['pkcs5PBES2']:\n return pki.pbe.getCipherForPBES2(oid, params, password);\n\n case pki.oids['pbeWithSHAAnd3-KeyTripleDES-CBC']:\n case pki.oids['pbewithSHAAnd40BitRC2-CBC']:\n return pki.pbe.getCipherForPKCS12PBE(oid, params, password);\n\n default:\n var error = new Error('Cannot read encrypted PBE data block. Unsupported OID.');\n error.oid = oid;\n error.supportedOids = [\n 'pkcs5PBES2',\n 'pbeWithSHAAnd3-KeyTripleDES-CBC',\n 'pbewithSHAAnd40BitRC2-CBC'\n ];\n throw error;\n }\n};\n\n/**\n * Get new Forge cipher object instance according to PBES2 params block.\n *\n * The returned cipher instance is already started using the IV\n * from PBES2 parameter block.\n *\n * @param oid the PKCS#5 PBKDF2 OID (in string notation).\n * @param params the ASN.1 PBES2-params object.\n * @param password the password to decrypt with.\n *\n * @return new cipher object instance.\n */\npki.pbe.getCipherForPBES2 = function(oid, params, password) {\n // get PBE params\n var capture = {};\n var errors = [];\n if(!asn1.validate(params, PBES2AlgorithmsValidator, capture, errors)) {\n var error = new Error('Cannot read password-based-encryption algorithm ' +\n 'parameters. ASN.1 object is not a supported EncryptedPrivateKeyInfo.');\n error.errors = errors;\n throw error;\n }\n\n // check oids\n oid = asn1.derToOid(capture.kdfOid);\n if(oid !== pki.oids['pkcs5PBKDF2']) {\n var error = new Error('Cannot read encrypted private key. ' +\n 'Unsupported key derivation function OID.');\n error.oid = oid;\n error.supportedOids = ['pkcs5PBKDF2'];\n throw error;\n }\n oid = asn1.derToOid(capture.encOid);\n if(oid !== pki.oids['aes128-CBC'] &&\n oid !== pki.oids['aes192-CBC'] &&\n oid !== pki.oids['aes256-CBC'] &&\n oid !== pki.oids['des-EDE3-CBC'] &&\n oid !== pki.oids['desCBC']) {\n var error = new Error('Cannot read encrypted private key. ' +\n 'Unsupported encryption scheme OID.');\n error.oid = oid;\n error.supportedOids = [\n 'aes128-CBC', 'aes192-CBC', 'aes256-CBC', 'des-EDE3-CBC', 'desCBC'];\n throw error;\n }\n\n // set PBE params\n var salt = capture.kdfSalt;\n var count = forge.util.createBuffer(capture.kdfIterationCount);\n count = count.getInt(count.length() << 3);\n var dkLen;\n var cipherFn;\n switch(pki.oids[oid]) {\n case 'aes128-CBC':\n dkLen = 16;\n cipherFn = forge.aes.createDecryptionCipher;\n break;\n case 'aes192-CBC':\n dkLen = 24;\n cipherFn = forge.aes.createDecryptionCipher;\n break;\n case 'aes256-CBC':\n dkLen = 32;\n cipherFn = forge.aes.createDecryptionCipher;\n break;\n case 'des-EDE3-CBC':\n dkLen = 24;\n cipherFn = forge.des.createDecryptionCipher;\n break;\n case 'desCBC':\n dkLen = 8;\n cipherFn = forge.des.createDecryptionCipher;\n break;\n }\n\n // get PRF message digest\n var md = prfOidToMessageDigest(capture.prfOid);\n\n // decrypt private key using pbe with chosen PRF and AES/DES\n var dk = forge.pkcs5.pbkdf2(password, salt, count, dkLen, md);\n var iv = capture.encIv;\n var cipher = cipherFn(dk);\n cipher.start(iv);\n\n return cipher;\n};\n\n/**\n * Get new Forge cipher object instance for PKCS#12 PBE.\n *\n * The returned cipher instance is already started using the key & IV\n * derived from the provided password and PKCS#12 PBE salt.\n *\n * @param oid The PKCS#12 PBE OID (in string notation).\n * @param params The ASN.1 PKCS#12 PBE-params object.\n * @param password The password to decrypt with.\n *\n * @return the new cipher object instance.\n */\npki.pbe.getCipherForPKCS12PBE = function(oid, params, password) {\n // get PBE params\n var capture = {};\n var errors = [];\n if(!asn1.validate(params, pkcs12PbeParamsValidator, capture, errors)) {\n var error = new Error('Cannot read password-based-encryption algorithm ' +\n 'parameters. ASN.1 object is not a supported EncryptedPrivateKeyInfo.');\n error.errors = errors;\n throw error;\n }\n\n var salt = forge.util.createBuffer(capture.salt);\n var count = forge.util.createBuffer(capture.iterations);\n count = count.getInt(count.length() << 3);\n\n var dkLen, dIvLen, cipherFn;\n switch(oid) {\n case pki.oids['pbeWithSHAAnd3-KeyTripleDES-CBC']:\n dkLen = 24;\n dIvLen = 8;\n cipherFn = forge.des.startDecrypting;\n break;\n\n case pki.oids['pbewithSHAAnd40BitRC2-CBC']:\n dkLen = 5;\n dIvLen = 8;\n cipherFn = function(key, iv) {\n var cipher = forge.rc2.createDecryptionCipher(key, 40);\n cipher.start(iv, null);\n return cipher;\n };\n break;\n\n default:\n var error = new Error('Cannot read PKCS #12 PBE data block. Unsupported OID.');\n error.oid = oid;\n throw error;\n }\n\n // get PRF message digest\n var md = prfOidToMessageDigest(capture.prfOid);\n var key = pki.pbe.generatePkcs12Key(password, salt, 1, count, dkLen, md);\n md.start();\n var iv = pki.pbe.generatePkcs12Key(password, salt, 2, count, dIvLen, md);\n\n return cipherFn(key, iv);\n};\n\n/**\n * OpenSSL's legacy key derivation function.\n *\n * See: http://www.openssl.org/docs/crypto/EVP_BytesToKey.html\n *\n * @param password the password to derive the key from.\n * @param salt the salt to use, null for none.\n * @param dkLen the number of bytes needed for the derived key.\n * @param [options] the options to use:\n * [md] an optional message digest object to use.\n */\npki.pbe.opensslDeriveBytes = function(password, salt, dkLen, md) {\n if(typeof md === 'undefined' || md === null) {\n if(!('md5' in forge.md)) {\n throw new Error('\"md5\" hash algorithm unavailable.');\n }\n md = forge.md.md5.create();\n }\n if(salt === null) {\n salt = '';\n }\n var digests = [hash(md, password + salt)];\n for(var length = 16, i = 1; length < dkLen; ++i, length += 16) {\n digests.push(hash(md, digests[i - 1] + password + salt));\n }\n return digests.join('').substr(0, dkLen);\n};\n\nfunction hash(md, bytes) {\n return md.start().update(bytes).digest().getBytes();\n}\n\nfunction prfOidToMessageDigest(prfOid) {\n // get PRF algorithm, default to SHA-1\n var prfAlgorithm;\n if(!prfOid) {\n prfAlgorithm = 'hmacWithSHA1';\n } else {\n prfAlgorithm = pki.oids[asn1.derToOid(prfOid)];\n if(!prfAlgorithm) {\n var error = new Error('Unsupported PRF OID.');\n error.oid = prfOid;\n error.supported = [\n 'hmacWithSHA1', 'hmacWithSHA224', 'hmacWithSHA256', 'hmacWithSHA384',\n 'hmacWithSHA512'];\n throw error;\n }\n }\n return prfAlgorithmToMessageDigest(prfAlgorithm);\n}\n\nfunction prfAlgorithmToMessageDigest(prfAlgorithm) {\n var factory = forge.md;\n switch(prfAlgorithm) {\n case 'hmacWithSHA224':\n factory = forge.md.sha512;\n case 'hmacWithSHA1':\n case 'hmacWithSHA256':\n case 'hmacWithSHA384':\n case 'hmacWithSHA512':\n prfAlgorithm = prfAlgorithm.substr(8).toLowerCase();\n break;\n default:\n var error = new Error('Unsupported PRF algorithm.');\n error.algorithm = prfAlgorithm;\n error.supported = [\n 'hmacWithSHA1', 'hmacWithSHA224', 'hmacWithSHA256', 'hmacWithSHA384',\n 'hmacWithSHA512'];\n throw error;\n }\n if(!factory || !(prfAlgorithm in factory)) {\n throw new Error('Unknown hash algorithm: ' + prfAlgorithm);\n }\n return factory[prfAlgorithm].create();\n}\n\nfunction createPbkdf2Params(salt, countBytes, dkLen, prfAlgorithm) {\n var params = asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n // salt\n asn1.create(\n asn1.Class.UNIVERSAL, asn1.Type.OCTETSTRING, false, salt),\n // iteration count\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.INTEGER, false,\n countBytes.getBytes())\n ]);\n // when PRF algorithm is not SHA-1 default, add key length and PRF algorithm\n if(prfAlgorithm !== 'hmacWithSHA1') {\n params.value.push(\n // key length\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.INTEGER, false,\n forge.util.hexToBytes(dkLen.toString(16))),\n // AlgorithmIdentifier\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n // algorithm\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false,\n asn1.oidToDer(pki.oids[prfAlgorithm]).getBytes()),\n // parameters (null)\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.NULL, false, '')\n ]));\n }\n return params;\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport AudioVideoControllerState from '../audiovideocontroller/AudioVideoControllerState';\nimport BaseTask from './BaseTask';\n\nexport default class CleanRestartedSessionTask extends BaseTask {\n protected taskName = 'CleanRestartedSessionTask';\n\n constructor(private context: AudioVideoControllerState) {\n super(context.logger);\n }\n\n async run(): Promise {\n this.context.resetConnectionSpecificState();\n }\n}\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = Function.prototype.bind || implementation;\n","var AWS = require('../core');\nvar STS = require('../../clients/sts');\n\n/**\n * Represents temporary credentials retrieved from {AWS.STS}. Without any\n * extra parameters, credentials will be fetched from the\n * {AWS.STS.getSessionToken} operation. If an IAM role is provided, the\n * {AWS.STS.assumeRole} operation will be used to fetch credentials for the\n * role instead.\n *\n * @note AWS.TemporaryCredentials is deprecated, but remains available for\n * backwards compatibility. {AWS.ChainableTemporaryCredentials} is the\n * preferred class for temporary credentials.\n *\n * To setup temporary credentials, configure a set of master credentials\n * using the standard credentials providers (environment, EC2 instance metadata,\n * or from the filesystem), then set the global credentials to a new\n * temporary credentials object:\n *\n * ```javascript\n * // Note that environment credentials are loaded by default,\n * // the following line is shown for clarity:\n * AWS.config.credentials = new AWS.EnvironmentCredentials('AWS');\n *\n * // Now set temporary credentials seeded from the master credentials\n * AWS.config.credentials = new AWS.TemporaryCredentials();\n *\n * // subsequent requests will now use temporary credentials from AWS STS.\n * new AWS.S3().listBucket(function(err, data) { ... });\n * ```\n *\n * @!attribute masterCredentials\n * @return [AWS.Credentials] the master (non-temporary) credentials used to\n * get and refresh temporary credentials from AWS STS.\n * @note (see constructor)\n */\nAWS.TemporaryCredentials = AWS.util.inherit(AWS.Credentials, {\n /**\n * Creates a new temporary credentials object.\n *\n * @note In order to create temporary credentials, you first need to have\n * \"master\" credentials configured in {AWS.Config.credentials}. These\n * master credentials are necessary to retrieve the temporary credentials,\n * as well as refresh the credentials when they expire.\n * @param params [map] a map of options that are passed to the\n * {AWS.STS.assumeRole} or {AWS.STS.getSessionToken} operations.\n * If a `RoleArn` parameter is passed in, credentials will be based on the\n * IAM role.\n * @param masterCredentials [AWS.Credentials] the master (non-temporary) credentials\n * used to get and refresh temporary credentials from AWS STS.\n * @example Creating a new credentials object for generic temporary credentials\n * AWS.config.credentials = new AWS.TemporaryCredentials();\n * @example Creating a new credentials object for an IAM role\n * AWS.config.credentials = new AWS.TemporaryCredentials({\n * RoleArn: 'arn:aws:iam::1234567890:role/TemporaryCredentials',\n * });\n * @see AWS.STS.assumeRole\n * @see AWS.STS.getSessionToken\n */\n constructor: function TemporaryCredentials(params, masterCredentials) {\n AWS.Credentials.call(this);\n this.loadMasterCredentials(masterCredentials);\n this.expired = true;\n\n this.params = params || {};\n if (this.params.RoleArn) {\n this.params.RoleSessionName =\n this.params.RoleSessionName || 'temporary-credentials';\n }\n },\n\n /**\n * Refreshes credentials using {AWS.STS.assumeRole} or\n * {AWS.STS.getSessionToken}, depending on whether an IAM role ARN was passed\n * to the credentials {constructor}.\n *\n * @callback callback function(err)\n * Called when the STS service responds (or fails). When\n * this callback is called with no error, it means that the credentials\n * information has been loaded into the object (as the `accessKeyId`,\n * `secretAccessKey`, and `sessionToken` properties).\n * @param err [Error] if an error occurred, this value will be filled\n * @see get\n */\n refresh: function refresh (callback) {\n this.coalesceRefresh(callback || AWS.util.fn.callback);\n },\n\n /**\n * @api private\n */\n load: function load (callback) {\n var self = this;\n self.createClients();\n self.masterCredentials.get(function () {\n self.service.config.credentials = self.masterCredentials;\n var operation = self.params.RoleArn ?\n self.service.assumeRole : self.service.getSessionToken;\n operation.call(self.service, function (err, data) {\n if (!err) {\n self.service.credentialsFrom(data, self);\n }\n callback(err);\n });\n });\n },\n\n /**\n * @api private\n */\n loadMasterCredentials: function loadMasterCredentials (masterCredentials) {\n this.masterCredentials = masterCredentials || AWS.config.credentials;\n while (this.masterCredentials.masterCredentials) {\n this.masterCredentials = this.masterCredentials.masterCredentials;\n }\n\n if (typeof this.masterCredentials.get !== 'function') {\n this.masterCredentials = new AWS.Credentials(this.masterCredentials);\n }\n },\n\n /**\n * @api private\n */\n createClients: function () {\n this.service = this.service || new STS({params: this.params});\n }\n\n});\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\n/**\n * [[DeferredPromise]] Is a wrapper around a javascript promise that\n * will allow us to resolve and reject the promise from outside of the\n * promise's executor block.\n */\nexport class DeferredPromise {\n private promise: Promise;\n private reject: Function;\n private resolve: Function;\n\n constructor() {\n this.promise = new Promise((resolve, reject) => {\n this.resolve = resolve;\n this.reject = reject;\n });\n }\n\n /**\n * Get the promise associated with the DeferredPromise.\n * @returns Promise\n */\n getPromise(): Promise {\n return this.promise;\n }\n\n /**\n * Resolve this.promise.\n */\n resolvePromise(resolveParameter?: T): void {\n this.resolve(resolveParameter);\n }\n\n /**\n * Resolve this.promise with a resolveParameter. Then,\n * replace the resolved promise with a new promise.\n */\n resolveAndReplacePromise(resolveParameter?: T): void {\n this.resolve(resolveParameter);\n this.promise = new Promise((resolve, reject) => {\n this.resolve = resolve;\n this.reject = reject;\n });\n }\n\n /**\n * Reject this.promise.\n */\n rejectPromise(rejectError: Error): void {\n this.reject(rejectError);\n }\n\n /**\n * Reject this.promise with a reject parameter. Then,\n * replace the rejected promise with a new promise.\n */\n rejectAndReplacePromise(rejectError: Error): void {\n this.reject(rejectError);\n this.promise = new Promise((resolve, reject) => {\n this.resolve = resolve;\n this.reject = reject;\n });\n }\n}\n","var util = require('../core').util;\n\nfunction typeOf(data) {\n if (data === null && typeof data === 'object') {\n return 'null';\n } else if (data !== undefined && isBinary(data)) {\n return 'Binary';\n } else if (data !== undefined && data.constructor) {\n return data.wrapperName || util.typeName(data.constructor);\n } else if (data !== undefined && typeof data === 'object') {\n // this object is the result of Object.create(null), hence the absence of a\n // defined constructor\n return 'Object';\n } else {\n return 'undefined';\n }\n}\n\nfunction isBinary(data) {\n var types = [\n 'Buffer', 'File', 'Blob', 'ArrayBuffer', 'DataView',\n 'Int8Array', 'Uint8Array', 'Uint8ClampedArray',\n 'Int16Array', 'Uint16Array', 'Int32Array', 'Uint32Array',\n 'Float32Array', 'Float64Array'\n ];\n if (util.isNode()) {\n var Stream = util.stream.Stream;\n if (util.Buffer.isBuffer(data) || data instanceof Stream) {\n return true;\n }\n }\n\n for (var i = 0; i < types.length; i++) {\n if (data !== undefined && data.constructor) {\n if (util.isType(data, types[i])) return true;\n if (util.typeName(data.constructor) === types[i]) return true;\n }\n }\n\n return false;\n}\n\n/**\n * @api private\n */\nmodule.exports = {\n typeOf: typeOf,\n isBinary: isBinary\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar bind = require('../internals/function-bind-context');\nvar aMap = require('../internals/a-map');\nvar MapHelpers = require('../internals/map-helpers');\nvar iterate = require('../internals/map-iterate');\n\nvar Map = MapHelpers.Map;\nvar set = MapHelpers.set;\n\n// `Map.prototype.filter` method\n// https://github.com/tc39/proposal-collection-methods\n$({ target: 'Map', proto: true, real: true, forced: true }, {\n filter: function filter(callbackfn /* , thisArg */) {\n var map = aMap(this);\n var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n var newMap = new Map();\n iterate(map, function (value, key) {\n if (boundFunction(value, key, map)) set(newMap, key, value);\n });\n return newMap;\n }\n});\n","'use strict';\n\nvar utils = require('./../utils');\nvar transformData = require('./transformData');\nvar isCancel = require('../cancel/isCancel');\nvar defaults = require('../defaults');\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */\nmodule.exports = function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n // Ensure headers exist\n config.headers = config.headers || {};\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.data,\n config.headers,\n config.transformRequest\n );\n\n // Flatten headers\n config.headers = utils.merge(\n config.headers.common || {},\n config.headers[config.method] || {},\n config.headers\n );\n\n utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n function cleanHeaderConfig(method) {\n delete config.headers[method];\n }\n );\n\n var adapter = config.adapter || defaults.adapter;\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n response.data,\n response.headers,\n config.transformResponse\n );\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n reason.response.data,\n reason.response.headers,\n config.transformResponse\n );\n }\n }\n\n return Promise.reject(reason);\n });\n};\n","// extracted by mini-css-extract-plugin\nexport default {};","/*!\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","'use strict';\n\nvar hasSymbols = require('has-symbols/shams');\n\n/** @type {import('.')} */\nmodule.exports = function hasToStringTagShams() {\n\treturn hasSymbols() && !!Symbol.toStringTag;\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport BaseConnectionHealthPolicy from './BaseConnectionHealthPolicy';\nimport ConnectionHealthData from './ConnectionHealthData';\nimport ConnectionHealthPolicy from './ConnectionHealthPolicy';\nimport ConnectionHealthPolicyConfiguration from './ConnectionHealthPolicyConfiguration';\nimport VideoEncodingConnectionHealthPolicyName from './VideoEncodingConnectionHealthPolicyName';\n\nexport default class VideoEncodingCpuConnectionHealthPolicy\n extends BaseConnectionHealthPolicy\n implements ConnectionHealthPolicy {\n private readonly consecutiveHighEncodeCpuThreshold: number;\n private readonly highEncodeCpuMsThreshold: number;\n private readonly highEncodeCpuMsPerFrameThreshold: number;\n private consecutiveHighEncodeCpuCnt = 0;\n\n constructor(configuration: ConnectionHealthPolicyConfiguration, data: ConnectionHealthData) {\n super(configuration, data, VideoEncodingConnectionHealthPolicyName.VideoEncodingCpuHealth);\n this.consecutiveHighEncodeCpuThreshold = configuration.consecutiveHighEncodeCpuThreshold;\n this.highEncodeCpuMsThreshold = configuration.highEncodeCpuMsThreshold;\n this.highEncodeCpuMsPerFrameThreshold = configuration.highEncodeCpuMsPerFrameThreshold;\n }\n\n health(): number {\n // Checking both per-frame and total encode time as we do not want video codec fallback in two conditions:\n // 1. High per-frame encode time with low framerate (e.g., high resolution, low framerate content share)\n // 2. High framerate with low per-frame encode time (e.g., high framerate SVC)\n const videoEncodingTimeIsHigh =\n this.currentData.videoEncodingTimeInMs >= this.highEncodeCpuMsThreshold &&\n this.currentData.videoEncodingTimePerFrameInMs >= this.highEncodeCpuMsPerFrameThreshold;\n const cpuUsageIsHigh =\n !this.currentData.isVideoEncoderHardware &&\n (videoEncodingTimeIsHigh || this.currentData.cpuLimitationDuration > 0);\n if (cpuUsageIsHigh) {\n this.consecutiveHighEncodeCpuCnt++;\n if (this.consecutiveHighEncodeCpuCnt > this.consecutiveHighEncodeCpuThreshold) {\n this.consecutiveHighEncodeCpuCnt = 0;\n return this.minimumHealth();\n }\n } else {\n this.consecutiveHighEncodeCpuCnt = 0;\n }\n return this.maximumHealth();\n }\n}\n","// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\n// IE 11 does not support Array.from, so we do it manually\nexport function uint32ArrayFrom(a_lookUpTable: Array): Uint32Array {\n if (!Uint32Array.from) {\n const return_array = new Uint32Array(a_lookUpTable.length)\n let a_index = 0\n while (a_index < a_lookUpTable.length) {\n return_array[a_index] = a_lookUpTable[a_index]\n a_index += 1\n }\n return return_array\n }\n return Uint32Array.from(a_lookUpTable)\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react.production.min.js');\n} else {\n module.exports = require('./cjs/react.development.js');\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { Logger } from '../../libs/voicefocus/types';\nimport SDKLogger from '../logger/Logger';\n\n/** @internal */\nfunction stringify(args: unknown[]): string {\n return args\n .map((v: unknown) => {\n if (typeof v === 'object') {\n return JSON.stringify(v);\n }\n return `${v}`;\n })\n .join(' ');\n}\n\n/** @internal */\nexport default class LoggerAdapter implements Logger {\n constructor(private base: SDKLogger) {}\n\n debug(...args: unknown[]): void {\n this.base.debug(stringify(args));\n }\n\n info(...args: unknown[]): void {\n this.base.info(stringify(args));\n }\n\n warn(...args: unknown[]): void {\n this.base.warn(stringify(args));\n }\n\n error(...args: unknown[]): void {\n this.base.error(stringify(args));\n }\n}\n","var parseMessage = require('./parse-message').parseMessage;\n\n/**\n *\n * @param {*} parser\n * @param {Buffer} message\n * @param {*} shape\n * @api private\n */\nfunction parseEvent(parser, message, shape) {\n var parsedMessage = parseMessage(message);\n\n // check if message is an event or error\n var messageType = parsedMessage.headers[':message-type'];\n if (messageType) {\n if (messageType.value === 'error') {\n throw parseError(parsedMessage);\n } else if (messageType.value !== 'event') {\n // not sure how to parse non-events/non-errors, ignore for now\n return;\n }\n }\n\n // determine event type\n var eventType = parsedMessage.headers[':event-type'];\n // check that the event type is modeled\n var eventModel = shape.members[eventType.value];\n if (!eventModel) {\n return;\n }\n\n var result = {};\n // check if an event payload exists\n var eventPayloadMemberName = eventModel.eventPayloadMemberName;\n if (eventPayloadMemberName) {\n var payloadShape = eventModel.members[eventPayloadMemberName];\n // if the shape is binary, return the byte array\n if (payloadShape.type === 'binary') {\n result[eventPayloadMemberName] = parsedMessage.body;\n } else {\n result[eventPayloadMemberName] = parser.parse(parsedMessage.body.toString(), payloadShape);\n }\n }\n\n // read event headers\n var eventHeaderNames = eventModel.eventHeaderMemberNames;\n for (var i = 0; i < eventHeaderNames.length; i++) {\n var name = eventHeaderNames[i];\n if (parsedMessage.headers[name]) {\n // parse the header!\n result[name] = eventModel.members[name].toType(parsedMessage.headers[name].value);\n }\n }\n\n var output = {};\n output[eventType.value] = result;\n return output;\n}\n\nfunction parseError(message) {\n var errorCode = message.headers[':error-code'];\n var errorMessage = message.headers[':error-message'];\n var error = new Error(errorMessage.value || errorMessage);\n error.code = error.name = errorCode.value || errorCode;\n return error;\n}\n\n/**\n * @api private\n */\nmodule.exports = {\n parseEvent: parseEvent\n};\n","'use strict';\nvar aSet = require('../internals/a-set');\nvar SetHelpers = require('../internals/set-helpers');\nvar size = require('../internals/set-size');\nvar getSetRecord = require('../internals/get-set-record');\nvar iterateSet = require('../internals/set-iterate');\nvar iterateSimple = require('../internals/iterate-simple');\n\nvar Set = SetHelpers.Set;\nvar add = SetHelpers.add;\nvar has = SetHelpers.has;\n\n// `Set.prototype.intersection` method\n// https://github.com/tc39/proposal-set-methods\nmodule.exports = function intersection(other) {\n var O = aSet(this);\n var otherRec = getSetRecord(other);\n var result = new Set();\n\n if (size(O) > otherRec.size) {\n iterateSimple(otherRec.getIterator(), function (e) {\n if (has(O, e)) add(result, e);\n });\n } else {\n iterateSet(O, function (e) {\n if (otherRec.includes(e)) add(result, e);\n });\n }\n\n return result;\n};\n","'use strict';\nvar IS_PURE = require('../internals/is-pure');\nvar globalThis = require('../internals/global-this');\nvar defineGlobalProperty = require('../internals/define-global-property');\n\nvar SHARED = '__core-js_shared__';\nvar store = module.exports = globalThis[SHARED] || defineGlobalProperty(SHARED, {});\n\n(store.versions || (store.versions = [])).push({\n version: '3.41.0',\n mode: IS_PURE ? 'pure' : 'global',\n copyright: '© 2014-2025 Denis Pushkarev (zloirock.ru)',\n license: 'https://github.com/zloirock/core-js/blob/v3.41.0/LICENSE',\n source: 'https://github.com/zloirock/core-js'\n});\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport DataMessage from '../datamessage/DataMessage';\nimport RealtimeController from '../realtimecontroller/RealtimeController';\nimport TranscriptEvent, { TranscriptEventConverter } from './TranscriptEvent';\nimport TranscriptionController from './TranscriptionController';\n\nexport const TRANSCRIPTION_DATA_MESSAGE_TOPIC = 'aws:chime:transcription';\n\nexport default class DefaultTranscriptionController implements TranscriptionController {\n private readonly transcriptEventCallbacks: Set<(transcriptEvent: TranscriptEvent) => void>;\n\n constructor(private realtimeController: RealtimeController) {\n this.transcriptEventCallbacks = new Set<(transcriptEvent: TranscriptEvent) => void>();\n }\n\n subscribeToTranscriptEvent(callback: (transcriptEvent: TranscriptEvent) => void): void {\n if (this.transcriptEventCallbacks.size === 0) {\n this.realtimeController.realtimeSubscribeToReceiveDataMessage(\n TRANSCRIPTION_DATA_MESSAGE_TOPIC,\n (dataMessage: DataMessage) => {\n for (const transcriptEvent of TranscriptEventConverter.from(dataMessage)) {\n for (const transcriptEventCallback of this.transcriptEventCallbacks) {\n transcriptEventCallback(transcriptEvent);\n }\n }\n }\n );\n }\n\n this.transcriptEventCallbacks.add(callback);\n }\n\n unsubscribeFromTranscriptEvent(callback: (transcriptEvent: TranscriptEvent) => void): void {\n this.transcriptEventCallbacks.delete(callback);\n\n if (this.transcriptEventCallbacks.size === 0) {\n this.realtimeController.realtimeUnsubscribeFromReceiveDataMessage(\n TRANSCRIPTION_DATA_MESSAGE_TOPIC\n );\n }\n }\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = rng;\n// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\n// getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation. Also,\n// find the complete implementation of crypto (msCrypto) on IE11.\nvar getRandomValues = typeof crypto != 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto) || typeof msCrypto != 'undefined' && typeof msCrypto.getRandomValues == 'function' && msCrypto.getRandomValues.bind(msCrypto);\nvar rnds8 = new Uint8Array(16); // eslint-disable-line no-undef\n\nfunction rng() {\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n\n return getRandomValues(rnds8);\n}","'use strict';\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n var value = data[normalize(feature)];\n return value === POLYFILL ? true\n : value === NATIVE ? false\n : isCallable(detection) ? fails(detection)\n : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\nvar defineProperty = require('../internals/object-define-property').f;\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\n\nvar Symbol = globalThis.Symbol;\n\n// `Symbol.dispose` well-known symbol\n// https://github.com/tc39/proposal-explicit-resource-management\ndefineWellKnownSymbol('dispose');\n\nif (Symbol) {\n var descriptor = getOwnPropertyDescriptor(Symbol, 'dispose');\n // workaround of NodeJS 20.4 bug\n // https://github.com/nodejs/node/issues/48699\n // and incorrect descriptor from some transpilers and userland helpers\n if (descriptor.enumerable && descriptor.configurable && descriptor.writable) {\n defineProperty(Symbol, 'dispose', { value: descriptor.value, enumerable: false, configurable: false, writable: false });\n }\n}\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['kinesis'] = {};\nAWS.Kinesis = Service.defineService('kinesis', ['2013-12-02']);\nObject.defineProperty(apiLoader.services['kinesis'], '2013-12-02', {\n get: function get() {\n var model = require('../apis/kinesis-2013-12-02.min.json');\n model.paginators = require('../apis/kinesis-2013-12-02.paginators.json').pagination;\n model.waiters = require('../apis/kinesis-2013-12-02.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.Kinesis;\n","/* global Map:readonly, Set:readonly, ArrayBuffer:readonly */\n\nvar hasElementType = typeof Element !== 'undefined';\nvar hasMap = typeof Map === 'function';\nvar hasSet = typeof Set === 'function';\nvar hasArrayBuffer = typeof ArrayBuffer === 'function' && !!ArrayBuffer.isView;\n\n// Note: We **don't** need `envHasBigInt64Array` in fde es6/index.js\n\nfunction equal(a, b) {\n // START: fast-deep-equal es6/index.js 3.1.3\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n // START: Modifications:\n // 1. Extra `has &&` helpers in initial condition allow es6 code\n // to co-exist with es5.\n // 2. Replace `for of` with es5 compliant iteration using `for`.\n // Basically, take:\n //\n // ```js\n // for (i of a.entries())\n // if (!b.has(i[0])) return false;\n // ```\n //\n // ... and convert to:\n //\n // ```js\n // it = a.entries();\n // while (!(i = it.next()).done)\n // if (!b.has(i.value[0])) return false;\n // ```\n //\n // **Note**: `i` access switches to `i.value`.\n var it;\n if (hasMap && (a instanceof Map) && (b instanceof Map)) {\n if (a.size !== b.size) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!b.has(i.value[0])) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!equal(i.value[1], b.get(i.value[0]))) return false;\n return true;\n }\n\n if (hasSet && (a instanceof Set) && (b instanceof Set)) {\n if (a.size !== b.size) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!b.has(i.value[0])) return false;\n return true;\n }\n // END: Modifications\n\n if (hasArrayBuffer && ArrayBuffer.isView(a) && ArrayBuffer.isView(b)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (a[i] !== b[i]) return false;\n return true;\n }\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n // START: Modifications:\n // Apply guards for `Object.create(null)` handling. See:\n // - https://github.com/FormidableLabs/react-fast-compare/issues/64\n // - https://github.com/epoberezkin/fast-deep-equal/issues/49\n if (a.valueOf !== Object.prototype.valueOf && typeof a.valueOf === 'function' && typeof b.valueOf === 'function') return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString && typeof a.toString === 'function' && typeof b.toString === 'function') return a.toString() === b.toString();\n // END: Modifications\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n // END: fast-deep-equal\n\n // START: react-fast-compare\n // custom handling for DOM elements\n if (hasElementType && a instanceof Element) return false;\n\n // custom handling for React/Preact\n for (i = length; i-- !== 0;) {\n if ((keys[i] === '_owner' || keys[i] === '__v' || keys[i] === '__o') && a.$$typeof) {\n // React-specific: avoid traversing React elements' _owner\n // Preact-specific: avoid traversing Preact elements' __v and __o\n // __v = $_original / $_vnode\n // __o = $_owner\n // These properties contain circular references and are not needed when\n // comparing the actual elements (and not their owners)\n // .$$typeof and ._store on just reasonable markers of elements\n\n continue;\n }\n\n // all other properties should be traversed as usual\n if (!equal(a[keys[i]], b[keys[i]])) return false;\n }\n // END: react-fast-compare\n\n // START: fast-deep-equal\n return true;\n }\n\n return a !== a && b !== b;\n}\n// end fast-deep-equal\n\nmodule.exports = function isEqual(a, b) {\n try {\n return equal(a, b);\n } catch (error) {\n if (((error.message || '').match(/stack|recursion/i))) {\n // warn on circular references, don't crash\n // browsers give this different errors name and messages:\n // chrome/safari: \"RangeError\", \"Maximum call stack size exceeded\"\n // firefox: \"InternalError\", too much recursion\"\n // edge: \"Error\", \"Out of stack space\"\n console.warn('react-fast-compare cannot handle circular refs');\n return false;\n }\n // some other error. we should definitely know about these\n throw error;\n }\n};\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _v = _interopRequireDefault(require(\"./v35.js\"));\n\nvar _md = _interopRequireDefault(require(\"./md5.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nconst v3 = (0, _v.default)('v3', 0x30, _md.default);\nvar _default = v3;\nexports.default = _default;","function isFipsRegion(region) {\n return typeof region === 'string' && (region.startsWith('fips-') || region.endsWith('-fips'));\n}\n\nfunction isGlobalRegion(region) {\n return typeof region === 'string' && ['aws-global', 'aws-us-gov-global'].includes(region);\n}\n\nfunction getRealRegion(region) {\n return ['fips-aws-global', 'aws-fips', 'aws-global'].includes(region)\n ? 'us-east-1'\n : ['fips-aws-us-gov-global', 'aws-us-gov-global'].includes(region)\n ? 'us-gov-west-1'\n : region.replace(/fips-(dkr-|prod-)?|-fips/, '');\n}\n\nmodule.exports = {\n isFipsRegion: isFipsRegion,\n isGlobalRegion: isGlobalRegion,\n getRealRegion: getRealRegion\n};\n","export * from \"./jsSha256\";\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['applicationautoscaling'] = {};\nAWS.ApplicationAutoScaling = Service.defineService('applicationautoscaling', ['2016-02-06']);\nObject.defineProperty(apiLoader.services['applicationautoscaling'], '2016-02-06', {\n get: function get() {\n var model = require('../apis/application-autoscaling-2016-02-06.min.json');\n model.paginators = require('../apis/application-autoscaling-2016-02-06.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.ApplicationAutoScaling;\n","import { fromUtf8 as jsFromUtf8, toUtf8 as jsToUtf8 } from \"./pureJs\";\nimport { fromUtf8 as textEncoderFromUtf8, toUtf8 as textEncoderToUtf8 } from \"./whatwgEncodingApi\";\nexport const fromUtf8 = (input) => typeof TextEncoder === \"function\" ? textEncoderFromUtf8(input) : jsFromUtf8(input);\nexport const toUtf8 = (input) => typeof TextDecoder === \"function\" ? textEncoderToUtf8(input) : jsToUtf8(input);\n","export function fromUtf8(input) {\n return new TextEncoder().encode(input);\n}\nexport function toUtf8(input) {\n return new TextDecoder(\"utf-8\").decode(input);\n}\n","export const fromUtf8 = (input) => {\n const bytes = [];\n for (let i = 0, len = input.length; i < len; i++) {\n const value = input.charCodeAt(i);\n if (value < 0x80) {\n bytes.push(value);\n }\n else if (value < 0x800) {\n bytes.push((value >> 6) | 0b11000000, (value & 0b111111) | 0b10000000);\n }\n else if (i + 1 < input.length && (value & 0xfc00) === 0xd800 && (input.charCodeAt(i + 1) & 0xfc00) === 0xdc00) {\n const surrogatePair = 0x10000 + ((value & 0b1111111111) << 10) + (input.charCodeAt(++i) & 0b1111111111);\n bytes.push((surrogatePair >> 18) | 0b11110000, ((surrogatePair >> 12) & 0b111111) | 0b10000000, ((surrogatePair >> 6) & 0b111111) | 0b10000000, (surrogatePair & 0b111111) | 0b10000000);\n }\n else {\n bytes.push((value >> 12) | 0b11100000, ((value >> 6) & 0b111111) | 0b10000000, (value & 0b111111) | 0b10000000);\n }\n }\n return Uint8Array.from(bytes);\n};\nexport const toUtf8 = (input) => {\n let decoded = \"\";\n for (let i = 0, len = input.length; i < len; i++) {\n const byte = input[i];\n if (byte < 0x80) {\n decoded += String.fromCharCode(byte);\n }\n else if (0b11000000 <= byte && byte < 0b11100000) {\n const nextByte = input[++i];\n decoded += String.fromCharCode(((byte & 0b11111) << 6) | (nextByte & 0b111111));\n }\n else if (0b11110000 <= byte && byte < 0b101101101) {\n const surrogatePair = [byte, input[++i], input[++i], input[++i]];\n const encoded = \"%\" + surrogatePair.map((byteValue) => byteValue.toString(16)).join(\"%\");\n decoded += decodeURIComponent(encoded);\n }\n else {\n decoded += String.fromCharCode(((byte & 0b1111) << 12) | ((input[++i] & 0b111111) << 6) | (input[++i] & 0b111111));\n }\n }\n return decoded;\n};\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['marketplacecommerceanalytics'] = {};\nAWS.MarketplaceCommerceAnalytics = Service.defineService('marketplacecommerceanalytics', ['2015-07-01']);\nObject.defineProperty(apiLoader.services['marketplacecommerceanalytics'], '2015-07-01', {\n get: function get() {\n var model = require('../apis/marketplacecommerceanalytics-2015-07-01.min.json');\n model.paginators = require('../apis/marketplacecommerceanalytics-2015-07-01.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.MarketplaceCommerceAnalytics;\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport DefaultBrowserBehavior from '../browserbehavior/DefaultBrowserBehavior';\n\n/**\n * AudioProfile defines settings for audio quality.\n */\nexport default class AudioProfile {\n /**\n * Allows a builder to configure the opus encoder bitrate to\n * be used for the session to send audio. If null, the browser\n * internally sets a default bitrate.\n */\n audioBitrateBps: number | null;\n\n /**\n * Allows a builder to enable audio redundancy at the start of\n * the session. If enabled (and browser supports redundancy),\n * the amount of redundancy varies based on the amount of packet loss\n * detected in the client to server direction. This can consume upto\n * 3x the configured audio bitrate in high packet loss scenarios (> 20%).\n */\n private enableAudioRedundancy: boolean;\n\n /**\n * Constructs an AudioProfile. If no audio bitrate is supplied then the AudioProfile\n * does not adjust the browser's internal bitrate setting. If the enableAudioRedundancy\n * flag is not supplied then the AudioProfile enables it by default.\n */\n constructor(audioBitrateBps: number | null = null, enableAudioRedundancy: boolean = true) {\n this.audioBitrateBps = audioBitrateBps;\n this.enableAudioRedundancy =\n new DefaultBrowserBehavior().supportsAudioRedundancy() && enableAudioRedundancy;\n }\n\n /**\n * Creates an AudioProfile optimized for fullband speech (40 kbit/s mono).\n */\n static fullbandSpeechMono(enableAudioRedundancy: boolean = true): AudioProfile {\n return new AudioProfile(40000, enableAudioRedundancy);\n }\n\n /**\n * Creates an AudioProfile optimized for fullband music (64 kbit/s mono).\n */\n static fullbandMusicMono(enableAudioRedundancy: boolean = true): AudioProfile {\n return new AudioProfile(64000, enableAudioRedundancy);\n }\n\n /**\n * Creates an AudioProfile optimized for fullband stereo music (128 kbit/s stereo).\n */\n static fullbandMusicStereo(enableAudioRedundancy: boolean = true): AudioProfile {\n return new AudioProfile(128000, enableAudioRedundancy);\n }\n\n /**\n * Returns true if audio profile is set to stereo mode.\n */\n isStereo(): boolean {\n return this.audioBitrateBps === 128000;\n }\n\n /**\n * Returns true if redundancy is supported and enabled.\n */\n hasRedundancyEnabled(): boolean {\n return this.enableAudioRedundancy;\n }\n}\n","\"use strict\";\nmodule.exports = BufferReader;\n\n// extends Reader\nvar Reader = require(\"./reader\");\n(BufferReader.prototype = Object.create(Reader.prototype)).constructor = BufferReader;\n\nvar util = require(\"./util/minimal\");\n\n/**\n * Constructs a new buffer reader instance.\n * @classdesc Wire format reader using node buffers.\n * @extends Reader\n * @constructor\n * @param {Buffer} buffer Buffer to read from\n */\nfunction BufferReader(buffer) {\n Reader.call(this, buffer);\n\n /**\n * Read buffer.\n * @name BufferReader#buf\n * @type {Buffer}\n */\n}\n\nBufferReader._configure = function () {\n /* istanbul ignore else */\n if (util.Buffer)\n BufferReader.prototype._slice = util.Buffer.prototype.slice;\n};\n\n\n/**\n * @override\n */\nBufferReader.prototype.string = function read_string_buffer() {\n var len = this.uint32(); // modifies pos\n return this.buf.utf8Slice\n ? this.buf.utf8Slice(this.pos, this.pos = Math.min(this.pos + len, this.len))\n : this.buf.toString(\"utf-8\", this.pos, this.pos = Math.min(this.pos + len, this.len));\n};\n\n/**\n * Reads a sequence of bytes preceeded by its length as a varint.\n * @name BufferReader#bytes\n * @function\n * @returns {Buffer} Value read\n */\n\nBufferReader._configure();\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['secretsmanager'] = {};\nAWS.SecretsManager = Service.defineService('secretsmanager', ['2017-10-17']);\nObject.defineProperty(apiLoader.services['secretsmanager'], '2017-10-17', {\n get: function get() {\n var model = require('../apis/secretsmanager-2017-10-17.min.json');\n model.paginators = require('../apis/secretsmanager-2017-10-17.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.SecretsManager;\n","'use strict';\nvar classofRaw = require('../internals/classof-raw');\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = function (fn) {\n // Nashorn bug:\n // https://github.com/zloirock/core-js/issues/1128\n // https://github.com/zloirock/core-js/issues/1130\n if (classofRaw(fn) === 'Function') return uncurryThis(fn);\n};\n","/**\n * Hash-based Message Authentication Code implementation. Requires a message\n * digest object that can be obtained, for example, from forge.md.sha1 or\n * forge.md.md5.\n *\n * @author Dave Longley\n *\n * Copyright (c) 2010-2012 Digital Bazaar, Inc. All rights reserved.\n */\nvar forge = require('./forge');\nrequire('./md');\nrequire('./util');\n\n/* HMAC API */\nvar hmac = module.exports = forge.hmac = forge.hmac || {};\n\n/**\n * Creates an HMAC object that uses the given message digest object.\n *\n * @return an HMAC object.\n */\nhmac.create = function() {\n // the hmac key to use\n var _key = null;\n\n // the message digest to use\n var _md = null;\n\n // the inner padding\n var _ipadding = null;\n\n // the outer padding\n var _opadding = null;\n\n // hmac context\n var ctx = {};\n\n /**\n * Starts or restarts the HMAC with the given key and message digest.\n *\n * @param md the message digest to use, null to reuse the previous one,\n * a string to use builtin 'sha1', 'md5', 'sha256'.\n * @param key the key to use as a string, array of bytes, byte buffer,\n * or null to reuse the previous key.\n */\n ctx.start = function(md, key) {\n if(md !== null) {\n if(typeof md === 'string') {\n // create builtin message digest\n md = md.toLowerCase();\n if(md in forge.md.algorithms) {\n _md = forge.md.algorithms[md].create();\n } else {\n throw new Error('Unknown hash algorithm \"' + md + '\"');\n }\n } else {\n // store message digest\n _md = md;\n }\n }\n\n if(key === null) {\n // reuse previous key\n key = _key;\n } else {\n if(typeof key === 'string') {\n // convert string into byte buffer\n key = forge.util.createBuffer(key);\n } else if(forge.util.isArray(key)) {\n // convert byte array into byte buffer\n var tmp = key;\n key = forge.util.createBuffer();\n for(var i = 0; i < tmp.length; ++i) {\n key.putByte(tmp[i]);\n }\n }\n\n // if key is longer than blocksize, hash it\n var keylen = key.length();\n if(keylen > _md.blockLength) {\n _md.start();\n _md.update(key.bytes());\n key = _md.digest();\n }\n\n // mix key into inner and outer padding\n // ipadding = [0x36 * blocksize] ^ key\n // opadding = [0x5C * blocksize] ^ key\n _ipadding = forge.util.createBuffer();\n _opadding = forge.util.createBuffer();\n keylen = key.length();\n for(var i = 0; i < keylen; ++i) {\n var tmp = key.at(i);\n _ipadding.putByte(0x36 ^ tmp);\n _opadding.putByte(0x5C ^ tmp);\n }\n\n // if key is shorter than blocksize, add additional padding\n if(keylen < _md.blockLength) {\n var tmp = _md.blockLength - keylen;\n for(var i = 0; i < tmp; ++i) {\n _ipadding.putByte(0x36);\n _opadding.putByte(0x5C);\n }\n }\n _key = key;\n _ipadding = _ipadding.bytes();\n _opadding = _opadding.bytes();\n }\n\n // digest is done like so: hash(opadding | hash(ipadding | message))\n\n // prepare to do inner hash\n // hash(ipadding | message)\n _md.start();\n _md.update(_ipadding);\n };\n\n /**\n * Updates the HMAC with the given message bytes.\n *\n * @param bytes the bytes to update with.\n */\n ctx.update = function(bytes) {\n _md.update(bytes);\n };\n\n /**\n * Produces the Message Authentication Code (MAC).\n *\n * @return a byte buffer containing the digest value.\n */\n ctx.getMac = function() {\n // digest is done like so: hash(opadding | hash(ipadding | message))\n // here we do the outer hashing\n var inner = _md.digest().bytes();\n _md.start();\n _md.update(_opadding);\n _md.update(inner);\n return _md.digest();\n };\n // alias for getMac\n ctx.digest = ctx.getMac;\n\n return ctx;\n};\n","var hasMap = typeof Map === 'function' && Map.prototype;\nvar mapSizeDescriptor = Object.getOwnPropertyDescriptor && hasMap ? Object.getOwnPropertyDescriptor(Map.prototype, 'size') : null;\nvar mapSize = hasMap && mapSizeDescriptor && typeof mapSizeDescriptor.get === 'function' ? mapSizeDescriptor.get : null;\nvar mapForEach = hasMap && Map.prototype.forEach;\nvar hasSet = typeof Set === 'function' && Set.prototype;\nvar setSizeDescriptor = Object.getOwnPropertyDescriptor && hasSet ? Object.getOwnPropertyDescriptor(Set.prototype, 'size') : null;\nvar setSize = hasSet && setSizeDescriptor && typeof setSizeDescriptor.get === 'function' ? setSizeDescriptor.get : null;\nvar setForEach = hasSet && Set.prototype.forEach;\nvar hasWeakMap = typeof WeakMap === 'function' && WeakMap.prototype;\nvar weakMapHas = hasWeakMap ? WeakMap.prototype.has : null;\nvar hasWeakSet = typeof WeakSet === 'function' && WeakSet.prototype;\nvar weakSetHas = hasWeakSet ? WeakSet.prototype.has : null;\nvar hasWeakRef = typeof WeakRef === 'function' && WeakRef.prototype;\nvar weakRefDeref = hasWeakRef ? WeakRef.prototype.deref : null;\nvar booleanValueOf = Boolean.prototype.valueOf;\nvar objectToString = Object.prototype.toString;\nvar functionToString = Function.prototype.toString;\nvar $match = String.prototype.match;\nvar $slice = String.prototype.slice;\nvar $replace = String.prototype.replace;\nvar $toUpperCase = String.prototype.toUpperCase;\nvar $toLowerCase = String.prototype.toLowerCase;\nvar $test = RegExp.prototype.test;\nvar $concat = Array.prototype.concat;\nvar $join = Array.prototype.join;\nvar $arrSlice = Array.prototype.slice;\nvar $floor = Math.floor;\nvar bigIntValueOf = typeof BigInt === 'function' ? BigInt.prototype.valueOf : null;\nvar gOPS = Object.getOwnPropertySymbols;\nvar symToString = typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol' ? Symbol.prototype.toString : null;\nvar hasShammedSymbols = typeof Symbol === 'function' && typeof Symbol.iterator === 'object';\n// ie, `has-tostringtag/shams\nvar toStringTag = typeof Symbol === 'function' && Symbol.toStringTag && (typeof Symbol.toStringTag === hasShammedSymbols ? 'object' : 'symbol')\n ? Symbol.toStringTag\n : null;\nvar isEnumerable = Object.prototype.propertyIsEnumerable;\n\nvar gPO = (typeof Reflect === 'function' ? Reflect.getPrototypeOf : Object.getPrototypeOf) || (\n [].__proto__ === Array.prototype // eslint-disable-line no-proto\n ? function (O) {\n return O.__proto__; // eslint-disable-line no-proto\n }\n : null\n);\n\nfunction addNumericSeparator(num, str) {\n if (\n num === Infinity\n || num === -Infinity\n || num !== num\n || (num && num > -1000 && num < 1000)\n || $test.call(/e/, str)\n ) {\n return str;\n }\n var sepRegex = /[0-9](?=(?:[0-9]{3})+(?![0-9]))/g;\n if (typeof num === 'number') {\n var int = num < 0 ? -$floor(-num) : $floor(num); // trunc(num)\n if (int !== num) {\n var intStr = String(int);\n var dec = $slice.call(str, intStr.length + 1);\n return $replace.call(intStr, sepRegex, '$&_') + '.' + $replace.call($replace.call(dec, /([0-9]{3})/g, '$&_'), /_$/, '');\n }\n }\n return $replace.call(str, sepRegex, '$&_');\n}\n\nvar utilInspect = require('./util.inspect');\nvar inspectCustom = utilInspect.custom;\nvar inspectSymbol = isSymbol(inspectCustom) ? inspectCustom : null;\n\nvar quotes = {\n __proto__: null,\n 'double': '\"',\n single: \"'\"\n};\nvar quoteREs = {\n __proto__: null,\n 'double': /([\"\\\\])/g,\n single: /(['\\\\])/g\n};\n\nmodule.exports = function inspect_(obj, options, depth, seen) {\n var opts = options || {};\n\n if (has(opts, 'quoteStyle') && !has(quotes, opts.quoteStyle)) {\n throw new TypeError('option \"quoteStyle\" must be \"single\" or \"double\"');\n }\n if (\n has(opts, 'maxStringLength') && (typeof opts.maxStringLength === 'number'\n ? opts.maxStringLength < 0 && opts.maxStringLength !== Infinity\n : opts.maxStringLength !== null\n )\n ) {\n throw new TypeError('option \"maxStringLength\", if provided, must be a positive integer, Infinity, or `null`');\n }\n var customInspect = has(opts, 'customInspect') ? opts.customInspect : true;\n if (typeof customInspect !== 'boolean' && customInspect !== 'symbol') {\n throw new TypeError('option \"customInspect\", if provided, must be `true`, `false`, or `\\'symbol\\'`');\n }\n\n if (\n has(opts, 'indent')\n && opts.indent !== null\n && opts.indent !== '\\t'\n && !(parseInt(opts.indent, 10) === opts.indent && opts.indent > 0)\n ) {\n throw new TypeError('option \"indent\" must be \"\\\\t\", an integer > 0, or `null`');\n }\n if (has(opts, 'numericSeparator') && typeof opts.numericSeparator !== 'boolean') {\n throw new TypeError('option \"numericSeparator\", if provided, must be `true` or `false`');\n }\n var numericSeparator = opts.numericSeparator;\n\n if (typeof obj === 'undefined') {\n return 'undefined';\n }\n if (obj === null) {\n return 'null';\n }\n if (typeof obj === 'boolean') {\n return obj ? 'true' : 'false';\n }\n\n if (typeof obj === 'string') {\n return inspectString(obj, opts);\n }\n if (typeof obj === 'number') {\n if (obj === 0) {\n return Infinity / obj > 0 ? '0' : '-0';\n }\n var str = String(obj);\n return numericSeparator ? addNumericSeparator(obj, str) : str;\n }\n if (typeof obj === 'bigint') {\n var bigIntStr = String(obj) + 'n';\n return numericSeparator ? addNumericSeparator(obj, bigIntStr) : bigIntStr;\n }\n\n var maxDepth = typeof opts.depth === 'undefined' ? 5 : opts.depth;\n if (typeof depth === 'undefined') { depth = 0; }\n if (depth >= maxDepth && maxDepth > 0 && typeof obj === 'object') {\n return isArray(obj) ? '[Array]' : '[Object]';\n }\n\n var indent = getIndent(opts, depth);\n\n if (typeof seen === 'undefined') {\n seen = [];\n } else if (indexOf(seen, obj) >= 0) {\n return '[Circular]';\n }\n\n function inspect(value, from, noIndent) {\n if (from) {\n seen = $arrSlice.call(seen);\n seen.push(from);\n }\n if (noIndent) {\n var newOpts = {\n depth: opts.depth\n };\n if (has(opts, 'quoteStyle')) {\n newOpts.quoteStyle = opts.quoteStyle;\n }\n return inspect_(value, newOpts, depth + 1, seen);\n }\n return inspect_(value, opts, depth + 1, seen);\n }\n\n if (typeof obj === 'function' && !isRegExp(obj)) { // in older engines, regexes are callable\n var name = nameOf(obj);\n var keys = arrObjKeys(obj, inspect);\n return '[Function' + (name ? ': ' + name : ' (anonymous)') + ']' + (keys.length > 0 ? ' { ' + $join.call(keys, ', ') + ' }' : '');\n }\n if (isSymbol(obj)) {\n var symString = hasShammedSymbols ? $replace.call(String(obj), /^(Symbol\\(.*\\))_[^)]*$/, '$1') : symToString.call(obj);\n return typeof obj === 'object' && !hasShammedSymbols ? markBoxed(symString) : symString;\n }\n if (isElement(obj)) {\n var s = '<' + $toLowerCase.call(String(obj.nodeName));\n var attrs = obj.attributes || [];\n for (var i = 0; i < attrs.length; i++) {\n s += ' ' + attrs[i].name + '=' + wrapQuotes(quote(attrs[i].value), 'double', opts);\n }\n s += '>';\n if (obj.childNodes && obj.childNodes.length) { s += '...'; }\n s += '';\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\n/** @type {import('./gOPD')} */\nmodule.exports = Object.getOwnPropertyDescriptor;\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\n/**\n * This file was generated with the `generate-red-worker-code.js` script.\n */\n\n/**\n * Redundant audio worker code string.\n */\n// eslint-disable-next-line\nconst RedundantAudioEncoderWorkerCode = \"class RedundantAudioEncoder {\\n constructor() {\\n // Each payload must be less than 1024 bytes to fit the 10 bit block length\\n this.maxRedPacketSizeBytes = 1 << 10;\\n // Limit payload to 1000 bytes to handle small MTU. 1000 is chosen because in Chromium-based browsers, writing audio\\n // payloads larger than 1000 bytes using the WebRTC Insertable Streams API (which is used to enable dynamic audio\\n // redundancy) will cause an error to be thrown and cause audio flow to permanently stop. See\\n // https://crbug.com/1248479.\\n this.maxAudioPayloadSizeBytes = 1000;\\n // Each payload can encode a timestamp delta of 14 bits\\n this.maxRedTimestampOffset = 1 << 14;\\n // 4 byte RED header\\n this.redHeaderSizeBytes = 4;\\n // reduced size for last RED header\\n this.redLastHeaderSizeBytes = 1;\\n // P-Time for Opus 20 msec packets\\n // We do not support other p-times or clock rates\\n this.redPacketizationTime = 960;\\n // distance between redundant payloads, Opus FEC handles a distance of 1\\n // TODO(https://issues.amazon.com/issues/ChimeSDKAudio-55):\\n // Consider making this dynamic\\n this.redPacketDistance = 2;\\n // maximum number of redundant payloads per RTP packet\\n this.maxRedEncodings = 2;\\n // Maximum number of encodings that can be recovered with a single RED packet, assuming the primary and redundant\\n // payloads have FEC.\\n this.redMaxRecoveryDistance = this.redPacketDistance * this.maxRedEncodings + 1;\\n // maximum history of prior payloads to keep\\n // generally we will expire old entries based on timestamp\\n // this limit is in place just to make sure the history does not\\n // grow too large in the case of erroneous timestamp inputs\\n this.maxEncodingHistorySize = 10;\\n // Current number of encodings we want to send\\n // to the remote end. This will be dynamically\\n // updated through the setNumEncodingsFromPacketloss API\\n this.numRedundantEncodings = 0;\\n // Used to enable or disable redundancy\\n // in response to very high packet loss events\\n this.redundancyEnabled = true;\\n // Loss stats are reported to the main thread every 5 seconds.\\n // Since timestamp differences between 2 consecutive packets\\n // give us the number of samples in each channel, 1 second\\n // is equivalent to 48000 samples:\\n // P-time * (1000ms/1s)\\n // = (960 samples/20ms) * (1000ms/1s)\\n // = 48000 samples/s\\n this.lossReportInterval = 48000 * 5;\\n // Maximum distance of a packet from the most recent packet timestamp\\n // that we will consider for recovery.\\n this.maxOutOfOrderPacketDistance = 16;\\n /**\\n * Below are Opus helper methods and constants.\\n */\\n this.OPUS_BAD_ARG = -1;\\n this.OPUS_INVALID_PACKET = -4;\\n // Max number of Opus frames in an Opus packet is 48 (https://www.rfc-editor.org/rfc/rfc6716#section-3.2.5).\\n this.OPUS_MAX_OPUS_FRAMES = 48;\\n // Max number of bytes that any individual Opus frame can have.\\n this.OPUS_MAX_FRAME_SIZE_BYTES = 1275;\\n this.encodingHistory = new Array();\\n this.opusPayloadType = 0;\\n this.redPayloadType = 0;\\n this.initializePacketLogs();\\n }\\n /**\\n * Creates an instance of RedundantAudioEncoder and sets up callbacks.\\n */\\n static initializeWorker() {\\n RedundantAudioEncoder.log('Initializing RedundantAudioEncoder');\\n const encoder = new RedundantAudioEncoder();\\n // RED encoding is done using WebRTC Encoded Transform\\n // https://github.com/w3c/webrtc-encoded-transform/blob/main/explainer.md\\n // Check the DedicatedWorkerGlobalScope for existence of\\n // RTCRtpScriptTransformer interface. If exists, then\\n // RTCRtpScriptTransform is supported by this browser.\\n // @ts-ignore\\n if (self.RTCRtpScriptTransformer) {\\n // @ts-ignore\\n self.onrtctransform = (event) => {\\n if (event.transformer.options.type === 'SenderTransform') {\\n encoder.setupSenderTransform(event.transformer.readable, event.transformer.writable);\\n }\\n else if (event.transformer.options.type === 'ReceiverTransform') {\\n encoder.setupReceiverTransform(event.transformer.readable, event.transformer.writable);\\n }\\n else if (event.transformer.options.type === 'PassthroughTransform') {\\n encoder.setupPassthroughTransform(event.transformer.readable, event.transformer.writable);\\n }\\n };\\n }\\n self.onmessage = (event) => {\\n if (event.data.msgType === 'StartRedWorker') {\\n encoder.setupSenderTransform(event.data.send.readable, event.data.send.writable);\\n encoder.setupReceiverTransform(event.data.receive.readable, event.data.receive.writable);\\n }\\n else if (event.data.msgType === 'PassthroughTransform') {\\n encoder.setupPassthroughTransform(event.data.send.readable, event.data.send.writable);\\n encoder.setupPassthroughTransform(event.data.receive.readable, event.data.receive.writable);\\n }\\n else if (event.data.msgType === 'RedPayloadType') {\\n encoder.setRedPayloadType(event.data.payloadType);\\n }\\n else if (event.data.msgType === 'OpusPayloadType') {\\n encoder.setOpusPayloadType(event.data.payloadType);\\n }\\n else if (event.data.msgType === 'UpdateNumRedundantEncodings') {\\n encoder.setNumRedundantEncodings(event.data.numRedundantEncodings);\\n }\\n else if (event.data.msgType === 'Enable') {\\n encoder.setRedundancyEnabled(true);\\n }\\n else if (event.data.msgType === 'Disable') {\\n encoder.setRedundancyEnabled(false);\\n }\\n };\\n }\\n /**\\n * Post logs to the main thread\\n */\\n static log(msg) {\\n if (RedundantAudioEncoder.shouldLog) {\\n // @ts-ignore\\n self.postMessage({\\n type: 'REDWorkerLog',\\n log: `[AudioRed] ${msg}`,\\n });\\n }\\n }\\n /**\\n * Returns the number of encodings based on packetLoss value. This is used by `DefaultTransceiverController` to\\n * determine when to alert the encoder to update the number of encodings. It also determines if we need to\\n * turn off red in cases of very high packet loss to avoid congestion collapse.\\n */\\n static getNumRedundantEncodingsForPacketLoss(packetLoss) {\\n let recommendedRedundantEncodings = 0;\\n let shouldTurnOffRed = false;\\n if (packetLoss <= 8) {\\n recommendedRedundantEncodings = 0;\\n }\\n else if (packetLoss <= 18) {\\n recommendedRedundantEncodings = 1;\\n }\\n else if (packetLoss <= 75) {\\n recommendedRedundantEncodings = 2;\\n }\\n else {\\n recommendedRedundantEncodings = 0;\\n shouldTurnOffRed = true;\\n }\\n return [recommendedRedundantEncodings, shouldTurnOffRed];\\n }\\n /**\\n * Sets up a passthrough (no-op) transform for the given streams.\\n */\\n setupPassthroughTransform(readable, writable) {\\n RedundantAudioEncoder.log('Setting up passthrough transform');\\n readable.pipeTo(writable);\\n }\\n /**\\n * Sets up the transform stream and pipes the outgoing encoded audio frames through the transform function.\\n */\\n setupSenderTransform(readable, writable) {\\n RedundantAudioEncoder.log('Setting up sender RED transform');\\n const transformStream = new TransformStream({\\n transform: this.senderTransform.bind(this),\\n });\\n readable.pipeThrough(transformStream).pipeTo(writable);\\n return;\\n }\\n /**\\n * Sets up the transform stream and pipes the received encoded audio frames through the transform function.\\n */\\n setupReceiverTransform(readable, writable) {\\n RedundantAudioEncoder.log('Setting up receiver RED transform');\\n const transformStream = new TransformStream({\\n transform: this.receivePacketLogTransform.bind(this),\\n });\\n readable.pipeThrough(transformStream).pipeTo(writable);\\n return;\\n }\\n /**\\n * Set the RED payload type ideally obtained from local offer.\\n */\\n setRedPayloadType(payloadType) {\\n this.redPayloadType = payloadType;\\n RedundantAudioEncoder.log(`red payload type set to ${this.redPayloadType}`);\\n }\\n /**\\n * Set the opus payload type ideally obtained from local offer.\\n */\\n setOpusPayloadType(payloadType) {\\n this.opusPayloadType = payloadType;\\n RedundantAudioEncoder.log(`opus payload type set to ${this.opusPayloadType}`);\\n }\\n /**\\n * Set the number of redundant encodings\\n */\\n setNumRedundantEncodings(numRedundantEncodings) {\\n this.numRedundantEncodings = numRedundantEncodings;\\n if (this.numRedundantEncodings > this.maxRedEncodings) {\\n this.numRedundantEncodings = this.maxRedEncodings;\\n }\\n RedundantAudioEncoder.log(`Updated numRedundantEncodings to ${this.numRedundantEncodings}`);\\n }\\n /**\\n * Enable or disable redundancy in response to\\n * high packet loss event.\\n */\\n setRedundancyEnabled(enabled) {\\n this.redundancyEnabled = enabled;\\n RedundantAudioEncoder.log(`redundancy ${this.redundancyEnabled ? 'enabled' : 'disabled'}`);\\n }\\n /**\\n * Helper function to only enqueue audio frames if they do not exceed the audio payload byte limit imposed by\\n * Chromium-based browsers. Chromium will throw an error (https://crbug.com/1248479) if an audio payload larger than\\n * 1000 bytes is enqueued. Any controller that attempts to enqueue an audio payload larger than 1000 bytes will\\n * encounter this error and will permanently stop sending or receiving audio.\\n */\\n enqueueAudioFrameIfPayloadSizeIsValid(\\n // @ts-ignore\\n frame, controller) {\\n if (frame.data.byteLength > this.maxAudioPayloadSizeBytes)\\n return;\\n controller.enqueue(frame);\\n }\\n /**\\n * Receives encoded frames and modifies as needed before sending to transport.\\n */\\n senderTransform(\\n // @ts-ignore\\n frame, controller) {\\n const frameMetadata = frame.getMetadata();\\n // @ts-ignore\\n if (frameMetadata.payloadType !== this.redPayloadType) {\\n this.enqueueAudioFrameIfPayloadSizeIsValid(frame, controller);\\n return;\\n }\\n const primaryPayloadBuffer = this.getPrimaryPayload(frame.timestamp, frame.data);\\n if (!primaryPayloadBuffer) {\\n this.enqueueAudioFrameIfPayloadSizeIsValid(frame, controller);\\n return;\\n }\\n const encodedBuffer = this.encode(frame.timestamp, primaryPayloadBuffer);\\n /* istanbul ignore next */\\n if (!encodedBuffer) {\\n this.enqueueAudioFrameIfPayloadSizeIsValid(frame, controller);\\n return;\\n }\\n frame.data = encodedBuffer;\\n this.enqueueAudioFrameIfPayloadSizeIsValid(frame, controller);\\n return;\\n }\\n /**\\n * Get the primary payload from encoding\\n */\\n getPrimaryPayload(primaryTimestamp, frame) {\\n const encodings = this.splitEncodings(primaryTimestamp, frame);\\n if (!encodings || encodings.length < 1)\\n return null;\\n return encodings[encodings.length - 1].payload;\\n }\\n /**\\n * Split up the encoding received into primary and redundant encodings\\n * These will be ordered oldest to newest which is the same ordering\\n * in the RTP red payload.\\n */\\n splitEncodings(primaryTimestamp, frame, getFecInfo = false, primarySequenceNumber = undefined) {\\n // process RED headers (according to RFC 2198)\\n // 0 1 2 3\\n // 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1\\n // +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+\\n // |F| block PT | timestamp offset | block length |\\n // +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+\\n //\\n // last header\\n // 0 1 2 3 4 5 6 7\\n // +-+-+-+-+-+-+-+-+\\n // |0| Block PT |\\n // +-+-+-+-+-+-+-+-+\\n const payload = new DataView(frame);\\n let payloadSizeBytes = payload.byteLength;\\n let totalPayloadSizeBytes = 0;\\n let totalHeaderSizeBytes = 0;\\n let primaryPayloadSizeBytes = 0;\\n let payloadOffset = 0;\\n let gotLastBlock = false;\\n const encodings = new Array();\\n const redundantEncodingBlockLengths = new Array();\\n const redundantEncodingTimestamps = new Array();\\n while (payloadSizeBytes > 0) {\\n gotLastBlock = (payload.getUint8(payloadOffset) & 0x80) === 0;\\n if (gotLastBlock) {\\n // Bits 1 through 7 are payload type\\n const payloadType = payload.getUint8(payloadOffset) & 0x7f;\\n // Unexpected payload type. This is a bad packet.\\n if (payloadType !== this.opusPayloadType) {\\n return null;\\n }\\n totalPayloadSizeBytes += this.redLastHeaderSizeBytes;\\n totalHeaderSizeBytes += this.redLastHeaderSizeBytes;\\n // Accumulated block lengths are equal to or larger than the buffer, which means there is no primary block. This\\n // is a bad packet.\\n if (totalPayloadSizeBytes >= payload.byteLength) {\\n return null;\\n }\\n primaryPayloadSizeBytes = payload.byteLength - totalPayloadSizeBytes;\\n break;\\n }\\n else {\\n if (payloadSizeBytes < this.redHeaderSizeBytes) {\\n return null;\\n }\\n // Bits 22 through 31 are payload length\\n const blockLength = ((payload.getUint8(payloadOffset + 2) & 0x03) << 8) + payload.getUint8(payloadOffset + 3);\\n redundantEncodingBlockLengths.push(blockLength);\\n const timestampOffset = payload.getUint16(payloadOffset + 1) >> 2;\\n const timestamp = primaryTimestamp - timestampOffset;\\n redundantEncodingTimestamps.push(timestamp);\\n totalPayloadSizeBytes += blockLength + this.redHeaderSizeBytes;\\n totalHeaderSizeBytes += this.redHeaderSizeBytes;\\n payloadOffset += this.redHeaderSizeBytes;\\n payloadSizeBytes -= this.redHeaderSizeBytes;\\n }\\n }\\n // The last block was never found. The packet we received\\n // does not have a good RED payload.\\n if (!gotLastBlock) {\\n // Note that sequence numbers only exist for\\n // incoming audio frames.\\n if (primarySequenceNumber !== undefined) {\\n // This could be a possible padding packet used\\n // for BWE with a good sequence number.\\n // Create a dummy encoding to make sure loss values\\n // are calculated correctly by consuming sequence number.\\n // Note that for the receive side, we process packets only\\n // for loss/recovery calculations and forward the original\\n // packet without changing it even in the error case.\\n encodings.push({\\n payload: frame,\\n isRedundant: false,\\n seq: primarySequenceNumber,\\n });\\n return encodings;\\n }\\n // This is a bad packet.\\n return null;\\n }\\n let redundantPayloadOffset = totalHeaderSizeBytes;\\n for (let i = 0; i < redundantEncodingTimestamps.length; i++) {\\n const redundantPayloadBuffer = new ArrayBuffer(redundantEncodingBlockLengths[i]);\\n const redundantPayloadArray = new Uint8Array(redundantPayloadBuffer);\\n redundantPayloadArray.set(new Uint8Array(payload.buffer, redundantPayloadOffset, redundantEncodingBlockLengths[i]), 0);\\n const encoding = {\\n timestamp: redundantEncodingTimestamps[i],\\n payload: redundantPayloadBuffer,\\n isRedundant: true,\\n };\\n if (getFecInfo) {\\n encoding.hasFec = this.opusPacketHasFec(new DataView(redundantPayloadBuffer), redundantPayloadBuffer.byteLength);\\n }\\n encodings.push(encoding);\\n redundantPayloadOffset += redundantEncodingBlockLengths[i];\\n }\\n const primaryPayloadOffset = payload.byteLength - primaryPayloadSizeBytes;\\n const primaryPayloadBuffer = new ArrayBuffer(primaryPayloadSizeBytes);\\n const primaryArray = new Uint8Array(primaryPayloadBuffer);\\n primaryArray.set(new Uint8Array(payload.buffer, primaryPayloadOffset, primaryPayloadSizeBytes), 0);\\n const encoding = {\\n timestamp: primaryTimestamp,\\n payload: primaryPayloadBuffer,\\n isRedundant: false,\\n seq: primarySequenceNumber,\\n };\\n if (getFecInfo) {\\n encoding.hasFec = this.opusPacketHasFec(new DataView(primaryPayloadBuffer), primaryPayloadBuffer.byteLength);\\n }\\n encodings.push(encoding);\\n return encodings;\\n }\\n /**\\n * Create a new encoding with current primary payload and the older payloads of choice.\\n */\\n encode(primaryTimestamp, primaryPayload) {\\n const primaryPayloadSize = primaryPayload.byteLength;\\n // Payload size needs to be valid.\\n if (primaryPayloadSize === 0 ||\\n primaryPayloadSize >= this.maxRedPacketSizeBytes ||\\n primaryPayloadSize >= this.maxAudioPayloadSizeBytes) {\\n return null;\\n }\\n const numRedundantEncodings = this.numRedundantEncodings;\\n let headerSizeBytes = this.redLastHeaderSizeBytes;\\n let payloadSizeBytes = primaryPayloadSize;\\n let bytesAvailable = this.maxAudioPayloadSizeBytes - primaryPayloadSize - headerSizeBytes;\\n const redundantEncodingTimestamps = new Array();\\n const redundantEncodingPayloads = new Array();\\n // If redundancy is disabled then only send the primary payload\\n if (this.redundancyEnabled) {\\n // Determine how much redundancy we can fit into our packet\\n let redundantTimestamp = this.uint32WrapAround(primaryTimestamp - this.redPacketizationTime * this.redPacketDistance);\\n for (let i = 0; i < numRedundantEncodings; i++) {\\n // Do not add redundant encodings that are beyond the maximum timestamp offset.\\n if (this.uint32WrapAround(primaryTimestamp - redundantTimestamp) >= this.maxRedTimestampOffset) {\\n break;\\n }\\n let findTimestamp = redundantTimestamp;\\n let encoding = this.encodingHistory.find(e => e.timestamp === findTimestamp);\\n if (!encoding) {\\n // If not found or not important then look for the previous packet.\\n // The current packet may have included FEC for the previous, so just\\n // use the previous packet instead provided that it has voice activity.\\n findTimestamp = this.uint32WrapAround(redundantTimestamp - this.redPacketizationTime);\\n encoding = this.encodingHistory.find(e => e.timestamp === findTimestamp);\\n }\\n if (encoding) {\\n const redundantEncodingSizeBytes = encoding.payload.byteLength;\\n // Only add redundancy if there are enough bytes available.\\n if (bytesAvailable < this.redHeaderSizeBytes + redundantEncodingSizeBytes)\\n break;\\n bytesAvailable -= this.redHeaderSizeBytes + redundantEncodingSizeBytes;\\n headerSizeBytes += this.redHeaderSizeBytes;\\n payloadSizeBytes += redundantEncodingSizeBytes;\\n redundantEncodingTimestamps.unshift(encoding.timestamp);\\n redundantEncodingPayloads.unshift(encoding.payload);\\n }\\n redundantTimestamp -= this.redPacketizationTime * this.redPacketDistance;\\n redundantTimestamp = this.uint32WrapAround(redundantTimestamp);\\n }\\n }\\n const redPayloadBuffer = new ArrayBuffer(headerSizeBytes + payloadSizeBytes);\\n const redPayloadView = new DataView(redPayloadBuffer);\\n // Add redundant encoding header(s) to new buffer\\n let redPayloadOffset = 0;\\n for (let i = 0; i < redundantEncodingTimestamps.length; i++) {\\n const timestampDelta = primaryTimestamp - redundantEncodingTimestamps[i];\\n redPayloadView.setUint8(redPayloadOffset, this.opusPayloadType | 0x80);\\n redPayloadView.setUint16(redPayloadOffset + 1, (timestampDelta << 2) | (redundantEncodingPayloads[i].byteLength >> 8));\\n redPayloadView.setUint8(redPayloadOffset + 3, redundantEncodingPayloads[i].byteLength & 0xff);\\n redPayloadOffset += this.redHeaderSizeBytes;\\n }\\n // Add primary encoding header to new buffer\\n redPayloadView.setUint8(redPayloadOffset, this.opusPayloadType);\\n redPayloadOffset += this.redLastHeaderSizeBytes;\\n // Add redundant payload(s) to new buffer\\n const redPayloadArray = new Uint8Array(redPayloadBuffer);\\n for (let i = 0; i < redundantEncodingPayloads.length; i++) {\\n redPayloadArray.set(new Uint8Array(redundantEncodingPayloads[i]), redPayloadOffset);\\n redPayloadOffset += redundantEncodingPayloads[i].byteLength;\\n }\\n // Add primary payload to new buffer\\n redPayloadArray.set(new Uint8Array(primaryPayload), redPayloadOffset);\\n redPayloadOffset += primaryPayload.byteLength;\\n /* istanbul ignore next */\\n // Sanity check that we got the expected total payload size.\\n if (redPayloadOffset !== headerSizeBytes + payloadSizeBytes)\\n return null;\\n this.updateEncodingHistory(primaryTimestamp, primaryPayload);\\n return redPayloadBuffer;\\n }\\n /**\\n * Update the encoding history with the latest primary encoding\\n */\\n updateEncodingHistory(primaryTimestamp, primaryPayload) {\\n // Remove encodings from the history if they are too old.\\n for (const encoding of this.encodingHistory) {\\n const maxTimestampDelta = this.redPacketizationTime * this.redMaxRecoveryDistance;\\n if (primaryTimestamp - encoding.timestamp >= maxTimestampDelta) {\\n this.encodingHistory.shift();\\n }\\n else {\\n break;\\n }\\n }\\n // Only add an encoding to the history if the encoding is deemed to be important. An encoding is important if it is\\n // a CELT-only packet or contains voice activity.\\n const packet = new DataView(primaryPayload);\\n if (this.opusPacketIsCeltOnly(packet) ||\\n this.opusPacketHasVoiceActivity(packet, packet.byteLength) > 0) {\\n // Check if adding an encoding will cause the length of the encoding history to exceed the maximum history size.\\n // This is not expected to happen but could occur if we get incorrect timestamps. We want to make sure our memory\\n // usage is bounded. In this case, just clear the history and start over from empty.\\n if (this.encodingHistory.length + 1 > this.maxEncodingHistorySize)\\n this.encodingHistory.length = 0;\\n this.encodingHistory.push({ timestamp: primaryTimestamp, payload: primaryPayload });\\n }\\n }\\n /**\\n * Initialize packet logs and metric values.\\n */\\n initializePacketLogs() {\\n // The extra space from the max RED recovery distance is to ensure that we do not incorrectly count recovery for\\n // packets that have already been received but are outside of the max out-of-order distance.\\n const packetLogSize = this.maxOutOfOrderPacketDistance + this.redMaxRecoveryDistance;\\n this.primaryPacketLog = {\\n window: new Array(packetLogSize),\\n index: 0,\\n windowSize: packetLogSize,\\n };\\n this.redRecoveryLog = {\\n window: new Array(packetLogSize),\\n index: 0,\\n windowSize: packetLogSize,\\n };\\n this.fecRecoveryLog = {\\n window: new Array(packetLogSize),\\n index: 0,\\n windowSize: packetLogSize,\\n };\\n this.totalAudioPacketsExpected = 0;\\n this.totalAudioPacketsLost = 0;\\n this.totalAudioPacketsRecoveredRed = 0;\\n this.totalAudioPacketsRecoveredFec = 0;\\n }\\n /**\\n * Receives encoded frames from the server\\n * and adds the timestamps to a packet log\\n * to calculate an approximate recovery metric.\\n */\\n receivePacketLogTransform(\\n // @ts-ignore\\n frame, controller) {\\n const frameMetadata = frame.getMetadata();\\n // @ts-ignore\\n if (frameMetadata.payloadType !== this.redPayloadType) {\\n this.enqueueAudioFrameIfPayloadSizeIsValid(frame, controller);\\n return;\\n }\\n // @ts-ignore\\n const encodings = this.splitEncodings(frame.timestamp, frame.data, \\n /*getFecInfo*/ true, frameMetadata.sequenceNumber);\\n if (!encodings) {\\n this.enqueueAudioFrameIfPayloadSizeIsValid(frame, controller);\\n return;\\n }\\n for (let i = encodings.length - 1; i >= 0; i--) {\\n if (this.updateLossStats(encodings[i])) {\\n this.updateRedStats(encodings[i]);\\n this.updateFecStats(encodings[i]);\\n }\\n }\\n this.maybeReportLossStats(frameMetadata.synchronizationSource, encodings[encodings.length - 1].timestamp);\\n this.enqueueAudioFrameIfPayloadSizeIsValid(frame, controller);\\n }\\n /**\\n * Adds a timestamp to the primary packet log.\\n * This also updates totalAudioPacketsLost and totalAudioPacketsExpected by looking\\n * at the difference between timestamps.\\n *\\n * @param encoding : The encoding to be analyzed\\n * @returns false if sequence number was greater than max out of order distance\\n * true otherwise\\n */\\n updateLossStats(encoding) {\\n if (encoding.isRedundant)\\n return true;\\n const timestamp = encoding.timestamp;\\n const seq = encoding.seq;\\n if (this.totalAudioPacketsExpected === 0) {\\n this.totalAudioPacketsExpected = 1;\\n this.newestSequenceNumber = seq;\\n this.addTimestamp(this.primaryPacketLog, timestamp);\\n return true;\\n }\\n const diff = this.int16(seq - this.newestSequenceNumber);\\n if (diff < -this.maxOutOfOrderPacketDistance)\\n return false;\\n if (diff < 0) {\\n if (!this.hasTimestamp(this.primaryPacketLog, timestamp)) {\\n if (this.totalAudioPacketsLost > 0)\\n this.totalAudioPacketsLost--;\\n this.addTimestamp(this.primaryPacketLog, timestamp);\\n this.removeFromRecoveryWindows(timestamp);\\n }\\n }\\n else if (diff > 1) {\\n this.totalAudioPacketsLost += diff - 1;\\n }\\n if (diff > 0) {\\n this.totalAudioPacketsExpected += diff;\\n this.newestSequenceNumber = encoding.seq;\\n this.addTimestamp(this.primaryPacketLog, timestamp);\\n }\\n return true;\\n }\\n /**\\n * Adds a timestamp to the red recovery log if it is not present in\\n * the primary packet log and if it's not too old.\\n *\\n * @param encoding : The encoding to be analyzed\\n */\\n updateRedStats(encoding) {\\n if (!encoding.isRedundant || this.totalAudioPacketsLost === 0)\\n return;\\n const timestamp = encoding.timestamp;\\n if (!this.hasTimestamp(this.primaryPacketLog, timestamp)) {\\n if (!this.hasTimestamp(this.redRecoveryLog, timestamp)) {\\n this.totalAudioPacketsRecoveredRed++;\\n this.addTimestamp(this.redRecoveryLog, timestamp);\\n }\\n if (this.removeTimestamp(this.fecRecoveryLog, timestamp)) {\\n /* istanbul ignore else */\\n if (this.totalAudioPacketsRecoveredFec > 0)\\n this.totalAudioPacketsRecoveredFec--;\\n }\\n }\\n }\\n /**\\n * Adds a timestamp to the fec recovery log if it is not present in\\n * the primary packet log and red recovery log and if it is not too old.\\n *\\n * @param encoding : The encoding to be analyzed\\n */\\n updateFecStats(encoding) {\\n if (!encoding.hasFec || this.totalAudioPacketsLost === 0)\\n return;\\n const fecTimestamp = encoding.timestamp - this.redPacketizationTime;\\n if (this.hasTimestamp(this.primaryPacketLog, fecTimestamp) ||\\n this.hasTimestamp(this.redRecoveryLog, fecTimestamp) ||\\n this.hasTimestamp(this.fecRecoveryLog, fecTimestamp)) {\\n return;\\n }\\n this.totalAudioPacketsRecoveredFec++;\\n this.addTimestamp(this.fecRecoveryLog, fecTimestamp);\\n }\\n /**\\n * Reports loss metrics to DefaultTransceiverController\\n *\\n * @param timestamp : Timestamp of most recent primary packet\\n */\\n maybeReportLossStats(ssrc, timestamp) {\\n if (timestamp === undefined ||\\n timestamp - this.lastLossReportTimestamp < this.lossReportInterval)\\n return;\\n /* istanbul ignore next */\\n if (RedundantAudioEncoder.shouldReportStats) {\\n // @ts-ignore\\n self.postMessage({\\n type: 'RedundantAudioEncoderStats',\\n ssrc,\\n totalAudioPacketsLost: this.totalAudioPacketsLost,\\n totalAudioPacketsExpected: this.totalAudioPacketsExpected,\\n totalAudioPacketsRecoveredRed: this.totalAudioPacketsRecoveredRed,\\n totalAudioPacketsRecoveredFec: this.totalAudioPacketsRecoveredFec,\\n });\\n }\\n this.lastLossReportTimestamp = timestamp;\\n }\\n /**\\n * Adds a timestamp to a packet log\\n *\\n * @param packetLog : The packetlog to add the timestamp to\\n * @param timestamp : The timestamp that should be added\\n */\\n addTimestamp(packetLog, timestamp) {\\n if (timestamp === undefined) {\\n return;\\n }\\n packetLog.window[packetLog.index] = timestamp;\\n packetLog.index = (packetLog.index + 1) % packetLog.windowSize;\\n }\\n /**\\n * Checks if a timestamp is in a packetlog\\n *\\n * @param packetLog : The packetlog to search\\n * @param timestamp : The timestamp to search for\\n * @returns true if timestamp is present, false otherwise\\n */\\n hasTimestamp(packetLog, timestamp) {\\n const element = packetLog.window.find(t => t === timestamp);\\n return !!element;\\n }\\n /**\\n * Removes a timestamp from a packet log\\n *\\n * @param packetLog : The packetlog from which the timestamp should be removed\\n * @param timestamp : The timestamp to be removed\\n * @returns true if timestamp was present in the log and removed, false otherwise\\n */\\n removeTimestamp(packetLog, timestamp) {\\n const index = packetLog.window.indexOf(timestamp);\\n if (index >= 0) {\\n packetLog.window[index] = undefined;\\n return true;\\n }\\n return false;\\n }\\n /**\\n * Removes a timestamp from red and fec recovery windows.\\n *\\n * @param timestamp : The timestamp to be removed\\n */\\n removeFromRecoveryWindows(timestamp) {\\n let removed = this.removeTimestamp(this.redRecoveryLog, timestamp);\\n if (removed) {\\n if (this.totalAudioPacketsRecoveredRed > 0)\\n this.totalAudioPacketsRecoveredRed--;\\n }\\n removed = this.removeTimestamp(this.fecRecoveryLog, timestamp);\\n if (removed) {\\n if (this.totalAudioPacketsRecoveredFec > 0)\\n this.totalAudioPacketsRecoveredFec--;\\n }\\n }\\n /**\\n * Converts the supplied argument to 32-bit unsigned integer\\n */\\n uint32WrapAround(num) {\\n const mod = 4294967296; // 2^32\\n let res = num;\\n if (num >= mod) {\\n res = num - mod;\\n }\\n else if (num < 0) {\\n res = mod + num;\\n }\\n return res;\\n }\\n /**\\n * Converts the supplied argument to 16-bit signed integer\\n */\\n int16(num) {\\n return (num << 16) >> 16;\\n }\\n /**\\n * Determines if an Opus packet is in CELT-only mode.\\n *\\n * @param packet Opus packet.\\n * @returns `true` if the packet is in CELT-only mode.\\n */\\n opusPacketIsCeltOnly(packet) {\\n // TOC byte format (https://www.rfc-editor.org/rfc/rfc6716#section-3.1):\\n // 0\\n // 0 1 2 3 4 5 6 7\\n // +-+-+-+-+-+-+-+-+\\n // | config |s| c |\\n // +-+-+-+-+-+-+-+-+\\n // Since CELT-only packets are represented using configurations 16 to 31, the highest 'config' bit will always be 1\\n // for CELT-only packets.\\n return !!(packet.getUint8(0) & 0x80);\\n }\\n /**\\n * Gets the number of samples per frame from an Opus packet.\\n *\\n * @param packet Opus packet. This must contain at least one byte of data.\\n * @param sampleRateHz 32-bit integer sampling rate in Hz. This must be a multiple of 400 or inaccurate results will\\n * be returned.\\n * @returns Number of samples per frame.\\n */\\n opusPacketGetSamplesPerFrame(packet, sampleRateHz) {\\n // Sample rate must be a 32-bit integer.\\n sampleRateHz = Math.round(sampleRateHz);\\n sampleRateHz = Math.min(Math.max(sampleRateHz, -(Math.pow(2, 32))), Math.pow(2, 32) - 1);\\n // TOC byte format (https://www.rfc-editor.org/rfc/rfc6716#section-3.1):\\n // 0\\n // 0 1 2 3 4 5 6 7\\n // +-+-+-+-+-+-+-+-+\\n // | config |s| c |\\n // +-+-+-+-+-+-+-+-+\\n let numSamples;\\n let frameSizeOption;\\n // Case for CELT-only packet.\\n if (this.opusPacketIsCeltOnly(packet)) {\\n // The lower 3 'config' bits indicate the frame size option.\\n frameSizeOption = (packet.getUint8(0) >> 3) & 0x3;\\n // The frame size options 0, 1, 2, 3 correspond to frame sizes of 2.5, 5, 10, 20 ms. Notice that the frame sizes\\n // can be represented as (2.5 * 2^0), (2.5 * 2^1), (2.5 * 2^2), (2.5 * 2^3) ms. So, the number of samples can be\\n // calculated as follows:\\n // (sample/s) * (1s/1000ms) * (2.5ms) * 2^(frameSizeOption)\\n // = (sample/s) * (1s/400) * 2^(frameSizeOption)\\n // = (sample/s) * 2^(frameSizeOption) * (1s/400)\\n numSamples = (sampleRateHz << frameSizeOption) / 400;\\n }\\n // Case for Hybrid packet. Since Hybrid packets are represented using configurations 12 to 15, bits 1 and 2 in the\\n // above TOC byte diagram will both be 1.\\n else if ((packet.getUint8(0) & 0x60) === 0x60) {\\n // In the case of configuration 13 or 15, bit 4 in the above TOC byte diagram will be 1. Configurations 13 and 15\\n // correspond to a 20ms frame size, so the number of samples is calculated as follows:\\n // (sample/s) * (1s/1000ms) * (20ms)\\n // = (sample/s) * (1s/50)\\n //\\n // In the case of configuration 12 or 14, bit 4 in the above TOC byte diagram will be 0. Configurations 12 and 14\\n // correspond to a 10ms frame size, so the number of samples is calculated as follows:\\n // (sample/s) * (1s/1000ms) * (10ms)\\n // = (sample/s) * (1s/100)\\n numSamples = packet.getUint8(0) & 0x08 ? sampleRateHz / 50 : sampleRateHz / 100;\\n }\\n // Case for SILK-only packet.\\n else {\\n // The lower 3 'config' bits indicate the frame size option for SILK-only packets.\\n frameSizeOption = (packet.getUint8(0) >> 3) & 0x3;\\n if (frameSizeOption === 3) {\\n // Frame size option 3 corresponds to a frame size of 60ms, so the number of samples is calculated as follows:\\n // (sample/s) * (1s/1000ms) * (60ms)\\n // = (sample/s) * (60ms) * (1s/1000ms)\\n numSamples = (sampleRateHz * 60) / 1000;\\n }\\n else {\\n // The frame size options 0, 1, 2 correspond to frame sizes of 10, 20, 40 ms. Notice that the frame sizes can be\\n // represented as (10 * 2^0), (10 * 2^1), (10 * 2^2) ms. So, the number of samples can be calculated as follows:\\n // (sample/s) * (1s/1000ms) * (10ms) * 2^(frameSizeOption)\\n // = (sample/s) * (1s/100) * 2^(frameSizeOption)\\n // = (sample/s) * 2^(frameSizeOption) * (1s/100)\\n numSamples = (sampleRateHz << frameSizeOption) / 100;\\n }\\n }\\n return numSamples;\\n }\\n /**\\n * Gets the number of SILK frames per Opus frame.\\n *\\n * @param packet Opus packet.\\n * @returns Number of SILK frames per Opus frame.\\n */\\n opusNumSilkFrames(packet) {\\n // For computing the frame length in ms, the sample rate is not important since it cancels out. We use 48 kHz, but\\n // any valid sample rate would work.\\n //\\n // To calculate the length of a frame (with a 48kHz sample rate) in ms:\\n // (samples/frame) * (1s/48000 samples) * (1000ms/s)\\n // = (samples/frame) * (1000ms/48000 samples)\\n // = (samples/frame) * (1ms/48 samples)\\n let frameLengthMs = this.opusPacketGetSamplesPerFrame(packet, 48000) / 48;\\n if (frameLengthMs < 10)\\n frameLengthMs = 10;\\n // The number of SILK frames per Opus frame is described in https://www.rfc-editor.org/rfc/rfc6716#section-4.2.2.\\n switch (frameLengthMs) {\\n case 10:\\n case 20:\\n return 1;\\n case 40:\\n return 2;\\n case 60:\\n return 3;\\n // It is not possible to reach the default case since an Opus packet can only encode sizes of 2.5, 5, 10, 20, 40,\\n // or 60 ms, so we ignore the default case for test coverage.\\n /* istanbul ignore next */\\n default:\\n return 0;\\n }\\n }\\n /**\\n * Gets the number of channels from an Opus packet.\\n *\\n * @param packet Opus packet.\\n * @returns Number of channels.\\n */\\n opusPacketGetNumChannels(packet) {\\n // TOC byte format (https://www.rfc-editor.org/rfc/rfc6716#section-3.1):\\n // 0\\n // 0 1 2 3 4 5 6 7\\n // +-+-+-+-+-+-+-+-+\\n // | config |s| c |\\n // +-+-+-+-+-+-+-+-+\\n // The 's' bit indicates mono or stereo audio, with 0 indicating mono and 1 indicating stereo.\\n return packet.getUint8(0) & 0x4 ? 2 : 1;\\n }\\n /**\\n * Determine the size (in bytes) of an Opus frame.\\n *\\n * @param packet Opus packet.\\n * @param byteOffset Offset (from the start of the packet) to the byte containing the size information.\\n * @param remainingBytes Remaining number of bytes to parse from the Opus packet.\\n * @param sizeBytes Variable to store the parsed frame size (in bytes).\\n * @returns Number of bytes that were parsed to determine the frame size.\\n */\\n opusParseSize(packet, byteOffset, remainingBytes, sizeBytes) {\\n // See https://www.rfc-editor.org/rfc/rfc6716#section-3.2.1 for an explanation of how frame size is represented.\\n // If there are no remaining bytes to parse the size from, then the size cannot be determined.\\n if (remainingBytes < 1) {\\n sizeBytes[0] = -1;\\n return -1;\\n }\\n // If the first byte is in the range 0...251, then this value is the size of the frame.\\n else if (packet.getUint8(byteOffset) < 252) {\\n sizeBytes[0] = packet.getUint8(byteOffset);\\n return 1;\\n }\\n // If the first byte is in the range 252...255, a second byte is needed. If there is no second byte, then the size\\n // cannot be determined.\\n else if (remainingBytes < 2) {\\n sizeBytes[0] = -1;\\n return -1;\\n }\\n // The total size of the frame given two size bytes is:\\n // (4 * secondSizeByte) + firstSizeByte\\n else {\\n sizeBytes[0] = 4 * packet.getUint8(byteOffset + 1) + packet.getUint8(byteOffset);\\n return 2;\\n }\\n }\\n /**\\n * Parse binary data containing an Opus packet into one or more Opus frames.\\n *\\n * @param data Binary data containing an Opus packet to be parsed. The data should begin with the first byte (i.e the\\n * TOC byte) of an Opus packet. Note that the size of the data does not have to equal the size of the\\n * contained Opus packet.\\n * @param lenBytes Size of the data (in bytes).\\n * @param selfDelimited Indicates if the Opus packet is self-delimiting\\n * (https://www.rfc-editor.org/rfc/rfc6716#appendix-B).\\n * @param tocByte Optional variable to store the TOC (table of contents) byte.\\n * @param frameOffsets Optional variable to store the offsets (from the start of the data) to the first bytes of each\\n * Opus frame.\\n * @param frameSizes Required variable to store the sizes (in bytes) of each Opus frame.\\n * @param payloadOffset Optional variable to store the offset (from the start of the data) to the first byte of the\\n * payload.\\n * @param packetLenBytes Optional variable to store the length of the Opus packet (in bytes).\\n * @returns Number of Opus frames.\\n */\\n opusPacketParseImpl(data, lenBytes, selfDelimited, tocByte, frameOffsets, frameSizes, payloadOffset, packetLenBytes) {\\n if (!frameSizes || lenBytes < 0)\\n return this.OPUS_BAD_ARG;\\n if (lenBytes === 0)\\n return this.OPUS_INVALID_PACKET;\\n // The number of Opus frames in the packet.\\n let numFrames;\\n // Intermediate storage for the number of bytes parsed to determine the size of a frame.\\n let numBytesParsed;\\n // The number of the padding bytes (excluding the padding count bytes) in the packet.\\n let paddingBytes = 0;\\n // Indicates whether CBR (constant bitrate) framing is used.\\n let cbr = false;\\n // The TOC (table of contents) byte (https://www.rfc-editor.org/rfc/rfc6716#section-3.1).\\n const toc = data.getUint8(0);\\n // Store the TOC byte.\\n if (tocByte)\\n tocByte[0] = toc;\\n // The remaining number of bytes to parse from the packet. Note that the TOC byte has already been parsed, hence the\\n // minus 1.\\n let remainingBytes = lenBytes - 1;\\n // This keeps track of where we are in the packet. This starts at 1 since the TOC byte has already been read.\\n let byteOffset = 1;\\n // The size of the last Opus frame in bytes.\\n let lastSizeBytes = remainingBytes;\\n // Read the `c` bits (i.e. code bits) from the TOC byte.\\n switch (toc & 0x3) {\\n // A code 0 packet (https://www.rfc-editor.org/rfc/rfc6716#section-3.2.2) has one frame.\\n case 0:\\n numFrames = 1;\\n break;\\n // A code 1 packet (https://www.rfc-editor.org/rfc/rfc6716#section-3.2.3) has two CBR (constant bitrate) frames.\\n case 1:\\n numFrames = 2;\\n cbr = true;\\n if (!selfDelimited) {\\n // Undelimited code 1 packets must be an even number of data bytes, otherwise the packet is invalid.\\n if (remainingBytes & 0x1)\\n return this.OPUS_INVALID_PACKET;\\n // The sizes of both frames are equal (i.e. half of the number of data bytes).\\n lastSizeBytes = remainingBytes / 2;\\n // If `lastSizeBytes` is too large, we will catch it later.\\n frameSizes[0][0] = lastSizeBytes;\\n }\\n break;\\n // A code 2 packet (https://www.rfc-editor.org/rfc/rfc6716#section-3.2.4) has two VBR (variable bitrate) frames.\\n case 2:\\n numFrames = 2;\\n numBytesParsed = this.opusParseSize(data, byteOffset, remainingBytes, frameSizes[0]);\\n remainingBytes -= numBytesParsed;\\n // The parsed size of the first frame cannot be larger than the number of remaining bytes in the packet.\\n if (frameSizes[0][0] < 0 || frameSizes[0][0] > remainingBytes) {\\n return this.OPUS_INVALID_PACKET;\\n }\\n byteOffset += numBytesParsed;\\n // The size of the second frame is the remaining number of bytes after the first frame.\\n lastSizeBytes = remainingBytes - frameSizes[0][0];\\n break;\\n // A code 3 packet (https://www.rfc-editor.org/rfc/rfc6716#section-3.2.5) has multiple CBR/VBR frames (from 0 to\\n // 120 ms).\\n default:\\n // Code 3 packets must have at least 2 bytes (i.e. at least 1 byte after the TOC byte).\\n if (remainingBytes < 1)\\n return this.OPUS_INVALID_PACKET;\\n // Frame count byte format:\\n // 0\\n // 0 1 2 3 4 5 6 7\\n // +-+-+-+-+-+-+-+-+\\n // |v|p| M |\\n // +-+-+-+-+-+-+-+-+\\n //\\n // Read the frame count byte, which immediately follows the TOC byte.\\n const frameCountByte = data.getUint8(byteOffset++);\\n --remainingBytes;\\n // Read the 'M' bits of the frame count byte, which encode the number of frames.\\n numFrames = frameCountByte & 0x3f;\\n // The number of frames in a code 3 packet must not be 0.\\n if (numFrames <= 0)\\n return this.OPUS_INVALID_PACKET;\\n const samplesPerFrame = this.opusPacketGetSamplesPerFrame(data, 48000);\\n // A single frame can have at most 2880 samples, which happens in the case where 60ms of 48kHz audio is encoded\\n // per frame. A code 3 packet cannot contain more than 120ms of audio, so the total number of samples cannot\\n // exceed 2880 * 2 = 5760.\\n if (samplesPerFrame * numFrames > 5760)\\n return this.OPUS_INVALID_PACKET;\\n // Parse padding bytes if the 'p' bit is 1.\\n if (frameCountByte & 0x40) {\\n let paddingCountByte;\\n let numPaddingBytes;\\n // Remove padding bytes (including padding count bytes) from the remaining byte count.\\n do {\\n // Sanity check that there are enough bytes to parse and remove the padding.\\n if (remainingBytes <= 0)\\n return this.OPUS_INVALID_PACKET;\\n // Get the next padding count byte.\\n paddingCountByte = data.getUint8(byteOffset++);\\n --remainingBytes;\\n // If the padding count byte has a value in the range 0...254, then the total size of the padding is the\\n // value in the padding count byte.\\n //\\n // If the padding count byte has value 255, then the total size of the padding is 254 plus the value in the\\n // next padding count byte. Therefore, keep reading padding count bytes while the value is 255.\\n numPaddingBytes = paddingCountByte === 255 ? 254 : paddingCountByte;\\n remainingBytes -= numPaddingBytes;\\n paddingBytes += numPaddingBytes;\\n } while (paddingCountByte === 255);\\n }\\n // Sanity check that the remaining number of bytes is not negative after removing the padding.\\n if (remainingBytes < 0)\\n return this.OPUS_INVALID_PACKET;\\n // Read the 'v' bit (i.e. VBR bit).\\n cbr = !(frameCountByte & 0x80);\\n // VBR case\\n if (!cbr) {\\n lastSizeBytes = remainingBytes;\\n // Let M be the number of frames. There will be M - 1 frame length indicators (which can be 1 or 2 bytes)\\n // corresponding to the lengths of frames 0 to M - 2. The size of the last frame (i.e. frame M - 1) is the\\n // number of data bytes after the end of frame M - 2 and before the start of the padding bytes.\\n for (let i = 0; i < numFrames - 1; ++i) {\\n numBytesParsed = this.opusParseSize(data, byteOffset, remainingBytes, frameSizes[i]);\\n remainingBytes -= numBytesParsed;\\n // The remaining number of data bytes must be enough to contain each frame.\\n if (frameSizes[i][0] < 0 || frameSizes[i][0] > remainingBytes) {\\n return this.OPUS_INVALID_PACKET;\\n }\\n byteOffset += numBytesParsed;\\n lastSizeBytes -= numBytesParsed + frameSizes[i][0];\\n }\\n // Sanity check that the size of the last frame is not negative.\\n if (lastSizeBytes < 0)\\n return this.OPUS_INVALID_PACKET;\\n }\\n // CBR case\\n else if (!selfDelimited) {\\n // The size of each frame is the number of data bytes divided by the number of frames.\\n lastSizeBytes = Math.trunc(remainingBytes / numFrames);\\n // The number of data bytes must be a non-negative integer multiple of the number of frames.\\n if (lastSizeBytes * numFrames !== remainingBytes)\\n return this.OPUS_INVALID_PACKET;\\n // All frames have equal size in the undelimited CBR case.\\n for (let i = 0; i < numFrames - 1; ++i) {\\n frameSizes[i][0] = lastSizeBytes;\\n }\\n }\\n }\\n // Self-delimited framing uses an extra 1 or 2 bytes, immediately preceding the data bytes, to indicate either the\\n // size of the last frame (for code 0, code 2, and VBR code 3 packets) or the size of all the frames (for code 1 and\\n // CBR code 3 packets). See https://www.rfc-editor.org/rfc/rfc6716#appendix-B.\\n if (selfDelimited) {\\n // The extra frame size byte(s) will always indicate the size of the last frame.\\n numBytesParsed = this.opusParseSize(data, byteOffset, remainingBytes, frameSizes[numFrames - 1]);\\n remainingBytes -= numBytesParsed;\\n // There must be enough data bytes for the last frame.\\n if (frameSizes[numFrames - 1][0] < 0 || frameSizes[numFrames - 1][0] > remainingBytes) {\\n return this.OPUS_INVALID_PACKET;\\n }\\n byteOffset += numBytesParsed;\\n // For CBR packets, the sizes of all the frames are equal.\\n if (cbr) {\\n // There must be enough data bytes for all the frames.\\n if (frameSizes[numFrames - 1][0] * numFrames > remainingBytes) {\\n return this.OPUS_INVALID_PACKET;\\n }\\n for (let i = 0; i < numFrames - 1; ++i) {\\n frameSizes[i][0] = frameSizes[numFrames - 1][0];\\n }\\n }\\n // At this point, `lastSizeBytes` contains the size of the last frame plus the size of the extra frame size\\n // byte(s), so sanity check that `lastSizeBytes` is the upper bound for the size of the last frame.\\n else if (!(numBytesParsed + frameSizes[numFrames - 1][0] <= lastSizeBytes)) {\\n return this.OPUS_INVALID_PACKET;\\n }\\n }\\n // Undelimited case\\n else {\\n // Because the size of the last packet is not encoded explicitly, it is possible that the size of the last packet\\n // (or of all the packets, for the CBR case) is larger than maximum frame size.\\n if (lastSizeBytes > this.OPUS_MAX_FRAME_SIZE_BYTES)\\n return this.OPUS_INVALID_PACKET;\\n frameSizes[numFrames - 1][0] = lastSizeBytes;\\n }\\n // Store the offset to the start of the payload.\\n if (payloadOffset)\\n payloadOffset[0] = byteOffset;\\n // Store the offsets to the start of each frame.\\n for (let i = 0; i < numFrames; ++i) {\\n if (frameOffsets)\\n frameOffsets[i][0] = byteOffset;\\n byteOffset += frameSizes[i][0];\\n }\\n // Store the length of the Opus packet.\\n if (packetLenBytes)\\n packetLenBytes[0] = byteOffset + paddingBytes;\\n return numFrames;\\n }\\n /**\\n * Parse a single undelimited Opus packet into one or more Opus frames.\\n *\\n * @param packet Opus packet to be parsed.\\n * @param lenBytes Size of the packet (in bytes).\\n * @param tocByte Optional variable to store the TOC (table of contents) byte.\\n * @param frameOffsets Optional variable to store the offsets (from the start of the packet) to the first bytes of\\n * each Opus frame.\\n * @param frameSizes Required variable to store the sizes (in bytes) of each Opus frame.\\n * @param payloadOffset Optional variable to store the offset (from the start of the packet) to the first byte of the\\n * payload.\\n * @returns Number of Opus frames.\\n */\\n opusPacketParse(packet, lenBytes, tocByte, frameOffsets, frameSizes, payloadOffset) {\\n return this.opusPacketParseImpl(packet, lenBytes, \\n /* selfDelimited */ false, tocByte, frameOffsets, frameSizes, payloadOffset, null);\\n }\\n /**\\n * This function returns the SILK VAD (voice activity detection) information encoded in the Opus packet. For CELT-only\\n * packets that do not have VAD information, it returns -1.\\n *\\n * @param packet Opus packet.\\n * @param lenBytes Size of the packet (in bytes).\\n * @returns 0: no frame had the VAD flag set.\\n * 1: at least one frame had the VAD flag set.\\n * -1: VAD status could not be determined.\\n */\\n opusPacketHasVoiceActivity(packet, lenBytes) {\\n if (!packet || lenBytes <= 0)\\n return 0;\\n // In CELT-only mode, we can not determine whether there is VAD.\\n if (this.opusPacketIsCeltOnly(packet))\\n return -1;\\n const numSilkFrames = this.opusNumSilkFrames(packet);\\n // It is not possible for `opusNumSilkFrames()` to return 0, so we ignore the next sanity check for test coverage.\\n /* istanbul ignore next */\\n if (numSilkFrames === 0)\\n return -1;\\n const opusFrameOffsets = new Array(this.OPUS_MAX_OPUS_FRAMES);\\n const opusFrameSizes = new Array(this.OPUS_MAX_OPUS_FRAMES);\\n for (let i = 0; i < this.OPUS_MAX_OPUS_FRAMES; ++i) {\\n opusFrameOffsets[i] = [undefined];\\n opusFrameSizes[i] = [undefined];\\n }\\n // Parse packet to get the Opus frames.\\n const numOpusFrames = this.opusPacketParse(packet, lenBytes, null, opusFrameOffsets, opusFrameSizes, null);\\n // VAD status cannot be determined for invalid packets.\\n if (numOpusFrames < 0)\\n return -1;\\n // Iterate over all Opus frames, which may contain multiple SILK frames, to determine the VAD status.\\n for (let i = 0; i < numOpusFrames; ++i) {\\n if (opusFrameSizes[i][0] < 1)\\n continue;\\n // LP layer header bits format (https://www.rfc-editor.org/rfc/rfc6716#section-4.2.3):\\n //\\n // Mono case:\\n // +-----------------+----------+\\n // | 1 to 3 VAD bits | LBRR bit |\\n // +-----------------+----------+\\n //\\n // Stereo case:\\n // +---------------------+--------------+----------------------+---------------+\\n // | 1 to 3 mid VAD bits | mid LBRR bit | 1 to 3 side VAD bits | side LBRR bit |\\n // +---------------------+--------------+----------------------+---------------+\\n // The upper 1 to 3 bits (dependent on the number of SILK frames) of the LP layer contain VAD bits. If any of\\n // these VAD bits are 1, then voice activity is present.\\n if (packet.getUint8(opusFrameOffsets[i][0]) >> (8 - numSilkFrames))\\n return 1;\\n // In the stereo case, there is a second set of 1 to 3 VAD bits, so also check these VAD bits.\\n const channels = this.opusPacketGetNumChannels(packet);\\n if (channels === 2 &&\\n (packet.getUint8(opusFrameOffsets[i][0]) << (numSilkFrames + 1)) >> (8 - numSilkFrames)) {\\n return 1;\\n }\\n }\\n // No voice activity was detected.\\n return 0;\\n }\\n /**\\n * This method is based on Definition of the Opus Audio Codec\\n * (https://tools.ietf.org/html/rfc6716). Basically, this method is based on\\n * parsing the LP layer of an Opus packet, particularly the LBRR flag.\\n *\\n * @param packet Opus packet.\\n * @param lenBytes Size of the packet (in bytes).\\n * @returns true: packet has fec encoding about previous packet.\\n * false: no fec encoding present.\\n */\\n opusPacketHasFec(packet, lenBytes) {\\n if (!packet || lenBytes <= 0)\\n return false;\\n // In CELT-only mode, packets should not have FEC.\\n if (this.opusPacketIsCeltOnly(packet))\\n return false;\\n const opusFrameOffsets = new Array(this.OPUS_MAX_OPUS_FRAMES);\\n const opusFrameSizes = new Array(this.OPUS_MAX_OPUS_FRAMES);\\n for (let i = 0; i < this.OPUS_MAX_OPUS_FRAMES; ++i) {\\n opusFrameOffsets[i] = [undefined];\\n opusFrameSizes[i] = [undefined];\\n }\\n // Parse packet to get the Opus frames.\\n const numOpusFrames = this.opusPacketParse(packet, lenBytes, null, opusFrameOffsets, opusFrameSizes, null);\\n if (numOpusFrames < 0)\\n return false;\\n /* istanbul ignore next */\\n if (opusFrameSizes[0][0] <= 1)\\n return false;\\n const numSilkFrames = this.opusNumSilkFrames(packet);\\n /* istanbul ignore next */\\n if (numSilkFrames === 0)\\n return false;\\n const channels = this.opusPacketGetNumChannels(packet);\\n /* istanbul ignore next */\\n if (channels !== 1 && channels !== 2)\\n return false;\\n // A frame starts with the LP layer. The LP layer begins with two to eight\\n // header bits.These consist of one VAD bit per SILK frame (up to 3),\\n // followed by a single flag indicating the presence of LBRR frames.\\n // For a stereo packet, these first flags correspond to the mid channel, and\\n // a second set of flags is included for the side channel. Because these are\\n // the first symbols decoded by the range coder and because they are coded\\n // as binary values with uniform probability, they can be extracted directly\\n // from the most significant bits of the first byte of compressed data.\\n for (let i = 0; i < channels; i++) {\\n if (packet.getUint8(opusFrameOffsets[0][0]) & (0x80 >> ((i + 1) * (numSilkFrames + 1) - 1)))\\n return true;\\n }\\n return false;\\n }\\n}\\nRedundantAudioEncoder.shouldLog = true;\\nRedundantAudioEncoder.shouldReportStats = true;\\nRedundantAudioEncoder.initializeWorker();\\n\";\n\nexport default RedundantAudioEncoderWorkerCode;\n","'use strict';\n\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar callBound = require('call-bound');\n\nvar $toString = callBound('Object.prototype.toString');\n\n/** @type {import('.')} */\nvar isStandardArguments = function isArguments(value) {\n\tif (\n\t\thasToStringTag\n\t\t&& value\n\t\t&& typeof value === 'object'\n\t\t&& Symbol.toStringTag in value\n\t) {\n\t\treturn false;\n\t}\n\treturn $toString(value) === '[object Arguments]';\n};\n\n/** @type {import('.')} */\nvar isLegacyArguments = function isArguments(value) {\n\tif (isStandardArguments(value)) {\n\t\treturn true;\n\t}\n\treturn value !== null\n\t\t&& typeof value === 'object'\n\t\t&& 'length' in value\n\t\t&& typeof value.length === 'number'\n\t\t&& value.length >= 0\n\t\t&& $toString(value) !== '[object Array]'\n\t\t&& 'callee' in value\n\t\t&& $toString(value.callee) === '[object Function]';\n};\n\nvar supportsStandardArguments = (function () {\n\treturn isStandardArguments(arguments);\n}());\n\n// @ts-expect-error TODO make this not error\nisStandardArguments.isLegacyArguments = isLegacyArguments; // for tests\n\n/** @type {import('.')} */\nmodule.exports = supportsStandardArguments ? isStandardArguments : isLegacyArguments;\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\n/**\n * [[TargetDisplaySize]] represents the max resolution that a video stream can have when simulcast is enabled in priority based downlink policy.\n * If there is only one stream being sent, then this field will get ignored. Its values currently parallel [[SimulcastLayers]].\n */\nexport enum TargetDisplaySize {\n /**\n * Low resolution video stream.\n */\n Low,\n\n /**\n * Medium resolution video stream.\n */\n Medium,\n\n /**\n * High resolution video stream.\n */\n High,\n\n /**\n * Maximum resolution video stream.\n */\n Maximum,\n}\n\nexport default TargetDisplaySize;\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nexport enum VideoLogEvent {\n InputAttached,\n SendingFailed,\n SendingSuccess,\n}\n\nexport default VideoLogEvent;\n","function AcceptorStateMachine(states, state) {\n this.currentState = state || null;\n this.states = states || {};\n}\n\nAcceptorStateMachine.prototype.runTo = function runTo(finalState, done, bindObject, inputError) {\n if (typeof finalState === 'function') {\n inputError = bindObject; bindObject = done;\n done = finalState; finalState = null;\n }\n\n var self = this;\n var state = self.states[self.currentState];\n state.fn.call(bindObject || self, inputError, function(err) {\n if (err) {\n if (state.fail) self.currentState = state.fail;\n else return done ? done.call(bindObject, err) : null;\n } else {\n if (state.accept) self.currentState = state.accept;\n else return done ? done.call(bindObject) : null;\n }\n if (self.currentState === finalState) {\n return done ? done.call(bindObject, err) : null;\n }\n\n self.runTo(finalState, done, bindObject, err);\n });\n};\n\nAcceptorStateMachine.prototype.addState = function addState(name, acceptState, failState, fn) {\n if (typeof acceptState === 'function') {\n fn = acceptState; acceptState = null; failState = null;\n } else if (typeof failState === 'function') {\n fn = failState; failState = null;\n }\n\n if (!this.currentState) this.currentState = name;\n this.states[name] = { accept: acceptState, fail: failState, fn: fn };\n return this;\n};\n\n/**\n * @api private\n */\nmodule.exports = AcceptorStateMachine;\n","'use strict';\n\nvar inspect = require('object-inspect');\n\nvar $TypeError = require('es-errors/type');\n\n/*\n* This function traverses the list returning the node corresponding to the given key.\n*\n* That node is also moved to the head of the list, so that if it's accessed again we don't need to traverse the whole list.\n* By doing so, all the recently used nodes can be accessed relatively quickly.\n*/\n/** @type {import('./list.d.ts').listGetNode} */\n// eslint-disable-next-line consistent-return\nvar listGetNode = function (list, key, isDelete) {\n\t/** @type {typeof list | NonNullable<(typeof list)['next']>} */\n\tvar prev = list;\n\t/** @type {(typeof list)['next']} */\n\tvar curr;\n\t// eslint-disable-next-line eqeqeq\n\tfor (; (curr = prev.next) != null; prev = curr) {\n\t\tif (curr.key === key) {\n\t\t\tprev.next = curr.next;\n\t\t\tif (!isDelete) {\n\t\t\t\t// eslint-disable-next-line no-extra-parens\n\t\t\t\tcurr.next = /** @type {NonNullable} */ (list.next);\n\t\t\t\tlist.next = curr; // eslint-disable-line no-param-reassign\n\t\t\t}\n\t\t\treturn curr;\n\t\t}\n\t}\n};\n\n/** @type {import('./list.d.ts').listGet} */\nvar listGet = function (objects, key) {\n\tif (!objects) {\n\t\treturn void undefined;\n\t}\n\tvar node = listGetNode(objects, key);\n\treturn node && node.value;\n};\n/** @type {import('./list.d.ts').listSet} */\nvar listSet = function (objects, key, value) {\n\tvar node = listGetNode(objects, key);\n\tif (node) {\n\t\tnode.value = value;\n\t} else {\n\t\t// Prepend the new node to the beginning of the list\n\t\tobjects.next = /** @type {import('./list.d.ts').ListNode} */ ({ // eslint-disable-line no-param-reassign, no-extra-parens\n\t\t\tkey: key,\n\t\t\tnext: objects.next,\n\t\t\tvalue: value\n\t\t});\n\t}\n};\n/** @type {import('./list.d.ts').listHas} */\nvar listHas = function (objects, key) {\n\tif (!objects) {\n\t\treturn false;\n\t}\n\treturn !!listGetNode(objects, key);\n};\n/** @type {import('./list.d.ts').listDelete} */\n// eslint-disable-next-line consistent-return\nvar listDelete = function (objects, key) {\n\tif (objects) {\n\t\treturn listGetNode(objects, key, true);\n\t}\n};\n\n/** @type {import('.')} */\nmodule.exports = function getSideChannelList() {\n\t/** @typedef {ReturnType} Channel */\n\t/** @typedef {Parameters[0]} K */\n\t/** @typedef {Parameters[1]} V */\n\n\t/** @type {import('./list.d.ts').RootNode | undefined} */ var $o;\n\n\t/** @type {Channel} */\n\tvar channel = {\n\t\tassert: function (key) {\n\t\t\tif (!channel.has(key)) {\n\t\t\t\tthrow new $TypeError('Side channel does not contain ' + inspect(key));\n\t\t\t}\n\t\t},\n\t\t'delete': function (key) {\n\t\t\tvar root = $o && $o.next;\n\t\t\tvar deletedNode = listDelete($o, key);\n\t\t\tif (deletedNode && root && root === deletedNode) {\n\t\t\t\t$o = void undefined;\n\t\t\t}\n\t\t\treturn !!deletedNode;\n\t\t},\n\t\tget: function (key) {\n\t\t\treturn listGet($o, key);\n\t\t},\n\t\thas: function (key) {\n\t\t\treturn listHas($o, key);\n\t\t},\n\t\tset: function (key, value) {\n\t\t\tif (!$o) {\n\t\t\t\t// Initialize the linked list as an empty node, so that we don't have to special-case handling of the first node: we can always refer to it as (previous node).next, instead of something like (list).head\n\t\t\t\t$o = {\n\t\t\t\t\tnext: void undefined\n\t\t\t\t};\n\t\t\t}\n\t\t\t// eslint-disable-next-line no-extra-parens\n\t\t\tlistSet(/** @type {NonNullable} */ ($o), key, value);\n\t\t}\n\t};\n\t// @ts-expect-error TODO: figure out why this is erroring\n\treturn channel;\n};\n","var AWS = require('../core');\nvar STS = require('../../clients/sts');\n\n/**\n * Represents credentials retrieved from STS SAML support.\n *\n * By default this provider gets credentials using the\n * {AWS.STS.assumeRoleWithSAML} service operation. This operation\n * requires a `RoleArn` containing the ARN of the IAM trust policy for the\n * application for which credentials will be given, as well as a `PrincipalArn`\n * representing the ARN for the SAML identity provider. In addition, the\n * `SAMLAssertion` must be set to the token provided by the identity\n * provider. See {constructor} for an example on creating a credentials\n * object with proper `RoleArn`, `PrincipalArn`, and `SAMLAssertion` values.\n *\n * ## Refreshing Credentials from Identity Service\n *\n * In addition to AWS credentials expiring after a given amount of time, the\n * login token from the identity provider will also expire. Once this token\n * expires, it will not be usable to refresh AWS credentials, and another\n * token will be needed. The SDK does not manage refreshing of the token value,\n * but this can be done through a \"refresh token\" supported by most identity\n * providers. Consult the documentation for the identity provider for refreshing\n * tokens. Once the refreshed token is acquired, you should make sure to update\n * this new token in the credentials object's {params} property. The following\n * code will update the SAMLAssertion, assuming you have retrieved an updated\n * token from the identity provider:\n *\n * ```javascript\n * AWS.config.credentials.params.SAMLAssertion = updatedToken;\n * ```\n *\n * Future calls to `credentials.refresh()` will now use the new token.\n *\n * @!attribute params\n * @return [map] the map of params passed to\n * {AWS.STS.assumeRoleWithSAML}. To update the token, set the\n * `params.SAMLAssertion` property.\n */\nAWS.SAMLCredentials = AWS.util.inherit(AWS.Credentials, {\n /**\n * Creates a new credentials object.\n * @param (see AWS.STS.assumeRoleWithSAML)\n * @example Creating a new credentials object\n * AWS.config.credentials = new AWS.SAMLCredentials({\n * RoleArn: 'arn:aws:iam::1234567890:role/SAMLRole',\n * PrincipalArn: 'arn:aws:iam::1234567890:role/SAMLPrincipal',\n * SAMLAssertion: 'base64-token', // base64-encoded token from IdP\n * });\n * @see AWS.STS.assumeRoleWithSAML\n */\n constructor: function SAMLCredentials(params) {\n AWS.Credentials.call(this);\n this.expired = true;\n this.params = params;\n },\n\n /**\n * Refreshes credentials using {AWS.STS.assumeRoleWithSAML}\n *\n * @callback callback function(err)\n * Called when the STS service responds (or fails). When\n * this callback is called with no error, it means that the credentials\n * information has been loaded into the object (as the `accessKeyId`,\n * `secretAccessKey`, and `sessionToken` properties).\n * @param err [Error] if an error occurred, this value will be filled\n * @see get\n */\n refresh: function refresh(callback) {\n this.coalesceRefresh(callback || AWS.util.fn.callback);\n },\n\n /**\n * @api private\n */\n load: function load(callback) {\n var self = this;\n self.createClients();\n self.service.assumeRoleWithSAML(function (err, data) {\n if (!err) {\n self.service.credentialsFrom(data, self);\n }\n callback(err);\n });\n },\n\n /**\n * @api private\n */\n createClients: function() {\n this.service = this.service || new STS({params: this.params});\n }\n\n});\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\n/**\n * [[SessionStateControllerAction]] is a state-changing action to perform.\n */\nexport enum SessionStateControllerAction {\n Connect,\n FinishConnecting,\n Update,\n FinishUpdating,\n Reconnect,\n Disconnect,\n Fail,\n FinishDisconnecting,\n}\n\nexport default SessionStateControllerAction;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['comprehend'] = {};\nAWS.Comprehend = Service.defineService('comprehend', ['2017-11-27']);\nObject.defineProperty(apiLoader.services['comprehend'], '2017-11-27', {\n get: function get() {\n var model = require('../apis/comprehend-2017-11-27.min.json');\n model.paginators = require('../apis/comprehend-2017-11-27.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.Comprehend;\n","/**\n * Cipher base API.\n *\n * @author Dave Longley\n *\n * Copyright (c) 2010-2014 Digital Bazaar, Inc.\n */\nvar forge = require('./forge');\nrequire('./util');\n\nmodule.exports = forge.cipher = forge.cipher || {};\n\n// registered algorithms\nforge.cipher.algorithms = forge.cipher.algorithms || {};\n\n/**\n * Creates a cipher object that can be used to encrypt data using the given\n * algorithm and key. The algorithm may be provided as a string value for a\n * previously registered algorithm or it may be given as a cipher algorithm\n * API object.\n *\n * @param algorithm the algorithm to use, either a string or an algorithm API\n * object.\n * @param key the key to use, as a binary-encoded string of bytes or a\n * byte buffer.\n *\n * @return the cipher.\n */\nforge.cipher.createCipher = function(algorithm, key) {\n var api = algorithm;\n if(typeof api === 'string') {\n api = forge.cipher.getAlgorithm(api);\n if(api) {\n api = api();\n }\n }\n if(!api) {\n throw new Error('Unsupported algorithm: ' + algorithm);\n }\n\n // assume block cipher\n return new forge.cipher.BlockCipher({\n algorithm: api,\n key: key,\n decrypt: false\n });\n};\n\n/**\n * Creates a decipher object that can be used to decrypt data using the given\n * algorithm and key. The algorithm may be provided as a string value for a\n * previously registered algorithm or it may be given as a cipher algorithm\n * API object.\n *\n * @param algorithm the algorithm to use, either a string or an algorithm API\n * object.\n * @param key the key to use, as a binary-encoded string of bytes or a\n * byte buffer.\n *\n * @return the cipher.\n */\nforge.cipher.createDecipher = function(algorithm, key) {\n var api = algorithm;\n if(typeof api === 'string') {\n api = forge.cipher.getAlgorithm(api);\n if(api) {\n api = api();\n }\n }\n if(!api) {\n throw new Error('Unsupported algorithm: ' + algorithm);\n }\n\n // assume block cipher\n return new forge.cipher.BlockCipher({\n algorithm: api,\n key: key,\n decrypt: true\n });\n};\n\n/**\n * Registers an algorithm by name. If the name was already registered, the\n * algorithm API object will be overwritten.\n *\n * @param name the name of the algorithm.\n * @param algorithm the algorithm API object.\n */\nforge.cipher.registerAlgorithm = function(name, algorithm) {\n name = name.toUpperCase();\n forge.cipher.algorithms[name] = algorithm;\n};\n\n/**\n * Gets a registered algorithm by name.\n *\n * @param name the name of the algorithm.\n *\n * @return the algorithm, if found, null if not.\n */\nforge.cipher.getAlgorithm = function(name) {\n name = name.toUpperCase();\n if(name in forge.cipher.algorithms) {\n return forge.cipher.algorithms[name];\n }\n return null;\n};\n\nvar BlockCipher = forge.cipher.BlockCipher = function(options) {\n this.algorithm = options.algorithm;\n this.mode = this.algorithm.mode;\n this.blockSize = this.mode.blockSize;\n this._finish = false;\n this._input = null;\n this.output = null;\n this._op = options.decrypt ? this.mode.decrypt : this.mode.encrypt;\n this._decrypt = options.decrypt;\n this.algorithm.initialize(options);\n};\n\n/**\n * Starts or restarts the encryption or decryption process, whichever\n * was previously configured.\n *\n * For non-GCM mode, the IV may be a binary-encoded string of bytes, an array\n * of bytes, a byte buffer, or an array of 32-bit integers. If the IV is in\n * bytes, then it must be Nb (16) bytes in length. If the IV is given in as\n * 32-bit integers, then it must be 4 integers long.\n *\n * Note: an IV is not required or used in ECB mode.\n *\n * For GCM-mode, the IV must be given as a binary-encoded string of bytes or\n * a byte buffer. The number of bytes should be 12 (96 bits) as recommended\n * by NIST SP-800-38D but another length may be given.\n *\n * @param options the options to use:\n * iv the initialization vector to use as a binary-encoded string of\n * bytes, null to reuse the last ciphered block from a previous\n * update() (this \"residue\" method is for legacy support only).\n * additionalData additional authentication data as a binary-encoded\n * string of bytes, for 'GCM' mode, (default: none).\n * tagLength desired length of authentication tag, in bits, for\n * 'GCM' mode (0-128, default: 128).\n * tag the authentication tag to check if decrypting, as a\n * binary-encoded string of bytes.\n * output the output the buffer to write to, null to create one.\n */\nBlockCipher.prototype.start = function(options) {\n options = options || {};\n var opts = {};\n for(var key in options) {\n opts[key] = options[key];\n }\n opts.decrypt = this._decrypt;\n this._finish = false;\n this._input = forge.util.createBuffer();\n this.output = options.output || forge.util.createBuffer();\n this.mode.start(opts);\n};\n\n/**\n * Updates the next block according to the cipher mode.\n *\n * @param input the buffer to read from.\n */\nBlockCipher.prototype.update = function(input) {\n if(input) {\n // input given, so empty it into the input buffer\n this._input.putBuffer(input);\n }\n\n // do cipher operation until it needs more input and not finished\n while(!this._op.call(this.mode, this._input, this.output, this._finish) &&\n !this._finish) {}\n\n // free consumed memory from input buffer\n this._input.compact();\n};\n\n/**\n * Finishes encrypting or decrypting.\n *\n * @param pad a padding function to use in CBC mode, null for default,\n * signature(blockSize, buffer, decrypt).\n *\n * @return true if successful, false on error.\n */\nBlockCipher.prototype.finish = function(pad) {\n // backwards-compatibility w/deprecated padding API\n // Note: will overwrite padding functions even after another start() call\n if(pad && (this.mode.name === 'ECB' || this.mode.name === 'CBC')) {\n this.mode.pad = function(input) {\n return pad(this.blockSize, input, false);\n };\n this.mode.unpad = function(output) {\n return pad(this.blockSize, output, true);\n };\n }\n\n // build options for padding and afterFinish functions\n var options = {};\n options.decrypt = this._decrypt;\n\n // get # of bytes that won't fill a block\n options.overflow = this._input.length() % this.blockSize;\n\n if(!this._decrypt && this.mode.pad) {\n if(!this.mode.pad(this._input, options)) {\n return false;\n }\n }\n\n // do final update\n this._finish = true;\n this.update();\n\n if(this._decrypt && this.mode.unpad) {\n if(!this.mode.unpad(this.output, options)) {\n return false;\n }\n }\n\n if(this.mode.afterFinish) {\n if(!this.mode.afterFinish(this.output, options)) {\n return false;\n }\n }\n\n return true;\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { MeetingSessionCredentials } from '..';\nimport DefaultBrowserBehavior from '../browserbehavior/DefaultBrowserBehavior';\nimport Logger from '../logger/Logger';\nimport TimeoutScheduler from '../scheduler/TimeoutScheduler';\nimport SignalingClientObserver from '../signalingclientobserver/SignalingClientObserver';\nimport {\n ISdkClientDetails,\n SdkAudioControlFrame,\n SdkClientDetails,\n SdkClientMetricFrame,\n SdkDataMessageFrame,\n SdkJoinFlags,\n SdkJoinFrame,\n SdkLeaveFrame,\n SdkMeetingSessionCredentials,\n SdkPauseResumeFrame,\n SdkPingPongFrame,\n SdkPrimaryMeetingJoinFrame,\n SdkPrimaryMeetingLeaveFrame,\n SdkRemoteVideoUpdateFrame,\n SdkSignalFrame,\n SdkStreamDescriptor,\n SdkStreamMediaType,\n SdkStreamServiceType,\n SdkSubscribeFrame,\n SdkVideoQualityAdaptationPreference,\n SdkVideoSubscriptionConfiguration,\n} from '../signalingprotocol/SignalingProtocol.js';\nimport { getFormattedOffset, getRandomValues } from '../utils/Utils';\nimport Versioning from '../versioning/Versioning';\nimport VideoQualityAdaptationPreference from '../videodownlinkbandwidthpolicy/VideoQualityAdaptationPreference';\nimport WebSocketAdapter from '../websocketadapter/WebSocketAdapter';\nimport WebSocketReadyState from '../websocketadapter/WebSocketReadyState';\nimport { convertServerSideNetworkAdaptionEnumToSignaled } from './ServerSideNetworkAdaption';\nimport SignalingClient from './SignalingClient';\nimport SignalingClientConnectionRequest from './SignalingClientConnectionRequest';\nimport SignalingClientEvent from './SignalingClientEvent';\nimport SignalingClientEventType from './SignalingClientEventType';\nimport SignalingClientJoin from './SignalingClientJoin';\nimport SignalingClientSubscribe from './SignalingClientSubscribe';\nimport SignalingClientVideoSubscriptionConfiguration from './SignalingClientVideoSubscriptionConfiguration';\n\n/**\n * [[DefaultSignalingClient]] implements the SignalingClient interface.\n */\nexport default class DefaultSignalingClient implements SignalingClient {\n private static FRAME_TYPE_RTC: number = 0x5;\n private static CLOSE_EVENT_TIMEOUT_MS: number = 2000;\n private static CLIENT_SUPPORTS_COMPRESSION: boolean = true;\n\n private observerQueue: Set;\n private wasOpened: boolean;\n private isClosing: boolean;\n private connectionRequestQueue: SignalingClientConnectionRequest[];\n private unloadHandler: () => void | null = null;\n private audioSessionId: number;\n\n constructor(private webSocket: WebSocketAdapter, private logger: Logger) {\n this.observerQueue = new Set();\n this.connectionRequestQueue = [];\n this.resetConnection();\n this.logger.debug(() => 'signaling client init');\n this.audioSessionId = this.generateNewAudioSessionId();\n }\n\n registerObserver(observer: SignalingClientObserver): void {\n this.logger.debug(() => 'registering signaling client observer');\n this.observerQueue.add(observer);\n }\n\n removeObserver(observer: SignalingClientObserver): void {\n this.logger.debug(() => 'removing signaling client observer');\n this.observerQueue.delete(observer);\n }\n\n openConnection(request: SignalingClientConnectionRequest): void {\n this.logger.info('adding connection request to queue: ' + request.url());\n this.connectionRequestQueue.push(request);\n this.closeConnection();\n }\n\n pingPong(pingPongFrame: SdkPingPongFrame): number {\n this.logger.debug(() => 'sending ping');\n const message = SdkSignalFrame.create();\n message.type = SdkSignalFrame.Type.PING_PONG;\n message.pingPong = pingPongFrame;\n this.sendMessage(message);\n return message.timestampMs as number;\n }\n\n join(settings: SignalingClientJoin): void {\n this.logger.info('sending join');\n const joinFrame = SdkJoinFrame.create();\n joinFrame.protocolVersion = 2;\n joinFrame.flags = SdkJoinFlags.HAS_STREAM_UPDATE;\n const browserBehavior = new DefaultBrowserBehavior();\n const sdkClientDetails: ISdkClientDetails = {\n platformName: browserBehavior.name(),\n platformVersion: browserBehavior.version(),\n clientSource: Versioning.sdkName,\n chimeSdkVersion: Versioning.sdkVersion,\n clientUtcOffset: getFormattedOffset(new Date().getTimezoneOffset()),\n };\n if (settings.applicationMetadata) {\n const { appName, appVersion } = settings.applicationMetadata;\n sdkClientDetails.appName = appName;\n sdkClientDetails.appVersion = appVersion;\n }\n joinFrame.clientDetails = SdkClientDetails.create(sdkClientDetails);\n joinFrame.audioSessionId = this.audioSessionId;\n joinFrame.wantsCompressedSdp = DefaultSignalingClient.CLIENT_SUPPORTS_COMPRESSION;\n joinFrame.disablePeriodicKeyframeRequestOnContentSender =\n settings.disablePeriodicKeyframeRequestOnContentSender;\n joinFrame.serverSideNetworkAdaption = convertServerSideNetworkAdaptionEnumToSignaled(\n settings.serverSideNetworkAdaption\n );\n joinFrame.supportedServerSideNetworkAdaptions = settings.supportedServerSideNetworkAdaptions.map(\n convertServerSideNetworkAdaptionEnumToSignaled\n );\n joinFrame.wantsAllTemporalLayersInIndex = settings.wantsAllTemporalLayersInIndex;\n const message = SdkSignalFrame.create();\n message.type = SdkSignalFrame.Type.JOIN;\n message.join = joinFrame;\n this.sendMessage(message);\n }\n\n subscribe(settings: SignalingClientSubscribe): void {\n const subscribeFrame = SdkSubscribeFrame.create();\n subscribeFrame.sendStreams = [];\n subscribeFrame.sdpOffer = settings.sdpOffer;\n if (settings.connectionTypeHasVideo) {\n subscribeFrame.receiveStreamIds = settings.receiveStreamIds;\n }\n\n if (settings.audioHost) {\n subscribeFrame.audioCheckin = settings.audioCheckin;\n subscribeFrame.audioHost = settings.audioHost;\n subscribeFrame.audioMuted = settings.audioMuted;\n if (!settings.audioCheckin) {\n const audioStream = SdkStreamDescriptor.create();\n audioStream.mediaType = SdkStreamMediaType.AUDIO;\n audioStream.trackLabel = 'AmazonChimeExpressAudio';\n audioStream.attendeeId = settings.attendeeId;\n audioStream.streamId = 1;\n audioStream.groupId = 1;\n audioStream.framerate = 15;\n audioStream.maxBitrateKbps = 600;\n audioStream.avgBitrateBps = 400000;\n subscribeFrame.sendStreams.push(audioStream);\n }\n }\n subscribeFrame.compressedSdpOffer = settings.compressedSdpOffer;\n\n subscribeFrame.duplex = SdkStreamServiceType.RX;\n if (settings.localVideoEnabled) {\n subscribeFrame.duplex = SdkStreamServiceType.DUPLEX;\n for (let i = 0; i < settings.videoStreamDescriptions.length; i++) {\n // Non-simulcast use DefaultVideoStreamIndex.localStreamDescriptions\n // which is the exact old behavior\n const streamDescription = settings.videoStreamDescriptions[i].clone();\n streamDescription.attendeeId = settings.attendeeId;\n subscribeFrame.sendStreams.push(streamDescription.toStreamDescriptor());\n }\n }\n\n if (settings.videoSubscriptionConfiguration.length > 0) {\n subscribeFrame.videoSubscriptionConfiguration = settings.videoSubscriptionConfiguration.map(\n this.convertSignalingClientVideoSubscriptionConfiguration\n );\n }\n const message = SdkSignalFrame.create();\n message.type = SdkSignalFrame.Type.SUBSCRIBE;\n message.sub = subscribeFrame;\n this.sendMessage(message);\n }\n\n remoteVideoUpdate(\n addedOrUpdated: SignalingClientVideoSubscriptionConfiguration[],\n removed: string[]\n ): void {\n const remoteVideoUpdate = SdkRemoteVideoUpdateFrame.create();\n remoteVideoUpdate.addedOrUpdatedVideoSubscriptions = addedOrUpdated.map(\n this.convertSignalingClientVideoSubscriptionConfiguration\n );\n remoteVideoUpdate.removedVideoSubscriptionMids = removed;\n\n const message = SdkSignalFrame.create();\n message.type = SdkSignalFrame.Type.REMOTE_VIDEO_UPDATE;\n message.remoteVideoUpdate = remoteVideoUpdate;\n this.sendMessage(message);\n }\n\n private convertSignalingClientVideoSubscriptionConfiguration(\n config: SignalingClientVideoSubscriptionConfiguration\n ): SdkVideoSubscriptionConfiguration {\n const signalConfig = new SdkVideoSubscriptionConfiguration();\n signalConfig.mid = config.mid;\n signalConfig.attendeeId = config.attendeeId;\n signalConfig.streamId = config.streamId;\n signalConfig.groupId = config.groupId;\n signalConfig.priority = config.priority;\n signalConfig.targetBitrateKbps = config.targetBitrateKbps;\n switch (config.qualityAdaptationPreference) {\n case VideoQualityAdaptationPreference.Balanced:\n signalConfig.qualityAdaptationPreference = SdkVideoQualityAdaptationPreference.BALANCED;\n break;\n case VideoQualityAdaptationPreference.MaintainFramerate:\n signalConfig.qualityAdaptationPreference =\n SdkVideoQualityAdaptationPreference.MAINTAIN_FRAMERATE;\n break;\n case VideoQualityAdaptationPreference.MaintainResolution:\n signalConfig.qualityAdaptationPreference =\n SdkVideoQualityAdaptationPreference.MAINTAIN_RESOLUTION;\n break;\n default:\n signalConfig.qualityAdaptationPreference = SdkVideoQualityAdaptationPreference.BALANCED;\n }\n\n return signalConfig;\n }\n\n leave(): void {\n const message = SdkSignalFrame.create();\n message.type = SdkSignalFrame.Type.LEAVE;\n message.leave = SdkLeaveFrame.create();\n this.sendMessage(message);\n this.logger.debug(() => {\n return 'sent leave';\n });\n }\n\n sendClientMetrics(clientMetricFrame: SdkClientMetricFrame): void {\n const message = SdkSignalFrame.create();\n message.type = SdkSignalFrame.Type.CLIENT_METRIC;\n message.clientMetric = clientMetricFrame;\n this.sendMessage(message);\n }\n\n sendDataMessage(messageFrame: SdkDataMessageFrame): void {\n const message = SdkSignalFrame.create();\n message.type = SdkSignalFrame.Type.DATA_MESSAGE;\n message.dataMessage = messageFrame;\n this.sendMessage(message);\n }\n\n closeConnection(): void {\n if (\n this.webSocket.readyState() !== WebSocketReadyState.None &&\n this.webSocket.readyState() !== WebSocketReadyState.Closed\n ) {\n this.isClosing = true;\n this.sendEvent(\n new SignalingClientEvent(this, SignalingClientEventType.WebSocketClosing, null)\n );\n\n // Continue resetting the connection even if SDK does not receive the \"close\" event.\n const scheduler: TimeoutScheduler = new TimeoutScheduler(\n DefaultSignalingClient.CLOSE_EVENT_TIMEOUT_MS\n );\n const handler = (event: CloseEvent): void => {\n /* istanbul ignore next */\n this.webSocket.removeEventListener?.('close', handler);\n scheduler.stop();\n this.closeEventHandler(event);\n };\n\n // Remove the existing close handler to prevent SDK from opening a new connection.\n /* istanbul ignore next */\n this.webSocket.removeEventListener?.('close', this.closeEventHandler);\n this.webSocket.addEventListener('close', handler);\n scheduler.start(() => {\n // SDK has not received the \"close\" event on WebSocket for two seconds.\n //\n // We report it as a graceful close with no message as there should be no end-user\n // impact of this timeout, and we do not want to trigger any non-graceful disconnection handling\n // like reconnection.\n handler(\n new CloseEvent('close', { wasClean: false, code: 1005, reason: '', bubbles: false })\n );\n });\n this.webSocket.close();\n this.deactivatePageUnloadHandler();\n } else {\n this.logger.info('no existing signaling client connection needs closing');\n this.serviceConnectionRequestQueue();\n }\n }\n\n ready(): boolean {\n return (\n this.webSocket.readyState() === WebSocketReadyState.Open && !this.isClosing && this.wasOpened\n );\n }\n\n mute(muted: boolean): void {\n const message = SdkSignalFrame.create();\n message.type = SdkSignalFrame.Type.AUDIO_CONTROL;\n const audioControl = SdkAudioControlFrame.create();\n audioControl.muted = muted;\n message.audioControl = audioControl;\n this.sendMessage(message);\n }\n\n pause(streamIds: number[]): void {\n const message = SdkSignalFrame.create();\n message.type = SdkSignalFrame.Type.PAUSE;\n message.pause = SdkPauseResumeFrame.create();\n message.pause.streamIds = streamIds;\n this.sendMessage(message);\n }\n\n resume(streamIds: number[]): void {\n const message = SdkSignalFrame.create();\n message.type = SdkSignalFrame.Type.RESUME;\n message.pause = SdkPauseResumeFrame.create();\n message.pause.streamIds = streamIds;\n this.sendMessage(message);\n }\n\n private resetConnection(): void {\n this.webSocket.destroy();\n this.wasOpened = false;\n }\n\n private sendMessage(message: SdkSignalFrame): void {\n message.timestampMs = Date.now();\n this.logger.debug(() => `sending: ${JSON.stringify(message)}`);\n const buffer = this.prependWithFrameTypeRTC(SdkSignalFrame.encode(message).finish());\n if (this.ready()) {\n if (!this.webSocket.send(buffer)) {\n this.sendEvent(\n new SignalingClientEvent(this, SignalingClientEventType.WebSocketSendMessageFailure, null)\n );\n return;\n }\n this.sendEvent(\n new SignalingClientEvent(this, SignalingClientEventType.WebSocketSentMessage, null)\n );\n } else {\n this.sendEvent(\n new SignalingClientEvent(this, SignalingClientEventType.WebSocketSkippedMessage, null)\n );\n }\n }\n\n private receiveMessage(inBuffer: Uint8Array): void {\n let message: SdkSignalFrame;\n try {\n message = SdkSignalFrame.decode(inBuffer);\n } catch (e) {\n this.logger.info(`failed to decode: ${inBuffer}`);\n this.sendEvent(\n new SignalingClientEvent(this, SignalingClientEventType.ProtocolDecodeFailure, null)\n );\n return;\n }\n this.logger.debug(() => `received: ${JSON.stringify(message)}`);\n if (this.webSocket.readyState() === WebSocketReadyState.Open) {\n this.sendEvent(\n new SignalingClientEvent(this, SignalingClientEventType.ReceivedSignalFrame, message)\n );\n } else {\n this.logger.info(\n `skipping notification of message since WebSocket is not open: ${JSON.stringify(message)}`\n );\n }\n }\n\n private stripFrameTypeRTC(inBuffer: Uint8Array): Uint8Array {\n const frameType = inBuffer[0];\n // TODO: change server frame type to send 0x05\n if (frameType !== DefaultSignalingClient.FRAME_TYPE_RTC && frameType !== 0x02) {\n this.logger.warn(`expected FrameTypeRTC for message but got ${frameType}`);\n }\n return inBuffer.slice(1);\n }\n\n private prependWithFrameTypeRTC(inBuffer: Uint8Array): Uint8Array {\n const outBuffer = new Uint8Array(inBuffer.length + 1);\n outBuffer[0] = DefaultSignalingClient.FRAME_TYPE_RTC;\n outBuffer.set(inBuffer, 1);\n return outBuffer;\n }\n\n private serviceConnectionRequestQueue(): void {\n if (this.connectionRequestQueue.length === 0) {\n this.logger.info('no connection requests to service');\n return;\n }\n const request = this.connectionRequestQueue.shift();\n this.logger.info(`opening connection to ${request.url()}`);\n this.isClosing = false;\n this.webSocket.create(request.url(), request.protocols());\n this.setUpEventListeners();\n this.sendEvent(\n new SignalingClientEvent(this, SignalingClientEventType.WebSocketConnecting, null)\n );\n }\n\n private sendEvent(event: SignalingClientEvent): void {\n switch (event.type) {\n case SignalingClientEventType.WebSocketMessage:\n case SignalingClientEventType.ReceivedSignalFrame:\n case SignalingClientEventType.WebSocketSentMessage:\n this.logger.debug(() => `notifying event: ${SignalingClientEventType[event.type]}`);\n break;\n case SignalingClientEventType.WebSocketSkippedMessage:\n this.logger.debug(\n () =>\n `notifying event: ${SignalingClientEventType[event.type]}, websocket state=${\n WebSocketReadyState[this.webSocket.readyState()]\n }`\n );\n break;\n case SignalingClientEventType.WebSocketClosed:\n this.logger.info(\n `notifying event: ${SignalingClientEventType[event.type]}, \n code: ${event.closeCode} reason: ${event.closeReason}`\n );\n break;\n default:\n this.logger.info(`notifying event: ${SignalingClientEventType[event.type]}`);\n break;\n }\n\n for (const observer of this.observerQueue) {\n observer.handleSignalingClientEvent(event);\n }\n }\n\n private setUpEventListeners(): void {\n this.webSocket.addEventListener('open', () => {\n this.activatePageUnloadHandler();\n this.wasOpened = true;\n this.sendEvent(new SignalingClientEvent(this, SignalingClientEventType.WebSocketOpen, null));\n });\n this.webSocket.addEventListener('message', (event: MessageEvent) => {\n this.sendEvent(\n new SignalingClientEvent(this, SignalingClientEventType.WebSocketMessage, null)\n );\n this.receiveMessage(this.stripFrameTypeRTC(new Uint8Array(event.data)));\n });\n this.webSocket.addEventListener('close', this.closeEventHandler);\n this.webSocket.addEventListener('error', () => {\n if (this.isClosing && !this.wasOpened) {\n this.logger.info('Signaling WebSocket ignoring error closing while connecting');\n return;\n }\n if (this.wasOpened) {\n this.logger.error('Signaling WebSocket received error while connected');\n this.sendEvent(\n new SignalingClientEvent(this, SignalingClientEventType.WebSocketError, null)\n );\n } else {\n this.logger.error('Signaling WebSocket received error while connecting');\n this.sendEvent(\n new SignalingClientEvent(this, SignalingClientEventType.WebSocketFailed, null)\n );\n }\n });\n }\n\n private activatePageUnloadHandler(): void {\n this.unloadHandler = () => {\n this.leave();\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const GlobalAny = global as any;\n GlobalAny['window'] &&\n GlobalAny['window']['addEventListener'] &&\n window.addEventListener('unload', this.unloadHandler);\n }\n\n private deactivatePageUnloadHandler(): void {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const GlobalAny = global as any;\n GlobalAny['window'] &&\n GlobalAny['window']['removeEventListener'] &&\n window.removeEventListener('unload', this.unloadHandler);\n this.unloadHandler = null;\n }\n\n private generateNewAudioSessionId(): number {\n const num = new Uint32Array(1);\n getRandomValues(num);\n return num[0];\n }\n\n private closeEventHandler = (event: CloseEvent): void => {\n this.deactivatePageUnloadHandler();\n this.resetConnection();\n this.sendEvent(\n new SignalingClientEvent(\n this,\n SignalingClientEventType.WebSocketClosed,\n null,\n event.code,\n event.reason\n )\n );\n this.serviceConnectionRequestQueue();\n };\n\n promoteToPrimaryMeeting(credentials: MeetingSessionCredentials): void {\n const signaledCredentials = SdkMeetingSessionCredentials.create();\n signaledCredentials.attendeeId = credentials.attendeeId;\n signaledCredentials.externalUserId = credentials.externalUserId;\n signaledCredentials.joinToken = credentials.joinToken;\n\n const primaryMeetingJoin = SdkPrimaryMeetingJoinFrame.create();\n primaryMeetingJoin.credentials = signaledCredentials;\n\n const message = SdkSignalFrame.create();\n message.type = SdkSignalFrame.Type.PRIMARY_MEETING_JOIN;\n message.primaryMeetingJoin = primaryMeetingJoin;\n this.sendMessage(message);\n }\n\n demoteFromPrimaryMeeting(): void {\n const primaryMeetingLeave = SdkPrimaryMeetingLeaveFrame.create();\n\n const message = SdkSignalFrame.create();\n message.type = SdkSignalFrame.Type.PRIMARY_MEETING_LEAVE;\n message.primaryMeetingLeave = primaryMeetingLeave;\n this.sendMessage(message);\n }\n}\n","var Buffer = require('buffer/').Buffer;\nvar hashUtils = require('./browserHashUtils');\n\nvar BLOCK_SIZE = 64;\n\nvar DIGEST_LENGTH = 20;\n\nvar KEY = new Uint32Array([\n 0x5a827999,\n 0x6ed9eba1,\n 0x8f1bbcdc | 0,\n 0xca62c1d6 | 0\n]);\n\nvar INIT = [\n 0x6a09e667,\n 0xbb67ae85,\n 0x3c6ef372,\n 0xa54ff53a,\n 0x510e527f,\n 0x9b05688c,\n 0x1f83d9ab,\n 0x5be0cd19,\n];\n\nvar MAX_HASHABLE_LENGTH = Math.pow(2, 53) - 1;\n\n/**\n * @api private\n */\nfunction Sha1() {\n this.h0 = 0x67452301;\n this.h1 = 0xEFCDAB89;\n this.h2 = 0x98BADCFE;\n this.h3 = 0x10325476;\n this.h4 = 0xC3D2E1F0;\n // The first 64 bytes (16 words) is the data chunk\n this.block = new Uint32Array(80);\n this.offset = 0;\n this.shift = 24;\n this.totalLength = 0;\n}\n\n/**\n * @api private\n */\nmodule.exports = exports = Sha1;\n\nSha1.BLOCK_SIZE = BLOCK_SIZE;\n\nSha1.prototype.update = function (data) {\n if (this.finished) {\n throw new Error('Attempted to update an already finished hash.');\n }\n\n if (hashUtils.isEmptyData(data)) {\n return this;\n }\n\n data = hashUtils.convertToBuffer(data);\n\n var length = data.length;\n this.totalLength += length * 8;\n for (var i = 0; i < length; i++) {\n this.write(data[i]);\n }\n\n return this;\n};\n\nSha1.prototype.write = function write(byte) {\n this.block[this.offset] |= (byte & 0xff) << this.shift;\n if (this.shift) {\n this.shift -= 8;\n } else {\n this.offset++;\n this.shift = 24;\n }\n\n if (this.offset === 16) this.processBlock();\n};\n\nSha1.prototype.digest = function (encoding) {\n // Pad\n this.write(0x80);\n if (this.offset > 14 || (this.offset === 14 && this.shift < 24)) {\n this.processBlock();\n }\n this.offset = 14;\n this.shift = 24;\n\n // 64-bit length big-endian\n this.write(0x00); // numbers this big aren't accurate in javascript anyway\n this.write(0x00); // ..So just hard-code to zero.\n this.write(this.totalLength > 0xffffffffff ? this.totalLength / 0x10000000000 : 0x00);\n this.write(this.totalLength > 0xffffffff ? this.totalLength / 0x100000000 : 0x00);\n for (var s = 24; s >= 0; s -= 8) {\n this.write(this.totalLength >> s);\n }\n // The value in state is little-endian rather than big-endian, so flip\n // each word into a new Uint8Array\n var out = new Buffer(DIGEST_LENGTH);\n var outView = new DataView(out.buffer);\n outView.setUint32(0, this.h0, false);\n outView.setUint32(4, this.h1, false);\n outView.setUint32(8, this.h2, false);\n outView.setUint32(12, this.h3, false);\n outView.setUint32(16, this.h4, false);\n\n return encoding ? out.toString(encoding) : out;\n};\n\nSha1.prototype.processBlock = function processBlock() {\n // Extend the sixteen 32-bit words into eighty 32-bit words:\n for (var i = 16; i < 80; i++) {\n var w = this.block[i - 3] ^ this.block[i - 8] ^ this.block[i - 14] ^ this.block[i - 16];\n this.block[i] = (w << 1) | (w >>> 31);\n }\n\n // Initialize hash value for this chunk:\n var a = this.h0;\n var b = this.h1;\n var c = this.h2;\n var d = this.h3;\n var e = this.h4;\n var f, k;\n\n // Main loop:\n for (i = 0; i < 80; i++) {\n if (i < 20) {\n f = d ^ (b & (c ^ d));\n k = 0x5A827999;\n }\n else if (i < 40) {\n f = b ^ c ^ d;\n k = 0x6ED9EBA1;\n }\n else if (i < 60) {\n f = (b & c) | (d & (b | c));\n k = 0x8F1BBCDC;\n }\n else {\n f = b ^ c ^ d;\n k = 0xCA62C1D6;\n }\n var temp = (a << 5 | a >>> 27) + f + e + k + (this.block[i]|0);\n e = d;\n d = c;\n c = (b << 30 | b >>> 2);\n b = a;\n a = temp;\n }\n\n // Add this chunk's hash to result so far:\n this.h0 = (this.h0 + a) | 0;\n this.h1 = (this.h1 + b) | 0;\n this.h2 = (this.h2 + c) | 0;\n this.h3 = (this.h3 + d) | 0;\n this.h4 = (this.h4 + e) | 0;\n\n // The block is now reusable.\n this.offset = 0;\n for (i = 0; i < 16; i++) {\n this.block[i] = 0;\n }\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport GetUserMediaError from './GetUserMediaError';\n\nexport default class NotFoundError extends GetUserMediaError {\n constructor(cause?: Error) {\n super(cause);\n this.name = 'NotFoundError';\n }\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { SdkSignalFrame } from '../signalingprotocol/SignalingProtocol.js';\nimport MeetingSessionStatusCode from './MeetingSessionStatusCode';\n\n/**\n * [[MeetingSessionStatus]] indicates a status received regarding the session.\n */\nexport default class MeetingSessionStatus {\n constructor(private _statusCode: MeetingSessionStatusCode) {}\n\n statusCode(): MeetingSessionStatusCode {\n return this._statusCode;\n }\n\n isFailure(): boolean {\n switch (this._statusCode) {\n case MeetingSessionStatusCode.AudioAuthenticationRejected:\n case MeetingSessionStatusCode.AudioCallAtCapacity:\n case MeetingSessionStatusCode.AudioInternalServerError:\n case MeetingSessionStatusCode.AudioServiceUnavailable:\n case MeetingSessionStatusCode.AudioDisconnected:\n case MeetingSessionStatusCode.VideoCallAtSourceCapacity:\n case MeetingSessionStatusCode.SignalingBadRequest:\n case MeetingSessionStatusCode.SignalingInternalServerError:\n case MeetingSessionStatusCode.SignalingRequestFailed:\n case MeetingSessionStatusCode.ICEGatheringTimeoutWorkaround:\n case MeetingSessionStatusCode.ConnectionHealthReconnect:\n case MeetingSessionStatusCode.RealtimeApiFailed:\n case MeetingSessionStatusCode.TaskFailed:\n case MeetingSessionStatusCode.NoAttendeePresent:\n case MeetingSessionStatusCode.SignalingChannelClosedUnexpectedly:\n return true;\n default:\n return false;\n }\n }\n\n isTerminal(): boolean {\n switch (this._statusCode) {\n case MeetingSessionStatusCode.Left:\n case MeetingSessionStatusCode.AudioJoinedFromAnotherDevice:\n case MeetingSessionStatusCode.AudioAuthenticationRejected:\n case MeetingSessionStatusCode.AudioCallAtCapacity:\n case MeetingSessionStatusCode.MeetingEnded:\n case MeetingSessionStatusCode.AudioDisconnected:\n case MeetingSessionStatusCode.TURNCredentialsForbidden:\n case MeetingSessionStatusCode.SignalingBadRequest:\n case MeetingSessionStatusCode.SignalingRequestFailed:\n case MeetingSessionStatusCode.VideoCallAtSourceCapacity:\n case MeetingSessionStatusCode.RealtimeApiFailed:\n case MeetingSessionStatusCode.AudioAttendeeRemoved:\n return true;\n default:\n return false;\n }\n }\n\n isAudioConnectionFailure(): boolean {\n switch (this._statusCode) {\n case MeetingSessionStatusCode.AudioAuthenticationRejected:\n case MeetingSessionStatusCode.AudioInternalServerError:\n case MeetingSessionStatusCode.AudioServiceUnavailable:\n case MeetingSessionStatusCode.ICEGatheringTimeoutWorkaround:\n case MeetingSessionStatusCode.SignalingBadRequest:\n case MeetingSessionStatusCode.SignalingInternalServerError:\n case MeetingSessionStatusCode.SignalingRequestFailed:\n case MeetingSessionStatusCode.RealtimeApiFailed:\n case MeetingSessionStatusCode.NoAttendeePresent:\n return true;\n default:\n return false;\n }\n }\n\n toString?(): string {\n switch (this._statusCode) {\n case MeetingSessionStatusCode.OK:\n return 'Everything is OK so far.';\n case MeetingSessionStatusCode.Left:\n return 'The attendee left the meeting.';\n case MeetingSessionStatusCode.AudioJoinedFromAnotherDevice:\n return 'The attendee joined from another device.';\n case MeetingSessionStatusCode.AudioAuthenticationRejected:\n return 'The meeting rejected the attendee.';\n case MeetingSessionStatusCode.AudioCallAtCapacity:\n return \"The attendee couldn't join because the meeting was at capacity.\";\n case MeetingSessionStatusCode.MeetingEnded:\n return 'The meeting ended.';\n case MeetingSessionStatusCode.AudioInternalServerError:\n case MeetingSessionStatusCode.AudioServiceUnavailable:\n case MeetingSessionStatusCode.AudioDisconnected:\n return 'The audio connection failed.';\n case MeetingSessionStatusCode.VideoCallSwitchToViewOnly:\n return \"The attendee couldn't start the local video because the maximum video capacity was reached.\";\n case MeetingSessionStatusCode.VideoCallAtSourceCapacity:\n return 'The connection failed due to an internal server error.';\n case MeetingSessionStatusCode.SignalingBadRequest:\n case MeetingSessionStatusCode.SignalingInternalServerError:\n case MeetingSessionStatusCode.SignalingRequestFailed:\n return 'The signaling connection failed.';\n case MeetingSessionStatusCode.ICEGatheringTimeoutWorkaround:\n return 'Gathering ICE candidates timed out. In Chrome, this might indicate that the browser is in a bad state after reconnecting to VPN.';\n case MeetingSessionStatusCode.ConnectionHealthReconnect:\n return 'The meeting was reconnected.';\n case MeetingSessionStatusCode.RealtimeApiFailed:\n return 'The real-time API failed. This status code might indicate that the callback you passed to the real-time API threw an exception.';\n case MeetingSessionStatusCode.TaskFailed:\n return 'The connection failed. See the error message for more details.';\n case MeetingSessionStatusCode.IncompatibleSDP:\n return 'The connection failed due to incompatible SDP.';\n case MeetingSessionStatusCode.TURNCredentialsForbidden:\n return 'The meeting ended, or the attendee was removed.';\n case MeetingSessionStatusCode.NoAttendeePresent:\n return 'The attendee was not present.';\n case MeetingSessionStatusCode.AudioAttendeeRemoved:\n return 'The meeting ended because attendee removed.';\n case MeetingSessionStatusCode.AudioVideoWasRemovedFromPrimaryMeeting:\n return 'The Primary meeting credentials provided are no longer valid. chime::DeleteAttendee may have been called on them.';\n case MeetingSessionStatusCode.AudioVideoDisconnectedWhilePromoted:\n return 'The client disconnected while promoted, which will automatically demote. The attendee must promote again to participate.';\n case MeetingSessionStatusCode.AudioDisconnectAudio:\n return 'The audio connection failed.';\n case MeetingSessionStatusCode.SignalingChannelClosedUnexpectedly:\n return 'The signaling channel was closed unexpectedly. This may be due to a network change or backend detected failure.';\n /* istanbul ignore next */\n default: {\n // You get a compile-time error if you do not handle any status code.\n const exhaustiveCheck: never = this._statusCode;\n throw new Error(`Unhandled case: ${exhaustiveCheck}`);\n }\n }\n }\n\n static fromSignalFrame(frame: SdkSignalFrame): MeetingSessionStatus {\n if (frame.error && frame.error.status) {\n return this.fromSignalingStatus(frame.error.status);\n } else if (frame.type === SdkSignalFrame.Type.AUDIO_STATUS) {\n if (frame.audioStatus) {\n return this.fromAudioStatus(frame.audioStatus.audioStatus);\n }\n return new MeetingSessionStatus(MeetingSessionStatusCode.SignalingRequestFailed);\n } else if (frame.type === SdkSignalFrame.Type.PRIMARY_MEETING_LEAVE) {\n return new MeetingSessionStatus(\n MeetingSessionStatusCode.AudioVideoWasRemovedFromPrimaryMeeting\n );\n }\n return new MeetingSessionStatus(MeetingSessionStatusCode.OK);\n }\n\n private static fromAudioStatus(status: number): MeetingSessionStatus {\n // TODO: Add these numbers to proto definition and reference them here.\n switch (status) {\n case 200:\n return new MeetingSessionStatus(MeetingSessionStatusCode.OK);\n case 301:\n return new MeetingSessionStatus(MeetingSessionStatusCode.AudioJoinedFromAnotherDevice);\n case 302:\n return new MeetingSessionStatus(MeetingSessionStatusCode.AudioDisconnectAudio);\n case 403:\n return new MeetingSessionStatus(MeetingSessionStatusCode.AudioAuthenticationRejected);\n case 409:\n return new MeetingSessionStatus(MeetingSessionStatusCode.AudioCallAtCapacity);\n case 410:\n return new MeetingSessionStatus(MeetingSessionStatusCode.MeetingEnded);\n case 411:\n return new MeetingSessionStatus(MeetingSessionStatusCode.AudioAttendeeRemoved);\n case 500:\n return new MeetingSessionStatus(MeetingSessionStatusCode.AudioInternalServerError);\n case 503:\n return new MeetingSessionStatus(MeetingSessionStatusCode.AudioServiceUnavailable);\n default:\n switch (Math.floor(status / 100)) {\n case 2:\n return new MeetingSessionStatus(MeetingSessionStatusCode.OK);\n default:\n return new MeetingSessionStatus(MeetingSessionStatusCode.AudioDisconnected);\n }\n }\n }\n\n private static fromSignalingStatus(status: number): MeetingSessionStatus {\n // TODO: Add these numbers to proto definition and reference them here.\n //\n // We don't bother adding additional codes with different prefixes, and we probably\n // shouldn't be prefixing all these errors (e.g. `AuthenticationRejected`) with the media type\n // since that doesn't make sense.\n switch (status) {\n case 206:\n return new MeetingSessionStatus(MeetingSessionStatusCode.VideoCallSwitchToViewOnly);\n case 509:\n return new MeetingSessionStatus(MeetingSessionStatusCode.VideoCallAtSourceCapacity);\n case 403:\n return new MeetingSessionStatus(MeetingSessionStatusCode.AudioAuthenticationRejected);\n case 409:\n return new MeetingSessionStatus(MeetingSessionStatusCode.AudioCallAtCapacity);\n default:\n switch (Math.floor(status / 100)) {\n case 2:\n return new MeetingSessionStatus(MeetingSessionStatusCode.OK);\n case 4:\n return new MeetingSessionStatus(MeetingSessionStatusCode.SignalingBadRequest);\n case 5:\n return new MeetingSessionStatus(MeetingSessionStatusCode.SignalingInternalServerError);\n default:\n return new MeetingSessionStatus(MeetingSessionStatusCode.SignalingRequestFailed);\n }\n }\n }\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { getRandomValues } from '../utils/Utils';\nimport PrefetchOn from './PrefetchOn';\nimport PrefetchSortBy from './PrefetchSortBy';\n\n/**\n * [[MessagingSessionConfiguration]] contains the information necessary to start\n * a messaging session.\n */\n/* eslint @typescript-eslint/no-explicit-any: 0, @typescript-eslint/explicit-module-boundary-types: 0 */\nexport default class MessagingSessionConfiguration {\n /**\n * Maximum amount of time in milliseconds to allow for reconnecting.\n */\n reconnectTimeoutMs: number = 10 * 1000;\n\n /**\n * Fixed wait amount in milliseconds between reconnecting attempts.\n */\n reconnectFixedWaitMs: number = 0;\n\n /**\n * The short back off time in milliseconds between reconnecting attempts.\n */\n reconnectShortBackoffMs: number = 1 * 1000;\n\n /**\n * The long back off time in milliseconds between reconnecting attempts.\n */\n reconnectLongBackoffMs: number = 5 * 1000;\n\n /**\n * The enum to indicate if we want to turn on prefetch feature. Prefetch feature will send out CHANNEL_DETAILS event\n * upon websocket connection, which includes information about channel, channel messages, channel memberships etc.\n */\n prefetchOn: PrefetchOn | undefined = undefined;\n\n /**\n * The enum to indicate the sorting mechanism to use when deciding which channels to Prefetch. Prefetch feature will send out\n * CHANNEL_DETAILS event upon websocket connection, which includes information about channel, channel messages, channel memberships etc.\n * The first 50 channels matching the PrefetchSortBy will be sent. If not set, channels will be returned first by those\n * with unread messages and then those with the latest last sent message timestamp.\n */\n prefetchSortBy: PrefetchSortBy | undefined = undefined;\n\n /**\n * Constructs a MessagingSessionConfiguration optionally with userArn, messaging session id, a messaging session\n * endpoint URL, and the chimeClient.\n *\n * endpointUrl is deprecated and should not be used. Internally it is resolved on connect via chimeClient if undefined, and\n * always re-resolved on reconnect.\n *\n * The messaging session id is to uniquely identify this messaging session for the userArn.\n * If messaging session id is passed in as null, it will be automatically generated.\n */\n constructor(\n public userArn: string,\n public messagingSessionId: string | null,\n public endpointUrl: string | undefined,\n public chimeClient: any\n ) {\n if (!this.messagingSessionId) {\n this.messagingSessionId = this.generateSessionId();\n }\n }\n\n private generateSessionId(): string {\n const num = new Uint32Array(1);\n getRandomValues(num);\n return num[0].toString();\n }\n}\n","var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nvar BrowserInfo = /** @class */ (function () {\n function BrowserInfo(name, version, os) {\n this.name = name;\n this.version = version;\n this.os = os;\n this.type = 'browser';\n }\n return BrowserInfo;\n}());\nexport { BrowserInfo };\nvar NodeInfo = /** @class */ (function () {\n function NodeInfo(version) {\n this.version = version;\n this.type = 'node';\n this.name = 'node';\n this.os = process.platform;\n }\n return NodeInfo;\n}());\nexport { NodeInfo };\nvar SearchBotDeviceInfo = /** @class */ (function () {\n function SearchBotDeviceInfo(name, version, os, bot) {\n this.name = name;\n this.version = version;\n this.os = os;\n this.bot = bot;\n this.type = 'bot-device';\n }\n return SearchBotDeviceInfo;\n}());\nexport { SearchBotDeviceInfo };\nvar BotInfo = /** @class */ (function () {\n function BotInfo() {\n this.type = 'bot';\n this.bot = true; // NOTE: deprecated test name instead\n this.name = 'bot';\n this.version = null;\n this.os = null;\n }\n return BotInfo;\n}());\nexport { BotInfo };\nvar ReactNativeInfo = /** @class */ (function () {\n function ReactNativeInfo() {\n this.type = 'react-native';\n this.name = 'react-native';\n this.version = null;\n this.os = null;\n }\n return ReactNativeInfo;\n}());\nexport { ReactNativeInfo };\n// tslint:disable-next-line:max-line-length\nvar SEARCHBOX_UA_REGEX = /alexa|bot|crawl(er|ing)|facebookexternalhit|feedburner|google web preview|nagios|postrank|pingdom|slurp|spider|yahoo!|yandex/;\nvar SEARCHBOT_OS_REGEX = /(nuhk|curl|Googlebot|Yammybot|Openbot|Slurp|MSNBot|Ask\\ Jeeves\\/Teoma|ia_archiver)/;\nvar REQUIRED_VERSION_PARTS = 3;\nvar userAgentRules = [\n ['aol', /AOLShield\\/([0-9\\._]+)/],\n ['edge', /Edge\\/([0-9\\._]+)/],\n ['edge-ios', /EdgiOS\\/([0-9\\._]+)/],\n ['yandexbrowser', /YaBrowser\\/([0-9\\._]+)/],\n ['kakaotalk', /KAKAOTALK\\s([0-9\\.]+)/],\n ['samsung', /SamsungBrowser\\/([0-9\\.]+)/],\n ['silk', /\\bSilk\\/([0-9._-]+)\\b/],\n ['miui', /MiuiBrowser\\/([0-9\\.]+)$/],\n ['beaker', /BeakerBrowser\\/([0-9\\.]+)/],\n ['edge-chromium', /EdgA?\\/([0-9\\.]+)/],\n [\n 'chromium-webview',\n /(?!Chrom.*OPR)wv\\).*Chrom(?:e|ium)\\/([0-9\\.]+)(:?\\s|$)/,\n ],\n ['chrome', /(?!Chrom.*OPR)Chrom(?:e|ium)\\/([0-9\\.]+)(:?\\s|$)/],\n ['phantomjs', /PhantomJS\\/([0-9\\.]+)(:?\\s|$)/],\n ['crios', /CriOS\\/([0-9\\.]+)(:?\\s|$)/],\n ['firefox', /Firefox\\/([0-9\\.]+)(?:\\s|$)/],\n ['fxios', /FxiOS\\/([0-9\\.]+)/],\n ['opera-mini', /Opera Mini.*Version\\/([0-9\\.]+)/],\n ['opera', /Opera\\/([0-9\\.]+)(?:\\s|$)/],\n ['opera', /OPR\\/([0-9\\.]+)(:?\\s|$)/],\n ['pie', /^Microsoft Pocket Internet Explorer\\/(\\d+\\.\\d+)$/],\n ['pie', /^Mozilla\\/\\d\\.\\d+\\s\\(compatible;\\s(?:MSP?IE|MSInternet Explorer) (\\d+\\.\\d+);.*Windows CE.*\\)$/],\n ['netfront', /^Mozilla\\/\\d\\.\\d+.*NetFront\\/(\\d.\\d)/],\n ['ie', /Trident\\/7\\.0.*rv\\:([0-9\\.]+).*\\).*Gecko$/],\n ['ie', /MSIE\\s([0-9\\.]+);.*Trident\\/[4-7].0/],\n ['ie', /MSIE\\s(7\\.0)/],\n ['bb10', /BB10;\\sTouch.*Version\\/([0-9\\.]+)/],\n ['android', /Android\\s([0-9\\.]+)/],\n ['ios', /Version\\/([0-9\\._]+).*Mobile.*Safari.*/],\n ['safari', /Version\\/([0-9\\._]+).*Safari/],\n ['facebook', /FB[AS]V\\/([0-9\\.]+)/],\n ['instagram', /Instagram\\s([0-9\\.]+)/],\n ['ios-webview', /AppleWebKit\\/([0-9\\.]+).*Mobile/],\n ['ios-webview', /AppleWebKit\\/([0-9\\.]+).*Gecko\\)$/],\n ['curl', /^curl\\/([0-9\\.]+)$/],\n ['searchbot', SEARCHBOX_UA_REGEX],\n];\nvar operatingSystemRules = [\n ['iOS', /iP(hone|od|ad)/],\n ['Android OS', /Android/],\n ['BlackBerry OS', /BlackBerry|BB10/],\n ['Windows Mobile', /IEMobile/],\n ['Amazon OS', /Kindle/],\n ['Windows 3.11', /Win16/],\n ['Windows 95', /(Windows 95)|(Win95)|(Windows_95)/],\n ['Windows 98', /(Windows 98)|(Win98)/],\n ['Windows 2000', /(Windows NT 5.0)|(Windows 2000)/],\n ['Windows XP', /(Windows NT 5.1)|(Windows XP)/],\n ['Windows Server 2003', /(Windows NT 5.2)/],\n ['Windows Vista', /(Windows NT 6.0)/],\n ['Windows 7', /(Windows NT 6.1)/],\n ['Windows 8', /(Windows NT 6.2)/],\n ['Windows 8.1', /(Windows NT 6.3)/],\n ['Windows 10', /(Windows NT 10.0)/],\n ['Windows ME', /Windows ME/],\n ['Windows CE', /Windows CE|WinCE|Microsoft Pocket Internet Explorer/],\n ['Open BSD', /OpenBSD/],\n ['Sun OS', /SunOS/],\n ['Chrome OS', /CrOS/],\n ['Linux', /(Linux)|(X11)/],\n ['Mac OS', /(Mac_PowerPC)|(Macintosh)/],\n ['QNX', /QNX/],\n ['BeOS', /BeOS/],\n ['OS/2', /OS\\/2/],\n];\nexport function detect(userAgent) {\n if (!!userAgent) {\n return parseUserAgent(userAgent);\n }\n if (typeof document === 'undefined' &&\n typeof navigator !== 'undefined' &&\n navigator.product === 'ReactNative') {\n return new ReactNativeInfo();\n }\n if (typeof navigator !== 'undefined') {\n return parseUserAgent(navigator.userAgent);\n }\n return getNodeVersion();\n}\nfunction matchUserAgent(ua) {\n // opted for using reduce here rather than Array#first with a regex.test call\n // this is primarily because using the reduce we only perform the regex\n // execution once rather than once for the test and for the exec again below\n // probably something that needs to be benchmarked though\n return (ua !== '' &&\n userAgentRules.reduce(function (matched, _a) {\n var browser = _a[0], regex = _a[1];\n if (matched) {\n return matched;\n }\n var uaMatch = regex.exec(ua);\n return !!uaMatch && [browser, uaMatch];\n }, false));\n}\nexport function browserName(ua) {\n var data = matchUserAgent(ua);\n return data ? data[0] : null;\n}\nexport function parseUserAgent(ua) {\n var matchedRule = matchUserAgent(ua);\n if (!matchedRule) {\n return null;\n }\n var name = matchedRule[0], match = matchedRule[1];\n if (name === 'searchbot') {\n return new BotInfo();\n }\n // Do not use RegExp for split operation as some browser do not support it (See: http://blog.stevenlevithan.com/archives/cross-browser-split)\n var versionParts = match[1] && match[1].split('.').join('_').split('_').slice(0, 3);\n if (versionParts) {\n if (versionParts.length < REQUIRED_VERSION_PARTS) {\n versionParts = __spreadArray(__spreadArray([], versionParts, true), createVersionParts(REQUIRED_VERSION_PARTS - versionParts.length), true);\n }\n }\n else {\n versionParts = [];\n }\n var version = versionParts.join('.');\n var os = detectOS(ua);\n var searchBotMatch = SEARCHBOT_OS_REGEX.exec(ua);\n if (searchBotMatch && searchBotMatch[1]) {\n return new SearchBotDeviceInfo(name, version, os, searchBotMatch[1]);\n }\n return new BrowserInfo(name, version, os);\n}\nexport function detectOS(ua) {\n for (var ii = 0, count = operatingSystemRules.length; ii < count; ii++) {\n var _a = operatingSystemRules[ii], os = _a[0], regex = _a[1];\n var match = regex.exec(ua);\n if (match) {\n return os;\n }\n }\n return null;\n}\nexport function getNodeVersion() {\n var isNode = typeof process !== 'undefined' && process.version;\n return isNode ? new NodeInfo(process.version.slice(1)) : null;\n}\nfunction createVersionParts(count) {\n var output = [];\n for (var ii = 0; ii < count; ii++) {\n output.push('0');\n }\n return output;\n}\n","function apiLoader(svc, version) {\n if (!apiLoader.services.hasOwnProperty(svc)) {\n throw new Error('InvalidService: Failed to load api for ' + svc);\n }\n return apiLoader.services[svc][version];\n}\n\n/**\n * @api private\n *\n * This member of AWS.apiLoader is private, but changing it will necessitate a\n * change to ../scripts/services-table-generator.ts\n */\napiLoader.services = {};\n\n/**\n * @api private\n */\nmodule.exports = apiLoader;\n","'use strict';\nvar $TypeError = TypeError;\n\nmodule.exports = function (passed, required) {\n if (passed < required) throw new $TypeError('Not enough arguments');\n return passed;\n};\n","var AWS = require('../core');\n\n/**\n * @api private\n */\nAWS.Signers.Bearer = AWS.util.inherit(AWS.Signers.RequestSigner, {\n constructor: function Bearer(request) {\n AWS.Signers.RequestSigner.call(this, request);\n },\n\n addAuthorization: function addAuthorization(token) {\n this.request.headers['Authorization'] = 'Bearer ' + token.token;\n }\n});\n","'use strict';\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\n\nvar $TypeError = TypeError;\n\n// `RequireObjectCoercible` abstract operation\n// https://tc39.es/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n if (isNullOrUndefined(it)) throw new $TypeError(\"Can't call method on \" + it);\n return it;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar aSet = require('../internals/a-set');\nvar remove = require('../internals/set-helpers').remove;\n\n// `Set.prototype.deleteAll` method\n// https://github.com/tc39/proposal-collection-methods\n$({ target: 'Set', proto: true, real: true, forced: true }, {\n deleteAll: function deleteAll(/* ...elements */) {\n var collection = aSet(this);\n var allDeleted = true;\n var wasDeleted;\n for (var k = 0, len = arguments.length; k < len; k++) {\n wasDeleted = remove(collection, arguments[k]);\n allDeleted = allDeleted && wasDeleted;\n } return !!allDeleted;\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar aSet = require('../internals/a-set');\nvar add = require('../internals/set-helpers').add;\n\n// `Set.prototype.addAll` method\n// https://github.com/tc39/proposal-collection-methods\n$({ target: 'Set', proto: true, real: true, forced: true }, {\n addAll: function addAll(/* ...elements */) {\n var set = aSet(this);\n for (var k = 0, len = arguments.length; k < len; k++) {\n add(set, arguments[k]);\n } return set;\n }\n});\n","var AWS = require('../core');\nvar inherit = AWS.util.inherit;\n\n/**\n * @api private\n */\nvar expiresHeader = 'presigned-expires';\n\n/**\n * @api private\n */\nfunction signedUrlBuilder(request) {\n var expires = request.httpRequest.headers[expiresHeader];\n var signerClass = request.service.getSignerClass(request);\n\n delete request.httpRequest.headers['User-Agent'];\n delete request.httpRequest.headers['X-Amz-User-Agent'];\n\n if (signerClass === AWS.Signers.V4) {\n if (expires > 604800) { // one week expiry is invalid\n var message = 'Presigning does not support expiry time greater ' +\n 'than a week with SigV4 signing.';\n throw AWS.util.error(new Error(), {\n code: 'InvalidExpiryTime', message: message, retryable: false\n });\n }\n request.httpRequest.headers[expiresHeader] = expires;\n } else if (signerClass === AWS.Signers.S3) {\n var now = request.service ? request.service.getSkewCorrectedDate() : AWS.util.date.getDate();\n request.httpRequest.headers[expiresHeader] = parseInt(\n AWS.util.date.unixTimestamp(now) + expires, 10).toString();\n } else {\n throw AWS.util.error(new Error(), {\n message: 'Presigning only supports S3 or SigV4 signing.',\n code: 'UnsupportedSigner', retryable: false\n });\n }\n}\n\n/**\n * @api private\n */\nfunction signedUrlSigner(request) {\n var endpoint = request.httpRequest.endpoint;\n var parsedUrl = AWS.util.urlParse(request.httpRequest.path);\n var queryParams = {};\n\n if (parsedUrl.search) {\n queryParams = AWS.util.queryStringParse(parsedUrl.search.substr(1));\n }\n\n var auth = request.httpRequest.headers['Authorization'].split(' ');\n if (auth[0] === 'AWS') {\n auth = auth[1].split(':');\n queryParams['Signature'] = auth.pop();\n queryParams['AWSAccessKeyId'] = auth.join(':');\n\n AWS.util.each(request.httpRequest.headers, function (key, value) {\n if (key === expiresHeader) key = 'Expires';\n if (key.indexOf('x-amz-meta-') === 0) {\n // Delete existing, potentially not normalized key\n delete queryParams[key];\n key = key.toLowerCase();\n }\n queryParams[key] = value;\n });\n delete request.httpRequest.headers[expiresHeader];\n delete queryParams['Authorization'];\n delete queryParams['Host'];\n } else if (auth[0] === 'AWS4-HMAC-SHA256') { // SigV4 signing\n auth.shift();\n var rest = auth.join(' ');\n var signature = rest.match(/Signature=(.*?)(?:,|\\s|\\r?\\n|$)/)[1];\n queryParams['X-Amz-Signature'] = signature;\n delete queryParams['Expires'];\n }\n\n // build URL\n endpoint.pathname = parsedUrl.pathname;\n endpoint.search = AWS.util.queryParamsToString(queryParams);\n}\n\n/**\n * @api private\n */\nAWS.Signers.Presign = inherit({\n /**\n * @api private\n */\n sign: function sign(request, expireTime, callback) {\n request.httpRequest.headers[expiresHeader] = expireTime || 3600;\n request.on('build', signedUrlBuilder);\n request.on('sign', signedUrlSigner);\n request.removeListener('afterBuild',\n AWS.EventListeners.Core.SET_CONTENT_LENGTH);\n request.removeListener('afterBuild',\n AWS.EventListeners.Core.COMPUTE_SHA256);\n\n request.emit('beforePresign', [request]);\n\n if (callback) {\n request.build(function() {\n if (this.response.error) callback(this.response.error);\n else {\n callback(null, AWS.util.urlFormat(request.httpRequest.endpoint));\n }\n });\n } else {\n request.build();\n if (request.response.error) throw request.response.error;\n return AWS.util.urlFormat(request.httpRequest.endpoint);\n }\n }\n});\n\n/**\n * @api private\n */\nmodule.exports = AWS.Signers.Presign;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-jsx-runtime.production.min.js');\n} else {\n module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _rng = _interopRequireDefault(require(\"./rng.js\"));\n\nvar _bytesToUuid = _interopRequireDefault(require(\"./bytesToUuid.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction v4(options, buf, offset) {\n var i = buf && offset || 0;\n\n if (typeof options == 'string') {\n buf = options === 'binary' ? new Array(16) : null;\n options = null;\n }\n\n options = options || {};\n\n var rnds = options.random || (options.rng || _rng.default)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n for (var ii = 0; ii < 16; ++ii) {\n buf[i + ii] = rnds[ii];\n }\n }\n\n return buf || (0, _bytesToUuid.default)(rnds);\n}\n\nvar _default = v4;\nexports.default = _default;","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport ExtendedBrowserBehavior from '../browserbehavior/ExtendedBrowserBehavior';\nimport Logger from '../logger/Logger';\nimport VideoCodecCapability from '../sdp/VideoCodecCapability';\nimport TransceiverController from '../transceivercontroller/TransceiverController';\nimport DefaultVideoAndEncodeParameter from '../videocaptureandencodeparameter/DefaultVideoCaptureAndEncodeParameter';\nimport VideoStreamIndex from '../videostreamindex/VideoStreamIndex';\nimport ConnectionMetrics from './ConnectionMetrics';\nimport VideoUplinkBandwidthPolicy from './VideoUplinkBandwidthPolicy';\n\n/** NScaleVideoUplinkBandwidthPolicy implements capture and encode\n * parameters that are nearly equivalent to those chosen by the\n * traditional native clients, except for a modification to\n * maxBandwidthKbps and scaleResolutionDownBy described below. */\nexport default class NScaleVideoUplinkBandwidthPolicy implements VideoUplinkBandwidthPolicy {\n static readonly encodingMapKey = 'video';\n // 0, 1, 2 have dummy value as we keep the original resolution if we have less than 2 videos.\n // For each video cource, we define a target height for low resoultion and high resolution,\n // respectively. This is corresponding to the meeting feature specified for the meeting.\n static readonly targetHeightArray = [\n [0, 0], // 0\n [0, 0], // 1\n [0, 0], // 2\n [540, 720], // 3\n [540, 720], // 4\n [480, 540], // 5\n [480, 540], // 6\n [480, 540], // 7\n [480, 540], // 8\n [360, 480], // 9\n [360, 480], // 10\n [360, 480], // 11\n [360, 480], // 12\n [270, 360], // 13\n [270, 360], // 14\n [270, 360], // 15\n [270, 360], // 16\n [180, 270], // 17\n [180, 270], // 18\n [180, 270], // 19\n [180, 270], // 20\n [180, 270], // 21\n [180, 270], // 22\n [180, 270], // 23\n [180, 270], // 24\n [180, 270], // 25\n ];\n static readonly SVCCodecNames: string[] = ['VP9'];\n\n private numberOfPublishedVideoSources: number | undefined = undefined;\n private optimalParameters: DefaultVideoAndEncodeParameter;\n private parametersInEffect: DefaultVideoAndEncodeParameter;\n private idealMaxBandwidthKbps = 1500;\n private hasBandwidthPriority: boolean = false;\n private encodingParamMap = new Map();\n private transceiverController: TransceiverController;\n private enableHighResolutionFeature: boolean = false;\n private enableSVC: boolean = false;\n private isUsingSVCCodec: boolean = true;\n private numParticipants: number = 0;\n\n constructor(\n private selfAttendeeId: string,\n private scaleResolution: boolean = true,\n private logger: Logger | undefined = undefined,\n private browserBehavior: ExtendedBrowserBehavior | undefined = undefined\n ) {\n this.reset();\n }\n\n reset(): void {\n // Don't reset `idealMaxBandwidthKbps` or `hasBandwidthPriority` which are set via builder API paths\n this.numberOfPublishedVideoSources = undefined;\n this.optimalParameters = new DefaultVideoAndEncodeParameter(0, 0, 0, 0, false);\n this.parametersInEffect = new DefaultVideoAndEncodeParameter(0, 0, 0, 0, false);\n this.encodingParamMap.set(NScaleVideoUplinkBandwidthPolicy.encodingMapKey, {\n maxBitrate: 0,\n });\n }\n\n updateConnectionMetric(_metrics: ConnectionMetrics): void {\n return;\n }\n\n chooseMediaTrackConstraints(): MediaTrackConstraints {\n return {};\n }\n\n chooseEncodingParameters(): Map {\n return new Map();\n }\n\n updateIndex(videoIndex: VideoStreamIndex): void {\n let hasLocalVideo = true;\n if (this.transceiverController) {\n hasLocalVideo = this.transceiverController.hasVideoInput();\n }\n // the +1 for self is assuming that we intend to send video, since\n // the context here is VideoUplinkBandwidthPolicy\n const numberOfPublishedVideoSources =\n videoIndex.numberOfVideoPublishingParticipantsExcludingSelf(this.selfAttendeeId) +\n (hasLocalVideo ? 1 : 0);\n const numParticipants = videoIndex.numberOfParticipants();\n if (\n this.numParticipants === numParticipants &&\n this.numberOfPublishedVideoSources === numberOfPublishedVideoSources\n ) {\n this.logger?.debug('Skipping update index; Number of participants has not changed');\n return;\n }\n this.numberOfPublishedVideoSources = numberOfPublishedVideoSources;\n this.numParticipants = numParticipants;\n\n this.updateOptimalParameters();\n }\n\n wantsResubscribe(): boolean {\n return !this.parametersInEffect.equal(this.optimalParameters);\n }\n\n chooseCaptureAndEncodeParameters(): DefaultVideoAndEncodeParameter {\n this.parametersInEffect = this.optimalParameters.clone();\n return this.parametersInEffect.clone();\n }\n\n private updateOptimalParameters(): void {\n let scale = 1;\n if (this.transceiverController) {\n const settings = this.getStreamCaptureSetting();\n if (settings) {\n const encodingParams = this.calculateEncodingParameters(settings);\n scale = encodingParams.scaleResolutionDownBy;\n }\n }\n this.optimalParameters = new DefaultVideoAndEncodeParameter(\n this.captureWidth(),\n this.captureHeight(),\n this.captureFrameRate(),\n this.maxBandwidthKbps(),\n false,\n scale,\n this.enableSVC && this.numParticipants > 2 && this.isUsingSVCCodec\n );\n }\n\n private captureWidth(): number {\n let width = 640;\n if (this.getNumberOfPublishedVideoSources() > 4) {\n width = 320;\n }\n return width;\n }\n\n private captureHeight(): number {\n let height = 384;\n if (this.getNumberOfPublishedVideoSources() > 4) {\n height = 192;\n }\n return height;\n }\n\n private captureFrameRate(): number {\n return 15;\n }\n\n maxBandwidthKbps(): number {\n if (this.hasBandwidthPriority) {\n return Math.trunc(this.idealMaxBandwidthKbps);\n }\n let rate = 0;\n if (this.getNumberOfPublishedVideoSources() <= 2) {\n rate = this.idealMaxBandwidthKbps;\n } else if (this.getNumberOfPublishedVideoSources() <= 4) {\n rate = (this.idealMaxBandwidthKbps * 2) / 3;\n } else {\n rate =\n ((544 / 11 + 14880 / (11 * this.getNumberOfPublishedVideoSources())) / 600) *\n this.idealMaxBandwidthKbps;\n }\n return Math.trunc(rate);\n }\n\n setIdealMaxBandwidthKbps(idealMaxBandwidthKbps: number): void {\n this.idealMaxBandwidthKbps = idealMaxBandwidthKbps;\n }\n\n setHasBandwidthPriority(hasBandwidthPriority: boolean): void {\n this.hasBandwidthPriority = hasBandwidthPriority;\n }\n\n setTransceiverController(transceiverController: TransceiverController | undefined): void {\n this.transceiverController = transceiverController;\n }\n\n setSVCEnabled(enable: boolean): void {\n this.enableSVC = enable;\n this.logger?.info(`setSVCEnabled, enable: ${enable}}`);\n }\n\n setHighResolutionFeatureEnabled(enabled: boolean): void {\n this.enableHighResolutionFeature = enabled;\n }\n\n async updateTransceiverController(): Promise {\n const settings = this.getStreamCaptureSetting();\n if (!settings) {\n return;\n }\n const encodingParams: RTCRtpEncodingParameters = this.calculateEncodingParameters(settings);\n if (this.shouldUpdateEndcodingParameters(encodingParams)) {\n this.encodingParamMap.set(NScaleVideoUplinkBandwidthPolicy.encodingMapKey, encodingParams);\n this.transceiverController.setEncodingParameters(this.encodingParamMap);\n }\n }\n\n private shouldUpdateEndcodingParameters(encoding: RTCRtpEncodingParameters): boolean {\n const transceiverEncoding = this.transceiverController\n .localVideoTransceiver()\n .sender.getParameters()?.encodings?.[0];\n\n /* istanbul ignore next: transceiverEncoding?.scaleResolutionDownBy cannot be covered */\n return (\n encoding.maxBitrate !== transceiverEncoding?.maxBitrate ||\n encoding.scaleResolutionDownBy !== transceiverEncoding?.scaleResolutionDownBy ||\n // @ts-ignore\n encoding?.scalabilityMode !== transceiverEncoding?.scalabilityMode\n );\n }\n\n private calculateEncodingParameters(setting: MediaTrackSettings): RTCRtpEncodingParameters {\n const maxBitrate = this.maxBandwidthKbps() * 1000;\n let scale = 1;\n let targetHeight = 720;\n if (\n setting.height !== undefined &&\n setting.width !== undefined &&\n this.scaleResolution &&\n !this.hasBandwidthPriority &&\n this.getNumberOfPublishedVideoSources() > 2\n ) {\n targetHeight =\n NScaleVideoUplinkBandwidthPolicy.targetHeightArray[\n Math.min(\n this.getNumberOfPublishedVideoSources(),\n NScaleVideoUplinkBandwidthPolicy.targetHeightArray.length - 1\n )\n ][this.enableHighResolutionFeature ? 1 : 0];\n //Workaround for issue https://github.com/aws/amazon-chime-sdk-js/issues/2002\n if (targetHeight === 480 && this.browserBehavior?.disable480pResolutionScaleDown()) {\n targetHeight = 360;\n }\n scale = Math.max(Math.min(setting.height, setting.width) / targetHeight, 1);\n this.logger?.info(\n `Resolution scale factor is ${scale} for capture resolution ${setting.width}x${\n setting.height\n }. New dimension is ${setting.width / scale}x${setting.height / scale}`\n );\n }\n\n if (this.enableSVC) {\n let scalabilityMode: string;\n if ((this.numParticipants >= 0 && this.numParticipants < 3) || !this.isUsingSVCCodec) {\n scalabilityMode = 'L1T1';\n } else {\n // We do not limit the number of layers depending on input resolution, however Chrome will drop anything below around 135p.\n scalabilityMode = 'L3T3';\n }\n this.logger?.info(\n `calculateEncodingParameters: SVC: ${this.enableSVC} participants: ${\n this.numParticipants\n } publishers: ${this.getNumberOfPublishedVideoSources()} bitrate: ${maxBitrate} targetHeight: ${targetHeight} scalabilityMode: ${scalabilityMode} isUsingSVCCodec: ${\n this.isUsingSVCCodec\n }`\n );\n return {\n scaleResolutionDownBy: scale,\n maxBitrate: maxBitrate,\n // @ts-ignore\n scalabilityMode: scalabilityMode,\n };\n } else {\n return {\n scaleResolutionDownBy: scale,\n maxBitrate: maxBitrate,\n };\n }\n }\n\n private getStreamCaptureSetting(): MediaTrackSettings | undefined {\n return this.transceiverController?.localVideoTransceiver()?.sender?.track?.getSettings();\n }\n\n private getNumberOfPublishedVideoSources(): number {\n /* istanbul ignore next: policy calculation is dependent on index so this is never undefined at time of use */\n return this.numberOfPublishedVideoSources ?? 0;\n }\n\n wantsVideoDependencyDescriptorRtpHeaderExtension(): boolean {\n return this.enableSVC;\n }\n\n setMeetingSupportedVideoSendCodecs(\n meetingSupportedVideoSendCodecPreferences: VideoCodecCapability[] | undefined,\n videoSendCodecPreferences: VideoCodecCapability[]\n ): void {\n const codecs = meetingSupportedVideoSendCodecPreferences ?? videoSendCodecPreferences;\n\n const isUsingSVCCodec =\n codecs.length > 0 &&\n NScaleVideoUplinkBandwidthPolicy.SVCCodecNames.includes(codecs[0].codecName);\n if (isUsingSVCCodec !== this.isUsingSVCCodec) {\n this.isUsingSVCCodec = isUsingSVCCodec;\n this.updateOptimalParameters();\n }\n }\n}\n","'use strict';\n\nvar enhanceError = require('./enhanceError');\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */\nmodule.exports = function createError(message, config, code, request, response) {\n var error = new Error(message);\n return enhanceError(error, config, code, request, response);\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\n\nvar $Object = Object;\nvar split = uncurryThis(''.split);\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n // eslint-disable-next-line no-prototype-builtins -- safe\n return !$Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n return classof(it) === 'String' ? split(it, '') : $Object(it);\n} : $Object;\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport BackgroundFilterSpec from '../backgroundfilter/BackgroundFilterSpec';\nimport BackgroundFilterVideoFrameProcessor from '../backgroundfilter/BackgroundFilterVideoFrameProcessor';\nimport BackgroundReplacementProcessor from '../backgroundreplacementprocessor/BackgroundReplacementProcessor';\nimport ConsoleLogger from '../logger/ConsoleLogger';\nimport LogLevel from '../logger/LogLevel';\nimport NoOpVideoFrameProcessor from '../videoframeprocessor/NoOpVideoFrameProcessor';\nimport BackgroundReplacementFilter from './BackgroundReplacementFilter';\nimport BackgroundReplacementOptions from './BackgroundReplacementOptions';\n\n/**\n * No-op implementation of the background replacement processor. An instance of this class will be returned when a user attempts\n * to create a background replacement processor when it is not supported.\n */\n/** @internal */\nclass NoOpBackgroundReplacementProcessor\n extends NoOpVideoFrameProcessor\n implements BackgroundReplacementProcessor {\n /**\n * no-op\n * @returns\n */\n async loadAssets(): Promise {\n return;\n }\n\n /**\n * no-op\n */\n addObserver(): void {}\n\n /**\n * no-op\n */\n removeObserver(): void {}\n\n /**\n * no-op\n */\n async setImageBlob(): Promise {\n return;\n }\n}\n\n/**\n * [[BackgroundReplacementVideoFrameProcessor]]\n * Creates a background replacement processor which identifies the foreground person and replaces the background.\n */\nexport default class BackgroundReplacementVideoFrameProcessor extends BackgroundFilterVideoFrameProcessor {\n /**\n * A factory method that will call the private constructor to instantiate the processor and asynchronously\n * initialize the worker, wasm, and ML models. Upon completion of the initialization the promise will either\n * be resolved or rejected.\n * @param spec The spec defines the assets that will be used for adding background filter to a frame\n * @param imagePath The background replacement image path\n */\n static async create(\n spec?: BackgroundFilterSpec,\n options?: BackgroundReplacementOptions\n ): Promise {\n spec = this.resolveSpec(spec);\n options = this.resolveOptions(options);\n await this.resolveOptionsAsync(options);\n const { logger } = options;\n\n const supported = await BackgroundReplacementVideoFrameProcessor.isSupported(spec, options);\n // if background replacement is not supported do not initialize. The processor will become a no op if not supported.\n if (!supported) {\n logger.warn('Using no-op processor because background replacement is not supported');\n return new NoOpBackgroundReplacementProcessor();\n }\n\n logger.info('Using background replacement filter');\n const processor = new BackgroundReplacementFilter(spec, options);\n\n await processor.loadAssets();\n return processor;\n }\n\n /**\n * Based on the options that are passed in set defaults for options\n * @param options the options that are passed in\n * @returns An updated set of options with defaults set\n */\n protected static resolveOptions(\n options: BackgroundReplacementOptions = {}\n ): BackgroundReplacementOptions {\n const processorOptions: BackgroundReplacementOptions = { ...options };\n\n if (!processorOptions.logger) {\n processorOptions.logger = new ConsoleLogger('BackgroundReplacementProcessor', LogLevel.INFO);\n }\n\n return super.resolveOptions(processorOptions);\n }\n\n private static async resolveOptionsAsync(options: BackgroundReplacementOptions): Promise {\n if (!options.imageBlob) {\n const canvas = document.createElement('canvas');\n canvas.width = 100;\n canvas.height = 100;\n const ctx = canvas.getContext('2d');\n ctx.fillStyle = 'blue';\n ctx.fillRect(0, 0, 100, 100);\n const blob = await new Promise(resolve => {\n canvas.toBlob(resolve);\n });\n options.imageBlob = blob;\n }\n return;\n }\n\n /**\n * This method will detect the environment in which it is being used and determine if background\n * replacement can be used.\n * @param spec The {@link BackgroundFilterSpec} spec that will be used to initialize assets\n * @param options options such as logger and imagePath\n * @returns a boolean promise that will resolve to true if supported and false if not\n */\n static async isSupported(\n spec?: BackgroundFilterSpec,\n options?: BackgroundReplacementOptions\n ): Promise {\n spec = this.resolveSpec(spec);\n options = this.resolveOptions(options);\n await this.resolveOptionsAsync(options);\n const imageBlob = options.imageBlob;\n const imageUrl = URL.createObjectURL(imageBlob);\n try {\n await BackgroundReplacementFilter.loadImage(imageUrl);\n } catch (e) {\n options.logger.info(`Failed to fetch load replacement image ${e.message}`);\n return false;\n } finally {\n URL.revokeObjectURL(imageUrl);\n }\n return super.isSupported(spec, options);\n }\n}\n","var hashUtils = require('./browserHashUtils');\nvar Buffer = require('buffer/').Buffer;\n\nvar BLOCK_SIZE = 64;\n\nvar DIGEST_LENGTH = 16;\n\nvar INIT = [\n 0x67452301,\n 0xefcdab89,\n 0x98badcfe,\n 0x10325476,\n];\n\n/**\n * @api private\n */\nfunction Md5() {\n this.state = [\n 0x67452301,\n 0xefcdab89,\n 0x98badcfe,\n 0x10325476,\n ];\n this.buffer = new DataView(new ArrayBuffer(BLOCK_SIZE));\n this.bufferLength = 0;\n this.bytesHashed = 0;\n this.finished = false;\n}\n\n/**\n * @api private\n */\nmodule.exports = exports = Md5;\n\nMd5.BLOCK_SIZE = BLOCK_SIZE;\n\nMd5.prototype.update = function (sourceData) {\n if (hashUtils.isEmptyData(sourceData)) {\n return this;\n } else if (this.finished) {\n throw new Error('Attempted to update an already finished hash.');\n }\n\n var data = hashUtils.convertToBuffer(sourceData);\n var position = 0;\n var byteLength = data.byteLength;\n this.bytesHashed += byteLength;\n while (byteLength > 0) {\n this.buffer.setUint8(this.bufferLength++, data[position++]);\n byteLength--;\n if (this.bufferLength === BLOCK_SIZE) {\n this.hashBuffer();\n this.bufferLength = 0;\n }\n }\n\n return this;\n};\n\nMd5.prototype.digest = function (encoding) {\n if (!this.finished) {\n var _a = this, buffer = _a.buffer, undecoratedLength = _a.bufferLength, bytesHashed = _a.bytesHashed;\n var bitsHashed = bytesHashed * 8;\n buffer.setUint8(this.bufferLength++, 128);\n // Ensure the final block has enough room for the hashed length\n if (undecoratedLength % BLOCK_SIZE >= BLOCK_SIZE - 8) {\n for (var i = this.bufferLength; i < BLOCK_SIZE; i++) {\n buffer.setUint8(i, 0);\n }\n this.hashBuffer();\n this.bufferLength = 0;\n }\n for (var i = this.bufferLength; i < BLOCK_SIZE - 8; i++) {\n buffer.setUint8(i, 0);\n }\n buffer.setUint32(BLOCK_SIZE - 8, bitsHashed >>> 0, true);\n buffer.setUint32(BLOCK_SIZE - 4, Math.floor(bitsHashed / 0x100000000), true);\n this.hashBuffer();\n this.finished = true;\n }\n var out = new DataView(new ArrayBuffer(DIGEST_LENGTH));\n for (var i = 0; i < 4; i++) {\n out.setUint32(i * 4, this.state[i], true);\n }\n var buff = new Buffer(out.buffer, out.byteOffset, out.byteLength);\n return encoding ? buff.toString(encoding) : buff;\n};\n\nMd5.prototype.hashBuffer = function () {\n var _a = this, buffer = _a.buffer, state = _a.state;\n var a = state[0], b = state[1], c = state[2], d = state[3];\n a = ff(a, b, c, d, buffer.getUint32(0, true), 7, 0xd76aa478);\n d = ff(d, a, b, c, buffer.getUint32(4, true), 12, 0xe8c7b756);\n c = ff(c, d, a, b, buffer.getUint32(8, true), 17, 0x242070db);\n b = ff(b, c, d, a, buffer.getUint32(12, true), 22, 0xc1bdceee);\n a = ff(a, b, c, d, buffer.getUint32(16, true), 7, 0xf57c0faf);\n d = ff(d, a, b, c, buffer.getUint32(20, true), 12, 0x4787c62a);\n c = ff(c, d, a, b, buffer.getUint32(24, true), 17, 0xa8304613);\n b = ff(b, c, d, a, buffer.getUint32(28, true), 22, 0xfd469501);\n a = ff(a, b, c, d, buffer.getUint32(32, true), 7, 0x698098d8);\n d = ff(d, a, b, c, buffer.getUint32(36, true), 12, 0x8b44f7af);\n c = ff(c, d, a, b, buffer.getUint32(40, true), 17, 0xffff5bb1);\n b = ff(b, c, d, a, buffer.getUint32(44, true), 22, 0x895cd7be);\n a = ff(a, b, c, d, buffer.getUint32(48, true), 7, 0x6b901122);\n d = ff(d, a, b, c, buffer.getUint32(52, true), 12, 0xfd987193);\n c = ff(c, d, a, b, buffer.getUint32(56, true), 17, 0xa679438e);\n b = ff(b, c, d, a, buffer.getUint32(60, true), 22, 0x49b40821);\n a = gg(a, b, c, d, buffer.getUint32(4, true), 5, 0xf61e2562);\n d = gg(d, a, b, c, buffer.getUint32(24, true), 9, 0xc040b340);\n c = gg(c, d, a, b, buffer.getUint32(44, true), 14, 0x265e5a51);\n b = gg(b, c, d, a, buffer.getUint32(0, true), 20, 0xe9b6c7aa);\n a = gg(a, b, c, d, buffer.getUint32(20, true), 5, 0xd62f105d);\n d = gg(d, a, b, c, buffer.getUint32(40, true), 9, 0x02441453);\n c = gg(c, d, a, b, buffer.getUint32(60, true), 14, 0xd8a1e681);\n b = gg(b, c, d, a, buffer.getUint32(16, true), 20, 0xe7d3fbc8);\n a = gg(a, b, c, d, buffer.getUint32(36, true), 5, 0x21e1cde6);\n d = gg(d, a, b, c, buffer.getUint32(56, true), 9, 0xc33707d6);\n c = gg(c, d, a, b, buffer.getUint32(12, true), 14, 0xf4d50d87);\n b = gg(b, c, d, a, buffer.getUint32(32, true), 20, 0x455a14ed);\n a = gg(a, b, c, d, buffer.getUint32(52, true), 5, 0xa9e3e905);\n d = gg(d, a, b, c, buffer.getUint32(8, true), 9, 0xfcefa3f8);\n c = gg(c, d, a, b, buffer.getUint32(28, true), 14, 0x676f02d9);\n b = gg(b, c, d, a, buffer.getUint32(48, true), 20, 0x8d2a4c8a);\n a = hh(a, b, c, d, buffer.getUint32(20, true), 4, 0xfffa3942);\n d = hh(d, a, b, c, buffer.getUint32(32, true), 11, 0x8771f681);\n c = hh(c, d, a, b, buffer.getUint32(44, true), 16, 0x6d9d6122);\n b = hh(b, c, d, a, buffer.getUint32(56, true), 23, 0xfde5380c);\n a = hh(a, b, c, d, buffer.getUint32(4, true), 4, 0xa4beea44);\n d = hh(d, a, b, c, buffer.getUint32(16, true), 11, 0x4bdecfa9);\n c = hh(c, d, a, b, buffer.getUint32(28, true), 16, 0xf6bb4b60);\n b = hh(b, c, d, a, buffer.getUint32(40, true), 23, 0xbebfbc70);\n a = hh(a, b, c, d, buffer.getUint32(52, true), 4, 0x289b7ec6);\n d = hh(d, a, b, c, buffer.getUint32(0, true), 11, 0xeaa127fa);\n c = hh(c, d, a, b, buffer.getUint32(12, true), 16, 0xd4ef3085);\n b = hh(b, c, d, a, buffer.getUint32(24, true), 23, 0x04881d05);\n a = hh(a, b, c, d, buffer.getUint32(36, true), 4, 0xd9d4d039);\n d = hh(d, a, b, c, buffer.getUint32(48, true), 11, 0xe6db99e5);\n c = hh(c, d, a, b, buffer.getUint32(60, true), 16, 0x1fa27cf8);\n b = hh(b, c, d, a, buffer.getUint32(8, true), 23, 0xc4ac5665);\n a = ii(a, b, c, d, buffer.getUint32(0, true), 6, 0xf4292244);\n d = ii(d, a, b, c, buffer.getUint32(28, true), 10, 0x432aff97);\n c = ii(c, d, a, b, buffer.getUint32(56, true), 15, 0xab9423a7);\n b = ii(b, c, d, a, buffer.getUint32(20, true), 21, 0xfc93a039);\n a = ii(a, b, c, d, buffer.getUint32(48, true), 6, 0x655b59c3);\n d = ii(d, a, b, c, buffer.getUint32(12, true), 10, 0x8f0ccc92);\n c = ii(c, d, a, b, buffer.getUint32(40, true), 15, 0xffeff47d);\n b = ii(b, c, d, a, buffer.getUint32(4, true), 21, 0x85845dd1);\n a = ii(a, b, c, d, buffer.getUint32(32, true), 6, 0x6fa87e4f);\n d = ii(d, a, b, c, buffer.getUint32(60, true), 10, 0xfe2ce6e0);\n c = ii(c, d, a, b, buffer.getUint32(24, true), 15, 0xa3014314);\n b = ii(b, c, d, a, buffer.getUint32(52, true), 21, 0x4e0811a1);\n a = ii(a, b, c, d, buffer.getUint32(16, true), 6, 0xf7537e82);\n d = ii(d, a, b, c, buffer.getUint32(44, true), 10, 0xbd3af235);\n c = ii(c, d, a, b, buffer.getUint32(8, true), 15, 0x2ad7d2bb);\n b = ii(b, c, d, a, buffer.getUint32(36, true), 21, 0xeb86d391);\n state[0] = (a + state[0]) & 0xFFFFFFFF;\n state[1] = (b + state[1]) & 0xFFFFFFFF;\n state[2] = (c + state[2]) & 0xFFFFFFFF;\n state[3] = (d + state[3]) & 0xFFFFFFFF;\n};\n\nfunction cmn(q, a, b, x, s, t) {\n a = (((a + q) & 0xFFFFFFFF) + ((x + t) & 0xFFFFFFFF)) & 0xFFFFFFFF;\n return (((a << s) | (a >>> (32 - s))) + b) & 0xFFFFFFFF;\n}\n\nfunction ff(a, b, c, d, x, s, t) {\n return cmn((b & c) | ((~b) & d), a, b, x, s, t);\n}\n\nfunction gg(a, b, c, d, x, s, t) {\n return cmn((b & d) | (c & (~d)), a, b, x, s, t);\n}\n\nfunction hh(a, b, c, d, x, s, t) {\n return cmn(b ^ c ^ d, a, b, x, s, t);\n}\n\nfunction ii(a, b, c, d, x, s, t) {\n return cmn(c ^ (b | (~d)), a, b, x, s, t);\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nexport enum CheckAudioInputFeedback {\n Succeeded,\n Failed,\n PermissionDenied,\n}\n\nexport default CheckAudioInputFeedback;\n","'use strict';\n\nvar callBound = require('call-bound');\nvar safeRegexTest = require('safe-regex-test');\nvar isFnRegex = safeRegexTest(/^\\s*(?:function)?\\*/);\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar getProto = require('get-proto');\n\nvar toStr = callBound('Object.prototype.toString');\nvar fnToStr = callBound('Function.prototype.toString');\n\nvar getGeneratorFunc = function () { // eslint-disable-line consistent-return\n\tif (!hasToStringTag) {\n\t\treturn false;\n\t}\n\ttry {\n\t\treturn Function('return function*() {}')();\n\t} catch (e) {\n\t}\n};\n/** @type {undefined | false | null | GeneratorFunctionConstructor} */\nvar GeneratorFunction;\n\n/** @type {import('.')} */\nmodule.exports = function isGeneratorFunction(fn) {\n\tif (typeof fn !== 'function') {\n\t\treturn false;\n\t}\n\tif (isFnRegex(fnToStr(fn))) {\n\t\treturn true;\n\t}\n\tif (!hasToStringTag) {\n\t\tvar str = toStr(fn);\n\t\treturn str === '[object GeneratorFunction]';\n\t}\n\tif (!getProto) {\n\t\treturn false;\n\t}\n\tif (typeof GeneratorFunction === 'undefined') {\n\t\tvar generatorFunc = getGeneratorFunc();\n\t\tGeneratorFunction = generatorFunc\n\t\t\t// eslint-disable-next-line no-extra-parens\n\t\t\t? /** @type {GeneratorFunctionConstructor} */ (getProto(generatorFunc))\n\t\t\t: false;\n\t}\n\treturn getProto(fn) === GeneratorFunction;\n};\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['ecs'] = {};\nAWS.ECS = Service.defineService('ecs', ['2014-11-13']);\nObject.defineProperty(apiLoader.services['ecs'], '2014-11-13', {\n get: function get() {\n var model = require('../apis/ecs-2014-11-13.min.json');\n model.paginators = require('../apis/ecs-2014-11-13.paginators.json').pagination;\n model.waiters = require('../apis/ecs-2014-11-13.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.ECS;\n","/**\n * Javascript implementation of mask generation function MGF1.\n *\n * @author Stefan Siegl\n * @author Dave Longley\n *\n * Copyright (c) 2012 Stefan Siegl \n * Copyright (c) 2014 Digital Bazaar, Inc.\n */\nvar forge = require('./forge');\nrequire('./util');\n\nforge.mgf = forge.mgf || {};\nvar mgf1 = module.exports = forge.mgf.mgf1 = forge.mgf1 = forge.mgf1 || {};\n\n/**\n * Creates a MGF1 mask generation function object.\n *\n * @param md the message digest API to use (eg: forge.md.sha1.create()).\n *\n * @return a mask generation function object.\n */\nmgf1.create = function(md) {\n var mgf = {\n /**\n * Generate mask of specified length.\n *\n * @param {String} seed The seed for mask generation.\n * @param maskLen Number of bytes to generate.\n * @return {String} The generated mask.\n */\n generate: function(seed, maskLen) {\n /* 2. Let T be the empty octet string. */\n var t = new forge.util.ByteBuffer();\n\n /* 3. For counter from 0 to ceil(maskLen / hLen), do the following: */\n var len = Math.ceil(maskLen / md.digestLength);\n for(var i = 0; i < len; i++) {\n /* a. Convert counter to an octet string C of length 4 octets */\n var c = new forge.util.ByteBuffer();\n c.putInt32(i);\n\n /* b. Concatenate the hash of the seed mgfSeed and C to the octet\n * string T: */\n md.start();\n md.update(seed + c.getBytes());\n t.putBuffer(md.digest());\n }\n\n /* Output the leading maskLen octets of T as the octet string mask. */\n t.truncate(t.length() - maskLen);\n return t.getBytes();\n }\n };\n\n return mgf;\n};\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['translate'] = {};\nAWS.Translate = Service.defineService('translate', ['2017-07-01']);\nObject.defineProperty(apiLoader.services['translate'], '2017-07-01', {\n get: function get() {\n var model = require('../apis/translate-2017-07-01.min.json');\n model.paginators = require('../apis/translate-2017-07-01.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.Translate;\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport Logger from './Logger';\nimport LogLevel from './LogLevel';\n\n/**\n * ConsoleLogger writes logs with console\n *\n * ```typescript\n * // working with the ConsoleLogger\n * const logger = new ConsoleLogger('demo'); //default level is LogLevel.WARN\n * logger.info('info');\n * logger.debug('debug');\n * logger.warn('warn');\n * logger.error('error');\n *\n * // setting logging levels\n * const logger = new ConsoleLogger('demo', LogLevel.INFO)\n * logger.debug(debugFunc()); // this will not show up\n * logger.setLogLevel(LogLevel.DEBUG)\n * logger.debug(debugFunc()); // this will show up\n *\n * ```\n */\nexport default class ConsoleLogger implements Logger {\n name: string;\n level: LogLevel;\n\n constructor(name: string, level = LogLevel.WARN) {\n this.name = name;\n this.level = level;\n }\n\n info(msg: string): void {\n this.log(LogLevel.INFO, msg);\n }\n\n warn(msg: string): void {\n this.log(LogLevel.WARN, msg);\n }\n\n error(msg: string): void {\n this.log(LogLevel.ERROR, msg);\n }\n\n debug(debugFunction: string | (() => string)): void {\n if (LogLevel.DEBUG < this.level) {\n return;\n }\n\n if (typeof debugFunction === 'string') {\n this.log(LogLevel.DEBUG, debugFunction);\n } else if (debugFunction) {\n this.log(LogLevel.DEBUG, debugFunction());\n } else {\n this.log(LogLevel.DEBUG, '' + debugFunction);\n }\n }\n\n setLogLevel(level: LogLevel): void {\n this.level = level;\n }\n\n getLogLevel(): LogLevel {\n return this.level;\n }\n\n private log(type: LogLevel, msg: string): void {\n if (type < this.level) {\n return;\n }\n\n const timestamp = new Date().toISOString();\n const logMessage = `${timestamp} [${LogLevel[type]}] ${this.name} - ${msg}`;\n\n switch (type) {\n case LogLevel.ERROR:\n console.error(logMessage);\n break;\n case LogLevel.WARN:\n console.warn(logMessage);\n break;\n case LogLevel.DEBUG:\n console.debug(logMessage.replace(/\\\\r\\\\n/g, '\\n'));\n break;\n case LogLevel.INFO:\n console.info(logMessage);\n break;\n }\n }\n}\n","'use strict';\n\nvar utils = require('./../utils');\nvar settle = require('./../core/settle');\nvar cookies = require('./../helpers/cookies');\nvar buildURL = require('./../helpers/buildURL');\nvar buildFullPath = require('../core/buildFullPath');\nvar parseHeaders = require('./../helpers/parseHeaders');\nvar isURLSameOrigin = require('./../helpers/isURLSameOrigin');\nvar createError = require('../core/createError');\n\nmodule.exports = function xhrAdapter(config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n var requestData = config.data;\n var requestHeaders = config.headers;\n var responseType = config.responseType;\n\n if (utils.isFormData(requestData)) {\n delete requestHeaders['Content-Type']; // Let the browser set it\n }\n\n var request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n var username = config.auth.username || '';\n var password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';\n requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n }\n\n var fullPath = buildFullPath(config.baseURL, config.url);\n request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n var response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config: config,\n request: request\n };\n\n settle(resolve, reject, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(createError('Request aborted', config, 'ECONNABORTED', request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(createError('Network Error', config, null, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n var timeoutErrorMessage = 'timeout of ' + config.timeout + 'ms exceeded';\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(createError(\n timeoutErrorMessage,\n config,\n config.transitional && config.transitional.clarifyTimeoutError ? 'ETIMEDOUT' : 'ECONNABORTED',\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if (utils.isStandardBrowserEnv()) {\n // Add xsrf header\n var xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath)) && config.xsrfCookieName ?\n cookies.read(config.xsrfCookieName) :\n undefined;\n\n if (xsrfValue) {\n requestHeaders[config.xsrfHeaderName] = xsrfValue;\n }\n }\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n // Remove Content-Type if data is undefined\n delete requestHeaders[key];\n } else {\n // Otherwise add header to the request\n request.setRequestHeader(key, val);\n }\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(config.withCredentials)) {\n request.withCredentials = !!config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = config.responseType;\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', config.onDownloadProgress);\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', config.onUploadProgress);\n }\n\n if (config.cancelToken) {\n // Handle cancellation\n config.cancelToken.promise.then(function onCanceled(cancel) {\n if (!request) {\n return;\n }\n\n request.abort();\n reject(cancel);\n // Clean up request\n request = null;\n });\n }\n\n if (!requestData) {\n requestData = null;\n }\n\n // Send the request\n request.send(requestData);\n });\n};\n","/* eslint guard-for-in:0 */\nvar AWS;\n\n/**\n * A set of utility methods for use with the AWS SDK.\n *\n * @!attribute abort\n * Return this value from an iterator function {each} or {arrayEach}\n * to break out of the iteration.\n * @example Breaking out of an iterator function\n * AWS.util.each({a: 1, b: 2, c: 3}, function(key, value) {\n * if (key == 'b') return AWS.util.abort;\n * });\n * @see each\n * @see arrayEach\n * @api private\n */\nvar util = {\n environment: 'nodejs',\n engine: function engine() {\n if (util.isBrowser() && typeof navigator !== 'undefined') {\n return navigator.userAgent;\n } else {\n var engine = process.platform + '/' + process.version;\n if (process.env.AWS_EXECUTION_ENV) {\n engine += ' exec-env/' + process.env.AWS_EXECUTION_ENV;\n }\n return engine;\n }\n },\n\n userAgent: function userAgent() {\n var name = util.environment;\n var agent = 'aws-sdk-' + name + '/' + require('./core').VERSION;\n if (name === 'nodejs') agent += ' ' + util.engine();\n return agent;\n },\n\n uriEscape: function uriEscape(string) {\n var output = encodeURIComponent(string);\n output = output.replace(/[^A-Za-z0-9_.~\\-%]+/g, escape);\n\n // AWS percent-encodes some extra non-standard characters in a URI\n output = output.replace(/[*]/g, function(ch) {\n return '%' + ch.charCodeAt(0).toString(16).toUpperCase();\n });\n\n return output;\n },\n\n uriEscapePath: function uriEscapePath(string) {\n var parts = [];\n util.arrayEach(string.split('/'), function (part) {\n parts.push(util.uriEscape(part));\n });\n return parts.join('/');\n },\n\n urlParse: function urlParse(url) {\n return util.url.parse(url);\n },\n\n urlFormat: function urlFormat(url) {\n return util.url.format(url);\n },\n\n queryStringParse: function queryStringParse(qs) {\n return util.querystring.parse(qs);\n },\n\n queryParamsToString: function queryParamsToString(params) {\n var items = [];\n var escape = util.uriEscape;\n var sortedKeys = Object.keys(params).sort();\n\n util.arrayEach(sortedKeys, function(name) {\n var value = params[name];\n var ename = escape(name);\n var result = ename + '=';\n if (Array.isArray(value)) {\n var vals = [];\n util.arrayEach(value, function(item) { vals.push(escape(item)); });\n result = ename + '=' + vals.sort().join('&' + ename + '=');\n } else if (value !== undefined && value !== null) {\n result = ename + '=' + escape(value);\n }\n items.push(result);\n });\n\n return items.join('&');\n },\n\n readFileSync: function readFileSync(path) {\n if (util.isBrowser()) return null;\n return require('fs').readFileSync(path, 'utf-8');\n },\n\n base64: {\n encode: function encode64(string) {\n if (typeof string === 'number') {\n throw util.error(new Error('Cannot base64 encode number ' + string));\n }\n if (string === null || typeof string === 'undefined') {\n return string;\n }\n var buf = util.buffer.toBuffer(string);\n return buf.toString('base64');\n },\n\n decode: function decode64(string) {\n if (typeof string === 'number') {\n throw util.error(new Error('Cannot base64 decode number ' + string));\n }\n if (string === null || typeof string === 'undefined') {\n return string;\n }\n return util.buffer.toBuffer(string, 'base64');\n }\n\n },\n\n buffer: {\n /**\n * Buffer constructor for Node buffer and buffer pollyfill\n */\n toBuffer: function(data, encoding) {\n return (typeof util.Buffer.from === 'function' && util.Buffer.from !== Uint8Array.from) ?\n util.Buffer.from(data, encoding) : new util.Buffer(data, encoding);\n },\n\n alloc: function(size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new Error('size passed to alloc must be a number.');\n }\n if (typeof util.Buffer.alloc === 'function') {\n return util.Buffer.alloc(size, fill, encoding);\n } else {\n var buf = new util.Buffer(size);\n if (fill !== undefined && typeof buf.fill === 'function') {\n buf.fill(fill, undefined, undefined, encoding);\n }\n return buf;\n }\n },\n\n toStream: function toStream(buffer) {\n if (!util.Buffer.isBuffer(buffer)) buffer = util.buffer.toBuffer(buffer);\n\n var readable = new (util.stream.Readable)();\n var pos = 0;\n readable._read = function(size) {\n if (pos >= buffer.length) return readable.push(null);\n\n var end = pos + size;\n if (end > buffer.length) end = buffer.length;\n readable.push(buffer.slice(pos, end));\n pos = end;\n };\n\n return readable;\n },\n\n /**\n * Concatenates a list of Buffer objects.\n */\n concat: function(buffers) {\n var length = 0,\n offset = 0,\n buffer = null, i;\n\n for (i = 0; i < buffers.length; i++) {\n length += buffers[i].length;\n }\n\n buffer = util.buffer.alloc(length);\n\n for (i = 0; i < buffers.length; i++) {\n buffers[i].copy(buffer, offset);\n offset += buffers[i].length;\n }\n\n return buffer;\n }\n },\n\n string: {\n byteLength: function byteLength(string) {\n if (string === null || string === undefined) return 0;\n if (typeof string === 'string') string = util.buffer.toBuffer(string);\n\n if (typeof string.byteLength === 'number') {\n return string.byteLength;\n } else if (typeof string.length === 'number') {\n return string.length;\n } else if (typeof string.size === 'number') {\n return string.size;\n } else if (typeof string.path === 'string') {\n return require('fs').lstatSync(string.path).size;\n } else {\n throw util.error(new Error('Cannot determine length of ' + string),\n { object: string });\n }\n },\n\n upperFirst: function upperFirst(string) {\n return string[0].toUpperCase() + string.substr(1);\n },\n\n lowerFirst: function lowerFirst(string) {\n return string[0].toLowerCase() + string.substr(1);\n }\n },\n\n ini: {\n parse: function string(ini) {\n var currentSection, map = {};\n util.arrayEach(ini.split(/\\r?\\n/), function(line) {\n line = line.split(/(^|\\s)[;#]/)[0].trim(); // remove comments and trim\n var isSection = line[0] === '[' && line[line.length - 1] === ']';\n if (isSection) {\n currentSection = line.substring(1, line.length - 1);\n if (currentSection === '__proto__' || currentSection.split(/\\s/)[1] === '__proto__') {\n throw util.error(\n new Error('Cannot load profile name \\'' + currentSection + '\\' from shared ini file.')\n );\n }\n } else if (currentSection) {\n var indexOfEqualsSign = line.indexOf('=');\n var start = 0;\n var end = line.length - 1;\n var isAssignment =\n indexOfEqualsSign !== -1 && indexOfEqualsSign !== start && indexOfEqualsSign !== end;\n\n if (isAssignment) {\n var name = line.substring(0, indexOfEqualsSign).trim();\n var value = line.substring(indexOfEqualsSign + 1).trim();\n\n map[currentSection] = map[currentSection] || {};\n map[currentSection][name] = value;\n }\n }\n });\n\n return map;\n }\n },\n\n fn: {\n noop: function() {},\n callback: function (err) { if (err) throw err; },\n\n /**\n * Turn a synchronous function into as \"async\" function by making it call\n * a callback. The underlying function is called with all but the last argument,\n * which is treated as the callback. The callback is passed passed a first argument\n * of null on success to mimick standard node callbacks.\n */\n makeAsync: function makeAsync(fn, expectedArgs) {\n if (expectedArgs && expectedArgs <= fn.length) {\n return fn;\n }\n\n return function() {\n var args = Array.prototype.slice.call(arguments, 0);\n var callback = args.pop();\n var result = fn.apply(null, args);\n callback(result);\n };\n }\n },\n\n /**\n * Date and time utility functions.\n */\n date: {\n\n /**\n * @return [Date] the current JavaScript date object. Since all\n * AWS services rely on this date object, you can override\n * this function to provide a special time value to AWS service\n * requests.\n */\n getDate: function getDate() {\n if (!AWS) AWS = require('./core');\n if (AWS.config.systemClockOffset) { // use offset when non-zero\n return new Date(new Date().getTime() + AWS.config.systemClockOffset);\n } else {\n return new Date();\n }\n },\n\n /**\n * @return [String] the date in ISO-8601 format\n */\n iso8601: function iso8601(date) {\n if (date === undefined) { date = util.date.getDate(); }\n return date.toISOString().replace(/\\.\\d{3}Z$/, 'Z');\n },\n\n /**\n * @return [String] the date in RFC 822 format\n */\n rfc822: function rfc822(date) {\n if (date === undefined) { date = util.date.getDate(); }\n return date.toUTCString();\n },\n\n /**\n * @return [Integer] the UNIX timestamp value for the current time\n */\n unixTimestamp: function unixTimestamp(date) {\n if (date === undefined) { date = util.date.getDate(); }\n return date.getTime() / 1000;\n },\n\n /**\n * @param [String,number,Date] date\n * @return [Date]\n */\n from: function format(date) {\n if (typeof date === 'number') {\n return new Date(date * 1000); // unix timestamp\n } else {\n return new Date(date);\n }\n },\n\n /**\n * Given a Date or date-like value, this function formats the\n * date into a string of the requested value.\n * @param [String,number,Date] date\n * @param [String] formatter Valid formats are:\n # * 'iso8601'\n # * 'rfc822'\n # * 'unixTimestamp'\n * @return [String]\n */\n format: function format(date, formatter) {\n if (!formatter) formatter = 'iso8601';\n return util.date[formatter](util.date.from(date));\n },\n\n parseTimestamp: function parseTimestamp(value) {\n if (typeof value === 'number') { // unix timestamp (number)\n return new Date(value * 1000);\n } else if (value.match(/^\\d+$/)) { // unix timestamp\n return new Date(value * 1000);\n } else if (value.match(/^\\d{4}/)) { // iso8601\n return new Date(value);\n } else if (value.match(/^\\w{3},/)) { // rfc822\n return new Date(value);\n } else {\n throw util.error(\n new Error('unhandled timestamp format: ' + value),\n {code: 'TimestampParserError'});\n }\n }\n\n },\n\n crypto: {\n crc32Table: [\n 0x00000000, 0x77073096, 0xEE0E612C, 0x990951BA, 0x076DC419,\n 0x706AF48F, 0xE963A535, 0x9E6495A3, 0x0EDB8832, 0x79DCB8A4,\n 0xE0D5E91E, 0x97D2D988, 0x09B64C2B, 0x7EB17CBD, 0xE7B82D07,\n 0x90BF1D91, 0x1DB71064, 0x6AB020F2, 0xF3B97148, 0x84BE41DE,\n 0x1ADAD47D, 0x6DDDE4EB, 0xF4D4B551, 0x83D385C7, 0x136C9856,\n 0x646BA8C0, 0xFD62F97A, 0x8A65C9EC, 0x14015C4F, 0x63066CD9,\n 0xFA0F3D63, 0x8D080DF5, 0x3B6E20C8, 0x4C69105E, 0xD56041E4,\n 0xA2677172, 0x3C03E4D1, 0x4B04D447, 0xD20D85FD, 0xA50AB56B,\n 0x35B5A8FA, 0x42B2986C, 0xDBBBC9D6, 0xACBCF940, 0x32D86CE3,\n 0x45DF5C75, 0xDCD60DCF, 0xABD13D59, 0x26D930AC, 0x51DE003A,\n 0xC8D75180, 0xBFD06116, 0x21B4F4B5, 0x56B3C423, 0xCFBA9599,\n 0xB8BDA50F, 0x2802B89E, 0x5F058808, 0xC60CD9B2, 0xB10BE924,\n 0x2F6F7C87, 0x58684C11, 0xC1611DAB, 0xB6662D3D, 0x76DC4190,\n 0x01DB7106, 0x98D220BC, 0xEFD5102A, 0x71B18589, 0x06B6B51F,\n 0x9FBFE4A5, 0xE8B8D433, 0x7807C9A2, 0x0F00F934, 0x9609A88E,\n 0xE10E9818, 0x7F6A0DBB, 0x086D3D2D, 0x91646C97, 0xE6635C01,\n 0x6B6B51F4, 0x1C6C6162, 0x856530D8, 0xF262004E, 0x6C0695ED,\n 0x1B01A57B, 0x8208F4C1, 0xF50FC457, 0x65B0D9C6, 0x12B7E950,\n 0x8BBEB8EA, 0xFCB9887C, 0x62DD1DDF, 0x15DA2D49, 0x8CD37CF3,\n 0xFBD44C65, 0x4DB26158, 0x3AB551CE, 0xA3BC0074, 0xD4BB30E2,\n 0x4ADFA541, 0x3DD895D7, 0xA4D1C46D, 0xD3D6F4FB, 0x4369E96A,\n 0x346ED9FC, 0xAD678846, 0xDA60B8D0, 0x44042D73, 0x33031DE5,\n 0xAA0A4C5F, 0xDD0D7CC9, 0x5005713C, 0x270241AA, 0xBE0B1010,\n 0xC90C2086, 0x5768B525, 0x206F85B3, 0xB966D409, 0xCE61E49F,\n 0x5EDEF90E, 0x29D9C998, 0xB0D09822, 0xC7D7A8B4, 0x59B33D17,\n 0x2EB40D81, 0xB7BD5C3B, 0xC0BA6CAD, 0xEDB88320, 0x9ABFB3B6,\n 0x03B6E20C, 0x74B1D29A, 0xEAD54739, 0x9DD277AF, 0x04DB2615,\n 0x73DC1683, 0xE3630B12, 0x94643B84, 0x0D6D6A3E, 0x7A6A5AA8,\n 0xE40ECF0B, 0x9309FF9D, 0x0A00AE27, 0x7D079EB1, 0xF00F9344,\n 0x8708A3D2, 0x1E01F268, 0x6906C2FE, 0xF762575D, 0x806567CB,\n 0x196C3671, 0x6E6B06E7, 0xFED41B76, 0x89D32BE0, 0x10DA7A5A,\n 0x67DD4ACC, 0xF9B9DF6F, 0x8EBEEFF9, 0x17B7BE43, 0x60B08ED5,\n 0xD6D6A3E8, 0xA1D1937E, 0x38D8C2C4, 0x4FDFF252, 0xD1BB67F1,\n 0xA6BC5767, 0x3FB506DD, 0x48B2364B, 0xD80D2BDA, 0xAF0A1B4C,\n 0x36034AF6, 0x41047A60, 0xDF60EFC3, 0xA867DF55, 0x316E8EEF,\n 0x4669BE79, 0xCB61B38C, 0xBC66831A, 0x256FD2A0, 0x5268E236,\n 0xCC0C7795, 0xBB0B4703, 0x220216B9, 0x5505262F, 0xC5BA3BBE,\n 0xB2BD0B28, 0x2BB45A92, 0x5CB36A04, 0xC2D7FFA7, 0xB5D0CF31,\n 0x2CD99E8B, 0x5BDEAE1D, 0x9B64C2B0, 0xEC63F226, 0x756AA39C,\n 0x026D930A, 0x9C0906A9, 0xEB0E363F, 0x72076785, 0x05005713,\n 0x95BF4A82, 0xE2B87A14, 0x7BB12BAE, 0x0CB61B38, 0x92D28E9B,\n 0xE5D5BE0D, 0x7CDCEFB7, 0x0BDBDF21, 0x86D3D2D4, 0xF1D4E242,\n 0x68DDB3F8, 0x1FDA836E, 0x81BE16CD, 0xF6B9265B, 0x6FB077E1,\n 0x18B74777, 0x88085AE6, 0xFF0F6A70, 0x66063BCA, 0x11010B5C,\n 0x8F659EFF, 0xF862AE69, 0x616BFFD3, 0x166CCF45, 0xA00AE278,\n 0xD70DD2EE, 0x4E048354, 0x3903B3C2, 0xA7672661, 0xD06016F7,\n 0x4969474D, 0x3E6E77DB, 0xAED16A4A, 0xD9D65ADC, 0x40DF0B66,\n 0x37D83BF0, 0xA9BCAE53, 0xDEBB9EC5, 0x47B2CF7F, 0x30B5FFE9,\n 0xBDBDF21C, 0xCABAC28A, 0x53B39330, 0x24B4A3A6, 0xBAD03605,\n 0xCDD70693, 0x54DE5729, 0x23D967BF, 0xB3667A2E, 0xC4614AB8,\n 0x5D681B02, 0x2A6F2B94, 0xB40BBE37, 0xC30C8EA1, 0x5A05DF1B,\n 0x2D02EF8D],\n\n crc32: function crc32(data) {\n var tbl = util.crypto.crc32Table;\n var crc = 0 ^ -1;\n\n if (typeof data === 'string') {\n data = util.buffer.toBuffer(data);\n }\n\n for (var i = 0; i < data.length; i++) {\n var code = data.readUInt8(i);\n crc = (crc >>> 8) ^ tbl[(crc ^ code) & 0xFF];\n }\n return (crc ^ -1) >>> 0;\n },\n\n hmac: function hmac(key, string, digest, fn) {\n if (!digest) digest = 'binary';\n if (digest === 'buffer') { digest = undefined; }\n if (!fn) fn = 'sha256';\n if (typeof string === 'string') string = util.buffer.toBuffer(string);\n return util.crypto.lib.createHmac(fn, key).update(string).digest(digest);\n },\n\n md5: function md5(data, digest, callback) {\n return util.crypto.hash('md5', data, digest, callback);\n },\n\n sha256: function sha256(data, digest, callback) {\n return util.crypto.hash('sha256', data, digest, callback);\n },\n\n hash: function(algorithm, data, digest, callback) {\n var hash = util.crypto.createHash(algorithm);\n if (!digest) { digest = 'binary'; }\n if (digest === 'buffer') { digest = undefined; }\n if (typeof data === 'string') data = util.buffer.toBuffer(data);\n var sliceFn = util.arraySliceFn(data);\n var isBuffer = util.Buffer.isBuffer(data);\n //Identifying objects with an ArrayBuffer as buffers\n if (util.isBrowser() && typeof ArrayBuffer !== 'undefined' && data && data.buffer instanceof ArrayBuffer) isBuffer = true;\n\n if (callback && typeof data === 'object' &&\n typeof data.on === 'function' && !isBuffer) {\n data.on('data', function(chunk) { hash.update(chunk); });\n data.on('error', function(err) { callback(err); });\n data.on('end', function() { callback(null, hash.digest(digest)); });\n } else if (callback && sliceFn && !isBuffer &&\n typeof FileReader !== 'undefined') {\n // this might be a File/Blob\n var index = 0, size = 1024 * 512;\n var reader = new FileReader();\n reader.onerror = function() {\n callback(new Error('Failed to read data.'));\n };\n reader.onload = function() {\n var buf = new util.Buffer(new Uint8Array(reader.result));\n hash.update(buf);\n index += buf.length;\n reader._continueReading();\n };\n reader._continueReading = function() {\n if (index >= data.size) {\n callback(null, hash.digest(digest));\n return;\n }\n\n var back = index + size;\n if (back > data.size) back = data.size;\n reader.readAsArrayBuffer(sliceFn.call(data, index, back));\n };\n\n reader._continueReading();\n } else {\n if (util.isBrowser() && typeof data === 'object' && !isBuffer) {\n data = new util.Buffer(new Uint8Array(data));\n }\n var out = hash.update(data).digest(digest);\n if (callback) callback(null, out);\n return out;\n }\n },\n\n toHex: function toHex(data) {\n var out = [];\n for (var i = 0; i < data.length; i++) {\n out.push(('0' + data.charCodeAt(i).toString(16)).substr(-2, 2));\n }\n return out.join('');\n },\n\n createHash: function createHash(algorithm) {\n return util.crypto.lib.createHash(algorithm);\n }\n\n },\n\n /** @!ignore */\n\n /* Abort constant */\n abort: {},\n\n each: function each(object, iterFunction) {\n for (var key in object) {\n if (Object.prototype.hasOwnProperty.call(object, key)) {\n var ret = iterFunction.call(this, key, object[key]);\n if (ret === util.abort) break;\n }\n }\n },\n\n arrayEach: function arrayEach(array, iterFunction) {\n for (var idx in array) {\n if (Object.prototype.hasOwnProperty.call(array, idx)) {\n var ret = iterFunction.call(this, array[idx], parseInt(idx, 10));\n if (ret === util.abort) break;\n }\n }\n },\n\n update: function update(obj1, obj2) {\n util.each(obj2, function iterator(key, item) {\n obj1[key] = item;\n });\n return obj1;\n },\n\n merge: function merge(obj1, obj2) {\n return util.update(util.copy(obj1), obj2);\n },\n\n copy: function copy(object) {\n if (object === null || object === undefined) return object;\n var dupe = {};\n // jshint forin:false\n for (var key in object) {\n dupe[key] = object[key];\n }\n return dupe;\n },\n\n isEmpty: function isEmpty(obj) {\n for (var prop in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, prop)) {\n return false;\n }\n }\n return true;\n },\n\n arraySliceFn: function arraySliceFn(obj) {\n var fn = obj.slice || obj.webkitSlice || obj.mozSlice;\n return typeof fn === 'function' ? fn : null;\n },\n\n isType: function isType(obj, type) {\n // handle cross-\"frame\" objects\n if (typeof type === 'function') type = util.typeName(type);\n return Object.prototype.toString.call(obj) === '[object ' + type + ']';\n },\n\n typeName: function typeName(type) {\n if (Object.prototype.hasOwnProperty.call(type, 'name')) return type.name;\n var str = type.toString();\n var match = str.match(/^\\s*function (.+)\\(/);\n return match ? match[1] : str;\n },\n\n error: function error(err, options) {\n var originalError = null;\n if (typeof err.message === 'string' && err.message !== '') {\n if (typeof options === 'string' || (options && options.message)) {\n originalError = util.copy(err);\n originalError.message = err.message;\n }\n }\n err.message = err.message || null;\n\n if (typeof options === 'string') {\n err.message = options;\n } else if (typeof options === 'object' && options !== null) {\n util.update(err, options);\n if (options.message)\n err.message = options.message;\n if (options.code || options.name)\n err.code = options.code || options.name;\n if (options.stack)\n err.stack = options.stack;\n }\n\n if (typeof Object.defineProperty === 'function') {\n Object.defineProperty(err, 'name', {writable: true, enumerable: false});\n Object.defineProperty(err, 'message', {enumerable: true});\n }\n\n err.name = String(options && options.name || err.name || err.code || 'Error');\n err.time = new Date();\n\n if (originalError) {\n err.originalError = originalError;\n }\n\n\n for (var key in options || {}) {\n if (key[0] === '[' && key[key.length - 1] === ']') {\n key = key.slice(1, -1);\n if (key === 'code' || key === 'message') {\n continue;\n }\n err['[' + key + ']'] = 'See error.' + key + ' for details.';\n Object.defineProperty(err, key, {\n value: err[key] || (options && options[key]) || (originalError && originalError[key]),\n enumerable: false,\n writable: true\n });\n }\n }\n\n return err;\n },\n\n /**\n * @api private\n */\n inherit: function inherit(klass, features) {\n var newObject = null;\n if (features === undefined) {\n features = klass;\n klass = Object;\n newObject = {};\n } else {\n var ctor = function ConstructorWrapper() {};\n ctor.prototype = klass.prototype;\n newObject = new ctor();\n }\n\n // constructor not supplied, create pass-through ctor\n if (features.constructor === Object) {\n features.constructor = function() {\n if (klass !== Object) {\n return klass.apply(this, arguments);\n }\n };\n }\n\n features.constructor.prototype = newObject;\n util.update(features.constructor.prototype, features);\n features.constructor.__super__ = klass;\n return features.constructor;\n },\n\n /**\n * @api private\n */\n mixin: function mixin() {\n var klass = arguments[0];\n for (var i = 1; i < arguments.length; i++) {\n // jshint forin:false\n for (var prop in arguments[i].prototype) {\n var fn = arguments[i].prototype[prop];\n if (prop !== 'constructor') {\n klass.prototype[prop] = fn;\n }\n }\n }\n return klass;\n },\n\n /**\n * @api private\n */\n hideProperties: function hideProperties(obj, props) {\n if (typeof Object.defineProperty !== 'function') return;\n\n util.arrayEach(props, function (key) {\n Object.defineProperty(obj, key, {\n enumerable: false, writable: true, configurable: true });\n });\n },\n\n /**\n * @api private\n */\n property: function property(obj, name, value, enumerable, isValue) {\n var opts = {\n configurable: true,\n enumerable: enumerable !== undefined ? enumerable : true\n };\n if (typeof value === 'function' && !isValue) {\n opts.get = value;\n }\n else {\n opts.value = value; opts.writable = true;\n }\n\n Object.defineProperty(obj, name, opts);\n },\n\n /**\n * @api private\n */\n memoizedProperty: function memoizedProperty(obj, name, get, enumerable) {\n var cachedValue = null;\n\n // build enumerable attribute for each value with lazy accessor.\n util.property(obj, name, function() {\n if (cachedValue === null) {\n cachedValue = get();\n }\n return cachedValue;\n }, enumerable);\n },\n\n /**\n * TODO Remove in major version revision\n * This backfill populates response data without the\n * top-level payload name.\n *\n * @api private\n */\n hoistPayloadMember: function hoistPayloadMember(resp) {\n var req = resp.request;\n var operationName = req.operation;\n var operation = req.service.api.operations[operationName];\n var output = operation.output;\n if (output.payload && !operation.hasEventOutput) {\n var payloadMember = output.members[output.payload];\n var responsePayload = resp.data[output.payload];\n if (payloadMember.type === 'structure') {\n util.each(responsePayload, function(key, value) {\n util.property(resp.data, key, value, false);\n });\n }\n }\n },\n\n /**\n * Compute SHA-256 checksums of streams\n *\n * @api private\n */\n computeSha256: function computeSha256(body, done) {\n if (util.isNode()) {\n var Stream = util.stream.Stream;\n var fs = require('fs');\n if (typeof Stream === 'function' && body instanceof Stream) {\n if (typeof body.path === 'string') { // assume file object\n var settings = {};\n if (typeof body.start === 'number') {\n settings.start = body.start;\n }\n if (typeof body.end === 'number') {\n settings.end = body.end;\n }\n body = fs.createReadStream(body.path, settings);\n } else { // TODO support other stream types\n return done(new Error('Non-file stream objects are ' +\n 'not supported with SigV4'));\n }\n }\n }\n\n util.crypto.sha256(body, 'hex', function(err, sha) {\n if (err) done(err);\n else done(null, sha);\n });\n },\n\n /**\n * @api private\n */\n isClockSkewed: function isClockSkewed(serverTime) {\n if (serverTime) {\n util.property(AWS.config, 'isClockSkewed',\n Math.abs(new Date().getTime() - serverTime) >= 300000, false);\n return AWS.config.isClockSkewed;\n }\n },\n\n applyClockOffset: function applyClockOffset(serverTime) {\n if (serverTime)\n AWS.config.systemClockOffset = serverTime - new Date().getTime();\n },\n\n /**\n * @api private\n */\n extractRequestId: function extractRequestId(resp) {\n var requestId = resp.httpResponse.headers['x-amz-request-id'] ||\n resp.httpResponse.headers['x-amzn-requestid'];\n\n if (!requestId && resp.data && resp.data.ResponseMetadata) {\n requestId = resp.data.ResponseMetadata.RequestId;\n }\n\n if (requestId) {\n resp.requestId = requestId;\n }\n\n if (resp.error) {\n resp.error.requestId = requestId;\n }\n },\n\n /**\n * @api private\n */\n addPromises: function addPromises(constructors, PromiseDependency) {\n var deletePromises = false;\n if (PromiseDependency === undefined && AWS && AWS.config) {\n PromiseDependency = AWS.config.getPromisesDependency();\n }\n if (PromiseDependency === undefined && typeof Promise !== 'undefined') {\n PromiseDependency = Promise;\n }\n if (typeof PromiseDependency !== 'function') deletePromises = true;\n if (!Array.isArray(constructors)) constructors = [constructors];\n\n for (var ind = 0; ind < constructors.length; ind++) {\n var constructor = constructors[ind];\n if (deletePromises) {\n if (constructor.deletePromisesFromClass) {\n constructor.deletePromisesFromClass();\n }\n } else if (constructor.addPromisesToClass) {\n constructor.addPromisesToClass(PromiseDependency);\n }\n }\n },\n\n /**\n * @api private\n * Return a function that will return a promise whose fate is decided by the\n * callback behavior of the given method with `methodName`. The method to be\n * promisified should conform to node.js convention of accepting a callback as\n * last argument and calling that callback with error as the first argument\n * and success value on the second argument.\n */\n promisifyMethod: function promisifyMethod(methodName, PromiseDependency) {\n return function promise() {\n var self = this;\n var args = Array.prototype.slice.call(arguments);\n return new PromiseDependency(function(resolve, reject) {\n args.push(function(err, data) {\n if (err) {\n reject(err);\n } else {\n resolve(data);\n }\n });\n self[methodName].apply(self, args);\n });\n };\n },\n\n /**\n * @api private\n */\n isDualstackAvailable: function isDualstackAvailable(service) {\n if (!service) return false;\n var metadata = require('../apis/metadata.json');\n if (typeof service !== 'string') service = service.serviceIdentifier;\n if (typeof service !== 'string' || !metadata.hasOwnProperty(service)) return false;\n return !!metadata[service].dualstackAvailable;\n },\n\n /**\n * @api private\n */\n calculateRetryDelay: function calculateRetryDelay(retryCount, retryDelayOptions, err) {\n if (!retryDelayOptions) retryDelayOptions = {};\n var customBackoff = retryDelayOptions.customBackoff || null;\n if (typeof customBackoff === 'function') {\n return customBackoff(retryCount, err);\n }\n var base = typeof retryDelayOptions.base === 'number' ? retryDelayOptions.base : 100;\n var delay = Math.random() * (Math.pow(2, retryCount) * base);\n return delay;\n },\n\n /**\n * @api private\n */\n handleRequestWithRetries: function handleRequestWithRetries(httpRequest, options, cb) {\n if (!options) options = {};\n var http = AWS.HttpClient.getInstance();\n var httpOptions = options.httpOptions || {};\n var retryCount = 0;\n\n var errCallback = function(err) {\n var maxRetries = options.maxRetries || 0;\n if (err && err.code === 'TimeoutError') err.retryable = true;\n\n // Call `calculateRetryDelay()` only when relevant, see #3401\n if (err && err.retryable && retryCount < maxRetries) {\n var delay = util.calculateRetryDelay(retryCount, options.retryDelayOptions, err);\n if (delay >= 0) {\n retryCount++;\n setTimeout(sendRequest, delay + (err.retryAfter || 0));\n return;\n }\n }\n cb(err);\n };\n\n var sendRequest = function() {\n var data = '';\n http.handleRequest(httpRequest, httpOptions, function(httpResponse) {\n httpResponse.on('data', function(chunk) { data += chunk.toString(); });\n httpResponse.on('end', function() {\n var statusCode = httpResponse.statusCode;\n if (statusCode < 300) {\n cb(null, data);\n } else {\n var retryAfter = parseInt(httpResponse.headers['retry-after'], 10) * 1000 || 0;\n var err = util.error(new Error(),\n {\n statusCode: statusCode,\n retryable: statusCode >= 500 || statusCode === 429\n }\n );\n if (retryAfter && err.retryable) err.retryAfter = retryAfter;\n errCallback(err);\n }\n });\n }, errCallback);\n };\n\n AWS.util.defer(sendRequest);\n },\n\n /**\n * @api private\n */\n uuid: {\n v4: function uuidV4() {\n return require('uuid').v4();\n }\n },\n\n /**\n * @api private\n */\n convertPayloadToString: function convertPayloadToString(resp) {\n var req = resp.request;\n var operation = req.operation;\n var rules = req.service.api.operations[operation].output || {};\n if (rules.payload && resp.data[rules.payload]) {\n resp.data[rules.payload] = resp.data[rules.payload].toString();\n }\n },\n\n /**\n * @api private\n */\n defer: function defer(callback) {\n if (typeof process === 'object' && typeof process.nextTick === 'function') {\n process.nextTick(callback);\n } else if (typeof setImmediate === 'function') {\n setImmediate(callback);\n } else {\n setTimeout(callback, 0);\n }\n },\n\n /**\n * @api private\n */\n getRequestPayloadShape: function getRequestPayloadShape(req) {\n var operations = req.service.api.operations;\n if (!operations) return undefined;\n var operation = (operations || {})[req.operation];\n if (!operation || !operation.input || !operation.input.payload) return undefined;\n return operation.input.members[operation.input.payload];\n },\n\n getProfilesFromSharedConfig: function getProfilesFromSharedConfig(iniLoader, filename) {\n var profiles = {};\n var profilesFromConfig = {};\n if (process.env[util.configOptInEnv]) {\n var profilesFromConfig = iniLoader.loadFrom({\n isConfig: true,\n filename: process.env[util.sharedConfigFileEnv]\n });\n }\n var profilesFromCreds= {};\n try {\n var profilesFromCreds = iniLoader.loadFrom({\n filename: filename ||\n (process.env[util.configOptInEnv] && process.env[util.sharedCredentialsFileEnv])\n });\n } catch (error) {\n // if using config, assume it is fully descriptive without a credentials file:\n if (!process.env[util.configOptInEnv]) throw error;\n }\n for (var i = 0, profileNames = Object.keys(profilesFromConfig); i < profileNames.length; i++) {\n profiles[profileNames[i]] = objectAssign(profiles[profileNames[i]] || {}, profilesFromConfig[profileNames[i]]);\n }\n for (var i = 0, profileNames = Object.keys(profilesFromCreds); i < profileNames.length; i++) {\n profiles[profileNames[i]] = objectAssign(profiles[profileNames[i]] || {}, profilesFromCreds[profileNames[i]]);\n }\n return profiles;\n\n /**\n * Roughly the semantics of `Object.assign(target, source)`\n */\n function objectAssign(target, source) {\n for (var i = 0, keys = Object.keys(source); i < keys.length; i++) {\n target[keys[i]] = source[keys[i]];\n }\n return target;\n }\n },\n\n /**\n * @api private\n */\n ARN: {\n validate: function validateARN(str) {\n return str && str.indexOf('arn:') === 0 && str.split(':').length >= 6;\n },\n parse: function parseARN(arn) {\n var matched = arn.split(':');\n return {\n partition: matched[1],\n service: matched[2],\n region: matched[3],\n accountId: matched[4],\n resource: matched.slice(5).join(':')\n };\n },\n build: function buildARN(arnObject) {\n if (\n arnObject.service === undefined ||\n arnObject.region === undefined ||\n arnObject.accountId === undefined ||\n arnObject.resource === undefined\n ) throw util.error(new Error('Input ARN object is invalid'));\n return 'arn:'+ (arnObject.partition || 'aws') + ':' + arnObject.service +\n ':' + arnObject.region + ':' + arnObject.accountId + ':' + arnObject.resource;\n }\n },\n\n /**\n * @api private\n */\n defaultProfile: 'default',\n\n /**\n * @api private\n */\n configOptInEnv: 'AWS_SDK_LOAD_CONFIG',\n\n /**\n * @api private\n */\n sharedCredentialsFileEnv: 'AWS_SHARED_CREDENTIALS_FILE',\n\n /**\n * @api private\n */\n sharedConfigFileEnv: 'AWS_CONFIG_FILE',\n\n /**\n * @api private\n */\n imdsDisabledEnv: 'AWS_EC2_METADATA_DISABLED'\n};\n\n/**\n * @api private\n */\nmodule.exports = util;\n","'use strict';\n\nvar origSymbol = typeof Symbol !== 'undefined' && Symbol;\nvar hasSymbolSham = require('./shams');\n\n/** @type {import('.')} */\nmodule.exports = function hasNativeSymbols() {\n\tif (typeof origSymbol !== 'function') { return false; }\n\tif (typeof Symbol !== 'function') { return false; }\n\tif (typeof origSymbol('foo') !== 'symbol') { return false; }\n\tif (typeof Symbol('bar') !== 'symbol') { return false; }\n\n\treturn hasSymbolSham();\n};\n","var memoizedProperty = require('../util').memoizedProperty;\n\nfunction memoize(name, value, factory, nameTr) {\n memoizedProperty(this, nameTr(name), function() {\n return factory(name, value);\n });\n}\n\nfunction Collection(iterable, options, factory, nameTr, callback) {\n nameTr = nameTr || String;\n var self = this;\n\n for (var id in iterable) {\n if (Object.prototype.hasOwnProperty.call(iterable, id)) {\n memoize.call(self, id, iterable[id], factory, nameTr);\n if (callback) callback(id, iterable[id]);\n }\n }\n}\n\n/**\n * @api private\n */\nmodule.exports = Collection;\n","'use strict';\nvar SetHelpers = require('../internals/set-helpers');\nvar iterate = require('../internals/set-iterate');\n\nvar Set = SetHelpers.Set;\nvar add = SetHelpers.add;\n\nmodule.exports = function (set) {\n var result = new Set();\n iterate(set, function (it) {\n add(result, it);\n });\n return result;\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\n/**\n * Video encoding connection policy names. The policy name is used in MonitorTask\n * to determine video codec degradation reason and report metrics accordingly.\n */\nexport enum VideoEncodingConnectionHealthPolicyName {\n VideoEncodingCpuHealth = 'Video Encoding CPU Health',\n VideoEncodingFramerateHealth = 'Video Encoding framerate Health',\n}\n\nexport default VideoEncodingConnectionHealthPolicyName;\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport Backoff from './Backoff';\nimport BackoffFactory from './BackoffFactory';\nimport FullJitterBackoff from './FullJitterBackoff';\nimport FullJitterLimitedBackoff from './FullJitterLimitedBackoff';\n\nexport default class FullJitterBackoffFactory implements BackoffFactory {\n constructor(\n private fixedWaitMs: number,\n private shortBackoffMs: number,\n private longBackoffMs: number\n ) {}\n\n create(): Backoff {\n return new FullJitterBackoff(this.fixedWaitMs, this.shortBackoffMs, this.longBackoffMs);\n }\n\n createWithLimit(limit: number): Backoff {\n return new FullJitterLimitedBackoff(\n this.fixedWaitMs,\n this.shortBackoffMs,\n this.longBackoffMs,\n limit\n );\n }\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport Attendee from '../attendee/Attendee';\n\n/**\n * [[VideoSource]] contains the information of a video source.\n */\nexport default class VideoSource {\n /**\n * The attendee's information for a video source.\n */\n attendee: Attendee;\n}\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nmodule.exports = function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d\\+\\-\\.]*:)?\\/\\//i.test(url);\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport ContentShareConstants from '../contentsharecontroller/ContentShareConstants';\nimport Logger from '../logger/Logger';\nimport ServerSideNetworkAdaption from '../signalingclient/ServerSideNetworkAdaption';\nimport VideoStreamDescription from '../videostreamindex/VideoStreamDescription';\nimport VideoStreamIndex from '../videostreamindex/VideoStreamIndex';\nimport VideoPreference from './VideoPreference';\nimport { VideoPreferences } from './VideoPreferences';\nimport VideoPriorityBasedPolicy from './VideoPriorityBasedPolicy';\nimport VideoPriorityBasedPolicyConfig from './VideoPriorityBasedPolicyConfig';\n\n/**\n * [[VideoAdaptiveProbePolicy]] wraps [[VideoPriorityBasedPolicy]] with customized behavior to automatically\n * assign a high preference to content share. This is a legacy policy used by default when simulcast is enabled, but\n * all customers should be using `VideoPriorityBasedPolicy` instead, since this policy does not work with\n * server side network adaptation.\n *\n * You can imitate this classes behavior using the `VideoPriorityBasedPolicy` with the following snippet\n * ```\n * remoteVideoSourcesDidChange(videoSources: VideoSource[]) {\n * const videoPreferences = VideoPreferences.prepare();\n * for(const source of videoSources) {\n * const isContent = source.attendee.attendeeId.endsWith(ContentShareConstants.Modality);\n * videoPreferences.add(new VideoPreference(source.attendee.attendeeId, isContent ? 2: 1, TargetDisplaySize.High));\n * }\n * this.priorityBasedDownlinkPolicy.chooseRemoteVideoSources(videoPreferences.build());\n * }\n * ```\n */\nexport default class VideoAdaptiveProbePolicy extends VideoPriorityBasedPolicy {\n private static createConfig(): VideoPriorityBasedPolicyConfig {\n const config = new VideoPriorityBasedPolicyConfig();\n config.serverSideNetworkAdaption = ServerSideNetworkAdaption.None;\n return config;\n }\n\n constructor(protected logger: Logger) {\n // We use a static function to create config because Typescript requires\n // super(...) calls to be the first line in constructors\n super(logger, VideoAdaptiveProbePolicy.createConfig());\n super.shouldPauseTiles = false;\n this.videoPreferences = undefined;\n }\n\n reset(): void {\n super.reset();\n super.shouldPauseTiles = false;\n this.videoPreferences = undefined;\n }\n\n updateIndex(videoIndex: VideoStreamIndex): void {\n super.updateIndex(videoIndex);\n\n const newPreferences = VideoPreferences.prepare();\n let containsContent = false;\n const remoteInfos: VideoStreamDescription[] = videoIndex.remoteStreamDescriptions();\n // If there is active content then set that as high priority, and the rest at lower\n for (const info of remoteInfos) {\n // I don't know why we need to do this duplicate check.\n if (!newPreferences.some(preference => preference.attendeeId === info.attendeeId)) {\n // For now always subscribe to content even if higher bandwidth then target\n if (info.attendeeId.endsWith(ContentShareConstants.Modality)) {\n newPreferences.add(new VideoPreference(info.attendeeId, 1));\n containsContent = true;\n } else {\n newPreferences.add(new VideoPreference(info.attendeeId, 2));\n }\n }\n }\n\n if (containsContent) {\n this.videoPreferences = newPreferences.build();\n this.videoPreferencesUpdated = true;\n } else {\n this.videoPreferences = undefined;\n }\n }\n\n /**\n * [[VideoAdaptiveProbePolicy]] does not allow setting video preferences and this function\n * will be a no-op. Please use [[VideoPriorityBasedPolicy]] directly if you would like to set\n * preferences.\n */\n chooseRemoteVideoSources(_preferences: VideoPreferences): void {\n this.logger.error('chooseRemoteVideoSources should not be called by VideoAdaptiveProbePolicy');\n return;\n }\n}\n","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar toSetLike = require('../internals/to-set-like');\nvar $union = require('../internals/set-union');\n\n// `Set.prototype.union` method\n// https://github.com/tc39/proposal-set-methods\n// TODO: Obsolete version, remove from `core-js@4`\n$({ target: 'Set', proto: true, real: true, forced: true }, {\n union: function union(other) {\n return call($union, this, toSetLike(other));\n }\n});\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport AudioVideoControllerState from '../audiovideocontroller/AudioVideoControllerState';\nimport AudioVideoObserver from '../audiovideoobserver/AudioVideoObserver';\nimport ClientMetricReport from '../clientmetricreport/ClientMetricReport';\nimport ClientMetricReportDirection from '../clientmetricreport/ClientMetricReportDirection';\nimport ClientMetricReportMediaType from '../clientmetricreport/ClientMetricReportMediaType';\nimport StreamMetricReport from '../clientmetricreport/StreamMetricReport';\nimport ConnectionHealthPolicy from '../connectionhealthpolicy/BaseConnectionHealthPolicy';\nimport ConnectionHealthData from '../connectionhealthpolicy/ConnectionHealthData';\nimport ConnectionHealthPolicyConfiguration from '../connectionhealthpolicy/ConnectionHealthPolicyConfiguration';\nimport ReconnectionHealthPolicy from '../connectionhealthpolicy/ReconnectionHealthPolicy';\nimport SendingAudioFailureConnectionHealthPolicy from '../connectionhealthpolicy/SendingAudioFailureConnectionHealthPolicy';\nimport UnusableAudioWarningConnectionHealthPolicy from '../connectionhealthpolicy/UnusableAudioWarningConnectionHealthPolicy';\nimport VideoEncodingConnectionHealthPolicyName from '../connectionhealthpolicy/VideoEncodingConnectionHealthPolicyName';\nimport AudioVideoEventAttributes from '../eventcontroller/AudioVideoEventAttributes';\nimport MeetingSessionStatus from '../meetingsession/MeetingSessionStatus';\nimport MeetingSessionStatusCode from '../meetingsession/MeetingSessionStatusCode';\nimport RemovableObserver from '../removableobserver/RemovableObserver';\nimport VideoCodecCapability from '../sdp/VideoCodecCapability';\nimport SignalingClientEvent from '../signalingclient/SignalingClientEvent';\nimport SignalingClientEventType from '../signalingclient/SignalingClientEventType';\nimport SignalingClientObserver from '../signalingclientobserver/SignalingClientObserver';\nimport {\n ISdkBitrateFrame,\n SdkNotificationFrame,\n SdkSignalFrame,\n} from '../signalingprotocol/SignalingProtocol';\nimport AudioLogEvent from '../statscollector/AudioLogEvent';\nimport { Maybe } from '../utils/Types';\nimport VideoTileState from '../videotile/VideoTileState';\nimport BaseTask from './BaseTask';\n\n/*\n * [[MonitorTask]] monitors connections using SignalingAndMetricsConnectionMonitor.\n */\nexport default class MonitorTask\n extends BaseTask\n implements AudioVideoObserver, RemovableObserver, SignalingClientObserver {\n protected taskName = 'MonitorTask';\n\n private reconnectionHealthPolicy: ReconnectionHealthPolicy;\n private unusableAudioWarningHealthPolicy: UnusableAudioWarningConnectionHealthPolicy;\n private sendingAudioFailureHealthPolicy: SendingAudioFailureConnectionHealthPolicy;\n private prevSignalStrength: number = 1;\n private currentAvailableStreamAvgBitrates: ISdkBitrateFrame = null;\n private hasSignalingError: boolean = false;\n private presenceHandlerCalled: boolean = false;\n\n // See comment above invocation of `pauseResubscribeCheck` in `DefaultAudioVideoController`\n // for explanation.\n private isResubscribeCheckPaused: boolean = false;\n private pendingMetricsReport: ClientMetricReport | undefined = undefined;\n private videoEncodingHealthPolicies: ConnectionHealthPolicy[] = [];\n\n constructor(\n private context: AudioVideoControllerState,\n connectionHealthPolicyConfiguration: ConnectionHealthPolicyConfiguration,\n private initialConnectionHealthData: ConnectionHealthData\n ) {\n super(context.logger);\n this.reconnectionHealthPolicy = new ReconnectionHealthPolicy(\n context.logger,\n { ...connectionHealthPolicyConfiguration },\n this.initialConnectionHealthData.clone()\n );\n this.unusableAudioWarningHealthPolicy = new UnusableAudioWarningConnectionHealthPolicy(\n { ...connectionHealthPolicyConfiguration },\n this.initialConnectionHealthData.clone()\n );\n this.sendingAudioFailureHealthPolicy = new SendingAudioFailureConnectionHealthPolicy(\n context.logger,\n { ...connectionHealthPolicyConfiguration },\n this.initialConnectionHealthData.clone()\n );\n for (const policy of connectionHealthPolicyConfiguration.videoEncodingHealthPolicies) {\n this.videoEncodingHealthPolicies.push(\n new policy(\n { ...connectionHealthPolicyConfiguration },\n this.initialConnectionHealthData.clone()\n )\n );\n }\n }\n\n removeObserver(): void {\n this.context.audioVideoController.removeObserver(this);\n this.context.realtimeController.realtimeUnsubscribeToFatalError(\n this.realtimeFatalErrorCallback\n );\n this.context.realtimeController.realtimeUnsubscribeToLocalSignalStrengthChange(\n this.checkAndSendWeakSignalEvent\n );\n this.context.realtimeController.realtimeUnsubscribeToAttendeeIdPresence(\n this.realtimeAttendeeIdPresenceHandler\n );\n this.context.signalingClient.removeObserver(this);\n }\n\n async run(): Promise {\n this.context.removableObservers.push(this);\n this.context.audioVideoController.addObserver(this);\n this.context.realtimeController.realtimeSubscribeToFatalError(this.realtimeFatalErrorCallback);\n this.context.realtimeController.realtimeSubscribeToLocalSignalStrengthChange(\n this.checkAndSendWeakSignalEvent\n );\n this.context.realtimeController.realtimeSubscribeToAttendeeIdPresence(\n this.realtimeAttendeeIdPresenceHandler\n );\n\n this.context.connectionMonitor.start();\n this.context.statsCollector.start(this.context.signalingClient, this.context.videoStreamIndex);\n this.context.signalingClient.registerObserver(this);\n }\n\n pauseResubscribeCheck(): void {\n this.isResubscribeCheckPaused = true;\n }\n\n resumeResubscribeCheck(): void {\n if (!this.isResubscribeCheckPaused) {\n // Do not recheck subcribe if it wasn't paused to begin with.\n return;\n }\n this.isResubscribeCheckPaused = false;\n if (this.pendingMetricsReport) {\n this.context.logger.info('Resuming resubscribe check with pending metrics report');\n if (this.checkResubscribe(this.pendingMetricsReport)) {\n this.context.audioVideoController.update({ needsRenegotiation: false });\n }\n }\n }\n\n videoTileDidUpdate(_tileState: VideoTileState): void {\n this.context.maxVideoTileCount = Math.max(\n this.context.maxVideoTileCount,\n this.context.videoTileController.getAllVideoTiles().length\n );\n }\n\n private checkResubscribe(clientMetricReport: ClientMetricReport): boolean {\n if (this.isResubscribeCheckPaused) {\n this.context.logger.info(\n 'Resubscribe check is paused, setting incoming client metric report as pending'\n );\n this.pendingMetricsReport = clientMetricReport;\n return;\n } else {\n this.pendingMetricsReport = undefined;\n }\n\n const metricReport = clientMetricReport.getObservableMetrics();\n const availableSendBandwidth = metricReport.availableOutgoingBitrate;\n const nackCountPerSecond = metricReport.nackCountReceivedPerSecond;\n\n let needResubscribe = false;\n\n this.context.videoDownlinkBandwidthPolicy.updateMetrics(clientMetricReport);\n const resubscribeForDownlink = this.context.videoDownlinkBandwidthPolicy.wantsResubscribe();\n needResubscribe = needResubscribe || resubscribeForDownlink;\n if (resubscribeForDownlink) {\n const videoSubscriptionIdSet = this.context.videoDownlinkBandwidthPolicy.chooseSubscriptions();\n // Same logic as in `ReceiveVideoStreamIndexTask`, immediately truncating rather then truncating on subscribe\n // avoids any issues with components (e.g. transceiver controller) along the way.\n this.context.videosToReceive = videoSubscriptionIdSet.truncate(\n this.context.videoSubscriptionLimit\n );\n\n if (videoSubscriptionIdSet.size() > this.context.videosToReceive.size()) {\n this.logger.warn(\n `Video receive limit exceeded. Limiting the videos to ${this.context.videosToReceive.size()}. Please consider using AllHighestVideoBandwidthPolicy or VideoPriorityBasedPolicy along with chooseRemoteVideoSources api to select the video sources to be displayed.`\n );\n }\n this.logger.info(\n `trigger resubscribe for down=${resubscribeForDownlink}; videosToReceive=[${this.context.videosToReceive.array()}]`\n );\n }\n\n if (this.context.videoTileController.hasStartedLocalVideoTile()) {\n this.context.videoUplinkBandwidthPolicy.updateConnectionMetric({\n uplinkKbps: availableSendBandwidth / 1000,\n nackCountPerSecond: nackCountPerSecond,\n });\n const resubscribeForUplink = this.context.videoUplinkBandwidthPolicy.wantsResubscribe();\n needResubscribe = needResubscribe || resubscribeForUplink;\n if (resubscribeForUplink) {\n this.logger.info(\n `trigger resubscribe for up=${resubscribeForUplink}; videosToReceive=[${this.context.videosToReceive.array()}]`\n );\n this.context.videoUplinkBandwidthPolicy.chooseEncodingParameters();\n }\n }\n\n return needResubscribe;\n }\n\n metricsDidReceive(clientMetricReport: ClientMetricReport): void {\n if (this.checkResubscribe(clientMetricReport)) {\n this.context.audioVideoController.update({ needsRenegotiation: false });\n }\n\n if (!this.currentAvailableStreamAvgBitrates) {\n return;\n }\n\n const streamMetricReport = clientMetricReport.streamMetricReports;\n const downlinkVideoStream: Map = new Map<\n number,\n StreamMetricReport\n >();\n\n // TODO: move those logic to stats collector.\n for (const ssrc in streamMetricReport) {\n if (\n streamMetricReport[ssrc].mediaType === ClientMetricReportMediaType.VIDEO &&\n streamMetricReport[ssrc].direction === ClientMetricReportDirection.DOWNSTREAM\n ) {\n downlinkVideoStream.set(streamMetricReport[ssrc].streamId, streamMetricReport[ssrc]);\n }\n }\n }\n\n connectionHealthDidChange(connectionHealthData: ConnectionHealthData): void {\n if (connectionHealthData.consecutiveMissedPongs === 0) {\n if (this.context.reconnectController) {\n this.context.reconnectController.setLastActiveTimestampMs(Date.now());\n }\n }\n\n this.applyHealthPolicy(this.reconnectionHealthPolicy, connectionHealthData, () => {\n this.context.audioVideoController.handleMeetingSessionStatus(\n new MeetingSessionStatus(MeetingSessionStatusCode.ConnectionHealthReconnect),\n null\n );\n });\n\n this.applyHealthPolicy(\n this.unusableAudioWarningHealthPolicy,\n connectionHealthData,\n () => {\n this.context.poorConnectionCount += 1;\n const attributes = this.generateAudioVideoEventAttributesForReceivingAudioDropped();\n this.context.eventController?.publishEvent('receivingAudioDropped', attributes);\n if (this.context.videoTileController.haveVideoTilesWithStreams()) {\n this.context.audioVideoController.forEachObserver((observer: AudioVideoObserver) => {\n Maybe.of(observer.connectionDidSuggestStopVideo).map(f => f.bind(observer)());\n });\n } else {\n this.context.audioVideoController.forEachObserver((observer: AudioVideoObserver) => {\n Maybe.of(observer.connectionDidBecomePoor).map(f => f.bind(observer)());\n });\n }\n },\n () => {\n this.context.audioVideoController.forEachObserver((observer: AudioVideoObserver) => {\n Maybe.of(observer.connectionDidBecomeGood).map(f => f.bind(observer)());\n });\n }\n );\n\n for (const policy of this.videoEncodingHealthPolicies) {\n this.applyHealthPolicy(policy, connectionHealthData, () => {\n this.degradeVideoCodec(policy.name);\n switch (policy.name) {\n case VideoEncodingConnectionHealthPolicyName.VideoEncodingCpuHealth:\n this.context.statsCollector.videoCodecDegradationHighEncodeCpuDidReceive();\n break;\n case VideoEncodingConnectionHealthPolicyName.VideoEncodingFramerateHealth:\n this.context.statsCollector.videoCodecDegradationEncodeFailureDidReceive();\n break;\n }\n });\n }\n\n if (this.context.isSessionConnected) {\n this.applyHealthPolicy(\n this.sendingAudioFailureHealthPolicy,\n connectionHealthData,\n () => {\n const attributes = this.generateBaseAudioVideoEventAttributes();\n this.context.eventController?.publishEvent('sendingAudioFailed', attributes);\n },\n () => {\n const attributes = this.generateBaseAudioVideoEventAttributes();\n this.context.eventController?.publishEvent('sendingAudioRecovered', attributes);\n }\n );\n }\n }\n\n private applyHealthPolicy(\n healthPolicy: ConnectionHealthPolicy,\n connectionHealthData: ConnectionHealthData,\n unhealthyCallback?: () => void,\n healthyCallback?: () => void\n ): void {\n healthPolicy.update(connectionHealthData);\n const healthValue = healthPolicy.healthIfChanged();\n if (healthValue !== null) {\n this.logger.info(`${healthPolicy.name} value is now ${healthValue}`);\n if (healthValue <= healthPolicy.minimumHealth()) {\n Maybe.of(unhealthyCallback).map(f => f.bind(this)());\n } else {\n Maybe.of(healthyCallback).map(f => f.bind(this)());\n }\n }\n }\n\n private handleBitrateFrame(bitrates: ISdkBitrateFrame): void {\n this.currentAvailableStreamAvgBitrates = bitrates;\n\n if (bitrates.serverAvailableOutgoingBitrate > 0) {\n this.logger.info(\n `Received server side estimation of available incoming bitrate ${bitrates.serverAvailableOutgoingBitrate}kbps`\n );\n // This value will be included in the 'Bitrates' signaling message if we are using\n // server side remote video quality adaption, since if that is the case we will\n // be using TWCC and will therefore not likely have an estimate on the client\n // for available incoming bitrate\n this.context.statsCollector.overrideObservableMetric(\n 'availableIncomingBitrate',\n bitrates.serverAvailableOutgoingBitrate * 1000\n );\n }\n }\n\n handleSignalingClientEvent(event: SignalingClientEvent): void {\n // Don't add two or more consecutive \"signalingDropped\" states.\n if (\n (event.type === SignalingClientEventType.WebSocketClosed &&\n this.isUnexpectedWebsocketCloseCode(event.closeCode)) ||\n event.type === SignalingClientEventType.WebSocketError ||\n event.type === SignalingClientEventType.WebSocketFailed\n ) {\n if (event.type === SignalingClientEventType.WebSocketClosed) {\n this.context.logger.info(\n `The signaling connection was closed with code ${event.closeCode} and reason: ${event.closeReason}`\n );\n }\n if (!this.hasSignalingError) {\n const attributes = this.generateAudioVideoEventAttributesForReceivingAudioDropped();\n this.context.eventController?.publishEvent('signalingDropped', attributes);\n this.hasSignalingError = true;\n }\n if (this.context.isSessionConnected) {\n this.context.audioVideoController.handleMeetingSessionStatus(\n new MeetingSessionStatus(\n this.isInternalServerFailureCloseCode(event.closeCode)\n ? MeetingSessionStatusCode.SignalingInternalServerError\n : MeetingSessionStatusCode.SignalingChannelClosedUnexpectedly\n ),\n null\n );\n }\n } else if (event.type === SignalingClientEventType.WebSocketOpen) {\n this.hasSignalingError = false;\n }\n\n if (event.type === SignalingClientEventType.ReceivedSignalFrame) {\n if (event.message.type === SdkSignalFrame.Type.NOTIFICATION) {\n switch (event.message.notification.level) {\n case SdkNotificationFrame.NotificationLevel.INFO:\n this.logger.info(\n `Received notification from server: ${event.message.notification.message}`\n );\n break;\n case SdkNotificationFrame.NotificationLevel.WARNING:\n this.logger.warn(`Received warning from server: ${event.message.notification.message}`);\n break;\n case SdkNotificationFrame.NotificationLevel.ERROR:\n this.logger.error(`Received error from server: ${event.message.notification.message}`);\n break;\n default:\n this.logger.error(\n `Received notification from server with unknown level ${event.message.notification.level}: ${event.message.notification.message}`\n );\n break;\n }\n return;\n }\n if (!!event.message.bitrates) {\n const bitrateFrame: ISdkBitrateFrame = event.message.bitrates;\n this.context.videoStreamIndex.integrateBitratesFrame(bitrateFrame);\n this.context.videoDownlinkBandwidthPolicy.updateIndex(this.context.videoStreamIndex);\n this.handleBitrateFrame(event.message.bitrates);\n }\n const status = MeetingSessionStatus.fromSignalFrame(event.message);\n // Primary meeting join ack status will be handled by `PromoteToPrimaryMeetingTask`\n if (\n event.message.type !== SdkSignalFrame.Type.PRIMARY_MEETING_JOIN_ACK &&\n status.statusCode() !== MeetingSessionStatusCode.OK\n ) {\n this.context.audioVideoController.handleMeetingSessionStatus(status, null);\n }\n }\n }\n\n private isUnexpectedWebsocketCloseCode(closeCode: number): boolean {\n return (\n // Abnormal Closure. This might be expected for unplanned disconnections.\n closeCode === 1006 || this.isInternalServerFailureCloseCode(closeCode)\n );\n }\n\n private isInternalServerFailureCloseCode(closeCode: number): boolean {\n return (\n // Custom close codes that may be sent by the backend\n closeCode >= 4500 && closeCode < 4600\n );\n }\n\n private checkAndSendWeakSignalEvent = (signalStrength: number): void => {\n const isCurrentSignalBad = signalStrength < 1;\n const isPrevSignalBad = this.prevSignalStrength < 1;\n const signalStrengthEventType = isCurrentSignalBad\n ? !isPrevSignalBad\n ? AudioLogEvent.RedmicStartLoss\n : null\n : isPrevSignalBad\n ? AudioLogEvent.RedmicEndLoss\n : null;\n\n if (signalStrengthEventType) {\n this.context.statsCollector.logAudioEvent(signalStrengthEventType);\n }\n\n this.prevSignalStrength = signalStrength;\n };\n\n private realtimeFatalErrorCallback = (error: Error): void => {\n this.logger.error(`realtime error: ${error}: ${error.stack}`);\n this.context.audioVideoController.handleMeetingSessionStatus(\n new MeetingSessionStatus(MeetingSessionStatusCode.RealtimeApiFailed),\n error\n );\n };\n\n private realtimeAttendeeIdPresenceHandler = (\n presentAttendeeId: string,\n present: boolean\n ): void => {\n const attendeeId = this.context.meetingSessionConfiguration.credentials.attendeeId;\n this.logger.info(`attendeePresenceReceived: ${attendeeId}`);\n if (attendeeId === presentAttendeeId && present && !this.presenceHandlerCalled) {\n this.presenceHandlerCalled = true;\n this.context.attendeePresenceDurationMs = Date.now() - this.context.startAudioVideoTimestamp;\n this.context.eventController?.publishEvent('attendeePresenceReceived', {\n attendeePresenceDurationMs: this.context.attendeePresenceDurationMs,\n });\n }\n };\n\n private generateBaseAudioVideoEventAttributes = (): AudioVideoEventAttributes => {\n const {\n signalingOpenDurationMs,\n startTimeMs,\n iceGatheringDurationMs,\n attendeePresenceDurationMs,\n meetingStartDurationMs,\n } = this.context;\n return {\n meetingDurationMs: startTimeMs === null ? 0 : Math.round(Date.now() - startTimeMs),\n signalingOpenDurationMs,\n iceGatheringDurationMs,\n attendeePresenceDurationMs,\n meetingStartDurationMs,\n };\n };\n\n private generateAudioVideoEventAttributesForReceivingAudioDropped = (): AudioVideoEventAttributes => {\n const baseAttributes = this.generateBaseAudioVideoEventAttributes();\n return {\n ...baseAttributes,\n maxVideoTileCount: this.context.maxVideoTileCount,\n poorConnectionCount: this.context.poorConnectionCount,\n };\n };\n\n /**\n * Degrade video codec to an alternative codec\n */\n private degradeVideoCodec(cause: string): void {\n // Degrade video codec if there are other codec options and current codec is not H264 CBP or VP8\n if (\n this.context.meetingSupportedVideoSendCodecPreferences !== undefined &&\n this.context.meetingSupportedVideoSendCodecPreferences.length > 1 &&\n !(\n this.context.meetingSupportedVideoSendCodecPreferences[0].equals(\n VideoCodecCapability.h264ConstrainedBaselineProfile()\n ) ||\n this.context.meetingSupportedVideoSendCodecPreferences[0].equals(VideoCodecCapability.vp8())\n )\n ) {\n const newMeetingSupportedVideoSendCodecPreferences: VideoCodecCapability[] = [];\n for (const capability of this.context.videoSendCodecPreferences) {\n if (!capability.equals(this.context.meetingSupportedVideoSendCodecPreferences[0])) {\n newMeetingSupportedVideoSendCodecPreferences.push(capability);\n }\n }\n if (newMeetingSupportedVideoSendCodecPreferences.length > 0) {\n this.context.logger.info(\n `Downgrading codec from ${this.context.meetingSupportedVideoSendCodecPreferences[0].codecName} to ${newMeetingSupportedVideoSendCodecPreferences[0].codecName} due to ${cause}`\n );\n this.context.degradedVideoSendCodecs.push(\n this.context.meetingSupportedVideoSendCodecPreferences[0]\n );\n this.context.meetingSupportedVideoSendCodecPreferences = newMeetingSupportedVideoSendCodecPreferences;\n\n if (this.context.videoUplinkBandwidthPolicy.setMeetingSupportedVideoSendCodecs) {\n this.context.videoUplinkBandwidthPolicy.setMeetingSupportedVideoSendCodecs(\n this.context.meetingSupportedVideoSendCodecPreferences,\n this.context.videoSendCodecPreferences\n );\n }\n\n this.context.audioVideoController.update({ needsRenegotiation: true });\n } else {\n this.context.logger.warn(\n `Degrading video codec failed since there is no alternative codec to select. Currently degraded codecs: ${this.context.degradedVideoSendCodecs\n .map(capability => capability.codecName)\n .join(',')}`\n );\n }\n }\n }\n}\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['sts'] = {};\nAWS.STS = Service.defineService('sts', ['2011-06-15']);\nrequire('../lib/services/sts');\nObject.defineProperty(apiLoader.services['sts'], '2011-06-15', {\n get: function get() {\n var model = require('../apis/sts-2011-06-15.min.json');\n model.paginators = require('../apis/sts-2011-06-15.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.STS;\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 */\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\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 __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;\r\n return g = { next: verb(0), \"throw\": verb(1), \"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 (_) 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 function __createBinding(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, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = 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\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\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 __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 = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\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: n === \"return\" } : 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\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = 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, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n/* eslint-disable space-unary-ops */\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\n\n//const Z_FILTERED = 1;\n//const Z_HUFFMAN_ONLY = 2;\n//const Z_RLE = 3;\nconst Z_FIXED = 4;\n//const Z_DEFAULT_STRATEGY = 0;\n\n/* Possible values of the data_type field (though see inflate()) */\nconst Z_BINARY = 0;\nconst Z_TEXT = 1;\n//const Z_ASCII = 1; // = Z_TEXT\nconst Z_UNKNOWN = 2;\n\n/*============================================================================*/\n\n\nfunction zero(buf) { let len = buf.length; while (--len >= 0) { buf[len] = 0; } }\n\n// From zutil.h\n\nconst STORED_BLOCK = 0;\nconst STATIC_TREES = 1;\nconst DYN_TREES = 2;\n/* The three kinds of block type */\n\nconst MIN_MATCH = 3;\nconst MAX_MATCH = 258;\n/* The minimum and maximum match lengths */\n\n// From deflate.h\n/* ===========================================================================\n * Internal compression state.\n */\n\nconst LENGTH_CODES = 29;\n/* number of length codes, not counting the special END_BLOCK code */\n\nconst LITERALS = 256;\n/* number of literal bytes 0..255 */\n\nconst L_CODES = LITERALS + 1 + LENGTH_CODES;\n/* number of Literal or Length codes, including the END_BLOCK code */\n\nconst D_CODES = 30;\n/* number of distance codes */\n\nconst BL_CODES = 19;\n/* number of codes used to transfer the bit lengths */\n\nconst HEAP_SIZE = 2 * L_CODES + 1;\n/* maximum heap size */\n\nconst MAX_BITS = 15;\n/* All codes must not exceed MAX_BITS bits */\n\nconst Buf_size = 16;\n/* size of bit buffer in bi_buf */\n\n\n/* ===========================================================================\n * Constants\n */\n\nconst MAX_BL_BITS = 7;\n/* Bit length codes must not exceed MAX_BL_BITS bits */\n\nconst END_BLOCK = 256;\n/* end of block literal code */\n\nconst REP_3_6 = 16;\n/* repeat previous bit length 3-6 times (2 bits of repeat count) */\n\nconst REPZ_3_10 = 17;\n/* repeat a zero length 3-10 times (3 bits of repeat count) */\n\nconst REPZ_11_138 = 18;\n/* repeat a zero length 11-138 times (7 bits of repeat count) */\n\n/* eslint-disable comma-spacing,array-bracket-spacing */\nconst extra_lbits = /* extra bits for each length code */\n new Uint8Array([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0]);\n\nconst extra_dbits = /* extra bits for each distance code */\n new Uint8Array([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13]);\n\nconst extra_blbits = /* extra bits for each bit length code */\n new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]);\n\nconst bl_order =\n new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);\n/* eslint-enable comma-spacing,array-bracket-spacing */\n\n/* The lengths of the bit length codes are sent in order of decreasing\n * probability, to avoid transmitting the lengths for unused bit length codes.\n */\n\n/* ===========================================================================\n * Local data. These are initialized only once.\n */\n\n// We pre-fill arrays with 0 to avoid uninitialized gaps\n\nconst DIST_CODE_LEN = 512; /* see definition of array dist_code below */\n\n// !!!! Use flat array instead of structure, Freq = i*2, Len = i*2+1\nconst static_ltree = new Array((L_CODES + 2) * 2);\nzero(static_ltree);\n/* The static literal tree. Since the bit lengths are imposed, there is no\n * need for the L_CODES extra codes used during heap construction. However\n * The codes 286 and 287 are needed to build a canonical tree (see _tr_init\n * below).\n */\n\nconst static_dtree = new Array(D_CODES * 2);\nzero(static_dtree);\n/* The static distance tree. (Actually a trivial tree since all codes use\n * 5 bits.)\n */\n\nconst _dist_code = new Array(DIST_CODE_LEN);\nzero(_dist_code);\n/* Distance codes. The first 256 values correspond to the distances\n * 3 .. 258, the last 256 values correspond to the top 8 bits of\n * the 15 bit distances.\n */\n\nconst _length_code = new Array(MAX_MATCH - MIN_MATCH + 1);\nzero(_length_code);\n/* length code for each normalized match length (0 == MIN_MATCH) */\n\nconst base_length = new Array(LENGTH_CODES);\nzero(base_length);\n/* First normalized length for each code (0 = MIN_MATCH) */\n\nconst base_dist = new Array(D_CODES);\nzero(base_dist);\n/* First normalized distance for each code (0 = distance of 1) */\n\n\nfunction StaticTreeDesc(static_tree, extra_bits, extra_base, elems, max_length) {\n\n this.static_tree = static_tree; /* static tree or NULL */\n this.extra_bits = extra_bits; /* extra bits for each code or NULL */\n this.extra_base = extra_base; /* base index for extra_bits */\n this.elems = elems; /* max number of elements in the tree */\n this.max_length = max_length; /* max bit length for the codes */\n\n // show if `static_tree` has data or dummy - needed for monomorphic objects\n this.has_stree = static_tree && static_tree.length;\n}\n\n\nlet static_l_desc;\nlet static_d_desc;\nlet static_bl_desc;\n\n\nfunction TreeDesc(dyn_tree, stat_desc) {\n this.dyn_tree = dyn_tree; /* the dynamic tree */\n this.max_code = 0; /* largest code with non zero frequency */\n this.stat_desc = stat_desc; /* the corresponding static tree */\n}\n\n\n\nconst d_code = (dist) => {\n\n return dist < 256 ? _dist_code[dist] : _dist_code[256 + (dist >>> 7)];\n};\n\n\n/* ===========================================================================\n * Output a short LSB first on the stream.\n * IN assertion: there is enough room in pendingBuf.\n */\nconst put_short = (s, w) => {\n// put_byte(s, (uch)((w) & 0xff));\n// put_byte(s, (uch)((ush)(w) >> 8));\n s.pending_buf[s.pending++] = (w) & 0xff;\n s.pending_buf[s.pending++] = (w >>> 8) & 0xff;\n};\n\n\n/* ===========================================================================\n * Send a value on a given number of bits.\n * IN assertion: length <= 16 and value fits in length bits.\n */\nconst send_bits = (s, value, length) => {\n\n if (s.bi_valid > (Buf_size - length)) {\n s.bi_buf |= (value << s.bi_valid) & 0xffff;\n put_short(s, s.bi_buf);\n s.bi_buf = value >> (Buf_size - s.bi_valid);\n s.bi_valid += length - Buf_size;\n } else {\n s.bi_buf |= (value << s.bi_valid) & 0xffff;\n s.bi_valid += length;\n }\n};\n\n\nconst send_code = (s, c, tree) => {\n\n send_bits(s, tree[c * 2]/*.Code*/, tree[c * 2 + 1]/*.Len*/);\n};\n\n\n/* ===========================================================================\n * Reverse the first len bits of a code, using straightforward code (a faster\n * method would use a table)\n * IN assertion: 1 <= len <= 15\n */\nconst bi_reverse = (code, len) => {\n\n let res = 0;\n do {\n res |= code & 1;\n code >>>= 1;\n res <<= 1;\n } while (--len > 0);\n return res >>> 1;\n};\n\n\n/* ===========================================================================\n * Flush the bit buffer, keeping at most 7 bits in it.\n */\nconst bi_flush = (s) => {\n\n if (s.bi_valid === 16) {\n put_short(s, s.bi_buf);\n s.bi_buf = 0;\n s.bi_valid = 0;\n\n } else if (s.bi_valid >= 8) {\n s.pending_buf[s.pending++] = s.bi_buf & 0xff;\n s.bi_buf >>= 8;\n s.bi_valid -= 8;\n }\n};\n\n\n/* ===========================================================================\n * Compute the optimal bit lengths for a tree and update the total bit length\n * for the current block.\n * IN assertion: the fields freq and dad are set, heap[heap_max] and\n * above are the tree nodes sorted by increasing frequency.\n * OUT assertions: the field len is set to the optimal bit length, the\n * array bl_count contains the frequencies for each bit length.\n * The length opt_len is updated; static_len is also updated if stree is\n * not null.\n */\nconst gen_bitlen = (s, desc) => {\n// deflate_state *s;\n// tree_desc *desc; /* the tree descriptor */\n\n const tree = desc.dyn_tree;\n const max_code = desc.max_code;\n const stree = desc.stat_desc.static_tree;\n const has_stree = desc.stat_desc.has_stree;\n const extra = desc.stat_desc.extra_bits;\n const base = desc.stat_desc.extra_base;\n const max_length = desc.stat_desc.max_length;\n let h; /* heap index */\n let n, m; /* iterate over the tree elements */\n let bits; /* bit length */\n let xbits; /* extra bits */\n let f; /* frequency */\n let overflow = 0; /* number of elements with bit length too large */\n\n for (bits = 0; bits <= MAX_BITS; bits++) {\n s.bl_count[bits] = 0;\n }\n\n /* In a first pass, compute the optimal bit lengths (which may\n * overflow in the case of the bit length tree).\n */\n tree[s.heap[s.heap_max] * 2 + 1]/*.Len*/ = 0; /* root of the heap */\n\n for (h = s.heap_max + 1; h < HEAP_SIZE; h++) {\n n = s.heap[h];\n bits = tree[tree[n * 2 + 1]/*.Dad*/ * 2 + 1]/*.Len*/ + 1;\n if (bits > max_length) {\n bits = max_length;\n overflow++;\n }\n tree[n * 2 + 1]/*.Len*/ = bits;\n /* We overwrite tree[n].Dad which is no longer needed */\n\n if (n > max_code) { continue; } /* not a leaf node */\n\n s.bl_count[bits]++;\n xbits = 0;\n if (n >= base) {\n xbits = extra[n - base];\n }\n f = tree[n * 2]/*.Freq*/;\n s.opt_len += f * (bits + xbits);\n if (has_stree) {\n s.static_len += f * (stree[n * 2 + 1]/*.Len*/ + xbits);\n }\n }\n if (overflow === 0) { return; }\n\n // Tracev((stderr,\"\\nbit length overflow\\n\"));\n /* This happens for example on obj2 and pic of the Calgary corpus */\n\n /* Find the first bit length which could increase: */\n do {\n bits = max_length - 1;\n while (s.bl_count[bits] === 0) { bits--; }\n s.bl_count[bits]--; /* move one leaf down the tree */\n s.bl_count[bits + 1] += 2; /* move one overflow item as its brother */\n s.bl_count[max_length]--;\n /* The brother of the overflow item also moves one step up,\n * but this does not affect bl_count[max_length]\n */\n overflow -= 2;\n } while (overflow > 0);\n\n /* Now recompute all bit lengths, scanning in increasing frequency.\n * h is still equal to HEAP_SIZE. (It is simpler to reconstruct all\n * lengths instead of fixing only the wrong ones. This idea is taken\n * from 'ar' written by Haruhiko Okumura.)\n */\n for (bits = max_length; bits !== 0; bits--) {\n n = s.bl_count[bits];\n while (n !== 0) {\n m = s.heap[--h];\n if (m > max_code) { continue; }\n if (tree[m * 2 + 1]/*.Len*/ !== bits) {\n // Tracev((stderr,\"code %d bits %d->%d\\n\", m, tree[m].Len, bits));\n s.opt_len += (bits - tree[m * 2 + 1]/*.Len*/) * tree[m * 2]/*.Freq*/;\n tree[m * 2 + 1]/*.Len*/ = bits;\n }\n n--;\n }\n }\n};\n\n\n/* ===========================================================================\n * Generate the codes for a given tree and bit counts (which need not be\n * optimal).\n * IN assertion: the array bl_count contains the bit length statistics for\n * the given tree and the field len is set for all tree elements.\n * OUT assertion: the field code is set for all tree elements of non\n * zero code length.\n */\nconst gen_codes = (tree, max_code, bl_count) => {\n// ct_data *tree; /* the tree to decorate */\n// int max_code; /* largest code with non zero frequency */\n// ushf *bl_count; /* number of codes at each bit length */\n\n const next_code = new Array(MAX_BITS + 1); /* next code value for each bit length */\n let code = 0; /* running code value */\n let bits; /* bit index */\n let n; /* code index */\n\n /* The distribution counts are first used to generate the code values\n * without bit reversal.\n */\n for (bits = 1; bits <= MAX_BITS; bits++) {\n code = (code + bl_count[bits - 1]) << 1;\n next_code[bits] = code;\n }\n /* Check that the bit counts in bl_count are consistent. The last code\n * must be all ones.\n */\n //Assert (code + bl_count[MAX_BITS]-1 == (1< {\n\n let n; /* iterates over tree elements */\n let bits; /* bit counter */\n let length; /* length value */\n let code; /* code value */\n let dist; /* distance index */\n const bl_count = new Array(MAX_BITS + 1);\n /* number of codes at each bit length for an optimal tree */\n\n // do check in _tr_init()\n //if (static_init_done) return;\n\n /* For some embedded targets, global variables are not initialized: */\n/*#ifdef NO_INIT_GLOBAL_POINTERS\n static_l_desc.static_tree = static_ltree;\n static_l_desc.extra_bits = extra_lbits;\n static_d_desc.static_tree = static_dtree;\n static_d_desc.extra_bits = extra_dbits;\n static_bl_desc.extra_bits = extra_blbits;\n#endif*/\n\n /* Initialize the mapping length (0..255) -> length code (0..28) */\n length = 0;\n for (code = 0; code < LENGTH_CODES - 1; code++) {\n base_length[code] = length;\n for (n = 0; n < (1 << extra_lbits[code]); n++) {\n _length_code[length++] = code;\n }\n }\n //Assert (length == 256, \"tr_static_init: length != 256\");\n /* Note that the length 255 (match length 258) can be represented\n * in two different ways: code 284 + 5 bits or code 285, so we\n * overwrite length_code[255] to use the best encoding:\n */\n _length_code[length - 1] = code;\n\n /* Initialize the mapping dist (0..32K) -> dist code (0..29) */\n dist = 0;\n for (code = 0; code < 16; code++) {\n base_dist[code] = dist;\n for (n = 0; n < (1 << extra_dbits[code]); n++) {\n _dist_code[dist++] = code;\n }\n }\n //Assert (dist == 256, \"tr_static_init: dist != 256\");\n dist >>= 7; /* from now on, all distances are divided by 128 */\n for (; code < D_CODES; code++) {\n base_dist[code] = dist << 7;\n for (n = 0; n < (1 << (extra_dbits[code] - 7)); n++) {\n _dist_code[256 + dist++] = code;\n }\n }\n //Assert (dist == 256, \"tr_static_init: 256+dist != 512\");\n\n /* Construct the codes of the static literal tree */\n for (bits = 0; bits <= MAX_BITS; bits++) {\n bl_count[bits] = 0;\n }\n\n n = 0;\n while (n <= 143) {\n static_ltree[n * 2 + 1]/*.Len*/ = 8;\n n++;\n bl_count[8]++;\n }\n while (n <= 255) {\n static_ltree[n * 2 + 1]/*.Len*/ = 9;\n n++;\n bl_count[9]++;\n }\n while (n <= 279) {\n static_ltree[n * 2 + 1]/*.Len*/ = 7;\n n++;\n bl_count[7]++;\n }\n while (n <= 287) {\n static_ltree[n * 2 + 1]/*.Len*/ = 8;\n n++;\n bl_count[8]++;\n }\n /* Codes 286 and 287 do not exist, but we must include them in the\n * tree construction to get a canonical Huffman tree (longest code\n * all ones)\n */\n gen_codes(static_ltree, L_CODES + 1, bl_count);\n\n /* The static distance tree is trivial: */\n for (n = 0; n < D_CODES; n++) {\n static_dtree[n * 2 + 1]/*.Len*/ = 5;\n static_dtree[n * 2]/*.Code*/ = bi_reverse(n, 5);\n }\n\n // Now data ready and we can init static trees\n static_l_desc = new StaticTreeDesc(static_ltree, extra_lbits, LITERALS + 1, L_CODES, MAX_BITS);\n static_d_desc = new StaticTreeDesc(static_dtree, extra_dbits, 0, D_CODES, MAX_BITS);\n static_bl_desc = new StaticTreeDesc(new Array(0), extra_blbits, 0, BL_CODES, MAX_BL_BITS);\n\n //static_init_done = true;\n};\n\n\n/* ===========================================================================\n * Initialize a new block.\n */\nconst init_block = (s) => {\n\n let n; /* iterates over tree elements */\n\n /* Initialize the trees. */\n for (n = 0; n < L_CODES; n++) { s.dyn_ltree[n * 2]/*.Freq*/ = 0; }\n for (n = 0; n < D_CODES; n++) { s.dyn_dtree[n * 2]/*.Freq*/ = 0; }\n for (n = 0; n < BL_CODES; n++) { s.bl_tree[n * 2]/*.Freq*/ = 0; }\n\n s.dyn_ltree[END_BLOCK * 2]/*.Freq*/ = 1;\n s.opt_len = s.static_len = 0;\n s.sym_next = s.matches = 0;\n};\n\n\n/* ===========================================================================\n * Flush the bit buffer and align the output on a byte boundary\n */\nconst bi_windup = (s) =>\n{\n if (s.bi_valid > 8) {\n put_short(s, s.bi_buf);\n } else if (s.bi_valid > 0) {\n //put_byte(s, (Byte)s->bi_buf);\n s.pending_buf[s.pending++] = s.bi_buf;\n }\n s.bi_buf = 0;\n s.bi_valid = 0;\n};\n\n/* ===========================================================================\n * Compares to subtrees, using the tree depth as tie breaker when\n * the subtrees have equal frequency. This minimizes the worst case length.\n */\nconst smaller = (tree, n, m, depth) => {\n\n const _n2 = n * 2;\n const _m2 = m * 2;\n return (tree[_n2]/*.Freq*/ < tree[_m2]/*.Freq*/ ||\n (tree[_n2]/*.Freq*/ === tree[_m2]/*.Freq*/ && depth[n] <= depth[m]));\n};\n\n/* ===========================================================================\n * Restore the heap property by moving down the tree starting at node k,\n * exchanging a node with the smallest of its two sons if necessary, stopping\n * when the heap property is re-established (each father smaller than its\n * two sons).\n */\nconst pqdownheap = (s, tree, k) => {\n// deflate_state *s;\n// ct_data *tree; /* the tree to restore */\n// int k; /* node to move down */\n\n const v = s.heap[k];\n let j = k << 1; /* left son of k */\n while (j <= s.heap_len) {\n /* Set j to the smallest of the two sons: */\n if (j < s.heap_len &&\n smaller(tree, s.heap[j + 1], s.heap[j], s.depth)) {\n j++;\n }\n /* Exit if v is smaller than both sons */\n if (smaller(tree, v, s.heap[j], s.depth)) { break; }\n\n /* Exchange v with the smallest son */\n s.heap[k] = s.heap[j];\n k = j;\n\n /* And continue down the tree, setting j to the left son of k */\n j <<= 1;\n }\n s.heap[k] = v;\n};\n\n\n// inlined manually\n// const SMALLEST = 1;\n\n/* ===========================================================================\n * Send the block data compressed using the given Huffman trees\n */\nconst compress_block = (s, ltree, dtree) => {\n// deflate_state *s;\n// const ct_data *ltree; /* literal tree */\n// const ct_data *dtree; /* distance tree */\n\n let dist; /* distance of matched string */\n let lc; /* match length or unmatched char (if dist == 0) */\n let sx = 0; /* running index in sym_buf */\n let code; /* the code to send */\n let extra; /* number of extra bits to send */\n\n if (s.sym_next !== 0) {\n do {\n dist = s.pending_buf[s.sym_buf + sx++] & 0xff;\n dist += (s.pending_buf[s.sym_buf + sx++] & 0xff) << 8;\n lc = s.pending_buf[s.sym_buf + sx++];\n if (dist === 0) {\n send_code(s, lc, ltree); /* send a literal byte */\n //Tracecv(isgraph(lc), (stderr,\" '%c' \", lc));\n } else {\n /* Here, lc is the match length - MIN_MATCH */\n code = _length_code[lc];\n send_code(s, code + LITERALS + 1, ltree); /* send the length code */\n extra = extra_lbits[code];\n if (extra !== 0) {\n lc -= base_length[code];\n send_bits(s, lc, extra); /* send the extra length bits */\n }\n dist--; /* dist is now the match distance - 1 */\n code = d_code(dist);\n //Assert (code < D_CODES, \"bad d_code\");\n\n send_code(s, code, dtree); /* send the distance code */\n extra = extra_dbits[code];\n if (extra !== 0) {\n dist -= base_dist[code];\n send_bits(s, dist, extra); /* send the extra distance bits */\n }\n } /* literal or match pair ? */\n\n /* Check that the overlay between pending_buf and sym_buf is ok: */\n //Assert(s->pending < s->lit_bufsize + sx, \"pendingBuf overflow\");\n\n } while (sx < s.sym_next);\n }\n\n send_code(s, END_BLOCK, ltree);\n};\n\n\n/* ===========================================================================\n * Construct one Huffman tree and assigns the code bit strings and lengths.\n * Update the total bit length for the current block.\n * IN assertion: the field freq is set for all tree elements.\n * OUT assertions: the fields len and code are set to the optimal bit length\n * and corresponding code. The length opt_len is updated; static_len is\n * also updated if stree is not null. The field max_code is set.\n */\nconst build_tree = (s, desc) => {\n// deflate_state *s;\n// tree_desc *desc; /* the tree descriptor */\n\n const tree = desc.dyn_tree;\n const stree = desc.stat_desc.static_tree;\n const has_stree = desc.stat_desc.has_stree;\n const elems = desc.stat_desc.elems;\n let n, m; /* iterate over heap elements */\n let max_code = -1; /* largest code with non zero frequency */\n let node; /* new node being created */\n\n /* Construct the initial heap, with least frequent element in\n * heap[SMALLEST]. The sons of heap[n] are heap[2*n] and heap[2*n+1].\n * heap[0] is not used.\n */\n s.heap_len = 0;\n s.heap_max = HEAP_SIZE;\n\n for (n = 0; n < elems; n++) {\n if (tree[n * 2]/*.Freq*/ !== 0) {\n s.heap[++s.heap_len] = max_code = n;\n s.depth[n] = 0;\n\n } else {\n tree[n * 2 + 1]/*.Len*/ = 0;\n }\n }\n\n /* The pkzip format requires that at least one distance code exists,\n * and that at least one bit should be sent even if there is only one\n * possible code. So to avoid special checks later on we force at least\n * two codes of non zero frequency.\n */\n while (s.heap_len < 2) {\n node = s.heap[++s.heap_len] = (max_code < 2 ? ++max_code : 0);\n tree[node * 2]/*.Freq*/ = 1;\n s.depth[node] = 0;\n s.opt_len--;\n\n if (has_stree) {\n s.static_len -= stree[node * 2 + 1]/*.Len*/;\n }\n /* node is 0 or 1 so it does not have extra bits */\n }\n desc.max_code = max_code;\n\n /* The elements heap[heap_len/2+1 .. heap_len] are leaves of the tree,\n * establish sub-heaps of increasing lengths:\n */\n for (n = (s.heap_len >> 1/*int /2*/); n >= 1; n--) { pqdownheap(s, tree, n); }\n\n /* Construct the Huffman tree by repeatedly combining the least two\n * frequent nodes.\n */\n node = elems; /* next internal node of the tree */\n do {\n //pqremove(s, tree, n); /* n = node of least frequency */\n /*** pqremove ***/\n n = s.heap[1/*SMALLEST*/];\n s.heap[1/*SMALLEST*/] = s.heap[s.heap_len--];\n pqdownheap(s, tree, 1/*SMALLEST*/);\n /***/\n\n m = s.heap[1/*SMALLEST*/]; /* m = node of next least frequency */\n\n s.heap[--s.heap_max] = n; /* keep the nodes sorted by frequency */\n s.heap[--s.heap_max] = m;\n\n /* Create a new node father of n and m */\n tree[node * 2]/*.Freq*/ = tree[n * 2]/*.Freq*/ + tree[m * 2]/*.Freq*/;\n s.depth[node] = (s.depth[n] >= s.depth[m] ? s.depth[n] : s.depth[m]) + 1;\n tree[n * 2 + 1]/*.Dad*/ = tree[m * 2 + 1]/*.Dad*/ = node;\n\n /* and insert the new node in the heap */\n s.heap[1/*SMALLEST*/] = node++;\n pqdownheap(s, tree, 1/*SMALLEST*/);\n\n } while (s.heap_len >= 2);\n\n s.heap[--s.heap_max] = s.heap[1/*SMALLEST*/];\n\n /* At this point, the fields freq and dad are set. We can now\n * generate the bit lengths.\n */\n gen_bitlen(s, desc);\n\n /* The field len is now set, we can generate the bit codes */\n gen_codes(tree, max_code, s.bl_count);\n};\n\n\n/* ===========================================================================\n * Scan a literal or distance tree to determine the frequencies of the codes\n * in the bit length tree.\n */\nconst scan_tree = (s, tree, max_code) => {\n// deflate_state *s;\n// ct_data *tree; /* the tree to be scanned */\n// int max_code; /* and its largest code of non zero frequency */\n\n let n; /* iterates over all tree elements */\n let prevlen = -1; /* last emitted length */\n let curlen; /* length of current code */\n\n let nextlen = tree[0 * 2 + 1]/*.Len*/; /* length of next code */\n\n let count = 0; /* repeat count of the current code */\n let max_count = 7; /* max repeat count */\n let min_count = 4; /* min repeat count */\n\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n }\n tree[(max_code + 1) * 2 + 1]/*.Len*/ = 0xffff; /* guard */\n\n for (n = 0; n <= max_code; n++) {\n curlen = nextlen;\n nextlen = tree[(n + 1) * 2 + 1]/*.Len*/;\n\n if (++count < max_count && curlen === nextlen) {\n continue;\n\n } else if (count < min_count) {\n s.bl_tree[curlen * 2]/*.Freq*/ += count;\n\n } else if (curlen !== 0) {\n\n if (curlen !== prevlen) { s.bl_tree[curlen * 2]/*.Freq*/++; }\n s.bl_tree[REP_3_6 * 2]/*.Freq*/++;\n\n } else if (count <= 10) {\n s.bl_tree[REPZ_3_10 * 2]/*.Freq*/++;\n\n } else {\n s.bl_tree[REPZ_11_138 * 2]/*.Freq*/++;\n }\n\n count = 0;\n prevlen = curlen;\n\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n\n } else if (curlen === nextlen) {\n max_count = 6;\n min_count = 3;\n\n } else {\n max_count = 7;\n min_count = 4;\n }\n }\n};\n\n\n/* ===========================================================================\n * Send a literal or distance tree in compressed form, using the codes in\n * bl_tree.\n */\nconst send_tree = (s, tree, max_code) => {\n// deflate_state *s;\n// ct_data *tree; /* the tree to be scanned */\n// int max_code; /* and its largest code of non zero frequency */\n\n let n; /* iterates over all tree elements */\n let prevlen = -1; /* last emitted length */\n let curlen; /* length of current code */\n\n let nextlen = tree[0 * 2 + 1]/*.Len*/; /* length of next code */\n\n let count = 0; /* repeat count of the current code */\n let max_count = 7; /* max repeat count */\n let min_count = 4; /* min repeat count */\n\n /* tree[max_code+1].Len = -1; */ /* guard already set */\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n }\n\n for (n = 0; n <= max_code; n++) {\n curlen = nextlen;\n nextlen = tree[(n + 1) * 2 + 1]/*.Len*/;\n\n if (++count < max_count && curlen === nextlen) {\n continue;\n\n } else if (count < min_count) {\n do { send_code(s, curlen, s.bl_tree); } while (--count !== 0);\n\n } else if (curlen !== 0) {\n if (curlen !== prevlen) {\n send_code(s, curlen, s.bl_tree);\n count--;\n }\n //Assert(count >= 3 && count <= 6, \" 3_6?\");\n send_code(s, REP_3_6, s.bl_tree);\n send_bits(s, count - 3, 2);\n\n } else if (count <= 10) {\n send_code(s, REPZ_3_10, s.bl_tree);\n send_bits(s, count - 3, 3);\n\n } else {\n send_code(s, REPZ_11_138, s.bl_tree);\n send_bits(s, count - 11, 7);\n }\n\n count = 0;\n prevlen = curlen;\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n\n } else if (curlen === nextlen) {\n max_count = 6;\n min_count = 3;\n\n } else {\n max_count = 7;\n min_count = 4;\n }\n }\n};\n\n\n/* ===========================================================================\n * Construct the Huffman tree for the bit lengths and return the index in\n * bl_order of the last bit length code to send.\n */\nconst build_bl_tree = (s) => {\n\n let max_blindex; /* index of last bit length code of non zero freq */\n\n /* Determine the bit length frequencies for literal and distance trees */\n scan_tree(s, s.dyn_ltree, s.l_desc.max_code);\n scan_tree(s, s.dyn_dtree, s.d_desc.max_code);\n\n /* Build the bit length tree: */\n build_tree(s, s.bl_desc);\n /* opt_len now includes the length of the tree representations, except\n * the lengths of the bit lengths codes and the 5+5+4 bits for the counts.\n */\n\n /* Determine the number of bit length codes to send. The pkzip format\n * requires that at least 4 bit length codes be sent. (appnote.txt says\n * 3 but the actual value used is 4.)\n */\n for (max_blindex = BL_CODES - 1; max_blindex >= 3; max_blindex--) {\n if (s.bl_tree[bl_order[max_blindex] * 2 + 1]/*.Len*/ !== 0) {\n break;\n }\n }\n /* Update opt_len to include the bit length tree and counts */\n s.opt_len += 3 * (max_blindex + 1) + 5 + 5 + 4;\n //Tracev((stderr, \"\\ndyn trees: dyn %ld, stat %ld\",\n // s->opt_len, s->static_len));\n\n return max_blindex;\n};\n\n\n/* ===========================================================================\n * Send the header for a block using dynamic Huffman trees: the counts, the\n * lengths of the bit length codes, the literal tree and the distance tree.\n * IN assertion: lcodes >= 257, dcodes >= 1, blcodes >= 4.\n */\nconst send_all_trees = (s, lcodes, dcodes, blcodes) => {\n// deflate_state *s;\n// int lcodes, dcodes, blcodes; /* number of codes for each tree */\n\n let rank; /* index in bl_order */\n\n //Assert (lcodes >= 257 && dcodes >= 1 && blcodes >= 4, \"not enough codes\");\n //Assert (lcodes <= L_CODES && dcodes <= D_CODES && blcodes <= BL_CODES,\n // \"too many codes\");\n //Tracev((stderr, \"\\nbl counts: \"));\n send_bits(s, lcodes - 257, 5); /* not +255 as stated in appnote.txt */\n send_bits(s, dcodes - 1, 5);\n send_bits(s, blcodes - 4, 4); /* not -3 as stated in appnote.txt */\n for (rank = 0; rank < blcodes; rank++) {\n //Tracev((stderr, \"\\nbl code %2d \", bl_order[rank]));\n send_bits(s, s.bl_tree[bl_order[rank] * 2 + 1]/*.Len*/, 3);\n }\n //Tracev((stderr, \"\\nbl tree: sent %ld\", s->bits_sent));\n\n send_tree(s, s.dyn_ltree, lcodes - 1); /* literal tree */\n //Tracev((stderr, \"\\nlit tree: sent %ld\", s->bits_sent));\n\n send_tree(s, s.dyn_dtree, dcodes - 1); /* distance tree */\n //Tracev((stderr, \"\\ndist tree: sent %ld\", s->bits_sent));\n};\n\n\n/* ===========================================================================\n * Check if the data type is TEXT or BINARY, using the following algorithm:\n * - TEXT if the two conditions below are satisfied:\n * a) There are no non-portable control characters belonging to the\n * \"block list\" (0..6, 14..25, 28..31).\n * b) There is at least one printable character belonging to the\n * \"allow list\" (9 {TAB}, 10 {LF}, 13 {CR}, 32..255).\n * - BINARY otherwise.\n * - The following partially-portable control characters form a\n * \"gray list\" that is ignored in this detection algorithm:\n * (7 {BEL}, 8 {BS}, 11 {VT}, 12 {FF}, 26 {SUB}, 27 {ESC}).\n * IN assertion: the fields Freq of dyn_ltree are set.\n */\nconst detect_data_type = (s) => {\n /* block_mask is the bit mask of block-listed bytes\n * set bits 0..6, 14..25, and 28..31\n * 0xf3ffc07f = binary 11110011111111111100000001111111\n */\n let block_mask = 0xf3ffc07f;\n let n;\n\n /* Check for non-textual (\"block-listed\") bytes. */\n for (n = 0; n <= 31; n++, block_mask >>>= 1) {\n if ((block_mask & 1) && (s.dyn_ltree[n * 2]/*.Freq*/ !== 0)) {\n return Z_BINARY;\n }\n }\n\n /* Check for textual (\"allow-listed\") bytes. */\n if (s.dyn_ltree[9 * 2]/*.Freq*/ !== 0 || s.dyn_ltree[10 * 2]/*.Freq*/ !== 0 ||\n s.dyn_ltree[13 * 2]/*.Freq*/ !== 0) {\n return Z_TEXT;\n }\n for (n = 32; n < LITERALS; n++) {\n if (s.dyn_ltree[n * 2]/*.Freq*/ !== 0) {\n return Z_TEXT;\n }\n }\n\n /* There are no \"block-listed\" or \"allow-listed\" bytes:\n * this stream either is empty or has tolerated (\"gray-listed\") bytes only.\n */\n return Z_BINARY;\n};\n\n\nlet static_init_done = false;\n\n/* ===========================================================================\n * Initialize the tree data structures for a new zlib stream.\n */\nconst _tr_init = (s) =>\n{\n\n if (!static_init_done) {\n tr_static_init();\n static_init_done = true;\n }\n\n s.l_desc = new TreeDesc(s.dyn_ltree, static_l_desc);\n s.d_desc = new TreeDesc(s.dyn_dtree, static_d_desc);\n s.bl_desc = new TreeDesc(s.bl_tree, static_bl_desc);\n\n s.bi_buf = 0;\n s.bi_valid = 0;\n\n /* Initialize the first block of the first file: */\n init_block(s);\n};\n\n\n/* ===========================================================================\n * Send a stored block\n */\nconst _tr_stored_block = (s, buf, stored_len, last) => {\n//DeflateState *s;\n//charf *buf; /* input block */\n//ulg stored_len; /* length of input block */\n//int last; /* one if this is the last block for a file */\n\n send_bits(s, (STORED_BLOCK << 1) + (last ? 1 : 0), 3); /* send block type */\n bi_windup(s); /* align on byte boundary */\n put_short(s, stored_len);\n put_short(s, ~stored_len);\n if (stored_len) {\n s.pending_buf.set(s.window.subarray(buf, buf + stored_len), s.pending);\n }\n s.pending += stored_len;\n};\n\n\n/* ===========================================================================\n * Send one empty static block to give enough lookahead for inflate.\n * This takes 10 bits, of which 7 may remain in the bit buffer.\n */\nconst _tr_align = (s) => {\n send_bits(s, STATIC_TREES << 1, 3);\n send_code(s, END_BLOCK, static_ltree);\n bi_flush(s);\n};\n\n\n/* ===========================================================================\n * Determine the best encoding for the current block: dynamic trees, static\n * trees or store, and write out the encoded block.\n */\nconst _tr_flush_block = (s, buf, stored_len, last) => {\n//DeflateState *s;\n//charf *buf; /* input block, or NULL if too old */\n//ulg stored_len; /* length of input block */\n//int last; /* one if this is the last block for a file */\n\n let opt_lenb, static_lenb; /* opt_len and static_len in bytes */\n let max_blindex = 0; /* index of last bit length code of non zero freq */\n\n /* Build the Huffman trees unless a stored block is forced */\n if (s.level > 0) {\n\n /* Check if the file is binary or text */\n if (s.strm.data_type === Z_UNKNOWN) {\n s.strm.data_type = detect_data_type(s);\n }\n\n /* Construct the literal and distance trees */\n build_tree(s, s.l_desc);\n // Tracev((stderr, \"\\nlit data: dyn %ld, stat %ld\", s->opt_len,\n // s->static_len));\n\n build_tree(s, s.d_desc);\n // Tracev((stderr, \"\\ndist data: dyn %ld, stat %ld\", s->opt_len,\n // s->static_len));\n /* At this point, opt_len and static_len are the total bit lengths of\n * the compressed block data, excluding the tree representations.\n */\n\n /* Build the bit length tree for the above two trees, and get the index\n * in bl_order of the last bit length code to send.\n */\n max_blindex = build_bl_tree(s);\n\n /* Determine the best encoding. Compute the block lengths in bytes. */\n opt_lenb = (s.opt_len + 3 + 7) >>> 3;\n static_lenb = (s.static_len + 3 + 7) >>> 3;\n\n // Tracev((stderr, \"\\nopt %lu(%lu) stat %lu(%lu) stored %lu lit %u \",\n // opt_lenb, s->opt_len, static_lenb, s->static_len, stored_len,\n // s->sym_next / 3));\n\n if (static_lenb <= opt_lenb) { opt_lenb = static_lenb; }\n\n } else {\n // Assert(buf != (char*)0, \"lost buf\");\n opt_lenb = static_lenb = stored_len + 5; /* force a stored block */\n }\n\n if ((stored_len + 4 <= opt_lenb) && (buf !== -1)) {\n /* 4: two words for the lengths */\n\n /* The test buf != NULL is only necessary if LIT_BUFSIZE > WSIZE.\n * Otherwise we can't have processed more than WSIZE input bytes since\n * the last block flush, because compression would have been\n * successful. If LIT_BUFSIZE <= WSIZE, it is never too late to\n * transform a block into a stored block.\n */\n _tr_stored_block(s, buf, stored_len, last);\n\n } else if (s.strategy === Z_FIXED || static_lenb === opt_lenb) {\n\n send_bits(s, (STATIC_TREES << 1) + (last ? 1 : 0), 3);\n compress_block(s, static_ltree, static_dtree);\n\n } else {\n send_bits(s, (DYN_TREES << 1) + (last ? 1 : 0), 3);\n send_all_trees(s, s.l_desc.max_code + 1, s.d_desc.max_code + 1, max_blindex + 1);\n compress_block(s, s.dyn_ltree, s.dyn_dtree);\n }\n // Assert (s->compressed_len == s->bits_sent, \"bad compressed size\");\n /* The above check is made mod 2^32, for files larger than 512 MB\n * and uLong implemented on 32 bits.\n */\n init_block(s);\n\n if (last) {\n bi_windup(s);\n }\n // Tracev((stderr,\"\\ncomprlen %lu(%lu) \", s->compressed_len>>3,\n // s->compressed_len-7*last));\n};\n\n/* ===========================================================================\n * Save the match info and tally the frequency counts. Return true if\n * the current block must be flushed.\n */\nconst _tr_tally = (s, dist, lc) => {\n// deflate_state *s;\n// unsigned dist; /* distance of matched string */\n// unsigned lc; /* match length-MIN_MATCH or unmatched char (if dist==0) */\n\n s.pending_buf[s.sym_buf + s.sym_next++] = dist;\n s.pending_buf[s.sym_buf + s.sym_next++] = dist >> 8;\n s.pending_buf[s.sym_buf + s.sym_next++] = lc;\n if (dist === 0) {\n /* lc is the unmatched char */\n s.dyn_ltree[lc * 2]/*.Freq*/++;\n } else {\n s.matches++;\n /* Here, lc is the match length - MIN_MATCH */\n dist--; /* dist = match distance - 1 */\n //Assert((ush)dist < (ush)MAX_DIST(s) &&\n // (ush)lc <= (ush)(MAX_MATCH-MIN_MATCH) &&\n // (ush)d_code(dist) < (ush)D_CODES, \"_tr_tally: bad match\");\n\n s.dyn_ltree[(_length_code[lc] + LITERALS + 1) * 2]/*.Freq*/++;\n s.dyn_dtree[d_code(dist) * 2]/*.Freq*/++;\n }\n\n return (s.sym_next === s.sym_end);\n};\n\nmodule.exports._tr_init = _tr_init;\nmodule.exports._tr_stored_block = _tr_stored_block;\nmodule.exports._tr_flush_block = _tr_flush_block;\nmodule.exports._tr_tally = _tr_tally;\nmodule.exports._tr_align = _tr_align;\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\n\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst support_js_1 = require(\"./support.js\");\nconst types_js_1 = require(\"./types.js\");\nconst CPU_WARNING_MAX_INTERVAL_MS = 5 * 1000;\nclass VoiceFocusInlineNode extends types_js_1.VoiceFocusAudioWorkletNode {\n constructor(context, options) {\n super(context, options.processor, options);\n this.cpuWarningCount = 0;\n this.channelCountMode = 'explicit';\n this.channelCount = 1;\n const { modelURL, worker, fetchBehavior, logger, delegate, } = options;\n this.logger = logger;\n this.port.onmessage = this.onProcessorMessage.bind(this);\n this.delegate = delegate;\n if (logger)\n logger.debug('VoiceFocusInlineNode:', modelURL);\n this.worker = worker;\n this.worker.onmessage = this.onWorkerMessage.bind(this);\n const message = support_js_1.supportsWASMPostMessage(globalThis) ? 'get-module' : 'get-module-buffer';\n this.worker.postMessage({\n message,\n key: 'model',\n fetchBehavior,\n path: modelURL,\n });\n }\n onModuleBufferLoaded(buffer, key) {\n this.port.postMessage({ message: 'module-buffer', buffer, key });\n }\n onModuleLoaded(module, key) {\n this.port.postMessage({ message: 'module', module, key });\n }\n enable() {\n return __awaiter(this, void 0, void 0, function* () {\n this.port.postMessage({ message: 'enable' });\n });\n }\n disable() {\n return __awaiter(this, void 0, void 0, function* () {\n this.port.postMessage({ message: 'disable' });\n });\n }\n stop() {\n var _a;\n return __awaiter(this, void 0, void 0, function* () {\n this.port.postMessage({ message: 'stop' });\n try {\n (_a = this.worker) === null || _a === void 0 ? void 0 : _a.terminate();\n }\n catch (e) {\n console.error(\"failed to terminate worker:\", e);\n }\n this.disconnect();\n });\n }\n onProcessorMessage(event) {\n var _a, _b, _c;\n const data = event.data;\n switch (data.message) {\n case 'cpu':\n this.cpuWarningCount++;\n const now = Date.now();\n const before = this.cpuWarningLastTriggered || now;\n const diff = Math.abs(now - before);\n if (!this.cpuWarningLastTriggered || diff > CPU_WARNING_MAX_INTERVAL_MS) {\n (_a = this.logger) === null || _a === void 0 ? void 0 : _a.warn(`CPU warning (count: ${this.cpuWarningCount}):`, data.message);\n this.cpuWarningCount = 0;\n this.cpuWarningLastTriggered = now;\n }\n (_b = this.delegate) === null || _b === void 0 ? void 0 : _b.onCPUWarning();\n break;\n default:\n (_c = this.logger) === null || _c === void 0 ? void 0 : _c.debug('Ignoring processor message.');\n }\n }\n onWorkerMessage(event) {\n const data = event.data;\n switch (data.message) {\n case 'module-buffer':\n if (!data.buffer || !data.key) {\n return;\n }\n this.onModuleBufferLoaded(data.buffer, data.key);\n break;\n case 'module':\n if (!data.module || !data.key) {\n return;\n }\n this.onModuleLoaded(data.module, data.key);\n break;\n case 'stopped':\n if (this.worker) {\n this.worker.terminate();\n }\n break;\n default:\n return;\n }\n }\n}\nexports.default = VoiceFocusInlineNode;\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar isCallable = require('../internals/is-callable');\n\nvar aFunction = function (argument) {\n return isCallable(argument) ? argument : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n return arguments.length < 2 ? aFunction(globalThis[namespace]) : globalThis[namespace] && globalThis[namespace][method];\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\nvar V8_PROTOTYPE_DEFINE_BUG = require('../internals/v8-prototype-define-bug');\nvar anObject = require('../internals/an-object');\nvar toPropertyKey = require('../internals/to-property-key');\n\nvar $TypeError = TypeError;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar $defineProperty = Object.defineProperty;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar ENUMERABLE = 'enumerable';\nvar CONFIGURABLE = 'configurable';\nvar WRITABLE = 'writable';\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? V8_PROTOTYPE_DEFINE_BUG ? function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (typeof O === 'function' && P === 'prototype' && 'value' in Attributes && WRITABLE in Attributes && !Attributes[WRITABLE]) {\n var current = $getOwnPropertyDescriptor(O, P);\n if (current && current[WRITABLE]) {\n O[P] = Attributes.value;\n Attributes = {\n configurable: CONFIGURABLE in Attributes ? Attributes[CONFIGURABLE] : current[CONFIGURABLE],\n enumerable: ENUMERABLE in Attributes ? Attributes[ENUMERABLE] : current[ENUMERABLE],\n writable: false\n };\n }\n } return $defineProperty(O, P, Attributes);\n} : $defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return $defineProperty(O, P, Attributes);\n } catch (error) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw new $TypeError('Accessors not supported');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","/**\n * Javascript implementation of PKCS#12.\n *\n * @author Dave Longley\n * @author Stefan Siegl \n *\n * Copyright (c) 2010-2014 Digital Bazaar, Inc.\n * Copyright (c) 2012 Stefan Siegl \n *\n * The ASN.1 representation of PKCS#12 is as follows\n * (see ftp://ftp.rsasecurity.com/pub/pkcs/pkcs-12/pkcs-12-tc1.pdf for details)\n *\n * PFX ::= SEQUENCE {\n * version INTEGER {v3(3)}(v3,...),\n * authSafe ContentInfo,\n * macData MacData OPTIONAL\n * }\n *\n * MacData ::= SEQUENCE {\n * mac DigestInfo,\n * macSalt OCTET STRING,\n * iterations INTEGER DEFAULT 1\n * }\n * Note: The iterations default is for historical reasons and its use is\n * deprecated. A higher value, like 1024, is recommended.\n *\n * DigestInfo is defined in PKCS#7 as follows:\n *\n * DigestInfo ::= SEQUENCE {\n * digestAlgorithm DigestAlgorithmIdentifier,\n * digest Digest\n * }\n *\n * DigestAlgorithmIdentifier ::= AlgorithmIdentifier\n *\n * The AlgorithmIdentifier contains an Object Identifier (OID) and parameters\n * for the algorithm, if any. In the case of SHA1 there is none.\n *\n * AlgorithmIdentifer ::= SEQUENCE {\n * algorithm OBJECT IDENTIFIER,\n * parameters ANY DEFINED BY algorithm OPTIONAL\n * }\n *\n * Digest ::= OCTET STRING\n *\n *\n * ContentInfo ::= SEQUENCE {\n * contentType ContentType,\n * content [0] EXPLICIT ANY DEFINED BY contentType OPTIONAL\n * }\n *\n * ContentType ::= OBJECT IDENTIFIER\n *\n * AuthenticatedSafe ::= SEQUENCE OF ContentInfo\n * -- Data if unencrypted\n * -- EncryptedData if password-encrypted\n * -- EnvelopedData if public key-encrypted\n *\n *\n * SafeContents ::= SEQUENCE OF SafeBag\n *\n * SafeBag ::= SEQUENCE {\n * bagId BAG-TYPE.&id ({PKCS12BagSet})\n * bagValue [0] EXPLICIT BAG-TYPE.&Type({PKCS12BagSet}{@bagId}),\n * bagAttributes SET OF PKCS12Attribute OPTIONAL\n * }\n *\n * PKCS12Attribute ::= SEQUENCE {\n * attrId ATTRIBUTE.&id ({PKCS12AttrSet}),\n * attrValues SET OF ATTRIBUTE.&Type ({PKCS12AttrSet}{@attrId})\n * } -- This type is compatible with the X.500 type 'Attribute'\n *\n * PKCS12AttrSet ATTRIBUTE ::= {\n * friendlyName | -- from PKCS #9\n * localKeyId, -- from PKCS #9\n * ... -- Other attributes are allowed\n * }\n *\n * CertBag ::= SEQUENCE {\n * certId BAG-TYPE.&id ({CertTypes}),\n * certValue [0] EXPLICIT BAG-TYPE.&Type ({CertTypes}{@certId})\n * }\n *\n * x509Certificate BAG-TYPE ::= {OCTET STRING IDENTIFIED BY {certTypes 1}}\n * -- DER-encoded X.509 certificate stored in OCTET STRING\n *\n * sdsiCertificate BAG-TYPE ::= {IA5String IDENTIFIED BY {certTypes 2}}\n * -- Base64-encoded SDSI certificate stored in IA5String\n *\n * CertTypes BAG-TYPE ::= {\n * x509Certificate |\n * sdsiCertificate,\n * ... -- For future extensions\n * }\n */\nvar forge = require('./forge');\nrequire('./asn1');\nrequire('./hmac');\nrequire('./oids');\nrequire('./pkcs7asn1');\nrequire('./pbe');\nrequire('./random');\nrequire('./rsa');\nrequire('./sha1');\nrequire('./util');\nrequire('./x509');\n\n// shortcut for asn.1 & PKI API\nvar asn1 = forge.asn1;\nvar pki = forge.pki;\n\n// shortcut for PKCS#12 API\nvar p12 = module.exports = forge.pkcs12 = forge.pkcs12 || {};\n\nvar contentInfoValidator = {\n name: 'ContentInfo',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE, // a ContentInfo\n constructed: true,\n value: [{\n name: 'ContentInfo.contentType',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.OID,\n constructed: false,\n capture: 'contentType'\n }, {\n name: 'ContentInfo.content',\n tagClass: asn1.Class.CONTEXT_SPECIFIC,\n constructed: true,\n captureAsn1: 'content'\n }]\n};\n\nvar pfxValidator = {\n name: 'PFX',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n value: [{\n name: 'PFX.version',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.INTEGER,\n constructed: false,\n capture: 'version'\n },\n contentInfoValidator, {\n name: 'PFX.macData',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n optional: true,\n captureAsn1: 'mac',\n value: [{\n name: 'PFX.macData.mac',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE, // DigestInfo\n constructed: true,\n value: [{\n name: 'PFX.macData.mac.digestAlgorithm',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE, // DigestAlgorithmIdentifier\n constructed: true,\n value: [{\n name: 'PFX.macData.mac.digestAlgorithm.algorithm',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.OID,\n constructed: false,\n capture: 'macAlgorithm'\n }, {\n name: 'PFX.macData.mac.digestAlgorithm.parameters',\n tagClass: asn1.Class.UNIVERSAL,\n captureAsn1: 'macAlgorithmParameters'\n }]\n }, {\n name: 'PFX.macData.mac.digest',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.OCTETSTRING,\n constructed: false,\n capture: 'macDigest'\n }]\n }, {\n name: 'PFX.macData.macSalt',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.OCTETSTRING,\n constructed: false,\n capture: 'macSalt'\n }, {\n name: 'PFX.macData.iterations',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.INTEGER,\n constructed: false,\n optional: true,\n capture: 'macIterations'\n }]\n }]\n};\n\nvar safeBagValidator = {\n name: 'SafeBag',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n value: [{\n name: 'SafeBag.bagId',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.OID,\n constructed: false,\n capture: 'bagId'\n }, {\n name: 'SafeBag.bagValue',\n tagClass: asn1.Class.CONTEXT_SPECIFIC,\n constructed: true,\n captureAsn1: 'bagValue'\n }, {\n name: 'SafeBag.bagAttributes',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SET,\n constructed: true,\n optional: true,\n capture: 'bagAttributes'\n }]\n};\n\nvar attributeValidator = {\n name: 'Attribute',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n value: [{\n name: 'Attribute.attrId',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.OID,\n constructed: false,\n capture: 'oid'\n }, {\n name: 'Attribute.attrValues',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SET,\n constructed: true,\n capture: 'values'\n }]\n};\n\nvar certBagValidator = {\n name: 'CertBag',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n value: [{\n name: 'CertBag.certId',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.OID,\n constructed: false,\n capture: 'certId'\n }, {\n name: 'CertBag.certValue',\n tagClass: asn1.Class.CONTEXT_SPECIFIC,\n constructed: true,\n /* So far we only support X.509 certificates (which are wrapped in\n an OCTET STRING, hence hard code that here). */\n value: [{\n name: 'CertBag.certValue[0]',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Class.OCTETSTRING,\n constructed: false,\n capture: 'cert'\n }]\n }]\n};\n\n/**\n * Search SafeContents structure for bags with matching attributes.\n *\n * The search can optionally be narrowed by a certain bag type.\n *\n * @param safeContents the SafeContents structure to search in.\n * @param attrName the name of the attribute to compare against.\n * @param attrValue the attribute value to search for.\n * @param [bagType] bag type to narrow search by.\n *\n * @return an array of matching bags.\n */\nfunction _getBagsByAttribute(safeContents, attrName, attrValue, bagType) {\n var result = [];\n\n for(var i = 0; i < safeContents.length; i++) {\n for(var j = 0; j < safeContents[i].safeBags.length; j++) {\n var bag = safeContents[i].safeBags[j];\n if(bagType !== undefined && bag.type !== bagType) {\n continue;\n }\n // only filter by bag type, no attribute specified\n if(attrName === null) {\n result.push(bag);\n continue;\n }\n if(bag.attributes[attrName] !== undefined &&\n bag.attributes[attrName].indexOf(attrValue) >= 0) {\n result.push(bag);\n }\n }\n }\n\n return result;\n}\n\n/**\n * Converts a PKCS#12 PFX in ASN.1 notation into a PFX object.\n *\n * @param obj The PKCS#12 PFX in ASN.1 notation.\n * @param strict true to use strict DER decoding, false not to (default: true).\n * @param {String} password Password to decrypt with (optional).\n *\n * @return PKCS#12 PFX object.\n */\np12.pkcs12FromAsn1 = function(obj, strict, password) {\n // handle args\n if(typeof strict === 'string') {\n password = strict;\n strict = true;\n } else if(strict === undefined) {\n strict = true;\n }\n\n // validate PFX and capture data\n var capture = {};\n var errors = [];\n if(!asn1.validate(obj, pfxValidator, capture, errors)) {\n var error = new Error('Cannot read PKCS#12 PFX. ' +\n 'ASN.1 object is not an PKCS#12 PFX.');\n error.errors = error;\n throw error;\n }\n\n var pfx = {\n version: capture.version.charCodeAt(0),\n safeContents: [],\n\n /**\n * Gets bags with matching attributes.\n *\n * @param filter the attributes to filter by:\n * [localKeyId] the localKeyId to search for.\n * [localKeyIdHex] the localKeyId in hex to search for.\n * [friendlyName] the friendly name to search for.\n * [bagType] bag type to narrow each attribute search by.\n *\n * @return a map of attribute type to an array of matching bags or, if no\n * attribute was given but a bag type, the map key will be the\n * bag type.\n */\n getBags: function(filter) {\n var rval = {};\n\n var localKeyId;\n if('localKeyId' in filter) {\n localKeyId = filter.localKeyId;\n } else if('localKeyIdHex' in filter) {\n localKeyId = forge.util.hexToBytes(filter.localKeyIdHex);\n }\n\n // filter on bagType only\n if(localKeyId === undefined && !('friendlyName' in filter) &&\n 'bagType' in filter) {\n rval[filter.bagType] = _getBagsByAttribute(\n pfx.safeContents, null, null, filter.bagType);\n }\n\n if(localKeyId !== undefined) {\n rval.localKeyId = _getBagsByAttribute(\n pfx.safeContents, 'localKeyId',\n localKeyId, filter.bagType);\n }\n if('friendlyName' in filter) {\n rval.friendlyName = _getBagsByAttribute(\n pfx.safeContents, 'friendlyName',\n filter.friendlyName, filter.bagType);\n }\n\n return rval;\n },\n\n /**\n * DEPRECATED: use getBags() instead.\n *\n * Get bags with matching friendlyName attribute.\n *\n * @param friendlyName the friendly name to search for.\n * @param [bagType] bag type to narrow search by.\n *\n * @return an array of bags with matching friendlyName attribute.\n */\n getBagsByFriendlyName: function(friendlyName, bagType) {\n return _getBagsByAttribute(\n pfx.safeContents, 'friendlyName', friendlyName, bagType);\n },\n\n /**\n * DEPRECATED: use getBags() instead.\n *\n * Get bags with matching localKeyId attribute.\n *\n * @param localKeyId the localKeyId to search for.\n * @param [bagType] bag type to narrow search by.\n *\n * @return an array of bags with matching localKeyId attribute.\n */\n getBagsByLocalKeyId: function(localKeyId, bagType) {\n return _getBagsByAttribute(\n pfx.safeContents, 'localKeyId', localKeyId, bagType);\n }\n };\n\n if(capture.version.charCodeAt(0) !== 3) {\n var error = new Error('PKCS#12 PFX of version other than 3 not supported.');\n error.version = capture.version.charCodeAt(0);\n throw error;\n }\n\n if(asn1.derToOid(capture.contentType) !== pki.oids.data) {\n var error = new Error('Only PKCS#12 PFX in password integrity mode supported.');\n error.oid = asn1.derToOid(capture.contentType);\n throw error;\n }\n\n var data = capture.content.value[0];\n if(data.tagClass !== asn1.Class.UNIVERSAL ||\n data.type !== asn1.Type.OCTETSTRING) {\n throw new Error('PKCS#12 authSafe content data is not an OCTET STRING.');\n }\n data = _decodePkcs7Data(data);\n\n // check for MAC\n if(capture.mac) {\n var md = null;\n var macKeyBytes = 0;\n var macAlgorithm = asn1.derToOid(capture.macAlgorithm);\n switch(macAlgorithm) {\n case pki.oids.sha1:\n md = forge.md.sha1.create();\n macKeyBytes = 20;\n break;\n case pki.oids.sha256:\n md = forge.md.sha256.create();\n macKeyBytes = 32;\n break;\n case pki.oids.sha384:\n md = forge.md.sha384.create();\n macKeyBytes = 48;\n break;\n case pki.oids.sha512:\n md = forge.md.sha512.create();\n macKeyBytes = 64;\n break;\n case pki.oids.md5:\n md = forge.md.md5.create();\n macKeyBytes = 16;\n break;\n }\n if(md === null) {\n throw new Error('PKCS#12 uses unsupported MAC algorithm: ' + macAlgorithm);\n }\n\n // verify MAC (iterations default to 1)\n var macSalt = new forge.util.ByteBuffer(capture.macSalt);\n var macIterations = (('macIterations' in capture) ?\n parseInt(forge.util.bytesToHex(capture.macIterations), 16) : 1);\n var macKey = p12.generateKey(\n password, macSalt, 3, macIterations, macKeyBytes, md);\n var mac = forge.hmac.create();\n mac.start(md, macKey);\n mac.update(data.value);\n var macValue = mac.getMac();\n if(macValue.getBytes() !== capture.macDigest) {\n throw new Error('PKCS#12 MAC could not be verified. Invalid password?');\n }\n }\n\n _decodeAuthenticatedSafe(pfx, data.value, strict, password);\n return pfx;\n};\n\n/**\n * Decodes PKCS#7 Data. PKCS#7 (RFC 2315) defines \"Data\" as an OCTET STRING,\n * but it is sometimes an OCTET STRING that is composed/constructed of chunks,\n * each its own OCTET STRING. This is BER-encoding vs. DER-encoding. This\n * function transforms this corner-case into the usual simple,\n * non-composed/constructed OCTET STRING.\n *\n * This function may be moved to ASN.1 at some point to better deal with\n * more BER-encoding issues, should they arise.\n *\n * @param data the ASN.1 Data object to transform.\n */\nfunction _decodePkcs7Data(data) {\n // handle special case of \"chunked\" data content: an octet string composed\n // of other octet strings\n if(data.composed || data.constructed) {\n var value = forge.util.createBuffer();\n for(var i = 0; i < data.value.length; ++i) {\n value.putBytes(data.value[i].value);\n }\n data.composed = data.constructed = false;\n data.value = value.getBytes();\n }\n return data;\n}\n\n/**\n * Decode PKCS#12 AuthenticatedSafe (BER encoded) into PFX object.\n *\n * The AuthenticatedSafe is a BER-encoded SEQUENCE OF ContentInfo.\n *\n * @param pfx The PKCS#12 PFX object to fill.\n * @param {String} authSafe BER-encoded AuthenticatedSafe.\n * @param strict true to use strict DER decoding, false not to.\n * @param {String} password Password to decrypt with (optional).\n */\nfunction _decodeAuthenticatedSafe(pfx, authSafe, strict, password) {\n authSafe = asn1.fromDer(authSafe, strict); /* actually it's BER encoded */\n\n if(authSafe.tagClass !== asn1.Class.UNIVERSAL ||\n authSafe.type !== asn1.Type.SEQUENCE ||\n authSafe.constructed !== true) {\n throw new Error('PKCS#12 AuthenticatedSafe expected to be a ' +\n 'SEQUENCE OF ContentInfo');\n }\n\n for(var i = 0; i < authSafe.value.length; i++) {\n var contentInfo = authSafe.value[i];\n\n // validate contentInfo and capture data\n var capture = {};\n var errors = [];\n if(!asn1.validate(contentInfo, contentInfoValidator, capture, errors)) {\n var error = new Error('Cannot read ContentInfo.');\n error.errors = errors;\n throw error;\n }\n\n var obj = {\n encrypted: false\n };\n var safeContents = null;\n var data = capture.content.value[0];\n switch(asn1.derToOid(capture.contentType)) {\n case pki.oids.data:\n if(data.tagClass !== asn1.Class.UNIVERSAL ||\n data.type !== asn1.Type.OCTETSTRING) {\n throw new Error('PKCS#12 SafeContents Data is not an OCTET STRING.');\n }\n safeContents = _decodePkcs7Data(data).value;\n break;\n case pki.oids.encryptedData:\n safeContents = _decryptSafeContents(data, password);\n obj.encrypted = true;\n break;\n default:\n var error = new Error('Unsupported PKCS#12 contentType.');\n error.contentType = asn1.derToOid(capture.contentType);\n throw error;\n }\n\n obj.safeBags = _decodeSafeContents(safeContents, strict, password);\n pfx.safeContents.push(obj);\n }\n}\n\n/**\n * Decrypt PKCS#7 EncryptedData structure.\n *\n * @param data ASN.1 encoded EncryptedContentInfo object.\n * @param password The user-provided password.\n *\n * @return The decrypted SafeContents (ASN.1 object).\n */\nfunction _decryptSafeContents(data, password) {\n var capture = {};\n var errors = [];\n if(!asn1.validate(\n data, forge.pkcs7.asn1.encryptedDataValidator, capture, errors)) {\n var error = new Error('Cannot read EncryptedContentInfo.');\n error.errors = errors;\n throw error;\n }\n\n var oid = asn1.derToOid(capture.contentType);\n if(oid !== pki.oids.data) {\n var error = new Error(\n 'PKCS#12 EncryptedContentInfo ContentType is not Data.');\n error.oid = oid;\n throw error;\n }\n\n // get cipher\n oid = asn1.derToOid(capture.encAlgorithm);\n var cipher = pki.pbe.getCipher(oid, capture.encParameter, password);\n\n // get encrypted data\n var encryptedContentAsn1 = _decodePkcs7Data(capture.encryptedContentAsn1);\n var encrypted = forge.util.createBuffer(encryptedContentAsn1.value);\n\n cipher.update(encrypted);\n if(!cipher.finish()) {\n throw new Error('Failed to decrypt PKCS#12 SafeContents.');\n }\n\n return cipher.output.getBytes();\n}\n\n/**\n * Decode PKCS#12 SafeContents (BER-encoded) into array of Bag objects.\n *\n * The safeContents is a BER-encoded SEQUENCE OF SafeBag.\n *\n * @param {String} safeContents BER-encoded safeContents.\n * @param strict true to use strict DER decoding, false not to.\n * @param {String} password Password to decrypt with (optional).\n *\n * @return {Array} Array of Bag objects.\n */\nfunction _decodeSafeContents(safeContents, strict, password) {\n // if strict and no safe contents, return empty safes\n if(!strict && safeContents.length === 0) {\n return [];\n }\n\n // actually it's BER-encoded\n safeContents = asn1.fromDer(safeContents, strict);\n\n if(safeContents.tagClass !== asn1.Class.UNIVERSAL ||\n safeContents.type !== asn1.Type.SEQUENCE ||\n safeContents.constructed !== true) {\n throw new Error(\n 'PKCS#12 SafeContents expected to be a SEQUENCE OF SafeBag.');\n }\n\n var res = [];\n for(var i = 0; i < safeContents.value.length; i++) {\n var safeBag = safeContents.value[i];\n\n // validate SafeBag and capture data\n var capture = {};\n var errors = [];\n if(!asn1.validate(safeBag, safeBagValidator, capture, errors)) {\n var error = new Error('Cannot read SafeBag.');\n error.errors = errors;\n throw error;\n }\n\n /* Create bag object and push to result array. */\n var bag = {\n type: asn1.derToOid(capture.bagId),\n attributes: _decodeBagAttributes(capture.bagAttributes)\n };\n res.push(bag);\n\n var validator, decoder;\n var bagAsn1 = capture.bagValue.value[0];\n switch(bag.type) {\n case pki.oids.pkcs8ShroudedKeyBag:\n /* bagAsn1 has a EncryptedPrivateKeyInfo, which we need to decrypt.\n Afterwards we can handle it like a keyBag,\n which is a PrivateKeyInfo. */\n bagAsn1 = pki.decryptPrivateKeyInfo(bagAsn1, password);\n if(bagAsn1 === null) {\n throw new Error(\n 'Unable to decrypt PKCS#8 ShroudedKeyBag, wrong password?');\n }\n\n /* fall through */\n case pki.oids.keyBag:\n /* A PKCS#12 keyBag is a simple PrivateKeyInfo as understood by our\n PKI module, hence we don't have to do validation/capturing here,\n just pass what we already got. */\n try {\n bag.key = pki.privateKeyFromAsn1(bagAsn1);\n } catch(e) {\n // ignore unknown key type, pass asn1 value\n bag.key = null;\n bag.asn1 = bagAsn1;\n }\n continue; /* Nothing more to do. */\n\n case pki.oids.certBag:\n /* A PKCS#12 certBag can wrap both X.509 and sdsi certificates.\n Therefore put the SafeBag content through another validator to\n capture the fields. Afterwards check & store the results. */\n validator = certBagValidator;\n decoder = function() {\n if(asn1.derToOid(capture.certId) !== pki.oids.x509Certificate) {\n var error = new Error(\n 'Unsupported certificate type, only X.509 supported.');\n error.oid = asn1.derToOid(capture.certId);\n throw error;\n }\n\n // true=produce cert hash\n var certAsn1 = asn1.fromDer(capture.cert, strict);\n try {\n bag.cert = pki.certificateFromAsn1(certAsn1, true);\n } catch(e) {\n // ignore unknown cert type, pass asn1 value\n bag.cert = null;\n bag.asn1 = certAsn1;\n }\n };\n break;\n\n default:\n var error = new Error('Unsupported PKCS#12 SafeBag type.');\n error.oid = bag.type;\n throw error;\n }\n\n /* Validate SafeBag value (i.e. CertBag, etc.) and capture data if needed. */\n if(validator !== undefined &&\n !asn1.validate(bagAsn1, validator, capture, errors)) {\n var error = new Error('Cannot read PKCS#12 ' + validator.name);\n error.errors = errors;\n throw error;\n }\n\n /* Call decoder function from above to store the results. */\n decoder();\n }\n\n return res;\n}\n\n/**\n * Decode PKCS#12 SET OF PKCS12Attribute into JavaScript object.\n *\n * @param attributes SET OF PKCS12Attribute (ASN.1 object).\n *\n * @return the decoded attributes.\n */\nfunction _decodeBagAttributes(attributes) {\n var decodedAttrs = {};\n\n if(attributes !== undefined) {\n for(var i = 0; i < attributes.length; ++i) {\n var capture = {};\n var errors = [];\n if(!asn1.validate(attributes[i], attributeValidator, capture, errors)) {\n var error = new Error('Cannot read PKCS#12 BagAttribute.');\n error.errors = errors;\n throw error;\n }\n\n var oid = asn1.derToOid(capture.oid);\n if(pki.oids[oid] === undefined) {\n // unsupported attribute type, ignore.\n continue;\n }\n\n decodedAttrs[pki.oids[oid]] = [];\n for(var j = 0; j < capture.values.length; ++j) {\n decodedAttrs[pki.oids[oid]].push(capture.values[j].value);\n }\n }\n }\n\n return decodedAttrs;\n}\n\n/**\n * Wraps a private key and certificate in a PKCS#12 PFX wrapper. If a\n * password is provided then the private key will be encrypted.\n *\n * An entire certificate chain may also be included. To do this, pass\n * an array for the \"cert\" parameter where the first certificate is\n * the one that is paired with the private key and each subsequent one\n * verifies the previous one. The certificates may be in PEM format or\n * have been already parsed by Forge.\n *\n * @todo implement password-based-encryption for the whole package\n *\n * @param key the private key.\n * @param cert the certificate (may be an array of certificates in order\n * to specify a certificate chain).\n * @param password the password to use, null for none.\n * @param options:\n * algorithm the encryption algorithm to use\n * ('aes128', 'aes192', 'aes256', '3des'), defaults to 'aes128'.\n * count the iteration count to use.\n * saltSize the salt size to use.\n * useMac true to include a MAC, false not to, defaults to true.\n * localKeyId the local key ID to use, in hex.\n * friendlyName the friendly name to use.\n * generateLocalKeyId true to generate a random local key ID,\n * false not to, defaults to true.\n *\n * @return the PKCS#12 PFX ASN.1 object.\n */\np12.toPkcs12Asn1 = function(key, cert, password, options) {\n // set default options\n options = options || {};\n options.saltSize = options.saltSize || 8;\n options.count = options.count || 2048;\n options.algorithm = options.algorithm || options.encAlgorithm || 'aes128';\n if(!('useMac' in options)) {\n options.useMac = true;\n }\n if(!('localKeyId' in options)) {\n options.localKeyId = null;\n }\n if(!('generateLocalKeyId' in options)) {\n options.generateLocalKeyId = true;\n }\n\n var localKeyId = options.localKeyId;\n var bagAttrs;\n if(localKeyId !== null) {\n localKeyId = forge.util.hexToBytes(localKeyId);\n } else if(options.generateLocalKeyId) {\n // use SHA-1 of paired cert, if available\n if(cert) {\n var pairedCert = forge.util.isArray(cert) ? cert[0] : cert;\n if(typeof pairedCert === 'string') {\n pairedCert = pki.certificateFromPem(pairedCert);\n }\n var sha1 = forge.md.sha1.create();\n sha1.update(asn1.toDer(pki.certificateToAsn1(pairedCert)).getBytes());\n localKeyId = sha1.digest().getBytes();\n } else {\n // FIXME: consider using SHA-1 of public key (which can be generated\n // from private key components), see: cert.generateSubjectKeyIdentifier\n // generate random bytes\n localKeyId = forge.random.getBytes(20);\n }\n }\n\n var attrs = [];\n if(localKeyId !== null) {\n attrs.push(\n // localKeyID\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n // attrId\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false,\n asn1.oidToDer(pki.oids.localKeyId).getBytes()),\n // attrValues\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SET, true, [\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OCTETSTRING, false,\n localKeyId)\n ])\n ]));\n }\n if('friendlyName' in options) {\n attrs.push(\n // friendlyName\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n // attrId\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false,\n asn1.oidToDer(pki.oids.friendlyName).getBytes()),\n // attrValues\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SET, true, [\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.BMPSTRING, false,\n options.friendlyName)\n ])\n ]));\n }\n\n if(attrs.length > 0) {\n bagAttrs = asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SET, true, attrs);\n }\n\n // collect contents for AuthenticatedSafe\n var contents = [];\n\n // create safe bag(s) for certificate chain\n var chain = [];\n if(cert !== null) {\n if(forge.util.isArray(cert)) {\n chain = cert;\n } else {\n chain = [cert];\n }\n }\n\n var certSafeBags = [];\n for(var i = 0; i < chain.length; ++i) {\n // convert cert from PEM as necessary\n cert = chain[i];\n if(typeof cert === 'string') {\n cert = pki.certificateFromPem(cert);\n }\n\n // SafeBag\n var certBagAttrs = (i === 0) ? bagAttrs : undefined;\n var certAsn1 = pki.certificateToAsn1(cert);\n var certSafeBag =\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n // bagId\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false,\n asn1.oidToDer(pki.oids.certBag).getBytes()),\n // bagValue\n asn1.create(asn1.Class.CONTEXT_SPECIFIC, 0, true, [\n // CertBag\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n // certId\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false,\n asn1.oidToDer(pki.oids.x509Certificate).getBytes()),\n // certValue (x509Certificate)\n asn1.create(asn1.Class.CONTEXT_SPECIFIC, 0, true, [\n asn1.create(\n asn1.Class.UNIVERSAL, asn1.Type.OCTETSTRING, false,\n asn1.toDer(certAsn1).getBytes())\n ])])]),\n // bagAttributes (OPTIONAL)\n certBagAttrs\n ]);\n certSafeBags.push(certSafeBag);\n }\n\n if(certSafeBags.length > 0) {\n // SafeContents\n var certSafeContents = asn1.create(\n asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, certSafeBags);\n\n // ContentInfo\n var certCI =\n // PKCS#7 ContentInfo\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n // contentType\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false,\n // OID for the content type is 'data'\n asn1.oidToDer(pki.oids.data).getBytes()),\n // content\n asn1.create(asn1.Class.CONTEXT_SPECIFIC, 0, true, [\n asn1.create(\n asn1.Class.UNIVERSAL, asn1.Type.OCTETSTRING, false,\n asn1.toDer(certSafeContents).getBytes())\n ])\n ]);\n contents.push(certCI);\n }\n\n // create safe contents for private key\n var keyBag = null;\n if(key !== null) {\n // SafeBag\n var pkAsn1 = pki.wrapRsaPrivateKey(pki.privateKeyToAsn1(key));\n if(password === null) {\n // no encryption\n keyBag = asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n // bagId\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false,\n asn1.oidToDer(pki.oids.keyBag).getBytes()),\n // bagValue\n asn1.create(asn1.Class.CONTEXT_SPECIFIC, 0, true, [\n // PrivateKeyInfo\n pkAsn1\n ]),\n // bagAttributes (OPTIONAL)\n bagAttrs\n ]);\n } else {\n // encrypted PrivateKeyInfo\n keyBag = asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n // bagId\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false,\n asn1.oidToDer(pki.oids.pkcs8ShroudedKeyBag).getBytes()),\n // bagValue\n asn1.create(asn1.Class.CONTEXT_SPECIFIC, 0, true, [\n // EncryptedPrivateKeyInfo\n pki.encryptPrivateKeyInfo(pkAsn1, password, options)\n ]),\n // bagAttributes (OPTIONAL)\n bagAttrs\n ]);\n }\n\n // SafeContents\n var keySafeContents =\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [keyBag]);\n\n // ContentInfo\n var keyCI =\n // PKCS#7 ContentInfo\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n // contentType\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false,\n // OID for the content type is 'data'\n asn1.oidToDer(pki.oids.data).getBytes()),\n // content\n asn1.create(asn1.Class.CONTEXT_SPECIFIC, 0, true, [\n asn1.create(\n asn1.Class.UNIVERSAL, asn1.Type.OCTETSTRING, false,\n asn1.toDer(keySafeContents).getBytes())\n ])\n ]);\n contents.push(keyCI);\n }\n\n // create AuthenticatedSafe by stringing together the contents\n var safe = asn1.create(\n asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, contents);\n\n var macData;\n if(options.useMac) {\n // MacData\n var sha1 = forge.md.sha1.create();\n var macSalt = new forge.util.ByteBuffer(\n forge.random.getBytes(options.saltSize));\n var count = options.count;\n // 160-bit key\n var key = p12.generateKey(password, macSalt, 3, count, 20);\n var mac = forge.hmac.create();\n mac.start(sha1, key);\n mac.update(asn1.toDer(safe).getBytes());\n var macValue = mac.getMac();\n macData = asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n // mac DigestInfo\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n // digestAlgorithm\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n // algorithm = SHA-1\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false,\n asn1.oidToDer(pki.oids.sha1).getBytes()),\n // parameters = Null\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.NULL, false, '')\n ]),\n // digest\n asn1.create(\n asn1.Class.UNIVERSAL, asn1.Type.OCTETSTRING,\n false, macValue.getBytes())\n ]),\n // macSalt OCTET STRING\n asn1.create(\n asn1.Class.UNIVERSAL, asn1.Type.OCTETSTRING, false, macSalt.getBytes()),\n // iterations INTEGER (XXX: Only support count < 65536)\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.INTEGER, false,\n asn1.integerToDer(count).getBytes()\n )\n ]);\n }\n\n // PFX\n return asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n // version (3)\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.INTEGER, false,\n asn1.integerToDer(3).getBytes()),\n // PKCS#7 ContentInfo\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.SEQUENCE, true, [\n // contentType\n asn1.create(asn1.Class.UNIVERSAL, asn1.Type.OID, false,\n // OID for the content type is 'data'\n asn1.oidToDer(pki.oids.data).getBytes()),\n // content\n asn1.create(asn1.Class.CONTEXT_SPECIFIC, 0, true, [\n asn1.create(\n asn1.Class.UNIVERSAL, asn1.Type.OCTETSTRING, false,\n asn1.toDer(safe).getBytes())\n ])\n ]),\n macData\n ]);\n};\n\n/**\n * Derives a PKCS#12 key.\n *\n * @param password the password to derive the key material from, null or\n * undefined for none.\n * @param salt the salt, as a ByteBuffer, to use.\n * @param id the PKCS#12 ID byte (1 = key material, 2 = IV, 3 = MAC).\n * @param iter the iteration count.\n * @param n the number of bytes to derive from the password.\n * @param md the message digest to use, defaults to SHA-1.\n *\n * @return a ByteBuffer with the bytes derived from the password.\n */\np12.generateKey = forge.pbe.generatePkcs12Key;\n","var AWS = require('./core');\nvar util = require('./util');\nvar endpointDiscoveryEnabledEnvs = ['AWS_ENABLE_ENDPOINT_DISCOVERY', 'AWS_ENDPOINT_DISCOVERY_ENABLED'];\n\n/**\n * Generate key (except resources and operation part) to index the endpoints in the cache\n * If input shape has endpointdiscoveryid trait then use\n * accessKey + operation + resources + region + service as cache key\n * If input shape doesn't have endpointdiscoveryid trait then use\n * accessKey + region + service as cache key\n * @return [map] object with keys to index endpoints.\n * @api private\n */\nfunction getCacheKey(request) {\n var service = request.service;\n var api = service.api || {};\n var operations = api.operations;\n var identifiers = {};\n if (service.config.region) {\n identifiers.region = service.config.region;\n }\n if (api.serviceId) {\n identifiers.serviceId = api.serviceId;\n }\n if (service.config.credentials.accessKeyId) {\n identifiers.accessKeyId = service.config.credentials.accessKeyId;\n }\n return identifiers;\n}\n\n/**\n * Recursive helper for marshallCustomIdentifiers().\n * Looks for required string input members that have 'endpointdiscoveryid' trait.\n * @api private\n */\nfunction marshallCustomIdentifiersHelper(result, params, shape) {\n if (!shape || params === undefined || params === null) return;\n if (shape.type === 'structure' && shape.required && shape.required.length > 0) {\n util.arrayEach(shape.required, function(name) {\n var memberShape = shape.members[name];\n if (memberShape.endpointDiscoveryId === true) {\n var locationName = memberShape.isLocationName ? memberShape.name : name;\n result[locationName] = String(params[name]);\n } else {\n marshallCustomIdentifiersHelper(result, params[name], memberShape);\n }\n });\n }\n}\n\n/**\n * Get custom identifiers for cache key.\n * Identifies custom identifiers by checking each shape's `endpointDiscoveryId` trait.\n * @param [object] request object\n * @param [object] input shape of the given operation's api\n * @api private\n */\nfunction marshallCustomIdentifiers(request, shape) {\n var identifiers = {};\n marshallCustomIdentifiersHelper(identifiers, request.params, shape);\n return identifiers;\n}\n\n/**\n * Call endpoint discovery operation when it's optional.\n * When endpoint is available in cache then use the cached endpoints. If endpoints\n * are unavailable then use regional endpoints and call endpoint discovery operation\n * asynchronously. This is turned off by default.\n * @param [object] request object\n * @api private\n */\nfunction optionalDiscoverEndpoint(request) {\n var service = request.service;\n var api = service.api;\n var operationModel = api.operations ? api.operations[request.operation] : undefined;\n var inputShape = operationModel ? operationModel.input : undefined;\n\n var identifiers = marshallCustomIdentifiers(request, inputShape);\n var cacheKey = getCacheKey(request);\n if (Object.keys(identifiers).length > 0) {\n cacheKey = util.update(cacheKey, identifiers);\n if (operationModel) cacheKey.operation = operationModel.name;\n }\n var endpoints = AWS.endpointCache.get(cacheKey);\n if (endpoints && endpoints.length === 1 && endpoints[0].Address === '') {\n //endpoint operation is being made but response not yet received\n //or endpoint operation just failed in 1 minute\n return;\n } else if (endpoints && endpoints.length > 0) {\n //found endpoint record from cache\n request.httpRequest.updateEndpoint(endpoints[0].Address);\n } else {\n //endpoint record not in cache or outdated. make discovery operation\n var endpointRequest = service.makeRequest(api.endpointOperation, {\n Operation: operationModel.name,\n Identifiers: identifiers,\n });\n addApiVersionHeader(endpointRequest);\n endpointRequest.removeListener('validate', AWS.EventListeners.Core.VALIDATE_PARAMETERS);\n endpointRequest.removeListener('retry', AWS.EventListeners.Core.RETRY_CHECK);\n //put in a placeholder for endpoints already requested, prevent\n //too much in-flight calls\n AWS.endpointCache.put(cacheKey, [{\n Address: '',\n CachePeriodInMinutes: 1\n }]);\n endpointRequest.send(function(err, data) {\n if (data && data.Endpoints) {\n AWS.endpointCache.put(cacheKey, data.Endpoints);\n } else if (err) {\n AWS.endpointCache.put(cacheKey, [{\n Address: '',\n CachePeriodInMinutes: 1 //not to make more endpoint operation in next 1 minute\n }]);\n }\n });\n }\n}\n\nvar requestQueue = {};\n\n/**\n * Call endpoint discovery operation when it's required.\n * When endpoint is available in cache then use cached ones. If endpoints are\n * unavailable then SDK should call endpoint operation then use returned new\n * endpoint for the api call. SDK will automatically attempt to do endpoint\n * discovery. This is turned off by default\n * @param [object] request object\n * @api private\n */\nfunction requiredDiscoverEndpoint(request, done) {\n var service = request.service;\n var api = service.api;\n var operationModel = api.operations ? api.operations[request.operation] : undefined;\n var inputShape = operationModel ? operationModel.input : undefined;\n\n var identifiers = marshallCustomIdentifiers(request, inputShape);\n var cacheKey = getCacheKey(request);\n if (Object.keys(identifiers).length > 0) {\n cacheKey = util.update(cacheKey, identifiers);\n if (operationModel) cacheKey.operation = operationModel.name;\n }\n var cacheKeyStr = AWS.EndpointCache.getKeyString(cacheKey);\n var endpoints = AWS.endpointCache.get(cacheKeyStr); //endpoint cache also accepts string keys\n if (endpoints && endpoints.length === 1 && endpoints[0].Address === '') {\n //endpoint operation is being made but response not yet received\n //push request object to a pending queue\n if (!requestQueue[cacheKeyStr]) requestQueue[cacheKeyStr] = [];\n requestQueue[cacheKeyStr].push({request: request, callback: done});\n return;\n } else if (endpoints && endpoints.length > 0) {\n request.httpRequest.updateEndpoint(endpoints[0].Address);\n done();\n } else {\n var endpointRequest = service.makeRequest(api.endpointOperation, {\n Operation: operationModel.name,\n Identifiers: identifiers,\n });\n endpointRequest.removeListener('validate', AWS.EventListeners.Core.VALIDATE_PARAMETERS);\n addApiVersionHeader(endpointRequest);\n\n //put in a placeholder for endpoints already requested, prevent\n //too much in-flight calls\n AWS.endpointCache.put(cacheKeyStr, [{\n Address: '',\n CachePeriodInMinutes: 60 //long-live cache\n }]);\n endpointRequest.send(function(err, data) {\n if (err) {\n request.response.error = util.error(err, { retryable: false });\n AWS.endpointCache.remove(cacheKey);\n\n //fail all the pending requests in batch\n if (requestQueue[cacheKeyStr]) {\n var pendingRequests = requestQueue[cacheKeyStr];\n util.arrayEach(pendingRequests, function(requestContext) {\n requestContext.request.response.error = util.error(err, { retryable: false });\n requestContext.callback();\n });\n delete requestQueue[cacheKeyStr];\n }\n } else if (data) {\n AWS.endpointCache.put(cacheKeyStr, data.Endpoints);\n request.httpRequest.updateEndpoint(data.Endpoints[0].Address);\n\n //update the endpoint for all the pending requests in batch\n if (requestQueue[cacheKeyStr]) {\n var pendingRequests = requestQueue[cacheKeyStr];\n util.arrayEach(pendingRequests, function(requestContext) {\n requestContext.request.httpRequest.updateEndpoint(data.Endpoints[0].Address);\n requestContext.callback();\n });\n delete requestQueue[cacheKeyStr];\n }\n }\n done();\n });\n }\n}\n\n/**\n * add api version header to endpoint operation\n * @api private\n */\nfunction addApiVersionHeader(endpointRequest) {\n var api = endpointRequest.service.api;\n var apiVersion = api.apiVersion;\n if (apiVersion && !endpointRequest.httpRequest.headers['x-amz-api-version']) {\n endpointRequest.httpRequest.headers['x-amz-api-version'] = apiVersion;\n }\n}\n\n/**\n * If api call gets invalid endpoint exception, SDK should attempt to remove the invalid\n * endpoint from cache.\n * @api private\n */\nfunction invalidateCachedEndpoints(response) {\n var error = response.error;\n var httpResponse = response.httpResponse;\n if (error &&\n (error.code === 'InvalidEndpointException' || httpResponse.statusCode === 421)\n ) {\n var request = response.request;\n var operations = request.service.api.operations || {};\n var inputShape = operations[request.operation] ? operations[request.operation].input : undefined;\n var identifiers = marshallCustomIdentifiers(request, inputShape);\n var cacheKey = getCacheKey(request);\n if (Object.keys(identifiers).length > 0) {\n cacheKey = util.update(cacheKey, identifiers);\n if (operations[request.operation]) cacheKey.operation = operations[request.operation].name;\n }\n AWS.endpointCache.remove(cacheKey);\n }\n}\n\n/**\n * If endpoint is explicitly configured, SDK should not do endpoint discovery in anytime.\n * @param [object] client Service client object.\n * @api private\n */\nfunction hasCustomEndpoint(client) {\n //if set endpoint is set for specific client, enable endpoint discovery will raise an error.\n if (client._originalConfig && client._originalConfig.endpoint && client._originalConfig.endpointDiscoveryEnabled === true) {\n throw util.error(new Error(), {\n code: 'ConfigurationException',\n message: 'Custom endpoint is supplied; endpointDiscoveryEnabled must not be true.'\n });\n };\n var svcConfig = AWS.config[client.serviceIdentifier] || {};\n return Boolean(AWS.config.endpoint || svcConfig.endpoint || (client._originalConfig && client._originalConfig.endpoint));\n}\n\n/**\n * @api private\n */\nfunction isFalsy(value) {\n return ['false', '0'].indexOf(value) >= 0;\n}\n\n/**\n * If endpoint discovery should perform for this request when no operation requires endpoint\n * discovery for the given service.\n * SDK performs config resolution in order like below:\n * 1. If set in client configuration.\n * 2. If set in env AWS_ENABLE_ENDPOINT_DISCOVERY.\n * 3. If set in shared ini config file with key 'endpoint_discovery_enabled'.\n * @param [object] request request object.\n * @returns [boolean|undefined] if endpoint discovery config is not set in any source, this\n * function returns undefined\n * @api private\n */\nfunction resolveEndpointDiscoveryConfig(request) {\n var service = request.service || {};\n if (service.config.endpointDiscoveryEnabled !== undefined) {\n return service.config.endpointDiscoveryEnabled;\n }\n\n //shared ini file is only available in Node\n //not to check env in browser\n if (util.isBrowser()) return undefined;\n\n // If any of recognized endpoint discovery config env is set\n for (var i = 0; i < endpointDiscoveryEnabledEnvs.length; i++) {\n var env = endpointDiscoveryEnabledEnvs[i];\n if (Object.prototype.hasOwnProperty.call(process.env, env)) {\n if (process.env[env] === '' || process.env[env] === undefined) {\n throw util.error(new Error(), {\n code: 'ConfigurationException',\n message: 'environmental variable ' + env + ' cannot be set to nothing'\n });\n }\n return !isFalsy(process.env[env]);\n }\n }\n\n var configFile = {};\n try {\n configFile = AWS.util.iniLoader ? AWS.util.iniLoader.loadFrom({\n isConfig: true,\n filename: process.env[AWS.util.sharedConfigFileEnv]\n }) : {};\n } catch (e) {}\n var sharedFileConfig = configFile[\n process.env.AWS_PROFILE || AWS.util.defaultProfile\n ] || {};\n if (Object.prototype.hasOwnProperty.call(sharedFileConfig, 'endpoint_discovery_enabled')) {\n if (sharedFileConfig.endpoint_discovery_enabled === undefined) {\n throw util.error(new Error(), {\n code: 'ConfigurationException',\n message: 'config file entry \\'endpoint_discovery_enabled\\' cannot be set to nothing'\n });\n }\n return !isFalsy(sharedFileConfig.endpoint_discovery_enabled);\n }\n return undefined;\n}\n\n/**\n * attach endpoint discovery logic to request object\n * @param [object] request\n * @api private\n */\nfunction discoverEndpoint(request, done) {\n var service = request.service || {};\n if (hasCustomEndpoint(service) || request.isPresigned()) return done();\n\n var operations = service.api.operations || {};\n var operationModel = operations[request.operation];\n var isEndpointDiscoveryRequired = operationModel ? operationModel.endpointDiscoveryRequired : 'NULL';\n var isEnabled = resolveEndpointDiscoveryConfig(request);\n var hasRequiredEndpointDiscovery = service.api.hasRequiredEndpointDiscovery;\n if (isEnabled || hasRequiredEndpointDiscovery) {\n // Once a customer enables endpoint discovery, the SDK should start appending\n // the string endpoint-discovery to the user-agent on all requests.\n request.httpRequest.appendToUserAgent('endpoint-discovery');\n }\n switch (isEndpointDiscoveryRequired) {\n case 'OPTIONAL':\n if (isEnabled || hasRequiredEndpointDiscovery) {\n // For a given service; if at least one operation requires endpoint discovery then the SDK must enable endpoint discovery\n // by default for all operations of that service, including operations where endpoint discovery is optional.\n optionalDiscoverEndpoint(request);\n request.addNamedListener('INVALIDATE_CACHED_ENDPOINTS', 'extractError', invalidateCachedEndpoints);\n }\n done();\n break;\n case 'REQUIRED':\n if (isEnabled === false) {\n // For a given operation; if endpoint discovery is required and it has been disabled on the SDK client,\n // then the SDK must return a clear and actionable exception.\n request.response.error = util.error(new Error(), {\n code: 'ConfigurationException',\n message: 'Endpoint Discovery is disabled but ' + service.api.className + '.' + request.operation +\n '() requires it. Please check your configurations.'\n });\n done();\n break;\n }\n request.addNamedListener('INVALIDATE_CACHED_ENDPOINTS', 'extractError', invalidateCachedEndpoints);\n requiredDiscoverEndpoint(request, done);\n break;\n case 'NULL':\n default:\n done();\n break;\n }\n}\n\nmodule.exports = {\n discoverEndpoint: discoverEndpoint,\n requiredDiscoverEndpoint: requiredDiscoverEndpoint,\n optionalDiscoverEndpoint: optionalDiscoverEndpoint,\n marshallCustomIdentifiers: marshallCustomIdentifiers,\n getCacheKey: getCacheKey,\n invalidateCachedEndpoint: invalidateCachedEndpoints,\n};\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['cloudfront'] = {};\nAWS.CloudFront = Service.defineService('cloudfront', ['2013-05-12*', '2013-11-11*', '2014-05-31*', '2014-10-21*', '2014-11-06*', '2015-04-17*', '2015-07-27*', '2015-09-17*', '2016-01-13*', '2016-01-28*', '2016-08-01*', '2016-08-20*', '2016-09-07*', '2016-09-29*', '2016-11-25', '2016-11-25*', '2017-03-25', '2017-03-25*', '2017-10-30', '2017-10-30*', '2018-06-18', '2018-06-18*', '2018-11-05', '2018-11-05*', '2019-03-26', '2019-03-26*', '2020-05-31']);\nrequire('../lib/services/cloudfront');\nObject.defineProperty(apiLoader.services['cloudfront'], '2016-11-25', {\n get: function get() {\n var model = require('../apis/cloudfront-2016-11-25.min.json');\n model.paginators = require('../apis/cloudfront-2016-11-25.paginators.json').pagination;\n model.waiters = require('../apis/cloudfront-2016-11-25.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\nObject.defineProperty(apiLoader.services['cloudfront'], '2017-03-25', {\n get: function get() {\n var model = require('../apis/cloudfront-2017-03-25.min.json');\n model.paginators = require('../apis/cloudfront-2017-03-25.paginators.json').pagination;\n model.waiters = require('../apis/cloudfront-2017-03-25.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\nObject.defineProperty(apiLoader.services['cloudfront'], '2017-10-30', {\n get: function get() {\n var model = require('../apis/cloudfront-2017-10-30.min.json');\n model.paginators = require('../apis/cloudfront-2017-10-30.paginators.json').pagination;\n model.waiters = require('../apis/cloudfront-2017-10-30.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\nObject.defineProperty(apiLoader.services['cloudfront'], '2018-06-18', {\n get: function get() {\n var model = require('../apis/cloudfront-2018-06-18.min.json');\n model.paginators = require('../apis/cloudfront-2018-06-18.paginators.json').pagination;\n model.waiters = require('../apis/cloudfront-2018-06-18.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\nObject.defineProperty(apiLoader.services['cloudfront'], '2018-11-05', {\n get: function get() {\n var model = require('../apis/cloudfront-2018-11-05.min.json');\n model.paginators = require('../apis/cloudfront-2018-11-05.paginators.json').pagination;\n model.waiters = require('../apis/cloudfront-2018-11-05.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\nObject.defineProperty(apiLoader.services['cloudfront'], '2019-03-26', {\n get: function get() {\n var model = require('../apis/cloudfront-2019-03-26.min.json');\n model.paginators = require('../apis/cloudfront-2019-03-26.paginators.json').pagination;\n model.waiters = require('../apis/cloudfront-2019-03-26.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\nObject.defineProperty(apiLoader.services['cloudfront'], '2020-05-31', {\n get: function get() {\n var model = require('../apis/cloudfront-2020-05-31.min.json');\n model.paginators = require('../apis/cloudfront-2020-05-31.paginators.json').pagination;\n model.waiters = require('../apis/cloudfront-2020-05-31.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.CloudFront;\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\n/**\n * [[SimulcastLayers]] represents simulcast layers for selected simulcast video streams.\n */\nexport enum SimulcastLayers {\n /**\n * Low resolution video stream.\n */\n Low,\n /**\n * Low and medium resolution video streams.\n */\n LowAndMedium,\n /**\n * Low and high resolution video streams.\n */\n LowAndHigh,\n /**\n * Medium resolution video stream.\n */\n Medium,\n /**\n * Medium and high resolution video streams.\n */\n MediumAndHigh,\n /**\n * High resolution video stream.\n */\n High,\n}\n\nexport default SimulcastLayers;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['gamelift'] = {};\nAWS.GameLift = Service.defineService('gamelift', ['2015-10-01']);\nObject.defineProperty(apiLoader.services['gamelift'], '2015-10-01', {\n get: function get() {\n var model = require('../apis/gamelift-2015-10-01.min.json');\n model.paginators = require('../apis/gamelift-2015-10-01.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.GameLift;\n","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';\n\nif (typeof Promise === 'undefined') {\n // Rejection tracking prevents a common issue where React gets into an\n // inconsistent state due to an error, but it gets swallowed by a Promise,\n // and the user has no idea what causes React's erratic future behavior.\n require('promise/lib/rejection-tracking').enable();\n self.Promise = require('promise/lib/es6-extensions.js');\n}\n\n// Make sure we're in a Browser-like environment before importing polyfills\n// This prevents `fetch()` from being imported in a Node test environment\nif (typeof window !== 'undefined') {\n // fetch() polyfill for making API calls.\n require('whatwg-fetch');\n}\n\n// Object.assign() is commonly used with React.\n// It will use the native implementation if it's present and isn't buggy.\nObject.assign = require('object-assign');\n\n// Support for...of (a commonly used syntax feature that requires Symbols)\nrequire('core-js/features/symbol');\n// Support iterable spread (...Set, ...Map)\nrequire('core-js/features/array/from');\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['lexmodelbuildingservice'] = {};\nAWS.LexModelBuildingService = Service.defineService('lexmodelbuildingservice', ['2017-04-19']);\nObject.defineProperty(apiLoader.services['lexmodelbuildingservice'], '2017-04-19', {\n get: function get() {\n var model = require('../apis/lex-models-2017-04-19.min.json');\n model.paginators = require('../apis/lex-models-2017-04-19.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.LexModelBuildingService;\n","var AWS = require('../core');\nvar regionUtil = require('../region_config');\n\nvar s3util = {\n /**\n * @api private\n */\n isArnInParam: function isArnInParam(req, paramName) {\n var inputShape = (req.service.api.operations[req.operation] || {}).input || {};\n var inputMembers = inputShape.members || {};\n if (!req.params[paramName] || !inputMembers[paramName]) return false;\n return AWS.util.ARN.validate(req.params[paramName]);\n },\n\n /**\n * Validate service component from ARN supplied in Bucket parameter\n */\n validateArnService: function validateArnService(req) {\n var parsedArn = req._parsedArn;\n\n if (parsedArn.service !== 's3'\n && parsedArn.service !== 's3-outposts'\n && parsedArn.service !== 's3-object-lambda') {\n throw AWS.util.error(new Error(), {\n code: 'InvalidARN',\n message: 'expect \\'s3\\' or \\'s3-outposts\\' or \\'s3-object-lambda\\' in ARN service component'\n });\n }\n },\n\n /**\n * Validate account ID from ARN supplied in Bucket parameter is a valid account\n */\n validateArnAccount: function validateArnAccount(req) {\n var parsedArn = req._parsedArn;\n\n if (!/[0-9]{12}/.exec(parsedArn.accountId)) {\n throw AWS.util.error(new Error(), {\n code: 'InvalidARN',\n message: 'ARN accountID does not match regex \"[0-9]{12}\"'\n });\n }\n },\n\n /**\n * Validate ARN supplied in Bucket parameter is a valid access point ARN\n */\n validateS3AccessPointArn: function validateS3AccessPointArn(req) {\n var parsedArn = req._parsedArn;\n\n //can be ':' or '/'\n var delimiter = parsedArn.resource['accesspoint'.length];\n\n if (parsedArn.resource.split(delimiter).length !== 2) {\n throw AWS.util.error(new Error(), {\n code: 'InvalidARN',\n message: 'Access Point ARN should have one resource accesspoint/{accesspointName}'\n });\n }\n\n var accessPoint = parsedArn.resource.split(delimiter)[1];\n var accessPointPrefix = accessPoint + '-' + parsedArn.accountId;\n if (!s3util.dnsCompatibleBucketName(accessPointPrefix) || accessPointPrefix.match(/\\./)) {\n throw AWS.util.error(new Error(), {\n code: 'InvalidARN',\n message: 'Access point resource in ARN is not DNS compatible. Got ' + accessPoint\n });\n }\n\n //set parsed valid access point\n req._parsedArn.accessPoint = accessPoint;\n },\n\n /**\n * Validate Outposts ARN supplied in Bucket parameter is a valid outposts ARN\n */\n validateOutpostsArn: function validateOutpostsArn(req) {\n var parsedArn = req._parsedArn;\n\n if (\n parsedArn.resource.indexOf('outpost:') !== 0 &&\n parsedArn.resource.indexOf('outpost/') !== 0\n ) {\n throw AWS.util.error(new Error(), {\n code: 'InvalidARN',\n message: 'ARN resource should begin with \\'outpost/\\''\n });\n }\n\n //can be ':' or '/'\n var delimiter = parsedArn.resource['outpost'.length];\n var outpostId = parsedArn.resource.split(delimiter)[1];\n var dnsHostRegex = new RegExp(/^([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9])$/);\n if (!dnsHostRegex.test(outpostId)) {\n throw AWS.util.error(new Error(), {\n code: 'InvalidARN',\n message: 'Outpost resource in ARN is not DNS compatible. Got ' + outpostId\n });\n }\n req._parsedArn.outpostId = outpostId;\n },\n\n /**\n * Validate Outposts ARN supplied in Bucket parameter is a valid outposts ARN\n */\n validateOutpostsAccessPointArn: function validateOutpostsAccessPointArn(req) {\n var parsedArn = req._parsedArn;\n\n //can be ':' or '/'\n var delimiter = parsedArn.resource['outpost'.length];\n\n if (parsedArn.resource.split(delimiter).length !== 4) {\n throw AWS.util.error(new Error(), {\n code: 'InvalidARN',\n message: 'Outposts ARN should have two resources outpost/{outpostId}/accesspoint/{accesspointName}'\n });\n }\n\n var accessPoint = parsedArn.resource.split(delimiter)[3];\n var accessPointPrefix = accessPoint + '-' + parsedArn.accountId;\n if (!s3util.dnsCompatibleBucketName(accessPointPrefix) || accessPointPrefix.match(/\\./)) {\n throw AWS.util.error(new Error(), {\n code: 'InvalidARN',\n message: 'Access point resource in ARN is not DNS compatible. Got ' + accessPoint\n });\n }\n\n //set parsed valid access point\n req._parsedArn.accessPoint = accessPoint;\n },\n\n /**\n * Validate region field in ARN supplied in Bucket parameter is a valid region\n */\n validateArnRegion: function validateArnRegion(req, options) {\n if (options === undefined) {\n options = {};\n }\n\n var useArnRegion = s3util.loadUseArnRegionConfig(req);\n var regionFromArn = req._parsedArn.region;\n var clientRegion = req.service.config.region;\n var useFipsEndpoint = req.service.config.useFipsEndpoint;\n var allowFipsEndpoint = options.allowFipsEndpoint || false;\n\n if (!regionFromArn) {\n var message = 'ARN region is empty';\n if (req._parsedArn.service === 's3') {\n message = message + '\\nYou may want to use multi-regional ARN. The feature is not supported in current SDK. ' +\n 'You should consider switching to V3(https://github.com/aws/aws-sdk-js-v3).';\n }\n throw AWS.util.error(new Error(), {\n code: 'InvalidARN',\n message: message\n });\n }\n\n if (useFipsEndpoint && !allowFipsEndpoint) {\n throw AWS.util.error(new Error(), {\n code: 'InvalidConfiguration',\n message: 'ARN endpoint is not compatible with FIPS region'\n });\n }\n\n if (regionFromArn.indexOf('fips') >= 0) {\n throw AWS.util.error(new Error(), {\n code: 'InvalidConfiguration',\n message: 'FIPS region not allowed in ARN'\n });\n }\n\n if (!useArnRegion && regionFromArn !== clientRegion) {\n throw AWS.util.error(new Error(), {\n code: 'InvalidConfiguration',\n message: 'Configured region conflicts with access point region'\n });\n } else if (\n useArnRegion &&\n regionUtil.getEndpointSuffix(regionFromArn) !== regionUtil.getEndpointSuffix(clientRegion)\n ) {\n throw AWS.util.error(new Error(), {\n code: 'InvalidConfiguration',\n message: 'Configured region and access point region not in same partition'\n });\n }\n\n if (req.service.config.useAccelerateEndpoint) {\n throw AWS.util.error(new Error(), {\n code: 'InvalidConfiguration',\n message: 'useAccelerateEndpoint config is not supported with access point ARN'\n });\n }\n\n if (req._parsedArn.service === 's3-outposts' && req.service.config.useDualstackEndpoint) {\n throw AWS.util.error(new Error(), {\n code: 'InvalidConfiguration',\n message: 'Dualstack is not supported with outposts access point ARN'\n });\n }\n },\n\n loadUseArnRegionConfig: function loadUseArnRegionConfig(req) {\n var envName = 'AWS_S3_USE_ARN_REGION';\n var configName = 's3_use_arn_region';\n var useArnRegion = true;\n var originalConfig = req.service._originalConfig || {};\n if (req.service.config.s3UseArnRegion !== undefined) {\n return req.service.config.s3UseArnRegion;\n } else if (originalConfig.s3UseArnRegion !== undefined) {\n useArnRegion = originalConfig.s3UseArnRegion === true;\n } else if (AWS.util.isNode()) {\n //load from environmental variable AWS_USE_ARN_REGION\n if (process.env[envName]) {\n var value = process.env[envName].trim().toLowerCase();\n if (['false', 'true'].indexOf(value) < 0) {\n throw AWS.util.error(new Error(), {\n code: 'InvalidConfiguration',\n message: envName + ' only accepts true or false. Got ' + process.env[envName],\n retryable: false\n });\n }\n useArnRegion = value === 'true';\n } else { //load from shared config property use_arn_region\n var profiles = {};\n var profile = {};\n try {\n profiles = AWS.util.getProfilesFromSharedConfig(AWS.util.iniLoader);\n profile = profiles[process.env.AWS_PROFILE || AWS.util.defaultProfile];\n } catch (e) {}\n if (profile[configName]) {\n if (['false', 'true'].indexOf(profile[configName].trim().toLowerCase()) < 0) {\n throw AWS.util.error(new Error(), {\n code: 'InvalidConfiguration',\n message: configName + ' only accepts true or false. Got ' + profile[configName],\n retryable: false\n });\n }\n useArnRegion = profile[configName].trim().toLowerCase() === 'true';\n }\n }\n }\n req.service.config.s3UseArnRegion = useArnRegion;\n return useArnRegion;\n },\n\n /**\n * Validations before URI can be populated\n */\n validatePopulateUriFromArn: function validatePopulateUriFromArn(req) {\n if (req.service._originalConfig && req.service._originalConfig.endpoint) {\n throw AWS.util.error(new Error(), {\n code: 'InvalidConfiguration',\n message: 'Custom endpoint is not compatible with access point ARN'\n });\n }\n\n if (req.service.config.s3ForcePathStyle) {\n throw AWS.util.error(new Error(), {\n code: 'InvalidConfiguration',\n message: 'Cannot construct path-style endpoint with access point'\n });\n }\n },\n\n /**\n * Returns true if the bucket name is DNS compatible. Buckets created\n * outside of the classic region MUST be DNS compatible.\n *\n * @api private\n */\n dnsCompatibleBucketName: function dnsCompatibleBucketName(bucketName) {\n var b = bucketName;\n var domain = new RegExp(/^[a-z0-9][a-z0-9\\.\\-]{1,61}[a-z0-9]$/);\n var ipAddress = new RegExp(/(\\d+\\.){3}\\d+/);\n var dots = new RegExp(/\\.\\./);\n return (b.match(domain) && !b.match(ipAddress) && !b.match(dots)) ? true : false;\n },\n};\n\n/**\n * @api private\n */\nmodule.exports = s3util;\n","'use strict';\nvar ENVIRONMENT = require('../internals/environment');\n\nmodule.exports = ENVIRONMENT === 'NODE';\n","var util = require('./util');\n\n// browser specific modules\nutil.crypto.lib = require('./browserCryptoLib');\nutil.Buffer = require('buffer/').Buffer;\nutil.url = require('url/');\nutil.querystring = require('querystring/');\nutil.realClock = require('./realclock/browserClock');\nutil.environment = 'js';\nutil.createEventStream = require('./event-stream/buffered-create-event-stream').createEventStream;\nutil.isBrowser = function() { return true; };\nutil.isNode = function() { return false; };\n\nvar AWS = require('./core');\n\n/**\n * @api private\n */\nmodule.exports = AWS;\n\nrequire('./credentials');\nrequire('./credentials/credential_provider_chain');\nrequire('./credentials/temporary_credentials');\nrequire('./credentials/chainable_temporary_credentials');\nrequire('./credentials/web_identity_credentials');\nrequire('./credentials/cognito_identity_credentials');\nrequire('./credentials/saml_credentials');\n\n// Load the DOMParser XML parser\nAWS.XML.Parser = require('./xml/browser_parser');\n\n// Load the XHR HttpClient\nrequire('./http/xhr');\n\nif (typeof process === 'undefined') {\n var process = {\n browser: true\n };\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport AudioVideoController from '../audiovideocontroller/AudioVideoController';\nimport AudioVideoObserver from '../audiovideoobserver/AudioVideoObserver';\nimport ClientMetricReport from '../clientmetricreport/ClientMetricReport';\nimport ConnectionHealthData from '../connectionhealthpolicy/ConnectionHealthData';\nimport PingPong from '../pingpong/PingPong';\nimport PingPongObserver from '../pingpongobserver/PingPongObserver';\nimport RealtimeController from '../realtimecontroller/RealtimeController';\nimport StatsCollector from '../statscollector/StatsCollector';\nimport { Maybe } from '../utils/Types';\nimport ConnectionMonitor from './ConnectionMonitor';\n\nexport default class SignalingAndMetricsConnectionMonitor\n implements ConnectionMonitor, PingPongObserver, AudioVideoObserver {\n private isActive = false;\n private hasSeenValidCandidatePairMetricsBefore = false;\n private lastTotalBytesReceived = 0;\n private lastTotalStunMessagesReceived = 0;\n\n constructor(\n private audioVideoController: AudioVideoController,\n private realtimeController: RealtimeController,\n private connectionHealthData: ConnectionHealthData,\n private pingPong: PingPong,\n private statsCollector: StatsCollector\n ) {\n this.realtimeController.realtimeSubscribeToLocalSignalStrengthChange(\n (signalStrength: number) => {\n if (this.isActive) {\n this.receiveSignalStrengthChange(signalStrength);\n }\n }\n );\n }\n\n start(): void {\n this.isActive = true;\n this.pingPong.addObserver(this);\n this.pingPong.start();\n this.audioVideoController.addObserver(this);\n }\n\n stop(): void {\n this.isActive = false;\n this.pingPong.removeObserver(this);\n this.pingPong.stop();\n this.audioVideoController.removeObserver(this);\n }\n\n receiveSignalStrengthChange(signalStrength: number): void {\n if (signalStrength === 0) {\n this.connectionHealthData.setLastNoSignalTimestampMs(Date.now());\n } else if (signalStrength <= 0.5) {\n this.connectionHealthData.setLastWeakSignalTimestampMs(Date.now());\n } else {\n this.connectionHealthData.setLastGoodSignalTimestampMs(Date.now());\n }\n this.updateConnectionHealth();\n }\n\n didReceivePong(_id: number, latencyMs: number, clockSkewMs: number): void {\n this.connectionHealthData.setConsecutiveMissedPongs(0);\n this.statsCollector.logLatency('ping_pong', latencyMs);\n this.statsCollector.logLatency('ping_pong_clock_skew', clockSkewMs);\n this.updateConnectionHealth();\n }\n\n didMissPongs(): void {\n this.connectionHealthData.setConsecutiveMissedPongs(\n this.connectionHealthData.consecutiveMissedPongs + 1\n );\n this.updateConnectionHealth();\n }\n\n metricsDidReceive(clientMetricReport: ClientMetricReport): void {\n let audioPacketsReceived = 0;\n let audiofractionPacketsLostInbound = 0;\n const metricReport = clientMetricReport.getObservableMetrics();\n const potentialAudioPacketsReceived = metricReport.audioPacketsReceived;\n const potentialAudioFractionPacketsLostInbound = metricReport.audioPacketsReceivedFractionLoss;\n\n const audioSpeakerDelayMs = metricReport.audioSpeakerDelayMs;\n\n // Firefox does not presently have aggregated bandwidth estimation\n if (typeof audioSpeakerDelayMs === 'number' && !isNaN(audioSpeakerDelayMs)) {\n this.connectionHealthData.setAudioSpeakerDelayMs(audioSpeakerDelayMs);\n }\n\n // To get the total bytes received, including RTCP, we need to sum up\n // all candidate pair metrics (in case the candidate pair changes).\n //\n // The stats collector currently doesn't account for candidate pair stats\n // so we just use the raw report for now.\n const webrtcReport = clientMetricReport.getRTCStatsReport();\n\n // We use candidate pair bytes received as a proxy for packets received\n // since not all versions of all browsers have 'packetsReceived' for candidate pairs\n let totalBytesReceived = 0;\n // We additionally check STUN messages received, in case backend is not sending RTP/RTCP\n // which may happen in None attendee capability edge cases.\n let totalStunMessagedReceived = 0;\n webrtcReport.forEach(stat => {\n if (stat.type === 'candidate-pair') {\n if (stat.bytesReceived) {\n totalBytesReceived += stat.bytesReceived;\n }\n if (stat.requestsReceived) {\n totalStunMessagedReceived += stat.requestsReceived;\n }\n if (stat.responsesReceived) {\n totalStunMessagedReceived += stat.responsesReceived;\n }\n }\n });\n const bytesReceived = totalBytesReceived - this.lastTotalBytesReceived;\n this.lastTotalBytesReceived = totalBytesReceived;\n const stunMessagesReceived = totalStunMessagedReceived - this.lastTotalStunMessagesReceived;\n this.lastTotalStunMessagesReceived = totalStunMessagedReceived;\n if (\n typeof potentialAudioPacketsReceived === 'number' &&\n typeof potentialAudioFractionPacketsLostInbound === 'number'\n ) {\n audioPacketsReceived = potentialAudioPacketsReceived;\n audiofractionPacketsLostInbound = potentialAudioFractionPacketsLostInbound;\n if (\n audioPacketsReceived < 0 ||\n audiofractionPacketsLostInbound < 0 ||\n bytesReceived < 0 ||\n stunMessagesReceived < 0\n ) {\n // The stats collector or logic above may emit negative numbers on this metric after reconnect\n // which we should not use.\n return;\n }\n } else {\n return;\n }\n this.addToMinuteWindow(\n this.connectionHealthData.packetsReceivedInLastMinute,\n audioPacketsReceived\n );\n this.addToMinuteWindow(\n this.connectionHealthData.fractionPacketsLostInboundInLastMinute,\n audiofractionPacketsLostInbound\n );\n\n if (bytesReceived > 0 || stunMessagesReceived > 0) {\n this.hasSeenValidCandidatePairMetricsBefore = true;\n this.connectionHealthData.setConsecutiveStatsWithNoPackets(0);\n } else if (this.hasSeenValidCandidatePairMetricsBefore) {\n this.connectionHealthData.setConsecutiveStatsWithNoPackets(\n this.connectionHealthData.consecutiveStatsWithNoPackets + 1\n );\n }\n if (audioPacketsReceived === 0 || audiofractionPacketsLostInbound > 0) {\n this.connectionHealthData.setLastPacketLossInboundTimestampMs(Date.now());\n }\n if (typeof metricReport.audioPacketsSent === 'number') {\n this.updateAudioPacketsSentInConnectionHealth(metricReport.audioPacketsSent);\n }\n this.updateVideoEncodingHealth(clientMetricReport);\n this.updateConnectionHealth();\n }\n\n private updateAudioPacketsSentInConnectionHealth(audioPacketsSent: number): void {\n if (audioPacketsSent > 0) {\n this.connectionHealthData.setConsecutiveStatsWithNoAudioPacketsSent(0);\n } else {\n this.connectionHealthData.setConsecutiveStatsWithNoAudioPacketsSent(\n this.connectionHealthData.consecutiveStatsWithNoAudioPacketsSent + 1\n );\n }\n }\n\n private updateVideoEncodingHealth(clientMetricReport: ClientMetricReport): void {\n const isLocalVideoTileStarted = this.audioVideoController.videoTileController.hasStartedLocalVideoTile();\n const ssrcs = clientMetricReport.getVideoUpstreamSsrcs();\n if (!isLocalVideoTileStarted || ssrcs.length === 0) {\n this.connectionHealthData.setIsVideoEncoderHardware(false);\n this.connectionHealthData.setVideoEncodingTimePerFrameInMs(0);\n this.connectionHealthData.setCpuLimitationDuration(0);\n this.connectionHealthData.setVideoInputFps(0);\n this.connectionHealthData.setVideoEncodeFps(0);\n return;\n }\n\n let isHardwareEncoder = false;\n let videoEncodingTimeInMs = 0;\n let cpuLimitationDuration = 0;\n let videoInputFps = 0;\n let videoEncodeFps = 0;\n for (const ssrc of ssrcs) {\n // There may be multiple video ssrcs for one video when simulcast is enabled.\n // We aggregate the metrics for all these ssrcs to determine encoding health.\n // If any of the ssrcs is using hardware encoder, we consider the encoding is\n // done by hardware (browsers may use software encoder for low resolution\n // streams even if hardware encoding is available).\n isHardwareEncoder ||= Boolean(\n clientMetricReport.getObservableVideoMetricValue('videoUpstreamEncoderImplementation', ssrc)\n );\n videoEncodingTimeInMs += clientMetricReport.getObservableVideoMetricValue(\n 'videoUpstreamTotalEncodeTimePerSecond',\n ssrc\n );\n cpuLimitationDuration += clientMetricReport.getObservableVideoMetricValue(\n 'videoUpstreamCpuQualityLimitationDurationPerSecond',\n ssrc\n );\n videoInputFps += clientMetricReport.getObservableVideoMetricValue(\n 'videoUpstreamFramesInputPerSecond',\n ssrc\n );\n videoEncodeFps += clientMetricReport.getObservableVideoMetricValue(\n 'videoUpstreamFramesEncodedPerSecond',\n ssrc\n );\n }\n const videoEncodingTimePerFrameInMs =\n videoEncodeFps > 0 ? videoEncodingTimeInMs / videoEncodeFps : 0;\n\n this.connectionHealthData.setIsVideoEncoderHardware(Boolean(isHardwareEncoder));\n this.connectionHealthData.setVideoEncodingTimeInMs(videoEncodingTimeInMs);\n this.connectionHealthData.setVideoEncodingTimePerFrameInMs(videoEncodingTimePerFrameInMs);\n this.connectionHealthData.setCpuLimitationDuration(cpuLimitationDuration);\n this.connectionHealthData.setVideoInputFps(videoInputFps);\n this.connectionHealthData.setVideoEncodeFps(videoEncodeFps);\n }\n\n private addToMinuteWindow(array: number[], value: number): void {\n array.unshift(value);\n if (array.length > 60) {\n array.pop();\n }\n }\n\n private updateConnectionHealth(): void {\n this.audioVideoController.forEachObserver((observer: AudioVideoObserver) => {\n Maybe.of(observer.connectionHealthDidChange).map(f =>\n f.bind(observer)(this.connectionHealthData.clone())\n );\n });\n }\n}\n","'use strict';\nvar classof = require('../internals/classof');\n\nvar $String = String;\n\nmodule.exports = function (argument) {\n if (classof(argument) === 'Symbol') throw new TypeError('Cannot convert a Symbol value to a string');\n return $String(argument);\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport AudioVideoControllerState from '../audiovideocontroller/AudioVideoControllerState';\nimport DefaultModality from '../modality/DefaultModality';\nimport { SdkStreamServiceType } from '../signalingprotocol/SignalingProtocol.js';\nimport BaseTask from './BaseTask';\n\n/**\n * [[ReceiveVideoInputTask]] acquires a video input from [[DeviceController]].\n */\nexport default class ReceiveVideoInputTask extends BaseTask {\n protected taskName = 'ReceiveVideoInputTask';\n\n constructor(private context: AudioVideoControllerState) {\n super(context.logger);\n }\n\n private async checkAndApplyVideoConstraint(\n isContentAttendee: boolean,\n mediaStreamTrack: MediaStreamTrack,\n width: number,\n height: number,\n frameRate: number\n ): Promise {\n const videoQualitySettings = isContentAttendee\n ? this.context.meetingSessionConfiguration.meetingFeatures.contentMaxResolution\n : this.context.meetingSessionConfiguration.meetingFeatures.videoMaxResolution;\n\n if (\n !isContentAttendee &&\n width <= videoQualitySettings.videoWidth &&\n height <= videoQualitySettings.videoHeight &&\n frameRate <= videoQualitySettings.videoFrameRate\n ) {\n // Skip applying constraints if the current video track settings are already\n // lower than the limit except for content share. Always apply constraint for\n // content attendees because content share resolution may change.\n return;\n }\n\n const constraint: MediaTrackConstraints = {\n // Chrome may scale content share to the maximum possible resolution within\n // max width and height even if input resolution is already under the limits.\n // Adding ideal resizeMode as none to use the original resoluion when possible\n // and avoid unexpected scaling.\n resizeMode: { ideal: 'none' },\n width: { max: videoQualitySettings.videoWidth },\n height: { max: videoQualitySettings.videoHeight },\n frameRate: { ideal: frameRate, max: videoQualitySettings.videoFrameRate },\n };\n\n try {\n await mediaStreamTrack.applyConstraints(constraint);\n } catch (error) {\n this.context.logger.info(\n `Could not apply constraint for video track (content = ${isContentAttendee})`\n );\n }\n }\n\n async run(): Promise {\n // TODO: move videoDuplexMode and videoCaptureAndEncodeParameters to video tile controller\n const receiveEnabled =\n this.context.videoDuplexMode === SdkStreamServiceType.RX ||\n this.context.videoDuplexMode === SdkStreamServiceType.DUPLEX;\n if (this.context.videoTileController.hasStartedLocalVideoTile()) {\n this.context.videoDuplexMode = receiveEnabled\n ? SdkStreamServiceType.DUPLEX\n : SdkStreamServiceType.TX;\n } else {\n this.context.videoDuplexMode = receiveEnabled ? SdkStreamServiceType.RX : 0;\n }\n this.context.videoCaptureAndEncodeParameter = this.context.videoUplinkBandwidthPolicy.chooseCaptureAndEncodeParameters();\n\n if (!this.context.videoTileController.hasStartedLocalVideoTile()) {\n this.context.logger.info('has not started local video tile');\n if (this.context.activeVideoInput) {\n this.context.activeVideoInput = undefined;\n // Indicate to the stream index that we are no longer sending video. We will\n // no longer be tracking irrelevant local sending bitrates sent via received Bitrate message, nor will\n // we track any spurious allocated stream IDs from the backend.\n this.context.videoStreamIndex.integrateUplinkPolicyDecision([]);\n }\n return;\n }\n\n // TODO: bind after ICE connection started in case of a failure to resubscribe\n // or perform error handling to unbind video stream.\n const localTile = this.context.videoTileController.getLocalVideoTile();\n let videoInput: MediaStream | undefined = undefined;\n try {\n videoInput = await this.context.mediaStreamBroker.acquireVideoInputStream();\n } catch (error) {\n this.context.logger.warn('could not acquire video input from current device');\n this.context.videoTileController.stopLocalVideoTile();\n }\n if (this.context.enableSimulcast) {\n const encodingParams = this.context.videoUplinkBandwidthPolicy.chooseEncodingParameters();\n this.context.videoStreamIndex.integrateUplinkPolicyDecision(\n Array.from(encodingParams.values())\n );\n }\n\n this.context.activeVideoInput = videoInput;\n if (videoInput) {\n const videoTracks = videoInput.getVideoTracks();\n // There can be a race condition when there are several audioVideo.update calls (e.g., calling\n // startLocalVideoTile and stopLocalVideoTile at the same time)\n // that causes the video stream to not contain any video track.\n // This should recovers in the next update call.\n if (!videoTracks || videoTracks.length === 0) {\n return;\n }\n const attendeeId = this.context.meetingSessionConfiguration.credentials.attendeeId;\n const isContentAttendee = new DefaultModality(attendeeId).hasModality(\n DefaultModality.MODALITY_CONTENT\n );\n const trackSettings = videoTracks[0].getSettings();\n\n this.checkAndApplyVideoConstraint(\n isContentAttendee,\n videoTracks[0],\n trackSettings.width,\n trackSettings.height,\n trackSettings.frameRate\n );\n\n const externalUserId = this.context.audioVideoController.configuration.credentials\n .externalUserId;\n localTile.bindVideoStream(\n attendeeId,\n true,\n videoInput,\n trackSettings.width,\n trackSettings.height,\n null,\n externalUserId\n );\n\n for (const track of videoTracks) {\n this.logger.info(`Using video device label=${track.label} id=${track.id}`);\n this.context.videoDeviceInformation['current_camera_name'] = track.label;\n this.context.videoDeviceInformation['current_camera_id'] = track.id;\n }\n }\n }\n}\n","'use strict';\n\nvar $defineProperty = require('es-define-property');\n\nvar $SyntaxError = require('es-errors/syntax');\nvar $TypeError = require('es-errors/type');\n\nvar gopd = require('gopd');\n\n/** @type {import('.')} */\nmodule.exports = function defineDataProperty(\n\tobj,\n\tproperty,\n\tvalue\n) {\n\tif (!obj || (typeof obj !== 'object' && typeof obj !== 'function')) {\n\t\tthrow new $TypeError('`obj` must be an object or a function`');\n\t}\n\tif (typeof property !== 'string' && typeof property !== 'symbol') {\n\t\tthrow new $TypeError('`property` must be a string or a symbol`');\n\t}\n\tif (arguments.length > 3 && typeof arguments[3] !== 'boolean' && arguments[3] !== null) {\n\t\tthrow new $TypeError('`nonEnumerable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 4 && typeof arguments[4] !== 'boolean' && arguments[4] !== null) {\n\t\tthrow new $TypeError('`nonWritable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 5 && typeof arguments[5] !== 'boolean' && arguments[5] !== null) {\n\t\tthrow new $TypeError('`nonConfigurable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 6 && typeof arguments[6] !== 'boolean') {\n\t\tthrow new $TypeError('`loose`, if provided, must be a boolean');\n\t}\n\n\tvar nonEnumerable = arguments.length > 3 ? arguments[3] : null;\n\tvar nonWritable = arguments.length > 4 ? arguments[4] : null;\n\tvar nonConfigurable = arguments.length > 5 ? arguments[5] : null;\n\tvar loose = arguments.length > 6 ? arguments[6] : false;\n\n\t/* @type {false | TypedPropertyDescriptor} */\n\tvar desc = !!gopd && gopd(obj, property);\n\n\tif ($defineProperty) {\n\t\t$defineProperty(obj, property, {\n\t\t\tconfigurable: nonConfigurable === null && desc ? desc.configurable : !nonConfigurable,\n\t\t\tenumerable: nonEnumerable === null && desc ? desc.enumerable : !nonEnumerable,\n\t\t\tvalue: value,\n\t\t\twritable: nonWritable === null && desc ? desc.writable : !nonWritable\n\t\t});\n\t} else if (loose || (!nonEnumerable && !nonWritable && !nonConfigurable)) {\n\t\t// must fall back to [[Set]], and was not explicitly asked to make non-enumerable, non-writable, or non-configurable\n\t\tobj[property] = value; // eslint-disable-line no-param-reassign\n\t} else {\n\t\tthrow new $SyntaxError('This environment does not support defining a property as non-configurable, non-writable, or non-enumerable.');\n\t}\n};\n","'use strict';\n\n/** @type {import('./ref')} */\nmodule.exports = ReferenceError;\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { SdkVideoCodecCapability } from '../signalingprotocol/SignalingProtocol';\nimport { Eq } from '../utils/Types';\n\n/**\n * `VideoCodecCapability` represents a higher level type to wrap `RTCRtpCodecCapability`\n * and the codec name used in the SDP, while also namespacing static create functions\n * for codecs supported in the SDK.\n *\n * Note that `codecName` is different then `codecCapability.mimeType`\n */\nexport default class VideoCodecCapability implements Eq {\n constructor(\n public readonly codecName: string,\n public readonly codecCapability: RTCRtpCodecCapability\n ) {}\n\n equals(other: this): boolean {\n if (other === undefined) {\n return false;\n }\n\n if (\n this.codecName !== other.codecName ||\n this.codecCapability.mimeType !== other.codecCapability.mimeType ||\n this.codecCapability.clockRate !== other.codecCapability.clockRate\n ) {\n return false;\n }\n\n const thisFmtpLine = this.codecCapability.sdpFmtpLine\n ? this.cleanupFmtpLine(this.codecCapability.sdpFmtpLine, this.codecName)\n : '';\n const otherFmtpLine = other.codecCapability.sdpFmtpLine\n ? this.cleanupFmtpLine(other.codecCapability.sdpFmtpLine, other.codecName)\n : '';\n return thisFmtpLine === otherFmtpLine;\n }\n\n /**\n * Returns whether the codec capability fmtp line matches. This will not\n * attempt to match H.264 profile levels (e.g. 5.2, 3.1), see internal comments for\n * more detailed information. This function takes care of checking for an\n * expected payload type as well.\n *\n * This function is meant to only be used internally.\n */\n fmtpLineMatches(line: string, expectedPayloadType: number): boolean {\n const codecCapabilityFmtpLine = this.codecCapability.sdpFmtpLine;\n if (!codecCapabilityFmtpLine) {\n return false;\n }\n\n const prefix = `a=fmtp:${expectedPayloadType} `;\n if (!line.startsWith(prefix)) {\n return false;\n }\n const fmtpLineFromSdp = line.substring(prefix.length);\n\n return (\n this.cleanupFmtpLine(fmtpLineFromSdp, this.codecName) ===\n this.cleanupFmtpLine(codecCapabilityFmtpLine, this.codecName)\n );\n }\n\n /**\n * Helper function to clean up the FMTP line by removing unnecessary parameters\n * and normalizing certain codec-specific attributes.\n */\n private cleanupFmtpLine(fmtpLine: string, codecName: string): string {\n // Remove starting bitrate parameter which isn't relevant to matching.\n const bitrateRegex = /;x-google-start-bitrate=\\d+/g;\n let cleanedLine = fmtpLine.replace(bitrateRegex, '');\n\n if (codecName === 'H264') {\n // Given that most H.264 decoders for the past decade can support level 5.2, we do not bother checking the Profile Level\n // with regards to canonically defined, meeting wide, H.264 profile options (i.e. we intentionally do not split up `h264HighProfile`\n // into `h264HighProfileLevel52, `h264HighProfileLevel31`, etc.).\n //\n // Additionally, Chrome bundles FFmpeg software decoders which while advertised as 3.1, will happily decode any bitrate/resolution.\n //\n // If maximum compatability with H.264 is desired by a builder they should stick to H.264 Constrained Baseline Profile.\n const profileLevelIdRegex = /profile-level-id=([0-9a-f]{4})[0-9a-f]{2}/i;\n cleanedLine = cleanedLine.replace(profileLevelIdRegex, 'profile-level-id=$1');\n }\n\n return cleanedLine;\n }\n\n /**\n * Returns the configuration of VP8 supported by the SDK\n */\n static vp8(): VideoCodecCapability {\n return new VideoCodecCapability('VP8', {\n clockRate: 90000,\n mimeType: 'video/VP8',\n });\n }\n\n /**\n * Returns the configuration of H.264 Baseline Profile supported by the SDK.\n *\n * This profile is more likely to use hardware for encode on most browsers\n * then constrained baseline profile.\n */\n static h264BaselineProfile(): VideoCodecCapability {\n return new VideoCodecCapability('H264', {\n clockRate: 90000,\n mimeType: 'video/H264',\n sdpFmtpLine: 'level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42001f',\n });\n }\n\n /**\n * Returns the configuration of H.264 CBP supported by the SDK.\n *\n * This profile is required in all WebRTC implementations and typically\n * uses software for the encode for stability. Hardware decode is common.\n */\n static h264ConstrainedBaselineProfile(): VideoCodecCapability {\n return new VideoCodecCapability('H264', {\n clockRate: 90000,\n mimeType: 'video/H264',\n sdpFmtpLine: 'level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f',\n });\n }\n\n /**\n * Returns the configuration of H.264 Main Profile supported by the SDK\n *\n * This profile is more likely to use hardware for encode on most browsers\n * then constrained baseline profile. It may have modest quality/bitrate improvements\n * over baseline/constrained baseline profile.\n */\n static h264MainProfile(): VideoCodecCapability {\n return new VideoCodecCapability('H264', {\n clockRate: 90000,\n mimeType: 'video/H264',\n sdpFmtpLine: 'level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=4d001f',\n });\n }\n\n /**\n * Returns the configuration of H.264 High Profile supported by the SDK.\n *\n * Currently most browsers do not have software fallback for high profile\n * which may impact stability. Its usage should be done with caution.\n *\n * On MacOS, until https://bugs.chromium.org/p/chromium/issues/detail?id=1520287 is\n * resolved, receivers will fail to allocate the decoder for this profile if the sender switches away and back\n * to this codec (e.g. fallback for a Firefox receiver, and then recovery when the Firefox\n * receiver leaves).\n *\n * If you expect a decent amount of iOS safari traffic, you should include `h264ConstrainedHighProfile` in your\n * preferences as well. It will be forwarded as High profile to receivers that negotiated High but not Constrained\n * High\n */\n static h264HighProfile(): VideoCodecCapability {\n return new VideoCodecCapability('H264', {\n clockRate: 90000,\n mimeType: 'video/H264',\n sdpFmtpLine: 'level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=64001f',\n });\n }\n\n /**\n * Returns the configuration of H.264 Constrained High Profile supported by the SDK\n *\n * This is currently only used on Safari. The same notes on H.264 High Profile apply to this\n * codec.\n */\n static h264ConstrainedHighProfile(): VideoCodecCapability {\n return new VideoCodecCapability('H264', {\n clockRate: 90000,\n mimeType: 'video/H264',\n sdpFmtpLine: 'level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=640c1f',\n });\n }\n\n /**\n * Returns the configuration of H.264 recommended by the SDK for maximum compatability.\n */\n static h264(): VideoCodecCapability {\n return VideoCodecCapability.h264ConstrainedBaselineProfile();\n }\n\n /**\n * Returns the configuration of VP9 profile 0 supported by the SDK.\n * Profile 0 is for use with 8-bit source content.\n */\n static vp9Profile0(): VideoCodecCapability {\n return new VideoCodecCapability('VP9', {\n clockRate: 90000,\n mimeType: 'video/VP9',\n sdpFmtpLine: 'profile-id=0',\n });\n }\n\n /**\n * Returns the configuration of AV1 recommended by the SDK\n */\n static vp9(): VideoCodecCapability {\n return VideoCodecCapability.vp9Profile0();\n }\n\n /**\n * Returns the configuration of AV1 main profile used by the SDK\n */\n static av1Main(): VideoCodecCapability {\n return new VideoCodecCapability('AV1', {\n clockRate: 90000,\n mimeType: 'video/AV1',\n });\n }\n\n /**\n * Returns the configuration of AV1 recommended by the SDK\n */\n static av1(): VideoCodecCapability {\n return VideoCodecCapability.av1Main();\n }\n\n /**\n * Returns the configuration of codec corresponding to the signaled capability\n */\n static fromSignaled(capability: SdkVideoCodecCapability): VideoCodecCapability | undefined {\n switch (capability) {\n case SdkVideoCodecCapability.VP8:\n return VideoCodecCapability.vp8();\n case SdkVideoCodecCapability.H264_BASELINE_PROFILE:\n return VideoCodecCapability.h264BaselineProfile();\n case SdkVideoCodecCapability.H264_CONSTRAINED_BASELINE_PROFILE:\n return VideoCodecCapability.h264ConstrainedBaselineProfile();\n case SdkVideoCodecCapability.H264_MAIN_PROFILE:\n return VideoCodecCapability.h264MainProfile();\n case SdkVideoCodecCapability.H264_HIGH_PROFILE:\n return VideoCodecCapability.h264HighProfile();\n case SdkVideoCodecCapability.H264_CONSTRAINED_HIGH_PROFILE:\n return VideoCodecCapability.h264ConstrainedHighProfile();\n case SdkVideoCodecCapability.VP9_PROFILE_0:\n return VideoCodecCapability.vp9Profile0();\n case SdkVideoCodecCapability.AV1_MAIN_PROFILE:\n return VideoCodecCapability.av1Main();\n default:\n return undefined;\n }\n }\n}\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\nvar define = require('define-data-property');\nvar hasDescriptors = require('has-property-descriptors')();\nvar gOPD = require('gopd');\n\nvar $TypeError = require('es-errors/type');\nvar $floor = GetIntrinsic('%Math.floor%');\n\n/** @type {import('.')} */\nmodule.exports = function setFunctionLength(fn, length) {\n\tif (typeof fn !== 'function') {\n\t\tthrow new $TypeError('`fn` is not a function');\n\t}\n\tif (typeof length !== 'number' || length < 0 || length > 0xFFFFFFFF || $floor(length) !== length) {\n\t\tthrow new $TypeError('`length` must be a positive 32-bit integer');\n\t}\n\n\tvar loose = arguments.length > 2 && !!arguments[2];\n\n\tvar functionLengthIsConfigurable = true;\n\tvar functionLengthIsWritable = true;\n\tif ('length' in fn && gOPD) {\n\t\tvar desc = gOPD(fn, 'length');\n\t\tif (desc && !desc.configurable) {\n\t\t\tfunctionLengthIsConfigurable = false;\n\t\t}\n\t\tif (desc && !desc.writable) {\n\t\t\tfunctionLengthIsWritable = false;\n\t\t}\n\t}\n\n\tif (functionLengthIsConfigurable || functionLengthIsWritable || !loose) {\n\t\tif (hasDescriptors) {\n\t\t\tdefine(/** @type {Parameters[0]} */ (fn), 'length', length, true, true);\n\t\t} else {\n\t\t\tdefine(/** @type {Parameters[0]} */ (fn), 'length', length);\n\t\t}\n\t}\n\treturn fn;\n};\n","'use strict';\nvar $String = String;\n\nmodule.exports = function (argument) {\n try {\n return $String(argument);\n } catch (error) {\n return 'Object';\n }\n};\n","/**\n * A Javascript implementation of Transport Layer Security (TLS).\n *\n * @author Dave Longley\n *\n * Copyright (c) 2009-2014 Digital Bazaar, Inc.\n *\n * The TLS Handshake Protocol involves the following steps:\n *\n * - Exchange hello messages to agree on algorithms, exchange random values,\n * and check for session resumption.\n *\n * - Exchange the necessary cryptographic parameters to allow the client and\n * server to agree on a premaster secret.\n *\n * - Exchange certificates and cryptographic information to allow the client\n * and server to authenticate themselves.\n *\n * - Generate a master secret from the premaster secret and exchanged random\n * values.\n *\n * - Provide security parameters to the record layer.\n *\n * - Allow the client and server to verify that their peer has calculated the\n * same security parameters and that the handshake occurred without tampering\n * by an attacker.\n *\n * Up to 4 different messages may be sent during a key exchange. The server\n * certificate, the server key exchange, the client certificate, and the\n * client key exchange.\n *\n * A typical handshake (from the client's perspective).\n *\n * 1. Client sends ClientHello.\n * 2. Client receives ServerHello.\n * 3. Client receives optional Certificate.\n * 4. Client receives optional ServerKeyExchange.\n * 5. Client receives ServerHelloDone.\n * 6. Client sends optional Certificate.\n * 7. Client sends ClientKeyExchange.\n * 8. Client sends optional CertificateVerify.\n * 9. Client sends ChangeCipherSpec.\n * 10. Client sends Finished.\n * 11. Client receives ChangeCipherSpec.\n * 12. Client receives Finished.\n * 13. Client sends/receives application data.\n *\n * To reuse an existing session:\n *\n * 1. Client sends ClientHello with session ID for reuse.\n * 2. Client receives ServerHello with same session ID if reusing.\n * 3. Client receives ChangeCipherSpec message if reusing.\n * 4. Client receives Finished.\n * 5. Client sends ChangeCipherSpec.\n * 6. Client sends Finished.\n *\n * Note: Client ignores HelloRequest if in the middle of a handshake.\n *\n * Record Layer:\n *\n * The record layer fragments information blocks into TLSPlaintext records\n * carrying data in chunks of 2^14 bytes or less. Client message boundaries are\n * not preserved in the record layer (i.e., multiple client messages of the\n * same ContentType MAY be coalesced into a single TLSPlaintext record, or a\n * single message MAY be fragmented across several records).\n *\n * struct {\n * uint8 major;\n * uint8 minor;\n * } ProtocolVersion;\n *\n * struct {\n * ContentType type;\n * ProtocolVersion version;\n * uint16 length;\n * opaque fragment[TLSPlaintext.length];\n * } TLSPlaintext;\n *\n * type:\n * The higher-level protocol used to process the enclosed fragment.\n *\n * version:\n * The version of the protocol being employed. TLS Version 1.2 uses version\n * {3, 3}. TLS Version 1.0 uses version {3, 1}. Note that a client that\n * supports multiple versions of TLS may not know what version will be\n * employed before it receives the ServerHello.\n *\n * length:\n * The length (in bytes) of the following TLSPlaintext.fragment. The length\n * MUST NOT exceed 2^14 = 16384 bytes.\n *\n * fragment:\n * The application data. This data is transparent and treated as an\n * independent block to be dealt with by the higher-level protocol specified\n * by the type field.\n *\n * Implementations MUST NOT send zero-length fragments of Handshake, Alert, or\n * ChangeCipherSpec content types. Zero-length fragments of Application data\n * MAY be sent as they are potentially useful as a traffic analysis\n * countermeasure.\n *\n * Note: Data of different TLS record layer content types MAY be interleaved.\n * Application data is generally of lower precedence for transmission than\n * other content types. However, records MUST be delivered to the network in\n * the same order as they are protected by the record layer. Recipients MUST\n * receive and process interleaved application layer traffic during handshakes\n * subsequent to the first one on a connection.\n *\n * struct {\n * ContentType type; // same as TLSPlaintext.type\n * ProtocolVersion version;// same as TLSPlaintext.version\n * uint16 length;\n * opaque fragment[TLSCompressed.length];\n * } TLSCompressed;\n *\n * length:\n * The length (in bytes) of the following TLSCompressed.fragment.\n * The length MUST NOT exceed 2^14 + 1024.\n *\n * fragment:\n * The compressed form of TLSPlaintext.fragment.\n *\n * Note: A CompressionMethod.null operation is an identity operation; no fields\n * are altered. In this implementation, since no compression is supported,\n * uncompressed records are always the same as compressed records.\n *\n * Encryption Information:\n *\n * The encryption and MAC functions translate a TLSCompressed structure into a\n * TLSCiphertext. The decryption functions reverse the process. The MAC of the\n * record also includes a sequence number so that missing, extra, or repeated\n * messages are detectable.\n *\n * struct {\n * ContentType type;\n * ProtocolVersion version;\n * uint16 length;\n * select (SecurityParameters.cipher_type) {\n * case stream: GenericStreamCipher;\n * case block: GenericBlockCipher;\n * case aead: GenericAEADCipher;\n * } fragment;\n * } TLSCiphertext;\n *\n * type:\n * The type field is identical to TLSCompressed.type.\n *\n * version:\n * The version field is identical to TLSCompressed.version.\n *\n * length:\n * The length (in bytes) of the following TLSCiphertext.fragment.\n * The length MUST NOT exceed 2^14 + 2048.\n *\n * fragment:\n * The encrypted form of TLSCompressed.fragment, with the MAC.\n *\n * Note: Only CBC Block Ciphers are supported by this implementation.\n *\n * The TLSCompressed.fragment structures are converted to/from block\n * TLSCiphertext.fragment structures.\n *\n * struct {\n * opaque IV[SecurityParameters.record_iv_length];\n * block-ciphered struct {\n * opaque content[TLSCompressed.length];\n * opaque MAC[SecurityParameters.mac_length];\n * uint8 padding[GenericBlockCipher.padding_length];\n * uint8 padding_length;\n * };\n * } GenericBlockCipher;\n *\n * The MAC is generated as described in Section 6.2.3.1.\n *\n * IV:\n * The Initialization Vector (IV) SHOULD be chosen at random, and MUST be\n * unpredictable. Note that in versions of TLS prior to 1.1, there was no\n * IV field, and the last ciphertext block of the previous record (the \"CBC\n * residue\") was used as the IV. This was changed to prevent the attacks\n * described in [CBCATT]. For block ciphers, the IV length is of length\n * SecurityParameters.record_iv_length, which is equal to the\n * SecurityParameters.block_size.\n *\n * padding:\n * Padding that is added to force the length of the plaintext to be an\n * integral multiple of the block cipher's block length. The padding MAY be\n * any length up to 255 bytes, as long as it results in the\n * TLSCiphertext.length being an integral multiple of the block length.\n * Lengths longer than necessary might be desirable to frustrate attacks on\n * a protocol that are based on analysis of the lengths of exchanged\n * messages. Each uint8 in the padding data vector MUST be filled with the\n * padding length value. The receiver MUST check this padding and MUST use\n * the bad_record_mac alert to indicate padding errors.\n *\n * padding_length:\n * The padding length MUST be such that the total size of the\n * GenericBlockCipher structure is a multiple of the cipher's block length.\n * Legal values range from zero to 255, inclusive. This length specifies the\n * length of the padding field exclusive of the padding_length field itself.\n *\n * The encrypted data length (TLSCiphertext.length) is one more than the sum of\n * SecurityParameters.block_length, TLSCompressed.length,\n * SecurityParameters.mac_length, and padding_length.\n *\n * Example: If the block length is 8 bytes, the content length\n * (TLSCompressed.length) is 61 bytes, and the MAC length is 20 bytes, then the\n * length before padding is 82 bytes (this does not include the IV. Thus, the\n * padding length modulo 8 must be equal to 6 in order to make the total length\n * an even multiple of 8 bytes (the block length). The padding length can be\n * 6, 14, 22, and so on, through 254. If the padding length were the minimum\n * necessary, 6, the padding would be 6 bytes, each containing the value 6.\n * Thus, the last 8 octets of the GenericBlockCipher before block encryption\n * would be xx 06 06 06 06 06 06 06, where xx is the last octet of the MAC.\n *\n * Note: With block ciphers in CBC mode (Cipher Block Chaining), it is critical\n * that the entire plaintext of the record be known before any ciphertext is\n * transmitted. Otherwise, it is possible for the attacker to mount the attack\n * described in [CBCATT].\n *\n * Implementation note: Canvel et al. [CBCTIME] have demonstrated a timing\n * attack on CBC padding based on the time required to compute the MAC. In\n * order to defend against this attack, implementations MUST ensure that\n * record processing time is essentially the same whether or not the padding\n * is correct. In general, the best way to do this is to compute the MAC even\n * if the padding is incorrect, and only then reject the packet. For instance,\n * if the pad appears to be incorrect, the implementation might assume a\n * zero-length pad and then compute the MAC. This leaves a small timing\n * channel, since MAC performance depends, to some extent, on the size of the\n * data fragment, but it is not believed to be large enough to be exploitable,\n * due to the large block size of existing MACs and the small size of the\n * timing signal.\n */\nvar forge = require('./forge');\nrequire('./asn1');\nrequire('./hmac');\nrequire('./md5');\nrequire('./pem');\nrequire('./pki');\nrequire('./random');\nrequire('./sha1');\nrequire('./util');\n\n/**\n * Generates pseudo random bytes by mixing the result of two hash functions,\n * MD5 and SHA-1.\n *\n * prf_TLS1(secret, label, seed) =\n * P_MD5(S1, label + seed) XOR P_SHA-1(S2, label + seed);\n *\n * Each P_hash function functions as follows:\n *\n * P_hash(secret, seed) = HMAC_hash(secret, A(1) + seed) +\n * HMAC_hash(secret, A(2) + seed) +\n * HMAC_hash(secret, A(3) + seed) + ...\n * A() is defined as:\n * A(0) = seed\n * A(i) = HMAC_hash(secret, A(i-1))\n *\n * The '+' operator denotes concatenation.\n *\n * As many iterations A(N) as are needed are performed to generate enough\n * pseudo random byte output. If an iteration creates more data than is\n * necessary, then it is truncated.\n *\n * Therefore:\n * A(1) = HMAC_hash(secret, A(0))\n * = HMAC_hash(secret, seed)\n * A(2) = HMAC_hash(secret, A(1))\n * = HMAC_hash(secret, HMAC_hash(secret, seed))\n *\n * Therefore:\n * P_hash(secret, seed) =\n * HMAC_hash(secret, HMAC_hash(secret, A(0)) + seed) +\n * HMAC_hash(secret, HMAC_hash(secret, A(1)) + seed) +\n * ...\n *\n * Therefore:\n * P_hash(secret, seed) =\n * HMAC_hash(secret, HMAC_hash(secret, seed) + seed) +\n * HMAC_hash(secret, HMAC_hash(secret, HMAC_hash(secret, seed)) + seed) +\n * ...\n *\n * @param secret the secret to use.\n * @param label the label to use.\n * @param seed the seed value to use.\n * @param length the number of bytes to generate.\n *\n * @return the pseudo random bytes in a byte buffer.\n */\nvar prf_TLS1 = function(secret, label, seed, length) {\n var rval = forge.util.createBuffer();\n\n /* For TLS 1.0, the secret is split in half, into two secrets of equal\n length. If the secret has an odd length then the last byte of the first\n half will be the same as the first byte of the second. The length of the\n two secrets is half of the secret rounded up. */\n var idx = (secret.length >> 1);\n var slen = idx + (secret.length & 1);\n var s1 = secret.substr(0, slen);\n var s2 = secret.substr(idx, slen);\n var ai = forge.util.createBuffer();\n var hmac = forge.hmac.create();\n seed = label + seed;\n\n // determine the number of iterations that must be performed to generate\n // enough output bytes, md5 creates 16 byte hashes, sha1 creates 20\n var md5itr = Math.ceil(length / 16);\n var sha1itr = Math.ceil(length / 20);\n\n // do md5 iterations\n hmac.start('MD5', s1);\n var md5bytes = forge.util.createBuffer();\n ai.putBytes(seed);\n for(var i = 0; i < md5itr; ++i) {\n // HMAC_hash(secret, A(i-1))\n hmac.start(null, null);\n hmac.update(ai.getBytes());\n ai.putBuffer(hmac.digest());\n\n // HMAC_hash(secret, A(i) + seed)\n hmac.start(null, null);\n hmac.update(ai.bytes() + seed);\n md5bytes.putBuffer(hmac.digest());\n }\n\n // do sha1 iterations\n hmac.start('SHA1', s2);\n var sha1bytes = forge.util.createBuffer();\n ai.clear();\n ai.putBytes(seed);\n for(var i = 0; i < sha1itr; ++i) {\n // HMAC_hash(secret, A(i-1))\n hmac.start(null, null);\n hmac.update(ai.getBytes());\n ai.putBuffer(hmac.digest());\n\n // HMAC_hash(secret, A(i) + seed)\n hmac.start(null, null);\n hmac.update(ai.bytes() + seed);\n sha1bytes.putBuffer(hmac.digest());\n }\n\n // XOR the md5 bytes with the sha1 bytes\n rval.putBytes(forge.util.xorBytes(\n md5bytes.getBytes(), sha1bytes.getBytes(), length));\n\n return rval;\n};\n\n/**\n * Generates pseudo random bytes using a SHA256 algorithm. For TLS 1.2.\n *\n * @param secret the secret to use.\n * @param label the label to use.\n * @param seed the seed value to use.\n * @param length the number of bytes to generate.\n *\n * @return the pseudo random bytes in a byte buffer.\n */\nvar prf_sha256 = function(secret, label, seed, length) {\n // FIXME: implement me for TLS 1.2\n};\n\n/**\n * Gets a MAC for a record using the SHA-1 hash algorithm.\n *\n * @param key the mac key.\n * @param state the sequence number (array of two 32-bit integers).\n * @param record the record.\n *\n * @return the sha-1 hash (20 bytes) for the given record.\n */\nvar hmac_sha1 = function(key, seqNum, record) {\n /* MAC is computed like so:\n HMAC_hash(\n key, seqNum +\n TLSCompressed.type +\n TLSCompressed.version +\n TLSCompressed.length +\n TLSCompressed.fragment)\n */\n var hmac = forge.hmac.create();\n hmac.start('SHA1', key);\n var b = forge.util.createBuffer();\n b.putInt32(seqNum[0]);\n b.putInt32(seqNum[1]);\n b.putByte(record.type);\n b.putByte(record.version.major);\n b.putByte(record.version.minor);\n b.putInt16(record.length);\n b.putBytes(record.fragment.bytes());\n hmac.update(b.getBytes());\n return hmac.digest().getBytes();\n};\n\n/**\n * Compresses the TLSPlaintext record into a TLSCompressed record using the\n * deflate algorithm.\n *\n * @param c the TLS connection.\n * @param record the TLSPlaintext record to compress.\n * @param s the ConnectionState to use.\n *\n * @return true on success, false on failure.\n */\nvar deflate = function(c, record, s) {\n var rval = false;\n\n try {\n var bytes = c.deflate(record.fragment.getBytes());\n record.fragment = forge.util.createBuffer(bytes);\n record.length = bytes.length;\n rval = true;\n } catch(ex) {\n // deflate error, fail out\n }\n\n return rval;\n};\n\n/**\n * Decompresses the TLSCompressed record into a TLSPlaintext record using the\n * deflate algorithm.\n *\n * @param c the TLS connection.\n * @param record the TLSCompressed record to decompress.\n * @param s the ConnectionState to use.\n *\n * @return true on success, false on failure.\n */\nvar inflate = function(c, record, s) {\n var rval = false;\n\n try {\n var bytes = c.inflate(record.fragment.getBytes());\n record.fragment = forge.util.createBuffer(bytes);\n record.length = bytes.length;\n rval = true;\n } catch(ex) {\n // inflate error, fail out\n }\n\n return rval;\n};\n\n/**\n * Reads a TLS variable-length vector from a byte buffer.\n *\n * Variable-length vectors are defined by specifying a subrange of legal\n * lengths, inclusively, using the notation . When these are\n * encoded, the actual length precedes the vector's contents in the byte\n * stream. The length will be in the form of a number consuming as many bytes\n * as required to hold the vector's specified maximum (ceiling) length. A\n * variable-length vector with an actual length field of zero is referred to\n * as an empty vector.\n *\n * @param b the byte buffer.\n * @param lenBytes the number of bytes required to store the length.\n *\n * @return the resulting byte buffer.\n */\nvar readVector = function(b, lenBytes) {\n var len = 0;\n switch(lenBytes) {\n case 1:\n len = b.getByte();\n break;\n case 2:\n len = b.getInt16();\n break;\n case 3:\n len = b.getInt24();\n break;\n case 4:\n len = b.getInt32();\n break;\n }\n\n // read vector bytes into a new buffer\n return forge.util.createBuffer(b.getBytes(len));\n};\n\n/**\n * Writes a TLS variable-length vector to a byte buffer.\n *\n * @param b the byte buffer.\n * @param lenBytes the number of bytes required to store the length.\n * @param v the byte buffer vector.\n */\nvar writeVector = function(b, lenBytes, v) {\n // encode length at the start of the vector, where the number of bytes for\n // the length is the maximum number of bytes it would take to encode the\n // vector's ceiling\n b.putInt(v.length(), lenBytes << 3);\n b.putBuffer(v);\n};\n\n/**\n * The tls implementation.\n */\nvar tls = {};\n\n/**\n * Version: TLS 1.2 = 3.3, TLS 1.1 = 3.2, TLS 1.0 = 3.1. Both TLS 1.1 and\n * TLS 1.2 were still too new (ie: openSSL didn't implement them) at the time\n * of this implementation so TLS 1.0 was implemented instead.\n */\ntls.Versions = {\n TLS_1_0: {major: 3, minor: 1},\n TLS_1_1: {major: 3, minor: 2},\n TLS_1_2: {major: 3, minor: 3}\n};\ntls.SupportedVersions = [\n tls.Versions.TLS_1_1,\n tls.Versions.TLS_1_0\n];\ntls.Version = tls.SupportedVersions[0];\n\n/**\n * Maximum fragment size. True maximum is 16384, but we fragment before that\n * to allow for unusual small increases during compression.\n */\ntls.MaxFragment = 16384 - 1024;\n\n/**\n * Whether this entity is considered the \"client\" or \"server\".\n * enum { server, client } ConnectionEnd;\n */\ntls.ConnectionEnd = {\n server: 0,\n client: 1\n};\n\n/**\n * Pseudo-random function algorithm used to generate keys from the master\n * secret.\n * enum { tls_prf_sha256 } PRFAlgorithm;\n */\ntls.PRFAlgorithm = {\n tls_prf_sha256: 0\n};\n\n/**\n * Bulk encryption algorithms.\n * enum { null, rc4, des3, aes } BulkCipherAlgorithm;\n */\ntls.BulkCipherAlgorithm = {\n none: null,\n rc4: 0,\n des3: 1,\n aes: 2\n};\n\n/**\n * Cipher types.\n * enum { stream, block, aead } CipherType;\n */\ntls.CipherType = {\n stream: 0,\n block: 1,\n aead: 2\n};\n\n/**\n * MAC (Message Authentication Code) algorithms.\n * enum { null, hmac_md5, hmac_sha1, hmac_sha256,\n * hmac_sha384, hmac_sha512} MACAlgorithm;\n */\ntls.MACAlgorithm = {\n none: null,\n hmac_md5: 0,\n hmac_sha1: 1,\n hmac_sha256: 2,\n hmac_sha384: 3,\n hmac_sha512: 4\n};\n\n/**\n * Compression algorithms.\n * enum { null(0), deflate(1), (255) } CompressionMethod;\n */\ntls.CompressionMethod = {\n none: 0,\n deflate: 1\n};\n\n/**\n * TLS record content types.\n * enum {\n * change_cipher_spec(20), alert(21), handshake(22),\n * application_data(23), (255)\n * } ContentType;\n */\ntls.ContentType = {\n change_cipher_spec: 20,\n alert: 21,\n handshake: 22,\n application_data: 23,\n heartbeat: 24\n};\n\n/**\n * TLS handshake types.\n * enum {\n * hello_request(0), client_hello(1), server_hello(2),\n * certificate(11), server_key_exchange (12),\n * certificate_request(13), server_hello_done(14),\n * certificate_verify(15), client_key_exchange(16),\n * finished(20), (255)\n * } HandshakeType;\n */\ntls.HandshakeType = {\n hello_request: 0,\n client_hello: 1,\n server_hello: 2,\n certificate: 11,\n server_key_exchange: 12,\n certificate_request: 13,\n server_hello_done: 14,\n certificate_verify: 15,\n client_key_exchange: 16,\n finished: 20\n};\n\n/**\n * TLS Alert Protocol.\n *\n * enum { warning(1), fatal(2), (255) } AlertLevel;\n *\n * enum {\n * close_notify(0),\n * unexpected_message(10),\n * bad_record_mac(20),\n * decryption_failed(21),\n * record_overflow(22),\n * decompression_failure(30),\n * handshake_failure(40),\n * bad_certificate(42),\n * unsupported_certificate(43),\n * certificate_revoked(44),\n * certificate_expired(45),\n * certificate_unknown(46),\n * illegal_parameter(47),\n * unknown_ca(48),\n * access_denied(49),\n * decode_error(50),\n * decrypt_error(51),\n * export_restriction(60),\n * protocol_version(70),\n * insufficient_security(71),\n * internal_error(80),\n * user_canceled(90),\n * no_renegotiation(100),\n * (255)\n * } AlertDescription;\n *\n * struct {\n * AlertLevel level;\n * AlertDescription description;\n * } Alert;\n */\ntls.Alert = {};\ntls.Alert.Level = {\n warning: 1,\n fatal: 2\n};\ntls.Alert.Description = {\n close_notify: 0,\n unexpected_message: 10,\n bad_record_mac: 20,\n decryption_failed: 21,\n record_overflow: 22,\n decompression_failure: 30,\n handshake_failure: 40,\n bad_certificate: 42,\n unsupported_certificate: 43,\n certificate_revoked: 44,\n certificate_expired: 45,\n certificate_unknown: 46,\n illegal_parameter: 47,\n unknown_ca: 48,\n access_denied: 49,\n decode_error: 50,\n decrypt_error: 51,\n export_restriction: 60,\n protocol_version: 70,\n insufficient_security: 71,\n internal_error: 80,\n user_canceled: 90,\n no_renegotiation: 100\n};\n\n/**\n * TLS Heartbeat Message types.\n * enum {\n * heartbeat_request(1),\n * heartbeat_response(2),\n * (255)\n * } HeartbeatMessageType;\n */\ntls.HeartbeatMessageType = {\n heartbeat_request: 1,\n heartbeat_response: 2\n};\n\n/**\n * Supported cipher suites.\n */\ntls.CipherSuites = {};\n\n/**\n * Gets a supported cipher suite from its 2 byte ID.\n *\n * @param twoBytes two bytes in a string.\n *\n * @return the matching supported cipher suite or null.\n */\ntls.getCipherSuite = function(twoBytes) {\n var rval = null;\n for(var key in tls.CipherSuites) {\n var cs = tls.CipherSuites[key];\n if(cs.id[0] === twoBytes.charCodeAt(0) &&\n cs.id[1] === twoBytes.charCodeAt(1)) {\n rval = cs;\n break;\n }\n }\n return rval;\n};\n\n/**\n * Called when an unexpected record is encountered.\n *\n * @param c the connection.\n * @param record the record.\n */\ntls.handleUnexpected = function(c, record) {\n // if connection is client and closed, ignore unexpected messages\n var ignore = (!c.open && c.entity === tls.ConnectionEnd.client);\n if(!ignore) {\n c.error(c, {\n message: 'Unexpected message. Received TLS record out of order.',\n send: true,\n alert: {\n level: tls.Alert.Level.fatal,\n description: tls.Alert.Description.unexpected_message\n }\n });\n }\n};\n\n/**\n * Called when a client receives a HelloRequest record.\n *\n * @param c the connection.\n * @param record the record.\n * @param length the length of the handshake message.\n */\ntls.handleHelloRequest = function(c, record, length) {\n // ignore renegotiation requests from the server during a handshake, but\n // if handshaking, send a warning alert that renegotation is denied\n if(!c.handshaking && c.handshakes > 0) {\n // send alert warning\n tls.queue(c, tls.createAlert(c, {\n level: tls.Alert.Level.warning,\n description: tls.Alert.Description.no_renegotiation\n }));\n tls.flush(c);\n }\n\n // continue\n c.process();\n};\n\n/**\n * Parses a hello message from a ClientHello or ServerHello record.\n *\n * @param record the record to parse.\n *\n * @return the parsed message.\n */\ntls.parseHelloMessage = function(c, record, length) {\n var msg = null;\n\n var client = (c.entity === tls.ConnectionEnd.client);\n\n // minimum of 38 bytes in message\n if(length < 38) {\n c.error(c, {\n message: client ?\n 'Invalid ServerHello message. Message too short.' :\n 'Invalid ClientHello message. Message too short.',\n send: true,\n alert: {\n level: tls.Alert.Level.fatal,\n description: tls.Alert.Description.illegal_parameter\n }\n });\n } else {\n // use 'remaining' to calculate # of remaining bytes in the message\n var b = record.fragment;\n var remaining = b.length();\n msg = {\n version: {\n major: b.getByte(),\n minor: b.getByte()\n },\n random: forge.util.createBuffer(b.getBytes(32)),\n session_id: readVector(b, 1),\n extensions: []\n };\n if(client) {\n msg.cipher_suite = b.getBytes(2);\n msg.compression_method = b.getByte();\n } else {\n msg.cipher_suites = readVector(b, 2);\n msg.compression_methods = readVector(b, 1);\n }\n\n // read extensions if there are any bytes left in the message\n remaining = length - (remaining - b.length());\n if(remaining > 0) {\n // parse extensions\n var exts = readVector(b, 2);\n while(exts.length() > 0) {\n msg.extensions.push({\n type: [exts.getByte(), exts.getByte()],\n data: readVector(exts, 2)\n });\n }\n\n // TODO: make extension support modular\n if(!client) {\n for(var i = 0; i < msg.extensions.length; ++i) {\n var ext = msg.extensions[i];\n\n // support SNI extension\n if(ext.type[0] === 0x00 && ext.type[1] === 0x00) {\n // get server name list\n var snl = readVector(ext.data, 2);\n while(snl.length() > 0) {\n // read server name type\n var snType = snl.getByte();\n\n // only HostName type (0x00) is known, break out if\n // another type is detected\n if(snType !== 0x00) {\n break;\n }\n\n // add host name to server name list\n c.session.extensions.server_name.serverNameList.push(\n readVector(snl, 2).getBytes());\n }\n }\n }\n }\n }\n\n // version already set, do not allow version change\n if(c.session.version) {\n if(msg.version.major !== c.session.version.major ||\n msg.version.minor !== c.session.version.minor) {\n return c.error(c, {\n message: 'TLS version change is disallowed during renegotiation.',\n send: true,\n alert: {\n level: tls.Alert.Level.fatal,\n description: tls.Alert.Description.protocol_version\n }\n });\n }\n }\n\n // get the chosen (ServerHello) cipher suite\n if(client) {\n // FIXME: should be checking configured acceptable cipher suites\n c.session.cipherSuite = tls.getCipherSuite(msg.cipher_suite);\n } else {\n // get a supported preferred (ClientHello) cipher suite\n // choose the first supported cipher suite\n var tmp = forge.util.createBuffer(msg.cipher_suites.bytes());\n while(tmp.length() > 0) {\n // FIXME: should be checking configured acceptable suites\n // cipher suites take up 2 bytes\n c.session.cipherSuite = tls.getCipherSuite(tmp.getBytes(2));\n if(c.session.cipherSuite !== null) {\n break;\n }\n }\n }\n\n // cipher suite not supported\n if(c.session.cipherSuite === null) {\n return c.error(c, {\n message: 'No cipher suites in common.',\n send: true,\n alert: {\n level: tls.Alert.Level.fatal,\n description: tls.Alert.Description.handshake_failure\n },\n cipherSuite: forge.util.bytesToHex(msg.cipher_suite)\n });\n }\n\n // TODO: handle compression methods\n if(client) {\n c.session.compressionMethod = msg.compression_method;\n } else {\n // no compression\n c.session.compressionMethod = tls.CompressionMethod.none;\n }\n }\n\n return msg;\n};\n\n/**\n * Creates security parameters for the given connection based on the given\n * hello message.\n *\n * @param c the TLS connection.\n * @param msg the hello message.\n */\ntls.createSecurityParameters = function(c, msg) {\n /* Note: security params are from TLS 1.2, some values like prf_algorithm\n are ignored for TLS 1.0/1.1 and the builtin as specified in the spec is\n used. */\n\n // TODO: handle other options from server when more supported\n\n // get client and server randoms\n var client = (c.entity === tls.ConnectionEnd.client);\n var msgRandom = msg.random.bytes();\n var cRandom = client ? c.session.sp.client_random : msgRandom;\n var sRandom = client ? msgRandom : tls.createRandom().getBytes();\n\n // create new security parameters\n c.session.sp = {\n entity: c.entity,\n prf_algorithm: tls.PRFAlgorithm.tls_prf_sha256,\n bulk_cipher_algorithm: null,\n cipher_type: null,\n enc_key_length: null,\n block_length: null,\n fixed_iv_length: null,\n record_iv_length: null,\n mac_algorithm: null,\n mac_length: null,\n mac_key_length: null,\n compression_algorithm: c.session.compressionMethod,\n pre_master_secret: null,\n master_secret: null,\n client_random: cRandom,\n server_random: sRandom\n };\n};\n\n/**\n * Called when a client receives a ServerHello record.\n *\n * When a ServerHello message will be sent:\n * The server will send this message in response to a client hello message\n * when it was able to find an acceptable set of algorithms. If it cannot\n * find such a match, it will respond with a handshake failure alert.\n *\n * uint24 length;\n * struct {\n * ProtocolVersion server_version;\n * Random random;\n * SessionID session_id;\n * CipherSuite cipher_suite;\n * CompressionMethod compression_method;\n * select(extensions_present) {\n * case false:\n * struct {};\n * case true:\n * Extension extensions<0..2^16-1>;\n * };\n * } ServerHello;\n *\n * @param c the connection.\n * @param record the record.\n * @param length the length of the handshake message.\n */\ntls.handleServerHello = function(c, record, length) {\n var msg = tls.parseHelloMessage(c, record, length);\n if(c.fail) {\n return;\n }\n\n // ensure server version is compatible\n if(msg.version.minor <= c.version.minor) {\n c.version.minor = msg.version.minor;\n } else {\n return c.error(c, {\n message: 'Incompatible TLS version.',\n send: true,\n alert: {\n level: tls.Alert.Level.fatal,\n description: tls.Alert.Description.protocol_version\n }\n });\n }\n\n // indicate session version has been set\n c.session.version = c.version;\n\n // get the session ID from the message\n var sessionId = msg.session_id.bytes();\n\n // if the session ID is not blank and matches the cached one, resume\n // the session\n if(sessionId.length > 0 && sessionId === c.session.id) {\n // resuming session, expect a ChangeCipherSpec next\n c.expect = SCC;\n c.session.resuming = true;\n\n // get new server random\n c.session.sp.server_random = msg.random.bytes();\n } else {\n // not resuming, expect a server Certificate message next\n c.expect = SCE;\n c.session.resuming = false;\n\n // create new security parameters\n tls.createSecurityParameters(c, msg);\n }\n\n // set new session ID\n c.session.id = sessionId;\n\n // continue\n c.process();\n};\n\n/**\n * Called when a server receives a ClientHello record.\n *\n * When a ClientHello message will be sent:\n * When a client first connects to a server it is required to send the\n * client hello as its first message. The client can also send a client\n * hello in response to a hello request or on its own initiative in order\n * to renegotiate the security parameters in an existing connection.\n *\n * @param c the connection.\n * @param record the record.\n * @param length the length of the handshake message.\n */\ntls.handleClientHello = function(c, record, length) {\n var msg = tls.parseHelloMessage(c, record, length);\n if(c.fail) {\n return;\n }\n\n // get the session ID from the message\n var sessionId = msg.session_id.bytes();\n\n // see if the given session ID is in the cache\n var session = null;\n if(c.sessionCache) {\n session = c.sessionCache.getSession(sessionId);\n if(session === null) {\n // session ID not found\n sessionId = '';\n } else if(session.version.major !== msg.version.major ||\n session.version.minor > msg.version.minor) {\n // if session version is incompatible with client version, do not resume\n session = null;\n sessionId = '';\n }\n }\n\n // no session found to resume, generate a new session ID\n if(sessionId.length === 0) {\n sessionId = forge.random.getBytes(32);\n }\n\n // update session\n c.session.id = sessionId;\n c.session.clientHelloVersion = msg.version;\n c.session.sp = {};\n if(session) {\n // use version and security parameters from resumed session\n c.version = c.session.version = session.version;\n c.session.sp = session.sp;\n } else {\n // use highest compatible minor version\n var version;\n for(var i = 1; i < tls.SupportedVersions.length; ++i) {\n version = tls.SupportedVersions[i];\n if(version.minor <= msg.version.minor) {\n break;\n }\n }\n c.version = {major: version.major, minor: version.minor};\n c.session.version = c.version;\n }\n\n // if a session is set, resume it\n if(session !== null) {\n // resuming session, expect a ChangeCipherSpec next\n c.expect = CCC;\n c.session.resuming = true;\n\n // get new client random\n c.session.sp.client_random = msg.random.bytes();\n } else {\n // not resuming, expect a Certificate or ClientKeyExchange\n c.expect = (c.verifyClient !== false) ? CCE : CKE;\n c.session.resuming = false;\n\n // create new security parameters\n tls.createSecurityParameters(c, msg);\n }\n\n // connection now open\n c.open = true;\n\n // queue server hello\n tls.queue(c, tls.createRecord(c, {\n type: tls.ContentType.handshake,\n data: tls.createServerHello(c)\n }));\n\n if(c.session.resuming) {\n // queue change cipher spec message\n tls.queue(c, tls.createRecord(c, {\n type: tls.ContentType.change_cipher_spec,\n data: tls.createChangeCipherSpec()\n }));\n\n // create pending state\n c.state.pending = tls.createConnectionState(c);\n\n // change current write state to pending write state\n c.state.current.write = c.state.pending.write;\n\n // queue finished\n tls.queue(c, tls.createRecord(c, {\n type: tls.ContentType.handshake,\n data: tls.createFinished(c)\n }));\n } else {\n // queue server certificate\n tls.queue(c, tls.createRecord(c, {\n type: tls.ContentType.handshake,\n data: tls.createCertificate(c)\n }));\n\n if(!c.fail) {\n // queue server key exchange\n tls.queue(c, tls.createRecord(c, {\n type: tls.ContentType.handshake,\n data: tls.createServerKeyExchange(c)\n }));\n\n // request client certificate if set\n if(c.verifyClient !== false) {\n // queue certificate request\n tls.queue(c, tls.createRecord(c, {\n type: tls.ContentType.handshake,\n data: tls.createCertificateRequest(c)\n }));\n }\n\n // queue server hello done\n tls.queue(c, tls.createRecord(c, {\n type: tls.ContentType.handshake,\n data: tls.createServerHelloDone(c)\n }));\n }\n }\n\n // send records\n tls.flush(c);\n\n // continue\n c.process();\n};\n\n/**\n * Called when a client receives a Certificate record.\n *\n * When this message will be sent:\n * The server must send a certificate whenever the agreed-upon key exchange\n * method is not an anonymous one. This message will always immediately\n * follow the server hello message.\n *\n * Meaning of this message:\n * The certificate type must be appropriate for the selected cipher suite's\n * key exchange algorithm, and is generally an X.509v3 certificate. It must\n * contain a key which matches the key exchange method, as follows. Unless\n * otherwise specified, the signing algorithm for the certificate must be\n * the same as the algorithm for the certificate key. Unless otherwise\n * specified, the public key may be of any length.\n *\n * opaque ASN.1Cert<1..2^24-1>;\n * struct {\n * ASN.1Cert certificate_list<1..2^24-1>;\n * } Certificate;\n *\n * @param c the connection.\n * @param record the record.\n * @param length the length of the handshake message.\n */\ntls.handleCertificate = function(c, record, length) {\n // minimum of 3 bytes in message\n if(length < 3) {\n return c.error(c, {\n message: 'Invalid Certificate message. Message too short.',\n send: true,\n alert: {\n level: tls.Alert.Level.fatal,\n description: tls.Alert.Description.illegal_parameter\n }\n });\n }\n\n var b = record.fragment;\n var msg = {\n certificate_list: readVector(b, 3)\n };\n\n /* The sender's certificate will be first in the list (chain), each\n subsequent one that follows will certify the previous one, but root\n certificates (self-signed) that specify the certificate authority may\n be omitted under the assumption that clients must already possess it. */\n var cert, asn1;\n var certs = [];\n try {\n while(msg.certificate_list.length() > 0) {\n // each entry in msg.certificate_list is a vector with 3 len bytes\n cert = readVector(msg.certificate_list, 3);\n asn1 = forge.asn1.fromDer(cert);\n cert = forge.pki.certificateFromAsn1(asn1, true);\n certs.push(cert);\n }\n } catch(ex) {\n return c.error(c, {\n message: 'Could not parse certificate list.',\n cause: ex,\n send: true,\n alert: {\n level: tls.Alert.Level.fatal,\n description: tls.Alert.Description.bad_certificate\n }\n });\n }\n\n // ensure at least 1 certificate was provided if in client-mode\n // or if verifyClient was set to true to require a certificate\n // (as opposed to 'optional')\n var client = (c.entity === tls.ConnectionEnd.client);\n if((client || c.verifyClient === true) && certs.length === 0) {\n // error, no certificate\n c.error(c, {\n message: client ?\n 'No server certificate provided.' :\n 'No client certificate provided.',\n send: true,\n alert: {\n level: tls.Alert.Level.fatal,\n description: tls.Alert.Description.illegal_parameter\n }\n });\n } else if(certs.length === 0) {\n // no certs to verify\n // expect a ServerKeyExchange or ClientKeyExchange message next\n c.expect = client ? SKE : CKE;\n } else {\n // save certificate in session\n if(client) {\n c.session.serverCertificate = certs[0];\n } else {\n c.session.clientCertificate = certs[0];\n }\n\n if(tls.verifyCertificateChain(c, certs)) {\n // expect a ServerKeyExchange or ClientKeyExchange message next\n c.expect = client ? SKE : CKE;\n }\n }\n\n // continue\n c.process();\n};\n\n/**\n * Called when a client receives a ServerKeyExchange record.\n *\n * When this message will be sent:\n * This message will be sent immediately after the server certificate\n * message (or the server hello message, if this is an anonymous\n * negotiation).\n *\n * The server key exchange message is sent by the server only when the\n * server certificate message (if sent) does not contain enough data to\n * allow the client to exchange a premaster secret.\n *\n * Meaning of this message:\n * This message conveys cryptographic information to allow the client to\n * communicate the premaster secret: either an RSA public key to encrypt\n * the premaster secret with, or a Diffie-Hellman public key with which the\n * client can complete a key exchange (with the result being the premaster\n * secret.)\n *\n * enum {\n * dhe_dss, dhe_rsa, dh_anon, rsa, dh_dss, dh_rsa\n * } KeyExchangeAlgorithm;\n *\n * struct {\n * opaque dh_p<1..2^16-1>;\n * opaque dh_g<1..2^16-1>;\n * opaque dh_Ys<1..2^16-1>;\n * } ServerDHParams;\n *\n * struct {\n * select(KeyExchangeAlgorithm) {\n * case dh_anon:\n * ServerDHParams params;\n * case dhe_dss:\n * case dhe_rsa:\n * ServerDHParams params;\n * digitally-signed struct {\n * opaque client_random[32];\n * opaque server_random[32];\n * ServerDHParams params;\n * } signed_params;\n * case rsa:\n * case dh_dss:\n * case dh_rsa:\n * struct {};\n * };\n * } ServerKeyExchange;\n *\n * @param c the connection.\n * @param record the record.\n * @param length the length of the handshake message.\n */\ntls.handleServerKeyExchange = function(c, record, length) {\n // this implementation only supports RSA, no Diffie-Hellman support\n // so any length > 0 is invalid\n if(length > 0) {\n return c.error(c, {\n message: 'Invalid key parameters. Only RSA is supported.',\n send: true,\n alert: {\n level: tls.Alert.Level.fatal,\n description: tls.Alert.Description.unsupported_certificate\n }\n });\n }\n\n // expect an optional CertificateRequest message next\n c.expect = SCR;\n\n // continue\n c.process();\n};\n\n/**\n * Called when a client receives a ClientKeyExchange record.\n *\n * @param c the connection.\n * @param record the record.\n * @param length the length of the handshake message.\n */\ntls.handleClientKeyExchange = function(c, record, length) {\n // this implementation only supports RSA, no Diffie-Hellman support\n // so any length < 48 is invalid\n if(length < 48) {\n return c.error(c, {\n message: 'Invalid key parameters. Only RSA is supported.',\n send: true,\n alert: {\n level: tls.Alert.Level.fatal,\n description: tls.Alert.Description.unsupported_certificate\n }\n });\n }\n\n var b = record.fragment;\n var msg = {\n enc_pre_master_secret: readVector(b, 2).getBytes()\n };\n\n // do rsa decryption\n var privateKey = null;\n if(c.getPrivateKey) {\n try {\n privateKey = c.getPrivateKey(c, c.session.serverCertificate);\n privateKey = forge.pki.privateKeyFromPem(privateKey);\n } catch(ex) {\n c.error(c, {\n message: 'Could not get private key.',\n cause: ex,\n send: true,\n alert: {\n level: tls.Alert.Level.fatal,\n description: tls.Alert.Description.internal_error\n }\n });\n }\n }\n\n if(privateKey === null) {\n return c.error(c, {\n message: 'No private key set.',\n send: true,\n alert: {\n level: tls.Alert.Level.fatal,\n description: tls.Alert.Description.internal_error\n }\n });\n }\n\n try {\n // decrypt 48-byte pre-master secret\n var sp = c.session.sp;\n sp.pre_master_secret = privateKey.decrypt(msg.enc_pre_master_secret);\n\n // ensure client hello version matches first 2 bytes\n var version = c.session.clientHelloVersion;\n if(version.major !== sp.pre_master_secret.charCodeAt(0) ||\n version.minor !== sp.pre_master_secret.charCodeAt(1)) {\n // error, do not send alert (see BLEI attack below)\n throw new Error('TLS version rollback attack detected.');\n }\n } catch(ex) {\n /* Note: Daniel Bleichenbacher [BLEI] can be used to attack a\n TLS server which is using PKCS#1 encoded RSA, so instead of\n failing here, we generate 48 random bytes and use that as\n the pre-master secret. */\n sp.pre_master_secret = forge.random.getBytes(48);\n }\n\n // expect a CertificateVerify message if a Certificate was received that\n // does not have fixed Diffie-Hellman params, otherwise expect\n // ChangeCipherSpec\n c.expect = CCC;\n if(c.session.clientCertificate !== null) {\n // only RSA support, so expect CertificateVerify\n // TODO: support Diffie-Hellman\n c.expect = CCV;\n }\n\n // continue\n c.process();\n};\n\n/**\n * Called when a client receives a CertificateRequest record.\n *\n * When this message will be sent:\n * A non-anonymous server can optionally request a certificate from the\n * client, if appropriate for the selected cipher suite. This message, if\n * sent, will immediately follow the Server Key Exchange message (if it is\n * sent; otherwise, the Server Certificate message).\n *\n * enum {\n * rsa_sign(1), dss_sign(2), rsa_fixed_dh(3), dss_fixed_dh(4),\n * rsa_ephemeral_dh_RESERVED(5), dss_ephemeral_dh_RESERVED(6),\n * fortezza_dms_RESERVED(20), (255)\n * } ClientCertificateType;\n *\n * opaque DistinguishedName<1..2^16-1>;\n *\n * struct {\n * ClientCertificateType certificate_types<1..2^8-1>;\n * SignatureAndHashAlgorithm supported_signature_algorithms<2^16-1>;\n * DistinguishedName certificate_authorities<0..2^16-1>;\n * } CertificateRequest;\n *\n * @param c the connection.\n * @param record the record.\n * @param length the length of the handshake message.\n */\ntls.handleCertificateRequest = function(c, record, length) {\n // minimum of 3 bytes in message\n if(length < 3) {\n return c.error(c, {\n message: 'Invalid CertificateRequest. Message too short.',\n send: true,\n alert: {\n level: tls.Alert.Level.fatal,\n description: tls.Alert.Description.illegal_parameter\n }\n });\n }\n\n // TODO: TLS 1.2+ has different format including\n // SignatureAndHashAlgorithm after cert types\n var b = record.fragment;\n var msg = {\n certificate_types: readVector(b, 1),\n certificate_authorities: readVector(b, 2)\n };\n\n // save certificate request in session\n c.session.certificateRequest = msg;\n\n // expect a ServerHelloDone message next\n c.expect = SHD;\n\n // continue\n c.process();\n};\n\n/**\n * Called when a server receives a CertificateVerify record.\n *\n * @param c the connection.\n * @param record the record.\n * @param length the length of the handshake message.\n */\ntls.handleCertificateVerify = function(c, record, length) {\n if(length < 2) {\n return c.error(c, {\n message: 'Invalid CertificateVerify. Message too short.',\n send: true,\n alert: {\n level: tls.Alert.Level.fatal,\n description: tls.Alert.Description.illegal_parameter\n }\n });\n }\n\n // rewind to get full bytes for message so it can be manually\n // digested below (special case for CertificateVerify messages because\n // they must be digested *after* handling as opposed to all others)\n var b = record.fragment;\n b.read -= 4;\n var msgBytes = b.bytes();\n b.read += 4;\n\n var msg = {\n signature: readVector(b, 2).getBytes()\n };\n\n // TODO: add support for DSA\n\n // generate data to verify\n var verify = forge.util.createBuffer();\n verify.putBuffer(c.session.md5.digest());\n verify.putBuffer(c.session.sha1.digest());\n verify = verify.getBytes();\n\n try {\n var cert = c.session.clientCertificate;\n /*b = forge.pki.rsa.decrypt(\n msg.signature, cert.publicKey, true, verify.length);\n if(b !== verify) {*/\n if(!cert.publicKey.verify(verify, msg.signature, 'NONE')) {\n throw new Error('CertificateVerify signature does not match.');\n }\n\n // digest message now that it has been handled\n c.session.md5.update(msgBytes);\n c.session.sha1.update(msgBytes);\n } catch(ex) {\n return c.error(c, {\n message: 'Bad signature in CertificateVerify.',\n send: true,\n alert: {\n level: tls.Alert.Level.fatal,\n description: tls.Alert.Description.handshake_failure\n }\n });\n }\n\n // expect ChangeCipherSpec\n c.expect = CCC;\n\n // continue\n c.process();\n};\n\n/**\n * Called when a client receives a ServerHelloDone record.\n *\n * When this message will be sent:\n * The server hello done message is sent by the server to indicate the end\n * of the server hello and associated messages. After sending this message\n * the server will wait for a client response.\n *\n * Meaning of this message:\n * This message means that the server is done sending messages to support\n * the key exchange, and the client can proceed with its phase of the key\n * exchange.\n *\n * Upon receipt of the server hello done message the client should verify\n * that the server provided a valid certificate if required and check that\n * the server hello parameters are acceptable.\n *\n * struct {} ServerHelloDone;\n *\n * @param c the connection.\n * @param record the record.\n * @param length the length of the handshake message.\n */\ntls.handleServerHelloDone = function(c, record, length) {\n // len must be 0 bytes\n if(length > 0) {\n return c.error(c, {\n message: 'Invalid ServerHelloDone message. Invalid length.',\n send: true,\n alert: {\n level: tls.Alert.Level.fatal,\n description: tls.Alert.Description.record_overflow\n }\n });\n }\n\n if(c.serverCertificate === null) {\n // no server certificate was provided\n var error = {\n message: 'No server certificate provided. Not enough security.',\n send: true,\n alert: {\n level: tls.Alert.Level.fatal,\n description: tls.Alert.Description.insufficient_security\n }\n };\n\n // call application callback\n var depth = 0;\n var ret = c.verify(c, error.alert.description, depth, []);\n if(ret !== true) {\n // check for custom alert info\n if(ret || ret === 0) {\n // set custom message and alert description\n if(typeof ret === 'object' && !forge.util.isArray(ret)) {\n if(ret.message) {\n error.message = ret.message;\n }\n if(ret.alert) {\n error.alert.description = ret.alert;\n }\n } else if(typeof ret === 'number') {\n // set custom alert description\n error.alert.description = ret;\n }\n }\n\n // send error\n return c.error(c, error);\n }\n }\n\n // create client certificate message if requested\n if(c.session.certificateRequest !== null) {\n record = tls.createRecord(c, {\n type: tls.ContentType.handshake,\n data: tls.createCertificate(c)\n });\n tls.queue(c, record);\n }\n\n // create client key exchange message\n record = tls.createRecord(c, {\n type: tls.ContentType.handshake,\n data: tls.createClientKeyExchange(c)\n });\n tls.queue(c, record);\n\n // expect no messages until the following callback has been called\n c.expect = SER;\n\n // create callback to handle client signature (for client-certs)\n var callback = function(c, signature) {\n if(c.session.certificateRequest !== null &&\n c.session.clientCertificate !== null) {\n // create certificate verify message\n tls.queue(c, tls.createRecord(c, {\n type: tls.ContentType.handshake,\n data: tls.createCertificateVerify(c, signature)\n }));\n }\n\n // create change cipher spec message\n tls.queue(c, tls.createRecord(c, {\n type: tls.ContentType.change_cipher_spec,\n data: tls.createChangeCipherSpec()\n }));\n\n // create pending state\n c.state.pending = tls.createConnectionState(c);\n\n // change current write state to pending write state\n c.state.current.write = c.state.pending.write;\n\n // create finished message\n tls.queue(c, tls.createRecord(c, {\n type: tls.ContentType.handshake,\n data: tls.createFinished(c)\n }));\n\n // expect a server ChangeCipherSpec message next\n c.expect = SCC;\n\n // send records\n tls.flush(c);\n\n // continue\n c.process();\n };\n\n // if there is no certificate request or no client certificate, do\n // callback immediately\n if(c.session.certificateRequest === null ||\n c.session.clientCertificate === null) {\n return callback(c, null);\n }\n\n // otherwise get the client signature\n tls.getClientSignature(c, callback);\n};\n\n/**\n * Called when a ChangeCipherSpec record is received.\n *\n * @param c the connection.\n * @param record the record.\n */\ntls.handleChangeCipherSpec = function(c, record) {\n if(record.fragment.getByte() !== 0x01) {\n return c.error(c, {\n message: 'Invalid ChangeCipherSpec message received.',\n send: true,\n alert: {\n level: tls.Alert.Level.fatal,\n description: tls.Alert.Description.illegal_parameter\n }\n });\n }\n\n // create pending state if:\n // 1. Resuming session in client mode OR\n // 2. NOT resuming session in server mode\n var client = (c.entity === tls.ConnectionEnd.client);\n if((c.session.resuming && client) || (!c.session.resuming && !client)) {\n c.state.pending = tls.createConnectionState(c);\n }\n\n // change current read state to pending read state\n c.state.current.read = c.state.pending.read;\n\n // clear pending state if:\n // 1. NOT resuming session in client mode OR\n // 2. resuming a session in server mode\n if((!c.session.resuming && client) || (c.session.resuming && !client)) {\n c.state.pending = null;\n }\n\n // expect a Finished record next\n c.expect = client ? SFI : CFI;\n\n // continue\n c.process();\n};\n\n/**\n * Called when a Finished record is received.\n *\n * When this message will be sent:\n * A finished message is always sent immediately after a change\n * cipher spec message to verify that the key exchange and\n * authentication processes were successful. It is essential that a\n * change cipher spec message be received between the other\n * handshake messages and the Finished message.\n *\n * Meaning of this message:\n * The finished message is the first protected with the just-\n * negotiated algorithms, keys, and secrets. Recipients of finished\n * messages must verify that the contents are correct. Once a side\n * has sent its Finished message and received and validated the\n * Finished message from its peer, it may begin to send and receive\n * application data over the connection.\n *\n * struct {\n * opaque verify_data[verify_data_length];\n * } Finished;\n *\n * verify_data\n * PRF(master_secret, finished_label, Hash(handshake_messages))\n * [0..verify_data_length-1];\n *\n * finished_label\n * For Finished messages sent by the client, the string\n * \"client finished\". For Finished messages sent by the server, the\n * string \"server finished\".\n *\n * verify_data_length depends on the cipher suite. If it is not specified\n * by the cipher suite, then it is 12. Versions of TLS < 1.2 always used\n * 12 bytes.\n *\n * @param c the connection.\n * @param record the record.\n * @param length the length of the handshake message.\n */\ntls.handleFinished = function(c, record, length) {\n // rewind to get full bytes for message so it can be manually\n // digested below (special case for Finished messages because they\n // must be digested *after* handling as opposed to all others)\n var b = record.fragment;\n b.read -= 4;\n var msgBytes = b.bytes();\n b.read += 4;\n\n // message contains only verify_data\n var vd = record.fragment.getBytes();\n\n // ensure verify data is correct\n b = forge.util.createBuffer();\n b.putBuffer(c.session.md5.digest());\n b.putBuffer(c.session.sha1.digest());\n\n // set label based on entity type\n var client = (c.entity === tls.ConnectionEnd.client);\n var label = client ? 'server finished' : 'client finished';\n\n // TODO: determine prf function and verify length for TLS 1.2\n var sp = c.session.sp;\n var vdl = 12;\n var prf = prf_TLS1;\n b = prf(sp.master_secret, label, b.getBytes(), vdl);\n if(b.getBytes() !== vd) {\n return c.error(c, {\n message: 'Invalid verify_data in Finished message.',\n send: true,\n alert: {\n level: tls.Alert.Level.fatal,\n description: tls.Alert.Description.decrypt_error\n }\n });\n }\n\n // digest finished message now that it has been handled\n c.session.md5.update(msgBytes);\n c.session.sha1.update(msgBytes);\n\n // resuming session as client or NOT resuming session as server\n if((c.session.resuming && client) || (!c.session.resuming && !client)) {\n // create change cipher spec message\n tls.queue(c, tls.createRecord(c, {\n type: tls.ContentType.change_cipher_spec,\n data: tls.createChangeCipherSpec()\n }));\n\n // change current write state to pending write state, clear pending\n c.state.current.write = c.state.pending.write;\n c.state.pending = null;\n\n // create finished message\n tls.queue(c, tls.createRecord(c, {\n type: tls.ContentType.handshake,\n data: tls.createFinished(c)\n }));\n }\n\n // expect application data next\n c.expect = client ? SAD : CAD;\n\n // handshake complete\n c.handshaking = false;\n ++c.handshakes;\n\n // save access to peer certificate\n c.peerCertificate = client ?\n c.session.serverCertificate : c.session.clientCertificate;\n\n // send records\n tls.flush(c);\n\n // now connected\n c.isConnected = true;\n c.connected(c);\n\n // continue\n c.process();\n};\n\n/**\n * Called when an Alert record is received.\n *\n * @param c the connection.\n * @param record the record.\n */\ntls.handleAlert = function(c, record) {\n // read alert\n var b = record.fragment;\n var alert = {\n level: b.getByte(),\n description: b.getByte()\n };\n\n // TODO: consider using a table?\n // get appropriate message\n var msg;\n switch(alert.description) {\n case tls.Alert.Description.close_notify:\n msg = 'Connection closed.';\n break;\n case tls.Alert.Description.unexpected_message:\n msg = 'Unexpected message.';\n break;\n case tls.Alert.Description.bad_record_mac:\n msg = 'Bad record MAC.';\n break;\n case tls.Alert.Description.decryption_failed:\n msg = 'Decryption failed.';\n break;\n case tls.Alert.Description.record_overflow:\n msg = 'Record overflow.';\n break;\n case tls.Alert.Description.decompression_failure:\n msg = 'Decompression failed.';\n break;\n case tls.Alert.Description.handshake_failure:\n msg = 'Handshake failure.';\n break;\n case tls.Alert.Description.bad_certificate:\n msg = 'Bad certificate.';\n break;\n case tls.Alert.Description.unsupported_certificate:\n msg = 'Unsupported certificate.';\n break;\n case tls.Alert.Description.certificate_revoked:\n msg = 'Certificate revoked.';\n break;\n case tls.Alert.Description.certificate_expired:\n msg = 'Certificate expired.';\n break;\n case tls.Alert.Description.certificate_unknown:\n msg = 'Certificate unknown.';\n break;\n case tls.Alert.Description.illegal_parameter:\n msg = 'Illegal parameter.';\n break;\n case tls.Alert.Description.unknown_ca:\n msg = 'Unknown certificate authority.';\n break;\n case tls.Alert.Description.access_denied:\n msg = 'Access denied.';\n break;\n case tls.Alert.Description.decode_error:\n msg = 'Decode error.';\n break;\n case tls.Alert.Description.decrypt_error:\n msg = 'Decrypt error.';\n break;\n case tls.Alert.Description.export_restriction:\n msg = 'Export restriction.';\n break;\n case tls.Alert.Description.protocol_version:\n msg = 'Unsupported protocol version.';\n break;\n case tls.Alert.Description.insufficient_security:\n msg = 'Insufficient security.';\n break;\n case tls.Alert.Description.internal_error:\n msg = 'Internal error.';\n break;\n case tls.Alert.Description.user_canceled:\n msg = 'User canceled.';\n break;\n case tls.Alert.Description.no_renegotiation:\n msg = 'Renegotiation not supported.';\n break;\n default:\n msg = 'Unknown error.';\n break;\n }\n\n // close connection on close_notify, not an error\n if(alert.description === tls.Alert.Description.close_notify) {\n return c.close();\n }\n\n // call error handler\n c.error(c, {\n message: msg,\n send: false,\n // origin is the opposite end\n origin: (c.entity === tls.ConnectionEnd.client) ? 'server' : 'client',\n alert: alert\n });\n\n // continue\n c.process();\n};\n\n/**\n * Called when a Handshake record is received.\n *\n * @param c the connection.\n * @param record the record.\n */\ntls.handleHandshake = function(c, record) {\n // get the handshake type and message length\n var b = record.fragment;\n var type = b.getByte();\n var length = b.getInt24();\n\n // see if the record fragment doesn't yet contain the full message\n if(length > b.length()) {\n // cache the record, clear its fragment, and reset the buffer read\n // pointer before the type and length were read\n c.fragmented = record;\n record.fragment = forge.util.createBuffer();\n b.read -= 4;\n\n // continue\n return c.process();\n }\n\n // full message now available, clear cache, reset read pointer to\n // before type and length\n c.fragmented = null;\n b.read -= 4;\n\n // save the handshake bytes for digestion after handler is found\n // (include type and length of handshake msg)\n var bytes = b.bytes(length + 4);\n\n // restore read pointer\n b.read += 4;\n\n // handle expected message\n if(type in hsTable[c.entity][c.expect]) {\n // initialize server session\n if(c.entity === tls.ConnectionEnd.server && !c.open && !c.fail) {\n c.handshaking = true;\n c.session = {\n version: null,\n extensions: {\n server_name: {\n serverNameList: []\n }\n },\n cipherSuite: null,\n compressionMethod: null,\n serverCertificate: null,\n clientCertificate: null,\n md5: forge.md.md5.create(),\n sha1: forge.md.sha1.create()\n };\n }\n\n /* Update handshake messages digest. Finished and CertificateVerify\n messages are not digested here. They can't be digested as part of\n the verify_data that they contain. These messages are manually\n digested in their handlers. HelloRequest messages are simply never\n included in the handshake message digest according to spec. */\n if(type !== tls.HandshakeType.hello_request &&\n type !== tls.HandshakeType.certificate_verify &&\n type !== tls.HandshakeType.finished) {\n c.session.md5.update(bytes);\n c.session.sha1.update(bytes);\n }\n\n // handle specific handshake type record\n hsTable[c.entity][c.expect][type](c, record, length);\n } else {\n // unexpected record\n tls.handleUnexpected(c, record);\n }\n};\n\n/**\n * Called when an ApplicationData record is received.\n *\n * @param c the connection.\n * @param record the record.\n */\ntls.handleApplicationData = function(c, record) {\n // buffer data, notify that its ready\n c.data.putBuffer(record.fragment);\n c.dataReady(c);\n\n // continue\n c.process();\n};\n\n/**\n * Called when a Heartbeat record is received.\n *\n * @param c the connection.\n * @param record the record.\n */\ntls.handleHeartbeat = function(c, record) {\n // get the heartbeat type and payload\n var b = record.fragment;\n var type = b.getByte();\n var length = b.getInt16();\n var payload = b.getBytes(length);\n\n if(type === tls.HeartbeatMessageType.heartbeat_request) {\n // discard request during handshake or if length is too large\n if(c.handshaking || length > payload.length) {\n // continue\n return c.process();\n }\n // retransmit payload\n tls.queue(c, tls.createRecord(c, {\n type: tls.ContentType.heartbeat,\n data: tls.createHeartbeat(\n tls.HeartbeatMessageType.heartbeat_response, payload)\n }));\n tls.flush(c);\n } else if(type === tls.HeartbeatMessageType.heartbeat_response) {\n // check payload against expected payload, discard heartbeat if no match\n if(payload !== c.expectedHeartbeatPayload) {\n // continue\n return c.process();\n }\n\n // notify that a valid heartbeat was received\n if(c.heartbeatReceived) {\n c.heartbeatReceived(c, forge.util.createBuffer(payload));\n }\n }\n\n // continue\n c.process();\n};\n\n/**\n * The transistional state tables for receiving TLS records. It maps the\n * current TLS engine state and a received record to a function to handle the\n * record and update the state.\n *\n * For instance, if the current state is SHE, then the TLS engine is expecting\n * a ServerHello record. Once a record is received, the handler function is\n * looked up using the state SHE and the record's content type.\n *\n * The resulting function will either be an error handler or a record handler.\n * The function will take whatever action is appropriate and update the state\n * for the next record.\n *\n * The states are all based on possible server record types. Note that the\n * client will never specifically expect to receive a HelloRequest or an alert\n * from the server so there is no state that reflects this. These messages may\n * occur at any time.\n *\n * There are two tables for mapping states because there is a second tier of\n * types for handshake messages. Once a record with a content type of handshake\n * is received, the handshake record handler will look up the handshake type in\n * the secondary map to get its appropriate handler.\n *\n * Valid message orders are as follows:\n *\n * =======================FULL HANDSHAKE======================\n * Client Server\n *\n * ClientHello -------->\n * ServerHello\n * Certificate*\n * ServerKeyExchange*\n * CertificateRequest*\n * <-------- ServerHelloDone\n * Certificate*\n * ClientKeyExchange\n * CertificateVerify*\n * [ChangeCipherSpec]\n * Finished -------->\n * [ChangeCipherSpec]\n * <-------- Finished\n * Application Data <-------> Application Data\n *\n * =====================SESSION RESUMPTION=====================\n * Client Server\n *\n * ClientHello -------->\n * ServerHello\n * [ChangeCipherSpec]\n * <-------- Finished\n * [ChangeCipherSpec]\n * Finished -------->\n * Application Data <-------> Application Data\n */\n// client expect states (indicate which records are expected to be received)\nvar SHE = 0; // rcv server hello\nvar SCE = 1; // rcv server certificate\nvar SKE = 2; // rcv server key exchange\nvar SCR = 3; // rcv certificate request\nvar SHD = 4; // rcv server hello done\nvar SCC = 5; // rcv change cipher spec\nvar SFI = 6; // rcv finished\nvar SAD = 7; // rcv application data\nvar SER = 8; // not expecting any messages at this point\n\n// server expect states\nvar CHE = 0; // rcv client hello\nvar CCE = 1; // rcv client certificate\nvar CKE = 2; // rcv client key exchange\nvar CCV = 3; // rcv certificate verify\nvar CCC = 4; // rcv change cipher spec\nvar CFI = 5; // rcv finished\nvar CAD = 6; // rcv application data\nvar CER = 7; // not expecting any messages at this point\n\n// map client current expect state and content type to function\nvar __ = tls.handleUnexpected;\nvar R0 = tls.handleChangeCipherSpec;\nvar R1 = tls.handleAlert;\nvar R2 = tls.handleHandshake;\nvar R3 = tls.handleApplicationData;\nvar R4 = tls.handleHeartbeat;\nvar ctTable = [];\nctTable[tls.ConnectionEnd.client] = [\n// CC,AL,HS,AD,HB\n/*SHE*/[__,R1,R2,__,R4],\n/*SCE*/[__,R1,R2,__,R4],\n/*SKE*/[__,R1,R2,__,R4],\n/*SCR*/[__,R1,R2,__,R4],\n/*SHD*/[__,R1,R2,__,R4],\n/*SCC*/[R0,R1,__,__,R4],\n/*SFI*/[__,R1,R2,__,R4],\n/*SAD*/[__,R1,R2,R3,R4],\n/*SER*/[__,R1,R2,__,R4]\n];\n\n// map server current expect state and content type to function\nctTable[tls.ConnectionEnd.server] = [\n// CC,AL,HS,AD\n/*CHE*/[__,R1,R2,__,R4],\n/*CCE*/[__,R1,R2,__,R4],\n/*CKE*/[__,R1,R2,__,R4],\n/*CCV*/[__,R1,R2,__,R4],\n/*CCC*/[R0,R1,__,__,R4],\n/*CFI*/[__,R1,R2,__,R4],\n/*CAD*/[__,R1,R2,R3,R4],\n/*CER*/[__,R1,R2,__,R4]\n];\n\n// map client current expect state and handshake type to function\nvar H0 = tls.handleHelloRequest;\nvar H1 = tls.handleServerHello;\nvar H2 = tls.handleCertificate;\nvar H3 = tls.handleServerKeyExchange;\nvar H4 = tls.handleCertificateRequest;\nvar H5 = tls.handleServerHelloDone;\nvar H6 = tls.handleFinished;\nvar hsTable = [];\nhsTable[tls.ConnectionEnd.client] = [\n// HR,01,SH,03,04,05,06,07,08,09,10,SC,SK,CR,HD,15,CK,17,18,19,FI\n/*SHE*/[__,__,H1,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__],\n/*SCE*/[H0,__,__,__,__,__,__,__,__,__,__,H2,H3,H4,H5,__,__,__,__,__,__],\n/*SKE*/[H0,__,__,__,__,__,__,__,__,__,__,__,H3,H4,H5,__,__,__,__,__,__],\n/*SCR*/[H0,__,__,__,__,__,__,__,__,__,__,__,__,H4,H5,__,__,__,__,__,__],\n/*SHD*/[H0,__,__,__,__,__,__,__,__,__,__,__,__,__,H5,__,__,__,__,__,__],\n/*SCC*/[H0,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__],\n/*SFI*/[H0,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,H6],\n/*SAD*/[H0,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__],\n/*SER*/[H0,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__]\n];\n\n// map server current expect state and handshake type to function\n// Note: CAD[CH] does not map to FB because renegotation is prohibited\nvar H7 = tls.handleClientHello;\nvar H8 = tls.handleClientKeyExchange;\nvar H9 = tls.handleCertificateVerify;\nhsTable[tls.ConnectionEnd.server] = [\n// 01,CH,02,03,04,05,06,07,08,09,10,CC,12,13,14,CV,CK,17,18,19,FI\n/*CHE*/[__,H7,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__],\n/*CCE*/[__,__,__,__,__,__,__,__,__,__,__,H2,__,__,__,__,__,__,__,__,__],\n/*CKE*/[__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,H8,__,__,__,__],\n/*CCV*/[__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,H9,__,__,__,__,__],\n/*CCC*/[__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__],\n/*CFI*/[__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,H6],\n/*CAD*/[__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__],\n/*CER*/[__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__,__]\n];\n\n/**\n * Generates the master_secret and keys using the given security parameters.\n *\n * The security parameters for a TLS connection state are defined as such:\n *\n * struct {\n * ConnectionEnd entity;\n * PRFAlgorithm prf_algorithm;\n * BulkCipherAlgorithm bulk_cipher_algorithm;\n * CipherType cipher_type;\n * uint8 enc_key_length;\n * uint8 block_length;\n * uint8 fixed_iv_length;\n * uint8 record_iv_length;\n * MACAlgorithm mac_algorithm;\n * uint8 mac_length;\n * uint8 mac_key_length;\n * CompressionMethod compression_algorithm;\n * opaque master_secret[48];\n * opaque client_random[32];\n * opaque server_random[32];\n * } SecurityParameters;\n *\n * Note that this definition is from TLS 1.2. In TLS 1.0 some of these\n * parameters are ignored because, for instance, the PRFAlgorithm is a\n * builtin-fixed algorithm combining iterations of MD5 and SHA-1 in TLS 1.0.\n *\n * The Record Protocol requires an algorithm to generate keys required by the\n * current connection state.\n *\n * The master secret is expanded into a sequence of secure bytes, which is then\n * split to a client write MAC key, a server write MAC key, a client write\n * encryption key, and a server write encryption key. In TLS 1.0 a client write\n * IV and server write IV are also generated. Each of these is generated from\n * the byte sequence in that order. Unused values are empty. In TLS 1.2, some\n * AEAD ciphers may additionally require a client write IV and a server write\n * IV (see Section 6.2.3.3).\n *\n * When keys, MAC keys, and IVs are generated, the master secret is used as an\n * entropy source.\n *\n * To generate the key material, compute:\n *\n * master_secret = PRF(pre_master_secret, \"master secret\",\n * ClientHello.random + ServerHello.random)\n *\n * key_block = PRF(SecurityParameters.master_secret,\n * \"key expansion\",\n * SecurityParameters.server_random +\n * SecurityParameters.client_random);\n *\n * until enough output has been generated. Then, the key_block is\n * partitioned as follows:\n *\n * client_write_MAC_key[SecurityParameters.mac_key_length]\n * server_write_MAC_key[SecurityParameters.mac_key_length]\n * client_write_key[SecurityParameters.enc_key_length]\n * server_write_key[SecurityParameters.enc_key_length]\n * client_write_IV[SecurityParameters.fixed_iv_length]\n * server_write_IV[SecurityParameters.fixed_iv_length]\n *\n * In TLS 1.2, the client_write_IV and server_write_IV are only generated for\n * implicit nonce techniques as described in Section 3.2.1 of [AEAD]. This\n * implementation uses TLS 1.0 so IVs are generated.\n *\n * Implementation note: The currently defined cipher suite which requires the\n * most material is AES_256_CBC_SHA256. It requires 2 x 32 byte keys and 2 x 32\n * byte MAC keys, for a total 128 bytes of key material. In TLS 1.0 it also\n * requires 2 x 16 byte IVs, so it actually takes 160 bytes of key material.\n *\n * @param c the connection.\n * @param sp the security parameters to use.\n *\n * @return the security keys.\n */\ntls.generateKeys = function(c, sp) {\n // TLS_RSA_WITH_AES_128_CBC_SHA (required to be compliant with TLS 1.2) &\n // TLS_RSA_WITH_AES_256_CBC_SHA are the only cipher suites implemented\n // at present\n\n // TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA is required to be compliant with\n // TLS 1.0 but we don't care right now because AES is better and we have\n // an implementation for it\n\n // TODO: TLS 1.2 implementation\n /*\n // determine the PRF\n var prf;\n switch(sp.prf_algorithm) {\n case tls.PRFAlgorithm.tls_prf_sha256:\n prf = prf_sha256;\n break;\n default:\n // should never happen\n throw new Error('Invalid PRF');\n }\n */\n\n // TLS 1.0/1.1 implementation\n var prf = prf_TLS1;\n\n // concatenate server and client random\n var random = sp.client_random + sp.server_random;\n\n // only create master secret if session is new\n if(!c.session.resuming) {\n // create master secret, clean up pre-master secret\n sp.master_secret = prf(\n sp.pre_master_secret, 'master secret', random, 48).bytes();\n sp.pre_master_secret = null;\n }\n\n // generate the amount of key material needed\n random = sp.server_random + sp.client_random;\n var length = 2 * sp.mac_key_length + 2 * sp.enc_key_length;\n\n // include IV for TLS/1.0\n var tls10 = (c.version.major === tls.Versions.TLS_1_0.major &&\n c.version.minor === tls.Versions.TLS_1_0.minor);\n if(tls10) {\n length += 2 * sp.fixed_iv_length;\n }\n var km = prf(sp.master_secret, 'key expansion', random, length);\n\n // split the key material into the MAC and encryption keys\n var rval = {\n client_write_MAC_key: km.getBytes(sp.mac_key_length),\n server_write_MAC_key: km.getBytes(sp.mac_key_length),\n client_write_key: km.getBytes(sp.enc_key_length),\n server_write_key: km.getBytes(sp.enc_key_length)\n };\n\n // include TLS 1.0 IVs\n if(tls10) {\n rval.client_write_IV = km.getBytes(sp.fixed_iv_length);\n rval.server_write_IV = km.getBytes(sp.fixed_iv_length);\n }\n\n return rval;\n};\n\n/**\n * Creates a new initialized TLS connection state. A connection state has\n * a read mode and a write mode.\n *\n * compression state:\n * The current state of the compression algorithm.\n *\n * cipher state:\n * The current state of the encryption algorithm. This will consist of the\n * scheduled key for that connection. For stream ciphers, this will also\n * contain whatever state information is necessary to allow the stream to\n * continue to encrypt or decrypt data.\n *\n * MAC key:\n * The MAC key for the connection.\n *\n * sequence number:\n * Each connection state contains a sequence number, which is maintained\n * separately for read and write states. The sequence number MUST be set to\n * zero whenever a connection state is made the active state. Sequence\n * numbers are of type uint64 and may not exceed 2^64-1. Sequence numbers do\n * not wrap. If a TLS implementation would need to wrap a sequence number,\n * it must renegotiate instead. A sequence number is incremented after each\n * record: specifically, the first record transmitted under a particular\n * connection state MUST use sequence number 0.\n *\n * @param c the connection.\n *\n * @return the new initialized TLS connection state.\n */\ntls.createConnectionState = function(c) {\n var client = (c.entity === tls.ConnectionEnd.client);\n\n var createMode = function() {\n var mode = {\n // two 32-bit numbers, first is most significant\n sequenceNumber: [0, 0],\n macKey: null,\n macLength: 0,\n macFunction: null,\n cipherState: null,\n cipherFunction: function(record) {return true;},\n compressionState: null,\n compressFunction: function(record) {return true;},\n updateSequenceNumber: function() {\n if(mode.sequenceNumber[1] === 0xFFFFFFFF) {\n mode.sequenceNumber[1] = 0;\n ++mode.sequenceNumber[0];\n } else {\n ++mode.sequenceNumber[1];\n }\n }\n };\n return mode;\n };\n var state = {\n read: createMode(),\n write: createMode()\n };\n\n // update function in read mode will decrypt then decompress a record\n state.read.update = function(c, record) {\n if(!state.read.cipherFunction(record, state.read)) {\n c.error(c, {\n message: 'Could not decrypt record or bad MAC.',\n send: true,\n alert: {\n level: tls.Alert.Level.fatal,\n // doesn't matter if decryption failed or MAC was\n // invalid, return the same error so as not to reveal\n // which one occurred\n description: tls.Alert.Description.bad_record_mac\n }\n });\n } else if(!state.read.compressFunction(c, record, state.read)) {\n c.error(c, {\n message: 'Could not decompress record.',\n send: true,\n alert: {\n level: tls.Alert.Level.fatal,\n description: tls.Alert.Description.decompression_failure\n }\n });\n }\n return !c.fail;\n };\n\n // update function in write mode will compress then encrypt a record\n state.write.update = function(c, record) {\n if(!state.write.compressFunction(c, record, state.write)) {\n // error, but do not send alert since it would require\n // compression as well\n c.error(c, {\n message: 'Could not compress record.',\n send: false,\n alert: {\n level: tls.Alert.Level.fatal,\n description: tls.Alert.Description.internal_error\n }\n });\n } else if(!state.write.cipherFunction(record, state.write)) {\n // error, but do not send alert since it would require\n // encryption as well\n c.error(c, {\n message: 'Could not encrypt record.',\n send: false,\n alert: {\n level: tls.Alert.Level.fatal,\n description: tls.Alert.Description.internal_error\n }\n });\n }\n return !c.fail;\n };\n\n // handle security parameters\n if(c.session) {\n var sp = c.session.sp;\n c.session.cipherSuite.initSecurityParameters(sp);\n\n // generate keys\n sp.keys = tls.generateKeys(c, sp);\n state.read.macKey = client ?\n sp.keys.server_write_MAC_key : sp.keys.client_write_MAC_key;\n state.write.macKey = client ?\n sp.keys.client_write_MAC_key : sp.keys.server_write_MAC_key;\n\n // cipher suite setup\n c.session.cipherSuite.initConnectionState(state, c, sp);\n\n // compression setup\n switch(sp.compression_algorithm) {\n case tls.CompressionMethod.none:\n break;\n case tls.CompressionMethod.deflate:\n state.read.compressFunction = inflate;\n state.write.compressFunction = deflate;\n break;\n default:\n throw new Error('Unsupported compression algorithm.');\n }\n }\n\n return state;\n};\n\n/**\n * Creates a Random structure.\n *\n * struct {\n * uint32 gmt_unix_time;\n * opaque random_bytes[28];\n * } Random;\n *\n * gmt_unix_time:\n * The current time and date in standard UNIX 32-bit format (seconds since\n * the midnight starting Jan 1, 1970, UTC, ignoring leap seconds) according\n * to the sender's internal clock. Clocks are not required to be set\n * correctly by the basic TLS protocol; higher-level or application\n * protocols may define additional requirements. Note that, for historical\n * reasons, the data element is named using GMT, the predecessor of the\n * current worldwide time base, UTC.\n * random_bytes:\n * 28 bytes generated by a secure random number generator.\n *\n * @return the Random structure as a byte array.\n */\ntls.createRandom = function() {\n // get UTC milliseconds\n var d = new Date();\n var utc = +d + d.getTimezoneOffset() * 60000;\n var rval = forge.util.createBuffer();\n rval.putInt32(utc);\n rval.putBytes(forge.random.getBytes(28));\n return rval;\n};\n\n/**\n * Creates a TLS record with the given type and data.\n *\n * @param c the connection.\n * @param options:\n * type: the record type.\n * data: the plain text data in a byte buffer.\n *\n * @return the created record.\n */\ntls.createRecord = function(c, options) {\n if(!options.data) {\n return null;\n }\n var record = {\n type: options.type,\n version: {\n major: c.version.major,\n minor: c.version.minor\n },\n length: options.data.length(),\n fragment: options.data\n };\n return record;\n};\n\n/**\n * Creates a TLS alert record.\n *\n * @param c the connection.\n * @param alert:\n * level: the TLS alert level.\n * description: the TLS alert description.\n *\n * @return the created alert record.\n */\ntls.createAlert = function(c, alert) {\n var b = forge.util.createBuffer();\n b.putByte(alert.level);\n b.putByte(alert.description);\n return tls.createRecord(c, {\n type: tls.ContentType.alert,\n data: b\n });\n};\n\n/* The structure of a TLS handshake message.\n *\n * struct {\n * HandshakeType msg_type; // handshake type\n * uint24 length; // bytes in message\n * select(HandshakeType) {\n * case hello_request: HelloRequest;\n * case client_hello: ClientHello;\n * case server_hello: ServerHello;\n * case certificate: Certificate;\n * case server_key_exchange: ServerKeyExchange;\n * case certificate_request: CertificateRequest;\n * case server_hello_done: ServerHelloDone;\n * case certificate_verify: CertificateVerify;\n * case client_key_exchange: ClientKeyExchange;\n * case finished: Finished;\n * } body;\n * } Handshake;\n */\n\n/**\n * Creates a ClientHello message.\n *\n * opaque SessionID<0..32>;\n * enum { null(0), deflate(1), (255) } CompressionMethod;\n * uint8 CipherSuite[2];\n *\n * struct {\n * ProtocolVersion client_version;\n * Random random;\n * SessionID session_id;\n * CipherSuite cipher_suites<2..2^16-2>;\n * CompressionMethod compression_methods<1..2^8-1>;\n * select(extensions_present) {\n * case false:\n * struct {};\n * case true:\n * Extension extensions<0..2^16-1>;\n * };\n * } ClientHello;\n *\n * The extension format for extended client hellos and server hellos is:\n *\n * struct {\n * ExtensionType extension_type;\n * opaque extension_data<0..2^16-1>;\n * } Extension;\n *\n * Here:\n *\n * - \"extension_type\" identifies the particular extension type.\n * - \"extension_data\" contains information specific to the particular\n * extension type.\n *\n * The extension types defined in this document are:\n *\n * enum {\n * server_name(0), max_fragment_length(1),\n * client_certificate_url(2), trusted_ca_keys(3),\n * truncated_hmac(4), status_request(5), (65535)\n * } ExtensionType;\n *\n * @param c the connection.\n *\n * @return the ClientHello byte buffer.\n */\ntls.createClientHello = function(c) {\n // save hello version\n c.session.clientHelloVersion = {\n major: c.version.major,\n minor: c.version.minor\n };\n\n // create supported cipher suites\n var cipherSuites = forge.util.createBuffer();\n for(var i = 0; i < c.cipherSuites.length; ++i) {\n var cs = c.cipherSuites[i];\n cipherSuites.putByte(cs.id[0]);\n cipherSuites.putByte(cs.id[1]);\n }\n var cSuites = cipherSuites.length();\n\n // create supported compression methods, null always supported, but\n // also support deflate if connection has inflate and deflate methods\n var compressionMethods = forge.util.createBuffer();\n compressionMethods.putByte(tls.CompressionMethod.none);\n // FIXME: deflate support disabled until issues with raw deflate data\n // without zlib headers are resolved\n /*\n if(c.inflate !== null && c.deflate !== null) {\n compressionMethods.putByte(tls.CompressionMethod.deflate);\n }\n */\n var cMethods = compressionMethods.length();\n\n // create TLS SNI (server name indication) extension if virtual host\n // has been specified, see RFC 3546\n var extensions = forge.util.createBuffer();\n if(c.virtualHost) {\n // create extension struct\n var ext = forge.util.createBuffer();\n ext.putByte(0x00); // type server_name (ExtensionType is 2 bytes)\n ext.putByte(0x00);\n\n /* In order to provide the server name, clients MAY include an\n * extension of type \"server_name\" in the (extended) client hello.\n * The \"extension_data\" field of this extension SHALL contain\n * \"ServerNameList\" where:\n *\n * struct {\n * NameType name_type;\n * select(name_type) {\n * case host_name: HostName;\n * } name;\n * } ServerName;\n *\n * enum {\n * host_name(0), (255)\n * } NameType;\n *\n * opaque HostName<1..2^16-1>;\n *\n * struct {\n * ServerName server_name_list<1..2^16-1>\n * } ServerNameList;\n */\n var serverName = forge.util.createBuffer();\n serverName.putByte(0x00); // type host_name\n writeVector(serverName, 2, forge.util.createBuffer(c.virtualHost));\n\n // ServerNameList is in extension_data\n var snList = forge.util.createBuffer();\n writeVector(snList, 2, serverName);\n writeVector(ext, 2, snList);\n extensions.putBuffer(ext);\n }\n var extLength = extensions.length();\n if(extLength > 0) {\n // add extension vector length\n extLength += 2;\n }\n\n // determine length of the handshake message\n // cipher suites and compression methods size will need to be\n // updated if more get added to the list\n var sessionId = c.session.id;\n var length =\n sessionId.length + 1 + // session ID vector\n 2 + // version (major + minor)\n 4 + 28 + // random time and random bytes\n 2 + cSuites + // cipher suites vector\n 1 + cMethods + // compression methods vector\n extLength; // extensions vector\n\n // build record fragment\n var rval = forge.util.createBuffer();\n rval.putByte(tls.HandshakeType.client_hello);\n rval.putInt24(length); // handshake length\n rval.putByte(c.version.major); // major version\n rval.putByte(c.version.minor); // minor version\n rval.putBytes(c.session.sp.client_random); // random time + bytes\n writeVector(rval, 1, forge.util.createBuffer(sessionId));\n writeVector(rval, 2, cipherSuites);\n writeVector(rval, 1, compressionMethods);\n if(extLength > 0) {\n writeVector(rval, 2, extensions);\n }\n return rval;\n};\n\n/**\n * Creates a ServerHello message.\n *\n * @param c the connection.\n *\n * @return the ServerHello byte buffer.\n */\ntls.createServerHello = function(c) {\n // determine length of the handshake message\n var sessionId = c.session.id;\n var length =\n sessionId.length + 1 + // session ID vector\n 2 + // version (major + minor)\n 4 + 28 + // random time and random bytes\n 2 + // chosen cipher suite\n 1; // chosen compression method\n\n // build record fragment\n var rval = forge.util.createBuffer();\n rval.putByte(tls.HandshakeType.server_hello);\n rval.putInt24(length); // handshake length\n rval.putByte(c.version.major); // major version\n rval.putByte(c.version.minor); // minor version\n rval.putBytes(c.session.sp.server_random); // random time + bytes\n writeVector(rval, 1, forge.util.createBuffer(sessionId));\n rval.putByte(c.session.cipherSuite.id[0]);\n rval.putByte(c.session.cipherSuite.id[1]);\n rval.putByte(c.session.compressionMethod);\n return rval;\n};\n\n/**\n * Creates a Certificate message.\n *\n * When this message will be sent:\n * This is the first message the client can send after receiving a server\n * hello done message and the first message the server can send after\n * sending a ServerHello. This client message is only sent if the server\n * requests a certificate. If no suitable certificate is available, the\n * client should send a certificate message containing no certificates. If\n * client authentication is required by the server for the handshake to\n * continue, it may respond with a fatal handshake failure alert.\n *\n * opaque ASN.1Cert<1..2^24-1>;\n *\n * struct {\n * ASN.1Cert certificate_list<0..2^24-1>;\n * } Certificate;\n *\n * @param c the connection.\n *\n * @return the Certificate byte buffer.\n */\ntls.createCertificate = function(c) {\n // TODO: check certificate request to ensure types are supported\n\n // get a certificate (a certificate as a PEM string)\n var client = (c.entity === tls.ConnectionEnd.client);\n var cert = null;\n if(c.getCertificate) {\n var hint;\n if(client) {\n hint = c.session.certificateRequest;\n } else {\n hint = c.session.extensions.server_name.serverNameList;\n }\n cert = c.getCertificate(c, hint);\n }\n\n // buffer to hold certificate list\n var certList = forge.util.createBuffer();\n if(cert !== null) {\n try {\n // normalize cert to a chain of certificates\n if(!forge.util.isArray(cert)) {\n cert = [cert];\n }\n var asn1 = null;\n for(var i = 0; i < cert.length; ++i) {\n var msg = forge.pem.decode(cert[i])[0];\n if(msg.type !== 'CERTIFICATE' &&\n msg.type !== 'X509 CERTIFICATE' &&\n msg.type !== 'TRUSTED CERTIFICATE') {\n var error = new Error('Could not convert certificate from PEM; PEM ' +\n 'header type is not \"CERTIFICATE\", \"X509 CERTIFICATE\", or ' +\n '\"TRUSTED CERTIFICATE\".');\n error.headerType = msg.type;\n throw error;\n }\n if(msg.procType && msg.procType.type === 'ENCRYPTED') {\n throw new Error('Could not convert certificate from PEM; PEM is encrypted.');\n }\n\n var der = forge.util.createBuffer(msg.body);\n if(asn1 === null) {\n asn1 = forge.asn1.fromDer(der.bytes(), false);\n }\n\n // certificate entry is itself a vector with 3 length bytes\n var certBuffer = forge.util.createBuffer();\n writeVector(certBuffer, 3, der);\n\n // add cert vector to cert list vector\n certList.putBuffer(certBuffer);\n }\n\n // save certificate\n cert = forge.pki.certificateFromAsn1(asn1);\n if(client) {\n c.session.clientCertificate = cert;\n } else {\n c.session.serverCertificate = cert;\n }\n } catch(ex) {\n return c.error(c, {\n message: 'Could not send certificate list.',\n cause: ex,\n send: true,\n alert: {\n level: tls.Alert.Level.fatal,\n description: tls.Alert.Description.bad_certificate\n }\n });\n }\n }\n\n // determine length of the handshake message\n var length = 3 + certList.length(); // cert list vector\n\n // build record fragment\n var rval = forge.util.createBuffer();\n rval.putByte(tls.HandshakeType.certificate);\n rval.putInt24(length);\n writeVector(rval, 3, certList);\n return rval;\n};\n\n/**\n * Creates a ClientKeyExchange message.\n *\n * When this message will be sent:\n * This message is always sent by the client. It will immediately follow the\n * client certificate message, if it is sent. Otherwise it will be the first\n * message sent by the client after it receives the server hello done\n * message.\n *\n * Meaning of this message:\n * With this message, the premaster secret is set, either though direct\n * transmission of the RSA-encrypted secret, or by the transmission of\n * Diffie-Hellman parameters which will allow each side to agree upon the\n * same premaster secret. When the key exchange method is DH_RSA or DH_DSS,\n * client certification has been requested, and the client was able to\n * respond with a certificate which contained a Diffie-Hellman public key\n * whose parameters (group and generator) matched those specified by the\n * server in its certificate, this message will not contain any data.\n *\n * Meaning of this message:\n * If RSA is being used for key agreement and authentication, the client\n * generates a 48-byte premaster secret, encrypts it using the public key\n * from the server's certificate or the temporary RSA key provided in a\n * server key exchange message, and sends the result in an encrypted\n * premaster secret message. This structure is a variant of the client\n * key exchange message, not a message in itself.\n *\n * struct {\n * select(KeyExchangeAlgorithm) {\n * case rsa: EncryptedPreMasterSecret;\n * case diffie_hellman: ClientDiffieHellmanPublic;\n * } exchange_keys;\n * } ClientKeyExchange;\n *\n * struct {\n * ProtocolVersion client_version;\n * opaque random[46];\n * } PreMasterSecret;\n *\n * struct {\n * public-key-encrypted PreMasterSecret pre_master_secret;\n * } EncryptedPreMasterSecret;\n *\n * A public-key-encrypted element is encoded as a vector <0..2^16-1>.\n *\n * @param c the connection.\n *\n * @return the ClientKeyExchange byte buffer.\n */\ntls.createClientKeyExchange = function(c) {\n // create buffer to encrypt\n var b = forge.util.createBuffer();\n\n // add highest client-supported protocol to help server avoid version\n // rollback attacks\n b.putByte(c.session.clientHelloVersion.major);\n b.putByte(c.session.clientHelloVersion.minor);\n\n // generate and add 46 random bytes\n b.putBytes(forge.random.getBytes(46));\n\n // save pre-master secret\n var sp = c.session.sp;\n sp.pre_master_secret = b.getBytes();\n\n // RSA-encrypt the pre-master secret\n var key = c.session.serverCertificate.publicKey;\n b = key.encrypt(sp.pre_master_secret);\n\n /* Note: The encrypted pre-master secret will be stored in a\n public-key-encrypted opaque vector that has the length prefixed using\n 2 bytes, so include those 2 bytes in the handshake message length. This\n is done as a minor optimization instead of calling writeVector(). */\n\n // determine length of the handshake message\n var length = b.length + 2;\n\n // build record fragment\n var rval = forge.util.createBuffer();\n rval.putByte(tls.HandshakeType.client_key_exchange);\n rval.putInt24(length);\n // add vector length bytes\n rval.putInt16(b.length);\n rval.putBytes(b);\n return rval;\n};\n\n/**\n * Creates a ServerKeyExchange message.\n *\n * @param c the connection.\n *\n * @return the ServerKeyExchange byte buffer.\n */\ntls.createServerKeyExchange = function(c) {\n // this implementation only supports RSA, no Diffie-Hellman support,\n // so this record is empty\n\n // determine length of the handshake message\n var length = 0;\n\n // build record fragment\n var rval = forge.util.createBuffer();\n if(length > 0) {\n rval.putByte(tls.HandshakeType.server_key_exchange);\n rval.putInt24(length);\n }\n return rval;\n};\n\n/**\n * Gets the signed data used to verify a client-side certificate. See\n * tls.createCertificateVerify() for details.\n *\n * @param c the connection.\n * @param callback the callback to call once the signed data is ready.\n */\ntls.getClientSignature = function(c, callback) {\n // generate data to RSA encrypt\n var b = forge.util.createBuffer();\n b.putBuffer(c.session.md5.digest());\n b.putBuffer(c.session.sha1.digest());\n b = b.getBytes();\n\n // create default signing function as necessary\n c.getSignature = c.getSignature || function(c, b, callback) {\n // do rsa encryption, call callback\n var privateKey = null;\n if(c.getPrivateKey) {\n try {\n privateKey = c.getPrivateKey(c, c.session.clientCertificate);\n privateKey = forge.pki.privateKeyFromPem(privateKey);\n } catch(ex) {\n c.error(c, {\n message: 'Could not get private key.',\n cause: ex,\n send: true,\n alert: {\n level: tls.Alert.Level.fatal,\n description: tls.Alert.Description.internal_error\n }\n });\n }\n }\n if(privateKey === null) {\n c.error(c, {\n message: 'No private key set.',\n send: true,\n alert: {\n level: tls.Alert.Level.fatal,\n description: tls.Alert.Description.internal_error\n }\n });\n } else {\n b = privateKey.sign(b, null);\n }\n callback(c, b);\n };\n\n // get client signature\n c.getSignature(c, b, callback);\n};\n\n/**\n * Creates a CertificateVerify message.\n *\n * Meaning of this message:\n * This structure conveys the client's Diffie-Hellman public value\n * (Yc) if it was not already included in the client's certificate.\n * The encoding used for Yc is determined by the enumerated\n * PublicValueEncoding. This structure is a variant of the client\n * key exchange message, not a message in itself.\n *\n * When this message will be sent:\n * This message is used to provide explicit verification of a client\n * certificate. This message is only sent following a client\n * certificate that has signing capability (i.e. all certificates\n * except those containing fixed Diffie-Hellman parameters). When\n * sent, it will immediately follow the client key exchange message.\n *\n * struct {\n * Signature signature;\n * } CertificateVerify;\n *\n * CertificateVerify.signature.md5_hash\n * MD5(handshake_messages);\n *\n * Certificate.signature.sha_hash\n * SHA(handshake_messages);\n *\n * Here handshake_messages refers to all handshake messages sent or\n * received starting at client hello up to but not including this\n * message, including the type and length fields of the handshake\n * messages.\n *\n * select(SignatureAlgorithm) {\n * case anonymous: struct { };\n * case rsa:\n * digitally-signed struct {\n * opaque md5_hash[16];\n * opaque sha_hash[20];\n * };\n * case dsa:\n * digitally-signed struct {\n * opaque sha_hash[20];\n * };\n * } Signature;\n *\n * In digital signing, one-way hash functions are used as input for a\n * signing algorithm. A digitally-signed element is encoded as an opaque\n * vector <0..2^16-1>, where the length is specified by the signing\n * algorithm and key.\n *\n * In RSA signing, a 36-byte structure of two hashes (one SHA and one\n * MD5) is signed (encrypted with the private key). It is encoded with\n * PKCS #1 block type 0 or type 1 as described in [PKCS1].\n *\n * In DSS, the 20 bytes of the SHA hash are run directly through the\n * Digital Signing Algorithm with no additional hashing.\n *\n * @param c the connection.\n * @param signature the signature to include in the message.\n *\n * @return the CertificateVerify byte buffer.\n */\ntls.createCertificateVerify = function(c, signature) {\n /* Note: The signature will be stored in a \"digitally-signed\" opaque\n vector that has the length prefixed using 2 bytes, so include those\n 2 bytes in the handshake message length. This is done as a minor\n optimization instead of calling writeVector(). */\n\n // determine length of the handshake message\n var length = signature.length + 2;\n\n // build record fragment\n var rval = forge.util.createBuffer();\n rval.putByte(tls.HandshakeType.certificate_verify);\n rval.putInt24(length);\n // add vector length bytes\n rval.putInt16(signature.length);\n rval.putBytes(signature);\n return rval;\n};\n\n/**\n * Creates a CertificateRequest message.\n *\n * @param c the connection.\n *\n * @return the CertificateRequest byte buffer.\n */\ntls.createCertificateRequest = function(c) {\n // TODO: support other certificate types\n var certTypes = forge.util.createBuffer();\n\n // common RSA certificate type\n certTypes.putByte(0x01);\n\n // add distinguished names from CA store\n var cAs = forge.util.createBuffer();\n for(var key in c.caStore.certs) {\n var cert = c.caStore.certs[key];\n var dn = forge.pki.distinguishedNameToAsn1(cert.subject);\n var byteBuffer = forge.asn1.toDer(dn);\n cAs.putInt16(byteBuffer.length());\n cAs.putBuffer(byteBuffer);\n }\n\n // TODO: TLS 1.2+ has a different format\n\n // determine length of the handshake message\n var length =\n 1 + certTypes.length() +\n 2 + cAs.length();\n\n // build record fragment\n var rval = forge.util.createBuffer();\n rval.putByte(tls.HandshakeType.certificate_request);\n rval.putInt24(length);\n writeVector(rval, 1, certTypes);\n writeVector(rval, 2, cAs);\n return rval;\n};\n\n/**\n * Creates a ServerHelloDone message.\n *\n * @param c the connection.\n *\n * @return the ServerHelloDone byte buffer.\n */\ntls.createServerHelloDone = function(c) {\n // build record fragment\n var rval = forge.util.createBuffer();\n rval.putByte(tls.HandshakeType.server_hello_done);\n rval.putInt24(0);\n return rval;\n};\n\n/**\n * Creates a ChangeCipherSpec message.\n *\n * The change cipher spec protocol exists to signal transitions in\n * ciphering strategies. The protocol consists of a single message,\n * which is encrypted and compressed under the current (not the pending)\n * connection state. The message consists of a single byte of value 1.\n *\n * struct {\n * enum { change_cipher_spec(1), (255) } type;\n * } ChangeCipherSpec;\n *\n * @return the ChangeCipherSpec byte buffer.\n */\ntls.createChangeCipherSpec = function() {\n var rval = forge.util.createBuffer();\n rval.putByte(0x01);\n return rval;\n};\n\n/**\n * Creates a Finished message.\n *\n * struct {\n * opaque verify_data[12];\n * } Finished;\n *\n * verify_data\n * PRF(master_secret, finished_label, MD5(handshake_messages) +\n * SHA-1(handshake_messages)) [0..11];\n *\n * finished_label\n * For Finished messages sent by the client, the string \"client\n * finished\". For Finished messages sent by the server, the\n * string \"server finished\".\n *\n * handshake_messages\n * All of the data from all handshake messages up to but not\n * including this message. This is only data visible at the\n * handshake layer and does not include record layer headers.\n * This is the concatenation of all the Handshake structures as\n * defined in 7.4 exchanged thus far.\n *\n * @param c the connection.\n *\n * @return the Finished byte buffer.\n */\ntls.createFinished = function(c) {\n // generate verify_data\n var b = forge.util.createBuffer();\n b.putBuffer(c.session.md5.digest());\n b.putBuffer(c.session.sha1.digest());\n\n // TODO: determine prf function and verify length for TLS 1.2\n var client = (c.entity === tls.ConnectionEnd.client);\n var sp = c.session.sp;\n var vdl = 12;\n var prf = prf_TLS1;\n var label = client ? 'client finished' : 'server finished';\n b = prf(sp.master_secret, label, b.getBytes(), vdl);\n\n // build record fragment\n var rval = forge.util.createBuffer();\n rval.putByte(tls.HandshakeType.finished);\n rval.putInt24(b.length());\n rval.putBuffer(b);\n return rval;\n};\n\n/**\n * Creates a HeartbeatMessage (See RFC 6520).\n *\n * struct {\n * HeartbeatMessageType type;\n * uint16 payload_length;\n * opaque payload[HeartbeatMessage.payload_length];\n * opaque padding[padding_length];\n * } HeartbeatMessage;\n *\n * The total length of a HeartbeatMessage MUST NOT exceed 2^14 or\n * max_fragment_length when negotiated as defined in [RFC6066].\n *\n * type: The message type, either heartbeat_request or heartbeat_response.\n *\n * payload_length: The length of the payload.\n *\n * payload: The payload consists of arbitrary content.\n *\n * padding: The padding is random content that MUST be ignored by the\n * receiver. The length of a HeartbeatMessage is TLSPlaintext.length\n * for TLS and DTLSPlaintext.length for DTLS. Furthermore, the\n * length of the type field is 1 byte, and the length of the\n * payload_length is 2. Therefore, the padding_length is\n * TLSPlaintext.length - payload_length - 3 for TLS and\n * DTLSPlaintext.length - payload_length - 3 for DTLS. The\n * padding_length MUST be at least 16.\n *\n * The sender of a HeartbeatMessage MUST use a random padding of at\n * least 16 bytes. The padding of a received HeartbeatMessage message\n * MUST be ignored.\n *\n * If the payload_length of a received HeartbeatMessage is too large,\n * the received HeartbeatMessage MUST be discarded silently.\n *\n * @param c the connection.\n * @param type the tls.HeartbeatMessageType.\n * @param payload the heartbeat data to send as the payload.\n * @param [payloadLength] the payload length to use, defaults to the\n * actual payload length.\n *\n * @return the HeartbeatRequest byte buffer.\n */\ntls.createHeartbeat = function(type, payload, payloadLength) {\n if(typeof payloadLength === 'undefined') {\n payloadLength = payload.length;\n }\n // build record fragment\n var rval = forge.util.createBuffer();\n rval.putByte(type); // heartbeat message type\n rval.putInt16(payloadLength); // payload length\n rval.putBytes(payload); // payload\n // padding\n var plaintextLength = rval.length();\n var paddingLength = Math.max(16, plaintextLength - payloadLength - 3);\n rval.putBytes(forge.random.getBytes(paddingLength));\n return rval;\n};\n\n/**\n * Fragments, compresses, encrypts, and queues a record for delivery.\n *\n * @param c the connection.\n * @param record the record to queue.\n */\ntls.queue = function(c, record) {\n // error during record creation\n if(!record) {\n return;\n }\n\n if(record.fragment.length() === 0) {\n if(record.type === tls.ContentType.handshake ||\n record.type === tls.ContentType.alert ||\n record.type === tls.ContentType.change_cipher_spec) {\n // Empty handshake, alert of change cipher spec messages are not allowed per the TLS specification and should not be sent.\n return;\n }\n }\n\n // if the record is a handshake record, update handshake hashes\n if(record.type === tls.ContentType.handshake) {\n var bytes = record.fragment.bytes();\n c.session.md5.update(bytes);\n c.session.sha1.update(bytes);\n bytes = null;\n }\n\n // handle record fragmentation\n var records;\n if(record.fragment.length() <= tls.MaxFragment) {\n records = [record];\n } else {\n // fragment data as long as it is too long\n records = [];\n var data = record.fragment.bytes();\n while(data.length > tls.MaxFragment) {\n records.push(tls.createRecord(c, {\n type: record.type,\n data: forge.util.createBuffer(data.slice(0, tls.MaxFragment))\n }));\n data = data.slice(tls.MaxFragment);\n }\n // add last record\n if(data.length > 0) {\n records.push(tls.createRecord(c, {\n type: record.type,\n data: forge.util.createBuffer(data)\n }));\n }\n }\n\n // compress and encrypt all fragmented records\n for(var i = 0; i < records.length && !c.fail; ++i) {\n // update the record using current write state\n var rec = records[i];\n var s = c.state.current.write;\n if(s.update(c, rec)) {\n // store record\n c.records.push(rec);\n }\n }\n};\n\n/**\n * Flushes all queued records to the output buffer and calls the\n * tlsDataReady() handler on the given connection.\n *\n * @param c the connection.\n *\n * @return true on success, false on failure.\n */\ntls.flush = function(c) {\n for(var i = 0; i < c.records.length; ++i) {\n var record = c.records[i];\n\n // add record header and fragment\n c.tlsData.putByte(record.type);\n c.tlsData.putByte(record.version.major);\n c.tlsData.putByte(record.version.minor);\n c.tlsData.putInt16(record.fragment.length());\n c.tlsData.putBuffer(c.records[i].fragment);\n }\n c.records = [];\n return c.tlsDataReady(c);\n};\n\n/**\n * Maps a pki.certificateError to a tls.Alert.Description.\n *\n * @param error the error to map.\n *\n * @return the alert description.\n */\nvar _certErrorToAlertDesc = function(error) {\n switch(error) {\n case true:\n return true;\n case forge.pki.certificateError.bad_certificate:\n return tls.Alert.Description.bad_certificate;\n case forge.pki.certificateError.unsupported_certificate:\n return tls.Alert.Description.unsupported_certificate;\n case forge.pki.certificateError.certificate_revoked:\n return tls.Alert.Description.certificate_revoked;\n case forge.pki.certificateError.certificate_expired:\n return tls.Alert.Description.certificate_expired;\n case forge.pki.certificateError.certificate_unknown:\n return tls.Alert.Description.certificate_unknown;\n case forge.pki.certificateError.unknown_ca:\n return tls.Alert.Description.unknown_ca;\n default:\n return tls.Alert.Description.bad_certificate;\n }\n};\n\n/**\n * Maps a tls.Alert.Description to a pki.certificateError.\n *\n * @param desc the alert description.\n *\n * @return the certificate error.\n */\nvar _alertDescToCertError = function(desc) {\n switch(desc) {\n case true:\n return true;\n case tls.Alert.Description.bad_certificate:\n return forge.pki.certificateError.bad_certificate;\n case tls.Alert.Description.unsupported_certificate:\n return forge.pki.certificateError.unsupported_certificate;\n case tls.Alert.Description.certificate_revoked:\n return forge.pki.certificateError.certificate_revoked;\n case tls.Alert.Description.certificate_expired:\n return forge.pki.certificateError.certificate_expired;\n case tls.Alert.Description.certificate_unknown:\n return forge.pki.certificateError.certificate_unknown;\n case tls.Alert.Description.unknown_ca:\n return forge.pki.certificateError.unknown_ca;\n default:\n return forge.pki.certificateError.bad_certificate;\n }\n};\n\n/**\n * Verifies a certificate chain against the given connection's\n * Certificate Authority store.\n *\n * @param c the TLS connection.\n * @param chain the certificate chain to verify, with the root or highest\n * authority at the end.\n *\n * @return true if successful, false if not.\n */\ntls.verifyCertificateChain = function(c, chain) {\n try {\n // Make a copy of c.verifyOptions so that we can modify options.verify\n // without modifying c.verifyOptions.\n var options = {};\n for (var key in c.verifyOptions) {\n options[key] = c.verifyOptions[key];\n }\n\n options.verify = function(vfd, depth, chain) {\n // convert pki.certificateError to tls alert description\n var desc = _certErrorToAlertDesc(vfd);\n\n // call application callback\n var ret = c.verify(c, vfd, depth, chain);\n if(ret !== true) {\n if(typeof ret === 'object' && !forge.util.isArray(ret)) {\n // throw custom error\n var error = new Error('The application rejected the certificate.');\n error.send = true;\n error.alert = {\n level: tls.Alert.Level.fatal,\n description: tls.Alert.Description.bad_certificate\n };\n if(ret.message) {\n error.message = ret.message;\n }\n if(ret.alert) {\n error.alert.description = ret.alert;\n }\n throw error;\n }\n\n // convert tls alert description to pki.certificateError\n if(ret !== vfd) {\n ret = _alertDescToCertError(ret);\n }\n }\n\n return ret;\n };\n\n // verify chain\n forge.pki.verifyCertificateChain(c.caStore, chain, options);\n } catch(ex) {\n // build tls error if not already customized\n var err = ex;\n if(typeof err !== 'object' || forge.util.isArray(err)) {\n err = {\n send: true,\n alert: {\n level: tls.Alert.Level.fatal,\n description: _certErrorToAlertDesc(ex)\n }\n };\n }\n if(!('send' in err)) {\n err.send = true;\n }\n if(!('alert' in err)) {\n err.alert = {\n level: tls.Alert.Level.fatal,\n description: _certErrorToAlertDesc(err.error)\n };\n }\n\n // send error\n c.error(c, err);\n }\n\n return !c.fail;\n};\n\n/**\n * Creates a new TLS session cache.\n *\n * @param cache optional map of session ID to cached session.\n * @param capacity the maximum size for the cache (default: 100).\n *\n * @return the new TLS session cache.\n */\ntls.createSessionCache = function(cache, capacity) {\n var rval = null;\n\n // assume input is already a session cache object\n if(cache && cache.getSession && cache.setSession && cache.order) {\n rval = cache;\n } else {\n // create cache\n rval = {};\n rval.cache = cache || {};\n rval.capacity = Math.max(capacity || 100, 1);\n rval.order = [];\n\n // store order for sessions, delete session overflow\n for(var key in cache) {\n if(rval.order.length <= capacity) {\n rval.order.push(key);\n } else {\n delete cache[key];\n }\n }\n\n // get a session from a session ID (or get any session)\n rval.getSession = function(sessionId) {\n var session = null;\n var key = null;\n\n // if session ID provided, use it\n if(sessionId) {\n key = forge.util.bytesToHex(sessionId);\n } else if(rval.order.length > 0) {\n // get first session from cache\n key = rval.order[0];\n }\n\n if(key !== null && key in rval.cache) {\n // get cached session and remove from cache\n session = rval.cache[key];\n delete rval.cache[key];\n for(var i in rval.order) {\n if(rval.order[i] === key) {\n rval.order.splice(i, 1);\n break;\n }\n }\n }\n\n return session;\n };\n\n // set a session in the cache\n rval.setSession = function(sessionId, session) {\n // remove session from cache if at capacity\n if(rval.order.length === rval.capacity) {\n var key = rval.order.shift();\n delete rval.cache[key];\n }\n // add session to cache\n var key = forge.util.bytesToHex(sessionId);\n rval.order.push(key);\n rval.cache[key] = session;\n };\n }\n\n return rval;\n};\n\n/**\n * Creates a new TLS connection.\n *\n * See public createConnection() docs for more details.\n *\n * @param options the options for this connection.\n *\n * @return the new TLS connection.\n */\ntls.createConnection = function(options) {\n var caStore = null;\n if(options.caStore) {\n // if CA store is an array, convert it to a CA store object\n if(forge.util.isArray(options.caStore)) {\n caStore = forge.pki.createCaStore(options.caStore);\n } else {\n caStore = options.caStore;\n }\n } else {\n // create empty CA store\n caStore = forge.pki.createCaStore();\n }\n\n // setup default cipher suites\n var cipherSuites = options.cipherSuites || null;\n if(cipherSuites === null) {\n cipherSuites = [];\n for(var key in tls.CipherSuites) {\n cipherSuites.push(tls.CipherSuites[key]);\n }\n }\n\n // set default entity\n var entity = (options.server || false) ?\n tls.ConnectionEnd.server : tls.ConnectionEnd.client;\n\n // create session cache if requested\n var sessionCache = options.sessionCache ?\n tls.createSessionCache(options.sessionCache) : null;\n\n // create TLS connection\n var c = {\n version: {major: tls.Version.major, minor: tls.Version.minor},\n entity: entity,\n sessionId: options.sessionId,\n caStore: caStore,\n sessionCache: sessionCache,\n cipherSuites: cipherSuites,\n connected: options.connected,\n virtualHost: options.virtualHost || null,\n verifyClient: options.verifyClient || false,\n verify: options.verify || function(cn, vfd, dpth, cts) {return vfd;},\n verifyOptions: options.verifyOptions || {},\n getCertificate: options.getCertificate || null,\n getPrivateKey: options.getPrivateKey || null,\n getSignature: options.getSignature || null,\n input: forge.util.createBuffer(),\n tlsData: forge.util.createBuffer(),\n data: forge.util.createBuffer(),\n tlsDataReady: options.tlsDataReady,\n dataReady: options.dataReady,\n heartbeatReceived: options.heartbeatReceived,\n closed: options.closed,\n error: function(c, ex) {\n // set origin if not set\n ex.origin = ex.origin ||\n ((c.entity === tls.ConnectionEnd.client) ? 'client' : 'server');\n\n // send TLS alert\n if(ex.send) {\n tls.queue(c, tls.createAlert(c, ex.alert));\n tls.flush(c);\n }\n\n // error is fatal by default\n var fatal = (ex.fatal !== false);\n if(fatal) {\n // set fail flag\n c.fail = true;\n }\n\n // call error handler first\n options.error(c, ex);\n\n if(fatal) {\n // fatal error, close connection, do not clear fail\n c.close(false);\n }\n },\n deflate: options.deflate || null,\n inflate: options.inflate || null\n };\n\n /**\n * Resets a closed TLS connection for reuse. Called in c.close().\n *\n * @param clearFail true to clear the fail flag (default: true).\n */\n c.reset = function(clearFail) {\n c.version = {major: tls.Version.major, minor: tls.Version.minor};\n c.record = null;\n c.session = null;\n c.peerCertificate = null;\n c.state = {\n pending: null,\n current: null\n };\n c.expect = (c.entity === tls.ConnectionEnd.client) ? SHE : CHE;\n c.fragmented = null;\n c.records = [];\n c.open = false;\n c.handshakes = 0;\n c.handshaking = false;\n c.isConnected = false;\n c.fail = !(clearFail || typeof(clearFail) === 'undefined');\n c.input.clear();\n c.tlsData.clear();\n c.data.clear();\n c.state.current = tls.createConnectionState(c);\n };\n\n // do initial reset of connection\n c.reset();\n\n /**\n * Updates the current TLS engine state based on the given record.\n *\n * @param c the TLS connection.\n * @param record the TLS record to act on.\n */\n var _update = function(c, record) {\n // get record handler (align type in table by subtracting lowest)\n var aligned = record.type - tls.ContentType.change_cipher_spec;\n var handlers = ctTable[c.entity][c.expect];\n if(aligned in handlers) {\n handlers[aligned](c, record);\n } else {\n // unexpected record\n tls.handleUnexpected(c, record);\n }\n };\n\n /**\n * Reads the record header and initializes the next record on the given\n * connection.\n *\n * @param c the TLS connection with the next record.\n *\n * @return 0 if the input data could be processed, otherwise the\n * number of bytes required for data to be processed.\n */\n var _readRecordHeader = function(c) {\n var rval = 0;\n\n // get input buffer and its length\n var b = c.input;\n var len = b.length();\n\n // need at least 5 bytes to initialize a record\n if(len < 5) {\n rval = 5 - len;\n } else {\n // enough bytes for header\n // initialize record\n c.record = {\n type: b.getByte(),\n version: {\n major: b.getByte(),\n minor: b.getByte()\n },\n length: b.getInt16(),\n fragment: forge.util.createBuffer(),\n ready: false\n };\n\n // check record version\n var compatibleVersion = (c.record.version.major === c.version.major);\n if(compatibleVersion && c.session && c.session.version) {\n // session version already set, require same minor version\n compatibleVersion = (c.record.version.minor === c.version.minor);\n }\n if(!compatibleVersion) {\n c.error(c, {\n message: 'Incompatible TLS version.',\n send: true,\n alert: {\n level: tls.Alert.Level.fatal,\n description: tls.Alert.Description.protocol_version\n }\n });\n }\n }\n\n return rval;\n };\n\n /**\n * Reads the next record's contents and appends its message to any\n * previously fragmented message.\n *\n * @param c the TLS connection with the next record.\n *\n * @return 0 if the input data could be processed, otherwise the\n * number of bytes required for data to be processed.\n */\n var _readRecord = function(c) {\n var rval = 0;\n\n // ensure there is enough input data to get the entire record\n var b = c.input;\n var len = b.length();\n if(len < c.record.length) {\n // not enough data yet, return how much is required\n rval = c.record.length - len;\n } else {\n // there is enough data to parse the pending record\n // fill record fragment and compact input buffer\n c.record.fragment.putBytes(b.getBytes(c.record.length));\n b.compact();\n\n // update record using current read state\n var s = c.state.current.read;\n if(s.update(c, c.record)) {\n // see if there is a previously fragmented message that the\n // new record's message fragment should be appended to\n if(c.fragmented !== null) {\n // if the record type matches a previously fragmented\n // record, append the record fragment to it\n if(c.fragmented.type === c.record.type) {\n // concatenate record fragments\n c.fragmented.fragment.putBuffer(c.record.fragment);\n c.record = c.fragmented;\n } else {\n // error, invalid fragmented record\n c.error(c, {\n message: 'Invalid fragmented record.',\n send: true,\n alert: {\n level: tls.Alert.Level.fatal,\n description:\n tls.Alert.Description.unexpected_message\n }\n });\n }\n }\n\n // record is now ready\n c.record.ready = true;\n }\n }\n\n return rval;\n };\n\n /**\n * Performs a handshake using the TLS Handshake Protocol, as a client.\n *\n * This method should only be called if the connection is in client mode.\n *\n * @param sessionId the session ID to use, null to start a new one.\n */\n c.handshake = function(sessionId) {\n // error to call this in non-client mode\n if(c.entity !== tls.ConnectionEnd.client) {\n // not fatal error\n c.error(c, {\n message: 'Cannot initiate handshake as a server.',\n fatal: false\n });\n } else if(c.handshaking) {\n // handshake is already in progress, fail but not fatal error\n c.error(c, {\n message: 'Handshake already in progress.',\n fatal: false\n });\n } else {\n // clear fail flag on reuse\n if(c.fail && !c.open && c.handshakes === 0) {\n c.fail = false;\n }\n\n // now handshaking\n c.handshaking = true;\n\n // default to blank (new session)\n sessionId = sessionId || '';\n\n // if a session ID was specified, try to find it in the cache\n var session = null;\n if(sessionId.length > 0) {\n if(c.sessionCache) {\n session = c.sessionCache.getSession(sessionId);\n }\n\n // matching session not found in cache, clear session ID\n if(session === null) {\n sessionId = '';\n }\n }\n\n // no session given, grab a session from the cache, if available\n if(sessionId.length === 0 && c.sessionCache) {\n session = c.sessionCache.getSession();\n if(session !== null) {\n sessionId = session.id;\n }\n }\n\n // set up session\n c.session = {\n id: sessionId,\n version: null,\n cipherSuite: null,\n compressionMethod: null,\n serverCertificate: null,\n certificateRequest: null,\n clientCertificate: null,\n sp: {},\n md5: forge.md.md5.create(),\n sha1: forge.md.sha1.create()\n };\n\n // use existing session information\n if(session) {\n // only update version on connection, session version not yet set\n c.version = session.version;\n c.session.sp = session.sp;\n }\n\n // generate new client random\n c.session.sp.client_random = tls.createRandom().getBytes();\n\n // connection now open\n c.open = true;\n\n // send hello\n tls.queue(c, tls.createRecord(c, {\n type: tls.ContentType.handshake,\n data: tls.createClientHello(c)\n }));\n tls.flush(c);\n }\n };\n\n /**\n * Called when TLS protocol data has been received from somewhere and should\n * be processed by the TLS engine.\n *\n * @param data the TLS protocol data, as a string, to process.\n *\n * @return 0 if the data could be processed, otherwise the number of bytes\n * required for data to be processed.\n */\n c.process = function(data) {\n var rval = 0;\n\n // buffer input data\n if(data) {\n c.input.putBytes(data);\n }\n\n // process next record if no failure, process will be called after\n // each record is handled (since handling can be asynchronous)\n if(!c.fail) {\n // reset record if ready and now empty\n if(c.record !== null &&\n c.record.ready && c.record.fragment.isEmpty()) {\n c.record = null;\n }\n\n // if there is no pending record, try to read record header\n if(c.record === null) {\n rval = _readRecordHeader(c);\n }\n\n // read the next record (if record not yet ready)\n if(!c.fail && c.record !== null && !c.record.ready) {\n rval = _readRecord(c);\n }\n\n // record ready to be handled, update engine state\n if(!c.fail && c.record !== null && c.record.ready) {\n _update(c, c.record);\n }\n }\n\n return rval;\n };\n\n /**\n * Requests that application data be packaged into a TLS record. The\n * tlsDataReady handler will be called when the TLS record(s) have been\n * prepared.\n *\n * @param data the application data, as a raw 'binary' encoded string, to\n * be sent; to send utf-16/utf-8 string data, use the return value\n * of util.encodeUtf8(str).\n *\n * @return true on success, false on failure.\n */\n c.prepare = function(data) {\n tls.queue(c, tls.createRecord(c, {\n type: tls.ContentType.application_data,\n data: forge.util.createBuffer(data)\n }));\n return tls.flush(c);\n };\n\n /**\n * Requests that a heartbeat request be packaged into a TLS record for\n * transmission. The tlsDataReady handler will be called when TLS record(s)\n * have been prepared.\n *\n * When a heartbeat response has been received, the heartbeatReceived\n * handler will be called with the matching payload. This handler can\n * be used to clear a retransmission timer, etc.\n *\n * @param payload the heartbeat data to send as the payload in the message.\n * @param [payloadLength] the payload length to use, defaults to the\n * actual payload length.\n *\n * @return true on success, false on failure.\n */\n c.prepareHeartbeatRequest = function(payload, payloadLength) {\n if(payload instanceof forge.util.ByteBuffer) {\n payload = payload.bytes();\n }\n if(typeof payloadLength === 'undefined') {\n payloadLength = payload.length;\n }\n c.expectedHeartbeatPayload = payload;\n tls.queue(c, tls.createRecord(c, {\n type: tls.ContentType.heartbeat,\n data: tls.createHeartbeat(\n tls.HeartbeatMessageType.heartbeat_request, payload, payloadLength)\n }));\n return tls.flush(c);\n };\n\n /**\n * Closes the connection (sends a close_notify alert).\n *\n * @param clearFail true to clear the fail flag (default: true).\n */\n c.close = function(clearFail) {\n // save session if connection didn't fail\n if(!c.fail && c.sessionCache && c.session) {\n // only need to preserve session ID, version, and security params\n var session = {\n id: c.session.id,\n version: c.session.version,\n sp: c.session.sp\n };\n session.sp.keys = null;\n c.sessionCache.setSession(session.id, session);\n }\n\n if(c.open) {\n // connection no longer open, clear input\n c.open = false;\n c.input.clear();\n\n // if connected or handshaking, send an alert\n if(c.isConnected || c.handshaking) {\n c.isConnected = c.handshaking = false;\n\n // send close_notify alert\n tls.queue(c, tls.createAlert(c, {\n level: tls.Alert.Level.warning,\n description: tls.Alert.Description.close_notify\n }));\n tls.flush(c);\n }\n\n // call handler\n c.closed(c);\n }\n\n // reset TLS connection, do not clear fail flag\n c.reset(clearFail);\n };\n\n return c;\n};\n\n/* TLS API */\nmodule.exports = forge.tls = forge.tls || {};\n\n// expose non-functions\nfor(var key in tls) {\n if(typeof tls[key] !== 'function') {\n forge.tls[key] = tls[key];\n }\n}\n\n// expose prf_tls1 for testing\nforge.tls.prf_tls1 = prf_TLS1;\n\n// expose sha1 hmac method\nforge.tls.hmac_sha1 = hmac_sha1;\n\n// expose session cache creation\nforge.tls.createSessionCache = tls.createSessionCache;\n\n/**\n * Creates a new TLS connection. This does not make any assumptions about the\n * transport layer that TLS is working on top of, ie: it does not assume there\n * is a TCP/IP connection or establish one. A TLS connection is totally\n * abstracted away from the layer is runs on top of, it merely establishes a\n * secure channel between a client\" and a \"server\".\n *\n * A TLS connection contains 4 connection states: pending read and write, and\n * current read and write.\n *\n * At initialization, the current read and write states will be null. Only once\n * the security parameters have been set and the keys have been generated can\n * the pending states be converted into current states. Current states will be\n * updated for each record processed.\n *\n * A custom certificate verify callback may be provided to check information\n * like the common name on the server's certificate. It will be called for\n * every certificate in the chain. It has the following signature:\n *\n * variable func(c, certs, index, preVerify)\n * Where:\n * c The TLS connection\n * verified Set to true if certificate was verified, otherwise the alert\n * tls.Alert.Description for why the certificate failed.\n * depth The current index in the chain, where 0 is the server's cert.\n * certs The certificate chain, *NOTE* if the server was anonymous then\n * the chain will be empty.\n *\n * The function returns true on success and on failure either the appropriate\n * tls.Alert.Description or an object with 'alert' set to the appropriate\n * tls.Alert.Description and 'message' set to a custom error message. If true\n * is not returned then the connection will abort using, in order of\n * availability, first the returned alert description, second the preVerify\n * alert description, and lastly the default 'bad_certificate'.\n *\n * There are three callbacks that can be used to make use of client-side\n * certificates where each takes the TLS connection as the first parameter:\n *\n * getCertificate(conn, hint)\n * The second parameter is a hint as to which certificate should be\n * returned. If the connection entity is a client, then the hint will be\n * the CertificateRequest message from the server that is part of the\n * TLS protocol. If the connection entity is a server, then it will be\n * the servername list provided via an SNI extension the ClientHello, if\n * one was provided (empty array if not). The hint can be examined to\n * determine which certificate to use (advanced). Most implementations\n * will just return a certificate. The return value must be a\n * PEM-formatted certificate or an array of PEM-formatted certificates\n * that constitute a certificate chain, with the first in the array/chain\n * being the client's certificate.\n * getPrivateKey(conn, certificate)\n * The second parameter is an forge.pki X.509 certificate object that\n * is associated with the requested private key. The return value must\n * be a PEM-formatted private key.\n * getSignature(conn, bytes, callback)\n * This callback can be used instead of getPrivateKey if the private key\n * is not directly accessible in javascript or should not be. For\n * instance, a secure external web service could provide the signature\n * in exchange for appropriate credentials. The second parameter is a\n * string of bytes to be signed that are part of the TLS protocol. These\n * bytes are used to verify that the private key for the previously\n * provided client-side certificate is accessible to the client. The\n * callback is a function that takes 2 parameters, the TLS connection\n * and the RSA encrypted (signed) bytes as a string. This callback must\n * be called once the signature is ready.\n *\n * @param options the options for this connection:\n * server: true if the connection is server-side, false for client.\n * sessionId: a session ID to reuse, null for a new connection.\n * caStore: an array of certificates to trust.\n * sessionCache: a session cache to use.\n * cipherSuites: an optional array of cipher suites to use,\n * see tls.CipherSuites.\n * connected: function(conn) called when the first handshake completes.\n * virtualHost: the virtual server name to use in a TLS SNI extension.\n * verifyClient: true to require a client certificate in server mode,\n * 'optional' to request one, false not to (default: false).\n * verify: a handler used to custom verify certificates in the chain.\n * verifyOptions: an object with options for the certificate chain validation.\n * See documentation of pki.verifyCertificateChain for possible options.\n * verifyOptions.verify is ignored. If you wish to specify a verify handler\n * use the verify key.\n * getCertificate: an optional callback used to get a certificate or\n * a chain of certificates (as an array).\n * getPrivateKey: an optional callback used to get a private key.\n * getSignature: an optional callback used to get a signature.\n * tlsDataReady: function(conn) called when TLS protocol data has been\n * prepared and is ready to be used (typically sent over a socket\n * connection to its destination), read from conn.tlsData buffer.\n * dataReady: function(conn) called when application data has\n * been parsed from a TLS record and should be consumed by the\n * application, read from conn.data buffer.\n * closed: function(conn) called when the connection has been closed.\n * error: function(conn, error) called when there was an error.\n * deflate: function(inBytes) if provided, will deflate TLS records using\n * the deflate algorithm if the server supports it.\n * inflate: function(inBytes) if provided, will inflate TLS records using\n * the deflate algorithm if the server supports it.\n *\n * @return the new TLS connection.\n */\nforge.tls.createConnection = tls.createConnection;\n","'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es/no-function-prototype-bind -- safe\n var test = (function () { /* empty */ }).bind();\n // eslint-disable-next-line no-prototype-builtins -- safe\n return typeof test != 'function' || test.hasOwnProperty('prototype');\n});\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar LRU_1 = require(\"./utils/LRU\");\nvar CACHE_SIZE = 1000;\n/**\n * Inspired node-lru-cache[https://github.com/isaacs/node-lru-cache]\n */\nvar EndpointCache = /** @class */ (function () {\n function EndpointCache(maxSize) {\n if (maxSize === void 0) { maxSize = CACHE_SIZE; }\n this.maxSize = maxSize;\n this.cache = new LRU_1.LRUCache(maxSize);\n }\n ;\n Object.defineProperty(EndpointCache.prototype, \"size\", {\n get: function () {\n return this.cache.length;\n },\n enumerable: true,\n configurable: true\n });\n EndpointCache.prototype.put = function (key, value) {\n var keyString = typeof key !== 'string' ? EndpointCache.getKeyString(key) : key;\n var endpointRecord = this.populateValue(value);\n this.cache.put(keyString, endpointRecord);\n };\n EndpointCache.prototype.get = function (key) {\n var keyString = typeof key !== 'string' ? EndpointCache.getKeyString(key) : key;\n var now = Date.now();\n var records = this.cache.get(keyString);\n if (records) {\n for (var i = records.length-1; i >= 0; i--) {\n var record = records[i];\n if (record.Expire < now) {\n records.splice(i, 1);\n }\n }\n if (records.length === 0) {\n this.cache.remove(keyString);\n return undefined;\n }\n }\n return records;\n };\n EndpointCache.getKeyString = function (key) {\n var identifiers = [];\n var identifierNames = Object.keys(key).sort();\n for (var i = 0; i < identifierNames.length; i++) {\n var identifierName = identifierNames[i];\n if (key[identifierName] === undefined)\n continue;\n identifiers.push(key[identifierName]);\n }\n return identifiers.join(' ');\n };\n EndpointCache.prototype.populateValue = function (endpoints) {\n var now = Date.now();\n return endpoints.map(function (endpoint) { return ({\n Address: endpoint.Address || '',\n Expire: now + (endpoint.CachePeriodInMinutes || 1) * 60 * 1000\n }); });\n };\n EndpointCache.prototype.empty = function () {\n this.cache.empty();\n };\n EndpointCache.prototype.remove = function (key) {\n var keyString = typeof key !== 'string' ? EndpointCache.getKeyString(key) : key;\n this.cache.remove(keyString);\n };\n return EndpointCache;\n}());\nexports.EndpointCache = EndpointCache;",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (Math) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_algo = C.algo;\n\n\t // Initialization and round constants tables\n\t var H = [];\n\t var K = [];\n\n\t // Compute constants\n\t (function () {\n\t function isPrime(n) {\n\t var sqrtN = Math.sqrt(n);\n\t for (var factor = 2; factor <= sqrtN; factor++) {\n\t if (!(n % factor)) {\n\t return false;\n\t }\n\t }\n\n\t return true;\n\t }\n\n\t function getFractionalBits(n) {\n\t return ((n - (n | 0)) * 0x100000000) | 0;\n\t }\n\n\t var n = 2;\n\t var nPrime = 0;\n\t while (nPrime < 64) {\n\t if (isPrime(n)) {\n\t if (nPrime < 8) {\n\t H[nPrime] = getFractionalBits(Math.pow(n, 1 / 2));\n\t }\n\t K[nPrime] = getFractionalBits(Math.pow(n, 1 / 3));\n\n\t nPrime++;\n\t }\n\n\t n++;\n\t }\n\t }());\n\n\t // Reusable object\n\t var W = [];\n\n\t /**\n\t * SHA-256 hash algorithm.\n\t */\n\t var SHA256 = C_algo.SHA256 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = new WordArray.init(H.slice(0));\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcut\n\t var H = this._hash.words;\n\n\t // Working variables\n\t var a = H[0];\n\t var b = H[1];\n\t var c = H[2];\n\t var d = H[3];\n\t var e = H[4];\n\t var f = H[5];\n\t var g = H[6];\n\t var h = H[7];\n\n\t // Computation\n\t for (var i = 0; i < 64; i++) {\n\t if (i < 16) {\n\t W[i] = M[offset + i] | 0;\n\t } else {\n\t var gamma0x = W[i - 15];\n\t var gamma0 = ((gamma0x << 25) | (gamma0x >>> 7)) ^\n\t ((gamma0x << 14) | (gamma0x >>> 18)) ^\n\t (gamma0x >>> 3);\n\n\t var gamma1x = W[i - 2];\n\t var gamma1 = ((gamma1x << 15) | (gamma1x >>> 17)) ^\n\t ((gamma1x << 13) | (gamma1x >>> 19)) ^\n\t (gamma1x >>> 10);\n\n\t W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16];\n\t }\n\n\t var ch = (e & f) ^ (~e & g);\n\t var maj = (a & b) ^ (a & c) ^ (b & c);\n\n\t var sigma0 = ((a << 30) | (a >>> 2)) ^ ((a << 19) | (a >>> 13)) ^ ((a << 10) | (a >>> 22));\n\t var sigma1 = ((e << 26) | (e >>> 6)) ^ ((e << 21) | (e >>> 11)) ^ ((e << 7) | (e >>> 25));\n\n\t var t1 = h + sigma1 + ch + K[i] + W[i];\n\t var t2 = sigma0 + maj;\n\n\t h = g;\n\t g = f;\n\t f = e;\n\t e = (d + t1) | 0;\n\t d = c;\n\t c = b;\n\t b = a;\n\t a = (t1 + t2) | 0;\n\t }\n\n\t // Intermediate hash value\n\t H[0] = (H[0] + a) | 0;\n\t H[1] = (H[1] + b) | 0;\n\t H[2] = (H[2] + c) | 0;\n\t H[3] = (H[3] + d) | 0;\n\t H[4] = (H[4] + e) | 0;\n\t H[5] = (H[5] + f) | 0;\n\t H[6] = (H[6] + g) | 0;\n\t H[7] = (H[7] + h) | 0;\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = Math.floor(nBitsTotal / 0x100000000);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = nBitsTotal;\n\t data.sigBytes = dataWords.length * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Return final computed hash\n\t return this._hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t }\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA256('message');\n\t * var hash = CryptoJS.SHA256(wordArray);\n\t */\n\t C.SHA256 = Hasher._createHelper(SHA256);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA256(message, key);\n\t */\n\t C.HmacSHA256 = Hasher._createHmacHelper(SHA256);\n\t}(Math));\n\n\n\treturn CryptoJS.SHA256;\n\n}));","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['polly'] = {};\nAWS.Polly = Service.defineService('polly', ['2016-06-10']);\nrequire('../lib/services/polly');\nObject.defineProperty(apiLoader.services['polly'], '2016-06-10', {\n get: function get() {\n var model = require('../apis/polly-2016-06-10.min.json');\n model.paginators = require('../apis/polly-2016-06-10.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.Polly;\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nexport default class Log {\n constructor(\n public sequenceNumber: number,\n public message: string,\n public timestampMs: number,\n public logLevel: string\n ) {}\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\n/**\n * [[MeetingSessionVideoAvailability]] contains the video availability information.\n */\nexport default class MeetingSessionVideoAvailability {\n /**\n * Indicates whether one or more remote video streams\n * are available for streaming. This can be used to decide whether or not to\n * switch the connection type to include video.\n */\n remoteVideoAvailable: boolean = false;\n\n /**\n * Indicates whether the server has a slot available for\n * this client's local video tile. If the client is already sending a local\n * video tile, then this will be true. This property can be used to decide\n * whether to offer the option to start the local video tile.\n */\n canStartLocalVideo: boolean = false;\n\n /**\n * Returns whether the fields are the same as that of another availability object.\n */\n equal(other: MeetingSessionVideoAvailability): boolean {\n return (\n this.remoteVideoAvailable === other.remoteVideoAvailable &&\n this.canStartLocalVideo === other.canStartLocalVideo\n );\n }\n\n /**\n * Returns a deep copy of this object.\n */\n clone(): MeetingSessionVideoAvailability {\n const cloned = new MeetingSessionVideoAvailability();\n cloned.remoteVideoAvailable = this.remoteVideoAvailable;\n cloned.canStartLocalVideo = this.canStartLocalVideo;\n return cloned;\n }\n}\n","var AWS = require('../core');\nvar util = require('../util');\nvar Rest = require('./rest');\nvar Json = require('./json');\nvar JsonBuilder = require('../json/builder');\nvar JsonParser = require('../json/parser');\n\nvar METHODS_WITHOUT_BODY = ['GET', 'HEAD', 'DELETE'];\n\nfunction unsetContentLength(req) {\n var payloadMember = util.getRequestPayloadShape(req);\n if (\n payloadMember === undefined &&\n METHODS_WITHOUT_BODY.indexOf(req.httpRequest.method) >= 0\n ) {\n delete req.httpRequest.headers['Content-Length'];\n }\n}\n\nfunction populateBody(req) {\n var builder = new JsonBuilder();\n var input = req.service.api.operations[req.operation].input;\n\n if (input.payload) {\n var params = {};\n var payloadShape = input.members[input.payload];\n params = req.params[input.payload];\n\n if (payloadShape.type === 'structure') {\n req.httpRequest.body = builder.build(params || {}, payloadShape);\n applyContentTypeHeader(req);\n } else if (params !== undefined) {\n // non-JSON payload\n req.httpRequest.body = params;\n if (payloadShape.type === 'binary' || payloadShape.isStreaming) {\n applyContentTypeHeader(req, true);\n }\n }\n } else {\n req.httpRequest.body = builder.build(req.params, input);\n applyContentTypeHeader(req);\n }\n}\n\nfunction applyContentTypeHeader(req, isBinary) {\n if (!req.httpRequest.headers['Content-Type']) {\n var type = isBinary ? 'binary/octet-stream' : 'application/json';\n req.httpRequest.headers['Content-Type'] = type;\n }\n}\n\nfunction buildRequest(req) {\n Rest.buildRequest(req);\n\n // never send body payload on GET/HEAD/DELETE\n if (METHODS_WITHOUT_BODY.indexOf(req.httpRequest.method) < 0) {\n populateBody(req);\n }\n}\n\nfunction extractError(resp) {\n Json.extractError(resp);\n}\n\nfunction extractData(resp) {\n Rest.extractData(resp);\n\n var req = resp.request;\n var operation = req.service.api.operations[req.operation];\n var rules = req.service.api.operations[req.operation].output || {};\n var parser;\n var hasEventOutput = operation.hasEventOutput;\n\n if (rules.payload) {\n var payloadMember = rules.members[rules.payload];\n var body = resp.httpResponse.body;\n if (payloadMember.isEventStream) {\n parser = new JsonParser();\n resp.data[rules.payload] = util.createEventStream(\n AWS.HttpClient.streamsApiVersion === 2 ? resp.httpResponse.stream : body,\n parser,\n payloadMember\n );\n } else if (payloadMember.type === 'structure' || payloadMember.type === 'list') {\n var parser = new JsonParser();\n resp.data[rules.payload] = parser.parse(body, payloadMember);\n } else if (payloadMember.type === 'binary' || payloadMember.isStreaming) {\n resp.data[rules.payload] = body;\n } else {\n resp.data[rules.payload] = payloadMember.toType(body);\n }\n } else {\n var data = resp.data;\n Json.extractData(resp);\n resp.data = util.merge(data, resp.data);\n }\n}\n\n/**\n * @api private\n */\nmodule.exports = {\n buildRequest: buildRequest,\n extractError: extractError,\n extractData: extractData,\n unsetContentLength: unsetContentLength\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nexport default class GetUserMediaError extends Error {\n constructor(public cause?: Error, message?: string) {\n super(message || 'Error fetching device.');\n this.name = 'GetUserMediaError';\n }\n}\n","\"use strict\";\r\nmodule.exports = EventEmitter;\r\n\r\n/**\r\n * Constructs a new event emitter instance.\r\n * @classdesc A minimal event emitter.\r\n * @memberof util\r\n * @constructor\r\n */\r\nfunction EventEmitter() {\r\n\r\n /**\r\n * Registered listeners.\r\n * @type {Object.}\r\n * @private\r\n */\r\n this._listeners = {};\r\n}\r\n\r\n/**\r\n * Registers an event listener.\r\n * @param {string} evt Event name\r\n * @param {function} fn Listener\r\n * @param {*} [ctx] Listener context\r\n * @returns {util.EventEmitter} `this`\r\n */\r\nEventEmitter.prototype.on = function on(evt, fn, ctx) {\r\n (this._listeners[evt] || (this._listeners[evt] = [])).push({\r\n fn : fn,\r\n ctx : ctx || this\r\n });\r\n return this;\r\n};\r\n\r\n/**\r\n * Removes an event listener or any matching listeners if arguments are omitted.\r\n * @param {string} [evt] Event name. Removes all listeners if omitted.\r\n * @param {function} [fn] Listener to remove. Removes all listeners of `evt` if omitted.\r\n * @returns {util.EventEmitter} `this`\r\n */\r\nEventEmitter.prototype.off = function off(evt, fn) {\r\n if (evt === undefined)\r\n this._listeners = {};\r\n else {\r\n if (fn === undefined)\r\n this._listeners[evt] = [];\r\n else {\r\n var listeners = this._listeners[evt];\r\n for (var i = 0; i < listeners.length;)\r\n if (listeners[i].fn === fn)\r\n listeners.splice(i, 1);\r\n else\r\n ++i;\r\n }\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * Emits an event by calling its listeners with the specified arguments.\r\n * @param {string} evt Event name\r\n * @param {...*} args Arguments\r\n * @returns {util.EventEmitter} `this`\r\n */\r\nEventEmitter.prototype.emit = function emit(evt) {\r\n var listeners = this._listeners[evt];\r\n if (listeners) {\r\n var args = [],\r\n i = 1;\r\n for (; i < arguments.length;)\r\n args.push(arguments[i++]);\r\n for (i = 0; i < listeners.length;)\r\n listeners[i].fn.apply(listeners[i++].ctx, args);\r\n }\r\n return this;\r\n};\r\n","/*!\n Copyright (c) 2015 Jed Watson.\n Based on code that is Copyright 2013-2015, Facebook, Inc.\n All rights reserved.\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar canUseDOM = !!(\n\t\ttypeof window !== 'undefined' &&\n\t\twindow.document &&\n\t\twindow.document.createElement\n\t);\n\n\tvar ExecutionEnvironment = {\n\n\t\tcanUseDOM: canUseDOM,\n\n\t\tcanUseWorkers: typeof Worker !== 'undefined',\n\n\t\tcanUseEventListeners:\n\t\t\tcanUseDOM && !!(window.addEventListener || window.attachEvent),\n\n\t\tcanUseViewport: canUseDOM && !!window.screen\n\n\t};\n\n\tif (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\tdefine(function () {\n\t\t\treturn ExecutionEnvironment;\n\t\t});\n\t} else if (typeof module !== 'undefined' && module.exports) {\n\t\tmodule.exports = ExecutionEnvironment;\n\t} else {\n\t\twindow.ExecutionEnvironment = ExecutionEnvironment;\n\t}\n\n}());\n","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';\n\n// Polyfill stable language features.\n// It's recommended to use @babel/preset-env and browserslist\n// to only include the polyfills necessary for the target browsers.\nrequire('core-js/stable');\nrequire('regenerator-runtime/runtime');\n","var AWS = require('../core');\n\n/**\n * @api private\n */\nvar service = null;\n\n/**\n * @api private\n */\nvar api = {\n signatureVersion: 'v4',\n signingName: 'rds-db',\n operations: {}\n};\n\n/**\n * @api private\n */\nvar requiredAuthTokenOptions = {\n region: 'string',\n hostname: 'string',\n port: 'number',\n username: 'string'\n};\n\n/**\n * A signer object can be used to generate an auth token to a database.\n */\nAWS.RDS.Signer = AWS.util.inherit({\n /**\n * Creates a signer object can be used to generate an auth token.\n *\n * @option options credentials [AWS.Credentials] the AWS credentials\n * to sign requests with. Uses the default credential provider chain\n * if not specified.\n * @option options hostname [String] the hostname of the database to connect to.\n * @option options port [Number] the port number the database is listening on.\n * @option options region [String] the region the database is located in.\n * @option options username [String] the username to login as.\n * @example Passing in options to constructor\n * var signer = new AWS.RDS.Signer({\n * credentials: new AWS.SharedIniFileCredentials({profile: 'default'}),\n * region: 'us-east-1',\n * hostname: 'db.us-east-1.rds.amazonaws.com',\n * port: 8000,\n * username: 'name'\n * });\n */\n constructor: function Signer(options) {\n this.options = options || {};\n },\n\n /**\n * @api private\n * Strips the protocol from a url.\n */\n convertUrlToAuthToken: function convertUrlToAuthToken(url) {\n // we are always using https as the protocol\n var protocol = 'https://';\n if (url.indexOf(protocol) === 0) {\n return url.substring(protocol.length);\n }\n },\n\n /**\n * @overload getAuthToken(options = {}, [callback])\n * Generate an auth token to a database.\n * @note You must ensure that you have static or previously resolved\n * credentials if you call this method synchronously (with no callback),\n * otherwise it may not properly sign the request. If you cannot guarantee\n * this (you are using an asynchronous credential provider, i.e., EC2\n * IAM roles), you should always call this method with an asynchronous\n * callback.\n *\n * @param options [map] The fields to use when generating an auth token.\n * Any options specified here will be merged on top of any options passed\n * to AWS.RDS.Signer:\n *\n * * **credentials** (AWS.Credentials) — the AWS credentials\n * to sign requests with. Uses the default credential provider chain\n * if not specified.\n * * **hostname** (String) — the hostname of the database to connect to.\n * * **port** (Number) — the port number the database is listening on.\n * * **region** (String) — the region the database is located in.\n * * **username** (String) — the username to login as.\n * @return [String] if called synchronously (with no callback), returns the\n * auth token.\n * @return [null] nothing is returned if a callback is provided.\n * @callback callback function (err, token)\n * If a callback is supplied, it is called when an auth token has been generated.\n * @param err [Error] the error object returned from the signer.\n * @param token [String] the auth token.\n *\n * @example Generating an auth token synchronously\n * var signer = new AWS.RDS.Signer({\n * // configure options\n * region: 'us-east-1',\n * username: 'default',\n * hostname: 'db.us-east-1.amazonaws.com',\n * port: 8000\n * });\n * var token = signer.getAuthToken({\n * // these options are merged with those defined when creating the signer, overriding in the case of a duplicate option\n * // credentials are not specified here or when creating the signer, so default credential provider will be used\n * username: 'test' // overriding username\n * });\n * @example Generating an auth token asynchronously\n * var signer = new AWS.RDS.Signer({\n * // configure options\n * region: 'us-east-1',\n * username: 'default',\n * hostname: 'db.us-east-1.amazonaws.com',\n * port: 8000\n * });\n * signer.getAuthToken({\n * // these options are merged with those defined when creating the signer, overriding in the case of a duplicate option\n * // credentials are not specified here or when creating the signer, so default credential provider will be used\n * username: 'test' // overriding username\n * }, function(err, token) {\n * if (err) {\n * // handle error\n * } else {\n * // use token\n * }\n * });\n *\n */\n getAuthToken: function getAuthToken(options, callback) {\n if (typeof options === 'function' && callback === undefined) {\n callback = options;\n options = {};\n }\n var self = this;\n var hasCallback = typeof callback === 'function';\n // merge options with existing options\n options = AWS.util.merge(this.options, options);\n // validate options\n var optionsValidation = this.validateAuthTokenOptions(options);\n if (optionsValidation !== true) {\n if (hasCallback) {\n return callback(optionsValidation, null);\n }\n throw optionsValidation;\n }\n\n // 15 minutes\n var expires = 900;\n // create service to generate a request from\n var serviceOptions = {\n region: options.region,\n endpoint: new AWS.Endpoint(options.hostname + ':' + options.port),\n paramValidation: false,\n signatureVersion: 'v4'\n };\n if (options.credentials) {\n serviceOptions.credentials = options.credentials;\n }\n service = new AWS.Service(serviceOptions);\n // ensure the SDK is using sigv4 signing (config is not enough)\n service.api = api;\n\n var request = service.makeRequest();\n // add listeners to request to properly build auth token\n this.modifyRequestForAuthToken(request, options);\n\n if (hasCallback) {\n request.presign(expires, function(err, url) {\n if (url) {\n url = self.convertUrlToAuthToken(url);\n }\n callback(err, url);\n });\n } else {\n var url = request.presign(expires);\n return this.convertUrlToAuthToken(url);\n }\n },\n\n /**\n * @api private\n * Modifies a request to allow the presigner to generate an auth token.\n */\n modifyRequestForAuthToken: function modifyRequestForAuthToken(request, options) {\n request.on('build', request.buildAsGet);\n var httpRequest = request.httpRequest;\n httpRequest.body = AWS.util.queryParamsToString({\n Action: 'connect',\n DBUser: options.username\n });\n },\n\n /**\n * @api private\n * Validates that the options passed in contain all the keys with values of the correct type that\n * are needed to generate an auth token.\n */\n validateAuthTokenOptions: function validateAuthTokenOptions(options) {\n // iterate over all keys in options\n var message = '';\n options = options || {};\n for (var key in requiredAuthTokenOptions) {\n if (!Object.prototype.hasOwnProperty.call(requiredAuthTokenOptions, key)) {\n continue;\n }\n if (typeof options[key] !== requiredAuthTokenOptions[key]) {\n message += 'option \\'' + key + '\\' should have been type \\'' + requiredAuthTokenOptions[key] + '\\', was \\'' + typeof options[key] + '\\'.\\n';\n }\n }\n if (message.length) {\n return AWS.util.error(new Error(), {\n code: 'InvalidParameter',\n message: message\n });\n }\n return true;\n }\n});\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['amp'] = {};\nAWS.Amp = Service.defineService('amp', ['2020-08-01']);\nObject.defineProperty(apiLoader.services['amp'], '2020-08-01', {\n get: function get() {\n var model = require('../apis/amp-2020-08-01.min.json');\n model.paginators = require('../apis/amp-2020-08-01.paginators.json').pagination;\n model.waiters = require('../apis/amp-2020-08-01.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.Amp;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['kinesisvideoarchivedmedia'] = {};\nAWS.KinesisVideoArchivedMedia = Service.defineService('kinesisvideoarchivedmedia', ['2017-09-30']);\nObject.defineProperty(apiLoader.services['kinesisvideoarchivedmedia'], '2017-09-30', {\n get: function get() {\n var model = require('../apis/kinesis-video-archived-media-2017-09-30.min.json');\n model.paginators = require('../apis/kinesis-video-archived-media-2017-09-30.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.KinesisVideoArchivedMedia;\n","\"use strict\";\n\n/**\n * Streaming RPC helpers.\n * @namespace\n */\nvar rpc = exports;\n\n/**\n * RPC implementation passed to {@link Service#create} performing a service request on network level, i.e. by utilizing http requests or websockets.\n * @typedef RPCImpl\n * @type {function}\n * @param {Method|rpc.ServiceMethod,Message<{}>>} method Reflected or static method being called\n * @param {Uint8Array} requestData Request data\n * @param {RPCImplCallback} callback Callback function\n * @returns {undefined}\n * @example\n * function rpcImpl(method, requestData, callback) {\n * if (protobuf.util.lcFirst(method.name) !== \"myMethod\") // compatible with static code\n * throw Error(\"no such method\");\n * asynchronouslyObtainAResponse(requestData, function(err, responseData) {\n * callback(err, responseData);\n * });\n * }\n */\n\n/**\n * Node-style callback as used by {@link RPCImpl}.\n * @typedef RPCImplCallback\n * @type {function}\n * @param {Error|null} error Error, if any, otherwise `null`\n * @param {Uint8Array|null} [response] Response data or `null` to signal end of stream, if there hasn't been an error\n * @returns {undefined}\n */\n\nrpc.Service = require(\"./rpc/service\");\n","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\n/**\n * [[RealtimeVolumeIndicator]] stores the current volume, mute, and\n * signal strength for an attendee.\n */\nexport default class RealtimeVolumeIndicator {\n volume: number | null = null;\n muted: boolean | null = null;\n signalStrength: number | null = null;\n}\n",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var C_enc = C.enc;\n\n\t /**\n\t * Base64 encoding strategy.\n\t */\n\t var Base64 = C_enc.Base64 = {\n\t /**\n\t * Converts a word array to a Base64 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The Base64 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var base64String = CryptoJS.enc.Base64.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\t var map = this._map;\n\n\t // Clamp excess bits\n\t wordArray.clamp();\n\n\t // Convert\n\t var base64Chars = [];\n\t for (var i = 0; i < sigBytes; i += 3) {\n\t var byte1 = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t var byte2 = (words[(i + 1) >>> 2] >>> (24 - ((i + 1) % 4) * 8)) & 0xff;\n\t var byte3 = (words[(i + 2) >>> 2] >>> (24 - ((i + 2) % 4) * 8)) & 0xff;\n\n\t var triplet = (byte1 << 16) | (byte2 << 8) | byte3;\n\n\t for (var j = 0; (j < 4) && (i + j * 0.75 < sigBytes); j++) {\n\t base64Chars.push(map.charAt((triplet >>> (6 * (3 - j))) & 0x3f));\n\t }\n\t }\n\n\t // Add padding\n\t var paddingChar = map.charAt(64);\n\t if (paddingChar) {\n\t while (base64Chars.length % 4) {\n\t base64Chars.push(paddingChar);\n\t }\n\t }\n\n\t return base64Chars.join('');\n\t },\n\n\t /**\n\t * Converts a Base64 string to a word array.\n\t *\n\t * @param {string} base64Str The Base64 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Base64.parse(base64String);\n\t */\n\t parse: function (base64Str) {\n\t // Shortcuts\n\t var base64StrLength = base64Str.length;\n\t var map = this._map;\n\t var reverseMap = this._reverseMap;\n\n\t if (!reverseMap) {\n\t reverseMap = this._reverseMap = [];\n\t for (var j = 0; j < map.length; j++) {\n\t reverseMap[map.charCodeAt(j)] = j;\n\t }\n\t }\n\n\t // Ignore padding\n\t var paddingChar = map.charAt(64);\n\t if (paddingChar) {\n\t var paddingIndex = base64Str.indexOf(paddingChar);\n\t if (paddingIndex !== -1) {\n\t base64StrLength = paddingIndex;\n\t }\n\t }\n\n\t // Convert\n\t return parseLoop(base64Str, base64StrLength, reverseMap);\n\n\t },\n\n\t _map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='\n\t };\n\n\t function parseLoop(base64Str, base64StrLength, reverseMap) {\n\t var words = [];\n\t var nBytes = 0;\n\t for (var i = 0; i < base64StrLength; i++) {\n\t if (i % 4) {\n\t var bits1 = reverseMap[base64Str.charCodeAt(i - 1)] << ((i % 4) * 2);\n\t var bits2 = reverseMap[base64Str.charCodeAt(i)] >>> (6 - (i % 4) * 2);\n\t var bitsCombined = bits1 | bits2;\n\t words[nBytes >>> 2] |= bitsCombined << (24 - (nBytes % 4) * 8);\n\t nBytes++;\n\t }\n\t }\n\t return WordArray.create(words, nBytes);\n\t }\n\t}());\n\n\n\treturn CryptoJS.enc.Base64;\n\n}));","'use strict';\n\nvar fnToStr = Function.prototype.toString;\nvar reflectApply = typeof Reflect === 'object' && Reflect !== null && Reflect.apply;\nvar badArrayLike;\nvar isCallableMarker;\nif (typeof reflectApply === 'function' && typeof Object.defineProperty === 'function') {\n\ttry {\n\t\tbadArrayLike = Object.defineProperty({}, 'length', {\n\t\t\tget: function () {\n\t\t\t\tthrow isCallableMarker;\n\t\t\t}\n\t\t});\n\t\tisCallableMarker = {};\n\t\t// eslint-disable-next-line no-throw-literal\n\t\treflectApply(function () { throw 42; }, null, badArrayLike);\n\t} catch (_) {\n\t\tif (_ !== isCallableMarker) {\n\t\t\treflectApply = null;\n\t\t}\n\t}\n} else {\n\treflectApply = null;\n}\n\nvar constructorRegex = /^\\s*class\\b/;\nvar isES6ClassFn = function isES6ClassFunction(value) {\n\ttry {\n\t\tvar fnStr = fnToStr.call(value);\n\t\treturn constructorRegex.test(fnStr);\n\t} catch (e) {\n\t\treturn false; // not a function\n\t}\n};\n\nvar tryFunctionObject = function tryFunctionToStr(value) {\n\ttry {\n\t\tif (isES6ClassFn(value)) { return false; }\n\t\tfnToStr.call(value);\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\nvar toStr = Object.prototype.toString;\nvar objectClass = '[object Object]';\nvar fnClass = '[object Function]';\nvar genClass = '[object GeneratorFunction]';\nvar ddaClass = '[object HTMLAllCollection]'; // IE 11\nvar ddaClass2 = '[object HTML document.all class]';\nvar ddaClass3 = '[object HTMLCollection]'; // IE 9-10\nvar hasToStringTag = typeof Symbol === 'function' && !!Symbol.toStringTag; // better: use `has-tostringtag`\n\nvar isIE68 = !(0 in [,]); // eslint-disable-line no-sparse-arrays, comma-spacing\n\nvar isDDA = function isDocumentDotAll() { return false; };\nif (typeof document === 'object') {\n\t// Firefox 3 canonicalizes DDA to undefined when it's not accessed directly\n\tvar all = document.all;\n\tif (toStr.call(all) === toStr.call(document.all)) {\n\t\tisDDA = function isDocumentDotAll(value) {\n\t\t\t/* globals document: false */\n\t\t\t// in IE 6-8, typeof document.all is \"object\" and it's truthy\n\t\t\tif ((isIE68 || !value) && (typeof value === 'undefined' || typeof value === 'object')) {\n\t\t\t\ttry {\n\t\t\t\t\tvar str = toStr.call(value);\n\t\t\t\t\treturn (\n\t\t\t\t\t\tstr === ddaClass\n\t\t\t\t\t\t|| str === ddaClass2\n\t\t\t\t\t\t|| str === ddaClass3 // opera 12.16\n\t\t\t\t\t\t|| str === objectClass // IE 6-8\n\t\t\t\t\t) && value('') == null; // eslint-disable-line eqeqeq\n\t\t\t\t} catch (e) { /**/ }\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\t}\n}\n\nmodule.exports = reflectApply\n\t? function isCallable(value) {\n\t\tif (isDDA(value)) { return true; }\n\t\tif (!value) { return false; }\n\t\tif (typeof value !== 'function' && typeof value !== 'object') { return false; }\n\t\ttry {\n\t\t\treflectApply(value, null, badArrayLike);\n\t\t} catch (e) {\n\t\t\tif (e !== isCallableMarker) { return false; }\n\t\t}\n\t\treturn !isES6ClassFn(value) && tryFunctionObject(value);\n\t}\n\t: function isCallable(value) {\n\t\tif (isDDA(value)) { return true; }\n\t\tif (!value) { return false; }\n\t\tif (typeof value !== 'function' && typeof value !== 'object') { return false; }\n\t\tif (hasToStringTag) { return tryFunctionObject(value); }\n\t\tif (isES6ClassFn(value)) { return false; }\n\t\tvar strClass = toStr.call(value);\n\t\tif (strClass !== fnClass && strClass !== genClass && !(/^\\[object HTML/).test(strClass)) { return false; }\n\t\treturn tryFunctionObject(value);\n\t};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['emr'] = {};\nAWS.EMR = Service.defineService('emr', ['2009-03-31']);\nObject.defineProperty(apiLoader.services['emr'], '2009-03-31', {\n get: function get() {\n var model = require('../apis/elasticmapreduce-2009-03-31.min.json');\n model.paginators = require('../apis/elasticmapreduce-2009-03-31.paginators.json').pagination;\n model.waiters = require('../apis/elasticmapreduce-2009-03-31.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.EMR;\n","'use strict';\nvar $ = require('../internals/export');\nvar globalThis = require('../internals/global-this');\nvar setTask = require('../internals/task').set;\nvar schedulersFix = require('../internals/schedulers-fix');\n\n// https://github.com/oven-sh/bun/issues/1633\nvar setImmediate = globalThis.setImmediate ? schedulersFix(setTask, false) : setTask;\n\n// `setImmediate` method\n// http://w3c.github.io/setImmediate/#si-setImmediate\n$({ global: true, bind: true, enumerable: true, forced: globalThis.setImmediate !== setImmediate }, {\n setImmediate: setImmediate\n});\n","'use strict';\nvar ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `Math.trunc` method\n// https://tc39.es/ecma262/#sec-math.trunc\n// eslint-disable-next-line es/no-math-trunc -- safe\nmodule.exports = Math.trunc || function trunc(x) {\n var n = +x;\n return (n > 0 ? floor : ceil)(n);\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar bind = require('../internals/function-bind-context');\nvar aSet = require('../internals/a-set');\nvar SetHelpers = require('../internals/set-helpers');\nvar iterate = require('../internals/set-iterate');\n\nvar Set = SetHelpers.Set;\nvar add = SetHelpers.add;\n\n// `Set.prototype.map` method\n// https://github.com/tc39/proposal-collection-methods\n$({ target: 'Set', proto: true, real: true, forced: true }, {\n map: function map(callbackfn /* , thisArg */) {\n var set = aSet(this);\n var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n var newSet = new Set();\n iterate(set, function (value) {\n add(newSet, boundFunction(value, value, set));\n });\n return newSet;\n }\n});\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nexport enum CheckCameraResolutionFeedback {\n Succeeded,\n Failed,\n ResolutionNotSupported,\n PermissionDenied,\n}\n\nexport default CheckCameraResolutionFeedback;\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar apply = require('../internals/function-apply');\nvar bind = require('../internals/function-bind-context');\nvar isCallable = require('../internals/is-callable');\nvar hasOwn = require('../internals/has-own-property');\nvar fails = require('../internals/fails');\nvar html = require('../internals/html');\nvar arraySlice = require('../internals/array-slice');\nvar createElement = require('../internals/document-create-element');\nvar validateArgumentsLength = require('../internals/validate-arguments-length');\nvar IS_IOS = require('../internals/environment-is-ios');\nvar IS_NODE = require('../internals/environment-is-node');\n\nvar set = globalThis.setImmediate;\nvar clear = globalThis.clearImmediate;\nvar process = globalThis.process;\nvar Dispatch = globalThis.Dispatch;\nvar Function = globalThis.Function;\nvar MessageChannel = globalThis.MessageChannel;\nvar String = globalThis.String;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar $location, defer, channel, port;\n\nfails(function () {\n // Deno throws a ReferenceError on `location` access without `--location` flag\n $location = globalThis.location;\n});\n\nvar run = function (id) {\n if (hasOwn(queue, id)) {\n var fn = queue[id];\n delete queue[id];\n fn();\n }\n};\n\nvar runner = function (id) {\n return function () {\n run(id);\n };\n};\n\nvar eventListener = function (event) {\n run(event.data);\n};\n\nvar globalPostMessageDefer = function (id) {\n // old engines have not location.origin\n globalThis.postMessage(String(id), $location.protocol + '//' + $location.host);\n};\n\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!set || !clear) {\n set = function setImmediate(handler) {\n validateArgumentsLength(arguments.length, 1);\n var fn = isCallable(handler) ? handler : Function(handler);\n var args = arraySlice(arguments, 1);\n queue[++counter] = function () {\n apply(fn, undefined, args);\n };\n defer(counter);\n return counter;\n };\n clear = function clearImmediate(id) {\n delete queue[id];\n };\n // Node.js 0.8-\n if (IS_NODE) {\n defer = function (id) {\n process.nextTick(runner(id));\n };\n // Sphere (JS game engine) Dispatch API\n } else if (Dispatch && Dispatch.now) {\n defer = function (id) {\n Dispatch.now(runner(id));\n };\n // Browsers with MessageChannel, includes WebWorkers\n // except iOS - https://github.com/zloirock/core-js/issues/624\n } else if (MessageChannel && !IS_IOS) {\n channel = new MessageChannel();\n port = channel.port2;\n channel.port1.onmessage = eventListener;\n defer = bind(port.postMessage, port);\n // Browsers with postMessage, skip WebWorkers\n // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n } else if (\n globalThis.addEventListener &&\n isCallable(globalThis.postMessage) &&\n !globalThis.importScripts &&\n $location && $location.protocol !== 'file:' &&\n !fails(globalPostMessageDefer)\n ) {\n defer = globalPostMessageDefer;\n globalThis.addEventListener('message', eventListener, false);\n // IE8-\n } else if (ONREADYSTATECHANGE in createElement('script')) {\n defer = function (id) {\n html.appendChild(createElement('script'))[ONREADYSTATECHANGE] = function () {\n html.removeChild(this);\n run(id);\n };\n };\n // Rest old browsers\n } else {\n defer = function (id) {\n setTimeout(runner(id), 0);\n };\n }\n}\n\nmodule.exports = {\n set: set,\n clear: clear\n};\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['chimesdkidentity'] = {};\nAWS.ChimeSDKIdentity = Service.defineService('chimesdkidentity', ['2021-04-20']);\nObject.defineProperty(apiLoader.services['chimesdkidentity'], '2021-04-20', {\n get: function get() {\n var model = require('../apis/chime-sdk-identity-2021-04-20.min.json');\n model.paginators = require('../apis/chime-sdk-identity-2021-04-20.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.ChimeSDKIdentity;\n","var util = require('../util');\nvar Shape = require('../model/shape');\n\nfunction DomXmlParser() { }\n\nDomXmlParser.prototype.parse = function(xml, shape) {\n if (xml.replace(/^\\s+/, '') === '') return {};\n\n var result, error;\n try {\n if (window.DOMParser) {\n try {\n var parser = new DOMParser();\n result = parser.parseFromString(xml, 'text/xml');\n } catch (syntaxError) {\n throw util.error(new Error('Parse error in document'),\n {\n originalError: syntaxError,\n code: 'XMLParserError',\n retryable: true\n });\n }\n\n if (result.documentElement === null) {\n throw util.error(new Error('Cannot parse empty document.'),\n {\n code: 'XMLParserError',\n retryable: true\n });\n }\n\n var isError = result.getElementsByTagName('parsererror')[0];\n if (isError && (isError.parentNode === result ||\n isError.parentNode.nodeName === 'body' ||\n isError.parentNode.parentNode === result ||\n isError.parentNode.parentNode.nodeName === 'body')) {\n var errorElement = isError.getElementsByTagName('div')[0] || isError;\n throw util.error(new Error(errorElement.textContent || 'Parser error in document'),\n {\n code: 'XMLParserError',\n retryable: true\n });\n }\n } else if (window.ActiveXObject) {\n result = new window.ActiveXObject('Microsoft.XMLDOM');\n result.async = false;\n\n if (!result.loadXML(xml)) {\n throw util.error(new Error('Parse error in document'),\n {\n code: 'XMLParserError',\n retryable: true\n });\n }\n } else {\n throw new Error('Cannot load XML parser');\n }\n } catch (e) {\n error = e;\n }\n\n if (result && result.documentElement && !error) {\n var data = parseXml(result.documentElement, shape);\n var metadata = getElementByTagName(result.documentElement, 'ResponseMetadata');\n if (metadata) {\n data.ResponseMetadata = parseXml(metadata, {});\n }\n return data;\n } else if (error) {\n throw util.error(error || new Error(), {code: 'XMLParserError', retryable: true});\n } else { // empty xml document\n return {};\n }\n};\n\nfunction getElementByTagName(xml, tag) {\n var elements = xml.getElementsByTagName(tag);\n for (var i = 0, iLen = elements.length; i < iLen; i++) {\n if (elements[i].parentNode === xml) {\n return elements[i];\n }\n }\n}\n\nfunction parseXml(xml, shape) {\n if (!shape) shape = {};\n switch (shape.type) {\n case 'structure': return parseStructure(xml, shape);\n case 'map': return parseMap(xml, shape);\n case 'list': return parseList(xml, shape);\n case undefined: case null: return parseUnknown(xml);\n default: return parseScalar(xml, shape);\n }\n}\n\nfunction parseStructure(xml, shape) {\n var data = {};\n if (xml === null) return data;\n\n util.each(shape.members, function(memberName, memberShape) {\n if (memberShape.isXmlAttribute) {\n if (Object.prototype.hasOwnProperty.call(xml.attributes, memberShape.name)) {\n var value = xml.attributes[memberShape.name].value;\n data[memberName] = parseXml({textContent: value}, memberShape);\n }\n } else {\n var xmlChild = memberShape.flattened ? xml :\n getElementByTagName(xml, memberShape.name);\n if (xmlChild) {\n data[memberName] = parseXml(xmlChild, memberShape);\n } else if (\n !memberShape.flattened &&\n memberShape.type === 'list' &&\n !shape.api.xmlNoDefaultLists) {\n data[memberName] = memberShape.defaultValue;\n }\n }\n });\n\n return data;\n}\n\nfunction parseMap(xml, shape) {\n var data = {};\n var xmlKey = shape.key.name || 'key';\n var xmlValue = shape.value.name || 'value';\n var tagName = shape.flattened ? shape.name : 'entry';\n\n var child = xml.firstElementChild;\n while (child) {\n if (child.nodeName === tagName) {\n var key = getElementByTagName(child, xmlKey).textContent;\n var value = getElementByTagName(child, xmlValue);\n data[key] = parseXml(value, shape.value);\n }\n child = child.nextElementSibling;\n }\n return data;\n}\n\nfunction parseList(xml, shape) {\n var data = [];\n var tagName = shape.flattened ? shape.name : (shape.member.name || 'member');\n\n var child = xml.firstElementChild;\n while (child) {\n if (child.nodeName === tagName) {\n data.push(parseXml(child, shape.member));\n }\n child = child.nextElementSibling;\n }\n return data;\n}\n\nfunction parseScalar(xml, shape) {\n if (xml.getAttribute) {\n var encoding = xml.getAttribute('encoding');\n if (encoding === 'base64') {\n shape = new Shape.create({type: encoding});\n }\n }\n\n var text = xml.textContent;\n if (text === '') text = null;\n if (typeof shape.toType === 'function') {\n return shape.toType(text);\n } else {\n return text;\n }\n}\n\nfunction parseUnknown(xml) {\n if (xml === undefined || xml === null) return '';\n\n // empty object\n if (!xml.firstElementChild) {\n if (xml.parentNode.parentNode === null) return {};\n if (xml.childNodes.length === 0) return '';\n else return xml.textContent;\n }\n\n // object, parse as structure\n var shape = {type: 'structure', members: {}};\n var child = xml.firstElementChild;\n while (child) {\n var tag = child.nodeName;\n if (Object.prototype.hasOwnProperty.call(shape.members, tag)) {\n // multiple tags of the same name makes it a list\n shape.members[tag].type = 'list';\n } else {\n shape.members[tag] = {name: tag};\n }\n child = child.nextElementSibling;\n }\n return parseStructure(xml, shape);\n}\n\n/**\n * @api private\n */\nmodule.exports = DomXmlParser;\n","'use strict';\n\n/** @type {import('./eval')} */\nmodule.exports = EvalError;\n","import {\n BLOCK_SIZE,\n DIGEST_LENGTH,\n INIT,\n KEY,\n MAX_HASHABLE_LENGTH\n} from \"./constants\";\n\n/**\n * @internal\n */\nexport class RawSha256 {\n private state: Int32Array = Int32Array.from(INIT);\n private temp: Int32Array = new Int32Array(64);\n private buffer: Uint8Array = new Uint8Array(64);\n private bufferLength: number = 0;\n private bytesHashed: number = 0;\n\n /**\n * @internal\n */\n finished: boolean = false;\n\n update(data: Uint8Array): void {\n if (this.finished) {\n throw new Error(\"Attempted to update an already finished hash.\");\n }\n\n let position = 0;\n let { byteLength } = data;\n this.bytesHashed += byteLength;\n\n if (this.bytesHashed * 8 > MAX_HASHABLE_LENGTH) {\n throw new Error(\"Cannot hash more than 2^53 - 1 bits\");\n }\n\n while (byteLength > 0) {\n this.buffer[this.bufferLength++] = data[position++];\n byteLength--;\n\n if (this.bufferLength === BLOCK_SIZE) {\n this.hashBuffer();\n this.bufferLength = 0;\n }\n }\n }\n\n digest(): Uint8Array {\n if (!this.finished) {\n const bitsHashed = this.bytesHashed * 8;\n const bufferView = new DataView(\n this.buffer.buffer,\n this.buffer.byteOffset,\n this.buffer.byteLength\n );\n\n const undecoratedLength = this.bufferLength;\n bufferView.setUint8(this.bufferLength++, 0x80);\n\n // Ensure the final block has enough room for the hashed length\n if (undecoratedLength % BLOCK_SIZE >= BLOCK_SIZE - 8) {\n for (let i = this.bufferLength; i < BLOCK_SIZE; i++) {\n bufferView.setUint8(i, 0);\n }\n this.hashBuffer();\n this.bufferLength = 0;\n }\n\n for (let i = this.bufferLength; i < BLOCK_SIZE - 8; i++) {\n bufferView.setUint8(i, 0);\n }\n bufferView.setUint32(\n BLOCK_SIZE - 8,\n Math.floor(bitsHashed / 0x100000000),\n true\n );\n bufferView.setUint32(BLOCK_SIZE - 4, bitsHashed);\n\n this.hashBuffer();\n\n this.finished = true;\n }\n\n // The value in state is little-endian rather than big-endian, so flip\n // each word into a new Uint8Array\n const out = new Uint8Array(DIGEST_LENGTH);\n for (let i = 0; i < 8; i++) {\n out[i * 4] = (this.state[i] >>> 24) & 0xff;\n out[i * 4 + 1] = (this.state[i] >>> 16) & 0xff;\n out[i * 4 + 2] = (this.state[i] >>> 8) & 0xff;\n out[i * 4 + 3] = (this.state[i] >>> 0) & 0xff;\n }\n\n return out;\n }\n\n private hashBuffer(): void {\n const { buffer, state } = this;\n\n let state0 = state[0],\n state1 = state[1],\n state2 = state[2],\n state3 = state[3],\n state4 = state[4],\n state5 = state[5],\n state6 = state[6],\n state7 = state[7];\n\n for (let i = 0; i < BLOCK_SIZE; i++) {\n if (i < 16) {\n this.temp[i] =\n ((buffer[i * 4] & 0xff) << 24) |\n ((buffer[i * 4 + 1] & 0xff) << 16) |\n ((buffer[i * 4 + 2] & 0xff) << 8) |\n (buffer[i * 4 + 3] & 0xff);\n } else {\n let u = this.temp[i - 2];\n const t1 =\n ((u >>> 17) | (u << 15)) ^ ((u >>> 19) | (u << 13)) ^ (u >>> 10);\n\n u = this.temp[i - 15];\n const t2 =\n ((u >>> 7) | (u << 25)) ^ ((u >>> 18) | (u << 14)) ^ (u >>> 3);\n\n this.temp[i] =\n ((t1 + this.temp[i - 7]) | 0) + ((t2 + this.temp[i - 16]) | 0);\n }\n\n const t1 =\n ((((((state4 >>> 6) | (state4 << 26)) ^\n ((state4 >>> 11) | (state4 << 21)) ^\n ((state4 >>> 25) | (state4 << 7))) +\n ((state4 & state5) ^ (~state4 & state6))) |\n 0) +\n ((state7 + ((KEY[i] + this.temp[i]) | 0)) | 0)) |\n 0;\n\n const t2 =\n ((((state0 >>> 2) | (state0 << 30)) ^\n ((state0 >>> 13) | (state0 << 19)) ^\n ((state0 >>> 22) | (state0 << 10))) +\n ((state0 & state1) ^ (state0 & state2) ^ (state1 & state2))) |\n 0;\n\n state7 = state6;\n state6 = state5;\n state5 = state4;\n state4 = (state3 + t1) | 0;\n state3 = state2;\n state2 = state1;\n state1 = state0;\n state0 = (t1 + t2) | 0;\n }\n\n state[0] += state0;\n state[1] += state1;\n state[2] += state2;\n state[3] += state3;\n state[4] += state4;\n state[5] += state5;\n state[6] += state6;\n state[7] += state7;\n }\n}\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['cloudtrail'] = {};\nAWS.CloudTrail = Service.defineService('cloudtrail', ['2013-11-01']);\nObject.defineProperty(apiLoader.services['cloudtrail'], '2013-11-01', {\n get: function get() {\n var model = require('../apis/cloudtrail-2013-11-01.min.json');\n model.paginators = require('../apis/cloudtrail-2013-11-01.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.CloudTrail;\n","\"use strict\";\r\n\r\nmodule.exports = factory(factory);\r\n\r\n/**\r\n * Reads / writes floats / doubles from / to buffers.\r\n * @name util.float\r\n * @namespace\r\n */\r\n\r\n/**\r\n * Writes a 32 bit float to a buffer using little endian byte order.\r\n * @name util.float.writeFloatLE\r\n * @function\r\n * @param {number} val Value to write\r\n * @param {Uint8Array} buf Target buffer\r\n * @param {number} pos Target buffer offset\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Writes a 32 bit float to a buffer using big endian byte order.\r\n * @name util.float.writeFloatBE\r\n * @function\r\n * @param {number} val Value to write\r\n * @param {Uint8Array} buf Target buffer\r\n * @param {number} pos Target buffer offset\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Reads a 32 bit float from a buffer using little endian byte order.\r\n * @name util.float.readFloatLE\r\n * @function\r\n * @param {Uint8Array} buf Source buffer\r\n * @param {number} pos Source buffer offset\r\n * @returns {number} Value read\r\n */\r\n\r\n/**\r\n * Reads a 32 bit float from a buffer using big endian byte order.\r\n * @name util.float.readFloatBE\r\n * @function\r\n * @param {Uint8Array} buf Source buffer\r\n * @param {number} pos Source buffer offset\r\n * @returns {number} Value read\r\n */\r\n\r\n/**\r\n * Writes a 64 bit double to a buffer using little endian byte order.\r\n * @name util.float.writeDoubleLE\r\n * @function\r\n * @param {number} val Value to write\r\n * @param {Uint8Array} buf Target buffer\r\n * @param {number} pos Target buffer offset\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Writes a 64 bit double to a buffer using big endian byte order.\r\n * @name util.float.writeDoubleBE\r\n * @function\r\n * @param {number} val Value to write\r\n * @param {Uint8Array} buf Target buffer\r\n * @param {number} pos Target buffer offset\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Reads a 64 bit double from a buffer using little endian byte order.\r\n * @name util.float.readDoubleLE\r\n * @function\r\n * @param {Uint8Array} buf Source buffer\r\n * @param {number} pos Source buffer offset\r\n * @returns {number} Value read\r\n */\r\n\r\n/**\r\n * Reads a 64 bit double from a buffer using big endian byte order.\r\n * @name util.float.readDoubleBE\r\n * @function\r\n * @param {Uint8Array} buf Source buffer\r\n * @param {number} pos Source buffer offset\r\n * @returns {number} Value read\r\n */\r\n\r\n// Factory function for the purpose of node-based testing in modified global environments\r\nfunction factory(exports) {\r\n\r\n // float: typed array\r\n if (typeof Float32Array !== \"undefined\") (function() {\r\n\r\n var f32 = new Float32Array([ -0 ]),\r\n f8b = new Uint8Array(f32.buffer),\r\n le = f8b[3] === 128;\r\n\r\n function writeFloat_f32_cpy(val, buf, pos) {\r\n f32[0] = val;\r\n buf[pos ] = f8b[0];\r\n buf[pos + 1] = f8b[1];\r\n buf[pos + 2] = f8b[2];\r\n buf[pos + 3] = f8b[3];\r\n }\r\n\r\n function writeFloat_f32_rev(val, buf, pos) {\r\n f32[0] = val;\r\n buf[pos ] = f8b[3];\r\n buf[pos + 1] = f8b[2];\r\n buf[pos + 2] = f8b[1];\r\n buf[pos + 3] = f8b[0];\r\n }\r\n\r\n /* istanbul ignore next */\r\n exports.writeFloatLE = le ? writeFloat_f32_cpy : writeFloat_f32_rev;\r\n /* istanbul ignore next */\r\n exports.writeFloatBE = le ? writeFloat_f32_rev : writeFloat_f32_cpy;\r\n\r\n function readFloat_f32_cpy(buf, pos) {\r\n f8b[0] = buf[pos ];\r\n f8b[1] = buf[pos + 1];\r\n f8b[2] = buf[pos + 2];\r\n f8b[3] = buf[pos + 3];\r\n return f32[0];\r\n }\r\n\r\n function readFloat_f32_rev(buf, pos) {\r\n f8b[3] = buf[pos ];\r\n f8b[2] = buf[pos + 1];\r\n f8b[1] = buf[pos + 2];\r\n f8b[0] = buf[pos + 3];\r\n return f32[0];\r\n }\r\n\r\n /* istanbul ignore next */\r\n exports.readFloatLE = le ? readFloat_f32_cpy : readFloat_f32_rev;\r\n /* istanbul ignore next */\r\n exports.readFloatBE = le ? readFloat_f32_rev : readFloat_f32_cpy;\r\n\r\n // float: ieee754\r\n })(); else (function() {\r\n\r\n function writeFloat_ieee754(writeUint, val, buf, pos) {\r\n var sign = val < 0 ? 1 : 0;\r\n if (sign)\r\n val = -val;\r\n if (val === 0)\r\n writeUint(1 / val > 0 ? /* positive */ 0 : /* negative 0 */ 2147483648, buf, pos);\r\n else if (isNaN(val))\r\n writeUint(2143289344, buf, pos);\r\n else if (val > 3.4028234663852886e+38) // +-Infinity\r\n writeUint((sign << 31 | 2139095040) >>> 0, buf, pos);\r\n else if (val < 1.1754943508222875e-38) // denormal\r\n writeUint((sign << 31 | Math.round(val / 1.401298464324817e-45)) >>> 0, buf, pos);\r\n else {\r\n var exponent = Math.floor(Math.log(val) / Math.LN2),\r\n mantissa = Math.round(val * Math.pow(2, -exponent) * 8388608) & 8388607;\r\n writeUint((sign << 31 | exponent + 127 << 23 | mantissa) >>> 0, buf, pos);\r\n }\r\n }\r\n\r\n exports.writeFloatLE = writeFloat_ieee754.bind(null, writeUintLE);\r\n exports.writeFloatBE = writeFloat_ieee754.bind(null, writeUintBE);\r\n\r\n function readFloat_ieee754(readUint, buf, pos) {\r\n var uint = readUint(buf, pos),\r\n sign = (uint >> 31) * 2 + 1,\r\n exponent = uint >>> 23 & 255,\r\n mantissa = uint & 8388607;\r\n return exponent === 255\r\n ? mantissa\r\n ? NaN\r\n : sign * Infinity\r\n : exponent === 0 // denormal\r\n ? sign * 1.401298464324817e-45 * mantissa\r\n : sign * Math.pow(2, exponent - 150) * (mantissa + 8388608);\r\n }\r\n\r\n exports.readFloatLE = readFloat_ieee754.bind(null, readUintLE);\r\n exports.readFloatBE = readFloat_ieee754.bind(null, readUintBE);\r\n\r\n })();\r\n\r\n // double: typed array\r\n if (typeof Float64Array !== \"undefined\") (function() {\r\n\r\n var f64 = new Float64Array([-0]),\r\n f8b = new Uint8Array(f64.buffer),\r\n le = f8b[7] === 128;\r\n\r\n function writeDouble_f64_cpy(val, buf, pos) {\r\n f64[0] = val;\r\n buf[pos ] = f8b[0];\r\n buf[pos + 1] = f8b[1];\r\n buf[pos + 2] = f8b[2];\r\n buf[pos + 3] = f8b[3];\r\n buf[pos + 4] = f8b[4];\r\n buf[pos + 5] = f8b[5];\r\n buf[pos + 6] = f8b[6];\r\n buf[pos + 7] = f8b[7];\r\n }\r\n\r\n function writeDouble_f64_rev(val, buf, pos) {\r\n f64[0] = val;\r\n buf[pos ] = f8b[7];\r\n buf[pos + 1] = f8b[6];\r\n buf[pos + 2] = f8b[5];\r\n buf[pos + 3] = f8b[4];\r\n buf[pos + 4] = f8b[3];\r\n buf[pos + 5] = f8b[2];\r\n buf[pos + 6] = f8b[1];\r\n buf[pos + 7] = f8b[0];\r\n }\r\n\r\n /* istanbul ignore next */\r\n exports.writeDoubleLE = le ? writeDouble_f64_cpy : writeDouble_f64_rev;\r\n /* istanbul ignore next */\r\n exports.writeDoubleBE = le ? writeDouble_f64_rev : writeDouble_f64_cpy;\r\n\r\n function readDouble_f64_cpy(buf, pos) {\r\n f8b[0] = buf[pos ];\r\n f8b[1] = buf[pos + 1];\r\n f8b[2] = buf[pos + 2];\r\n f8b[3] = buf[pos + 3];\r\n f8b[4] = buf[pos + 4];\r\n f8b[5] = buf[pos + 5];\r\n f8b[6] = buf[pos + 6];\r\n f8b[7] = buf[pos + 7];\r\n return f64[0];\r\n }\r\n\r\n function readDouble_f64_rev(buf, pos) {\r\n f8b[7] = buf[pos ];\r\n f8b[6] = buf[pos + 1];\r\n f8b[5] = buf[pos + 2];\r\n f8b[4] = buf[pos + 3];\r\n f8b[3] = buf[pos + 4];\r\n f8b[2] = buf[pos + 5];\r\n f8b[1] = buf[pos + 6];\r\n f8b[0] = buf[pos + 7];\r\n return f64[0];\r\n }\r\n\r\n /* istanbul ignore next */\r\n exports.readDoubleLE = le ? readDouble_f64_cpy : readDouble_f64_rev;\r\n /* istanbul ignore next */\r\n exports.readDoubleBE = le ? readDouble_f64_rev : readDouble_f64_cpy;\r\n\r\n // double: ieee754\r\n })(); else (function() {\r\n\r\n function writeDouble_ieee754(writeUint, off0, off1, val, buf, pos) {\r\n var sign = val < 0 ? 1 : 0;\r\n if (sign)\r\n val = -val;\r\n if (val === 0) {\r\n writeUint(0, buf, pos + off0);\r\n writeUint(1 / val > 0 ? /* positive */ 0 : /* negative 0 */ 2147483648, buf, pos + off1);\r\n } else if (isNaN(val)) {\r\n writeUint(0, buf, pos + off0);\r\n writeUint(2146959360, buf, pos + off1);\r\n } else if (val > 1.7976931348623157e+308) { // +-Infinity\r\n writeUint(0, buf, pos + off0);\r\n writeUint((sign << 31 | 2146435072) >>> 0, buf, pos + off1);\r\n } else {\r\n var mantissa;\r\n if (val < 2.2250738585072014e-308) { // denormal\r\n mantissa = val / 5e-324;\r\n writeUint(mantissa >>> 0, buf, pos + off0);\r\n writeUint((sign << 31 | mantissa / 4294967296) >>> 0, buf, pos + off1);\r\n } else {\r\n var exponent = Math.floor(Math.log(val) / Math.LN2);\r\n if (exponent === 1024)\r\n exponent = 1023;\r\n mantissa = val * Math.pow(2, -exponent);\r\n writeUint(mantissa * 4503599627370496 >>> 0, buf, pos + off0);\r\n writeUint((sign << 31 | exponent + 1023 << 20 | mantissa * 1048576 & 1048575) >>> 0, buf, pos + off1);\r\n }\r\n }\r\n }\r\n\r\n exports.writeDoubleLE = writeDouble_ieee754.bind(null, writeUintLE, 0, 4);\r\n exports.writeDoubleBE = writeDouble_ieee754.bind(null, writeUintBE, 4, 0);\r\n\r\n function readDouble_ieee754(readUint, off0, off1, buf, pos) {\r\n var lo = readUint(buf, pos + off0),\r\n hi = readUint(buf, pos + off1);\r\n var sign = (hi >> 31) * 2 + 1,\r\n exponent = hi >>> 20 & 2047,\r\n mantissa = 4294967296 * (hi & 1048575) + lo;\r\n return exponent === 2047\r\n ? mantissa\r\n ? NaN\r\n : sign * Infinity\r\n : exponent === 0 // denormal\r\n ? sign * 5e-324 * mantissa\r\n : sign * Math.pow(2, exponent - 1075) * (mantissa + 4503599627370496);\r\n }\r\n\r\n exports.readDoubleLE = readDouble_ieee754.bind(null, readUintLE, 0, 4);\r\n exports.readDoubleBE = readDouble_ieee754.bind(null, readUintBE, 4, 0);\r\n\r\n })();\r\n\r\n return exports;\r\n}\r\n\r\n// uint helpers\r\n\r\nfunction writeUintLE(val, buf, pos) {\r\n buf[pos ] = val & 255;\r\n buf[pos + 1] = val >>> 8 & 255;\r\n buf[pos + 2] = val >>> 16 & 255;\r\n buf[pos + 3] = val >>> 24;\r\n}\r\n\r\nfunction writeUintBE(val, buf, pos) {\r\n buf[pos ] = val >>> 24;\r\n buf[pos + 1] = val >>> 16 & 255;\r\n buf[pos + 2] = val >>> 8 & 255;\r\n buf[pos + 3] = val & 255;\r\n}\r\n\r\nfunction readUintLE(buf, pos) {\r\n return (buf[pos ]\r\n | buf[pos + 1] << 8\r\n | buf[pos + 2] << 16\r\n | buf[pos + 3] << 24) >>> 0;\r\n}\r\n\r\nfunction readUintBE(buf, pos) {\r\n return (buf[pos ] << 24\r\n | buf[pos + 1] << 16\r\n | buf[pos + 2] << 8\r\n | buf[pos + 3]) >>> 0;\r\n}\r\n","'use strict';\n\nvar reactIs = require('react-is');\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromError: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\nvar FORWARD_REF_STATICS = {\n '$$typeof': true,\n render: true,\n defaultProps: true,\n displayName: true,\n propTypes: true\n};\nvar MEMO_STATICS = {\n '$$typeof': true,\n compare: true,\n defaultProps: true,\n displayName: true,\n propTypes: true,\n type: true\n};\nvar TYPE_STATICS = {};\nTYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\nTYPE_STATICS[reactIs.Memo] = MEMO_STATICS;\n\nfunction getStatics(component) {\n // React v16.11 and below\n if (reactIs.isMemo(component)) {\n return MEMO_STATICS;\n } // React v16.12 and above\n\n\n return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n\n var targetStatics = getStatics(targetComponent);\n var sourceStatics = getStatics(sourceComponent);\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n\n if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n\n try {\n // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n }\n\n return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","'use strict';\nvar uncurryThisAccessor = require('../internals/function-uncurry-this-accessor');\nvar SetHelpers = require('../internals/set-helpers');\n\nmodule.exports = uncurryThisAccessor(SetHelpers.proto, 'size', 'get') || function (set) {\n return set.size;\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport Device from './Device';\n\n/**\n * A device that applies processing to another device.\n */\nexport default interface VideoTransformDevice {\n /**\n * `stop` should be called to free any resources associated with the device.\n * It must be called if `transformStream` is ever called.\n */\n stop(): Promise;\n\n /**\n * Returns the inner {@link Device} that the device controller should select as active video device.\n */\n intrinsicDevice(): Promise;\n\n /**\n * Starts processing the input `MediaStream` and returns the output `MediaStream`.\n */\n transformStream(mediaStream?: MediaStream): Promise;\n\n /**\n * `onOutputStreamDisconnect` is called when device controller disconnects the transformed video stream.\n */\n onOutputStreamDisconnect(): void;\n\n /**\n * `outputMediaStream` is generated after processors are applied. It will be auto-released after `stop` is called.\n */\n readonly outputMediaStream: MediaStream;\n}\n\n/**\n * `isVideoTransformDevice` is a type guard for {@link VideoTransformDevice}.\n *\n * @param device the value to check.\n */\nexport function isVideoTransformDevice(device: unknown): device is VideoTransformDevice {\n return (\n !!device &&\n typeof device === 'object' &&\n 'transformStream' in device &&\n 'stop' in device &&\n 'intrinsicDevice' in device\n );\n}\n","'use strict';\nvar $ = require('../internals/export');\nvar MapHelpers = require('../internals/map-helpers');\nvar createCollectionOf = require('../internals/collection-of');\n\n// `Map.of` method\n// https://tc39.github.io/proposal-setmap-offrom/#sec-map.of\n$({ target: 'Map', stat: true, forced: true }, {\n of: createCollectionOf(MapHelpers.Map, MapHelpers.set, true)\n});\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['configservice'] = {};\nAWS.ConfigService = Service.defineService('configservice', ['2014-11-12']);\nObject.defineProperty(apiLoader.services['configservice'], '2014-11-12', {\n get: function get() {\n var model = require('../apis/config-2014-11-12.min.json');\n model.paginators = require('../apis/config-2014-11-12.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.ConfigService;\n","'use strict';\nvar $ = require('../internals/export');\nvar aCallable = require('../internals/a-callable');\nvar aMap = require('../internals/a-map');\nvar iterate = require('../internals/map-iterate');\n\nvar $TypeError = TypeError;\n\n// `Map.prototype.reduce` method\n// https://github.com/tc39/proposal-collection-methods\n$({ target: 'Map', proto: true, real: true, forced: true }, {\n reduce: function reduce(callbackfn /* , initialValue */) {\n var map = aMap(this);\n var noInitial = arguments.length < 2;\n var accumulator = noInitial ? undefined : arguments[1];\n aCallable(callbackfn);\n iterate(map, function (value, key) {\n if (noInitial) {\n noInitial = false;\n accumulator = value;\n } else {\n accumulator = callbackfn(accumulator, value, key, map);\n }\n });\n if (noInitial) throw new $TypeError('Reduce of empty map with no initial value');\n return accumulator;\n }\n});\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport DefaultBrowserBehavior from '../browserbehavior/DefaultBrowserBehavior';\nimport DevicePixelRatioMonitor from '../devicepixelratiomonitor/DevicePixelRatioMonitor';\nimport DevicePixelRatioObserver from '../devicepixelratioobserver/DevicePixelRatioObserver';\nimport DefaultModality from '../modality/DefaultModality';\nimport VideoTileController from '../videotilecontroller/VideoTileController';\nimport VideoElementResolutionMonitor from './VideoElementResolutionMonitor';\nimport VideoTile from './VideoTile';\nimport VideoTileState from './VideoTileState';\n\nexport default class DefaultVideoTile implements DevicePixelRatioObserver, VideoTile {\n private tileState: VideoTileState = new VideoTileState();\n\n /**\n * Connect a video stream to a video element by setting the srcObject of the video element to the video stream.\n * @param videoStream The video stream input.\n * @param videoElement The video element input.\n * @param localTile Flag to indicate whether this is a local video.\n */\n static connectVideoStreamToVideoElement(\n videoStream: MediaStream,\n videoElement: HTMLVideoElement,\n localTile: boolean\n ): void {\n const transform =\n localTile && videoStream.getVideoTracks()[0].getSettings().facingMode !== 'environment'\n ? 'rotateY(180deg)'\n : '';\n\n DefaultVideoTile.setVideoElementFlag(videoElement, 'disablePictureInPicture', localTile);\n DefaultVideoTile.setVideoElementFlag(videoElement, 'disableRemotePlayback', localTile);\n\n if (videoElement.style.transform !== transform) {\n videoElement.style.transform = transform;\n }\n if (videoElement.hasAttribute('controls')) {\n videoElement.removeAttribute('controls');\n }\n if (!videoElement.hasAttribute('autoplay')) {\n videoElement.setAttribute('autoplay', 'true');\n }\n // playsinline is needed for video to play in iPhone in non-fullscreen mode.\n // See https://developer.apple.com/documentation/webkit/safari_tools_and_features/delivering_video_content_for_safari#3030250\n if (!videoElement.hasAttribute('playsinline')) {\n videoElement.setAttribute('playsinline', 'true');\n }\n\n // Note that setting the *attribute* 'muted' affects whether the element\n // is muted *by default* (`.defaultMuted`), not whether it is currently muted (`.muted`).\n // https://html.spec.whatwg.org/#dom-media-defaultmuted\n if (!videoElement.hasAttribute('muted')) {\n // The default value…\n videoElement.setAttribute('muted', 'true');\n\n // … and the value right now.\n videoElement.muted = true;\n }\n\n if (videoElement.srcObject !== videoStream) {\n videoElement.srcObject = videoStream;\n\n // In Safari, a hidden video element can show a black screen.\n // See https://bugs.webkit.org/show_bug.cgi?id=241152 for more information.\n if (new DefaultBrowserBehavior().requiresVideoPlayWorkaround() && videoElement.paused) {\n const promise = videoElement.play();\n // See https://bugs.webkit.org/show_bug.cgi?id=243519 for more information.\n // https://webkit.org/blog/7734/auto-play-policy-changes-for-macos/\n /* istanbul ignore else */\n if (promise !== undefined) {\n promise\n .catch(error => {\n console.warn('Error playing video in Safari', error);\n })\n .then(() => {\n // `then` block is needed, without it we run into black tile issue even though we catch the error.\n console.debug('Video played successfully in Safari');\n });\n }\n }\n }\n }\n\n /**\n * Disconnect a video stream from a video element by setting `HTMLVideoElement.srcObject` to `null`.\n * @param videoElement The video element input.\n * @param dueToPause A flag to indicate whether this function is called due to pausing video tile.\n * Based on `keepLastFrameWhenPaused`, it sets `HTMLVideoElement.srcObject` to `null`.\n * @param keepLastFrameWhenPaused If `true` and `dueToPause` is also `true`, then we will not set `HTMLVideoElement.srcObject` of the\n * video element to `null` when it is paused and therefore, the last frame of the stream will be shown.\n */\n static disconnectVideoStreamFromVideoElement(\n videoElement: HTMLVideoElement | null,\n dueToPause: boolean,\n keepLastFrameWhenPaused: boolean | undefined = false\n ): void {\n if (!videoElement) {\n return;\n }\n\n if (dueToPause) {\n if (!keepLastFrameWhenPaused) {\n videoElement.srcObject = null;\n videoElement.style.transform = '';\n }\n } else {\n if (!videoElement.srcObject) {\n return;\n }\n videoElement.pause();\n videoElement.style.transform = '';\n\n DefaultVideoTile.setVideoElementFlag(videoElement, 'disablePictureInPicture', false);\n DefaultVideoTile.setVideoElementFlag(videoElement, 'disableRemotePlayback', false);\n\n videoElement.srcObject = null;\n }\n }\n\n constructor(\n tileId: number,\n localTile: boolean,\n private tileController: VideoTileController,\n private devicePixelRatioMonitor: DevicePixelRatioMonitor,\n private resolutionMonitor: VideoElementResolutionMonitor = undefined\n ) {\n this.tileState.tileId = tileId;\n this.tileState.localTile = localTile;\n this.devicePixelRatioMonitor.registerObserver(this);\n }\n\n destroy(): void {\n this.devicePixelRatioMonitor.removeObserver(this);\n if (\n this.tileState.boundVideoElement &&\n this.tileState.boundVideoElement.srcObject === this.tileState.boundVideoStream\n ) {\n DefaultVideoTile.disconnectVideoStreamFromVideoElement(\n this.tileState.boundVideoElement,\n false\n );\n }\n this.tileState = new VideoTileState();\n }\n\n devicePixelRatioChanged(newDevicePixelRatio: number): void {\n this.tileState.devicePixelRatio = newDevicePixelRatio;\n this.sendTileStateUpdate();\n }\n\n id(): number {\n return this.tileState.tileId;\n }\n\n state(): VideoTileState {\n return this.tileState.clone();\n }\n\n stateRef(): VideoTileState {\n return this.tileState;\n }\n\n bindVideoStream(\n attendeeId: string,\n localTile: boolean,\n mediaStream: MediaStream | null,\n contentWidth: number | null,\n contentHeight: number | null,\n streamId: number | null,\n externalUserId?: string,\n groupId?: number | null\n ): void {\n let tileUpdated = false;\n if (this.tileState.boundAttendeeId !== attendeeId) {\n this.tileState.boundAttendeeId = attendeeId;\n if (new DefaultModality(attendeeId).hasModality(DefaultModality.MODALITY_CONTENT)) {\n this.tileState.isContent = true;\n }\n tileUpdated = true;\n }\n if (this.tileState.boundExternalUserId !== externalUserId) {\n this.tileState.boundExternalUserId = externalUserId;\n tileUpdated = true;\n }\n if (this.tileState.localTile !== localTile) {\n this.tileState.localTile = localTile;\n tileUpdated = true;\n }\n if (this.tileState.boundVideoStream !== mediaStream) {\n this.tileState.boundVideoStream = mediaStream;\n tileUpdated = true;\n }\n if (this.tileState.videoStreamContentWidth !== contentWidth) {\n this.tileState.videoStreamContentWidth = contentWidth;\n tileUpdated = true;\n }\n if (this.tileState.videoStreamContentHeight !== contentHeight) {\n this.tileState.videoStreamContentHeight = contentHeight;\n tileUpdated = true;\n }\n if (this.tileState.streamId !== streamId) {\n this.tileState.streamId = streamId;\n tileUpdated = true;\n }\n if (this.tileState.groupId !== groupId) {\n this.tileState.groupId = groupId;\n tileUpdated = true;\n }\n if (tileUpdated) {\n this.sendTileStateUpdate();\n }\n }\n\n bindVideoElement(videoElement: HTMLVideoElement | null): void {\n let tileUpdated = false;\n if (this.tileState.boundVideoElement !== videoElement) {\n this.tileState.boundVideoElement = videoElement;\n this.resolutionMonitor?.bindVideoElement(this.tileState.boundVideoElement);\n tileUpdated = true;\n }\n if (this.tileState.boundVideoElement !== null) {\n if (this.tileState.videoElementCSSWidthPixels !== videoElement.clientWidth) {\n this.tileState.videoElementCSSWidthPixels = videoElement.clientWidth;\n tileUpdated = true;\n }\n if (this.tileState.videoElementCSSHeightPixels !== videoElement.clientHeight) {\n this.tileState.videoElementCSSHeightPixels = videoElement.clientHeight;\n tileUpdated = true;\n }\n } else {\n this.tileState.videoElementCSSWidthPixels = null;\n this.tileState.videoElementCSSHeightPixels = null;\n }\n if (tileUpdated) {\n this.sendTileStateUpdate();\n }\n }\n\n pause(): void {\n if (!this.tileState.paused) {\n this.tileState.paused = true;\n this.sendTileStateUpdate();\n }\n }\n\n unpause(): void {\n if (this.tileState.paused) {\n this.tileState.paused = false;\n this.sendTileStateUpdate();\n }\n }\n\n markPoorConnection(): boolean {\n if (this.tileState.poorConnection) {\n return false;\n }\n this.tileState.poorConnection = true;\n this.sendTileStateUpdate();\n return true;\n }\n\n unmarkPoorConnection(): boolean {\n if (!this.tileState.poorConnection) {\n return false;\n }\n this.tileState.poorConnection = false;\n this.sendTileStateUpdate();\n return true;\n }\n\n capture(): ImageData | null {\n if (!this.tileState.active) {\n return null;\n }\n const canvas = document.createElement('canvas') as HTMLCanvasElement;\n const video = this.tileState.boundVideoElement;\n canvas.width = video.videoWidth || video.width;\n canvas.height = video.videoHeight || video.height;\n const ctx = canvas.getContext('2d');\n ctx.drawImage(video, 0, 0, canvas.width, canvas.height);\n return ctx.getImageData(0, 0, canvas.width, canvas.height);\n }\n\n setStreamId(id: number): void {\n this.tileState.streamId = id;\n // `streamId` is not likely used by builders but we can't\n // be sure so send a tile state update just in case.\n this.tileController.sendTileStateUpdate(this.state());\n }\n\n private sendTileStateUpdate(): void {\n this.updateActiveState();\n this.updateVideoStreamOnVideoElement();\n this.updateVideoElementPhysicalPixels();\n this.tileController.sendTileStateUpdate(this.state());\n }\n\n private updateActiveState(): void {\n this.tileState.active = !!(\n !this.tileState.paused &&\n !this.tileState.poorConnection &&\n this.tileState.boundAttendeeId &&\n this.tileState.boundVideoElement &&\n this.tileState.boundVideoStream\n );\n }\n\n private updateVideoElementPhysicalPixels(): void {\n if (\n typeof this.tileState.videoElementCSSWidthPixels === 'number' &&\n typeof this.tileState.videoElementCSSHeightPixels === 'number'\n ) {\n this.tileState.videoElementPhysicalWidthPixels =\n this.tileState.devicePixelRatio * this.tileState.videoElementCSSWidthPixels;\n this.tileState.videoElementPhysicalHeightPixels =\n this.tileState.devicePixelRatio * this.tileState.videoElementCSSHeightPixels;\n } else {\n this.tileState.videoElementPhysicalWidthPixels = null;\n this.tileState.videoElementPhysicalHeightPixels = null;\n }\n }\n\n private updateVideoStreamOnVideoElement(): void {\n if (this.tileState.active) {\n DefaultVideoTile.connectVideoStreamToVideoElement(\n this.tileState.boundVideoStream,\n this.tileState.boundVideoElement,\n this.tileState.localTile\n );\n } else {\n DefaultVideoTile.disconnectVideoStreamFromVideoElement(\n this.tileState.boundVideoElement,\n this.tileState.paused,\n this.tileController.keepLastFrameWhenPaused\n );\n }\n }\n\n private static setVideoElementFlag(\n videoElement: HTMLVideoElement,\n flag: string,\n value: boolean\n ): void {\n if (flag in videoElement) {\n // @ts-ignore\n videoElement[flag] = value;\n }\n }\n}\n","'use strict';\n\nvar utils = require('./utils');\nvar normalizeHeaderName = require('./helpers/normalizeHeaderName');\nvar enhanceError = require('./core/enhanceError');\n\nvar DEFAULT_CONTENT_TYPE = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n};\n\nfunction setContentTypeIfUnset(headers, value) {\n if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n headers['Content-Type'] = value;\n }\n}\n\nfunction getDefaultAdapter() {\n var adapter;\n if (typeof XMLHttpRequest !== 'undefined') {\n // For browsers use XHR adapter\n adapter = require('./adapters/xhr');\n } else if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\n // For node use HTTP adapter\n adapter = require('./adapters/http');\n }\n return adapter;\n}\n\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nvar defaults = {\n\n transitional: {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n },\n\n adapter: getDefaultAdapter(),\n\n transformRequest: [function transformRequest(data, headers) {\n normalizeHeaderName(headers, 'Accept');\n normalizeHeaderName(headers, 'Content-Type');\n\n if (utils.isFormData(data) ||\n utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n return data.toString();\n }\n if (utils.isObject(data) || (headers && headers['Content-Type'] === 'application/json')) {\n setContentTypeIfUnset(headers, 'application/json');\n return stringifySafely(data);\n }\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n var transitional = this.transitional;\n var silentJSONParsing = transitional && transitional.silentJSONParsing;\n var forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n var strictJSONParsing = !silentJSONParsing && this.responseType === 'json';\n\n if (strictJSONParsing || (forcedJSONParsing && utils.isString(data) && data.length)) {\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw enhanceError(e, this, 'E_JSON_PARSE');\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n }\n};\n\ndefaults.headers = {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n }\n};\n\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n defaults.headers[method] = {};\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\n\nmodule.exports = defaults;\n","/**\n * RC2 implementation.\n *\n * @author Stefan Siegl\n *\n * Copyright (c) 2012 Stefan Siegl \n *\n * Information on the RC2 cipher is available from RFC #2268,\n * http://www.ietf.org/rfc/rfc2268.txt\n */\nvar forge = require('./forge');\nrequire('./util');\n\nvar piTable = [\n 0xd9, 0x78, 0xf9, 0xc4, 0x19, 0xdd, 0xb5, 0xed, 0x28, 0xe9, 0xfd, 0x79, 0x4a, 0xa0, 0xd8, 0x9d,\n 0xc6, 0x7e, 0x37, 0x83, 0x2b, 0x76, 0x53, 0x8e, 0x62, 0x4c, 0x64, 0x88, 0x44, 0x8b, 0xfb, 0xa2,\n 0x17, 0x9a, 0x59, 0xf5, 0x87, 0xb3, 0x4f, 0x13, 0x61, 0x45, 0x6d, 0x8d, 0x09, 0x81, 0x7d, 0x32,\n 0xbd, 0x8f, 0x40, 0xeb, 0x86, 0xb7, 0x7b, 0x0b, 0xf0, 0x95, 0x21, 0x22, 0x5c, 0x6b, 0x4e, 0x82,\n 0x54, 0xd6, 0x65, 0x93, 0xce, 0x60, 0xb2, 0x1c, 0x73, 0x56, 0xc0, 0x14, 0xa7, 0x8c, 0xf1, 0xdc,\n 0x12, 0x75, 0xca, 0x1f, 0x3b, 0xbe, 0xe4, 0xd1, 0x42, 0x3d, 0xd4, 0x30, 0xa3, 0x3c, 0xb6, 0x26,\n 0x6f, 0xbf, 0x0e, 0xda, 0x46, 0x69, 0x07, 0x57, 0x27, 0xf2, 0x1d, 0x9b, 0xbc, 0x94, 0x43, 0x03,\n 0xf8, 0x11, 0xc7, 0xf6, 0x90, 0xef, 0x3e, 0xe7, 0x06, 0xc3, 0xd5, 0x2f, 0xc8, 0x66, 0x1e, 0xd7,\n 0x08, 0xe8, 0xea, 0xde, 0x80, 0x52, 0xee, 0xf7, 0x84, 0xaa, 0x72, 0xac, 0x35, 0x4d, 0x6a, 0x2a,\n 0x96, 0x1a, 0xd2, 0x71, 0x5a, 0x15, 0x49, 0x74, 0x4b, 0x9f, 0xd0, 0x5e, 0x04, 0x18, 0xa4, 0xec,\n 0xc2, 0xe0, 0x41, 0x6e, 0x0f, 0x51, 0xcb, 0xcc, 0x24, 0x91, 0xaf, 0x50, 0xa1, 0xf4, 0x70, 0x39,\n 0x99, 0x7c, 0x3a, 0x85, 0x23, 0xb8, 0xb4, 0x7a, 0xfc, 0x02, 0x36, 0x5b, 0x25, 0x55, 0x97, 0x31,\n 0x2d, 0x5d, 0xfa, 0x98, 0xe3, 0x8a, 0x92, 0xae, 0x05, 0xdf, 0x29, 0x10, 0x67, 0x6c, 0xba, 0xc9,\n 0xd3, 0x00, 0xe6, 0xcf, 0xe1, 0x9e, 0xa8, 0x2c, 0x63, 0x16, 0x01, 0x3f, 0x58, 0xe2, 0x89, 0xa9,\n 0x0d, 0x38, 0x34, 0x1b, 0xab, 0x33, 0xff, 0xb0, 0xbb, 0x48, 0x0c, 0x5f, 0xb9, 0xb1, 0xcd, 0x2e,\n 0xc5, 0xf3, 0xdb, 0x47, 0xe5, 0xa5, 0x9c, 0x77, 0x0a, 0xa6, 0x20, 0x68, 0xfe, 0x7f, 0xc1, 0xad\n];\n\nvar s = [1, 2, 3, 5];\n\n/**\n * Rotate a word left by given number of bits.\n *\n * Bits that are shifted out on the left are put back in on the right\n * hand side.\n *\n * @param word The word to shift left.\n * @param bits The number of bits to shift by.\n * @return The rotated word.\n */\nvar rol = function(word, bits) {\n return ((word << bits) & 0xffff) | ((word & 0xffff) >> (16 - bits));\n};\n\n/**\n * Rotate a word right by given number of bits.\n *\n * Bits that are shifted out on the right are put back in on the left\n * hand side.\n *\n * @param word The word to shift right.\n * @param bits The number of bits to shift by.\n * @return The rotated word.\n */\nvar ror = function(word, bits) {\n return ((word & 0xffff) >> bits) | ((word << (16 - bits)) & 0xffff);\n};\n\n/* RC2 API */\nmodule.exports = forge.rc2 = forge.rc2 || {};\n\n/**\n * Perform RC2 key expansion as per RFC #2268, section 2.\n *\n * @param key variable-length user key (between 1 and 128 bytes)\n * @param effKeyBits number of effective key bits (default: 128)\n * @return the expanded RC2 key (ByteBuffer of 128 bytes)\n */\nforge.rc2.expandKey = function(key, effKeyBits) {\n if(typeof key === 'string') {\n key = forge.util.createBuffer(key);\n }\n effKeyBits = effKeyBits || 128;\n\n /* introduce variables that match the names used in RFC #2268 */\n var L = key;\n var T = key.length();\n var T1 = effKeyBits;\n var T8 = Math.ceil(T1 / 8);\n var TM = 0xff >> (T1 & 0x07);\n var i;\n\n for(i = T; i < 128; i++) {\n L.putByte(piTable[(L.at(i - 1) + L.at(i - T)) & 0xff]);\n }\n\n L.setAt(128 - T8, piTable[L.at(128 - T8) & TM]);\n\n for(i = 127 - T8; i >= 0; i--) {\n L.setAt(i, piTable[L.at(i + 1) ^ L.at(i + T8)]);\n }\n\n return L;\n};\n\n/**\n * Creates a RC2 cipher object.\n *\n * @param key the symmetric key to use (as base for key generation).\n * @param bits the number of effective key bits.\n * @param encrypt false for decryption, true for encryption.\n *\n * @return the cipher.\n */\nvar createCipher = function(key, bits, encrypt) {\n var _finish = false, _input = null, _output = null, _iv = null;\n var mixRound, mashRound;\n var i, j, K = [];\n\n /* Expand key and fill into K[] Array */\n key = forge.rc2.expandKey(key, bits);\n for(i = 0; i < 64; i++) {\n K.push(key.getInt16Le());\n }\n\n if(encrypt) {\n /**\n * Perform one mixing round \"in place\".\n *\n * @param R Array of four words to perform mixing on.\n */\n mixRound = function(R) {\n for(i = 0; i < 4; i++) {\n R[i] += K[j] + (R[(i + 3) % 4] & R[(i + 2) % 4]) +\n ((~R[(i + 3) % 4]) & R[(i + 1) % 4]);\n R[i] = rol(R[i], s[i]);\n j++;\n }\n };\n\n /**\n * Perform one mashing round \"in place\".\n *\n * @param R Array of four words to perform mashing on.\n */\n mashRound = function(R) {\n for(i = 0; i < 4; i++) {\n R[i] += K[R[(i + 3) % 4] & 63];\n }\n };\n } else {\n /**\n * Perform one r-mixing round \"in place\".\n *\n * @param R Array of four words to perform mixing on.\n */\n mixRound = function(R) {\n for(i = 3; i >= 0; i--) {\n R[i] = ror(R[i], s[i]);\n R[i] -= K[j] + (R[(i + 3) % 4] & R[(i + 2) % 4]) +\n ((~R[(i + 3) % 4]) & R[(i + 1) % 4]);\n j--;\n }\n };\n\n /**\n * Perform one r-mashing round \"in place\".\n *\n * @param R Array of four words to perform mashing on.\n */\n mashRound = function(R) {\n for(i = 3; i >= 0; i--) {\n R[i] -= K[R[(i + 3) % 4] & 63];\n }\n };\n }\n\n /**\n * Run the specified cipher execution plan.\n *\n * This function takes four words from the input buffer, applies the IV on\n * it (if requested) and runs the provided execution plan.\n *\n * The plan must be put together in form of a array of arrays. Where the\n * outer one is simply a list of steps to perform and the inner one needs\n * to have two elements: the first one telling how many rounds to perform,\n * the second one telling what to do (i.e. the function to call).\n *\n * @param {Array} plan The plan to execute.\n */\n var runPlan = function(plan) {\n var R = [];\n\n /* Get data from input buffer and fill the four words into R */\n for(i = 0; i < 4; i++) {\n var val = _input.getInt16Le();\n\n if(_iv !== null) {\n if(encrypt) {\n /* We're encrypting, apply the IV first. */\n val ^= _iv.getInt16Le();\n } else {\n /* We're decryption, keep cipher text for next block. */\n _iv.putInt16Le(val);\n }\n }\n\n R.push(val & 0xffff);\n }\n\n /* Reset global \"j\" variable as per spec. */\n j = encrypt ? 0 : 63;\n\n /* Run execution plan. */\n for(var ptr = 0; ptr < plan.length; ptr++) {\n for(var ctr = 0; ctr < plan[ptr][0]; ctr++) {\n plan[ptr][1](R);\n }\n }\n\n /* Write back result to output buffer. */\n for(i = 0; i < 4; i++) {\n if(_iv !== null) {\n if(encrypt) {\n /* We're encrypting in CBC-mode, feed back encrypted bytes into\n IV buffer to carry it forward to next block. */\n _iv.putInt16Le(R[i]);\n } else {\n R[i] ^= _iv.getInt16Le();\n }\n }\n\n _output.putInt16Le(R[i]);\n }\n };\n\n /* Create cipher object */\n var cipher = null;\n cipher = {\n /**\n * Starts or restarts the encryption or decryption process, whichever\n * was previously configured.\n *\n * To use the cipher in CBC mode, iv may be given either as a string\n * of bytes, or as a byte buffer. For ECB mode, give null as iv.\n *\n * @param iv the initialization vector to use, null for ECB mode.\n * @param output the output the buffer to write to, null to create one.\n */\n start: function(iv, output) {\n if(iv) {\n /* CBC mode */\n if(typeof iv === 'string') {\n iv = forge.util.createBuffer(iv);\n }\n }\n\n _finish = false;\n _input = forge.util.createBuffer();\n _output = output || new forge.util.createBuffer();\n _iv = iv;\n\n cipher.output = _output;\n },\n\n /**\n * Updates the next block.\n *\n * @param input the buffer to read from.\n */\n update: function(input) {\n if(!_finish) {\n // not finishing, so fill the input buffer with more input\n _input.putBuffer(input);\n }\n\n while(_input.length() >= 8) {\n runPlan([\n [ 5, mixRound ],\n [ 1, mashRound ],\n [ 6, mixRound ],\n [ 1, mashRound ],\n [ 5, mixRound ]\n ]);\n }\n },\n\n /**\n * Finishes encrypting or decrypting.\n *\n * @param pad a padding function to use, null for PKCS#7 padding,\n * signature(blockSize, buffer, decrypt).\n *\n * @return true if successful, false on error.\n */\n finish: function(pad) {\n var rval = true;\n\n if(encrypt) {\n if(pad) {\n rval = pad(8, _input, !encrypt);\n } else {\n // add PKCS#7 padding to block (each pad byte is the\n // value of the number of pad bytes)\n var padding = (_input.length() === 8) ? 8 : (8 - _input.length());\n _input.fillWithByte(padding, padding);\n }\n }\n\n if(rval) {\n // do final update\n _finish = true;\n cipher.update();\n }\n\n if(!encrypt) {\n // check for error: input data not a multiple of block size\n rval = (_input.length() === 0);\n if(rval) {\n if(pad) {\n rval = pad(8, _output, !encrypt);\n } else {\n // ensure padding byte count is valid\n var len = _output.length();\n var count = _output.at(len - 1);\n\n if(count > len) {\n rval = false;\n } else {\n // trim off padding bytes\n _output.truncate(count);\n }\n }\n }\n }\n\n return rval;\n }\n };\n\n return cipher;\n};\n\n/**\n * Creates an RC2 cipher object to encrypt data in ECB or CBC mode using the\n * given symmetric key. The output will be stored in the 'output' member\n * of the returned cipher.\n *\n * The key and iv may be given as a string of bytes or a byte buffer.\n * The cipher is initialized to use 128 effective key bits.\n *\n * @param key the symmetric key to use.\n * @param iv the initialization vector to use.\n * @param output the buffer to write to, null to create one.\n *\n * @return the cipher.\n */\nforge.rc2.startEncrypting = function(key, iv, output) {\n var cipher = forge.rc2.createEncryptionCipher(key, 128);\n cipher.start(iv, output);\n return cipher;\n};\n\n/**\n * Creates an RC2 cipher object to encrypt data in ECB or CBC mode using the\n * given symmetric key.\n *\n * The key may be given as a string of bytes or a byte buffer.\n *\n * To start encrypting call start() on the cipher with an iv and optional\n * output buffer.\n *\n * @param key the symmetric key to use.\n *\n * @return the cipher.\n */\nforge.rc2.createEncryptionCipher = function(key, bits) {\n return createCipher(key, bits, true);\n};\n\n/**\n * Creates an RC2 cipher object to decrypt data in ECB or CBC mode using the\n * given symmetric key. The output will be stored in the 'output' member\n * of the returned cipher.\n *\n * The key and iv may be given as a string of bytes or a byte buffer.\n * The cipher is initialized to use 128 effective key bits.\n *\n * @param key the symmetric key to use.\n * @param iv the initialization vector to use.\n * @param output the buffer to write to, null to create one.\n *\n * @return the cipher.\n */\nforge.rc2.startDecrypting = function(key, iv, output) {\n var cipher = forge.rc2.createDecryptionCipher(key, 128);\n cipher.start(iv, output);\n return cipher;\n};\n\n/**\n * Creates an RC2 cipher object to decrypt data in ECB or CBC mode using the\n * given symmetric key.\n *\n * The key may be given as a string of bytes or a byte buffer.\n *\n * To start decrypting call start() on the cipher with an iv and optional\n * output buffer.\n *\n * @param key the symmetric key to use.\n *\n * @return the cipher.\n */\nforge.rc2.createDecryptionCipher = function(key, bits) {\n return createCipher(key, bits, false);\n};\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['machinelearning'] = {};\nAWS.MachineLearning = Service.defineService('machinelearning', ['2014-12-12']);\nrequire('../lib/services/machinelearning');\nObject.defineProperty(apiLoader.services['machinelearning'], '2014-12-12', {\n get: function get() {\n var model = require('../apis/machinelearning-2014-12-12.min.json');\n model.paginators = require('../apis/machinelearning-2014-12-12.paginators.json').pagination;\n model.waiters = require('../apis/machinelearning-2014-12-12.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.MachineLearning;\n","var AWS = require('../core');\nvar util = AWS.util;\nvar typeOf = require('./types').typeOf;\nvar DynamoDBSet = require('./set');\nvar NumberValue = require('./numberValue');\n\nAWS.DynamoDB.Converter = {\n /**\n * Convert a JavaScript value to its equivalent DynamoDB AttributeValue type\n *\n * @param data [any] The data to convert to a DynamoDB AttributeValue\n * @param options [map]\n * @option options convertEmptyValues [Boolean] Whether to automatically\n * convert empty strings, blobs,\n * and sets to `null`\n * @option options wrapNumbers [Boolean] Whether to return numbers as a\n * NumberValue object instead of\n * converting them to native JavaScript\n * numbers. This allows for the safe\n * round-trip transport of numbers of\n * arbitrary size.\n * @return [map] An object in the Amazon DynamoDB AttributeValue format\n *\n * @see AWS.DynamoDB.Converter.marshall AWS.DynamoDB.Converter.marshall to\n * convert entire records (rather than individual attributes)\n */\n input: function convertInput(data, options) {\n options = options || {};\n var type = typeOf(data);\n if (type === 'Object') {\n return formatMap(data, options);\n } else if (type === 'Array') {\n return formatList(data, options);\n } else if (type === 'Set') {\n return formatSet(data, options);\n } else if (type === 'String') {\n if (data.length === 0 && options.convertEmptyValues) {\n return convertInput(null);\n }\n return { S: data };\n } else if (type === 'Number' || type === 'NumberValue') {\n return { N: data.toString() };\n } else if (type === 'Binary') {\n if (data.length === 0 && options.convertEmptyValues) {\n return convertInput(null);\n }\n return { B: data };\n } else if (type === 'Boolean') {\n return { BOOL: data };\n } else if (type === 'null') {\n return { NULL: true };\n } else if (type !== 'undefined' && type !== 'Function') {\n // this value has a custom constructor\n return formatMap(data, options);\n }\n },\n\n /**\n * Convert a JavaScript object into a DynamoDB record.\n *\n * @param data [any] The data to convert to a DynamoDB record\n * @param options [map]\n * @option options convertEmptyValues [Boolean] Whether to automatically\n * convert empty strings, blobs,\n * and sets to `null`\n * @option options wrapNumbers [Boolean] Whether to return numbers as a\n * NumberValue object instead of\n * converting them to native JavaScript\n * numbers. This allows for the safe\n * round-trip transport of numbers of\n * arbitrary size.\n *\n * @return [map] An object in the DynamoDB record format.\n *\n * @example Convert a JavaScript object into a DynamoDB record\n * var marshalled = AWS.DynamoDB.Converter.marshall({\n * string: 'foo',\n * list: ['fizz', 'buzz', 'pop'],\n * map: {\n * nestedMap: {\n * key: 'value',\n * }\n * },\n * number: 123,\n * nullValue: null,\n * boolValue: true,\n * stringSet: new DynamoDBSet(['foo', 'bar', 'baz'])\n * });\n */\n marshall: function marshallItem(data, options) {\n return AWS.DynamoDB.Converter.input(data, options).M;\n },\n\n /**\n * Convert a DynamoDB AttributeValue object to its equivalent JavaScript type.\n *\n * @param data [map] An object in the Amazon DynamoDB AttributeValue format\n * @param options [map]\n * @option options convertEmptyValues [Boolean] Whether to automatically\n * convert empty strings, blobs,\n * and sets to `null`\n * @option options wrapNumbers [Boolean] Whether to return numbers as a\n * NumberValue object instead of\n * converting them to native JavaScript\n * numbers. This allows for the safe\n * round-trip transport of numbers of\n * arbitrary size.\n *\n * @return [Object|Array|String|Number|Boolean|null]\n *\n * @see AWS.DynamoDB.Converter.unmarshall AWS.DynamoDB.Converter.unmarshall to\n * convert entire records (rather than individual attributes)\n */\n output: function convertOutput(data, options) {\n options = options || {};\n var list, map, i;\n for (var type in data) {\n var values = data[type];\n if (type === 'M') {\n map = {};\n for (var key in values) {\n map[key] = convertOutput(values[key], options);\n }\n return map;\n } else if (type === 'L') {\n list = [];\n for (i = 0; i < values.length; i++) {\n list.push(convertOutput(values[i], options));\n }\n return list;\n } else if (type === 'SS') {\n list = [];\n for (i = 0; i < values.length; i++) {\n list.push(values[i] + '');\n }\n return new DynamoDBSet(list);\n } else if (type === 'NS') {\n list = [];\n for (i = 0; i < values.length; i++) {\n list.push(convertNumber(values[i], options.wrapNumbers));\n }\n return new DynamoDBSet(list);\n } else if (type === 'BS') {\n list = [];\n for (i = 0; i < values.length; i++) {\n list.push(AWS.util.buffer.toBuffer(values[i]));\n }\n return new DynamoDBSet(list);\n } else if (type === 'S') {\n return values + '';\n } else if (type === 'N') {\n return convertNumber(values, options.wrapNumbers);\n } else if (type === 'B') {\n return util.buffer.toBuffer(values);\n } else if (type === 'BOOL') {\n return (values === 'true' || values === 'TRUE' || values === true);\n } else if (type === 'NULL') {\n return null;\n }\n }\n },\n\n /**\n * Convert a DynamoDB record into a JavaScript object.\n *\n * @param data [any] The DynamoDB record\n * @param options [map]\n * @option options convertEmptyValues [Boolean] Whether to automatically\n * convert empty strings, blobs,\n * and sets to `null`\n * @option options wrapNumbers [Boolean] Whether to return numbers as a\n * NumberValue object instead of\n * converting them to native JavaScript\n * numbers. This allows for the safe\n * round-trip transport of numbers of\n * arbitrary size.\n *\n * @return [map] An object whose properties have been converted from\n * DynamoDB's AttributeValue format into their corresponding native\n * JavaScript types.\n *\n * @example Convert a record received from a DynamoDB stream\n * var unmarshalled = AWS.DynamoDB.Converter.unmarshall({\n * string: {S: 'foo'},\n * list: {L: [{S: 'fizz'}, {S: 'buzz'}, {S: 'pop'}]},\n * map: {\n * M: {\n * nestedMap: {\n * M: {\n * key: {S: 'value'}\n * }\n * }\n * }\n * },\n * number: {N: '123'},\n * nullValue: {NULL: true},\n * boolValue: {BOOL: true}\n * });\n */\n unmarshall: function unmarshall(data, options) {\n return AWS.DynamoDB.Converter.output({M: data}, options);\n }\n};\n\n/**\n * @api private\n * @param data [Array]\n * @param options [map]\n */\nfunction formatList(data, options) {\n var list = {L: []};\n for (var i = 0; i < data.length; i++) {\n list['L'].push(AWS.DynamoDB.Converter.input(data[i], options));\n }\n return list;\n}\n\n/**\n * @api private\n * @param value [String]\n * @param wrapNumbers [Boolean]\n */\nfunction convertNumber(value, wrapNumbers) {\n return wrapNumbers ? new NumberValue(value) : Number(value);\n}\n\n/**\n * @api private\n * @param data [map]\n * @param options [map]\n */\nfunction formatMap(data, options) {\n var map = {M: {}};\n for (var key in data) {\n var formatted = AWS.DynamoDB.Converter.input(data[key], options);\n if (formatted !== void 0) {\n map['M'][key] = formatted;\n }\n }\n return map;\n}\n\n/**\n * @api private\n */\nfunction formatSet(data, options) {\n options = options || {};\n var values = data.values;\n if (options.convertEmptyValues) {\n values = filterEmptySetValues(data);\n if (values.length === 0) {\n return AWS.DynamoDB.Converter.input(null);\n }\n }\n\n var map = {};\n switch (data.type) {\n case 'String': map['SS'] = values; break;\n case 'Binary': map['BS'] = values; break;\n case 'Number': map['NS'] = values.map(function (value) {\n return value.toString();\n });\n }\n return map;\n}\n\n/**\n * @api private\n */\nfunction filterEmptySetValues(set) {\n var nonEmptyValues = [];\n var potentiallyEmptyTypes = {\n String: true,\n Binary: true,\n Number: false\n };\n if (potentiallyEmptyTypes[set.type]) {\n for (var i = 0; i < set.values.length; i++) {\n if (set.values[i].length === 0) {\n continue;\n }\n nonEmptyValues.push(set.values[i]);\n }\n\n return nonEmptyValues;\n }\n\n return set.values;\n}\n\n/**\n * @api private\n */\nmodule.exports = AWS.DynamoDB.Converter;\n","'use strict';\n\n/** @type {import('.')} */\nvar $defineProperty = Object.defineProperty || false;\nif ($defineProperty) {\n\ttry {\n\t\t$defineProperty({}, 'a', { value: 1 });\n\t} catch (e) {\n\t\t// IE 8 has a broken defineProperty\n\t\t$defineProperty = false;\n\t}\n}\n\nmodule.exports = $defineProperty;\n","'use strict';\n\nvar getSideChannel = require('side-channel');\nvar utils = require('./utils');\nvar formats = require('./formats');\nvar has = Object.prototype.hasOwnProperty;\n\nvar arrayPrefixGenerators = {\n brackets: function brackets(prefix) {\n return prefix + '[]';\n },\n comma: 'comma',\n indices: function indices(prefix, key) {\n return prefix + '[' + key + ']';\n },\n repeat: function repeat(prefix) {\n return prefix;\n }\n};\n\nvar isArray = Array.isArray;\nvar push = Array.prototype.push;\nvar pushToArray = function (arr, valueOrArray) {\n push.apply(arr, isArray(valueOrArray) ? valueOrArray : [valueOrArray]);\n};\n\nvar toISO = Date.prototype.toISOString;\n\nvar defaultFormat = formats['default'];\nvar defaults = {\n addQueryPrefix: false,\n allowDots: false,\n allowEmptyArrays: false,\n arrayFormat: 'indices',\n charset: 'utf-8',\n charsetSentinel: false,\n commaRoundTrip: false,\n delimiter: '&',\n encode: true,\n encodeDotInKeys: false,\n encoder: utils.encode,\n encodeValuesOnly: false,\n filter: void undefined,\n format: defaultFormat,\n formatter: formats.formatters[defaultFormat],\n // deprecated\n indices: false,\n serializeDate: function serializeDate(date) {\n return toISO.call(date);\n },\n skipNulls: false,\n strictNullHandling: false\n};\n\nvar isNonNullishPrimitive = function isNonNullishPrimitive(v) {\n return typeof v === 'string'\n || typeof v === 'number'\n || typeof v === 'boolean'\n || typeof v === 'symbol'\n || typeof v === 'bigint';\n};\n\nvar sentinel = {};\n\nvar stringify = function stringify(\n object,\n prefix,\n generateArrayPrefix,\n commaRoundTrip,\n allowEmptyArrays,\n strictNullHandling,\n skipNulls,\n encodeDotInKeys,\n encoder,\n filter,\n sort,\n allowDots,\n serializeDate,\n format,\n formatter,\n encodeValuesOnly,\n charset,\n sideChannel\n) {\n var obj = object;\n\n var tmpSc = sideChannel;\n var step = 0;\n var findFlag = false;\n while ((tmpSc = tmpSc.get(sentinel)) !== void undefined && !findFlag) {\n // Where object last appeared in the ref tree\n var pos = tmpSc.get(object);\n step += 1;\n if (typeof pos !== 'undefined') {\n if (pos === step) {\n throw new RangeError('Cyclic object value');\n } else {\n findFlag = true; // Break while\n }\n }\n if (typeof tmpSc.get(sentinel) === 'undefined') {\n step = 0;\n }\n }\n\n if (typeof filter === 'function') {\n obj = filter(prefix, obj);\n } else if (obj instanceof Date) {\n obj = serializeDate(obj);\n } else if (generateArrayPrefix === 'comma' && isArray(obj)) {\n obj = utils.maybeMap(obj, function (value) {\n if (value instanceof Date) {\n return serializeDate(value);\n }\n return value;\n });\n }\n\n if (obj === null) {\n if (strictNullHandling) {\n return encoder && !encodeValuesOnly ? encoder(prefix, defaults.encoder, charset, 'key', format) : prefix;\n }\n\n obj = '';\n }\n\n if (isNonNullishPrimitive(obj) || utils.isBuffer(obj)) {\n if (encoder) {\n var keyValue = encodeValuesOnly ? prefix : encoder(prefix, defaults.encoder, charset, 'key', format);\n return [formatter(keyValue) + '=' + formatter(encoder(obj, defaults.encoder, charset, 'value', format))];\n }\n return [formatter(prefix) + '=' + formatter(String(obj))];\n }\n\n var values = [];\n\n if (typeof obj === 'undefined') {\n return values;\n }\n\n var objKeys;\n if (generateArrayPrefix === 'comma' && isArray(obj)) {\n // we need to join elements in\n if (encodeValuesOnly && encoder) {\n obj = utils.maybeMap(obj, encoder);\n }\n objKeys = [{ value: obj.length > 0 ? obj.join(',') || null : void undefined }];\n } else if (isArray(filter)) {\n objKeys = filter;\n } else {\n var keys = Object.keys(obj);\n objKeys = sort ? keys.sort(sort) : keys;\n }\n\n var encodedPrefix = encodeDotInKeys ? String(prefix).replace(/\\./g, '%2E') : String(prefix);\n\n var adjustedPrefix = commaRoundTrip && isArray(obj) && obj.length === 1 ? encodedPrefix + '[]' : encodedPrefix;\n\n if (allowEmptyArrays && isArray(obj) && obj.length === 0) {\n return adjustedPrefix + '[]';\n }\n\n for (var j = 0; j < objKeys.length; ++j) {\n var key = objKeys[j];\n var value = typeof key === 'object' && key && typeof key.value !== 'undefined'\n ? key.value\n : obj[key];\n\n if (skipNulls && value === null) {\n continue;\n }\n\n var encodedKey = allowDots && encodeDotInKeys ? String(key).replace(/\\./g, '%2E') : String(key);\n var keyPrefix = isArray(obj)\n ? typeof generateArrayPrefix === 'function' ? generateArrayPrefix(adjustedPrefix, encodedKey) : adjustedPrefix\n : adjustedPrefix + (allowDots ? '.' + encodedKey : '[' + encodedKey + ']');\n\n sideChannel.set(object, step);\n var valueSideChannel = getSideChannel();\n valueSideChannel.set(sentinel, sideChannel);\n pushToArray(values, stringify(\n value,\n keyPrefix,\n generateArrayPrefix,\n commaRoundTrip,\n allowEmptyArrays,\n strictNullHandling,\n skipNulls,\n encodeDotInKeys,\n generateArrayPrefix === 'comma' && encodeValuesOnly && isArray(obj) ? null : encoder,\n filter,\n sort,\n allowDots,\n serializeDate,\n format,\n formatter,\n encodeValuesOnly,\n charset,\n valueSideChannel\n ));\n }\n\n return values;\n};\n\nvar normalizeStringifyOptions = function normalizeStringifyOptions(opts) {\n if (!opts) {\n return defaults;\n }\n\n if (typeof opts.allowEmptyArrays !== 'undefined' && typeof opts.allowEmptyArrays !== 'boolean') {\n throw new TypeError('`allowEmptyArrays` option can only be `true` or `false`, when provided');\n }\n\n if (typeof opts.encodeDotInKeys !== 'undefined' && typeof opts.encodeDotInKeys !== 'boolean') {\n throw new TypeError('`encodeDotInKeys` option can only be `true` or `false`, when provided');\n }\n\n if (opts.encoder !== null && typeof opts.encoder !== 'undefined' && typeof opts.encoder !== 'function') {\n throw new TypeError('Encoder has to be a function.');\n }\n\n var charset = opts.charset || defaults.charset;\n if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {\n throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');\n }\n\n var format = formats['default'];\n if (typeof opts.format !== 'undefined') {\n if (!has.call(formats.formatters, opts.format)) {\n throw new TypeError('Unknown format option provided.');\n }\n format = opts.format;\n }\n var formatter = formats.formatters[format];\n\n var filter = defaults.filter;\n if (typeof opts.filter === 'function' || isArray(opts.filter)) {\n filter = opts.filter;\n }\n\n var arrayFormat;\n if (opts.arrayFormat in arrayPrefixGenerators) {\n arrayFormat = opts.arrayFormat;\n } else if ('indices' in opts) {\n arrayFormat = opts.indices ? 'indices' : 'repeat';\n } else {\n arrayFormat = defaults.arrayFormat;\n }\n\n if ('commaRoundTrip' in opts && typeof opts.commaRoundTrip !== 'boolean') {\n throw new TypeError('`commaRoundTrip` must be a boolean, or absent');\n }\n\n var allowDots = typeof opts.allowDots === 'undefined' ? opts.encodeDotInKeys === true ? true : defaults.allowDots : !!opts.allowDots;\n\n return {\n addQueryPrefix: typeof opts.addQueryPrefix === 'boolean' ? opts.addQueryPrefix : defaults.addQueryPrefix,\n allowDots: allowDots,\n allowEmptyArrays: typeof opts.allowEmptyArrays === 'boolean' ? !!opts.allowEmptyArrays : defaults.allowEmptyArrays,\n arrayFormat: arrayFormat,\n charset: charset,\n charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,\n commaRoundTrip: !!opts.commaRoundTrip,\n delimiter: typeof opts.delimiter === 'undefined' ? defaults.delimiter : opts.delimiter,\n encode: typeof opts.encode === 'boolean' ? opts.encode : defaults.encode,\n encodeDotInKeys: typeof opts.encodeDotInKeys === 'boolean' ? opts.encodeDotInKeys : defaults.encodeDotInKeys,\n encoder: typeof opts.encoder === 'function' ? opts.encoder : defaults.encoder,\n encodeValuesOnly: typeof opts.encodeValuesOnly === 'boolean' ? opts.encodeValuesOnly : defaults.encodeValuesOnly,\n filter: filter,\n format: format,\n formatter: formatter,\n serializeDate: typeof opts.serializeDate === 'function' ? opts.serializeDate : defaults.serializeDate,\n skipNulls: typeof opts.skipNulls === 'boolean' ? opts.skipNulls : defaults.skipNulls,\n sort: typeof opts.sort === 'function' ? opts.sort : null,\n strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling\n };\n};\n\nmodule.exports = function (object, opts) {\n var obj = object;\n var options = normalizeStringifyOptions(opts);\n\n var objKeys;\n var filter;\n\n if (typeof options.filter === 'function') {\n filter = options.filter;\n obj = filter('', obj);\n } else if (isArray(options.filter)) {\n filter = options.filter;\n objKeys = filter;\n }\n\n var keys = [];\n\n if (typeof obj !== 'object' || obj === null) {\n return '';\n }\n\n var generateArrayPrefix = arrayPrefixGenerators[options.arrayFormat];\n var commaRoundTrip = generateArrayPrefix === 'comma' && options.commaRoundTrip;\n\n if (!objKeys) {\n objKeys = Object.keys(obj);\n }\n\n if (options.sort) {\n objKeys.sort(options.sort);\n }\n\n var sideChannel = getSideChannel();\n for (var i = 0; i < objKeys.length; ++i) {\n var key = objKeys[i];\n var value = obj[key];\n\n if (options.skipNulls && value === null) {\n continue;\n }\n pushToArray(keys, stringify(\n value,\n key,\n generateArrayPrefix,\n commaRoundTrip,\n options.allowEmptyArrays,\n options.strictNullHandling,\n options.skipNulls,\n options.encodeDotInKeys,\n options.encode ? options.encoder : null,\n options.filter,\n options.sort,\n options.allowDots,\n options.serializeDate,\n options.format,\n options.formatter,\n options.encodeValuesOnly,\n options.charset,\n sideChannel\n ));\n }\n\n var joined = keys.join(options.delimiter);\n var prefix = options.addQueryPrefix === true ? '?' : '';\n\n if (options.charsetSentinel) {\n if (options.charset === 'iso-8859-1') {\n // encodeURIComponent('✓'), the \"numeric entity\" representation of a checkmark\n prefix += 'utf8=%26%2310003%3B&';\n } else {\n // encodeURIComponent('✓')\n prefix += 'utf8=%E2%9C%93&';\n }\n }\n\n return joined.length > 0 ? prefix + joined : '';\n};\n","/**\n * Functions to output keys in SSH-friendly formats.\n *\n * This is part of the Forge project which may be used under the terms of\n * either the BSD License or the GNU General Public License (GPL) Version 2.\n *\n * See: https://github.com/digitalbazaar/forge/blob/cbebca3780658703d925b61b2caffb1d263a6c1d/LICENSE\n *\n * @author https://github.com/shellac\n */\nvar forge = require('./forge');\nrequire('./aes');\nrequire('./hmac');\nrequire('./md5');\nrequire('./sha1');\nrequire('./util');\n\nvar ssh = module.exports = forge.ssh = forge.ssh || {};\n\n/**\n * Encodes (and optionally encrypts) a private RSA key as a Putty PPK file.\n *\n * @param privateKey the key.\n * @param passphrase a passphrase to protect the key (falsy for no encryption).\n * @param comment a comment to include in the key file.\n *\n * @return the PPK file as a string.\n */\nssh.privateKeyToPutty = function(privateKey, passphrase, comment) {\n comment = comment || '';\n passphrase = passphrase || '';\n var algorithm = 'ssh-rsa';\n var encryptionAlgorithm = (passphrase === '') ? 'none' : 'aes256-cbc';\n\n var ppk = 'PuTTY-User-Key-File-2: ' + algorithm + '\\r\\n';\n ppk += 'Encryption: ' + encryptionAlgorithm + '\\r\\n';\n ppk += 'Comment: ' + comment + '\\r\\n';\n\n // public key into buffer for ppk\n var pubbuffer = forge.util.createBuffer();\n _addStringToBuffer(pubbuffer, algorithm);\n _addBigIntegerToBuffer(pubbuffer, privateKey.e);\n _addBigIntegerToBuffer(pubbuffer, privateKey.n);\n\n // write public key\n var pub = forge.util.encode64(pubbuffer.bytes(), 64);\n var length = Math.floor(pub.length / 66) + 1; // 66 = 64 + \\r\\n\n ppk += 'Public-Lines: ' + length + '\\r\\n';\n ppk += pub;\n\n // private key into a buffer\n var privbuffer = forge.util.createBuffer();\n _addBigIntegerToBuffer(privbuffer, privateKey.d);\n _addBigIntegerToBuffer(privbuffer, privateKey.p);\n _addBigIntegerToBuffer(privbuffer, privateKey.q);\n _addBigIntegerToBuffer(privbuffer, privateKey.qInv);\n\n // optionally encrypt the private key\n var priv;\n if(!passphrase) {\n // use the unencrypted buffer\n priv = forge.util.encode64(privbuffer.bytes(), 64);\n } else {\n // encrypt RSA key using passphrase\n var encLen = privbuffer.length() + 16 - 1;\n encLen -= encLen % 16;\n\n // pad private key with sha1-d data -- needs to be a multiple of 16\n var padding = _sha1(privbuffer.bytes());\n\n padding.truncate(padding.length() - encLen + privbuffer.length());\n privbuffer.putBuffer(padding);\n\n var aeskey = forge.util.createBuffer();\n aeskey.putBuffer(_sha1('\\x00\\x00\\x00\\x00', passphrase));\n aeskey.putBuffer(_sha1('\\x00\\x00\\x00\\x01', passphrase));\n\n // encrypt some bytes using CBC mode\n // key is 40 bytes, so truncate *by* 8 bytes\n var cipher = forge.aes.createEncryptionCipher(aeskey.truncate(8), 'CBC');\n cipher.start(forge.util.createBuffer().fillWithByte(0, 16));\n cipher.update(privbuffer.copy());\n cipher.finish();\n var encrypted = cipher.output;\n\n // Note: this appears to differ from Putty -- is forge wrong, or putty?\n // due to padding we finish as an exact multiple of 16\n encrypted.truncate(16); // all padding\n\n priv = forge.util.encode64(encrypted.bytes(), 64);\n }\n\n // output private key\n length = Math.floor(priv.length / 66) + 1; // 64 + \\r\\n\n ppk += '\\r\\nPrivate-Lines: ' + length + '\\r\\n';\n ppk += priv;\n\n // MAC\n var mackey = _sha1('putty-private-key-file-mac-key', passphrase);\n\n var macbuffer = forge.util.createBuffer();\n _addStringToBuffer(macbuffer, algorithm);\n _addStringToBuffer(macbuffer, encryptionAlgorithm);\n _addStringToBuffer(macbuffer, comment);\n macbuffer.putInt32(pubbuffer.length());\n macbuffer.putBuffer(pubbuffer);\n macbuffer.putInt32(privbuffer.length());\n macbuffer.putBuffer(privbuffer);\n\n var hmac = forge.hmac.create();\n hmac.start('sha1', mackey);\n hmac.update(macbuffer.bytes());\n\n ppk += '\\r\\nPrivate-MAC: ' + hmac.digest().toHex() + '\\r\\n';\n\n return ppk;\n};\n\n/**\n * Encodes a public RSA key as an OpenSSH file.\n *\n * @param key the key.\n * @param comment a comment.\n *\n * @return the public key in OpenSSH format.\n */\nssh.publicKeyToOpenSSH = function(key, comment) {\n var type = 'ssh-rsa';\n comment = comment || '';\n\n var buffer = forge.util.createBuffer();\n _addStringToBuffer(buffer, type);\n _addBigIntegerToBuffer(buffer, key.e);\n _addBigIntegerToBuffer(buffer, key.n);\n\n return type + ' ' + forge.util.encode64(buffer.bytes()) + ' ' + comment;\n};\n\n/**\n * Encodes a private RSA key as an OpenSSH file.\n *\n * @param key the key.\n * @param passphrase a passphrase to protect the key (falsy for no encryption).\n *\n * @return the public key in OpenSSH format.\n */\nssh.privateKeyToOpenSSH = function(privateKey, passphrase) {\n if(!passphrase) {\n return forge.pki.privateKeyToPem(privateKey);\n }\n // OpenSSH private key is just a legacy format, it seems\n return forge.pki.encryptRsaPrivateKey(privateKey, passphrase,\n {legacy: true, algorithm: 'aes128'});\n};\n\n/**\n * Gets the SSH fingerprint for the given public key.\n *\n * @param options the options to use.\n * [md] the message digest object to use (defaults to forge.md.md5).\n * [encoding] an alternative output encoding, such as 'hex'\n * (defaults to none, outputs a byte buffer).\n * [delimiter] the delimiter to use between bytes for 'hex' encoded\n * output, eg: ':' (defaults to none).\n *\n * @return the fingerprint as a byte buffer or other encoding based on options.\n */\nssh.getPublicKeyFingerprint = function(key, options) {\n options = options || {};\n var md = options.md || forge.md.md5.create();\n\n var type = 'ssh-rsa';\n var buffer = forge.util.createBuffer();\n _addStringToBuffer(buffer, type);\n _addBigIntegerToBuffer(buffer, key.e);\n _addBigIntegerToBuffer(buffer, key.n);\n\n // hash public key bytes\n md.start();\n md.update(buffer.getBytes());\n var digest = md.digest();\n if(options.encoding === 'hex') {\n var hex = digest.toHex();\n if(options.delimiter) {\n return hex.match(/.{2}/g).join(options.delimiter);\n }\n return hex;\n } else if(options.encoding === 'binary') {\n return digest.getBytes();\n } else if(options.encoding) {\n throw new Error('Unknown encoding \"' + options.encoding + '\".');\n }\n return digest;\n};\n\n/**\n * Adds len(val) then val to a buffer.\n *\n * @param buffer the buffer to add to.\n * @param val a big integer.\n */\nfunction _addBigIntegerToBuffer(buffer, val) {\n var hexVal = val.toString(16);\n // ensure 2s complement +ve\n if(hexVal[0] >= '8') {\n hexVal = '00' + hexVal;\n }\n var bytes = forge.util.hexToBytes(hexVal);\n buffer.putInt32(bytes.length);\n buffer.putBytes(bytes);\n}\n\n/**\n * Adds len(val) then val to a buffer.\n *\n * @param buffer the buffer to add to.\n * @param val a string.\n */\nfunction _addStringToBuffer(buffer, val) {\n buffer.putInt32(val.length);\n buffer.putString(val);\n}\n\n/**\n * Hashes the arguments into one value using SHA-1.\n *\n * @return the sha1 hash of the provided arguments.\n */\nfunction _sha1() {\n var sha = forge.md.sha1.create();\n var num = arguments.length;\n for (var i = 0; i < num; ++i) {\n sha.update(arguments[i]);\n }\n return sha.digest();\n}\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['elasticbeanstalk'] = {};\nAWS.ElasticBeanstalk = Service.defineService('elasticbeanstalk', ['2010-12-01']);\nObject.defineProperty(apiLoader.services['elasticbeanstalk'], '2010-12-01', {\n get: function get() {\n var model = require('../apis/elasticbeanstalk-2010-12-01.min.json');\n model.paginators = require('../apis/elasticbeanstalk-2010-12-01.paginators.json').pagination;\n model.waiters = require('../apis/elasticbeanstalk-2010-12-01.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.ElasticBeanstalk;\n","'use strict';\nvar $ = require('../internals/export');\nvar bind = require('../internals/function-bind-context');\nvar aMap = require('../internals/a-map');\nvar iterate = require('../internals/map-iterate');\n\n// `Map.prototype.find` method\n// https://github.com/tc39/proposal-collection-methods\n$({ target: 'Map', proto: true, real: true, forced: true }, {\n find: function find(callbackfn /* , thisArg */) {\n var map = aMap(this);\n var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n var result = iterate(map, function (value, key) {\n if (boundFunction(value, key, map)) return { value: value };\n }, true);\n return result && result.value;\n }\n});\n","/** @license React v17.0.2\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),m=require(\"object-assign\"),r=require(\"scheduler\");function y(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;cb}return!1}function B(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g}var D={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){D[a]=new B(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];D[b]=new B(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){D[a]=new B(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){D[a]=new B(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){D[a]=new B(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){D[a]=new B(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){D[a]=new B(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){D[a]=new B(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){D[a]=new B(a,5,!1,a.toLowerCase(),null,!1,!1)});var oa=/[\\-:]([a-z])/g;function pa(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(oa,\npa);D[b]=new B(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(oa,pa);D[b]=new B(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(oa,pa);D[b]=new B(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){D[a]=new B(a,1,!1,a.toLowerCase(),null,!1,!1)});\nD.xlinkHref=new B(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){D[a]=new B(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction qa(a,b,c,d){var e=D.hasOwnProperty(b)?D[b]:null;var f=null!==e?0===e.type:d?!1:!(2h||e[g]!==f[h])return\"\\n\"+e[g].replace(\" at new \",\" at \");while(1<=g&&0<=h)}break}}}finally{Oa=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Na(a):\"\"}\nfunction Qa(a){switch(a.tag){case 5:return Na(a.type);case 16:return Na(\"Lazy\");case 13:return Na(\"Suspense\");case 19:return Na(\"SuspenseList\");case 0:case 2:case 15:return a=Pa(a.type,!1),a;case 11:return a=Pa(a.type.render,!1),a;case 22:return a=Pa(a.type._render,!1),a;case 1:return a=Pa(a.type,!0),a;default:return\"\"}}\nfunction Ra(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ua:return\"Fragment\";case ta:return\"Portal\";case xa:return\"Profiler\";case wa:return\"StrictMode\";case Ba:return\"Suspense\";case Ca:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case za:return(a.displayName||\"Context\")+\".Consumer\";case ya:return(a._context.displayName||\"Context\")+\".Provider\";case Aa:var b=a.render;b=b.displayName||b.name||\"\";\nreturn a.displayName||(\"\"!==b?\"ForwardRef(\"+b+\")\":\"ForwardRef\");case Da:return Ra(a.type);case Fa:return Ra(a._render);case Ea:b=a._payload;a=a._init;try{return Ra(a(b))}catch(c){}}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"object\":case \"string\":case \"undefined\":return a;default:return\"\"}}function Ta(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Ua(a){var b=Ta(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Ta(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Xa(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}\nfunction Ya(a,b){var c=b.checked;return m({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Za(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Sa(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function $a(a,b){b=b.checked;null!=b&&qa(a,\"checked\",b,!1)}\nfunction ab(a,b){$a(a,b);var c=Sa(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?bb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&bb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction cb(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction bb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}function db(a){var b=\"\";aa.Children.forEach(a,function(a){null!=a&&(b+=a)});return b}function eb(a,b){a=m({children:void 0},b);if(b=db(b.children))a.children=b;return a}\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e=c.length))throw Error(y(93));c=c[0]}b=c}null==b&&(b=\"\");c=b}a._wrapperState={initialValue:Sa(c)}}\nfunction ib(a,b){var c=Sa(b.value),d=Sa(b.defaultValue);null!=c&&(c=\"\"+c,c!==a.value&&(a.value=c),null==b.defaultValue&&a.defaultValue!==c&&(a.defaultValue=c));null!=d&&(a.defaultValue=\"\"+d)}function jb(a){var b=a.textContent;b===a._wrapperState.initialValue&&\"\"!==b&&null!==b&&(a.value=b)}var kb={html:\"http://www.w3.org/1999/xhtml\",mathml:\"http://www.w3.org/1998/Math/MathML\",svg:\"http://www.w3.org/2000/svg\"};\nfunction lb(a){switch(a){case \"svg\":return\"http://www.w3.org/2000/svg\";case \"math\":return\"http://www.w3.org/1998/Math/MathML\";default:return\"http://www.w3.org/1999/xhtml\"}}function mb(a,b){return null==a||\"http://www.w3.org/1999/xhtml\"===a?lb(b):\"http://www.w3.org/2000/svg\"===a&&\"foreignObject\"===b?\"http://www.w3.org/1999/xhtml\":a}\nvar nb,ob=function(a){return\"undefined\"!==typeof MSApp&&MSApp.execUnsafeLocalFunction?function(b,c,d,e){MSApp.execUnsafeLocalFunction(function(){return a(b,c,d,e)})}:a}(function(a,b){if(a.namespaceURI!==kb.svg||\"innerHTML\"in a)a.innerHTML=b;else{nb=nb||document.createElement(\"div\");nb.innerHTML=\"\"+b.valueOf().toString()+\"\";for(b=nb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction pb(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar qb={animationIterationCount:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,\nfloodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},rb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(qb).forEach(function(a){rb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);qb[b]=qb[a]})});function sb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||qb.hasOwnProperty(a)&&qb[a]?(\"\"+b).trim():b+\"px\"}\nfunction tb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=sb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var ub=m({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction vb(a,b){if(b){if(ub[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(y(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(y(60));if(!(\"object\"===typeof b.dangerouslySetInnerHTML&&\"__html\"in b.dangerouslySetInnerHTML))throw Error(y(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(y(62));}}\nfunction wb(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var yb=null,zb=null,Ab=null;\nfunction Bb(a){if(a=Cb(a)){if(\"function\"!==typeof yb)throw Error(y(280));var b=a.stateNode;b&&(b=Db(b),yb(a.stateNode,a.type,b))}}function Eb(a){zb?Ab?Ab.push(a):Ab=[a]:zb=a}function Fb(){if(zb){var a=zb,b=Ab;Ab=zb=null;Bb(a);if(b)for(a=0;ad?0:1<c;c++)b.push(a);return b}\nfunction $c(a,b,c){a.pendingLanes|=b;var d=b-1;a.suspendedLanes&=d;a.pingedLanes&=d;a=a.eventTimes;b=31-Vc(b);a[b]=c}var Vc=Math.clz32?Math.clz32:ad,bd=Math.log,cd=Math.LN2;function ad(a){return 0===a?32:31-(bd(a)/cd|0)|0}var dd=r.unstable_UserBlockingPriority,ed=r.unstable_runWithPriority,fd=!0;function gd(a,b,c,d){Kb||Ib();var e=hd,f=Kb;Kb=!0;try{Hb(e,a,b,c,d)}finally{(Kb=f)||Mb()}}function id(a,b,c,d){ed(dd,hd.bind(null,a,b,c,d))}\nfunction hd(a,b,c,d){if(fd){var e;if((e=0===(b&4))&&0=be),ee=String.fromCharCode(32),fe=!1;\nfunction ge(a,b){switch(a){case \"keyup\":return-1!==$d.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"focusout\":return!0;default:return!1}}function he(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var ie=!1;function je(a,b){switch(a){case \"compositionend\":return he(b);case \"keypress\":if(32!==b.which)return null;fe=!0;return ee;case \"textInput\":return a=b.data,a===ee&&fe?null:a;default:return null}}\nfunction ke(a,b){if(ie)return\"compositionend\"===a||!ae&&ge(a,b)?(a=nd(),md=ld=kd=null,ie=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Ke(c)}}function Me(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Me(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Ne(){for(var a=window,b=Xa();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Xa(a.document)}return b}function Oe(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nvar Pe=fa&&\"documentMode\"in document&&11>=document.documentMode,Qe=null,Re=null,Se=null,Te=!1;\nfunction Ue(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Te||null==Qe||Qe!==Xa(d)||(d=Qe,\"selectionStart\"in d&&Oe(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Se&&Je(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0Af||(a.current=zf[Af],zf[Af]=null,Af--)}function I(a,b){Af++;zf[Af]=a.current;a.current=b}var Cf={},M=Bf(Cf),N=Bf(!1),Df=Cf;\nfunction Ef(a,b){var c=a.type.contextTypes;if(!c)return Cf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}function Ff(a){a=a.childContextTypes;return null!==a&&void 0!==a}function Gf(){H(N);H(M)}function Hf(a,b,c){if(M.current!==Cf)throw Error(y(168));I(M,b);I(N,c)}\nfunction If(a,b,c){var d=a.stateNode;a=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in a))throw Error(y(108,Ra(b)||\"Unknown\",e));return m({},c,d)}function Jf(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Cf;Df=M.current;I(M,a);I(N,N.current);return!0}function Kf(a,b,c){var d=a.stateNode;if(!d)throw Error(y(169));c?(a=If(a,b,Df),d.__reactInternalMemoizedMergedChildContext=a,H(N),H(M),I(M,a)):H(N);I(N,c)}\nvar Lf=null,Mf=null,Nf=r.unstable_runWithPriority,Of=r.unstable_scheduleCallback,Pf=r.unstable_cancelCallback,Qf=r.unstable_shouldYield,Rf=r.unstable_requestPaint,Sf=r.unstable_now,Tf=r.unstable_getCurrentPriorityLevel,Uf=r.unstable_ImmediatePriority,Vf=r.unstable_UserBlockingPriority,Wf=r.unstable_NormalPriority,Xf=r.unstable_LowPriority,Yf=r.unstable_IdlePriority,Zf={},$f=void 0!==Rf?Rf:function(){},ag=null,bg=null,cg=!1,dg=Sf(),O=1E4>dg?Sf:function(){return Sf()-dg};\nfunction eg(){switch(Tf()){case Uf:return 99;case Vf:return 98;case Wf:return 97;case Xf:return 96;case Yf:return 95;default:throw Error(y(332));}}function fg(a){switch(a){case 99:return Uf;case 98:return Vf;case 97:return Wf;case 96:return Xf;case 95:return Yf;default:throw Error(y(332));}}function gg(a,b){a=fg(a);return Nf(a,b)}function hg(a,b,c){a=fg(a);return Of(a,b,c)}function ig(){if(null!==bg){var a=bg;bg=null;Pf(a)}jg()}\nfunction jg(){if(!cg&&null!==ag){cg=!0;var a=0;try{var b=ag;gg(99,function(){for(;az?(q=u,u=null):q=u.sibling;var n=p(e,u,h[z],k);if(null===n){null===u&&(u=q);break}a&&u&&null===\nn.alternate&&b(e,u);g=f(n,g,z);null===t?l=n:t.sibling=n;t=n;u=q}if(z===h.length)return c(e,u),l;if(null===u){for(;zz?(q=u,u=null):q=u.sibling;var w=p(e,u,n.value,k);if(null===w){null===u&&(u=q);break}a&&u&&null===w.alternate&&b(e,u);g=f(w,g,z);null===t?l=w:t.sibling=w;t=w;u=q}if(n.done)return c(e,u),l;if(null===u){for(;!n.done;z++,n=h.next())n=A(e,n.value,k),null!==n&&(g=f(n,g,z),null===t?l=n:t.sibling=n,t=n);return l}for(u=d(e,u);!n.done;z++,n=h.next())n=C(u,e,z,n.value,k),null!==n&&(a&&null!==n.alternate&&\nu.delete(null===n.key?z:n.key),g=f(n,g,z),null===t?l=n:t.sibling=n,t=n);a&&u.forEach(function(a){return b(e,a)});return l}return function(a,d,f,h){var k=\"object\"===typeof f&&null!==f&&f.type===ua&&null===f.key;k&&(f=f.props.children);var l=\"object\"===typeof f&&null!==f;if(l)switch(f.$$typeof){case sa:a:{l=f.key;for(k=d;null!==k;){if(k.key===l){switch(k.tag){case 7:if(f.type===ua){c(a,k.sibling);d=e(k,f.props.children);d.return=a;a=d;break a}break;default:if(k.elementType===f.type){c(a,k.sibling);\nd=e(k,f.props);d.ref=Qg(a,k,f);d.return=a;a=d;break a}}c(a,k);break}else b(a,k);k=k.sibling}f.type===ua?(d=Xg(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=Vg(f.type,f.key,f.props,null,a.mode,h),h.ref=Qg(a,d,f),h.return=a,a=h)}return g(a);case ta:a:{for(k=f.key;null!==d;){if(d.key===k)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=\nWg(f,a.mode,h);d.return=a;a=d}return g(a)}if(\"string\"===typeof f||\"number\"===typeof f)return f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):(c(a,d),d=Ug(f,a.mode,h),d.return=a,a=d),g(a);if(Pg(f))return x(a,d,f,h);if(La(f))return w(a,d,f,h);l&&Rg(a,f);if(\"undefined\"===typeof f&&!k)switch(a.tag){case 1:case 22:case 0:case 11:case 15:throw Error(y(152,Ra(a.type)||\"Component\"));}return c(a,d)}}var Yg=Sg(!0),Zg=Sg(!1),$g={},ah=Bf($g),bh=Bf($g),ch=Bf($g);\nfunction dh(a){if(a===$g)throw Error(y(174));return a}function eh(a,b){I(ch,b);I(bh,a);I(ah,$g);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:mb(null,\"\");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=mb(b,a)}H(ah);I(ah,b)}function fh(){H(ah);H(bh);H(ch)}function gh(a){dh(ch.current);var b=dh(ah.current);var c=mb(b,a.type);b!==c&&(I(bh,a),I(ah,c))}function hh(a){bh.current===a&&(H(ah),H(bh))}var P=Bf(0);\nfunction ih(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||\"$?\"===c.data||\"$!\"===c.data))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.flags&64))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}var jh=null,kh=null,lh=!1;\nfunction mh(a,b){var c=nh(5,null,null,0);c.elementType=\"DELETED\";c.type=\"DELETED\";c.stateNode=b;c.return=a;c.flags=8;null!==a.lastEffect?(a.lastEffect.nextEffect=c,a.lastEffect=c):a.firstEffect=a.lastEffect=c}function oh(a,b){switch(a.tag){case 5:var c=a.type;b=1!==b.nodeType||c.toLowerCase()!==b.nodeName.toLowerCase()?null:b;return null!==b?(a.stateNode=b,!0):!1;case 6:return b=\"\"===a.pendingProps||3!==b.nodeType?null:b,null!==b?(a.stateNode=b,!0):!1;case 13:return!1;default:return!1}}\nfunction ph(a){if(lh){var b=kh;if(b){var c=b;if(!oh(a,b)){b=rf(c.nextSibling);if(!b||!oh(a,b)){a.flags=a.flags&-1025|2;lh=!1;jh=a;return}mh(jh,c)}jh=a;kh=rf(b.firstChild)}else a.flags=a.flags&-1025|2,lh=!1,jh=a}}function qh(a){for(a=a.return;null!==a&&5!==a.tag&&3!==a.tag&&13!==a.tag;)a=a.return;jh=a}\nfunction rh(a){if(a!==jh)return!1;if(!lh)return qh(a),lh=!0,!1;var b=a.type;if(5!==a.tag||\"head\"!==b&&\"body\"!==b&&!nf(b,a.memoizedProps))for(b=kh;b;)mh(a,b),b=rf(b.nextSibling);qh(a);if(13===a.tag){a=a.memoizedState;a=null!==a?a.dehydrated:null;if(!a)throw Error(y(317));a:{a=a.nextSibling;for(b=0;a;){if(8===a.nodeType){var c=a.data;if(\"/$\"===c){if(0===b){kh=rf(a.nextSibling);break a}b--}else\"$\"!==c&&\"$!\"!==c&&\"$?\"!==c||b++}a=a.nextSibling}kh=null}}else kh=jh?rf(a.stateNode.nextSibling):null;return!0}\nfunction sh(){kh=jh=null;lh=!1}var th=[];function uh(){for(var a=0;af))throw Error(y(301));f+=1;T=S=null;b.updateQueue=null;vh.current=Fh;a=c(d,e)}while(zh)}vh.current=Gh;b=null!==S&&null!==S.next;xh=0;T=S=R=null;yh=!1;if(b)throw Error(y(300));return a}function Hh(){var a={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};null===T?R.memoizedState=T=a:T=T.next=a;return T}\nfunction Ih(){if(null===S){var a=R.alternate;a=null!==a?a.memoizedState:null}else a=S.next;var b=null===T?R.memoizedState:T.next;if(null!==b)T=b,S=a;else{if(null===a)throw Error(y(310));S=a;a={memoizedState:S.memoizedState,baseState:S.baseState,baseQueue:S.baseQueue,queue:S.queue,next:null};null===T?R.memoizedState=T=a:T=T.next=a}return T}function Jh(a,b){return\"function\"===typeof b?b(a):b}\nfunction Kh(a){var b=Ih(),c=b.queue;if(null===c)throw Error(y(311));c.lastRenderedReducer=a;var d=S,e=d.baseQueue,f=c.pending;if(null!==f){if(null!==e){var g=e.next;e.next=f.next;f.next=g}d.baseQueue=e=f;c.pending=null}if(null!==e){e=e.next;d=d.baseState;var h=g=f=null,k=e;do{var l=k.lane;if((xh&l)===l)null!==h&&(h=h.next={lane:0,action:k.action,eagerReducer:k.eagerReducer,eagerState:k.eagerState,next:null}),d=k.eagerReducer===a?k.eagerState:a(d,k.action);else{var n={lane:l,action:k.action,eagerReducer:k.eagerReducer,\neagerState:k.eagerState,next:null};null===h?(g=h=n,f=d):h=h.next=n;R.lanes|=l;Dg|=l}k=k.next}while(null!==k&&k!==e);null===h?f=d:h.next=g;He(d,b.memoizedState)||(ug=!0);b.memoizedState=d;b.baseState=f;b.baseQueue=h;c.lastRenderedState=d}return[b.memoizedState,c.dispatch]}\nfunction Lh(a){var b=Ih(),c=b.queue;if(null===c)throw Error(y(311));c.lastRenderedReducer=a;var d=c.dispatch,e=c.pending,f=b.memoizedState;if(null!==e){c.pending=null;var g=e=e.next;do f=a(f,g.action),g=g.next;while(g!==e);He(f,b.memoizedState)||(ug=!0);b.memoizedState=f;null===b.baseQueue&&(b.baseState=f);c.lastRenderedState=f}return[f,d]}\nfunction Mh(a,b,c){var d=b._getVersion;d=d(b._source);var e=b._workInProgressVersionPrimary;if(null!==e)a=e===d;else if(a=a.mutableReadLanes,a=(xh&a)===a)b._workInProgressVersionPrimary=d,th.push(b);if(a)return c(b._source);th.push(b);throw Error(y(350));}\nfunction Nh(a,b,c,d){var e=U;if(null===e)throw Error(y(349));var f=b._getVersion,g=f(b._source),h=vh.current,k=h.useState(function(){return Mh(e,b,c)}),l=k[1],n=k[0];k=T;var A=a.memoizedState,p=A.refs,C=p.getSnapshot,x=A.source;A=A.subscribe;var w=R;a.memoizedState={refs:p,source:b,subscribe:d};h.useEffect(function(){p.getSnapshot=c;p.setSnapshot=l;var a=f(b._source);if(!He(g,a)){a=c(b._source);He(n,a)||(l(a),a=Ig(w),e.mutableReadLanes|=a&e.pendingLanes);a=e.mutableReadLanes;e.entangledLanes|=a;for(var d=\ne.entanglements,h=a;0c?98:c,function(){a(!0)});gg(97\\x3c/script>\",a=a.removeChild(a.firstChild)):\"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[wf]=b;a[xf]=d;Bi(a,b,!1,!1);b.stateNode=a;g=wb(c,d);switch(c){case \"dialog\":G(\"cancel\",a);G(\"close\",a);\ne=d;break;case \"iframe\":case \"object\":case \"embed\":G(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;eJi&&(b.flags|=64,f=!0,Fi(d,!1),b.lanes=33554432)}else{if(!f)if(a=ih(g),null!==a){if(b.flags|=64,f=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Fi(d,!0),null===d.tail&&\"hidden\"===d.tailMode&&!g.alternate&&!lh)return b=b.lastEffect=d.lastEffect,null!==b&&(b.nextEffect=null),null}else 2*O()-d.renderingStartTime>Ji&&1073741824!==c&&(b.flags|=\n64,f=!0,Fi(d,!1),b.lanes=33554432);d.isBackwards?(g.sibling=b.child,b.child=g):(c=d.last,null!==c?c.sibling=g:b.child=g,d.last=g)}return null!==d.tail?(c=d.tail,d.rendering=c,d.tail=c.sibling,d.lastEffect=b.lastEffect,d.renderingStartTime=O(),c.sibling=null,b=P.current,I(P,f?b&1|2:b&1),c):null;case 23:case 24:return Ki(),null!==a&&null!==a.memoizedState!==(null!==b.memoizedState)&&\"unstable-defer-without-hiding\"!==d.mode&&(b.flags|=4),null}throw Error(y(156,b.tag));}\nfunction Li(a){switch(a.tag){case 1:Ff(a.type)&&Gf();var b=a.flags;return b&4096?(a.flags=b&-4097|64,a):null;case 3:fh();H(N);H(M);uh();b=a.flags;if(0!==(b&64))throw Error(y(285));a.flags=b&-4097|64;return a;case 5:return hh(a),null;case 13:return H(P),b=a.flags,b&4096?(a.flags=b&-4097|64,a):null;case 19:return H(P),null;case 4:return fh(),null;case 10:return rg(a),null;case 23:case 24:return Ki(),null;default:return null}}\nfunction Mi(a,b){try{var c=\"\",d=b;do c+=Qa(d),d=d.return;while(d);var e=c}catch(f){e=\"\\nError generating stack: \"+f.message+\"\\n\"+f.stack}return{value:a,source:b,stack:e}}function Ni(a,b){try{console.error(b.value)}catch(c){setTimeout(function(){throw c;})}}var Oi=\"function\"===typeof WeakMap?WeakMap:Map;function Pi(a,b,c){c=zg(-1,c);c.tag=3;c.payload={element:null};var d=b.value;c.callback=function(){Qi||(Qi=!0,Ri=d);Ni(a,b)};return c}\nfunction Si(a,b,c){c=zg(-1,c);c.tag=3;var d=a.type.getDerivedStateFromError;if(\"function\"===typeof d){var e=b.value;c.payload=function(){Ni(a,b);return d(e)}}var f=a.stateNode;null!==f&&\"function\"===typeof f.componentDidCatch&&(c.callback=function(){\"function\"!==typeof d&&(null===Ti?Ti=new Set([this]):Ti.add(this),Ni(a,b));var c=b.stack;this.componentDidCatch(b.value,{componentStack:null!==c?c:\"\"})});return c}var Ui=\"function\"===typeof WeakSet?WeakSet:Set;\nfunction Vi(a){var b=a.ref;if(null!==b)if(\"function\"===typeof b)try{b(null)}catch(c){Wi(a,c)}else b.current=null}function Xi(a,b){switch(b.tag){case 0:case 11:case 15:case 22:return;case 1:if(b.flags&256&&null!==a){var c=a.memoizedProps,d=a.memoizedState;a=b.stateNode;b=a.getSnapshotBeforeUpdate(b.elementType===b.type?c:lg(b.type,c),d);a.__reactInternalSnapshotBeforeUpdate=b}return;case 3:b.flags&256&&qf(b.stateNode.containerInfo);return;case 5:case 6:case 4:case 17:return}throw Error(y(163));}\nfunction Yi(a,b,c){switch(c.tag){case 0:case 11:case 15:case 22:b=c.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){a=b=b.next;do{if(3===(a.tag&3)){var d=a.create;a.destroy=d()}a=a.next}while(a!==b)}b=c.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){a=b=b.next;do{var e=a;d=e.next;e=e.tag;0!==(e&4)&&0!==(e&1)&&(Zi(c,a),$i(c,a));a=d}while(a!==b)}return;case 1:a=c.stateNode;c.flags&4&&(null===b?a.componentDidMount():(d=c.elementType===c.type?b.memoizedProps:lg(c.type,b.memoizedProps),a.componentDidUpdate(d,\nb.memoizedState,a.__reactInternalSnapshotBeforeUpdate)));b=c.updateQueue;null!==b&&Eg(c,b,a);return;case 3:b=c.updateQueue;if(null!==b){a=null;if(null!==c.child)switch(c.child.tag){case 5:a=c.child.stateNode;break;case 1:a=c.child.stateNode}Eg(c,b,a)}return;case 5:a=c.stateNode;null===b&&c.flags&4&&mf(c.type,c.memoizedProps)&&a.focus();return;case 6:return;case 4:return;case 12:return;case 13:null===c.memoizedState&&(c=c.alternate,null!==c&&(c=c.memoizedState,null!==c&&(c=c.dehydrated,null!==c&&Cc(c))));\nreturn;case 19:case 17:case 20:case 21:case 23:case 24:return}throw Error(y(163));}\nfunction aj(a,b){for(var c=a;;){if(5===c.tag){var d=c.stateNode;if(b)d=d.style,\"function\"===typeof d.setProperty?d.setProperty(\"display\",\"none\",\"important\"):d.display=\"none\";else{d=c.stateNode;var e=c.memoizedProps.style;e=void 0!==e&&null!==e&&e.hasOwnProperty(\"display\")?e.display:null;d.style.display=sb(\"display\",e)}}else if(6===c.tag)c.stateNode.nodeValue=b?\"\":c.memoizedProps;else if((23!==c.tag&&24!==c.tag||null===c.memoizedState||c===a)&&null!==c.child){c.child.return=c;c=c.child;continue}if(c===\na)break;for(;null===c.sibling;){if(null===c.return||c.return===a)return;c=c.return}c.sibling.return=c.return;c=c.sibling}}\nfunction bj(a,b){if(Mf&&\"function\"===typeof Mf.onCommitFiberUnmount)try{Mf.onCommitFiberUnmount(Lf,b)}catch(f){}switch(b.tag){case 0:case 11:case 14:case 15:case 22:a=b.updateQueue;if(null!==a&&(a=a.lastEffect,null!==a)){var c=a=a.next;do{var d=c,e=d.destroy;d=d.tag;if(void 0!==e)if(0!==(d&4))Zi(b,c);else{d=b;try{e()}catch(f){Wi(d,f)}}c=c.next}while(c!==a)}break;case 1:Vi(b);a=b.stateNode;if(\"function\"===typeof a.componentWillUnmount)try{a.props=b.memoizedProps,a.state=b.memoizedState,a.componentWillUnmount()}catch(f){Wi(b,\nf)}break;case 5:Vi(b);break;case 4:cj(a,b)}}function dj(a){a.alternate=null;a.child=null;a.dependencies=null;a.firstEffect=null;a.lastEffect=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.return=null;a.updateQueue=null}function ej(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction fj(a){a:{for(var b=a.return;null!==b;){if(ej(b))break a;b=b.return}throw Error(y(160));}var c=b;b=c.stateNode;switch(c.tag){case 5:var d=!1;break;case 3:b=b.containerInfo;d=!0;break;case 4:b=b.containerInfo;d=!0;break;default:throw Error(y(161));}c.flags&16&&(pb(b,\"\"),c.flags&=-17);a:b:for(c=a;;){for(;null===c.sibling;){if(null===c.return||ej(c.return)){c=null;break a}c=c.return}c.sibling.return=c.return;for(c=c.sibling;5!==c.tag&&6!==c.tag&&18!==c.tag;){if(c.flags&2)continue b;if(null===\nc.child||4===c.tag)continue b;else c.child.return=c,c=c.child}if(!(c.flags&2)){c=c.stateNode;break a}}d?gj(a,c,b):hj(a,c,b)}\nfunction gj(a,b,c){var d=a.tag,e=5===d||6===d;if(e)a=e?a.stateNode:a.stateNode.instance,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=jf));else if(4!==d&&(a=a.child,null!==a))for(gj(a,b,c),a=a.sibling;null!==a;)gj(a,b,c),a=a.sibling}\nfunction hj(a,b,c){var d=a.tag,e=5===d||6===d;if(e)a=e?a.stateNode:a.stateNode.instance,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(hj(a,b,c),a=a.sibling;null!==a;)hj(a,b,c),a=a.sibling}\nfunction cj(a,b){for(var c=b,d=!1,e,f;;){if(!d){d=c.return;a:for(;;){if(null===d)throw Error(y(160));e=d.stateNode;switch(d.tag){case 5:f=!1;break a;case 3:e=e.containerInfo;f=!0;break a;case 4:e=e.containerInfo;f=!0;break a}d=d.return}d=!0}if(5===c.tag||6===c.tag){a:for(var g=a,h=c,k=h;;)if(bj(g,k),null!==k.child&&4!==k.tag)k.child.return=k,k=k.child;else{if(k===h)break a;for(;null===k.sibling;){if(null===k.return||k.return===h)break a;k=k.return}k.sibling.return=k.return;k=k.sibling}f?(g=e,h=c.stateNode,\n8===g.nodeType?g.parentNode.removeChild(h):g.removeChild(h)):e.removeChild(c.stateNode)}else if(4===c.tag){if(null!==c.child){e=c.stateNode.containerInfo;f=!0;c.child.return=c;c=c.child;continue}}else if(bj(a,c),null!==c.child){c.child.return=c;c=c.child;continue}if(c===b)break;for(;null===c.sibling;){if(null===c.return||c.return===b)return;c=c.return;4===c.tag&&(d=!1)}c.sibling.return=c.return;c=c.sibling}}\nfunction ij(a,b){switch(b.tag){case 0:case 11:case 14:case 15:case 22:var c=b.updateQueue;c=null!==c?c.lastEffect:null;if(null!==c){var d=c=c.next;do 3===(d.tag&3)&&(a=d.destroy,d.destroy=void 0,void 0!==a&&a()),d=d.next;while(d!==c)}return;case 1:return;case 5:c=b.stateNode;if(null!=c){d=b.memoizedProps;var e=null!==a?a.memoizedProps:d;a=b.type;var f=b.updateQueue;b.updateQueue=null;if(null!==f){c[xf]=d;\"input\"===a&&\"radio\"===d.type&&null!=d.name&&$a(c,d);wb(a,e);b=wb(a,d);for(e=0;ee&&(e=g);c&=~f}c=e;c=O()-c;c=(120>c?120:480>c?480:1080>c?1080:1920>c?1920:3E3>c?3E3:4320>\nc?4320:1960*nj(c/1960))-c;if(10 component higher in the tree to provide a loading indicator or placeholder to display.\")}5!==V&&(V=2);k=Mi(k,h);p=\ng;do{switch(p.tag){case 3:f=k;p.flags|=4096;b&=-b;p.lanes|=b;var J=Pi(p,f,b);Bg(p,J);break a;case 1:f=k;var K=p.type,Q=p.stateNode;if(0===(p.flags&64)&&(\"function\"===typeof K.getDerivedStateFromError||null!==Q&&\"function\"===typeof Q.componentDidCatch&&(null===Ti||!Ti.has(Q)))){p.flags|=4096;b&=-b;p.lanes|=b;var L=Si(p,f,b);Bg(p,L);break a}}p=p.return}while(null!==p)}Zj(c)}catch(va){b=va;Y===c&&null!==c&&(Y=c=c.return);continue}break}while(1)}\nfunction Pj(){var a=oj.current;oj.current=Gh;return null===a?Gh:a}function Tj(a,b){var c=X;X|=16;var d=Pj();U===a&&W===b||Qj(a,b);do try{ak();break}catch(e){Sj(a,e)}while(1);qg();X=c;oj.current=d;if(null!==Y)throw Error(y(261));U=null;W=0;return V}function ak(){for(;null!==Y;)bk(Y)}function Rj(){for(;null!==Y&&!Qf();)bk(Y)}function bk(a){var b=ck(a.alternate,a,qj);a.memoizedProps=a.pendingProps;null===b?Zj(a):Y=b;pj.current=null}\nfunction Zj(a){var b=a;do{var c=b.alternate;a=b.return;if(0===(b.flags&2048)){c=Gi(c,b,qj);if(null!==c){Y=c;return}c=b;if(24!==c.tag&&23!==c.tag||null===c.memoizedState||0!==(qj&1073741824)||0===(c.mode&4)){for(var d=0,e=c.child;null!==e;)d|=e.lanes|e.childLanes,e=e.sibling;c.childLanes=d}null!==a&&0===(a.flags&2048)&&(null===a.firstEffect&&(a.firstEffect=b.firstEffect),null!==b.lastEffect&&(null!==a.lastEffect&&(a.lastEffect.nextEffect=b.firstEffect),a.lastEffect=b.lastEffect),1g&&(h=g,g=J,J=h),h=Le(t,J),f=Le(t,g),h&&f&&(1!==v.rangeCount||v.anchorNode!==h.node||v.anchorOffset!==h.offset||v.focusNode!==f.node||v.focusOffset!==f.offset)&&(q=q.createRange(),q.setStart(h.node,h.offset),v.removeAllRanges(),J>g?(v.addRange(q),v.extend(f.node,f.offset)):(q.setEnd(f.node,f.offset),v.addRange(q))))));q=[];for(v=t;v=v.parentNode;)1===v.nodeType&&q.push({element:v,left:v.scrollLeft,top:v.scrollTop});\"function\"===typeof t.focus&&t.focus();for(t=\n0;tO()-jj?Qj(a,0):uj|=c);Mj(a,b)}function lj(a,b){var c=a.stateNode;null!==c&&c.delete(b);b=0;0===b&&(b=a.mode,0===(b&2)?b=1:0===(b&4)?b=99===eg()?1:2:(0===Gj&&(Gj=tj),b=Yc(62914560&~Gj),0===b&&(b=4194304)));c=Hg();a=Kj(a,b);null!==a&&($c(a,b,c),Mj(a,c))}var ck;\nck=function(a,b,c){var d=b.lanes;if(null!==a)if(a.memoizedProps!==b.pendingProps||N.current)ug=!0;else if(0!==(c&d))ug=0!==(a.flags&16384)?!0:!1;else{ug=!1;switch(b.tag){case 3:ri(b);sh();break;case 5:gh(b);break;case 1:Ff(b.type)&&Jf(b);break;case 4:eh(b,b.stateNode.containerInfo);break;case 10:d=b.memoizedProps.value;var e=b.type._context;I(mg,e._currentValue);e._currentValue=d;break;case 13:if(null!==b.memoizedState){if(0!==(c&b.child.childLanes))return ti(a,b,c);I(P,P.current&1);b=hi(a,b,c);return null!==\nb?b.sibling:null}I(P,P.current&1);break;case 19:d=0!==(c&b.childLanes);if(0!==(a.flags&64)){if(d)return Ai(a,b,c);b.flags|=64}e=b.memoizedState;null!==e&&(e.rendering=null,e.tail=null,e.lastEffect=null);I(P,P.current);if(d)break;else return null;case 23:case 24:return b.lanes=0,mi(a,b,c)}return hi(a,b,c)}else ug=!1;b.lanes=0;switch(b.tag){case 2:d=b.type;null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2);a=b.pendingProps;e=Ef(b,M.current);tg(b,c);e=Ch(null,b,d,a,e,c);b.flags|=1;if(\"object\"===\ntypeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof){b.tag=1;b.memoizedState=null;b.updateQueue=null;if(Ff(d)){var f=!0;Jf(b)}else f=!1;b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null;xg(b);var g=d.getDerivedStateFromProps;\"function\"===typeof g&&Gg(b,d,g,a);e.updater=Kg;b.stateNode=e;e._reactInternals=b;Og(b,d,a,c);b=qi(null,b,d,!0,f,c)}else b.tag=0,fi(null,b,e,c),b=b.child;return b;case 16:e=b.elementType;a:{null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2);\na=b.pendingProps;f=e._init;e=f(e._payload);b.type=e;f=b.tag=hk(e);a=lg(e,a);switch(f){case 0:b=li(null,b,e,a,c);break a;case 1:b=pi(null,b,e,a,c);break a;case 11:b=gi(null,b,e,a,c);break a;case 14:b=ii(null,b,e,lg(e.type,a),d,c);break a}throw Error(y(306,e,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:lg(d,e),li(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:lg(d,e),pi(a,b,d,e,c);case 3:ri(b);d=b.updateQueue;if(null===a||null===d)throw Error(y(282));\nd=b.pendingProps;e=b.memoizedState;e=null!==e?e.element:null;yg(a,b);Cg(b,d,null,c);d=b.memoizedState.element;if(d===e)sh(),b=hi(a,b,c);else{e=b.stateNode;if(f=e.hydrate)kh=rf(b.stateNode.containerInfo.firstChild),jh=b,f=lh=!0;if(f){a=e.mutableSourceEagerHydrationData;if(null!=a)for(e=0;e} */ out = [];\n\tfor (var i = 0; i < possibleNames.length; i++) {\n\t\tif (typeof g[possibleNames[i]] === 'function') {\n\t\t\t// @ts-expect-error\n\t\t\tout[out.length] = possibleNames[i];\n\t\t}\n\t}\n\treturn out;\n};\n","'use strict';\n// `GetIteratorDirect(obj)` abstract operation\n// https://tc39.es/proposal-iterator-helpers/#sec-getiteratordirect\nmodule.exports = function (obj) {\n return {\n iterator: obj,\n next: obj.next,\n done: false\n };\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport LogLevel from './LogLevel';\nimport NoOpLogger from './NoOpLogger';\n\n/**\n * [[NoOpDebugLogger]] does not log any message but does call\n * debug functions by default.\n */\nexport default class NoOpDebugLogger extends NoOpLogger {\n constructor() {\n super(LogLevel.DEBUG);\n }\n}\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\n// eslint-disable-next-line es/no-set -- safe\nvar SetPrototype = Set.prototype;\n\nmodule.exports = {\n // eslint-disable-next-line es/no-set -- safe\n Set: Set,\n add: uncurryThis(SetPrototype.add),\n has: uncurryThis(SetPrototype.has),\n remove: uncurryThis(SetPrototype['delete']),\n proto: SetPrototype\n};\n","var escapeAttribute = require('./escape-attribute').escapeAttribute;\n\n/**\n * Represents an XML node.\n * @api private\n */\nfunction XmlNode(name, children) {\n if (children === void 0) { children = []; }\n this.name = name;\n this.children = children;\n this.attributes = {};\n}\nXmlNode.prototype.addAttribute = function (name, value) {\n this.attributes[name] = value;\n return this;\n};\nXmlNode.prototype.addChildNode = function (child) {\n this.children.push(child);\n return this;\n};\nXmlNode.prototype.removeAttribute = function (name) {\n delete this.attributes[name];\n return this;\n};\nXmlNode.prototype.toString = function () {\n var hasChildren = Boolean(this.children.length);\n var xmlText = '<' + this.name;\n // add attributes\n var attributes = this.attributes;\n for (var i = 0, attributeNames = Object.keys(attributes); i < attributeNames.length; i++) {\n var attributeName = attributeNames[i];\n var attribute = attributes[attributeName];\n if (typeof attribute !== 'undefined' && attribute !== null) {\n xmlText += ' ' + attributeName + '=\\\"' + escapeAttribute('' + attribute) + '\\\"';\n }\n }\n return xmlText += !hasChildren ? '/>' : '>' + this.children.map(function (c) { return c.toString(); }).join('') + '';\n};\n\n/**\n * @api private\n */\nmodule.exports = {\n XmlNode: XmlNode\n};\n","'use strict';\n\nexports.decode = exports.parse = require('./decode');\nexports.encode = exports.stringify = require('./encode');\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport ConnectionHealthData from './ConnectionHealthData';\nimport ConnectionHealthPolicy from './ConnectionHealthPolicy';\nimport ConnectionHealthPolicyConfiguration from './ConnectionHealthPolicyConfiguration';\n\nexport default class BaseConnectionHealthPolicy implements ConnectionHealthPolicy {\n protected currentData: ConnectionHealthData;\n protected minHealth: number;\n protected maxHealth: number;\n protected currentHealth: number;\n readonly name?: string;\n\n constructor(\n configuration: ConnectionHealthPolicyConfiguration,\n data: ConnectionHealthData,\n name?: string\n ) {\n this.minHealth = configuration.minHealth;\n this.maxHealth = configuration.maxHealth;\n this.currentHealth = configuration.initialHealth;\n this.currentData = data.clone();\n this.name = name;\n }\n\n minimumHealth(): number {\n return this.minHealth;\n }\n\n maximumHealth(): number {\n return this.maxHealth;\n }\n\n health(): number {\n return this.maximumHealth();\n }\n\n update(connectionHealthData: ConnectionHealthData): void {\n this.currentData = connectionHealthData;\n }\n\n getConnectionHealthData(): ConnectionHealthData {\n return this.currentData.clone();\n }\n\n healthy(): boolean {\n return this.health() > this.minimumHealth();\n }\n\n healthIfChanged(): number | null {\n const newHealth = this.health();\n if (newHealth !== this.currentHealth) {\n this.currentHealth = newHealth;\n return newHealth;\n }\n return null;\n }\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar LinkedListNode = /** @class */ (function () {\n function LinkedListNode(key, value) {\n this.key = key;\n this.value = value;\n }\n return LinkedListNode;\n}());\nvar LRUCache = /** @class */ (function () {\n function LRUCache(size) {\n this.nodeMap = {};\n this.size = 0;\n if (typeof size !== 'number' || size < 1) {\n throw new Error('Cache size can only be positive number');\n }\n this.sizeLimit = size;\n }\n Object.defineProperty(LRUCache.prototype, \"length\", {\n get: function () {\n return this.size;\n },\n enumerable: true,\n configurable: true\n });\n LRUCache.prototype.prependToList = function (node) {\n if (!this.headerNode) {\n this.tailNode = node;\n }\n else {\n this.headerNode.prev = node;\n node.next = this.headerNode;\n }\n this.headerNode = node;\n this.size++;\n };\n LRUCache.prototype.removeFromTail = function () {\n if (!this.tailNode) {\n return undefined;\n }\n var node = this.tailNode;\n var prevNode = node.prev;\n if (prevNode) {\n prevNode.next = undefined;\n }\n node.prev = undefined;\n this.tailNode = prevNode;\n this.size--;\n return node;\n };\n LRUCache.prototype.detachFromList = function (node) {\n if (this.headerNode === node) {\n this.headerNode = node.next;\n }\n if (this.tailNode === node) {\n this.tailNode = node.prev;\n }\n if (node.prev) {\n node.prev.next = node.next;\n }\n if (node.next) {\n node.next.prev = node.prev;\n }\n node.next = undefined;\n node.prev = undefined;\n this.size--;\n };\n LRUCache.prototype.get = function (key) {\n if (this.nodeMap[key]) {\n var node = this.nodeMap[key];\n this.detachFromList(node);\n this.prependToList(node);\n return node.value;\n }\n };\n LRUCache.prototype.remove = function (key) {\n if (this.nodeMap[key]) {\n var node = this.nodeMap[key];\n this.detachFromList(node);\n delete this.nodeMap[key];\n }\n };\n LRUCache.prototype.put = function (key, value) {\n if (this.nodeMap[key]) {\n this.remove(key);\n }\n else if (this.size === this.sizeLimit) {\n var tailNode = this.removeFromTail();\n var key_1 = tailNode.key;\n delete this.nodeMap[key_1];\n }\n var newNode = new LinkedListNode(key, value);\n this.nodeMap[key] = newNode;\n this.prependToList(newNode);\n };\n LRUCache.prototype.empty = function () {\n var keys = Object.keys(this.nodeMap);\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n var node = this.nodeMap[key];\n this.detachFromList(node);\n delete this.nodeMap[key];\n }\n };\n return LRUCache;\n}());\nexports.LRUCache = LRUCache;","/**\n * Secure Hash Algorithm with 256-bit digest (SHA-256) implementation.\n *\n * See FIPS 180-2 for details.\n *\n * @author Dave Longley\n *\n * Copyright (c) 2010-2015 Digital Bazaar, Inc.\n */\nvar forge = require('./forge');\nrequire('./md');\nrequire('./util');\n\nvar sha256 = module.exports = forge.sha256 = forge.sha256 || {};\nforge.md.sha256 = forge.md.algorithms.sha256 = sha256;\n\n/**\n * Creates a SHA-256 message digest object.\n *\n * @return a message digest object.\n */\nsha256.create = function() {\n // do initialization as necessary\n if(!_initialized) {\n _init();\n }\n\n // SHA-256 state contains eight 32-bit integers\n var _state = null;\n\n // input buffer\n var _input = forge.util.createBuffer();\n\n // used for word storage\n var _w = new Array(64);\n\n // message digest object\n var md = {\n algorithm: 'sha256',\n blockLength: 64,\n digestLength: 32,\n // 56-bit length of message so far (does not including padding)\n messageLength: 0,\n // true message length\n fullMessageLength: null,\n // size of message length in bytes\n messageLengthSize: 8\n };\n\n /**\n * Starts the digest.\n *\n * @return this digest object.\n */\n md.start = function() {\n // up to 56-bit message length for convenience\n md.messageLength = 0;\n\n // full message length (set md.messageLength64 for backwards-compatibility)\n md.fullMessageLength = md.messageLength64 = [];\n var int32s = md.messageLengthSize / 4;\n for(var i = 0; i < int32s; ++i) {\n md.fullMessageLength.push(0);\n }\n _input = forge.util.createBuffer();\n _state = {\n h0: 0x6A09E667,\n h1: 0xBB67AE85,\n h2: 0x3C6EF372,\n h3: 0xA54FF53A,\n h4: 0x510E527F,\n h5: 0x9B05688C,\n h6: 0x1F83D9AB,\n h7: 0x5BE0CD19\n };\n return md;\n };\n // start digest automatically for first time\n md.start();\n\n /**\n * Updates the digest with the given message input. The given input can\n * treated as raw input (no encoding will be applied) or an encoding of\n * 'utf8' maybe given to encode the input using UTF-8.\n *\n * @param msg the message input to update with.\n * @param encoding the encoding to use (default: 'raw', other: 'utf8').\n *\n * @return this digest object.\n */\n md.update = function(msg, encoding) {\n if(encoding === 'utf8') {\n msg = forge.util.encodeUtf8(msg);\n }\n\n // update message length\n var len = msg.length;\n md.messageLength += len;\n len = [(len / 0x100000000) >>> 0, len >>> 0];\n for(var i = md.fullMessageLength.length - 1; i >= 0; --i) {\n md.fullMessageLength[i] += len[1];\n len[1] = len[0] + ((md.fullMessageLength[i] / 0x100000000) >>> 0);\n md.fullMessageLength[i] = md.fullMessageLength[i] >>> 0;\n len[0] = ((len[1] / 0x100000000) >>> 0);\n }\n\n // add bytes to input buffer\n _input.putBytes(msg);\n\n // process bytes\n _update(_state, _w, _input);\n\n // compact input buffer every 2K or if empty\n if(_input.read > 2048 || _input.length() === 0) {\n _input.compact();\n }\n\n return md;\n };\n\n /**\n * Produces the digest.\n *\n * @return a byte buffer containing the digest value.\n */\n md.digest = function() {\n /* Note: Here we copy the remaining bytes in the input buffer and\n add the appropriate SHA-256 padding. Then we do the final update\n on a copy of the state so that if the user wants to get\n intermediate digests they can do so. */\n\n /* Determine the number of bytes that must be added to the message\n to ensure its length is congruent to 448 mod 512. In other words,\n the data to be digested must be a multiple of 512 bits (or 128 bytes).\n This data includes the message, some padding, and the length of the\n message. Since the length of the message will be encoded as 8 bytes (64\n bits), that means that the last segment of the data must have 56 bytes\n (448 bits) of message and padding. Therefore, the length of the message\n plus the padding must be congruent to 448 mod 512 because\n 512 - 128 = 448.\n\n In order to fill up the message length it must be filled with\n padding that begins with 1 bit followed by all 0 bits. Padding\n must *always* be present, so if the message length is already\n congruent to 448 mod 512, then 512 padding bits must be added. */\n\n var finalBlock = forge.util.createBuffer();\n finalBlock.putBytes(_input.bytes());\n\n // compute remaining size to be digested (include message length size)\n var remaining = (\n md.fullMessageLength[md.fullMessageLength.length - 1] +\n md.messageLengthSize);\n\n // add padding for overflow blockSize - overflow\n // _padding starts with 1 byte with first bit is set (byte value 128), then\n // there may be up to (blockSize - 1) other pad bytes\n var overflow = remaining & (md.blockLength - 1);\n finalBlock.putBytes(_padding.substr(0, md.blockLength - overflow));\n\n // serialize message length in bits in big-endian order; since length\n // is stored in bytes we multiply by 8 and add carry from next int\n var next, carry;\n var bits = md.fullMessageLength[0] * 8;\n for(var i = 0; i < md.fullMessageLength.length - 1; ++i) {\n next = md.fullMessageLength[i + 1] * 8;\n carry = (next / 0x100000000) >>> 0;\n bits += carry;\n finalBlock.putInt32(bits >>> 0);\n bits = next >>> 0;\n }\n finalBlock.putInt32(bits);\n\n var s2 = {\n h0: _state.h0,\n h1: _state.h1,\n h2: _state.h2,\n h3: _state.h3,\n h4: _state.h4,\n h5: _state.h5,\n h6: _state.h6,\n h7: _state.h7\n };\n _update(s2, _w, finalBlock);\n var rval = forge.util.createBuffer();\n rval.putInt32(s2.h0);\n rval.putInt32(s2.h1);\n rval.putInt32(s2.h2);\n rval.putInt32(s2.h3);\n rval.putInt32(s2.h4);\n rval.putInt32(s2.h5);\n rval.putInt32(s2.h6);\n rval.putInt32(s2.h7);\n return rval;\n };\n\n return md;\n};\n\n// sha-256 padding bytes not initialized yet\nvar _padding = null;\nvar _initialized = false;\n\n// table of constants\nvar _k = null;\n\n/**\n * Initializes the constant tables.\n */\nfunction _init() {\n // create padding\n _padding = String.fromCharCode(128);\n _padding += forge.util.fillString(String.fromCharCode(0x00), 64);\n\n // create K table for SHA-256\n _k = [\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,\n 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,\n 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,\n 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,\n 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,\n 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,\n 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,\n 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\n 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2];\n\n // now initialized\n _initialized = true;\n}\n\n/**\n * Updates a SHA-256 state with the given byte buffer.\n *\n * @param s the SHA-256 state to update.\n * @param w the array to use to store words.\n * @param bytes the byte buffer to update with.\n */\nfunction _update(s, w, bytes) {\n // consume 512 bit (64 byte) chunks\n var t1, t2, s0, s1, ch, maj, i, a, b, c, d, e, f, g, h;\n var len = bytes.length();\n while(len >= 64) {\n // the w array will be populated with sixteen 32-bit big-endian words\n // and then extended into 64 32-bit words according to SHA-256\n for(i = 0; i < 16; ++i) {\n w[i] = bytes.getInt32();\n }\n for(; i < 64; ++i) {\n // XOR word 2 words ago rot right 17, rot right 19, shft right 10\n t1 = w[i - 2];\n t1 =\n ((t1 >>> 17) | (t1 << 15)) ^\n ((t1 >>> 19) | (t1 << 13)) ^\n (t1 >>> 10);\n // XOR word 15 words ago rot right 7, rot right 18, shft right 3\n t2 = w[i - 15];\n t2 =\n ((t2 >>> 7) | (t2 << 25)) ^\n ((t2 >>> 18) | (t2 << 14)) ^\n (t2 >>> 3);\n // sum(t1, word 7 ago, t2, word 16 ago) modulo 2^32\n w[i] = (t1 + w[i - 7] + t2 + w[i - 16]) | 0;\n }\n\n // initialize hash value for this chunk\n a = s.h0;\n b = s.h1;\n c = s.h2;\n d = s.h3;\n e = s.h4;\n f = s.h5;\n g = s.h6;\n h = s.h7;\n\n // round function\n for(i = 0; i < 64; ++i) {\n // Sum1(e)\n s1 =\n ((e >>> 6) | (e << 26)) ^\n ((e >>> 11) | (e << 21)) ^\n ((e >>> 25) | (e << 7));\n // Ch(e, f, g) (optimized the same way as SHA-1)\n ch = g ^ (e & (f ^ g));\n // Sum0(a)\n s0 =\n ((a >>> 2) | (a << 30)) ^\n ((a >>> 13) | (a << 19)) ^\n ((a >>> 22) | (a << 10));\n // Maj(a, b, c) (optimized the same way as SHA-1)\n maj = (a & b) | (c & (a ^ b));\n\n // main algorithm\n t1 = h + s1 + ch + _k[i] + w[i];\n t2 = s0 + maj;\n h = g;\n g = f;\n f = e;\n // `>>> 0` necessary to avoid iOS/Safari 10 optimization bug\n // can't truncate with `| 0`\n e = (d + t1) >>> 0;\n d = c;\n c = b;\n b = a;\n // `>>> 0` necessary to avoid iOS/Safari 10 optimization bug\n // can't truncate with `| 0`\n a = (t1 + t2) >>> 0;\n }\n\n // update hash state\n s.h0 = (s.h0 + a) | 0;\n s.h1 = (s.h1 + b) | 0;\n s.h2 = (s.h2 + c) | 0;\n s.h3 = (s.h3 + d) | 0;\n s.h4 = (s.h4 + e) | 0;\n s.h5 = (s.h5 + f) | 0;\n s.h6 = (s.h6 + g) | 0;\n s.h7 = (s.h7 + h) | 0;\n len -= 64;\n }\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport Logger from '../logger/Logger';\nimport TimeoutScheduler from '../scheduler/TimeoutScheduler';\nimport BaseTask from './BaseTask';\nimport Task from './Task';\n\n/**\n * [[TimeoutTask]] runs a subtask until it either succeeds or reaches a\n * timeout, at which point the subtask is canceled.\n */\nexport default class TimeoutTask extends BaseTask {\n protected taskName: string;\n\n constructor(logger: Logger, private taskToRunBeforeTimeout: Task, private timeoutMs: number) {\n super(logger);\n this.taskName = `Timeout${this.timeoutMs}ms`;\n taskToRunBeforeTimeout.setParent(this);\n }\n\n cancel(): void {\n this.logger.info(\n `canceling timeout task ${this.name()} subtask ${this.taskToRunBeforeTimeout}`\n );\n this.taskToRunBeforeTimeout.cancel();\n }\n\n async run(): Promise {\n const timer = new TimeoutScheduler(this.timeoutMs);\n timer.start(() => {\n this.logger.info(`timeout reached for task ${this.name()}`);\n this.taskToRunBeforeTimeout.cancel();\n });\n try {\n await this.taskToRunBeforeTimeout.run();\n } finally {\n timer.stop();\n }\n this.logger.info(`timeout task ${this.name()} completed`);\n }\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport MediaDeviceFactory from './MediaDeviceFactory';\nimport MediaDeviceProxyHandler from './MediaDeviceProxyHandler';\n\nexport default class DefaultMediaDeviceFactory implements MediaDeviceFactory {\n private isMediaDevicesSupported: boolean;\n\n constructor() {\n this.isMediaDevicesSupported = typeof navigator !== 'undefined' && !!navigator.mediaDevices;\n }\n\n create(): MediaDevices {\n if (!this.isMediaDevicesSupported) {\n throw new Error(`navigator.mediaDevices is not supported`);\n } else {\n return new Proxy(navigator.mediaDevices, new MediaDeviceProxyHandler());\n }\n }\n}\n","'use strict';\n/* eslint-disable es/no-symbol -- required for testing */\nvar V8_VERSION = require('../internals/environment-v8-version');\nvar fails = require('../internals/fails');\nvar globalThis = require('../internals/global-this');\n\nvar $String = globalThis.String;\n\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n var symbol = Symbol('symbol detection');\n // Chrome 38 Symbol has incorrect toString conversion\n // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances\n // nb: Do not call `String` directly to avoid this being optimized out to `symbol+''` which will,\n // of course, fail.\n return !$String(symbol) || !(Object(symbol) instanceof Symbol) ||\n // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances\n !Symbol.sham && V8_VERSION && V8_VERSION < 41;\n});\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport Destroyable from '../destroyable/Destroyable';\nimport DevicePixelRatioObserver from '../devicepixelratioobserver/DevicePixelRatioObserver';\nimport DevicePixelRatioSource from '../devicepixelratiosource/DevicePixelRatioSource';\nimport Logger from '../logger/Logger';\nimport DevicePixelRatioMonitor from './DevicePixelRatioMonitor';\n\nexport default class DefaultDevicePixelRatioMonitor\n implements DevicePixelRatioMonitor, Destroyable {\n private observerQueue = new Set();\n private mediaQueryList: undefined | MediaQueryList;\n\n constructor(private devicePixelRatioSource: DevicePixelRatioSource, logger: Logger) {\n if (typeof window === 'undefined') {\n return;\n }\n\n const mediaQueryList = matchMedia(\n `(resolution: ${this.devicePixelRatioSource.devicePixelRatio()}dppx)`\n );\n if (typeof mediaQueryList.addEventListener === 'function') {\n mediaQueryList.addEventListener('change', this.mediaQueryListener);\n this.mediaQueryList = mediaQueryList;\n } else if (typeof mediaQueryList.addListener === 'function') {\n mediaQueryList.addListener(this.mediaQueryListener);\n this.mediaQueryList = mediaQueryList;\n } else {\n logger.warn('ignoring DefaultDevicePixelRatioMonitor');\n }\n }\n\n async destroy(): Promise {\n if (this.mediaQueryList) {\n if (typeof this.mediaQueryList.addEventListener === 'function') {\n this.mediaQueryList.removeEventListener('change', this.mediaQueryListener);\n } else {\n this.mediaQueryList.removeListener(this.mediaQueryListener);\n }\n }\n delete this.mediaQueryListener;\n this.observerQueue.clear();\n }\n\n mediaQueryListener = (): void => {\n this.observerQueue.forEach(tileObserver => {\n tileObserver.devicePixelRatioChanged(this.devicePixelRatioSource.devicePixelRatio());\n });\n };\n\n registerObserver(observer: DevicePixelRatioObserver): void {\n this.observerQueue.add(observer);\n observer.devicePixelRatioChanged(this.devicePixelRatioSource.devicePixelRatio());\n }\n\n removeObserver(observer: DevicePixelRatioObserver): void {\n this.observerQueue.delete(observer);\n }\n}\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['ecr'] = {};\nAWS.ECR = Service.defineService('ecr', ['2015-09-21']);\nObject.defineProperty(apiLoader.services['ecr'], '2015-09-21', {\n get: function get() {\n var model = require('../apis/ecr-2015-09-21.min.json');\n model.paginators = require('../apis/ecr-2015-09-21.paginators.json').pagination;\n model.waiters = require('../apis/ecr-2015-09-21.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.ECR;\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar hasOwn = require('../internals/has-own-property');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar CONFIGURABLE_FUNCTION_NAME = require('../internals/function-name').CONFIGURABLE;\nvar inspectSource = require('../internals/inspect-source');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar enforceInternalState = InternalStateModule.enforce;\nvar getInternalState = InternalStateModule.get;\nvar $String = String;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\nvar stringSlice = uncurryThis(''.slice);\nvar replace = uncurryThis(''.replace);\nvar join = uncurryThis([].join);\n\nvar CONFIGURABLE_LENGTH = DESCRIPTORS && !fails(function () {\n return defineProperty(function () { /* empty */ }, 'length', { value: 8 }).length !== 8;\n});\n\nvar TEMPLATE = String(String).split('String');\n\nvar makeBuiltIn = module.exports = function (value, name, options) {\n if (stringSlice($String(name), 0, 7) === 'Symbol(') {\n name = '[' + replace($String(name), /^Symbol\\(([^)]*)\\).*$/, '$1') + ']';\n }\n if (options && options.getter) name = 'get ' + name;\n if (options && options.setter) name = 'set ' + name;\n if (!hasOwn(value, 'name') || (CONFIGURABLE_FUNCTION_NAME && value.name !== name)) {\n if (DESCRIPTORS) defineProperty(value, 'name', { value: name, configurable: true });\n else value.name = name;\n }\n if (CONFIGURABLE_LENGTH && options && hasOwn(options, 'arity') && value.length !== options.arity) {\n defineProperty(value, 'length', { value: options.arity });\n }\n try {\n if (options && hasOwn(options, 'constructor') && options.constructor) {\n if (DESCRIPTORS) defineProperty(value, 'prototype', { writable: false });\n // in V8 ~ Chrome 53, prototypes of some methods, like `Array.prototype.values`, are non-writable\n } else if (value.prototype) value.prototype = undefined;\n } catch (error) { /* empty */ }\n var state = enforceInternalState(value);\n if (!hasOwn(state, 'source')) {\n state.source = join(TEMPLATE, typeof name == 'string' ? name : '');\n } return value;\n};\n\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n// eslint-disable-next-line no-extend-native -- required\nFunction.prototype.toString = makeBuiltIn(function toString() {\n return isCallable(this) && getInternalState(this).source || inspectSource(this);\n}, 'toString');\n",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory();\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\troot.CryptoJS = factory();\n\t}\n}(this, function () {\n\n\t/*globals window, global, require*/\n\n\t/**\n\t * CryptoJS core components.\n\t */\n\tvar CryptoJS = CryptoJS || (function (Math, undefined) {\n\n\t var crypto;\n\n\t // Native crypto from window (Browser)\n\t if (typeof window !== 'undefined' && window.crypto) {\n\t crypto = window.crypto;\n\t }\n\n\t // Native crypto in web worker (Browser)\n\t if (typeof self !== 'undefined' && self.crypto) {\n\t crypto = self.crypto;\n\t }\n\n\t // Native crypto from worker\n\t if (typeof globalThis !== 'undefined' && globalThis.crypto) {\n\t crypto = globalThis.crypto;\n\t }\n\n\t // Native (experimental IE 11) crypto from window (Browser)\n\t if (!crypto && typeof window !== 'undefined' && window.msCrypto) {\n\t crypto = window.msCrypto;\n\t }\n\n\t // Native crypto from global (NodeJS)\n\t if (!crypto && typeof global !== 'undefined' && global.crypto) {\n\t crypto = global.crypto;\n\t }\n\n\t // Native crypto import via require (NodeJS)\n\t if (!crypto && typeof require === 'function') {\n\t try {\n\t crypto = require('crypto');\n\t } catch (err) {}\n\t }\n\n\t /*\n\t * Cryptographically secure pseudorandom number generator\n\t *\n\t * As Math.random() is cryptographically not safe to use\n\t */\n\t var cryptoSecureRandomInt = function () {\n\t if (crypto) {\n\t // Use getRandomValues method (Browser)\n\t if (typeof crypto.getRandomValues === 'function') {\n\t try {\n\t return crypto.getRandomValues(new Uint32Array(1))[0];\n\t } catch (err) {}\n\t }\n\n\t // Use randomBytes method (NodeJS)\n\t if (typeof crypto.randomBytes === 'function') {\n\t try {\n\t return crypto.randomBytes(4).readInt32LE();\n\t } catch (err) {}\n\t }\n\t }\n\n\t throw new Error('Native crypto module could not be used to get secure random number.');\n\t };\n\n\t /*\n\t * Local polyfill of Object.create\n\n\t */\n\t var create = Object.create || (function () {\n\t function F() {}\n\n\t return function (obj) {\n\t var subtype;\n\n\t F.prototype = obj;\n\n\t subtype = new F();\n\n\t F.prototype = null;\n\n\t return subtype;\n\t };\n\t }());\n\n\t /**\n\t * CryptoJS namespace.\n\t */\n\t var C = {};\n\n\t /**\n\t * Library namespace.\n\t */\n\t var C_lib = C.lib = {};\n\n\t /**\n\t * Base object for prototypal inheritance.\n\t */\n\t var Base = C_lib.Base = (function () {\n\n\n\t return {\n\t /**\n\t * Creates a new object that inherits from this object.\n\t *\n\t * @param {Object} overrides Properties to copy into the new object.\n\t *\n\t * @return {Object} The new object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var MyType = CryptoJS.lib.Base.extend({\n\t * field: 'value',\n\t *\n\t * method: function () {\n\t * }\n\t * });\n\t */\n\t extend: function (overrides) {\n\t // Spawn\n\t var subtype = create(this);\n\n\t // Augment\n\t if (overrides) {\n\t subtype.mixIn(overrides);\n\t }\n\n\t // Create default initializer\n\t if (!subtype.hasOwnProperty('init') || this.init === subtype.init) {\n\t subtype.init = function () {\n\t subtype.$super.init.apply(this, arguments);\n\t };\n\t }\n\n\t // Initializer's prototype is the subtype object\n\t subtype.init.prototype = subtype;\n\n\t // Reference supertype\n\t subtype.$super = this;\n\n\t return subtype;\n\t },\n\n\t /**\n\t * Extends this object and runs the init method.\n\t * Arguments to create() will be passed to init().\n\t *\n\t * @return {Object} The new object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var instance = MyType.create();\n\t */\n\t create: function () {\n\t var instance = this.extend();\n\t instance.init.apply(instance, arguments);\n\n\t return instance;\n\t },\n\n\t /**\n\t * Initializes a newly created object.\n\t * Override this method to add some logic when your objects are created.\n\t *\n\t * @example\n\t *\n\t * var MyType = CryptoJS.lib.Base.extend({\n\t * init: function () {\n\t * // ...\n\t * }\n\t * });\n\t */\n\t init: function () {\n\t },\n\n\t /**\n\t * Copies properties into this object.\n\t *\n\t * @param {Object} properties The properties to mix in.\n\t *\n\t * @example\n\t *\n\t * MyType.mixIn({\n\t * field: 'value'\n\t * });\n\t */\n\t mixIn: function (properties) {\n\t for (var propertyName in properties) {\n\t if (properties.hasOwnProperty(propertyName)) {\n\t this[propertyName] = properties[propertyName];\n\t }\n\t }\n\n\t // IE won't copy toString using the loop above\n\t if (properties.hasOwnProperty('toString')) {\n\t this.toString = properties.toString;\n\t }\n\t },\n\n\t /**\n\t * Creates a copy of this object.\n\t *\n\t * @return {Object} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = instance.clone();\n\t */\n\t clone: function () {\n\t return this.init.prototype.extend(this);\n\t }\n\t };\n\t }());\n\n\t /**\n\t * An array of 32-bit words.\n\t *\n\t * @property {Array} words The array of 32-bit words.\n\t * @property {number} sigBytes The number of significant bytes in this word array.\n\t */\n\t var WordArray = C_lib.WordArray = Base.extend({\n\t /**\n\t * Initializes a newly created word array.\n\t *\n\t * @param {Array} words (Optional) An array of 32-bit words.\n\t * @param {number} sigBytes (Optional) The number of significant bytes in the words.\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.lib.WordArray.create();\n\t * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607]);\n\t * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607], 6);\n\t */\n\t init: function (words, sigBytes) {\n\t words = this.words = words || [];\n\n\t if (sigBytes != undefined) {\n\t this.sigBytes = sigBytes;\n\t } else {\n\t this.sigBytes = words.length * 4;\n\t }\n\t },\n\n\t /**\n\t * Converts this word array to a string.\n\t *\n\t * @param {Encoder} encoder (Optional) The encoding strategy to use. Default: CryptoJS.enc.Hex\n\t *\n\t * @return {string} The stringified word array.\n\t *\n\t * @example\n\t *\n\t * var string = wordArray + '';\n\t * var string = wordArray.toString();\n\t * var string = wordArray.toString(CryptoJS.enc.Utf8);\n\t */\n\t toString: function (encoder) {\n\t return (encoder || Hex).stringify(this);\n\t },\n\n\t /**\n\t * Concatenates a word array to this word array.\n\t *\n\t * @param {WordArray} wordArray The word array to append.\n\t *\n\t * @return {WordArray} This word array.\n\t *\n\t * @example\n\t *\n\t * wordArray1.concat(wordArray2);\n\t */\n\t concat: function (wordArray) {\n\t // Shortcuts\n\t var thisWords = this.words;\n\t var thatWords = wordArray.words;\n\t var thisSigBytes = this.sigBytes;\n\t var thatSigBytes = wordArray.sigBytes;\n\n\t // Clamp excess bits\n\t this.clamp();\n\n\t // Concat\n\t if (thisSigBytes % 4) {\n\t // Copy one byte at a time\n\t for (var i = 0; i < thatSigBytes; i++) {\n\t var thatByte = (thatWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t thisWords[(thisSigBytes + i) >>> 2] |= thatByte << (24 - ((thisSigBytes + i) % 4) * 8);\n\t }\n\t } else {\n\t // Copy one word at a time\n\t for (var j = 0; j < thatSigBytes; j += 4) {\n\t thisWords[(thisSigBytes + j) >>> 2] = thatWords[j >>> 2];\n\t }\n\t }\n\t this.sigBytes += thatSigBytes;\n\n\t // Chainable\n\t return this;\n\t },\n\n\t /**\n\t * Removes insignificant bits.\n\t *\n\t * @example\n\t *\n\t * wordArray.clamp();\n\t */\n\t clamp: function () {\n\t // Shortcuts\n\t var words = this.words;\n\t var sigBytes = this.sigBytes;\n\n\t // Clamp\n\t words[sigBytes >>> 2] &= 0xffffffff << (32 - (sigBytes % 4) * 8);\n\t words.length = Math.ceil(sigBytes / 4);\n\t },\n\n\t /**\n\t * Creates a copy of this word array.\n\t *\n\t * @return {WordArray} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = wordArray.clone();\n\t */\n\t clone: function () {\n\t var clone = Base.clone.call(this);\n\t clone.words = this.words.slice(0);\n\n\t return clone;\n\t },\n\n\t /**\n\t * Creates a word array filled with random bytes.\n\t *\n\t * @param {number} nBytes The number of random bytes to generate.\n\t *\n\t * @return {WordArray} The random word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.lib.WordArray.random(16);\n\t */\n\t random: function (nBytes) {\n\t var words = [];\n\n\t for (var i = 0; i < nBytes; i += 4) {\n\t words.push(cryptoSecureRandomInt());\n\t }\n\n\t return new WordArray.init(words, nBytes);\n\t }\n\t });\n\n\t /**\n\t * Encoder namespace.\n\t */\n\t var C_enc = C.enc = {};\n\n\t /**\n\t * Hex encoding strategy.\n\t */\n\t var Hex = C_enc.Hex = {\n\t /**\n\t * Converts a word array to a hex string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The hex string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hexString = CryptoJS.enc.Hex.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var hexChars = [];\n\t for (var i = 0; i < sigBytes; i++) {\n\t var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t hexChars.push((bite >>> 4).toString(16));\n\t hexChars.push((bite & 0x0f).toString(16));\n\t }\n\n\t return hexChars.join('');\n\t },\n\n\t /**\n\t * Converts a hex string to a word array.\n\t *\n\t * @param {string} hexStr The hex string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Hex.parse(hexString);\n\t */\n\t parse: function (hexStr) {\n\t // Shortcut\n\t var hexStrLength = hexStr.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < hexStrLength; i += 2) {\n\t words[i >>> 3] |= parseInt(hexStr.substr(i, 2), 16) << (24 - (i % 8) * 4);\n\t }\n\n\t return new WordArray.init(words, hexStrLength / 2);\n\t }\n\t };\n\n\t /**\n\t * Latin1 encoding strategy.\n\t */\n\t var Latin1 = C_enc.Latin1 = {\n\t /**\n\t * Converts a word array to a Latin1 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The Latin1 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var latin1String = CryptoJS.enc.Latin1.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var latin1Chars = [];\n\t for (var i = 0; i < sigBytes; i++) {\n\t var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t latin1Chars.push(String.fromCharCode(bite));\n\t }\n\n\t return latin1Chars.join('');\n\t },\n\n\t /**\n\t * Converts a Latin1 string to a word array.\n\t *\n\t * @param {string} latin1Str The Latin1 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Latin1.parse(latin1String);\n\t */\n\t parse: function (latin1Str) {\n\t // Shortcut\n\t var latin1StrLength = latin1Str.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < latin1StrLength; i++) {\n\t words[i >>> 2] |= (latin1Str.charCodeAt(i) & 0xff) << (24 - (i % 4) * 8);\n\t }\n\n\t return new WordArray.init(words, latin1StrLength);\n\t }\n\t };\n\n\t /**\n\t * UTF-8 encoding strategy.\n\t */\n\t var Utf8 = C_enc.Utf8 = {\n\t /**\n\t * Converts a word array to a UTF-8 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The UTF-8 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var utf8String = CryptoJS.enc.Utf8.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t try {\n\t return decodeURIComponent(escape(Latin1.stringify(wordArray)));\n\t } catch (e) {\n\t throw new Error('Malformed UTF-8 data');\n\t }\n\t },\n\n\t /**\n\t * Converts a UTF-8 string to a word array.\n\t *\n\t * @param {string} utf8Str The UTF-8 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Utf8.parse(utf8String);\n\t */\n\t parse: function (utf8Str) {\n\t return Latin1.parse(unescape(encodeURIComponent(utf8Str)));\n\t }\n\t };\n\n\t /**\n\t * Abstract buffered block algorithm template.\n\t *\n\t * The property blockSize must be implemented in a concrete subtype.\n\t *\n\t * @property {number} _minBufferSize The number of blocks that should be kept unprocessed in the buffer. Default: 0\n\t */\n\t var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm = Base.extend({\n\t /**\n\t * Resets this block algorithm's data buffer to its initial state.\n\t *\n\t * @example\n\t *\n\t * bufferedBlockAlgorithm.reset();\n\t */\n\t reset: function () {\n\t // Initial values\n\t this._data = new WordArray.init();\n\t this._nDataBytes = 0;\n\t },\n\n\t /**\n\t * Adds new data to this block algorithm's buffer.\n\t *\n\t * @param {WordArray|string} data The data to append. Strings are converted to a WordArray using UTF-8.\n\t *\n\t * @example\n\t *\n\t * bufferedBlockAlgorithm._append('data');\n\t * bufferedBlockAlgorithm._append(wordArray);\n\t */\n\t _append: function (data) {\n\t // Convert string to WordArray, else assume WordArray already\n\t if (typeof data == 'string') {\n\t data = Utf8.parse(data);\n\t }\n\n\t // Append\n\t this._data.concat(data);\n\t this._nDataBytes += data.sigBytes;\n\t },\n\n\t /**\n\t * Processes available data blocks.\n\t *\n\t * This method invokes _doProcessBlock(offset), which must be implemented by a concrete subtype.\n\t *\n\t * @param {boolean} doFlush Whether all blocks and partial blocks should be processed.\n\t *\n\t * @return {WordArray} The processed data.\n\t *\n\t * @example\n\t *\n\t * var processedData = bufferedBlockAlgorithm._process();\n\t * var processedData = bufferedBlockAlgorithm._process(!!'flush');\n\t */\n\t _process: function (doFlush) {\n\t var processedWords;\n\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\t var dataSigBytes = data.sigBytes;\n\t var blockSize = this.blockSize;\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Count blocks ready\n\t var nBlocksReady = dataSigBytes / blockSizeBytes;\n\t if (doFlush) {\n\t // Round up to include partial blocks\n\t nBlocksReady = Math.ceil(nBlocksReady);\n\t } else {\n\t // Round down to include only full blocks,\n\t // less the number of blocks that must remain in the buffer\n\t nBlocksReady = Math.max((nBlocksReady | 0) - this._minBufferSize, 0);\n\t }\n\n\t // Count words ready\n\t var nWordsReady = nBlocksReady * blockSize;\n\n\t // Count bytes ready\n\t var nBytesReady = Math.min(nWordsReady * 4, dataSigBytes);\n\n\t // Process blocks\n\t if (nWordsReady) {\n\t for (var offset = 0; offset < nWordsReady; offset += blockSize) {\n\t // Perform concrete-algorithm logic\n\t this._doProcessBlock(dataWords, offset);\n\t }\n\n\t // Remove processed words\n\t processedWords = dataWords.splice(0, nWordsReady);\n\t data.sigBytes -= nBytesReady;\n\t }\n\n\t // Return processed words\n\t return new WordArray.init(processedWords, nBytesReady);\n\t },\n\n\t /**\n\t * Creates a copy of this object.\n\t *\n\t * @return {Object} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = bufferedBlockAlgorithm.clone();\n\t */\n\t clone: function () {\n\t var clone = Base.clone.call(this);\n\t clone._data = this._data.clone();\n\n\t return clone;\n\t },\n\n\t _minBufferSize: 0\n\t });\n\n\t /**\n\t * Abstract hasher template.\n\t *\n\t * @property {number} blockSize The number of 32-bit words this hasher operates on. Default: 16 (512 bits)\n\t */\n\t var Hasher = C_lib.Hasher = BufferedBlockAlgorithm.extend({\n\t /**\n\t * Configuration options.\n\t */\n\t cfg: Base.extend(),\n\n\t /**\n\t * Initializes a newly created hasher.\n\t *\n\t * @param {Object} cfg (Optional) The configuration options to use for this hash computation.\n\t *\n\t * @example\n\t *\n\t * var hasher = CryptoJS.algo.SHA256.create();\n\t */\n\t init: function (cfg) {\n\t // Apply config defaults\n\t this.cfg = this.cfg.extend(cfg);\n\n\t // Set initial values\n\t this.reset();\n\t },\n\n\t /**\n\t * Resets this hasher to its initial state.\n\t *\n\t * @example\n\t *\n\t * hasher.reset();\n\t */\n\t reset: function () {\n\t // Reset data buffer\n\t BufferedBlockAlgorithm.reset.call(this);\n\n\t // Perform concrete-hasher logic\n\t this._doReset();\n\t },\n\n\t /**\n\t * Updates this hasher with a message.\n\t *\n\t * @param {WordArray|string} messageUpdate The message to append.\n\t *\n\t * @return {Hasher} This hasher.\n\t *\n\t * @example\n\t *\n\t * hasher.update('message');\n\t * hasher.update(wordArray);\n\t */\n\t update: function (messageUpdate) {\n\t // Append\n\t this._append(messageUpdate);\n\n\t // Update the hash\n\t this._process();\n\n\t // Chainable\n\t return this;\n\t },\n\n\t /**\n\t * Finalizes the hash computation.\n\t * Note that the finalize operation is effectively a destructive, read-once operation.\n\t *\n\t * @param {WordArray|string} messageUpdate (Optional) A final message update.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @example\n\t *\n\t * var hash = hasher.finalize();\n\t * var hash = hasher.finalize('message');\n\t * var hash = hasher.finalize(wordArray);\n\t */\n\t finalize: function (messageUpdate) {\n\t // Final message update\n\t if (messageUpdate) {\n\t this._append(messageUpdate);\n\t }\n\n\t // Perform concrete-hasher logic\n\t var hash = this._doFinalize();\n\n\t return hash;\n\t },\n\n\t blockSize: 512/32,\n\n\t /**\n\t * Creates a shortcut function to a hasher's object interface.\n\t *\n\t * @param {Hasher} hasher The hasher to create a helper for.\n\t *\n\t * @return {Function} The shortcut function.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var SHA256 = CryptoJS.lib.Hasher._createHelper(CryptoJS.algo.SHA256);\n\t */\n\t _createHelper: function (hasher) {\n\t return function (message, cfg) {\n\t return new hasher.init(cfg).finalize(message);\n\t };\n\t },\n\n\t /**\n\t * Creates a shortcut function to the HMAC's object interface.\n\t *\n\t * @param {Hasher} hasher The hasher to use in this HMAC helper.\n\t *\n\t * @return {Function} The shortcut function.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var HmacSHA256 = CryptoJS.lib.Hasher._createHmacHelper(CryptoJS.algo.SHA256);\n\t */\n\t _createHmacHelper: function (hasher) {\n\t return function (message, key) {\n\t return new C_algo.HMAC.init(hasher, key).finalize(message);\n\t };\n\t }\n\t });\n\n\t /**\n\t * Algorithm namespace.\n\t */\n\t var C_algo = C.algo = {};\n\n\t return C;\n\t}(Math));\n\n\n\treturn CryptoJS;\n\n}));","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['personalize'] = {};\nAWS.Personalize = Service.defineService('personalize', ['2018-05-22']);\nObject.defineProperty(apiLoader.services['personalize'], '2018-05-22', {\n get: function get() {\n var model = require('../apis/personalize-2018-05-22.min.json');\n model.paginators = require('../apis/personalize-2018-05-22.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.Personalize;\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport BackgroundFilterVideoFrameProcessorDelegate from '../backgroundfilter/BackgroundFilterVideoFrameProcessorDelegate';\n\n/**\n * This class adds the functionality to allow for a set of unique observers to be added to the\n * video frame processor.\n */\n/** @internal */\nexport default class BackgroundBlurVideoFrameProcessorDelegate extends BackgroundFilterVideoFrameProcessorDelegate {}\n","\"use strict\";\r\nmodule.exports = inquire;\r\n\r\n/**\r\n * Requires a module only if available.\r\n * @memberof util\r\n * @param {string} moduleName Module to require\r\n * @returns {?Object} Required module if available and not empty, otherwise `null`\r\n */\r\nfunction inquire(moduleName) {\r\n try {\r\n var mod = eval(\"quire\".replace(/^/,\"re\"))(moduleName); // eslint-disable-line no-eval\r\n if (mod && (mod.length || Object.keys(mod).length))\r\n return mod;\r\n } catch (e) {} // eslint-disable-line no-empty\r\n return null;\r\n}\r\n","var AWS = require('./core');\n\n/**\n * @api private\n */\nAWS.ParamValidator = AWS.util.inherit({\n /**\n * Create a new validator object.\n *\n * @param validation [Boolean|map] whether input parameters should be\n * validated against the operation description before sending the\n * request. Pass a map to enable any of the following specific\n * validation features:\n *\n * * **min** [Boolean] — Validates that a value meets the min\n * constraint. This is enabled by default when paramValidation is set\n * to `true`.\n * * **max** [Boolean] — Validates that a value meets the max\n * constraint.\n * * **pattern** [Boolean] — Validates that a string value matches a\n * regular expression.\n * * **enum** [Boolean] — Validates that a string value matches one\n * of the allowable enum values.\n */\n constructor: function ParamValidator(validation) {\n if (validation === true || validation === undefined) {\n validation = {'min': true};\n }\n this.validation = validation;\n },\n\n validate: function validate(shape, params, context) {\n this.errors = [];\n this.validateMember(shape, params || {}, context || 'params');\n\n if (this.errors.length > 1) {\n var msg = this.errors.join('\\n* ');\n msg = 'There were ' + this.errors.length +\n ' validation errors:\\n* ' + msg;\n throw AWS.util.error(new Error(msg),\n {code: 'MultipleValidationErrors', errors: this.errors});\n } else if (this.errors.length === 1) {\n throw this.errors[0];\n } else {\n return true;\n }\n },\n\n fail: function fail(code, message) {\n this.errors.push(AWS.util.error(new Error(message), {code: code}));\n },\n\n validateStructure: function validateStructure(shape, params, context) {\n if (shape.isDocument) return true;\n\n this.validateType(params, context, ['object'], 'structure');\n var paramName;\n for (var i = 0; shape.required && i < shape.required.length; i++) {\n paramName = shape.required[i];\n var value = params[paramName];\n if (value === undefined || value === null) {\n this.fail('MissingRequiredParameter',\n 'Missing required key \\'' + paramName + '\\' in ' + context);\n }\n }\n\n // validate hash members\n for (paramName in params) {\n if (!Object.prototype.hasOwnProperty.call(params, paramName)) continue;\n\n var paramValue = params[paramName],\n memberShape = shape.members[paramName];\n\n if (memberShape !== undefined) {\n var memberContext = [context, paramName].join('.');\n this.validateMember(memberShape, paramValue, memberContext);\n } else if (paramValue !== undefined && paramValue !== null) {\n this.fail('UnexpectedParameter',\n 'Unexpected key \\'' + paramName + '\\' found in ' + context);\n }\n }\n\n return true;\n },\n\n validateMember: function validateMember(shape, param, context) {\n switch (shape.type) {\n case 'structure':\n return this.validateStructure(shape, param, context);\n case 'list':\n return this.validateList(shape, param, context);\n case 'map':\n return this.validateMap(shape, param, context);\n default:\n return this.validateScalar(shape, param, context);\n }\n },\n\n validateList: function validateList(shape, params, context) {\n if (this.validateType(params, context, [Array])) {\n this.validateRange(shape, params.length, context, 'list member count');\n // validate array members\n for (var i = 0; i < params.length; i++) {\n this.validateMember(shape.member, params[i], context + '[' + i + ']');\n }\n }\n },\n\n validateMap: function validateMap(shape, params, context) {\n if (this.validateType(params, context, ['object'], 'map')) {\n // Build up a count of map members to validate range traits.\n var mapCount = 0;\n for (var param in params) {\n if (!Object.prototype.hasOwnProperty.call(params, param)) continue;\n // Validate any map key trait constraints\n this.validateMember(shape.key, param,\n context + '[key=\\'' + param + '\\']');\n this.validateMember(shape.value, params[param],\n context + '[\\'' + param + '\\']');\n mapCount++;\n }\n this.validateRange(shape, mapCount, context, 'map member count');\n }\n },\n\n validateScalar: function validateScalar(shape, value, context) {\n switch (shape.type) {\n case null:\n case undefined:\n case 'string':\n return this.validateString(shape, value, context);\n case 'base64':\n case 'binary':\n return this.validatePayload(value, context);\n case 'integer':\n case 'float':\n return this.validateNumber(shape, value, context);\n case 'boolean':\n return this.validateType(value, context, ['boolean']);\n case 'timestamp':\n return this.validateType(value, context, [Date,\n /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?Z$/, 'number'],\n 'Date object, ISO-8601 string, or a UNIX timestamp');\n default:\n return this.fail('UnkownType', 'Unhandled type ' +\n shape.type + ' for ' + context);\n }\n },\n\n validateString: function validateString(shape, value, context) {\n var validTypes = ['string'];\n if (shape.isJsonValue) {\n validTypes = validTypes.concat(['number', 'object', 'boolean']);\n }\n if (value !== null && this.validateType(value, context, validTypes)) {\n this.validateEnum(shape, value, context);\n this.validateRange(shape, value.length, context, 'string length');\n this.validatePattern(shape, value, context);\n this.validateUri(shape, value, context);\n }\n },\n\n validateUri: function validateUri(shape, value, context) {\n if (shape['location'] === 'uri') {\n if (value.length === 0) {\n this.fail('UriParameterError', 'Expected uri parameter to have length >= 1,'\n + ' but found \"' + value +'\" for ' + context);\n }\n }\n },\n\n validatePattern: function validatePattern(shape, value, context) {\n if (this.validation['pattern'] && shape['pattern'] !== undefined) {\n if (!(new RegExp(shape['pattern'])).test(value)) {\n this.fail('PatternMatchError', 'Provided value \"' + value + '\" '\n + 'does not match regex pattern /' + shape['pattern'] + '/ for '\n + context);\n }\n }\n },\n\n validateRange: function validateRange(shape, value, context, descriptor) {\n if (this.validation['min']) {\n if (shape['min'] !== undefined && value < shape['min']) {\n this.fail('MinRangeError', 'Expected ' + descriptor + ' >= '\n + shape['min'] + ', but found ' + value + ' for ' + context);\n }\n }\n if (this.validation['max']) {\n if (shape['max'] !== undefined && value > shape['max']) {\n this.fail('MaxRangeError', 'Expected ' + descriptor + ' <= '\n + shape['max'] + ', but found ' + value + ' for ' + context);\n }\n }\n },\n\n validateEnum: function validateRange(shape, value, context) {\n if (this.validation['enum'] && shape['enum'] !== undefined) {\n // Fail if the string value is not present in the enum list\n if (shape['enum'].indexOf(value) === -1) {\n this.fail('EnumError', 'Found string value of ' + value + ', but '\n + 'expected ' + shape['enum'].join('|') + ' for ' + context);\n }\n }\n },\n\n validateType: function validateType(value, context, acceptedTypes, type) {\n // We will not log an error for null or undefined, but we will return\n // false so that callers know that the expected type was not strictly met.\n if (value === null || value === undefined) return false;\n\n var foundInvalidType = false;\n for (var i = 0; i < acceptedTypes.length; i++) {\n if (typeof acceptedTypes[i] === 'string') {\n if (typeof value === acceptedTypes[i]) return true;\n } else if (acceptedTypes[i] instanceof RegExp) {\n if ((value || '').toString().match(acceptedTypes[i])) return true;\n } else {\n if (value instanceof acceptedTypes[i]) return true;\n if (AWS.util.isType(value, acceptedTypes[i])) return true;\n if (!type && !foundInvalidType) acceptedTypes = acceptedTypes.slice();\n acceptedTypes[i] = AWS.util.typeName(acceptedTypes[i]);\n }\n foundInvalidType = true;\n }\n\n var acceptedType = type;\n if (!acceptedType) {\n acceptedType = acceptedTypes.join(', ').replace(/,([^,]+)$/, ', or$1');\n }\n\n var vowel = acceptedType.match(/^[aeiou]/i) ? 'n' : '';\n this.fail('InvalidParameterType', 'Expected ' + context + ' to be a' +\n vowel + ' ' + acceptedType);\n return false;\n },\n\n validateNumber: function validateNumber(shape, value, context) {\n if (value === null || value === undefined) return;\n if (typeof value === 'string') {\n var castedValue = parseFloat(value);\n if (castedValue.toString() === value) value = castedValue;\n }\n if (this.validateType(value, context, ['number'])) {\n this.validateRange(shape, value, context, 'numeric value');\n }\n },\n\n validatePayload: function validatePayload(value, context) {\n if (value === null || value === undefined) return;\n if (typeof value === 'string') return;\n if (value && typeof value.byteLength === 'number') return; // typed arrays\n if (AWS.util.isNode()) { // special check for buffer/stream in Node.js\n var Stream = AWS.util.stream.Stream;\n if (AWS.util.Buffer.isBuffer(value) || value instanceof Stream) return;\n } else {\n if (typeof Blob !== void 0 && value instanceof Blob) return;\n }\n\n var types = ['Buffer', 'Stream', 'File', 'Blob', 'ArrayBuffer', 'DataView'];\n if (value) {\n for (var i = 0; i < types.length; i++) {\n if (AWS.util.isType(value, types[i])) return;\n if (AWS.util.typeName(value.constructor) === types[i]) return;\n }\n }\n\n this.fail('InvalidParameterType', 'Expected ' + context + ' to be a ' +\n 'string, Buffer, Stream, Blob, or typed array object');\n }\n});\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\n/**\n * [[MeetingSessionCredentials]] includes the credentials used to authenticate\n * the attendee on the meeting\n */\nexport default class MeetingSessionCredentials {\n /**\n * The attendee id for these credentials.\n */\n attendeeId: string | null = null;\n\n /**\n * The external user id associated with the attendee.\n */\n externalUserId: string | null = null;\n\n /**\n * If set, the session will be authenticated with a join token.\n */\n joinToken: string | null = null;\n\n /**\n * Overrides JSON serialization so that join token is redacted.\n */\n toJSON(): { [id: string]: string } {\n return {\n attendeeId: this.attendeeId,\n joinToken: this.joinToken === null ? null : '',\n };\n }\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport BaseConnectionHealthPolicy from './BaseConnectionHealthPolicy';\nimport ConnectionHealthData from './ConnectionHealthData';\nimport ConnectionHealthPolicy from './ConnectionHealthPolicy';\nimport ConnectionHealthPolicyConfiguration from './ConnectionHealthPolicyConfiguration';\nimport VideoEncodingConnectionHealthPolicyName from './VideoEncodingConnectionHealthPolicyName';\n\nexport default class VideoEncodingFramerateConnectionHealthPolicy\n extends BaseConnectionHealthPolicy\n implements ConnectionHealthPolicy {\n private readonly consecutiveVideoEncodingFailureThreshold: number;\n private consecutiveEncodeFailureCnt = 0;\n\n constructor(configuration: ConnectionHealthPolicyConfiguration, data: ConnectionHealthData) {\n super(\n configuration,\n data,\n VideoEncodingConnectionHealthPolicyName.VideoEncodingFramerateHealth\n );\n this.consecutiveVideoEncodingFailureThreshold =\n configuration.consecutiveVideoEncodingFailureThreshold;\n }\n\n health(): number {\n const videoEncoderFailed =\n this.currentData.videoEncodeFps === 0 && this.currentData.videoInputFps > 0;\n if (videoEncoderFailed) {\n this.consecutiveEncodeFailureCnt++;\n if (this.consecutiveEncodeFailureCnt > this.consecutiveVideoEncodingFailureThreshold) {\n this.consecutiveEncodeFailureCnt = 0;\n return this.minimumHealth();\n }\n } else {\n this.consecutiveEncodeFailureCnt = 0;\n }\n return this.maximumHealth();\n }\n}\n","var Buffer = require('buffer/').Buffer;\nvar hashUtils = require('./browserHashUtils');\n\nvar BLOCK_SIZE = 64;\n\nvar DIGEST_LENGTH = 32;\n\nvar KEY = new Uint32Array([\n 0x428a2f98,\n 0x71374491,\n 0xb5c0fbcf,\n 0xe9b5dba5,\n 0x3956c25b,\n 0x59f111f1,\n 0x923f82a4,\n 0xab1c5ed5,\n 0xd807aa98,\n 0x12835b01,\n 0x243185be,\n 0x550c7dc3,\n 0x72be5d74,\n 0x80deb1fe,\n 0x9bdc06a7,\n 0xc19bf174,\n 0xe49b69c1,\n 0xefbe4786,\n 0x0fc19dc6,\n 0x240ca1cc,\n 0x2de92c6f,\n 0x4a7484aa,\n 0x5cb0a9dc,\n 0x76f988da,\n 0x983e5152,\n 0xa831c66d,\n 0xb00327c8,\n 0xbf597fc7,\n 0xc6e00bf3,\n 0xd5a79147,\n 0x06ca6351,\n 0x14292967,\n 0x27b70a85,\n 0x2e1b2138,\n 0x4d2c6dfc,\n 0x53380d13,\n 0x650a7354,\n 0x766a0abb,\n 0x81c2c92e,\n 0x92722c85,\n 0xa2bfe8a1,\n 0xa81a664b,\n 0xc24b8b70,\n 0xc76c51a3,\n 0xd192e819,\n 0xd6990624,\n 0xf40e3585,\n 0x106aa070,\n 0x19a4c116,\n 0x1e376c08,\n 0x2748774c,\n 0x34b0bcb5,\n 0x391c0cb3,\n 0x4ed8aa4a,\n 0x5b9cca4f,\n 0x682e6ff3,\n 0x748f82ee,\n 0x78a5636f,\n 0x84c87814,\n 0x8cc70208,\n 0x90befffa,\n 0xa4506ceb,\n 0xbef9a3f7,\n 0xc67178f2\n]);\n\nvar INIT = [\n 0x6a09e667,\n 0xbb67ae85,\n 0x3c6ef372,\n 0xa54ff53a,\n 0x510e527f,\n 0x9b05688c,\n 0x1f83d9ab,\n 0x5be0cd19,\n];\n\nvar MAX_HASHABLE_LENGTH = Math.pow(2, 53) - 1;\n\n/**\n * @private\n */\nfunction Sha256() {\n this.state = [\n 0x6a09e667,\n 0xbb67ae85,\n 0x3c6ef372,\n 0xa54ff53a,\n 0x510e527f,\n 0x9b05688c,\n 0x1f83d9ab,\n 0x5be0cd19,\n ];\n this.temp = new Int32Array(64);\n this.buffer = new Uint8Array(64);\n this.bufferLength = 0;\n this.bytesHashed = 0;\n /**\n * @private\n */\n this.finished = false;\n}\n\n/**\n * @api private\n */\nmodule.exports = exports = Sha256;\n\nSha256.BLOCK_SIZE = BLOCK_SIZE;\n\nSha256.prototype.update = function (data) {\n if (this.finished) {\n throw new Error('Attempted to update an already finished hash.');\n }\n\n if (hashUtils.isEmptyData(data)) {\n return this;\n }\n\n data = hashUtils.convertToBuffer(data);\n\n var position = 0;\n var byteLength = data.byteLength;\n this.bytesHashed += byteLength;\n if (this.bytesHashed * 8 > MAX_HASHABLE_LENGTH) {\n throw new Error('Cannot hash more than 2^53 - 1 bits');\n }\n\n while (byteLength > 0) {\n this.buffer[this.bufferLength++] = data[position++];\n byteLength--;\n if (this.bufferLength === BLOCK_SIZE) {\n this.hashBuffer();\n this.bufferLength = 0;\n }\n }\n\n return this;\n};\n\nSha256.prototype.digest = function (encoding) {\n if (!this.finished) {\n var bitsHashed = this.bytesHashed * 8;\n var bufferView = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength);\n var undecoratedLength = this.bufferLength;\n bufferView.setUint8(this.bufferLength++, 0x80);\n // Ensure the final block has enough room for the hashed length\n if (undecoratedLength % BLOCK_SIZE >= BLOCK_SIZE - 8) {\n for (var i = this.bufferLength; i < BLOCK_SIZE; i++) {\n bufferView.setUint8(i, 0);\n }\n this.hashBuffer();\n this.bufferLength = 0;\n }\n for (var i = this.bufferLength; i < BLOCK_SIZE - 8; i++) {\n bufferView.setUint8(i, 0);\n }\n bufferView.setUint32(BLOCK_SIZE - 8, Math.floor(bitsHashed / 0x100000000), true);\n bufferView.setUint32(BLOCK_SIZE - 4, bitsHashed);\n this.hashBuffer();\n this.finished = true;\n }\n // The value in state is little-endian rather than big-endian, so flip\n // each word into a new Uint8Array\n var out = new Buffer(DIGEST_LENGTH);\n for (var i = 0; i < 8; i++) {\n out[i * 4] = (this.state[i] >>> 24) & 0xff;\n out[i * 4 + 1] = (this.state[i] >>> 16) & 0xff;\n out[i * 4 + 2] = (this.state[i] >>> 8) & 0xff;\n out[i * 4 + 3] = (this.state[i] >>> 0) & 0xff;\n }\n return encoding ? out.toString(encoding) : out;\n};\n\nSha256.prototype.hashBuffer = function () {\n var _a = this,\n buffer = _a.buffer,\n state = _a.state;\n var state0 = state[0],\n state1 = state[1],\n state2 = state[2],\n state3 = state[3],\n state4 = state[4],\n state5 = state[5],\n state6 = state[6],\n state7 = state[7];\n for (var i = 0; i < BLOCK_SIZE; i++) {\n if (i < 16) {\n this.temp[i] = (((buffer[i * 4] & 0xff) << 24) |\n ((buffer[(i * 4) + 1] & 0xff) << 16) |\n ((buffer[(i * 4) + 2] & 0xff) << 8) |\n (buffer[(i * 4) + 3] & 0xff));\n }\n else {\n var u = this.temp[i - 2];\n var t1_1 = (u >>> 17 | u << 15) ^\n (u >>> 19 | u << 13) ^\n (u >>> 10);\n u = this.temp[i - 15];\n var t2_1 = (u >>> 7 | u << 25) ^\n (u >>> 18 | u << 14) ^\n (u >>> 3);\n this.temp[i] = (t1_1 + this.temp[i - 7] | 0) +\n (t2_1 + this.temp[i - 16] | 0);\n }\n var t1 = (((((state4 >>> 6 | state4 << 26) ^\n (state4 >>> 11 | state4 << 21) ^\n (state4 >>> 25 | state4 << 7))\n + ((state4 & state5) ^ (~state4 & state6))) | 0)\n + ((state7 + ((KEY[i] + this.temp[i]) | 0)) | 0)) | 0;\n var t2 = (((state0 >>> 2 | state0 << 30) ^\n (state0 >>> 13 | state0 << 19) ^\n (state0 >>> 22 | state0 << 10)) + ((state0 & state1) ^ (state0 & state2) ^ (state1 & state2))) | 0;\n state7 = state6;\n state6 = state5;\n state5 = state4;\n state4 = (state3 + t1) | 0;\n state3 = state2;\n state2 = state1;\n state1 = state0;\n state0 = (t1 + t2) | 0;\n }\n state[0] += state0;\n state[1] += state1;\n state[2] += state2;\n state[3] += state3;\n state[4] += state4;\n state[5] += state5;\n state[6] += state6;\n state[7] += state7;\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { fetchWithBehavior } from '../../libs/voicefocus/fetch';\nimport { loadWorker } from '../../libs/voicefocus/loader';\nimport { supportsWASM, supportsWorker } from '../../libs/voicefocus/support';\nimport DefaultBrowserBehavior from '../browserbehavior/DefaultBrowserBehavior';\nimport EventController from '../eventcontroller/EventController';\nimport VideoFXEventAttributes from '../eventcontroller/VideoFXEventAttributes';\nimport Logger from '../logger/Logger';\nimport NoOpLogger from '../logger/NoOpLogger';\nimport { getDefaultAssetSpec } from '../utils/Utils';\nimport Versioning from '../versioning/Versioning';\nimport CanvasVideoFrameBuffer from '../videoframeprocessor/CanvasVideoFrameBuffer';\nimport VideoFrameBuffer from '../videoframeprocessor/VideoFrameBuffer';\nimport VideoFrameProcessor from '../videoframeprocessor/VideoFrameProcessor';\nimport { DeferredPromise } from './DeferredPromise';\nimport { VideoFxAssetParams } from './VideoFxAssetParams';\nimport { VideoFxCanvasOpsManager } from './VideoFxCanvasOpsManager';\nimport VideoFxConfig from './VideoFxConfig';\nimport {\n DEFAULT_STREAM_PARAMETERS,\n DEFAULT_VIDEO_FX_SPEC,\n RESOURCE_CONSTRAINTS,\n SEGMENTATION_MODEL,\n WORKER_MSG,\n} from './VideoFxConstants';\nimport { VideoFxRenderer } from './VideoFxRenderer';\nimport { VideoFxSegmentationRateManager } from './VideoFxSegmentationRateManager';\nimport VideoFxSpec from './VideoFxSpec';\nimport { VideoFxStreamParameters } from './VideoFxStreamParameters';\n\n/**\n * [[VideoFxProcessor]] Mechanism that drives the data transformation\n * of individual video frames to apply ML-based background blur and\n * background replacement effects on the video stream.\n */\nexport default class VideoFxProcessor implements VideoFrameProcessor {\n private static isSharedArrayBufferSupported: boolean = typeof SharedArrayBuffer !== 'undefined';\n private fxLibScript: HTMLScriptElement;\n private effectConfig: VideoFxConfig;\n private streamParameters: VideoFxStreamParameters;\n private engineWorker: Worker;\n private canvasOpsManager: VideoFxCanvasOpsManager;\n private renderer: VideoFxRenderer;\n\n // Shared array buffer fields\n private sharedImageBuffer: SharedArrayBuffer;\n private sharedImageData: Uint8ClampedArray;\n\n // Deferred promises for requests/awaits with engine worker\n private buildEnginePromise: DeferredPromise;\n private destroyedAssetsPromise: DeferredPromise;\n\n //Fields to manage the segmentation process\n private segmentationRateManager: VideoFxSegmentationRateManager;\n private segmentationMask: ImageData;\n private segmentationRequestPromise: DeferredPromise;\n\n // Configure the buffer for where output frames will be placed\n private outputCanvas: HTMLCanvasElement = document.createElement('canvas') as HTMLCanvasElement;\n private canvasVideoFrameBuffer = new CanvasVideoFrameBuffer(this.outputCanvas);\n private eventController?: EventController | undefined;\n private videoFxSpec: VideoFxSpec = DEFAULT_VIDEO_FX_SPEC;\n\n /**\n * Initializes a new instance of [[VideoFxProcessor]] with a default NoOp [[VideoFxConfig]].\n * @param logger\n * @param processingBudgetPerFrame throttling constraint for processing\n * @param eventController EventController object to manage events\n */\n constructor(\n private logger: Logger,\n processingBudgetPerFrame: number = RESOURCE_CONSTRAINTS.DEFAULT_PROCESSING_BUDGET_PER_FRAME,\n eventController?: EventController\n ) {\n // Validate the inputted resource constraint\n try {\n this.validateProcessingBudgetPerFrame(processingBudgetPerFrame);\n } catch (error) {\n this.logger.error(error);\n throw new Error(\n `Cannot instantiate VideoFxProcessor due to invalid ` +\n `processingBudgetPerFrame of ${processingBudgetPerFrame}`\n );\n }\n\n if (eventController) {\n this.eventController = eventController;\n }\n\n // Create a basic effectConfig (noOp)\n this.effectConfig = {\n backgroundBlur: {\n isEnabled: false,\n strength: 'low',\n },\n backgroundReplacement: {\n isEnabled: false,\n backgroundImageURL: null,\n defaultColor: 'black',\n },\n };\n\n // This promise object will be used to coordinate timing of sending/receiving frames from engine\n this.segmentationRequestPromise = new DeferredPromise();\n // Configure resource management for the segmentation frequency\n this.segmentationRateManager = new VideoFxSegmentationRateManager(\n this.logger,\n processingBudgetPerFrame\n );\n\n // Configure default streamParameters\n this.streamParameters = {\n framerate: DEFAULT_STREAM_PARAMETERS.FRAMES_PER_SECOND,\n width: DEFAULT_STREAM_PARAMETERS.WIDTH_IN_PIXEL,\n height: DEFAULT_STREAM_PARAMETERS.HEIGHT_IN_PIXEL,\n channels: DEFAULT_STREAM_PARAMETERS.CHANNEL_COUNT,\n };\n\n // Determine if shared array buffer can be used to transfer frame data from\n // main thread to web worker thread\n if (VideoFxProcessor.isSharedArrayBufferSupported) {\n this.sharedImageBuffer = new SharedArrayBuffer(\n SEGMENTATION_MODEL.WIDTH_IN_PIXELS *\n SEGMENTATION_MODEL.HEIGHT_IN_PIXELS *\n this.streamParameters.channels\n );\n this.sharedImageData = new Uint8ClampedArray(this.sharedImageBuffer);\n }\n this.logger.info(\n `VideoFx supports Shared Array Buffer: ` + `${VideoFxProcessor.isSharedArrayBufferSupported}`\n );\n\n // Determine if filter operations are supported\n this.canvasOpsManager = new VideoFxCanvasOpsManager(this.streamParameters, this.outputCanvas);\n\n // Configure the final transformed frame location\n this.outputCanvas.width = this.streamParameters.width;\n this.outputCanvas.height = this.streamParameters.height;\n\n // Set an empty mask at initialization\n this.segmentationMask = new ImageData(\n this.streamParameters.width,\n this.streamParameters.height\n );\n\n this.logger.info(\n `VideoFxProcessor instantiated with a processingBudgetPerFrame of ${processingBudgetPerFrame}`\n );\n }\n\n /**\n * Apply the [[VideoFxProcessor]]'s specialized effect onto the frame contained by\n * the buffer parameter.\n * @param buffers\n * @returns buffers\n */\n async process(buffers: VideoFrameBuffer[]): Promise {\n // Note: Required method through implementation of VideoFrameProcessor.\n return buffers;\n }\n\n /**\n * Process an input stream and apply the visual effects specified in this effectConfig.\n * @param buffers the input stream\n * @returns an output stream of VideoFrameBuffer\n */\n private async fxProcess(buffers: VideoFrameBuffer[]): Promise {\n // Process our input image into raw input data\n const inputCanvas = buffers[0].asCanvasElement() as HTMLCanvasElement;\n\n // We must confirm that our incoming stream did not change it's parameters\n if (this.didStreamParametersChange(inputCanvas)) {\n await this.adjustProcessorForNewStreamParameters(inputCanvas);\n }\n\n // Decide to use the existing segmentation or perform a new segmentation\n try {\n await this.manageSegmentationMask(inputCanvas);\n } catch (error) {\n this.logger.error(error);\n throw new Error(`Video stream could not be processed`);\n }\n\n // Render a final image using the input canvas and the segmentation mask\n await this.renderer.render(inputCanvas, this.segmentationMask);\n\n // Send canvas video frame buffer to rest of processor pipeline\n buffers[0] = this.canvasVideoFrameBuffer;\n return buffers;\n }\n\n /**\n * Perform a process call that just returns the input stream\n * @param buffers the input stream\n * @returns an output stream of VideoFrameBuffer\n */\n private async noOpProcess(buffers: VideoFrameBuffer[]): Promise {\n return buffers;\n }\n\n /**\n * Check if the stream dimensions/parameters have changed.\n * @param stream frame from current video stream about to be processed\n * @returns boolean representing if the stream parameters changed\n */\n private didStreamParametersChange(stream: HTMLCanvasElement): boolean {\n return (\n stream.width !== this.streamParameters.width || stream.height !== this.streamParameters.height\n );\n }\n\n /**\n * Adjust the videoFxProcessor to handle new stream parameters.\n * @param stream frame from current video stream about to be processed\n */\n private async adjustProcessorForNewStreamParameters(stream: HTMLCanvasElement): Promise {\n // Update the stored streamParameters\n this.streamParameters.width = stream.width;\n this.streamParameters.height = stream.height;\n\n // Notify the canvas ops manager to reconfigure pipeline dimensions\n await this.canvasOpsManager.configureForStreamParameters(this.streamParameters);\n\n // Configure the renderer to work with new stream dimensions\n await this.renderer.configure(\n this.streamParameters.width,\n this.streamParameters.height,\n this.effectConfig\n );\n }\n\n /**\n * Clean up any excess memory that has been allocated by [[VideoFxProcessor]].\n */\n async destroy(): Promise {\n // Note: Required method through implementation of VideoFrameProcessor.\n this.canvasVideoFrameBuffer.destroy();\n if (this.fxLibScript && this.fxLibScript.parentNode) {\n this.fxLibScript.parentNode.removeChild(this.fxLibScript);\n }\n if (this.engineWorker) {\n // Post message to destroy all assets\n this.destroyedAssetsPromise = new DeferredPromise();\n this.engineWorker.postMessage({\n msg: WORKER_MSG.DESTROY_ASSETS_REQUEST,\n });\n // Wait until all the assets are destroyed\n await this.destroyedAssetsPromise.getPromise();\n\n // Close the engine worker\n this.engineWorker.postMessage({\n msg: WORKER_MSG.CLOSE_WORKER_REQUEST,\n });\n }\n this.logger.info(`VideoFxProcessor destroyed.`);\n }\n\n /**\n * Manage the segmentation mask that is used to generate a final frame. This function\n * will calculate whether or not to re-generate a segmenation and also monitor\n * how computationally expensive the rate of segmentation are.\n * @param inputCanvas canvas to be used for segmentation\n */\n private async manageSegmentationMask(inputCanvas: HTMLCanvasElement): Promise {\n try {\n this.segmentationRateManager.submitFrame();\n if (this.segmentationRateManager.shouldApplySegmentation()) {\n // Perform a segmentation inference on the downsampled current video frame\n this.segmentationRateManager.startSegmentation();\n const inferenceInputImageData = this.canvasOpsManager.getInferenceInputData(inputCanvas);\n this.segmentationMask = await this.generateSegmentationMask(inferenceInputImageData);\n this.segmentationRateManager.completeSegmentation();\n }\n } catch (error) {\n this.logger.error(error.toString());\n throw new Error(`Can not properly manage the returned segmentation mask`);\n }\n }\n\n /**\n * Generate a segmentation mask from the input frame.\n * @param inferenceImageData\n * @returns image data representing segmenation mask\n */\n private async generateSegmentationMask(inferenceImageData: ImageData): Promise {\n if (VideoFxProcessor.isSharedArrayBufferSupported) {\n this.sharedImageData.set(inferenceImageData.data);\n this.engineWorker.postMessage({\n msg: WORKER_MSG.PERFORM_SEGMENTATION_SAB_REQUEST,\n payload: this.sharedImageBuffer,\n });\n } else {\n this.engineWorker.postMessage(\n {\n msg: WORKER_MSG.PERFORM_SEGMENTATION_REQUEST,\n payload: inferenceImageData,\n },\n [inferenceImageData.data.buffer]\n );\n }\n\n // Wait for input image to be returned from VideoFxEngine\n try {\n const segmentationMask = await this.segmentationRequestPromise.getPromise();\n return segmentationMask;\n } catch (error) {\n this.logger.error(error.toString());\n throw new Error(`Segmentation mask could not be generated`);\n }\n }\n\n /**\n * Make a deep copy of the VideoFxConfig passed in. Needs to be updated if additional\n * fields are added to VideoFxConfig.\n * @param effectConfig\n * @returns newEffectConfig\n */\n private cloneConfigFrom(effectConfig: VideoFxConfig): VideoFxConfig {\n return {\n backgroundBlur: {\n isEnabled: effectConfig.backgroundBlur.isEnabled,\n strength: effectConfig.backgroundBlur.strength,\n },\n backgroundReplacement: {\n isEnabled: effectConfig.backgroundReplacement.isEnabled,\n backgroundImageURL: effectConfig.backgroundReplacement.backgroundImageURL,\n defaultColor: effectConfig.backgroundReplacement.defaultColor,\n },\n };\n }\n\n setVideoFxSpec(videoFxSpec: VideoFxSpec): void {\n if (videoFxSpec.paths) {\n this.videoFxSpec.paths = videoFxSpec.paths;\n }\n }\n /**\n * Update the [[VideoFxProcessor]] to apply a new set of effects by updating the instance property\n * [[VideoFxConfig]]. If the effectConfig parameter fails validation, an error is thrown and there is\n * no update.\n * @Param effectConfig updated [[VideoFxConfig]] with new video effects\n */\n async setEffectConfig(effectConfig: VideoFxConfig): Promise {\n if (this.sameVideoFxConfig(effectConfig, this.effectConfig)) {\n return;\n }\n\n const newEffectConfig = this.cloneConfigFrom(effectConfig);\n\n // Validate the effect config\n try {\n await this.validateEffectConfig(newEffectConfig);\n } catch (error) {\n this.logger.error(error.toString());\n throw new Error(`Provided effect config is invalid, not updating VideoFxProcessor`);\n }\n\n // Configure background replacement image/canvas\n if (newEffectConfig.backgroundReplacement.isEnabled) {\n await this.canvasOpsManager.loadReplacementBackground(newEffectConfig);\n await this.renderer.setBackgroundReplacementCanvas(\n this.canvasOpsManager.getBackgroundReplacementCanvas()\n );\n }\n\n // Configure the renderer to implement the desired effect configuration\n await this.renderer.configure(\n this.streamParameters.width,\n this.streamParameters.height,\n newEffectConfig\n );\n\n // Can now officially set the effect config since the rest of the processor is\n // configured for the new effects\n this.effectConfig = newEffectConfig;\n\n // If no effects are enabled, run no op process, otherwise run the effect based processing\n if (\n !this.effectConfig.backgroundBlur.isEnabled &&\n !this.effectConfig.backgroundReplacement.isEnabled\n ) {\n this.process = this.noOpProcess;\n } else {\n this.process = this.fxProcess;\n }\n this.logger.info(\n `VideoFxProcessor effect configuration updated to: ${JSON.stringify(this.effectConfig)}`\n );\n\n if (this.eventController) {\n this.publishVideoFxConfigEvent();\n }\n }\n\n /**\n * Confirm that the config consists of valid values.\n * @param config that will be validated\n */\n private async validateEffectConfig(config: VideoFxConfig): Promise {\n // We confirm that both blur and replacement are not enabled due to builder error\n if (config.backgroundBlur.isEnabled && config.backgroundReplacement.isEnabled) {\n throw new Error(\n `Invalid VideoFx configuration: Background Blur and Background Replacement ` +\n `can not both be enabled`\n );\n } else if (config.backgroundReplacement.isEnabled) {\n await this.validateReplacementConfig(config);\n }\n // backgroundBlur does not need to be validated, as valid blurStrength value\n // is checked at compile time.\n }\n\n /**\n * Confirm that the config consists of valid values for background replacement.\n * @param config that will be validated for background replacement\n */\n private async validateReplacementConfig(config: VideoFxConfig): Promise {\n if (\n config.backgroundReplacement.backgroundImageURL &&\n config.backgroundReplacement.defaultColor\n ) {\n throw new Error(\n `Invalid VideoFx configuration: Background Replacement can not have both an ` +\n `image URL and default color`\n );\n }\n if (\n !config.backgroundReplacement.backgroundImageURL &&\n !config.backgroundReplacement.defaultColor\n ) {\n throw new Error(\n `Invalid VideoFx configuration: Background Replacement image URL and default ` +\n `can not both be null/undefined`\n );\n }\n\n // Confirm that the image properly loads\n try {\n if (config.backgroundReplacement.backgroundImageURL) {\n await this.canvasOpsManager.loadImage(config.backgroundReplacement.backgroundImageURL);\n }\n } catch (error) {\n this.logger.error(error.toString());\n throw new Error(`Invalid VideoFx configuration: backgroundImageURL failed to load`);\n }\n\n const defaultColor = config.backgroundReplacement.defaultColor;\n // Confirm that defaultColor is a valid color for fillStyle. We support black by default.\n if (\n defaultColor &&\n defaultColor !== 'black' &&\n defaultColor !== '#000000' &&\n defaultColor !== '#000'\n ) {\n // First validate hexadecimal color code\n if (defaultColor.includes('#')) {\n const hexRegex = new RegExp(/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/);\n if (!hexRegex.test(defaultColor)) {\n throw new Error(\n `Invalid hexadecimal color code for default replacement ` +\n `background: ${defaultColor}`\n );\n }\n }\n const testColorCanvas = document.createElement('canvas');\n const testColorCtx = testColorCanvas.getContext('2d');\n // fillStyle is #000000 black by default\n const prevFillStyle = testColorCtx.fillStyle;\n testColorCtx.fillStyle = defaultColor;\n // fillStyle will not change after assignment if invalid value is used\n /* istanbul ignore next */\n if (testColorCtx.fillStyle === prevFillStyle) {\n throw new Error(`Invalid color for default replacement background: ${defaultColor}`);\n }\n }\n }\n\n /**\n * Confirm that the processingBudgePerFrame constraint holds valid values.\n * @param constraint to be validated\n */\n private validateProcessingBudgetPerFrame(processingBudgetPerFrame: number): void {\n if (\n processingBudgetPerFrame < RESOURCE_CONSTRAINTS.MIN_PROCESSING_BUDGET ||\n processingBudgetPerFrame > RESOURCE_CONSTRAINTS.MAX_PROCESSING_BUDGET\n ) {\n throw new Error(\n `Invalid resource constraint: cycle percentage must be within ` +\n `range of ${RESOURCE_CONSTRAINTS.MIN_PROCESSING_BUDGET} and ` +\n `${RESOURCE_CONSTRAINTS.MAX_PROCESSING_BUDGET}`\n );\n }\n }\n\n /**\n * Loads all of the assets that are associated with the stored effectConfig.\n */\n private async loadAssets(): Promise {\n this.logger.info(`Loading required assets for the VideoFxProcessor`);\n try {\n const videoFxAssetParams = this.getVideoFxAssetParams();\n\n await this.loadEngineWorker(videoFxAssetParams);\n await this.buildEngine(videoFxAssetParams);\n await this.loadFxLib(videoFxAssetParams);\n // @ts-ignore\n this.renderer = constructRenderer(\n SEGMENTATION_MODEL.WIDTH_IN_PIXELS,\n SEGMENTATION_MODEL.HEIGHT_IN_PIXELS,\n this.effectConfig,\n this.outputCanvas\n );\n } catch (error) {\n // NOTE: when we update to es2022, throw errors that are chained together\n this.logger.error(error.toString());\n throw new Error(`Failed to load necessary assets for the VideoFxProcessor`);\n }\n this.logger.info(`Finished loading of essential VideoFxProcessor assets.`);\n }\n\n /**\n * Determines the current set of specifications that define the current SDK version.\n * @returns an [[VideoFxAssetParams]] object defining the parameters of the\n * current SDK\n */\n private getVideoFxAssetParams(): VideoFxAssetParams {\n const defaultAssetSpec = getDefaultAssetSpec();\n const videoFxAssetParams = {\n assetGroup: defaultAssetSpec.assetGroup,\n revisionID: defaultAssetSpec.revisionID,\n sdk: encodeURIComponent(Versioning.sdkVersion),\n ua: encodeURIComponent(Versioning.sdkUserAgentLowResolution),\n };\n return videoFxAssetParams;\n }\n\n /**\n * Generate a final path to an asset belonging to current version of SDK.\n * @param basePath Base of the path that will be used to generate a final path\n * @param videoFxAssetParams Parameters of the current SDK version\n * @returns A final path specific to an asset belonging to current SDK\n * version\n */\n private getPathFromVideoFxAssetParams(\n basePath: string,\n videoFxAssetParams: VideoFxAssetParams\n ): string {\n const path = new URL(basePath);\n for (const [key, value] of Object.entries(videoFxAssetParams)) {\n if (value !== undefined) {\n // Encode the key and value into uri format\n const uriEncodedKey = encodeURIComponent(key);\n const uriEncodedValue = encodeURIComponent(value);\n // Set encoded key/value as query params\n path.searchParams.set(uriEncodedKey, uriEncodedValue);\n }\n }\n\n return path.toString();\n }\n\n /**\n * Fetch and then load the engine worker into a web-worker.\n */\n private async loadEngineWorker(videoFxAssetParams: VideoFxAssetParams): Promise {\n // The engine worker will always be a required asset for the VideoFxProcessor\n try {\n // Determine engine worker path from versioning of the SDK worker\n const engineWorkerPath = this.getPathFromVideoFxAssetParams(\n this.videoFxSpec.paths.cdnBasePath + this.videoFxSpec.paths.workerPath,\n videoFxAssetParams\n );\n\n // Load the worker that will communicate with the VideoFxEngine\n this.engineWorker = await loadWorker(engineWorkerPath, 'VideoFxEngineWorker', {}, null);\n this.logger.info(`Successfully loaded the VideoFxProcessor's engine worker`);\n // Configure a handler to deal with messages received form the engine worker\n this.engineWorker.addEventListener('message', event => this.engineWorkerReceiver(event));\n } catch (error) {\n this.logger.error(error.toString());\n throw new Error(`Failed to load the VideoFxProcessor's engine worker`);\n }\n }\n\n /**\n * Build the videoFxEngine.\n * @param videoFxAssetParams [[VideoFxAssetParams]] defining current version of SDK\n */\n private async buildEngine(videoFxAssetParams: VideoFxAssetParams): Promise {\n // Instantiate the deferred promise so we can wait for the worker to\n // return a completion message\n this.buildEnginePromise = new DeferredPromise();\n\n // Send a message via the engine worker to instantiate\n // the video fx engine\n this.engineWorker.postMessage({\n msg: WORKER_MSG.BUILD_ENGINE_REQUEST,\n payload: {\n cdnBasePath: this.videoFxSpec.paths.cdnBasePath,\n sdkVersioningParams: videoFxAssetParams,\n },\n });\n\n // Wait until the engine finishes building\n try {\n await this.buildEnginePromise.getPromise();\n } catch (error) {\n this.logger.error(error.toString());\n throw new Error(`Failed to instantiate the VideoFxEngine`);\n }\n }\n\n /**\n * Loads the Video Fx library to drive video post-processing, given the versioning\n * of the SDK worker from the VideoFxAssetParams interface passed as a parameter.\n * @param videoFxAssetParams\n */\n private async loadFxLib(videoFxAssetParams: VideoFxAssetParams): Promise {\n // Determine engine worker path from versioning of the SDK worker\n const fxLibPath = this.getPathFromVideoFxAssetParams(\n this.videoFxSpec.paths.cdnBasePath + this.videoFxSpec.paths.fxLibPath,\n videoFxAssetParams\n );\n\n const WORKER_FETCH_OPTIONS: RequestInit = {\n method: 'GET',\n mode: 'cors',\n credentials: 'omit',\n redirect: 'follow',\n referrerPolicy: 'no-referrer',\n };\n\n try {\n const res = await fetchWithBehavior(fxLibPath, WORKER_FETCH_OPTIONS, {});\n if (!res.ok) {\n throw new Error('Fetch failed.');\n }\n const blobURL = window.URL.createObjectURL(await res.blob());\n await new Promise((resolve, reject) => {\n this.fxLibScript = document.createElement('script');\n this.fxLibScript.setAttribute('src', blobURL);\n this.fxLibScript.setAttribute('type', 'module');\n this.fxLibScript.setAttribute('async', 'false');\n this.fxLibScript.addEventListener('load', resolve);\n this.fxLibScript.addEventListener('error', reject);\n document.body.appendChild(this.fxLibScript);\n });\n } catch (error) {\n this.logger.error(error.toString());\n throw new Error(`Failed to load the fxlib`);\n }\n }\n\n /**\n * Getter for the current [[VideoFxConfig]] maintained as an instance property of\n * [[VideoFxProcessor]].\n * @returns currentEffectConfig\n */\n getEffectConfig(): VideoFxConfig {\n return this.cloneConfigFrom(this.effectConfig);\n }\n\n /**\n * Receives messages from the engine worker and then delegates\n * the proper response to a different function.\n * @param event notification to be received from the engine worker\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private engineWorkerReceiver(event: MessageEvent): void {\n const msg = event.data;\n switch (msg.msg) {\n case WORKER_MSG.BUILD_ENGINE_RESPONSE:\n this.settleEngineBuildPromise(msg.payload);\n break;\n case WORKER_MSG.PERFORM_SEGMENTATION_RESPONSE:\n this.settleSegmentationPromise(msg.payload.output);\n break;\n case WORKER_MSG.PERFORM_SEGMENTATION_SAB_RESPONSE:\n this.settleSegmentationPromiseSAB();\n break;\n case WORKER_MSG.DESTROY_ASSETS_RESPONSE:\n this.destroyedAssetsPromise.resolvePromise();\n break;\n default:\n this.logger.info(`VideoFx worker received unknown event msg: ${JSON.stringify(msg)}`);\n break;\n }\n }\n\n /**\n * Handle the message returned from the VideoFX Engine worker to\n * settle (resolve/reject) the promise associated with initializing the engine.\n * @param buildStatus status of the final result of building the engine\n */\n private settleEngineBuildPromise(buildStatus: number): void {\n // Resolve or reject the engineInstantiatedPromise depending on success\n // of instatiation\n if (buildStatus !== SEGMENTATION_MODEL.LOAD_SUCCESS) {\n this.buildEnginePromise.rejectPromise(new Error(`Failed to build VideoFxProcessor's engine`));\n } else {\n this.logger.info(`Successfully built the VideoFxEngine`);\n this.buildEnginePromise.resolvePromise();\n }\n }\n\n /**\n * Handle the received segmentation mask and then resolve/reject the promise to notify\n * the main processing function to prepare for the next frame (using ImageData transfer).\n * @param segmentationMask\n */\n private settleSegmentationPromise(segmentationMask: ImageData): void {\n // Resolve or reject the frameRequestPromise depending on the success of transforming\n // the input image\n if (segmentationMask) {\n // Resolve segmentation promise with mask data\n this.segmentationRequestPromise.resolveAndReplacePromise(segmentationMask);\n } else {\n this.segmentationRequestPromise.rejectAndReplacePromise(\n new Error(`Failed to perform a segmentation on the input image`)\n );\n }\n }\n\n /**\n * Handle the received segmentation mask and then resolve/reject the promise to notify\n * the main processing function to prepare for the next frame (using shared array buffer).\n */\n private settleSegmentationPromiseSAB(): void {\n try {\n // Resolve segmentation promise with mask data\n const transformedImageData = new ImageData(\n new Uint8ClampedArray(this.sharedImageData),\n SEGMENTATION_MODEL.WIDTH_IN_PIXELS,\n SEGMENTATION_MODEL.HEIGHT_IN_PIXELS\n );\n this.segmentationRequestPromise.resolveAndReplacePromise(transformedImageData);\n } catch {\n this.segmentationRequestPromise.rejectAndReplacePromise(\n new Error(\n `Failed to perform a segmentation with a shared ` + `array buffer on the input image`\n )\n );\n }\n }\n\n /**\n * Function that will convert the VideoFxProcessor into a NoOp version of itself.\n * Will only return input video stream and not use worker, engine, or segmentation\n * model.\n */\n private setToNoOpProcess(): void {\n this.process = this.noOpProcess;\n }\n\n /**\n * Detect client environment to determine if the [[VideoFxProcessor]] is supported.\n * @param logger to record/report events of checking processor support\n * @param attemptAssetLoad will also fetch and build all relevant components of the\n * processor to ensure end to end feature is supported\n * @returns a boolean promise that will resolve to true if supported and false if not\n */\n static async isSupported(\n logger: Logger = new NoOpLogger(),\n attemptAssetLoad: boolean = true\n ): Promise {\n // allCheckedPassed represents the state of support and we assume it is true until checkEnv tells us otherwise\n let allCheckedPassed: boolean = true;\n // checkEnv evaluates a boolean condition, badPromiseCondition, that when true would cause isSupported to fail.\n // We also log a corresponding error message for each support check so a builder can see what is still needed\n // in their environment.\n const checkEnv = (badPromiseCondition: boolean, message: string): void => {\n if (badPromiseCondition) {\n logger.info(message);\n allCheckedPassed = false;\n }\n };\n\n // Get context for operating environment\n // could not figure out how to remove globalThis to test failure case\n /* istanbul ignore next */\n checkEnv(typeof globalThis === 'undefined', 'Browser does not have globalThis.');\n\n // Check workers are supported\n checkEnv(!supportsWorker(globalThis, logger), 'Browser does not support web workers.');\n\n // Check wasm is supported\n checkEnv(!supportsWASM(globalThis, logger), 'Browser does not support wasm.');\n\n // Check webgl2 is supported\n checkEnv(\n !document.createElement('canvas').getContext('webgl2'),\n 'Browser does not support webgl.'\n );\n\n // Check browser support\n const browserBehavior = new DefaultBrowserBehavior();\n checkEnv(\n !browserBehavior.isVideoFxSupportedBrowser(),\n 'Browser is unsupported for VideoFxProcessor'\n );\n\n // checkProcessor first checks if we can load all required assets and then tests VideoFxProcessor.\n const checkProcessor = async (): Promise => {\n if (attemptAssetLoad) {\n try {\n const testFxProcessor = new VideoFxProcessor(logger);\n await testFxProcessor.loadAssets();\n await testFxProcessor.destroy(); // destroy assets we just temp loaded\n } catch {\n logger.info('Browser environment is unable to access the required external assets.');\n return Promise.resolve(false);\n }\n }\n return Promise.resolve(true);\n };\n\n return Promise.resolve(allCheckedPassed ? await checkProcessor() : false);\n }\n\n /**\n * Create a [[VideoFxProcessor]] that has loaded its necessary components, ready to instantly\n * process a video stream with the effects specified in the passed [[VideoFxConfig]].\n *\n * ** NOTICE **\n *\n * Amazon Chime background blur 2.0 and background replacement 2.0\n * Copyright 2023 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * By installing or using this package, you agree to the AWS Customer Agreement, AWS Service Terms, and AWS Privacy Notice.\n * If you already have an AWS Customer Agreement, you agree that the terms of that agreement govern your download and use of this package.\n * This package is provided as AWS Content and subject to the AWS Customer agreement and any other agreement with AWS governing your use of\n * AWS services.\n */\n static async create(\n logger: Logger,\n effectConfig: VideoFxConfig,\n processingBudgetPerFrame: number = RESOURCE_CONSTRAINTS.DEFAULT_PROCESSING_BUDGET_PER_FRAME,\n spec?: VideoFxSpec\n ): Promise {\n // Create the videoFxProcessor\n const videoFxProcessor: VideoFxProcessor = new VideoFxProcessor(\n logger,\n processingBudgetPerFrame\n );\n if (spec) {\n videoFxProcessor.setVideoFxSpec(spec);\n }\n // Load the required assets and set desired effect config\n try {\n await videoFxProcessor.loadAssets();\n await videoFxProcessor.setEffectConfig(effectConfig);\n return videoFxProcessor;\n } catch (error) {\n logger.error(error.toString());\n // If we fail loading an essential asset from above, we overwrite our\n // processor to process with no operations or effects\n videoFxProcessor.setToNoOpProcess();\n throw new Error(`VideoFxProcessor built with support for only NoOp processing`);\n }\n }\n\n /** @internal */\n setEventController(eventController: EventController): void {\n /*\n if this is a first time we set the eventController, need to publish the current VideoFxConfig.\n Otherwise, just set the eventController.\n */\n if (this.eventController) {\n this.eventController = eventController;\n } else {\n this.eventController = eventController;\n this.publishVideoFxConfigEvent();\n }\n }\n\n private publishVideoFxConfigEvent(): void {\n const mediaFXEventAttibutes: VideoFXEventAttributes = {\n backgroundBlurEnabled: this.effectConfig.backgroundBlur.isEnabled.toString(),\n backgroundBlurStrength: this.effectConfig.backgroundBlur.strength,\n backgroundReplacementEnabled: this.effectConfig.backgroundReplacement.isEnabled.toString(),\n backgroundFilterVersion: 2,\n };\n this.eventController.publishEvent('backgroundFilterConfigSelected', mediaFXEventAttibutes);\n }\n\n private sameVideoFxConfig(firstConfig: VideoFxConfig, secondConfig: VideoFxConfig): boolean {\n return (\n firstConfig.backgroundBlur.isEnabled === secondConfig.backgroundBlur.isEnabled &&\n firstConfig.backgroundBlur.strength === secondConfig.backgroundBlur.strength &&\n firstConfig.backgroundReplacement.backgroundImageURL ===\n secondConfig.backgroundReplacement.backgroundImageURL &&\n firstConfig.backgroundReplacement.defaultColor ===\n secondConfig.backgroundReplacement.defaultColor &&\n firstConfig.backgroundReplacement.isEnabled === secondConfig.backgroundReplacement.isEnabled\n );\n }\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport DataMessage from '../datamessage/DataMessage';\nimport MediaStreamBroker from '../mediastreambroker/MediaStreamBroker';\nimport DefaultTranscriptionController from '../transcript/DefaultTranscriptionController';\nimport TranscriptionController from '../transcript/TranscriptionController';\nimport { iterateEvery } from '../utils/Utils';\nimport RealtimeAttendeePositionInFrame from './RealtimeAttendeePositionInFrame';\nimport RealtimeController from './RealtimeController';\nimport RealtimeState from './RealtimeState';\nimport RealtimeVolumeIndicator from './RealtimeVolumeIndicator';\nimport type VolumeIndicatorCallback from './VolumeIndicatorCallback';\n\n/**\n * [[DefaultRealtimeController]] is written to adhere to the following tenets to\n * make privacy and performance bugs significantly less likely.\n *\n * 1. Any call to the object is guaranteed to succeed from the caller's\n * perspective to the maximum extent that this can be ensured. However, all\n * failures of the object are reported as fatal errors. For example, if local\n * mute fails, then that is a privacy issue and we must tear down the\n * connection and try starting over.\n *\n * 2. State is owned by the object and is considered authoritative at all times.\n * For example, if [[realtimeIsLocalAudioMuted]] is true then the user *is*\n * muted.\n *\n * 3. Callbacks are fired synchronously and do their work synchronously. Any\n * unnecessary asynchronous implementation only invites latency and\n * increases the surface error for potential errors.\n *\n * 4. Mutation only occurs when state changes. All state-changing functions are\n * idempotent.\n *\n * 5. Every conditional branch gets its own if statement and test coverage is\n * 100% for this object.\n *\n * 6. Function parameters and returns use primitives only (no classes or enums).\n * This minimizes the number of dependencies that consumers have to take on\n * and allows the object to be more easily wrapped. Values are normalized\n * where possible.\n *\n * 7. The object takes no other non-realtime dependencies.\n *\n * 8. Interface functions begin with `realtime` to make boundaries between the\n * RealtimeController interface and the UI or business logic explicit and\n * auditable.\n *\n * 9. Local state overrides remote state but not vice-versa. For example, if\n * locally muted with an active audio input and a remote state indicates the\n * same user is unmuted because the muted state has not yet propagated, then\n * the volume indicator update for the user would show the remote mute state\n * as muted. However, if locally muted without an active audio input and a\n * remote state indicates the user is unmuted (since they are dialed in), the\n * remote state persists but does not override the local state so\n * [[realtimeIsLocalAudioMuted]] still returns true.\n */\nexport default class DefaultRealtimeController implements RealtimeController {\n private readonly state: RealtimeState = new RealtimeState();\n private readonly _transcriptionController: TranscriptionController;\n\n constructor(\n private mediaStreamBroker: MediaStreamBroker,\n transcriptionController?: TranscriptionController\n ) {\n this._transcriptionController =\n transcriptionController || new DefaultTranscriptionController(this);\n }\n\n realtimeSetLocalAttendeeId(attendeeId: string, externalUserId: string): void {\n this.state.localAttendeeId = attendeeId;\n this.state.localExternalUserId = externalUserId;\n }\n\n realtimeSetAttendeeIdPresence(\n attendeeId: string,\n present: boolean,\n externalUserId: string | null,\n dropped: boolean | null,\n posInFrame: RealtimeAttendeePositionInFrame | null\n ): void {\n try {\n if (present) {\n this.state.attendeeIdToExternalUserId[attendeeId] = externalUserId;\n }\n for (const fn of this.state.attendeeIdChangesCallbacks) {\n fn(attendeeId, present, externalUserId, dropped, posInFrame);\n }\n } catch (e) {\n this.onError(e);\n }\n }\n\n realtimeSubscribeToAttendeeIdPresence(\n callback: (\n attendeeId: string,\n present: boolean,\n externalUserId?: string,\n dropped?: boolean,\n posInFrame?: RealtimeAttendeePositionInFrame | null\n ) => void\n ): void {\n try {\n this.state.attendeeIdChangesCallbacks.push(callback);\n } catch (e) {\n this.onError(e);\n }\n }\n\n realtimeUnsubscribeToAttendeeIdPresence(\n callback: (\n attendeeId: string,\n present: boolean,\n externalUserId?: string,\n dropped?: boolean,\n posInFrame?: RealtimeAttendeePositionInFrame | null\n ) => void\n ): void {\n try {\n const index = this.state.attendeeIdChangesCallbacks.indexOf(callback);\n if (index !== -1) {\n this.state.attendeeIdChangesCallbacks.splice(index, 1);\n }\n } catch (e) {\n this.onError(e);\n }\n }\n\n // Muting\n\n realtimeSetCanUnmuteLocalAudio(canUnmute: boolean): void {\n try {\n if (this.state.canUnmute === canUnmute) {\n return;\n }\n this.state.canUnmute = canUnmute;\n for (const fn of this.state.setCanUnmuteLocalAudioCallbacks) {\n fn(canUnmute);\n }\n } catch (e) {\n this.onError(e);\n }\n }\n\n realtimeSubscribeToSetCanUnmuteLocalAudio(callback: (canUnmute: boolean) => void): void {\n try {\n this.state.setCanUnmuteLocalAudioCallbacks.push(callback);\n } catch (e) {\n this.onError(e);\n }\n }\n\n realtimeUnsubscribeToSetCanUnmuteLocalAudio(callback: (canUnmute: boolean) => void): void {\n try {\n const index = this.state.setCanUnmuteLocalAudioCallbacks.indexOf(callback);\n if (index !== -1) {\n this.state.setCanUnmuteLocalAudioCallbacks.splice(index, 1);\n }\n } catch (e) {\n this.onError(e);\n }\n }\n\n realtimeCanUnmuteLocalAudio(): boolean {\n return this.state.canUnmute;\n }\n\n realtimeMuteLocalAudio(): void {\n if (this.state.muted) {\n return;\n }\n try {\n this.setAudioInputEnabled(false);\n this.state.muted = true;\n this.realtimeUpdateVolumeIndicator(\n this.state.localAttendeeId,\n null,\n null,\n null,\n this.state.localExternalUserId\n );\n for (const fn of this.state.muteAndUnmuteLocalAudioCallbacks) {\n fn(true);\n }\n } catch (e) {\n this.onError(e);\n }\n }\n\n realtimeUnmuteLocalAudio(): boolean {\n if (!this.state.muted) {\n return true;\n }\n if (!this.state.canUnmute) {\n return false;\n }\n try {\n this.setAudioInputEnabled(true);\n this.state.muted = false;\n this.realtimeUpdateVolumeIndicator(\n this.state.localAttendeeId,\n null,\n null,\n null,\n this.state.localExternalUserId\n );\n for (const fn of this.state.muteAndUnmuteLocalAudioCallbacks) {\n fn(false);\n }\n return true;\n } catch (e) {\n this.onError(e);\n return false;\n }\n }\n\n realtimeSubscribeToMuteAndUnmuteLocalAudio(callback: (muted: boolean) => void): void {\n try {\n this.state.muteAndUnmuteLocalAudioCallbacks.push(callback);\n } catch (e) {\n this.onError(e);\n }\n }\n\n realtimeUnsubscribeToMuteAndUnmuteLocalAudio(callback: (muted: boolean) => void): void {\n try {\n const index = this.state.muteAndUnmuteLocalAudioCallbacks.indexOf(callback);\n if (index !== -1) {\n this.state.muteAndUnmuteLocalAudioCallbacks.splice(index, 1);\n }\n } catch (e) {\n this.onError(e);\n }\n }\n\n realtimeIsLocalAudioMuted(): boolean {\n return this.state.muted;\n }\n\n // Volume Indicators\n\n realtimeSubscribeToVolumeIndicator(attendeeId: string, callback: VolumeIndicatorCallback): void {\n try {\n if (!this.state.volumeIndicatorCallbacks.hasOwnProperty(attendeeId)) {\n this.state.volumeIndicatorCallbacks[attendeeId] = [];\n }\n this.state.volumeIndicatorCallbacks[attendeeId].push(callback);\n this.sendVolumeIndicatorChange(\n attendeeId,\n true,\n true,\n true,\n this.state.attendeeIdToExternalUserId[attendeeId]\n );\n } catch (e) {\n this.onError(e);\n }\n }\n\n realtimeUnsubscribeFromVolumeIndicator(\n attendeeId: string,\n callback?: VolumeIndicatorCallback\n ): void {\n const callbacks = this.state.volumeIndicatorCallbacks[attendeeId];\n if (!callbacks) {\n return;\n }\n if (callback) {\n const index = this.state.volumeIndicatorCallbacks[attendeeId].indexOf(callback);\n if (index >= 0) {\n this.state.volumeIndicatorCallbacks[attendeeId].splice(index, 1);\n }\n } else {\n delete this.state.volumeIndicatorCallbacks[attendeeId];\n }\n }\n\n realtimeUpdateVolumeIndicator(\n attendeeId: string,\n volume: number | null,\n muted: boolean | null,\n signalStrength: number | null,\n externalUserId: string | null\n ): void {\n try {\n muted = this.applyLocalMuteOverride(attendeeId, muted);\n const state = this.getVolumeIndicatorState(attendeeId);\n let volumeUpdated = false;\n let mutedUpdated = false;\n let signalStrengthUpdated = false;\n if (muted !== null) {\n if (state.muted !== muted) {\n state.muted = muted;\n mutedUpdated = true;\n if (state.muted && state.volume !== 0.0) {\n state.volume = 0.0;\n volumeUpdated = true;\n }\n }\n }\n if (!state.muted && volume !== null) {\n if (state.volume !== volume) {\n state.volume = volume;\n volumeUpdated = true;\n }\n if (state.muted === null) {\n state.muted = false;\n mutedUpdated = true;\n }\n }\n if (signalStrength !== null) {\n if (state.signalStrength !== signalStrength) {\n state.signalStrength = signalStrength;\n signalStrengthUpdated = true;\n }\n }\n this.sendVolumeIndicatorChange(\n attendeeId,\n volumeUpdated,\n mutedUpdated,\n signalStrengthUpdated,\n externalUserId\n );\n } catch (e) {\n this.onError(e);\n }\n }\n\n realtimeSubscribeToLocalSignalStrengthChange(callback: (signalStrength: number) => void): void {\n try {\n this.state.localSignalStrengthChangeCallbacks.push(callback);\n if (this.state.localAttendeeId === null) {\n return;\n }\n this.sendLocalSignalStrengthChange(this.state.localAttendeeId, true);\n } catch (e) {\n this.onError(e);\n }\n }\n\n realtimeUnsubscribeToLocalSignalStrengthChange(callback: (signalStrength: number) => void): void {\n try {\n const index = this.state.localSignalStrengthChangeCallbacks.indexOf(callback);\n if (index !== -1) {\n this.state.localSignalStrengthChangeCallbacks.splice(index, 1);\n }\n } catch (e) {\n this.onError(e);\n }\n }\n\n realtimeSubscribeToSendDataMessage(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n callback: (topic: string, data: Uint8Array | string | any, lifetimeMs?: number) => void\n ): void {\n try {\n this.state.sendDataMessageCallbacks.push(callback);\n } catch (e) {\n this.onError(e);\n }\n }\n\n realtimeUnsubscribeFromSendDataMessage(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n callback: (topic: string, data: Uint8Array | string | any, lifetimeMs?: number) => void\n ): void {\n try {\n const index = this.state.sendDataMessageCallbacks.indexOf(callback);\n if (index !== -1) {\n this.state.sendDataMessageCallbacks.splice(index, 1);\n }\n } catch (e) {\n this.onError(e);\n }\n }\n\n realtimeSendDataMessage(\n topic: string,\n data: Uint8Array | string | any, // eslint-disable-line @typescript-eslint/no-explicit-any\n lifetimeMs?: number\n ): void {\n try {\n for (const fn of this.state.sendDataMessageCallbacks) {\n fn(topic, data, lifetimeMs);\n }\n } catch (e) {\n this.onError(e);\n }\n }\n\n realtimeSubscribeToReceiveDataMessage(\n topic: string,\n callback: (dataMessage: DataMessage) => void\n ): void {\n try {\n if (this.state.receiveDataMessageCallbacks.has(topic)) {\n this.state.receiveDataMessageCallbacks.get(topic).push(callback);\n } else {\n this.state.receiveDataMessageCallbacks.set(topic, [callback]);\n }\n } catch (e) {\n this.onError(e);\n }\n }\n\n realtimeUnsubscribeFromReceiveDataMessage(topic: string): void {\n try {\n this.state.receiveDataMessageCallbacks.delete(topic);\n } catch (e) {\n this.onError(e);\n }\n }\n\n realtimeReceiveDataMessage(dataMessage: DataMessage): void {\n try {\n iterateEvery(this.state.receiveDataMessageCallbacks.get(dataMessage.topic), fn => {\n fn(dataMessage);\n });\n } catch (e) {\n // We don't want to throw to our caller, but we still want to surface the error in the console\n Promise.reject(e);\n }\n }\n\n // Error Handling\n\n realtimeSubscribeToFatalError(callback: (error: Error) => void): void {\n try {\n this.state.fatalErrorCallbacks.push(callback);\n } catch (e) {\n this.onError(e);\n }\n }\n\n realtimeUnsubscribeToFatalError(callback: (error: Error) => void): void {\n try {\n const index = this.state.fatalErrorCallbacks.indexOf(callback);\n if (index !== -1) {\n this.state.fatalErrorCallbacks.splice(index, 1);\n }\n } catch (e) {\n this.onError(e);\n }\n }\n\n get transcriptionController(): TranscriptionController {\n return this._transcriptionController;\n }\n\n // Internals\n\n private setAudioInputEnabled(enabled: boolean): void {\n if (enabled) {\n this.mediaStreamBroker.unmuteLocalAudioInputStream();\n } else {\n this.mediaStreamBroker.muteLocalAudioInputStream();\n }\n }\n\n private applyLocalMuteOverride(\n attendeeIdRemote: string,\n mutedRemote: boolean | null\n ): boolean | null {\n const attendeeIdLocal = this.state.localAttendeeId;\n const mutedLocal = this.state.muted;\n if (attendeeIdRemote !== attendeeIdLocal) {\n return mutedRemote;\n }\n // This is a workaround to check if no audio input then just use the remote value\n if (\n // @ts-ignore\n !('activeDevices' in this.mediaStreamBroker && this.mediaStreamBroker.activeDevices['audio'])\n ) {\n return mutedRemote;\n }\n return mutedLocal;\n }\n\n private sendVolumeIndicatorChange(\n attendeeId: string,\n volumeUpdated: boolean,\n mutedUpdated: boolean,\n signalStrengthUpdated: boolean,\n externalUserId: string\n ): void {\n this.sendLocalSignalStrengthChange(attendeeId, signalStrengthUpdated);\n if (!this.state.volumeIndicatorCallbacks.hasOwnProperty(attendeeId)) {\n return;\n }\n const state = this.getVolumeIndicatorState(attendeeId);\n const updateState = new RealtimeVolumeIndicator();\n if (volumeUpdated) {\n updateState.volume = state.volume;\n }\n if (mutedUpdated) {\n updateState.muted = state.muted;\n }\n if (signalStrengthUpdated) {\n updateState.signalStrength = state.signalStrength;\n }\n if (this.stateIsEmpty(updateState)) {\n return;\n }\n for (const fn of this.state.volumeIndicatorCallbacks[attendeeId]) {\n fn(\n attendeeId,\n updateState.volume,\n updateState.muted,\n updateState.signalStrength,\n externalUserId\n );\n }\n }\n\n private sendLocalSignalStrengthChange(attendeeId: string, signalStrengthUpdated: boolean): void {\n if (!signalStrengthUpdated) {\n return;\n }\n if (attendeeId !== this.state.localAttendeeId) {\n return;\n }\n const state = this.getVolumeIndicatorState(attendeeId);\n const signalStrength: number | null = state.signalStrength;\n if (signalStrength === null) {\n return;\n }\n for (const fn of this.state.localSignalStrengthChangeCallbacks) {\n fn(signalStrength);\n }\n }\n\n private getVolumeIndicatorState(id: string): RealtimeVolumeIndicator {\n if (!this.state.volumeIndicatorState.hasOwnProperty(id)) {\n this.state.volumeIndicatorState[id] = new RealtimeVolumeIndicator();\n }\n return this.state.volumeIndicatorState[id];\n }\n\n private stateIsEmpty(state: RealtimeVolumeIndicator): boolean {\n return state.volume === null && state.muted === null && state.signalStrength === null;\n }\n\n private onError(error: Error): void {\n try {\n // 1) try the fatal error callbacks so that the issue is reported in\n // logs and to give the handler a chance to clean up and reset.\n for (const callback of this.state.fatalErrorCallbacks) {\n callback(error);\n }\n } catch (eventError) {\n try {\n // 2) if the error event fails, fall back to console.error so that\n // it at least prints out to the console before moving on.\n console.error(error);\n console.error(eventError);\n } catch (consoleError) {\n // 3) if all else fails, swallow the error and give up to guarantee\n // that the API call returns cleanly.\n }\n }\n }\n}\n","var AWS = require('../core');\n\n/**\n * Creates a credential provider chain that searches for AWS credentials\n * in a list of credential providers specified by the {providers} property.\n *\n * By default, the chain will use the {defaultProviders} to resolve credentials.\n * These providers will look in the environment using the\n * {AWS.EnvironmentCredentials} class with the 'AWS' and 'AMAZON' prefixes.\n *\n * ## Setting Providers\n *\n * Each provider in the {providers} list should be a function that returns\n * a {AWS.Credentials} object, or a hardcoded credentials object. The function\n * form allows for delayed execution of the credential construction.\n *\n * ## Resolving Credentials from a Chain\n *\n * Call {resolve} to return the first valid credential object that can be\n * loaded by the provider chain.\n *\n * For example, to resolve a chain with a custom provider that checks a file\n * on disk after the set of {defaultProviders}:\n *\n * ```javascript\n * var diskProvider = new AWS.FileSystemCredentials('./creds.json');\n * var chain = new AWS.CredentialProviderChain();\n * chain.providers.push(diskProvider);\n * chain.resolve();\n * ```\n *\n * The above code will return the `diskProvider` object if the\n * file contains credentials and the `defaultProviders` do not contain\n * any credential settings.\n *\n * @!attribute providers\n * @return [Array]\n * a list of credentials objects or functions that return credentials\n * objects. If the provider is a function, the function will be\n * executed lazily when the provider needs to be checked for valid\n * credentials. By default, this object will be set to the\n * {defaultProviders}.\n * @see defaultProviders\n */\nAWS.CredentialProviderChain = AWS.util.inherit(AWS.Credentials, {\n\n /**\n * Creates a new CredentialProviderChain with a default set of providers\n * specified by {defaultProviders}.\n */\n constructor: function CredentialProviderChain(providers) {\n if (providers) {\n this.providers = providers;\n } else {\n this.providers = AWS.CredentialProviderChain.defaultProviders.slice(0);\n }\n this.resolveCallbacks = [];\n },\n\n /**\n * @!method resolvePromise()\n * Returns a 'thenable' promise.\n * Resolves the provider chain by searching for the first set of\n * credentials in {providers}.\n *\n * Two callbacks can be provided to the `then` method on the returned promise.\n * The first callback will be called if the promise is fulfilled, and the second\n * callback will be called if the promise is rejected.\n * @callback fulfilledCallback function(credentials)\n * Called if the promise is fulfilled and the provider resolves the chain\n * to a credentials object\n * @param credentials [AWS.Credentials] the credentials object resolved\n * by the provider chain.\n * @callback rejectedCallback function(error)\n * Called if the promise is rejected.\n * @param err [Error] the error object returned if no credentials are found.\n * @return [Promise] A promise that represents the state of the `resolve` method call.\n * @example Calling the `resolvePromise` method.\n * var promise = chain.resolvePromise();\n * promise.then(function(credentials) { ... }, function(err) { ... });\n */\n\n /**\n * Resolves the provider chain by searching for the first set of\n * credentials in {providers}.\n *\n * @callback callback function(err, credentials)\n * Called when the provider resolves the chain to a credentials object\n * or null if no credentials can be found.\n *\n * @param err [Error] the error object returned if no credentials are\n * found.\n * @param credentials [AWS.Credentials] the credentials object resolved\n * by the provider chain.\n * @return [AWS.CredentialProviderChain] the provider, for chaining.\n */\n resolve: function resolve(callback) {\n var self = this;\n if (self.providers.length === 0) {\n callback(new Error('No providers'));\n return self;\n }\n\n if (self.resolveCallbacks.push(callback) === 1) {\n var index = 0;\n var providers = self.providers.slice(0);\n\n function resolveNext(err, creds) {\n if ((!err && creds) || index === providers.length) {\n AWS.util.arrayEach(self.resolveCallbacks, function (callback) {\n callback(err, creds);\n });\n self.resolveCallbacks.length = 0;\n return;\n }\n\n var provider = providers[index++];\n if (typeof provider === 'function') {\n creds = provider.call();\n } else {\n creds = provider;\n }\n\n if (creds.get) {\n creds.get(function (getErr) {\n resolveNext(getErr, getErr ? null : creds);\n });\n } else {\n resolveNext(null, creds);\n }\n }\n\n resolveNext();\n }\n\n return self;\n }\n});\n\n/**\n * The default set of providers used by a vanilla CredentialProviderChain.\n *\n * In the browser:\n *\n * ```javascript\n * AWS.CredentialProviderChain.defaultProviders = []\n * ```\n *\n * In Node.js:\n *\n * ```javascript\n * AWS.CredentialProviderChain.defaultProviders = [\n * function () { return new AWS.EnvironmentCredentials('AWS'); },\n * function () { return new AWS.EnvironmentCredentials('AMAZON'); },\n * function () { return new AWS.SsoCredentials(); },\n * function () { return new AWS.SharedIniFileCredentials(); },\n * function () { return new AWS.ECSCredentials(); },\n * function () { return new AWS.ProcessCredentials(); },\n * function () { return new AWS.TokenFileWebIdentityCredentials(); },\n * function () { return new AWS.EC2MetadataCredentials() }\n * ]\n * ```\n */\nAWS.CredentialProviderChain.defaultProviders = [];\n\n/**\n * @api private\n */\nAWS.CredentialProviderChain.addPromisesToClass = function addPromisesToClass(PromiseDependency) {\n this.prototype.resolvePromise = AWS.util.promisifyMethod('resolve', PromiseDependency);\n};\n\n/**\n * @api private\n */\nAWS.CredentialProviderChain.deletePromisesFromClass = function deletePromisesFromClass() {\n delete this.prototype.resolvePromise;\n};\n\nAWS.util.addPromises(AWS.CredentialProviderChain);\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['opsworks'] = {};\nAWS.OpsWorks = Service.defineService('opsworks', ['2013-02-18']);\nObject.defineProperty(apiLoader.services['opsworks'], '2013-02-18', {\n get: function get() {\n var model = require('../apis/opsworks-2013-02-18.min.json');\n model.paginators = require('../apis/opsworks-2013-02-18.paginators.json').pagination;\n model.waiters = require('../apis/opsworks-2013-02-18.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.OpsWorks;\n","/**\n * Escapes characters that can not be in an XML element.\n */\nfunction escapeElement(value) {\n return value.replace(/&/g, '&')\n .replace(//g, '>')\n .replace(/\\r/g, ' ')\n .replace(/\\n/g, ' ')\n .replace(/\\u0085/g, '…')\n .replace(/\\u2028/, '
');\n}\n\n/**\n * @api private\n */\nmodule.exports = {\n escapeElement: escapeElement\n};\n","'use strict';\n\nvar bind = require('./helpers/bind');\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n return toString.call(val) === '[object Array]';\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nfunction isArrayBuffer(val) {\n return toString.call(val) === '[object ArrayBuffer]';\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(val) {\n return (typeof FormData !== 'undefined') && (val instanceof FormData);\n}\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n var result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (val.buffer instanceof ArrayBuffer);\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n return typeof val === 'number';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {Object} val The value to test\n * @return {boolean} True if value is a plain Object, otherwise false\n */\nfunction isPlainObject(val) {\n if (toString.call(val) !== '[object Object]') {\n return false;\n }\n\n var prototype = Object.getPrototypeOf(val);\n return prototype === null || prototype === Object.prototype;\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nfunction isDate(val) {\n return toString.call(val) === '[object Date]';\n}\n\n/**\n * Determine if a value is a File\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nfunction isFile(val) {\n return toString.call(val) === '[object File]';\n}\n\n/**\n * Determine if a value is a Blob\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nfunction isBlob(val) {\n return toString.call(val) === '[object Blob]';\n}\n\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nfunction isFunction(val) {\n return toString.call(val) === '[object Function]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nfunction isStream(val) {\n return isObject(val) && isFunction(val.pipe);\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nfunction isURLSearchParams(val) {\n return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams;\n}\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n return str.trim ? str.trim() : str.replace(/^\\s+|\\s+$/g, '');\n}\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n */\nfunction isStandardBrowserEnv() {\n if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' ||\n navigator.product === 'NativeScript' ||\n navigator.product === 'NS')) {\n return false;\n }\n return (\n typeof window !== 'undefined' &&\n typeof document !== 'undefined'\n );\n}\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\nfunction forEach(obj, fn) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (var i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n fn.call(null, obj[key], key, obj);\n }\n }\n }\n}\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (isPlainObject(result[key]) && isPlainObject(val)) {\n result[key] = merge(result[key], val);\n } else if (isPlainObject(val)) {\n result[key] = merge({}, val);\n } else if (isArray(val)) {\n result[key] = val.slice();\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\nfunction extend(a, b, thisArg) {\n forEach(b, function assignValue(val, key) {\n if (thisArg && typeof val === 'function') {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n });\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n * @return {string} content value without BOM\n */\nfunction stripBOM(content) {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\nmodule.exports = {\n isArray: isArray,\n isArrayBuffer: isArrayBuffer,\n isBuffer: isBuffer,\n isFormData: isFormData,\n isArrayBufferView: isArrayBufferView,\n isString: isString,\n isNumber: isNumber,\n isObject: isObject,\n isPlainObject: isPlainObject,\n isUndefined: isUndefined,\n isDate: isDate,\n isFile: isFile,\n isBlob: isBlob,\n isFunction: isFunction,\n isStream: isStream,\n isURLSearchParams: isURLSearchParams,\n isStandardBrowserEnv: isStandardBrowserEnv,\n forEach: forEach,\n merge: merge,\n extend: extend,\n trim: trim,\n stripBOM: stripBOM\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport Logger from '../logger/Logger';\nimport OnceTask from './OnceTask';\nimport Task from './Task';\nimport TaskStatus from './TaskStatus';\n\n/*\n * [[BaseTask]] provides common utilities for task implementations.\n */\nexport default abstract class BaseTask implements Task {\n protected taskName = 'BaseTask';\n\n private parentTask: Task | null = null;\n private status: TaskStatus = TaskStatus.IDLE;\n\n abstract run(): Promise;\n\n constructor(protected logger: Logger) {\n this.run = this.baseRun.bind(this, this.run);\n this.cancel = this.baseCancel.bind(this, this.cancel);\n }\n\n once(...dependencies: (Task | undefined)[]): OnceTask {\n return new OnceTask(this.logger, this, dependencies);\n }\n\n cancel(): void {}\n\n name(): string {\n return this.parentTask ? `${this.parentTask.name()}/${this.taskName}` : this.taskName;\n }\n\n setParent(parentTask: Task): void {\n this.parentTask = parentTask;\n }\n\n protected getStatus(): TaskStatus {\n return this.status;\n }\n\n protected logAndThrow(message: string): void {\n this.logger.info(message);\n throw new Error(message);\n }\n\n private async baseRun(originalRun: () => Promise): Promise {\n try {\n const startTime = Date.now();\n this.logger.info(`running task ${this.name()}`);\n\n switch (this.status) {\n case TaskStatus.RUNNING:\n this.logAndThrow(`${this.name()} is already running`);\n case TaskStatus.CANCELED:\n this.logAndThrow(`${this.name()} was canceled before running`);\n case TaskStatus.FINISHED:\n this.logAndThrow(`${this.name()} was already finished`);\n }\n\n this.status = TaskStatus.RUNNING;\n await originalRun.call(this);\n this.logger.info(`${this.name()} took ${Math.round(Date.now() - startTime)} ms`);\n } catch (err) {\n throw err;\n } finally {\n if (this.status !== TaskStatus.CANCELED) {\n this.status = TaskStatus.FINISHED;\n }\n }\n }\n\n private baseCancel(originalCancel: () => void): void {\n if (this.status === TaskStatus.CANCELED || this.status === TaskStatus.FINISHED) {\n this.logger.info(`Not canceling ${this.name()}: state is ${this.status}`);\n return;\n }\n this.logger.info(`canceling task ${this.name()}`);\n this.status = TaskStatus.CANCELED;\n\n originalCancel.call(this);\n }\n}\n","'use strict';\nmodule.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","/**\n * Base-N/Base-X encoding/decoding functions.\n *\n * Original implementation from base-x:\n * https://github.com/cryptocoinjs/base-x\n *\n * Which is MIT licensed:\n *\n * The MIT License (MIT)\n *\n * Copyright base-x contributors (c) 2016\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\n * DEALINGS IN THE SOFTWARE.\n */\nvar api = {};\nmodule.exports = api;\n\n// baseN alphabet indexes\nvar _reverseAlphabets = {};\n\n/**\n * BaseN-encodes a Uint8Array using the given alphabet.\n *\n * @param input the Uint8Array to encode.\n * @param maxline the maximum number of encoded characters per line to use,\n * defaults to none.\n *\n * @return the baseN-encoded output string.\n */\napi.encode = function(input, alphabet, maxline) {\n if(typeof alphabet !== 'string') {\n throw new TypeError('\"alphabet\" must be a string.');\n }\n if(maxline !== undefined && typeof maxline !== 'number') {\n throw new TypeError('\"maxline\" must be a number.');\n }\n\n var output = '';\n\n if(!(input instanceof Uint8Array)) {\n // assume forge byte buffer\n output = _encodeWithByteBuffer(input, alphabet);\n } else {\n var i = 0;\n var base = alphabet.length;\n var first = alphabet.charAt(0);\n var digits = [0];\n for(i = 0; i < input.length; ++i) {\n for(var j = 0, carry = input[i]; j < digits.length; ++j) {\n carry += digits[j] << 8;\n digits[j] = carry % base;\n carry = (carry / base) | 0;\n }\n\n while(carry > 0) {\n digits.push(carry % base);\n carry = (carry / base) | 0;\n }\n }\n\n // deal with leading zeros\n for(i = 0; input[i] === 0 && i < input.length - 1; ++i) {\n output += first;\n }\n // convert digits to a string\n for(i = digits.length - 1; i >= 0; --i) {\n output += alphabet[digits[i]];\n }\n }\n\n if(maxline) {\n var regex = new RegExp('.{1,' + maxline + '}', 'g');\n output = output.match(regex).join('\\r\\n');\n }\n\n return output;\n};\n\n/**\n * Decodes a baseN-encoded (using the given alphabet) string to a\n * Uint8Array.\n *\n * @param input the baseN-encoded input string.\n *\n * @return the Uint8Array.\n */\napi.decode = function(input, alphabet) {\n if(typeof input !== 'string') {\n throw new TypeError('\"input\" must be a string.');\n }\n if(typeof alphabet !== 'string') {\n throw new TypeError('\"alphabet\" must be a string.');\n }\n\n var table = _reverseAlphabets[alphabet];\n if(!table) {\n // compute reverse alphabet\n table = _reverseAlphabets[alphabet] = [];\n for(var i = 0; i < alphabet.length; ++i) {\n table[alphabet.charCodeAt(i)] = i;\n }\n }\n\n // remove whitespace characters\n input = input.replace(/\\s/g, '');\n\n var base = alphabet.length;\n var first = alphabet.charAt(0);\n var bytes = [0];\n for(var i = 0; i < input.length; i++) {\n var value = table[input.charCodeAt(i)];\n if(value === undefined) {\n return;\n }\n\n for(var j = 0, carry = value; j < bytes.length; ++j) {\n carry += bytes[j] * base;\n bytes[j] = carry & 0xff;\n carry >>= 8;\n }\n\n while(carry > 0) {\n bytes.push(carry & 0xff);\n carry >>= 8;\n }\n }\n\n // deal with leading zeros\n for(var k = 0; input[k] === first && k < input.length - 1; ++k) {\n bytes.push(0);\n }\n\n if(typeof Buffer !== 'undefined') {\n return Buffer.from(bytes.reverse());\n }\n\n return new Uint8Array(bytes.reverse());\n};\n\nfunction _encodeWithByteBuffer(input, alphabet) {\n var i = 0;\n var base = alphabet.length;\n var first = alphabet.charAt(0);\n var digits = [0];\n for(i = 0; i < input.length(); ++i) {\n for(var j = 0, carry = input.at(i); j < digits.length; ++j) {\n carry += digits[j] << 8;\n digits[j] = carry % base;\n carry = (carry / base) | 0;\n }\n\n while(carry > 0) {\n digits.push(carry % base);\n carry = (carry / base) | 0;\n }\n }\n\n var output = '';\n\n // deal with leading zeros\n for(i = 0; input.at(i) === 0 && i < input.length() - 1; ++i) {\n output += first;\n }\n // convert digits to a string\n for(i = digits.length - 1; i >= 0; --i) {\n output += alphabet[digits[i]];\n }\n\n return output;\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _rng = _interopRequireDefault(require(\"./rng.js\"));\n\nvar _bytesToUuid = _interopRequireDefault(require(\"./bytesToUuid.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// **`v1()` - Generate time-based UUID**\n//\n// Inspired by https://github.com/LiosK/UUID.js\n// and http://docs.python.org/library/uuid.html\nvar _nodeId;\n\nvar _clockseq; // Previous uuid creation time\n\n\nvar _lastMSecs = 0;\nvar _lastNSecs = 0; // See https://github.com/uuidjs/uuid for API details\n\nfunction v1(options, buf, offset) {\n var i = buf && offset || 0;\n var b = buf || [];\n options = options || {};\n var node = options.node || _nodeId;\n var clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq; // node and clockseq need to be initialized to random values if they're not\n // specified. We do this lazily to minimize issues related to insufficient\n // system entropy. See #189\n\n if (node == null || clockseq == null) {\n var seedBytes = options.random || (options.rng || _rng.default)();\n\n if (node == null) {\n // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1)\n node = _nodeId = [seedBytes[0] | 0x01, seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]];\n }\n\n if (clockseq == null) {\n // Per 4.2.2, randomize (14 bit) clockseq\n clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff;\n }\n } // UUID timestamps are 100 nano-second units since the Gregorian epoch,\n // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so\n // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs'\n // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00.\n\n\n var msecs = options.msecs !== undefined ? options.msecs : new Date().getTime(); // Per 4.2.1.2, use count of uuid's generated during the current clock\n // cycle to simulate higher resolution clock\n\n var nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1; // Time since last uuid creation (in msecs)\n\n var dt = msecs - _lastMSecs + (nsecs - _lastNSecs) / 10000; // Per 4.2.1.2, Bump clockseq on clock regression\n\n if (dt < 0 && options.clockseq === undefined) {\n clockseq = clockseq + 1 & 0x3fff;\n } // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new\n // time interval\n\n\n if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) {\n nsecs = 0;\n } // Per 4.2.1.2 Throw error if too many uuids are requested\n\n\n if (nsecs >= 10000) {\n throw new Error(\"uuid.v1(): Can't create more than 10M uuids/sec\");\n }\n\n _lastMSecs = msecs;\n _lastNSecs = nsecs;\n _clockseq = clockseq; // Per 4.1.4 - Convert from unix epoch to Gregorian epoch\n\n msecs += 12219292800000; // `time_low`\n\n var tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000;\n b[i++] = tl >>> 24 & 0xff;\n b[i++] = tl >>> 16 & 0xff;\n b[i++] = tl >>> 8 & 0xff;\n b[i++] = tl & 0xff; // `time_mid`\n\n var tmh = msecs / 0x100000000 * 10000 & 0xfffffff;\n b[i++] = tmh >>> 8 & 0xff;\n b[i++] = tmh & 0xff; // `time_high_and_version`\n\n b[i++] = tmh >>> 24 & 0xf | 0x10; // include version\n\n b[i++] = tmh >>> 16 & 0xff; // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant)\n\n b[i++] = clockseq >>> 8 | 0x80; // `clock_seq_low`\n\n b[i++] = clockseq & 0xff; // `node`\n\n for (var n = 0; n < 6; ++n) {\n b[i + n] = node[n];\n }\n\n return buf ? buf : (0, _bytesToUuid.default)(b);\n}\n\nvar _default = v1;\nexports.default = _default;","'use strict';\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar FunctionPrototype = Function.prototype;\nvar apply = FunctionPrototype.apply;\nvar call = FunctionPrototype.call;\n\n// eslint-disable-next-line es/no-function-prototype-bind, es/no-reflect -- safe\nmodule.exports = typeof Reflect == 'object' && Reflect.apply || (NATIVE_BIND ? call.bind(apply) : function () {\n return call.apply(apply, arguments);\n});\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar getOwnPropertyDescriptors = Object.getOwnPropertyDescriptors ||\n function getOwnPropertyDescriptors(obj) {\n var keys = Object.keys(obj);\n var descriptors = {};\n for (var i = 0; i < keys.length; i++) {\n descriptors[keys[i]] = Object.getOwnPropertyDescriptor(obj, keys[i]);\n }\n return descriptors;\n };\n\nvar formatRegExp = /%[sdj%]/g;\nexports.format = function(f) {\n if (!isString(f)) {\n var objects = [];\n for (var i = 0; i < arguments.length; i++) {\n objects.push(inspect(arguments[i]));\n }\n return objects.join(' ');\n }\n\n var i = 1;\n var args = arguments;\n var len = args.length;\n var str = String(f).replace(formatRegExp, function(x) {\n if (x === '%%') return '%';\n if (i >= len) return x;\n switch (x) {\n case '%s': return String(args[i++]);\n case '%d': return Number(args[i++]);\n case '%j':\n try {\n return JSON.stringify(args[i++]);\n } catch (_) {\n return '[Circular]';\n }\n default:\n return x;\n }\n });\n for (var x = args[i]; i < len; x = args[++i]) {\n if (isNull(x) || !isObject(x)) {\n str += ' ' + x;\n } else {\n str += ' ' + inspect(x);\n }\n }\n return str;\n};\n\n\n// Mark that a method should not be used.\n// Returns a modified function which warns once by default.\n// If --no-deprecation is set, then it is a no-op.\nexports.deprecate = function(fn, msg) {\n if (typeof process !== 'undefined' && process.noDeprecation === true) {\n return fn;\n }\n\n // Allow for deprecating things in the process of starting up.\n if (typeof process === 'undefined') {\n return function() {\n return exports.deprecate(fn, msg).apply(this, arguments);\n };\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (process.throwDeprecation) {\n throw new Error(msg);\n } else if (process.traceDeprecation) {\n console.trace(msg);\n } else {\n console.error(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n};\n\n\nvar debugs = {};\nvar debugEnvRegex = /^$/;\n\nif (process.env.NODE_DEBUG) {\n var debugEnv = process.env.NODE_DEBUG;\n debugEnv = debugEnv.replace(/[|\\\\{}()[\\]^$+?.]/g, '\\\\$&')\n .replace(/\\*/g, '.*')\n .replace(/,/g, '$|^')\n .toUpperCase();\n debugEnvRegex = new RegExp('^' + debugEnv + '$', 'i');\n}\nexports.debuglog = function(set) {\n set = set.toUpperCase();\n if (!debugs[set]) {\n if (debugEnvRegex.test(set)) {\n var pid = process.pid;\n debugs[set] = function() {\n var msg = exports.format.apply(exports, arguments);\n console.error('%s %d: %s', set, pid, msg);\n };\n } else {\n debugs[set] = function() {};\n }\n }\n return debugs[set];\n};\n\n\n/**\n * Echos the value of a value. Trys to print the value out\n * in the best way possible given the different types.\n *\n * @param {Object} obj The object to print out.\n * @param {Object} opts Optional options object that alters the output.\n */\n/* legacy: obj, showHidden, depth, colors*/\nfunction inspect(obj, opts) {\n // default options\n var ctx = {\n seen: [],\n stylize: stylizeNoColor\n };\n // legacy...\n if (arguments.length >= 3) ctx.depth = arguments[2];\n if (arguments.length >= 4) ctx.colors = arguments[3];\n if (isBoolean(opts)) {\n // legacy...\n ctx.showHidden = opts;\n } else if (opts) {\n // got an \"options\" object\n exports._extend(ctx, opts);\n }\n // set default options\n if (isUndefined(ctx.showHidden)) ctx.showHidden = false;\n if (isUndefined(ctx.depth)) ctx.depth = 2;\n if (isUndefined(ctx.colors)) ctx.colors = false;\n if (isUndefined(ctx.customInspect)) ctx.customInspect = true;\n if (ctx.colors) ctx.stylize = stylizeWithColor;\n return formatValue(ctx, obj, ctx.depth);\n}\nexports.inspect = inspect;\n\n\n// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics\ninspect.colors = {\n 'bold' : [1, 22],\n 'italic' : [3, 23],\n 'underline' : [4, 24],\n 'inverse' : [7, 27],\n 'white' : [37, 39],\n 'grey' : [90, 39],\n 'black' : [30, 39],\n 'blue' : [34, 39],\n 'cyan' : [36, 39],\n 'green' : [32, 39],\n 'magenta' : [35, 39],\n 'red' : [31, 39],\n 'yellow' : [33, 39]\n};\n\n// Don't use 'blue' not visible on cmd.exe\ninspect.styles = {\n 'special': 'cyan',\n 'number': 'yellow',\n 'boolean': 'yellow',\n 'undefined': 'grey',\n 'null': 'bold',\n 'string': 'green',\n 'date': 'magenta',\n // \"name\": intentionally not styling\n 'regexp': 'red'\n};\n\n\nfunction stylizeWithColor(str, styleType) {\n var style = inspect.styles[styleType];\n\n if (style) {\n return '\\u001b[' + inspect.colors[style][0] + 'm' + str +\n '\\u001b[' + inspect.colors[style][1] + 'm';\n } else {\n return str;\n }\n}\n\n\nfunction stylizeNoColor(str, styleType) {\n return str;\n}\n\n\nfunction arrayToHash(array) {\n var hash = {};\n\n array.forEach(function(val, idx) {\n hash[val] = true;\n });\n\n return hash;\n}\n\n\nfunction formatValue(ctx, value, recurseTimes) {\n // Provide a hook for user-specified inspect functions.\n // Check that value is an object with an inspect function on it\n if (ctx.customInspect &&\n value &&\n isFunction(value.inspect) &&\n // Filter out the util module, it's inspect function is special\n value.inspect !== exports.inspect &&\n // Also filter out any prototype objects using the circular check.\n !(value.constructor && value.constructor.prototype === value)) {\n var ret = value.inspect(recurseTimes, ctx);\n if (!isString(ret)) {\n ret = formatValue(ctx, ret, recurseTimes);\n }\n return ret;\n }\n\n // Primitive types cannot have properties\n var primitive = formatPrimitive(ctx, value);\n if (primitive) {\n return primitive;\n }\n\n // Look up the keys of the object.\n var keys = Object.keys(value);\n var visibleKeys = arrayToHash(keys);\n\n if (ctx.showHidden) {\n keys = Object.getOwnPropertyNames(value);\n }\n\n // IE doesn't make error fields non-enumerable\n // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx\n if (isError(value)\n && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {\n return formatError(value);\n }\n\n // Some type of object without properties can be shortcutted.\n if (keys.length === 0) {\n if (isFunction(value)) {\n var name = value.name ? ': ' + value.name : '';\n return ctx.stylize('[Function' + name + ']', 'special');\n }\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n }\n if (isDate(value)) {\n return ctx.stylize(Date.prototype.toString.call(value), 'date');\n }\n if (isError(value)) {\n return formatError(value);\n }\n }\n\n var base = '', array = false, braces = ['{', '}'];\n\n // Make Array say that they are Array\n if (isArray(value)) {\n array = true;\n braces = ['[', ']'];\n }\n\n // Make functions say that they are functions\n if (isFunction(value)) {\n var n = value.name ? ': ' + value.name : '';\n base = ' [Function' + n + ']';\n }\n\n // Make RegExps say that they are RegExps\n if (isRegExp(value)) {\n base = ' ' + RegExp.prototype.toString.call(value);\n }\n\n // Make dates with properties first say the date\n if (isDate(value)) {\n base = ' ' + Date.prototype.toUTCString.call(value);\n }\n\n // Make error with message first say the error\n if (isError(value)) {\n base = ' ' + formatError(value);\n }\n\n if (keys.length === 0 && (!array || value.length == 0)) {\n return braces[0] + base + braces[1];\n }\n\n if (recurseTimes < 0) {\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n } else {\n return ctx.stylize('[Object]', 'special');\n }\n }\n\n ctx.seen.push(value);\n\n var output;\n if (array) {\n output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);\n } else {\n output = keys.map(function(key) {\n return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);\n });\n }\n\n ctx.seen.pop();\n\n return reduceToSingleString(output, base, braces);\n}\n\n\nfunction formatPrimitive(ctx, value) {\n if (isUndefined(value))\n return ctx.stylize('undefined', 'undefined');\n if (isString(value)) {\n var simple = '\\'' + JSON.stringify(value).replace(/^\"|\"$/g, '')\n .replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"') + '\\'';\n return ctx.stylize(simple, 'string');\n }\n if (isNumber(value))\n return ctx.stylize('' + value, 'number');\n if (isBoolean(value))\n return ctx.stylize('' + value, 'boolean');\n // For some reason typeof null is \"object\", so special case here.\n if (isNull(value))\n return ctx.stylize('null', 'null');\n}\n\n\nfunction formatError(value) {\n return '[' + Error.prototype.toString.call(value) + ']';\n}\n\n\nfunction formatArray(ctx, value, recurseTimes, visibleKeys, keys) {\n var output = [];\n for (var i = 0, l = value.length; i < l; ++i) {\n if (hasOwnProperty(value, String(i))) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n String(i), true));\n } else {\n output.push('');\n }\n }\n keys.forEach(function(key) {\n if (!key.match(/^\\d+$/)) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n key, true));\n }\n });\n return output;\n}\n\n\nfunction formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {\n var name, str, desc;\n desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };\n if (desc.get) {\n if (desc.set) {\n str = ctx.stylize('[Getter/Setter]', 'special');\n } else {\n str = ctx.stylize('[Getter]', 'special');\n }\n } else {\n if (desc.set) {\n str = ctx.stylize('[Setter]', 'special');\n }\n }\n if (!hasOwnProperty(visibleKeys, key)) {\n name = '[' + key + ']';\n }\n if (!str) {\n if (ctx.seen.indexOf(desc.value) < 0) {\n if (isNull(recurseTimes)) {\n str = formatValue(ctx, desc.value, null);\n } else {\n str = formatValue(ctx, desc.value, recurseTimes - 1);\n }\n if (str.indexOf('\\n') > -1) {\n if (array) {\n str = str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n').slice(2);\n } else {\n str = '\\n' + str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n');\n }\n }\n } else {\n str = ctx.stylize('[Circular]', 'special');\n }\n }\n if (isUndefined(name)) {\n if (array && key.match(/^\\d+$/)) {\n return str;\n }\n name = JSON.stringify('' + key);\n if (name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)) {\n name = name.slice(1, -1);\n name = ctx.stylize(name, 'name');\n } else {\n name = name.replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"')\n .replace(/(^\"|\"$)/g, \"'\");\n name = ctx.stylize(name, 'string');\n }\n }\n\n return name + ': ' + str;\n}\n\n\nfunction reduceToSingleString(output, base, braces) {\n var numLinesEst = 0;\n var length = output.reduce(function(prev, cur) {\n numLinesEst++;\n if (cur.indexOf('\\n') >= 0) numLinesEst++;\n return prev + cur.replace(/\\u001b\\[\\d\\d?m/g, '').length + 1;\n }, 0);\n\n if (length > 60) {\n return braces[0] +\n (base === '' ? '' : base + '\\n ') +\n ' ' +\n output.join(',\\n ') +\n ' ' +\n braces[1];\n }\n\n return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];\n}\n\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\nexports.types = require('./support/types');\n\nfunction isArray(ar) {\n return Array.isArray(ar);\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n return isObject(re) && objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\nexports.types.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n return isObject(d) && objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\nexports.types.isDate = isDate;\n\nfunction isError(e) {\n return isObject(e) &&\n (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\nexports.types.isNativeError = isError;\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n return arg === null ||\n typeof arg === 'boolean' ||\n typeof arg === 'number' ||\n typeof arg === 'string' ||\n typeof arg === 'symbol' || // ES6 symbol\n typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = require('./support/isBuffer');\n\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}\n\n\nfunction pad(n) {\n return n < 10 ? '0' + n.toString(10) : n.toString(10);\n}\n\n\nvar months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',\n 'Oct', 'Nov', 'Dec'];\n\n// 26 Feb 16:19:34\nfunction timestamp() {\n var d = new Date();\n var time = [pad(d.getHours()),\n pad(d.getMinutes()),\n pad(d.getSeconds())].join(':');\n return [d.getDate(), months[d.getMonth()], time].join(' ');\n}\n\n\n// log is just a thin wrapper to console.log that prepends a timestamp\nexports.log = function() {\n console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));\n};\n\n\n/**\n * Inherit the prototype methods from one constructor into another.\n *\n * The Function.prototype.inherits from lang.js rewritten as a standalone\n * function (not on Function.prototype). NOTE: If this file is to be loaded\n * during bootstrapping this function needs to be rewritten using some native\n * functions as prototype setup using normal JavaScript does not work as\n * expected during bootstrapping (see mirror.js in r114903).\n *\n * @param {function} ctor Constructor function which needs to inherit the\n * prototype.\n * @param {function} superCtor Constructor function to inherit prototype from.\n */\nexports.inherits = require('inherits');\n\nexports._extend = function(origin, add) {\n // Don't do anything if add isn't an object\n if (!add || !isObject(add)) return origin;\n\n var keys = Object.keys(add);\n var i = keys.length;\n while (i--) {\n origin[keys[i]] = add[keys[i]];\n }\n return origin;\n};\n\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nvar kCustomPromisifiedSymbol = typeof Symbol !== 'undefined' ? Symbol('util.promisify.custom') : undefined;\n\nexports.promisify = function promisify(original) {\n if (typeof original !== 'function')\n throw new TypeError('The \"original\" argument must be of type Function');\n\n if (kCustomPromisifiedSymbol && original[kCustomPromisifiedSymbol]) {\n var fn = original[kCustomPromisifiedSymbol];\n if (typeof fn !== 'function') {\n throw new TypeError('The \"util.promisify.custom\" argument must be of type Function');\n }\n Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n value: fn, enumerable: false, writable: false, configurable: true\n });\n return fn;\n }\n\n function fn() {\n var promiseResolve, promiseReject;\n var promise = new Promise(function (resolve, reject) {\n promiseResolve = resolve;\n promiseReject = reject;\n });\n\n var args = [];\n for (var i = 0; i < arguments.length; i++) {\n args.push(arguments[i]);\n }\n args.push(function (err, value) {\n if (err) {\n promiseReject(err);\n } else {\n promiseResolve(value);\n }\n });\n\n try {\n original.apply(this, args);\n } catch (err) {\n promiseReject(err);\n }\n\n return promise;\n }\n\n Object.setPrototypeOf(fn, Object.getPrototypeOf(original));\n\n if (kCustomPromisifiedSymbol) Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n value: fn, enumerable: false, writable: false, configurable: true\n });\n return Object.defineProperties(\n fn,\n getOwnPropertyDescriptors(original)\n );\n}\n\nexports.promisify.custom = kCustomPromisifiedSymbol\n\nfunction callbackifyOnRejected(reason, cb) {\n // `!reason` guard inspired by bluebird (Ref: https://goo.gl/t5IS6M).\n // Because `null` is a special error value in callbacks which means \"no error\n // occurred\", we error-wrap so the callback consumer can distinguish between\n // \"the promise rejected with null\" or \"the promise fulfilled with undefined\".\n if (!reason) {\n var newReason = new Error('Promise was rejected with a falsy value');\n newReason.reason = reason;\n reason = newReason;\n }\n return cb(reason);\n}\n\nfunction callbackify(original) {\n if (typeof original !== 'function') {\n throw new TypeError('The \"original\" argument must be of type Function');\n }\n\n // We DO NOT return the promise as it gives the user a false sense that\n // the promise is actually somehow related to the callback's execution\n // and that the callback throwing will reject the promise.\n function callbackified() {\n var args = [];\n for (var i = 0; i < arguments.length; i++) {\n args.push(arguments[i]);\n }\n\n var maybeCb = args.pop();\n if (typeof maybeCb !== 'function') {\n throw new TypeError('The last argument must be of type Function');\n }\n var self = this;\n var cb = function() {\n return maybeCb.apply(self, arguments);\n };\n // In true node style we process the callback on `nextTick` with all the\n // implications (stack, `uncaughtException`, `async_hooks`)\n original.apply(this, args)\n .then(function(ret) { process.nextTick(cb.bind(null, null, ret)) },\n function(rej) { process.nextTick(callbackifyOnRejected.bind(null, rej, cb)) });\n }\n\n Object.setPrototypeOf(callbackified, Object.getPrototypeOf(original));\n Object.defineProperties(callbackified,\n getOwnPropertyDescriptors(original));\n return callbackified;\n}\nexports.callbackify = callbackify;\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport VideoQualitySettings from '../devicecontroller/VideoQualitySettings';\n\n/**\n * [[MeetingFeatures]] contains information on meeting wide configuration which may impact the\n * client.\n */\nexport default class MeetingFeatures {\n // Maximum resolution level allowed for camera videos in the meeting\n videoMaxResolution: VideoQualitySettings;\n\n // Maximum resolution level allowed for content share in the meeting\n contentMaxResolution: VideoQualitySettings;\n\n constructor(\n videoMaxResolution: VideoQualitySettings = VideoQualitySettings.VideoResolutionHD,\n contentMaxResolution: VideoQualitySettings = VideoQualitySettings.VideoResolutionFHD\n ) {\n this.videoMaxResolution = videoMaxResolution;\n this.contentMaxResolution = contentMaxResolution;\n }\n\n /**\n * Returns a deep copy of meeting features.\n */\n clone(): MeetingFeatures {\n return new MeetingFeatures(this.videoMaxResolution, this.contentMaxResolution);\n }\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\n/**\n *\n * [[ApplicationMetadata]] contains application metadata such as application name and version.\n * Amazon Chime SDK for JavaScript allows builders to provide application metadata in\n * the meeting session configuration. This field is optional. Amazon Chime uses application metadata to\n * analyze meeting health trends or identify common failures to improve your meeting experience.\n *\n * Do not pass any Personal Identifiable Information (PII).\n *\n * ```js\n * import { MeetingSessionConfiguration, ApplicationMetadata } from 'amazon-chime-sdk-js';\n *\n * const createMeetingResponse = // CreateMeeting API response.\n * const createAttendeeResponse = // CreateAttendee API response.\n * const meetingSessionConfiguration = new MeetingSessionConfiguration(\n * createMeetingResponse,\n * createAttendeeResponse\n * );\n *\n * meetingSessionConfiguration.applicationMetadata = ApplicationMetadata.create({\n * appName: 'AppName',\n * appVersion: '1.0.0'\n * });\n *\n * ```\n */\nexport default class ApplicationMetadata {\n private constructor(public readonly appName: string, public readonly appVersion: string) {}\n /**\n *\n * @param appName Builder's application name.\n * The app name must satisfy following regular expression:\n * `/^[a-zA-Z0-9]+[a-zA-Z0-9_-]*[a-zA-Z0-9]+$/g`\n *\n * @param appVersion Builder's application version.\n * The app version must follow the [Semantic Versioning](https://semver.org/) format.\n *\n * @returns [[ApplicationMetadata]]\n */\n static create(appName: string, appVersion: string): ApplicationMetadata {\n const APP_NAME_REGEX = /^[a-zA-Z0-9]+[a-zA-Z0-9_-]*[a-zA-Z0-9]+$/g;\n if (!appName || appName.length > 32) {\n throw new Error(`appName should be a valid string and 1 to 32 characters in length`);\n }\n if (!APP_NAME_REGEX.test(appName)) {\n throw new Error(`appName must satisfy ${APP_NAME_REGEX} regular expression`);\n }\n\n const APP_VERSION_REGEX = /^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$/gm;\n if (!appVersion || appVersion.length > 32) {\n throw new Error(`appVersion should be a valid string and 1 to 32 characters in length`);\n }\n if (!APP_VERSION_REGEX.test(appVersion)) {\n throw new Error(`appVersion must satisfy Semantic Versioning format`);\n }\n return new ApplicationMetadata(appName, appVersion);\n }\n}\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @returns {string} The formatted url\n */\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n\n var serializedParams;\n if (paramsSerializer) {\n serializedParams = paramsSerializer(params);\n } else if (utils.isURLSearchParams(params)) {\n serializedParams = params.toString();\n } else {\n var parts = [];\n\n utils.forEach(params, function serialize(val, key) {\n if (val === null || typeof val === 'undefined') {\n return;\n }\n\n if (utils.isArray(val)) {\n key = key + '[]';\n } else {\n val = [val];\n }\n\n utils.forEach(val, function parseValue(v) {\n if (utils.isDate(v)) {\n v = v.toISOString();\n } else if (utils.isObject(v)) {\n v = JSON.stringify(v);\n }\n parts.push(encode(key) + '=' + encode(v));\n });\n });\n\n serializedParams = parts.join('&');\n }\n\n if (serializedParams) {\n var hashmarkIndex = url.indexOf('#');\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport AudioVideoControllerState from '../audiovideocontroller/AudioVideoControllerState';\nimport MeetingSessionStatus from '../meetingsession/MeetingSessionStatus';\nimport MeetingSessionStatusCode from '../meetingsession/MeetingSessionStatusCode';\nimport SDP from '../sdp/SDP';\nimport ZLIBTextCompressor from '../sdp/ZLIBTextCompressor';\nimport { serverSideNetworkAdaptionIsNoneOrDefault } from '../signalingclient/ServerSideNetworkAdaption';\nimport SignalingClient from '../signalingclient/SignalingClient';\nimport SignalingClientEvent from '../signalingclient/SignalingClientEvent';\nimport SignalingClientEventType from '../signalingclient/SignalingClientEventType';\nimport SignalingClientSubscribe from '../signalingclient/SignalingClientSubscribe';\nimport SignalingClientObserver from '../signalingclientobserver/SignalingClientObserver';\nimport {\n SdkSignalFrame,\n SdkStreamServiceType,\n SdkSubscribeAckFrame,\n} from '../signalingprotocol/SignalingProtocol.js';\nimport TaskCanceler from '../taskcanceler/TaskCanceler';\nimport { convertVideoPreferencesToSignalingClientVideoSubscriptionConfiguration } from '../videodownlinkbandwidthpolicy/VideoPreferences';\nimport BaseTask from './BaseTask';\n\n/**\n * [[SubscribeAndReceiveSubscribeAckTask]] sends a subscribe frame with the given settings\n * and receives SdkSubscribeAckFrame.\n */\nexport default class SubscribeAndReceiveSubscribeAckTask extends BaseTask {\n protected taskName = 'SubscribeAndReceiveSubscribeAckTask';\n\n private taskCanceler: TaskCanceler | null = null;\n private textCompressor: ZLIBTextCompressor;\n\n constructor(private context: AudioVideoControllerState) {\n super(context.logger);\n this.textCompressor = new ZLIBTextCompressor(context.logger);\n }\n\n cancel(): void {\n if (this.taskCanceler) {\n this.taskCanceler.cancel();\n this.taskCanceler = null;\n }\n }\n\n async run(): Promise {\n let localSdp = '';\n if (this.context.peer && this.context.peer.localDescription) {\n localSdp = new SDP(this.context.peer.localDescription.sdp).withUnifiedPlanFormat().sdp;\n }\n\n if (!this.context.enableSimulcast) {\n // backward compatibility\n let frameRate = 0;\n let maxEncodeBitrateKbps = 0;\n if (this.context.videoCaptureAndEncodeParameter) {\n frameRate = this.context.videoCaptureAndEncodeParameter.captureFrameRate();\n maxEncodeBitrateKbps = this.context.videoCaptureAndEncodeParameter.encodeBitrates()[0];\n }\n const param: RTCRtpEncodingParameters = {\n rid: 'hi',\n maxBitrate: maxEncodeBitrateKbps * 1000,\n maxFramerate: frameRate,\n active: true,\n };\n\n this.context.videoStreamIndex.integrateUplinkPolicyDecision([param]);\n }\n\n // See comment above `fixUpSubscriptionOrder`\n const videoSubscriptions = this.fixUpSubscriptionOrder(\n localSdp,\n this.context.videoSubscriptions\n );\n\n const isSendingStreams: boolean =\n this.context.videoDuplexMode === SdkStreamServiceType.TX ||\n this.context.videoDuplexMode === SdkStreamServiceType.DUPLEX;\n\n let compressedSDPOffer: Uint8Array | null;\n let localSdpOffer = localSdp;\n if (\n this.context.videoUplinkBandwidthPolicy.wantsVideoDependencyDescriptorRtpHeaderExtension ===\n undefined ||\n !this.context.videoUplinkBandwidthPolicy.wantsVideoDependencyDescriptorRtpHeaderExtension()\n ) {\n // See note above similar code in `SetLocalDescriptionTask`.\n localSdpOffer = new SDP(localSdpOffer).withoutDependencyDescriptorRtpHeaderExtension().sdp;\n }\n\n if (this.context.serverSupportsCompression) {\n // If the server supports compression, then send the compressed version of the sdp\n // and exclude the original sdp offer.\n const prevOffer = this.context.previousSdpOffer ? this.context.previousSdpOffer.sdp : '';\n compressedSDPOffer = this.textCompressor.compress(localSdpOffer, prevOffer);\n this.context.logger.info(\n `Compressed the SDP message from ${localSdpOffer.length} to ${compressedSDPOffer.length} bytes.`\n );\n localSdp = '';\n }\n this.context.previousSdpOffer = new SDP(localSdp);\n\n const subscribe = new SignalingClientSubscribe(\n this.context.meetingSessionConfiguration.credentials.attendeeId,\n localSdp,\n this.context.meetingSessionConfiguration.urls.audioHostURL,\n this.context.realtimeController.realtimeIsLocalAudioMuted(),\n false,\n videoSubscriptions,\n isSendingStreams,\n this.context.videoStreamIndex.localStreamDescriptions(),\n // TODO: handle check-in mode, or remove this param\n true,\n compressedSDPOffer\n );\n\n if (\n this.context.videoDownlinkBandwidthPolicy.getServerSideNetworkAdaption !== undefined &&\n !serverSideNetworkAdaptionIsNoneOrDefault(\n this.context.videoDownlinkBandwidthPolicy.getServerSideNetworkAdaption()\n ) &&\n this.context.videoDownlinkBandwidthPolicy.getVideoPreferences !== undefined\n ) {\n // Set initial configuration for the receive streams indicated by the rest of the subscribe\n subscribe.videoSubscriptionConfiguration = convertVideoPreferencesToSignalingClientVideoSubscriptionConfiguration(\n this.context,\n videoSubscriptions.map((streamId: number) => {\n return streamId === 0 ? 0 : this.context.videoStreamIndex.groupIdForStreamId(streamId);\n }),\n this.context.videoDownlinkBandwidthPolicy.getVideoPreferences()\n );\n }\n this.context.logger.info(`sending subscribe: ${JSON.stringify(subscribe)}`);\n this.context.signalingClient.subscribe(subscribe);\n\n const subscribeAckFrame = await this.receiveSubscribeAck();\n this.context.logger.info(`got subscribe ack: ${JSON.stringify(subscribeAckFrame)}`);\n\n let decompressedText = '';\n if (subscribeAckFrame.compressedSdpAnswer && subscribeAckFrame.compressedSdpAnswer.length) {\n decompressedText = this.textCompressor.decompress(\n subscribeAckFrame.compressedSdpAnswer,\n this.context.previousSdpAnswerAsString\n );\n\n if (decompressedText.length === 0) {\n this.context.sdpAnswer = '';\n this.context.previousSdpAnswerAsString = '';\n this.logAndThrow(`Error occurred while trying to decompress the SDP answer.`);\n }\n\n this.context.logger.info(\n `Decompressed the SDP message from ${subscribeAckFrame.compressedSdpAnswer.length} to ${decompressedText.length} bytes.`\n );\n this.context.sdpAnswer = decompressedText;\n } else {\n this.context.sdpAnswer = subscribeAckFrame.sdpAnswer;\n }\n this.context.previousSdpAnswerAsString = this.context.sdpAnswer;\n\n this.context.videoStreamIndex.integrateSubscribeAckFrame(subscribeAckFrame);\n }\n\n // Our backends currently expect the video subscriptions passed in subscribe to precisely\n // line up with the media sections, with a zero for any video send or inactive section.\n //\n // Firefox occasionally tosses stopped transceivers at the end of the SDP without reason\n // and in general we don't want to be at the mercy of SDP sections not being in the same\n // order as `getTransceivers`, so we simply recalculate the array here to enforce that\n // expected invarient until we refactor our signaling to simply take a mapping of MID to\n // subscription.\n //\n // This only works on Unified Plan SDPs\n private fixUpSubscriptionOrder(sdp: string, videoSubscriptions: number[]): number[] {\n if (this.context.transceiverController.getMidForStreamId === undefined) {\n return videoSubscriptions;\n }\n\n const midsToStreamIds = new Map();\n for (const streamId of videoSubscriptions) {\n // The local description will have been set by the time this task is running, so all\n // of the transceivers should have `mid` set by now (see comment above `getMidForStreamId`)\n const mid = this.context.transceiverController.getMidForStreamId(streamId);\n if (mid === undefined) {\n if (streamId !== 0) {\n // Send section or inactive section\n this.logger.warn(`Could not find MID for stream ID: ${streamId}`);\n }\n continue;\n }\n midsToStreamIds.set(mid, streamId);\n }\n\n const sections = new SDP(sdp).mediaSections();\n const newSubscriptions: number[] = [];\n for (const section of sections) {\n if (section.mediaType !== 'video') {\n continue;\n }\n\n if (section.direction === 'recvonly') {\n const streamId = midsToStreamIds.get(section.mid);\n if (streamId === undefined) {\n this.logger.warn(`Could not find stream ID for MID: ${section.mid}`);\n continue;\n }\n newSubscriptions.push(streamId);\n } else {\n newSubscriptions.push(0);\n }\n }\n this.logger.info(\n `Fixed up ${JSON.stringify(videoSubscriptions)} to ${JSON.stringify(\n newSubscriptions\n )} (may be same))}`\n );\n return newSubscriptions;\n }\n\n private receiveSubscribeAck(): Promise {\n return new Promise((resolve, reject) => {\n const context = this.context;\n class Interceptor implements SignalingClientObserver, TaskCanceler {\n constructor(private signalingClient: SignalingClient) {}\n\n cancel(): void {\n this.signalingClient.removeObserver(this);\n reject(\n new Error(\n `SubscribeAndReceiveSubscribeAckTask got canceled while waiting for SdkSubscribeAckFrame`\n )\n );\n }\n\n handleSignalingClientEvent(event: SignalingClientEvent): void {\n if (event.isConnectionTerminated()) {\n const message = `SubscribeAndReceiveSubscribeAckTask connection was terminated with code ${event.closeCode} and reason: ${event.closeReason}`;\n context.logger.warn(message);\n\n let statusCode: MeetingSessionStatusCode = MeetingSessionStatusCode.TaskFailed;\n if (event.closeCode >= 4500 && event.closeCode < 4600) {\n statusCode = MeetingSessionStatusCode.SignalingInternalServerError;\n }\n context.audioVideoController.handleMeetingSessionStatus(\n new MeetingSessionStatus(statusCode),\n new Error(message)\n );\n return;\n }\n\n if (\n event.type !== SignalingClientEventType.ReceivedSignalFrame ||\n event.message.type !== SdkSignalFrame.Type.SUBSCRIBE_ACK\n ) {\n return;\n }\n\n this.signalingClient.removeObserver(this);\n\n // @ts-ignore: force cast to SdkSubscribeAckFrame\n const subackFrame: SdkSubscribeAckFrame = event.message.suback;\n resolve(subackFrame);\n }\n }\n\n const interceptor = new Interceptor(this.context.signalingClient);\n this.context.signalingClient.registerObserver(interceptor);\n this.taskCanceler = interceptor;\n });\n }\n}\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = uncurryThis({}.isPrototypeOf);\n","'use strict';\nvar aCallable = require('../internals/a-callable');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\n\n// `GetMethod` abstract operation\n// https://tc39.es/ecma262/#sec-getmethod\nmodule.exports = function (V, P) {\n var func = V[P];\n return isNullOrUndefined(func) ? undefined : aCallable(func);\n};\n","var escapeElement = require('./escape-element').escapeElement;\n\n/**\n * Represents an XML text value.\n * @api private\n */\nfunction XmlText(value) {\n this.value = value;\n}\n\nXmlText.prototype.toString = function () {\n return escapeElement('' + this.value);\n};\n\n/**\n * @api private\n */\nmodule.exports = {\n XmlText: XmlText\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { VoiceFocusDelegate } from '../../libs/voicefocus/types';\nimport VoiceFocusTransformDevice from './VoiceFocusTransformDevice';\nimport VoiceFocusTransformDeviceObserver from './VoiceFocusTransformDeviceObserver';\n\n/** @internal */\nexport default class VoiceFocusTransformDeviceDelegate implements VoiceFocusDelegate {\n private observers: Set = new Set();\n\n addObserver(observer: VoiceFocusTransformDeviceObserver): void {\n this.observers.add(observer);\n }\n\n removeObserver(observer: VoiceFocusTransformDeviceObserver): void {\n this.observers.delete(observer);\n }\n\n /** @internal */\n onFallback(device: VoiceFocusTransformDevice, e: Error): void {\n for (const observer of this.observers) {\n observer.voiceFocusFellBackToInnerStream?.call(observer, device, e);\n }\n }\n\n onCPUWarning(): void {\n for (const observer of this.observers) {\n observer.voiceFocusInsufficientResources?.call(observer);\n }\n }\n}\n","'use strict';\n\n/** @type {import('./pow')} */\nmodule.exports = Math.pow;\n","var AWS = require('../core');\n\nvar inherit = AWS.util.inherit;\n\n/**\n * @api private\n */\nAWS.Signers.RequestSigner = inherit({\n constructor: function RequestSigner(request) {\n this.request = request;\n },\n\n setServiceClientId: function setServiceClientId(id) {\n this.serviceClientId = id;\n },\n\n getServiceClientId: function getServiceClientId() {\n return this.serviceClientId;\n }\n});\n\nAWS.Signers.RequestSigner.getVersion = function getVersion(version) {\n switch (version) {\n case 'v2': return AWS.Signers.V2;\n case 'v3': return AWS.Signers.V3;\n case 's3v4': return AWS.Signers.V4;\n case 'v4': return AWS.Signers.V4;\n case 's3': return AWS.Signers.S3;\n case 'v3https': return AWS.Signers.V3Https;\n case 'bearer': return AWS.Signers.Bearer;\n }\n throw new Error('Unknown signing version ' + version);\n};\n\nrequire('./v2');\nrequire('./v3');\nrequire('./v3https');\nrequire('./v4');\nrequire('./s3');\nrequire('./presign');\nrequire('./bearer');\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { MeetingSessionCredentials, ReceiveRemoteVideoPauseResumeTask } from '..';\nimport ActiveSpeakerDetector from '../activespeakerdetector/ActiveSpeakerDetector';\nimport DefaultActiveSpeakerDetector from '../activespeakerdetector/DefaultActiveSpeakerDetector';\nimport AudioMixController from '../audiomixcontroller/AudioMixController';\nimport DefaultAudioMixController from '../audiomixcontroller/DefaultAudioMixController';\nimport AudioProfile from '../audioprofile/AudioProfile';\nimport AudioVideoController from '../audiovideocontroller/AudioVideoController';\nimport AudioVideoObserver from '../audiovideoobserver/AudioVideoObserver';\nimport DefaultBrowserBehavior from '../browserbehavior/DefaultBrowserBehavior';\nimport ConnectionHealthData from '../connectionhealthpolicy/ConnectionHealthData';\nimport SignalingAndMetricsConnectionMonitor from '../connectionmonitor/SignalingAndMetricsConnectionMonitor';\nimport Destroyable from '../destroyable/Destroyable';\nimport VideoQualitySettings from '../devicecontroller/VideoQualitySettings';\nimport AudioVideoEventAttributes from '../eventcontroller/AudioVideoEventAttributes';\nimport EventController from '../eventcontroller/EventController';\nimport Logger from '../logger/Logger';\nimport MediaStreamBroker from '../mediastreambroker/MediaStreamBroker';\nimport MediaStreamBrokerObserver from '../mediastreambrokerobserver/MediaStreamBrokerObserver';\nimport MeetingSessionConfiguration from '../meetingsession/MeetingSessionConfiguration';\nimport MeetingSessionStatus from '../meetingsession/MeetingSessionStatus';\nimport MeetingSessionStatusCode from '../meetingsession/MeetingSessionStatusCode';\nimport MeetingSessionVideoAvailability from '../meetingsession/MeetingSessionVideoAvailability';\nimport DefaultModality from '../modality/DefaultModality';\nimport DefaultPingPong from '../pingpong/DefaultPingPong';\nimport DefaultRealtimeController from '../realtimecontroller/DefaultRealtimeController';\nimport RealtimeController from '../realtimecontroller/RealtimeController';\nimport ReconnectController from '../reconnectcontroller/ReconnectController';\nimport AsyncScheduler from '../scheduler/AsyncScheduler';\nimport VideoCodecCapability from '../sdp/VideoCodecCapability';\nimport DefaultSessionStateController from '../sessionstatecontroller/DefaultSessionStateController';\nimport SessionStateController from '../sessionstatecontroller/SessionStateController';\nimport SessionStateControllerAction from '../sessionstatecontroller/SessionStateControllerAction';\nimport SessionStateControllerState from '../sessionstatecontroller/SessionStateControllerState';\nimport SessionStateControllerTransitionResult from '../sessionstatecontroller/SessionStateControllerTransitionResult';\nimport DefaultSignalingClient from '../signalingclient/DefaultSignalingClient';\nimport ServerSideNetworkAdaption, {\n serverSideNetworkAdaptionIsNoneOrDefault,\n} from '../signalingclient/ServerSideNetworkAdaption';\nimport SignalingClientEvent from '../signalingclient/SignalingClientEvent';\nimport SignalingClientEventType from '../signalingclient/SignalingClientEventType';\nimport SignalingClientVideoSubscriptionConfiguration from '../signalingclient/SignalingClientVideoSubscriptionConfiguration';\nimport SignalingClientObserver from '../signalingclientobserver/SignalingClientObserver';\nimport { SdkStreamServiceType } from '../signalingprotocol/SignalingProtocol.js';\nimport SimulcastLayers from '../simulcastlayers/SimulcastLayers';\nimport StatsCollector from '../statscollector/StatsCollector';\nimport AttachMediaInputTask from '../task/AttachMediaInputTask';\nimport CleanRestartedSessionTask from '../task/CleanRestartedSessionTask';\nimport CleanStoppedSessionTask from '../task/CleanStoppedSessionTask';\nimport CreatePeerConnectionTask from '../task/CreatePeerConnectionTask';\nimport CreateSDPTask from '../task/CreateSDPTask';\nimport FinishGatheringICECandidatesTask from '../task/FinishGatheringICECandidatesTask';\nimport JoinAndReceiveIndexTask from '../task/JoinAndReceiveIndexTask';\nimport LeaveAndReceiveLeaveAckTask from '../task/LeaveAndReceiveLeaveAckTask';\nimport ListenForVolumeIndicatorsTask from '../task/ListenForVolumeIndicatorsTask';\nimport MonitorTask from '../task/MonitorTask';\nimport OpenSignalingConnectionTask from '../task/OpenSignalingConnectionTask';\nimport ParallelGroupTask from '../task/ParallelGroupTask';\nimport PromoteToPrimaryMeetingTask from '../task/PromoteToPrimaryMeetingTask';\nimport ReceiveAudioInputTask from '../task/ReceiveAudioInputTask';\nimport ReceiveRemoteVideoPauseResume from '../task/ReceiveRemoteVideoPauseResumeTask';\nimport ReceiveVideoInputTask from '../task/ReceiveVideoInputTask';\nimport ReceiveVideoStreamIndexTask from '../task/ReceiveVideoStreamIndexTask';\nimport SendAndReceiveDataMessagesTask from '../task/SendAndReceiveDataMessagesTask';\nimport SerialGroupTask from '../task/SerialGroupTask';\nimport SetLocalDescriptionTask from '../task/SetLocalDescriptionTask';\nimport SetRemoteDescriptionTask from '../task/SetRemoteDescriptionTask';\nimport SubscribeAndReceiveSubscribeAckTask from '../task/SubscribeAndReceiveSubscribeAckTask';\nimport Task from '../task/Task';\nimport TimeoutTask from '../task/TimeoutTask';\nimport WaitForAttendeePresenceTask from '../task/WaitForAttendeePresenceTask';\nimport DefaultTransceiverController from '../transceivercontroller/DefaultTransceiverController';\nimport SimulcastContentShareTransceiverController from '../transceivercontroller/SimulcastContentShareTransceiverController';\nimport SimulcastTransceiverController from '../transceivercontroller/SimulcastTransceiverController';\nimport VideoOnlyTransceiverController from '../transceivercontroller/VideoOnlyTransceiverController';\nimport { Maybe } from '../utils/Types';\nimport DefaultVideoCaptureAndEncodeParameter from '../videocaptureandencodeparameter/DefaultVideoCaptureAndEncodeParameter';\nimport AllHighestVideoBandwidthPolicy from '../videodownlinkbandwidthpolicy/AllHighestVideoBandwidthPolicy';\nimport VideoAdaptiveProbePolicy from '../videodownlinkbandwidthpolicy/VideoAdaptiveProbePolicy';\nimport { convertVideoPreferencesToSignalingClientVideoSubscriptionConfiguration } from '../videodownlinkbandwidthpolicy/VideoPreferences';\nimport VideoSource from '../videosource/VideoSource';\nimport DefaultVideoStreamIdSet from '../videostreamidset/DefaultVideoStreamIdSet';\nimport DefaultVideoStreamIndex from '../videostreamindex/DefaultVideoStreamIndex';\nimport SimulcastVideoStreamIndex from '../videostreamindex/SimulcastVideoStreamIndex';\nimport DefaultVideoTileController from '../videotilecontroller/DefaultVideoTileController';\nimport VideoTileController from '../videotilecontroller/VideoTileController';\nimport DefaultVideoTileFactory from '../videotilefactory/DefaultVideoTileFactory';\nimport DefaultSimulcastUplinkPolicy from '../videouplinkbandwidthpolicy/DefaultSimulcastUplinkPolicy';\nimport NScaleVideoUplinkBandwidthPolicy from '../videouplinkbandwidthpolicy/NScaleVideoUplinkBandwidthPolicy';\nimport SimulcastUplinkObserver from '../videouplinkbandwidthpolicy/SimulcastUplinkObserver';\nimport SimulcastUplinkPolicy from '../videouplinkbandwidthpolicy/SimulcastUplinkPolicy';\nimport DefaultVolumeIndicatorAdapter from '../volumeindicatoradapter/DefaultVolumeIndicatorAdapter';\nimport WebSocketAdapter from '../websocketadapter/WebSocketAdapter';\nimport AudioVideoControllerState from './AudioVideoControllerState';\n\nexport default class DefaultAudioVideoController\n implements AudioVideoController, SimulcastUplinkObserver, MediaStreamBrokerObserver, Destroyable {\n private _logger: Logger;\n private _configuration: MeetingSessionConfiguration;\n private _webSocketAdapter: WebSocketAdapter;\n private _realtimeController: RealtimeController;\n private _activeSpeakerDetector: ActiveSpeakerDetector;\n private _videoTileController: VideoTileController;\n private _mediaStreamBroker: MediaStreamBroker;\n private _reconnectController: ReconnectController;\n private _audioMixController: DefaultAudioMixController;\n private _eventController: EventController;\n private _audioProfile: AudioProfile = new AudioProfile();\n\n private connectionHealthData = new ConnectionHealthData();\n private observerQueue: Set = new Set();\n private meetingSessionContext = new AudioVideoControllerState();\n private sessionStateController: SessionStateController;\n\n private static MIN_VOLUME_DECIBELS = -42;\n private static MAX_VOLUME_DECIBELS = -14;\n private static PING_PONG_INTERVAL_MS = 10000;\n\n private enableSimulcast: boolean = false;\n private enableSVC: boolean = false;\n private useUpdateTransceiverControllerForUplink: boolean = false;\n private totalRetryCount = 0;\n private startAudioVideoTimestamp: number = 0;\n private signalingTask: Task;\n private preStartObserver: SignalingClientObserver | undefined;\n private mayNeedRenegotiationForSimulcastLayerChange: boolean = false;\n private maxUplinkBandwidthKbps: number;\n private videoSendCodecPreferences: VideoCodecCapability[];\n // Stored solely to trigger demotion callback on disconnection (expected behavior).\n //\n // We otherwise intentionally do not use this for any other behavior to avoid the complexity\n // of the added state.\n private promotedToPrimaryMeeting: boolean = false;\n private hasGetRTCPeerConnectionStatsDeprecationMessageBeenSent: boolean = false;\n\n // `connectWithPromises`, and `actionUpdateWithRenegotiation` all\n // contains a significant portion of asynchronous tasks, so we need to explicitly defer\n // any task operation which may be performed on the event queue that may modify\n // mutable state in `MeetingSessionContext`, as this mutable state needs to be consistent over the course of the update.\n //\n // Currently this includes\n // * `ReceiveVideoStreamIndexTask` which updates `videosToReceive` and `videoCaptureAndEncodeParameter`\n // * `MonitorTask` which updates `videosToReceive`\n private receiveIndexTask: ReceiveVideoStreamIndexTask | undefined = undefined;\n private monitorTask: MonitorTask | undefined = undefined;\n private receiveRemotePauseResumeTask: ReceiveRemoteVideoPauseResumeTask | undefined = undefined;\n\n destroyed = false;\n\n constructor(\n configuration: MeetingSessionConfiguration,\n logger: Logger,\n webSocketAdapter: WebSocketAdapter,\n mediaStreamBroker: MediaStreamBroker,\n reconnectController: ReconnectController,\n eventController?: EventController\n ) {\n this._logger = logger;\n this.sessionStateController = new DefaultSessionStateController(this._logger);\n this._configuration = configuration;\n\n this._webSocketAdapter = webSocketAdapter;\n this._realtimeController = new DefaultRealtimeController(mediaStreamBroker);\n this._realtimeController.realtimeSetLocalAttendeeId(\n configuration.credentials.attendeeId,\n configuration.credentials.externalUserId\n );\n\n this._mediaStreamBroker = mediaStreamBroker;\n this._reconnectController = reconnectController;\n this._videoTileController = new DefaultVideoTileController(\n new DefaultVideoTileFactory(),\n this,\n this._logger\n );\n this._audioMixController = new DefaultAudioMixController(this._logger);\n this._mediaStreamBroker.addMediaStreamBrokerObserver(this._audioMixController);\n this.meetingSessionContext.logger = this._logger;\n this._eventController = eventController;\n }\n\n async destroy(): Promise {\n this.observerQueue.clear();\n this._mediaStreamBroker.removeMediaStreamBrokerObserver(this._audioMixController);\n this.destroyed = true;\n }\n\n get configuration(): MeetingSessionConfiguration {\n return this._configuration;\n }\n\n get realtimeController(): RealtimeController {\n return this._realtimeController;\n }\n\n get activeSpeakerDetector(): ActiveSpeakerDetector {\n // Lazy init.\n if (!this._activeSpeakerDetector) {\n this._activeSpeakerDetector = new DefaultActiveSpeakerDetector(\n this._realtimeController,\n this._configuration.credentials.attendeeId,\n this.handleHasBandwidthPriority.bind(this)\n );\n }\n return this._activeSpeakerDetector;\n }\n\n get videoTileController(): VideoTileController {\n return this._videoTileController;\n }\n\n get audioMixController(): AudioMixController {\n return this._audioMixController;\n }\n\n get logger(): Logger {\n return this._logger;\n }\n\n get rtcPeerConnection(): RTCPeerConnection | null {\n return (this.meetingSessionContext && this.meetingSessionContext.peer) || null;\n }\n\n get mediaStreamBroker(): MediaStreamBroker {\n return this._mediaStreamBroker;\n }\n\n get eventController(): EventController | undefined {\n return this._eventController;\n }\n\n /**\n * This API will be deprecated in favor of `ClientMetricReport.getRTCStatsReport()`.\n *\n * It makes an additional call to the `getStats` API and therefore may cause slight performance degradation.\n *\n * Please subscribe to `metricsDidReceive(clientMetricReport: ClientMetricReport)` callback,\n * and get the raw `RTCStatsReport` via `clientMetricReport.getRTCStatsReport()`.\n */\n getRTCPeerConnectionStats(selector?: MediaStreamTrack): Promise {\n /* istanbul ignore else */\n if (!this.hasGetRTCPeerConnectionStatsDeprecationMessageBeenSent) {\n this.logger.warn(\n 'The `getRTCPeerConnectionStats()` is on its way to be deprecated. It makes an additional call to the `getStats` API and therefore may cause slight performance degradation. Please use the new API `clientMetricReport.getRTCStatsReport()` returned by `metricsDidReceive(clientMetricReport)` callback instead.'\n );\n this.hasGetRTCPeerConnectionStatsDeprecationMessageBeenSent = true;\n }\n\n if (!this.rtcPeerConnection) {\n return null;\n }\n return this.rtcPeerConnection.getStats(selector);\n }\n\n setAudioProfile(audioProfile: AudioProfile): void {\n this._audioProfile = audioProfile;\n }\n\n addObserver(observer: AudioVideoObserver): void {\n this.logger.info('adding meeting observer');\n this.observerQueue.add(observer);\n }\n\n removeObserver(observer: AudioVideoObserver): void {\n this.logger.info('removing meeting observer');\n this.observerQueue.delete(observer);\n }\n\n forEachObserver(observerFunc: (observer: AudioVideoObserver) => void): void {\n for (const observer of this.observerQueue) {\n AsyncScheduler.nextTick(() => {\n if (this.observerQueue.has(observer)) {\n observerFunc(observer);\n }\n });\n }\n }\n\n private initSignalingClient(): void {\n this.connectionHealthData.reset();\n if (this.meetingSessionContext.signalingClient) {\n return;\n }\n\n this.meetingSessionContext = new AudioVideoControllerState();\n this.meetingSessionContext.logger = this.logger;\n this.meetingSessionContext.eventController = this.eventController;\n this.meetingSessionContext.browserBehavior = new DefaultBrowserBehavior();\n this.meetingSessionContext.videoSendCodecPreferences = this.videoSendCodecPreferences;\n this.meetingSessionContext.audioProfile = this._audioProfile;\n\n this.meetingSessionContext.meetingSessionConfiguration = this.configuration;\n this.meetingSessionContext.signalingClient = new DefaultSignalingClient(\n this._webSocketAdapter,\n this.logger\n );\n }\n\n private uninstallPreStartObserver(): void {\n this.meetingSessionContext.signalingClient.removeObserver(this.preStartObserver);\n this.preStartObserver = undefined;\n }\n\n private prestart(): Promise {\n this.logger.info('Pre-connecting signaling connection.');\n return this.createOrReuseSignalingTask()\n .run()\n .then(() => {\n const handleClosed = async (): Promise => {\n this.logger.info('Early connection closed; discarding signaling task.');\n this.signalingTask = undefined;\n this.uninstallPreStartObserver();\n };\n\n this.preStartObserver = {\n handleSignalingClientEvent(event: SignalingClientEvent): void {\n if (event.type === SignalingClientEventType.WebSocketClosed) {\n handleClosed();\n }\n },\n };\n\n this.meetingSessionContext.signalingClient.registerObserver(this.preStartObserver);\n })\n .catch(e => {\n this.logger.error(`Signaling task pre-start failed: ${e}`);\n\n // Clean up just in case a subsequent attempt will succeed.\n this.signalingTask = undefined;\n });\n }\n\n start(options?: { signalingOnly?: boolean }): void {\n this.startReturningPromise(options)\n .then(() => {\n this.logger.info('start completed');\n })\n // Just-in-case error handling.\n .catch(\n /* istanbul ignore next */\n e => {\n this.logger.error(`start failed: ${e}`);\n }\n );\n }\n\n // This is public (albeit marked internal) for tests only.\n /* @internal */\n startReturningPromise(options?: { signalingOnly?: boolean }): Promise {\n if (options?.signalingOnly === true) {\n return this.prestart();\n }\n\n // For side-effects: lazy getter.\n this.activeSpeakerDetector;\n\n return new Promise((resolve, reject) => {\n this.sessionStateController.perform(SessionStateControllerAction.Connect, () => {\n this.actionConnect(false).then(resolve).catch(reject);\n });\n });\n }\n\n // @ts-ignore\n private connectWithPromises(needsToWaitForAttendeePresence: boolean): Task {\n const context = this.meetingSessionContext;\n\n // Syntactic sugar.\n const timeout = (timeoutMs: number, task: Task): TimeoutTask => {\n return new TimeoutTask(this.logger, task, timeoutMs);\n };\n\n // First layer.\n this.monitorTask = new MonitorTask(\n context,\n this.configuration.connectionHealthPolicyConfiguration,\n this.connectionHealthData\n );\n const monitor = this.monitorTask.once();\n\n // Second layer.\n const receiveAudioInput = new ReceiveAudioInputTask(context).once();\n this.receiveIndexTask = new ReceiveVideoStreamIndexTask(context);\n // See declaration (unpaused in actionFinishConnecting)\n this.monitorTask.pauseResubscribeCheck();\n this.receiveIndexTask.pauseIngestion();\n const signaling = new SerialGroupTask(this.logger, 'Signaling', [\n // If pre-connecting, this will be an existing task that has already been run.\n this.createOrReuseSignalingTask(),\n new ListenForVolumeIndicatorsTask(context),\n new SendAndReceiveDataMessagesTask(context),\n new JoinAndReceiveIndexTask(context),\n this.receiveIndexTask,\n ]).once();\n\n // Third layer.\n const createPeerConnection = new CreatePeerConnectionTask(context).once(signaling);\n const attachMediaInput = new AttachMediaInputTask(context).once(\n createPeerConnection,\n receiveAudioInput\n );\n\n // Mostly serial section -- kept as promises to allow for finer-grained breakdown.\n const createSDP = new CreateSDPTask(context).once(attachMediaInput);\n const setLocalDescription = new SetLocalDescriptionTask(context).once(createSDP);\n const ice = new FinishGatheringICECandidatesTask(context).once(setLocalDescription);\n const subscribeAck = new SubscribeAndReceiveSubscribeAckTask(context).once(ice);\n\n this.receiveRemotePauseResumeTask = new ReceiveRemoteVideoPauseResume(context);\n this.receiveRemotePauseResumeTask.once(subscribeAck);\n\n // The ending is a delicate time: we need the connection as a whole to have a timeout,\n // and for the attendee presence timer to not start ticking until after the subscribe/ack.\n return new SerialGroupTask(this.logger, this.wrapTaskName('AudioVideoStart'), [\n monitor,\n timeout(\n this.configuration.connectionTimeoutMs,\n new SerialGroupTask(this.logger, 'Peer', [\n // The order of these two matters. If canceled, the first one that's still running\n // will contribute any special rejection, and we don't want that to be \"attendee not found\"!\n subscribeAck,\n this.receiveRemotePauseResumeTask,\n needsToWaitForAttendeePresence\n ? new TimeoutTask(\n this.logger,\n new ParallelGroupTask(this.logger, 'FinalizeConnection', [\n new WaitForAttendeePresenceTask(context),\n new SetRemoteDescriptionTask(context),\n ]),\n this.meetingSessionContext.meetingSessionConfiguration.attendeePresenceTimeoutMs\n )\n : /* istanbul ignore next */ new SetRemoteDescriptionTask(context),\n ])\n ),\n ]);\n }\n\n private async actionConnect(reconnecting: boolean): Promise {\n this.initSignalingClient();\n\n // We no longer need to watch for the early connection dropping; we're back where\n // we otherwise would have been had we not pre-started.\n this.uninstallPreStartObserver();\n\n // Note that some of the assignments in this function exist to clean up previous connections.\n // All future 'clean up' assignments should go in `AudioVideoControllerState.resetConnectionSpecificState`\n // for consolidation purposes.\n\n this.meetingSessionContext.mediaStreamBroker = this._mediaStreamBroker;\n this.meetingSessionContext.realtimeController = this._realtimeController;\n this.meetingSessionContext.audioMixController = this._audioMixController;\n this.meetingSessionContext.audioVideoController = this;\n\n this.enableSimulcast =\n this.configuration.enableSimulcastForUnifiedPlanChromiumBasedBrowsers &&\n new DefaultBrowserBehavior().hasChromiumWebRTC();\n\n if (this.enableSimulcast && this.configuration.enableSVC) {\n this.logger.warn(\n 'SVC cannot be enabled at the same time as simulcast. Disabling SVC, using simulcast.'\n );\n }\n this.enableSVC =\n !this.enableSimulcast &&\n this.configuration.enableSVC &&\n new DefaultBrowserBehavior().supportsScalableVideoCoding();\n\n const useAudioConnection: boolean = !!this.configuration.urls.audioHostURL;\n\n if (!useAudioConnection) {\n this.logger.info(`Using video only transceiver controller`);\n this.meetingSessionContext.transceiverController = new VideoOnlyTransceiverController(\n this.logger,\n this.meetingSessionContext.browserBehavior,\n this.meetingSessionContext\n );\n } else if (this.enableSimulcast) {\n this.logger.info(`Using transceiver controller with simulcast support`);\n if (\n new DefaultModality(this.configuration.credentials.attendeeId).hasModality(\n DefaultModality.MODALITY_CONTENT\n )\n ) {\n this.meetingSessionContext.transceiverController = new SimulcastContentShareTransceiverController(\n this.logger,\n this.meetingSessionContext.browserBehavior,\n this.meetingSessionContext\n );\n } else {\n this.meetingSessionContext.transceiverController = new SimulcastTransceiverController(\n this.logger,\n this.meetingSessionContext.browserBehavior,\n this.meetingSessionContext\n );\n }\n } else {\n this.logger.info(`Using default transceiver controller`);\n this.meetingSessionContext.transceiverController = new DefaultTransceiverController(\n this.logger,\n this.meetingSessionContext.browserBehavior,\n this.meetingSessionContext\n );\n }\n\n this.meetingSessionContext.volumeIndicatorAdapter = new DefaultVolumeIndicatorAdapter(\n this.logger,\n this._realtimeController,\n DefaultAudioVideoController.MIN_VOLUME_DECIBELS,\n DefaultAudioVideoController.MAX_VOLUME_DECIBELS,\n this.configuration.credentials.attendeeId\n );\n this.meetingSessionContext.videoTileController = this._videoTileController;\n this.meetingSessionContext.videoDownlinkBandwidthPolicy = this.configuration.videoDownlinkBandwidthPolicy;\n this.meetingSessionContext.videoUplinkBandwidthPolicy = this.configuration.videoUplinkBandwidthPolicy;\n this.meetingSessionContext.enableSimulcast = this.enableSimulcast;\n this.meetingSessionContext.enableSVC = this.enableSVC;\n\n if (this.enableSimulcast) {\n let simulcastPolicy = this.meetingSessionContext\n .videoUplinkBandwidthPolicy as SimulcastUplinkPolicy;\n if (!simulcastPolicy) {\n simulcastPolicy = new DefaultSimulcastUplinkPolicy(\n this.configuration.credentials.attendeeId,\n this.meetingSessionContext.logger\n );\n this.meetingSessionContext.videoUplinkBandwidthPolicy = simulcastPolicy;\n }\n\n simulcastPolicy.addObserver(this);\n\n if (!this.meetingSessionContext.videoDownlinkBandwidthPolicy) {\n this.meetingSessionContext.videoDownlinkBandwidthPolicy = new VideoAdaptiveProbePolicy(\n this.meetingSessionContext.logger\n );\n }\n\n this.meetingSessionContext.videoStreamIndex = new SimulcastVideoStreamIndex(this.logger);\n } else {\n this.meetingSessionContext.enableSimulcast = false;\n this.meetingSessionContext.videoStreamIndex = new DefaultVideoStreamIndex(this.logger);\n\n if (!this.meetingSessionContext.videoUplinkBandwidthPolicy) {\n this.meetingSessionContext.videoUplinkBandwidthPolicy = new NScaleVideoUplinkBandwidthPolicy(\n this.configuration.credentials.attendeeId,\n !this.meetingSessionContext.browserBehavior.disableResolutionScaleDown(),\n this.meetingSessionContext.logger,\n this.meetingSessionContext.browserBehavior\n );\n this.meetingSessionContext.videoUplinkBandwidthPolicy.setSVCEnabled(this.enableSVC);\n }\n if (!this.meetingSessionContext.videoDownlinkBandwidthPolicy) {\n this.meetingSessionContext.videoDownlinkBandwidthPolicy = new AllHighestVideoBandwidthPolicy(\n this.configuration.credentials.attendeeId\n );\n }\n\n if (\n this.meetingSessionContext.videoUplinkBandwidthPolicy.setTransceiverController &&\n this.meetingSessionContext.videoUplinkBandwidthPolicy.updateTransceiverController\n ) {\n this.useUpdateTransceiverControllerForUplink = true;\n this.meetingSessionContext.videoUplinkBandwidthPolicy.setTransceiverController(\n this.meetingSessionContext.transceiverController\n );\n }\n this.meetingSessionContext.audioProfile = this._audioProfile;\n }\n\n if (\n new DefaultModality(this.configuration.credentials.attendeeId).hasModality(\n DefaultModality.MODALITY_CONTENT\n )\n ) {\n const enableUhdContent =\n this.configuration.meetingFeatures.contentMaxResolution ===\n VideoQualitySettings.VideoResolutionUHD;\n if (enableUhdContent) {\n // Increase default bandwidth for content share since this is not yet configuration that can be exposed\n // without using simulcast\n this.setVideoMaxBandwidthKbps(2500);\n }\n this.meetingSessionContext.videoUplinkBandwidthPolicy.setHighResolutionFeatureEnabled(\n enableUhdContent\n );\n } else {\n const enableFhdVideo =\n this.configuration.meetingFeatures.videoMaxResolution ===\n VideoQualitySettings.VideoResolutionFHD;\n this.meetingSessionContext.videoUplinkBandwidthPolicy.setHighResolutionFeatureEnabled(\n enableFhdVideo\n );\n }\n\n if (this.meetingSessionContext.videoUplinkBandwidthPolicy && this.maxUplinkBandwidthKbps) {\n this.meetingSessionContext.videoUplinkBandwidthPolicy.setIdealMaxBandwidthKbps(\n this.maxUplinkBandwidthKbps\n );\n }\n\n if (this.meetingSessionContext.videoDownlinkBandwidthPolicy.bindToTileController) {\n this.meetingSessionContext.videoDownlinkBandwidthPolicy.bindToTileController(\n this._videoTileController\n );\n }\n\n if (this.meetingSessionContext.videoDownlinkBandwidthPolicy.setWantsResubscribeObserver) {\n this.meetingSessionContext.videoDownlinkBandwidthPolicy.setWantsResubscribeObserver(() =>\n this.update({ needsRenegotiation: false })\n );\n }\n\n this.meetingSessionContext.lastKnownVideoAvailability = new MeetingSessionVideoAvailability();\n this.meetingSessionContext.videoCaptureAndEncodeParameter = new DefaultVideoCaptureAndEncodeParameter(\n 0,\n 0,\n 0,\n 0,\n false\n );\n this.meetingSessionContext.videosToReceive = new DefaultVideoStreamIdSet();\n this.meetingSessionContext.videosPaused = new DefaultVideoStreamIdSet();\n this.meetingSessionContext.statsCollector = new StatsCollector(this, this.logger);\n this.meetingSessionContext.connectionMonitor = new SignalingAndMetricsConnectionMonitor(\n this,\n this._realtimeController,\n this.connectionHealthData,\n new DefaultPingPong(\n this.meetingSessionContext.signalingClient,\n DefaultAudioVideoController.PING_PONG_INTERVAL_MS,\n this.logger\n ),\n this.meetingSessionContext.statsCollector\n );\n this.meetingSessionContext.reconnectController = this._reconnectController;\n this.meetingSessionContext.videoDeviceInformation = {};\n this._videoTileController.registerVideoTileResolutionObserver(\n this.meetingSessionContext.statsCollector\n );\n\n if (!reconnecting) {\n this.totalRetryCount = 0;\n this._reconnectController.reset();\n this.startAudioVideoTimestamp = Date.now();\n this.forEachObserver(observer => {\n Maybe.of(observer.audioVideoDidStartConnecting).map(f => f.bind(observer)(false));\n });\n this.eventController?.publishEvent('meetingStartRequested');\n }\n\n this.meetingSessionContext.startAudioVideoTimestamp = this.startAudioVideoTimestamp;\n if (this._reconnectController.hasStartedConnectionAttempt()) {\n // This does not reset the reconnect deadline, but declare it's not the first connection.\n this._reconnectController.startedConnectionAttempt(false);\n } else {\n this._reconnectController.startedConnectionAttempt(true);\n }\n\n // No attendee presence event will be triggered if there is no audio connection.\n // Waiting for attendee presence is explicitly executed\n // if `attendeePresenceTimeoutMs` is configured to larger than 0.\n const needsToWaitForAttendeePresence =\n useAudioConnection &&\n this.meetingSessionContext.meetingSessionConfiguration.attendeePresenceTimeoutMs > 0;\n\n this.logger.info('Needs to wait for attendee presence? ' + needsToWaitForAttendeePresence);\n\n const connect = this.connectWithPromises(needsToWaitForAttendeePresence);\n\n // The rest.\n try {\n await connect.run();\n\n this.connectionHealthData.setConnectionStartTime();\n this._mediaStreamBroker.addMediaStreamBrokerObserver(this);\n this.sessionStateController.perform(SessionStateControllerAction.FinishConnecting, () => {\n /* istanbul ignore else */\n if (this.eventController) {\n this.meetingSessionContext.meetingStartDurationMs =\n Date.now() - this.startAudioVideoTimestamp;\n this.eventController.publishEvent('meetingStartSucceeded', {\n maxVideoTileCount: this.meetingSessionContext.maxVideoTileCount,\n poorConnectionCount: this.meetingSessionContext.poorConnectionCount,\n retryCount: this.totalRetryCount,\n signalingOpenDurationMs: this.meetingSessionContext.signalingOpenDurationMs,\n iceGatheringDurationMs: this.meetingSessionContext.iceGatheringDurationMs,\n meetingStartDurationMs: this.meetingSessionContext.meetingStartDurationMs,\n });\n }\n this.meetingSessionContext.startTimeMs = Date.now();\n this.actionFinishConnecting();\n });\n } catch (error) {\n this.signalingTask = undefined;\n const status = new MeetingSessionStatus(\n this.getMeetingStatusCode(error) || MeetingSessionStatusCode.TaskFailed\n );\n this.logger.info(`Start failed: ${status} due to error ${error}.`);\n\n // I am not able to successfully reach this state in the test suite with mock\n // websockets -- it always ends up in 'Disconnecting' instead. As such, this\n // has to be marked for Istanbul.\n /* istanbul ignore if */\n if (this.sessionStateController.state() === SessionStateControllerState.NotConnected) {\n // There's no point trying to 'disconnect', because we're not connected.\n // The session state controller will bail.\n this.logger.info('Start failed and not connected. Not cleaning up.');\n return;\n }\n\n this.sessionStateController.perform(SessionStateControllerAction.Fail, async () => {\n await this.actionDisconnect(status, true, error);\n if (!this.handleMeetingSessionStatus(status, error)) {\n this.notifyStop(status, error);\n }\n });\n }\n }\n\n private createOrReuseSignalingTask(): Task {\n if (!this.signalingTask) {\n this.initSignalingClient();\n this.signalingTask = new TimeoutTask(\n this.logger,\n new OpenSignalingConnectionTask(this.meetingSessionContext),\n this.configuration.connectionTimeoutMs\n ).once();\n }\n\n return this.signalingTask;\n }\n\n private actionFinishConnecting(): void {\n this.signalingTask = undefined;\n this.meetingSessionContext.videoDuplexMode = SdkStreamServiceType.RX;\n if (!this.meetingSessionContext.enableSimulcast) {\n if (this.useUpdateTransceiverControllerForUplink) {\n this.meetingSessionContext.videoUplinkBandwidthPolicy.updateTransceiverController();\n } else {\n this.enforceBandwidthLimitationForSender(\n this.meetingSessionContext.videoCaptureAndEncodeParameter.encodeBitrates()[0]\n );\n }\n }\n this.meetingSessionContext.isSessionConnected = true;\n this.forEachObserver(observer => {\n Maybe.of(observer.audioVideoDidStart).map(f => f.bind(observer)());\n });\n this._reconnectController.reset();\n\n // `receiveIndexTask` needs to be resumed first so it can set `remoteStreamDescriptions`\n this.receiveIndexTask.resumeIngestion();\n this.monitorTask.resumeResubscribeCheck();\n }\n\n /* @internal */\n stopReturningPromise(): Promise {\n // We need to ensure this disables reconnection before any other steps are taken,\n // in case something during close is triggering a reconnection (e.g. websocket\n // close)\n this._reconnectController.disableReconnect();\n\n // In order to avoid breaking backward compatibility, when only the\n // signaling connection is established we appear to not be connected.\n // We handle this by simply disconnecting the websocket directly.\n if (this.sessionStateController.state() === SessionStateControllerState.NotConnected) {\n // Unfortunately, this does not return a promise.\n this.meetingSessionContext.signalingClient?.closeConnection();\n this.cleanUpMediaStreamsAfterStop();\n return Promise.resolve();\n }\n\n /*\n Stops the current audio video meeting session.\n The stop method execution is deferred and executed after\n the current reconnection attempt completes.\n It disables any further reconnection attempts.\n Upon completion, AudioVideoObserver's `audioVideoDidStop`\n callback function is called with `MeetingSessionStatusCode.Left`.\n */\n return new Promise((resolve, reject) => {\n this.sessionStateController.perform(SessionStateControllerAction.Disconnect, () => {\n this.logger.info('attendee left meeting, session will not be reconnected');\n this.actionDisconnect(new MeetingSessionStatus(MeetingSessionStatusCode.Left), false, null)\n .then(resolve)\n .catch(reject);\n });\n });\n }\n\n stop(): void {\n this.stopReturningPromise();\n }\n\n private async actionDisconnect(\n status: MeetingSessionStatus,\n reconnecting: boolean,\n error: Error | null\n ): Promise {\n try {\n await new SerialGroupTask(this.logger, this.wrapTaskName('AudioVideoStop'), [\n new TimeoutTask(\n this.logger,\n new LeaveAndReceiveLeaveAckTask(this.meetingSessionContext),\n this.configuration.connectionTimeoutMs\n ),\n ]).run();\n } catch (stopError) {\n this.logger.info('fail to stop');\n }\n\n try {\n const subtasks: Task[] = [\n new TimeoutTask(\n this.logger,\n new CleanStoppedSessionTask(this.meetingSessionContext),\n this.configuration.connectionTimeoutMs\n ),\n ];\n this.cleanUpMediaStreamsAfterStop();\n await new SerialGroupTask(this.logger, this.wrapTaskName('AudioVideoClean'), subtasks).run();\n } catch (cleanError) {\n /* istanbul ignore next */\n this.logger.info('fail to clean');\n }\n this.sessionStateController.perform(SessionStateControllerAction.FinishDisconnecting, () => {\n if (!reconnecting) {\n this.notifyStop(status, error);\n }\n });\n\n this._videoTileController.removeVideoTileResolutionObserver(\n this.meetingSessionContext.statsCollector\n );\n }\n\n update(options: { needsRenegotiation: boolean } = { needsRenegotiation: true }): boolean {\n let needsRenegotiation = options.needsRenegotiation;\n\n // Check in case this function has been called before peer connection is set up\n // since that is necessary to try to update remote videos without the full resubscribe path\n needsRenegotiation ||= this.meetingSessionContext.peer === undefined;\n needsRenegotiation ||= !this.updateRemoteVideosFromPolicy();\n needsRenegotiation ||= !this.updateLocalVideoFromPolicy();\n // `MeetingSessionContext.lastVideosToReceive` needs to be updated regardless\n this.meetingSessionContext.lastVideosToReceive = this.meetingSessionContext.videosToReceive;\n if (!needsRenegotiation) {\n this.logger.info('Update request does not require resubscribe');\n // Call `actionFinishUpdating` to apply the new encoding parameters that may have been set in `updateLocalVideoFromPolicy`.\n this.actionFinishUpdating();\n return true; // Skip the subscribe!\n }\n this.logger.info('Update request requires resubscribe');\n\n const result = this.sessionStateController.perform(SessionStateControllerAction.Update, () => {\n this.actionUpdateWithRenegotiation(true);\n });\n return (\n result === SessionStateControllerTransitionResult.Transitioned ||\n result === SessionStateControllerTransitionResult.DeferredTransition\n );\n }\n\n // Depending on if using server-side bandwidth probing and if using server-side quality adaption,\n // decide if needs to send necessary updates, and if send through full renegotiaton.\n // It returns true if downlink policy took care of everything and no renegotiation needed.\n private updateRemoteVideosFromPolicy(): boolean {\n if (\n this.meetingSessionContext.videoDownlinkBandwidthPolicy &&\n this.meetingSessionContext.videoDownlinkBandwidthPolicy.getVideoPreferences !== undefined &&\n this.meetingSessionContext.videoDownlinkBandwidthPolicy.getServerSideNetworkAdaption !==\n undefined &&\n !serverSideNetworkAdaptionIsNoneOrDefault(\n this.meetingSessionContext.videoDownlinkBandwidthPolicy.getServerSideNetworkAdaption()\n )\n ) {\n // Send up-to-date video preferences to server. This is fine if it includes remote sources/MIDs we need a full renegotiation for (i.e.\n // ones that were added or removed). We will re-include these updates in the subscribe.\n /* istanbul ignore if: Extremely unlikely that `videosToReceive` is null */\n if (!this.sendRemoteVideoUpdate()) {\n return false;\n }\n\n if (\n this.meetingSessionContext.videoDownlinkBandwidthPolicy.getServerSideNetworkAdaption() ===\n ServerSideNetworkAdaption.BandwidthProbingAndRemoteVideoQualityAdaption\n ) {\n // If using server side remote video quality adaption (i.e. server is picking the encoding to send), we don't need\n // to do anything after sending the update, as long as we are not adding or removing streams, in which case\n // we need to complete a full renegotiation.\n return this.isNotAddingOrRemovingStreams();\n }\n }\n // If using client-side network adaptation, try skipping renegotitaiton if only simulcast stream swicth.\n return this.updateRemoteVideosIfNotAddingOrRemovingStreams();\n }\n\n // When `ServerSideNetworkAdaption.BandwidthProbingAndRemoteVideoQualityAdaption` has been signalled,\n // trigger server side video quality adaption logic through `SignalingClient.remoteVideoUpdate` and skip full subscribe.\n //\n // This function also tries to use the diff between `this.meetingSessionContext.lastVideosToReceive`\n // and `this.meetingSessionContext.videosToReceive` to determine if update is only simulcast stream switch,\n // which is accomplished through `SignalingClient.remoteVideoUpdate` rather than the full subscribe.\n //\n // It requires the caller to manage `this.meetingSessionContext.lastVideosToReceive`\n // and `this.meetingSessionContext.videosToReceive` so that `this.meetingSessionContext.lastVideosToReceive`\n // contains the stream IDs from either last time a subscribe was set, or last time this function was set.\n //\n // It will return true if successful, if false the caller must fall back to a full renegotiation\n private updateRemoteVideosIfNotAddingOrRemovingStreams(): boolean {\n const streamChanges = this.detectChangesInVideosToReceive();\n /* istanbul ignore if: Extremely unlikely that `videosToReceive` is null or missing requisite functions and made it this far */\n if (streamChanges === undefined) {\n return false;\n }\n\n const added: number[] = streamChanges.added;\n const simulcastStreamUpdates: Map = streamChanges.simulcastStreamUpdates;\n const removed: number[] = streamChanges.removed;\n\n const context = this.meetingSessionContext;\n const updatedVideoSubscriptionConfigurations: SignalingClientVideoSubscriptionConfiguration[] = [];\n for (const [previousId, currentId] of simulcastStreamUpdates.entries()) {\n const updatedConfig = new SignalingClientVideoSubscriptionConfiguration();\n updatedConfig.streamId = currentId;\n updatedConfig.attendeeId = context.videoStreamIndex.attendeeIdForStreamId(currentId);\n updatedConfig.mid = context.transceiverController.getMidForStreamId(previousId);\n if (updatedConfig.mid === undefined) {\n this.logger.info(\n `No MID found for stream ID ${previousId}, cannot update stream without renegotiation`\n );\n return false;\n }\n updatedVideoSubscriptionConfigurations.push(updatedConfig);\n // We need to override some other components dependent on the subscribe paths for certain functionality\n context.transceiverController.setStreamIdForMid(updatedConfig.mid, currentId);\n context.videoStreamIndex.overrideStreamIdMappings(previousId, currentId);\n if (context.videoTileController.haveVideoTileForAttendeeId(updatedConfig.attendeeId)) {\n const tile = context.videoTileController.getVideoTileForAttendeeId(\n updatedConfig.attendeeId\n );\n if (!tile.setStreamId) {\n // Required function\n return false;\n }\n tile.setStreamId(currentId);\n }\n }\n // accomplish simulcast stream switches by sending removeVideoUpdate signaling frame instead of full renegotiation\n if (updatedVideoSubscriptionConfigurations.length !== 0) {\n context.signalingClient.remoteVideoUpdate(updatedVideoSubscriptionConfigurations, []);\n }\n\n // but cannot skip renegotiation if there are more changes than simulcast stream switch (i.e. add/remove/source switches)\n if (added.length !== 0 || removed.length !== 0) {\n return false;\n }\n // We use `remoteVideoUpdateSent` to cache the previous index so that we are able to do switches (not add/removes)\n // for simulcast stream layer changes. See `subscribeFrameSent` for more details.\n context.videoStreamIndex.remoteVideoUpdateSent();\n return true;\n }\n\n private detectChangesInVideosToReceive():\n | {\n added: number[];\n removed: number[];\n simulcastStreamUpdates: Map;\n }\n | undefined {\n const context = this.meetingSessionContext;\n /* istanbul ignore next: Extremely unlikely that `videosToReceive` is null */\n if (context.videosToReceive === null) {\n return undefined;\n }\n\n // Check existence of all required dependencies and requisite functions\n if (\n !context.transceiverController ||\n !context.transceiverController.getMidForStreamId ||\n !context.transceiverController.setStreamIdForMid ||\n !context.videosToReceive.forEach ||\n !context.signalingClient.remoteVideoUpdate ||\n !context.videoStreamIndex.overrideStreamIdMappings\n ) {\n return undefined;\n }\n\n let added: number[] = [];\n const simulcastStreamUpdates: Map = new Map();\n let removed: number[] = [];\n\n if (context.lastVideosToReceive === null) {\n added = context.videosToReceive.array();\n } else {\n const index = context.videoStreamIndex;\n context.videosToReceive.forEach((currentId: number) => {\n if (context.lastVideosToReceive.contain(currentId)) {\n return;\n }\n\n // Check if group ID exists in previous set (i.e. simulcast stream switch)\n let foundUpdatedPreviousStreamId = false;\n context.lastVideosToReceive.forEach((previousId: number) => {\n if (foundUpdatedPreviousStreamId) {\n return; // Short circuit since we have already found it\n }\n if (index.StreamIdsInSameGroup(previousId, currentId)) {\n simulcastStreamUpdates.set(previousId, currentId);\n foundUpdatedPreviousStreamId = true;\n }\n });\n if (!foundUpdatedPreviousStreamId) {\n // Otherwise this must be a new stream\n added.push(currentId);\n }\n });\n removed = context.lastVideosToReceive.array().filter(idFromPrevious => {\n const stillReceiving = context.videosToReceive.contain(idFromPrevious);\n const isUpdated = simulcastStreamUpdates.has(idFromPrevious);\n return !stillReceiving && !isUpdated;\n });\n }\n this.logger.info(\n `Request to update remote videos with added: [${added}], updated: [${Array.from(\n simulcastStreamUpdates.entries()\n )\n .map(([key, value]) => `${key}->${value}`)\n .join(',')}], removed: [${removed}]`\n );\n\n return {\n added,\n removed,\n simulcastStreamUpdates,\n };\n }\n\n private isNotAddingOrRemovingStreams(): boolean {\n const streamChanges = this.detectChangesInVideosToReceive();\n /* istanbul ignore if: Extremely unlikely that `videosToReceive` is null or missing requisite functions and made it this far */\n if (streamChanges === undefined) {\n return false;\n }\n const added: number[] = streamChanges.added;\n const removed: number[] = streamChanges.removed;\n // but cannot skip renegotiation if there are more changes than simulcast stream switch (i.e. add/remove/source switches)\n if (added.length !== 0 || removed.length !== 0) {\n return false;\n }\n\n // Similar to `updateRemoteVideosFromLastVideosToReceive`, we use `remoteVideoUpdateSent` to cache the previous\n // index so that we don't incorrectly mark a simulcast stream change (e.g. a sender switching from publishing [1, 3] to [2] to [1, 3])\n // as the add or removal of a source\n this.meetingSessionContext.videoStreamIndex.remoteVideoUpdateSent();\n return true;\n }\n\n // This funtion should be called only when any server side network adaption feature is enabled.\n // It sends `RemoteVideoUpdate` frame to server to update remote video preferences, which is needed for server side bandwidth probing.\n // The `RemoteVideoUpdate` signaling frame maybe also trigger server side video quality adaption if such feature has been signalled.\n //\n // It requires the caller to manage `this.meetingSessionContext.lastVideosToReceive`\n // and `this.meetingSessionContext.videosToReceive` so that `this.meetingSessionContext.lastVideosToReceive`\n // contains the stream IDs from either last time a subscribe was set, or last time this function was set.\n //\n // It will return false if not receiving any remote videos or found new video sources with MID not set yet.\n // It will return true if sent current preferences to server. It maybe also triggered server side quality adaption..\n private sendRemoteVideoUpdate(): boolean {\n const context = this.meetingSessionContext;\n /* istanbul ignore next: Extremely unlikely that `videosToReceive` is null */\n if (context.videosToReceive === null) {\n return false;\n }\n\n const groupIdsToReceive = context.videosToReceive.array().map((streamId: number) => {\n return context.videoStreamIndex.groupIdForStreamId(streamId);\n });\n this.receiveRemotePauseResumeTask.updateSubscribedGroupdIds(new Set(groupIdsToReceive));\n\n const currentConfigs = convertVideoPreferencesToSignalingClientVideoSubscriptionConfiguration(\n context,\n groupIdsToReceive,\n context.videoDownlinkBandwidthPolicy.getVideoPreferences()\n );\n\n const newVideoSubscriptionConfigurationsMap: Map<\n number,\n SignalingClientVideoSubscriptionConfiguration\n > = new Map();\n const addedOrUpdated: SignalingClientVideoSubscriptionConfiguration[] = [];\n for (const config of currentConfigs) {\n let shouldIncludeInUpdate = false;\n if (!context.lastVideoSubscriptionConfiguration.has(config.groupId)) {\n shouldIncludeInUpdate = true;\n } else {\n const lastConfig = context.lastVideoSubscriptionConfiguration.get(config.groupId);\n if (!config.equals(lastConfig)) {\n this.logger.debug(\n `${JSON.stringify(config)} does not equal ${JSON.stringify(lastConfig)}, sending update`\n );\n shouldIncludeInUpdate = true;\n }\n }\n\n newVideoSubscriptionConfigurationsMap.set(config.groupId, config);\n if (shouldIncludeInUpdate) {\n addedOrUpdated.push(config);\n }\n }\n context.lastVideoSubscriptionConfiguration = newVideoSubscriptionConfigurationsMap;\n\n const removedMids: string[] = [];\n if (context.lastVideosToReceive !== null) {\n const groupIdsToReceiveSet = new Set(groupIdsToReceive);\n for (const streamId of context.lastVideosToReceive.array()) {\n const groupId = context.videoStreamIndex.groupIdForStreamId(streamId);\n if (!groupIdsToReceiveSet.has(groupId)) {\n const mid = context.transceiverController.getMidForGroupId(groupId);\n if (mid === undefined) {\n context.logger.warn(`Could not find MID for group ID to remove: ${groupId}`);\n continue;\n }\n removedMids.push(mid);\n }\n }\n }\n\n // pass updated preference configurations to server for server-side bandwdith padding/probing\n // additionally, trigger server-side video quality adaption if enabed\n if (addedOrUpdated.length !== 0 || removedMids.length !== 0) {\n context.signalingClient.remoteVideoUpdate(addedOrUpdated, removedMids);\n }\n\n return true;\n }\n\n updateLocalVideoFromPolicy(): boolean {\n // Try updating parameters without renegotiation\n if (this.meetingSessionContext.enableSimulcast) {\n // The following may result in `this.mayNeedRenegotiationForSimulcastLayerChange` being switched on\n const encodingParam = this.meetingSessionContext.videoUplinkBandwidthPolicy.chooseEncodingParameters();\n if (\n this.mayNeedRenegotiationForSimulcastLayerChange &&\n this.meetingSessionContext.transceiverController.hasVideoInput() &&\n !this.negotiatedBitrateLayersAllocationRtpHeaderExtension()\n ) {\n this.logger.info('Needs regenotiation for local video simulcast layer change');\n this.mayNeedRenegotiationForSimulcastLayerChange = false;\n return false;\n }\n this.meetingSessionContext.transceiverController.setEncodingParameters(encodingParam);\n } else {\n this.meetingSessionContext.videoCaptureAndEncodeParameter = this.meetingSessionContext.videoUplinkBandwidthPolicy.chooseCaptureAndEncodeParameters();\n // Bitrate will be set in `actionFinishUpdating`. This should never need a resubscribe.\n }\n\n this.logger.info('Updated local video from policy without renegotiation');\n return true;\n }\n\n private negotiatedBitrateLayersAllocationRtpHeaderExtension(): boolean {\n if (!this.meetingSessionContext.transceiverController.localVideoTransceiver()) {\n return false;\n }\n const parameters = this.meetingSessionContext.transceiverController\n .localVideoTransceiver()\n .sender.getParameters();\n if (!parameters || !parameters.headerExtensions) {\n return false;\n }\n return parameters.headerExtensions.some(\n extension =>\n extension.uri === 'http://www.webrtc.org/experiments/rtp-hdrext/video-layers-allocation00'\n );\n }\n\n restartLocalVideo(callback: () => void): boolean {\n const restartVideo = async (): Promise => {\n if (this._videoTileController.hasStartedLocalVideoTile()) {\n this.logger.info('stopping local video tile prior to local video restart');\n this._videoTileController.stopLocalVideoTile();\n this.logger.info('preparing local video restart update');\n await this.actionUpdateWithRenegotiation(false);\n this.logger.info('starting local video tile for local video restart');\n this._videoTileController.startLocalVideoTile();\n }\n this.logger.info('finalizing local video restart update');\n await this.actionUpdateWithRenegotiation(true);\n callback();\n };\n const result = this.sessionStateController.perform(SessionStateControllerAction.Update, () => {\n restartVideo();\n });\n return (\n result === SessionStateControllerTransitionResult.Transitioned ||\n result === SessionStateControllerTransitionResult.DeferredTransition\n );\n }\n\n async replaceLocalVideo(videoStream: MediaStream): Promise {\n if (!videoStream || videoStream.getVideoTracks().length < 1) {\n throw new Error('could not acquire video track');\n }\n if (!this.meetingSessionContext || !this.meetingSessionContext.peer) {\n throw new Error('no active meeting and peer connection');\n }\n\n // if there is a local tile, a video tile update event should be fired.\n const localTile = this.meetingSessionContext.videoTileController.getLocalVideoTile();\n if (localTile) {\n const state = localTile.state();\n const settings = videoStream.getVideoTracks()[0].getSettings();\n // so tile update wil be fired.\n localTile.bindVideoStream(\n state.boundAttendeeId,\n true,\n videoStream,\n settings.width,\n settings.height,\n state.streamId,\n state.boundExternalUserId\n );\n }\n\n await this.meetingSessionContext.transceiverController.setVideoInput(\n videoStream.getVideoTracks()[0]\n );\n // Update the active video input on subscription context to match what we just changed\n // so that subsequent meeting actions can reuse and destroy it.\n this.meetingSessionContext.activeVideoInput = videoStream;\n\n this.logger.info('Local video input is updated');\n }\n\n async replaceLocalAudio(audioStream: MediaStream): Promise {\n if (!audioStream || audioStream.getAudioTracks().length < 1) {\n throw new Error('could not acquire audio track');\n }\n if (!this.meetingSessionContext || !this.meetingSessionContext.peer) {\n throw new Error('no active meeting and peer connection');\n }\n this.connectionHealthData.reset();\n this.connectionHealthData.setConnectionStartTime();\n\n const replaceTrackSuccess = await this.meetingSessionContext.transceiverController.replaceAudioTrack(\n audioStream.getAudioTracks()[0]\n );\n if (!replaceTrackSuccess) {\n throw new Error('Failed to replace audio track');\n }\n this.meetingSessionContext.activeAudioInput = audioStream;\n this.logger.info('Local audio input is updated');\n }\n\n private async actionUpdateWithRenegotiation(notify: boolean): Promise {\n // See declaration (unpaused in actionFinishUpdating)\n // The operations in `update` do not need this protection because they are synchronous.\n this.monitorTask.pauseResubscribeCheck();\n this.receiveIndexTask.pauseIngestion();\n\n // TODO: do not block other updates while waiting for video input\n try {\n await new SerialGroupTask(this.logger, this.wrapTaskName('AudioVideoUpdate'), [\n new ReceiveVideoInputTask(this.meetingSessionContext),\n new TimeoutTask(\n this.logger,\n new SerialGroupTask(this.logger, 'UpdateSession', [\n new AttachMediaInputTask(this.meetingSessionContext),\n new CreateSDPTask(this.meetingSessionContext),\n new SetLocalDescriptionTask(this.meetingSessionContext),\n new FinishGatheringICECandidatesTask(this.meetingSessionContext),\n new SubscribeAndReceiveSubscribeAckTask(this.meetingSessionContext),\n new SetRemoteDescriptionTask(this.meetingSessionContext),\n ]),\n this.configuration.connectionTimeoutMs\n ),\n ]).run();\n if (notify) {\n this.sessionStateController.perform(SessionStateControllerAction.FinishUpdating, () => {\n this.actionFinishUpdating();\n });\n }\n } catch (error) {\n this.sessionStateController.perform(SessionStateControllerAction.FinishUpdating, () => {\n const status = new MeetingSessionStatus(\n this.getMeetingStatusCode(error) || MeetingSessionStatusCode.TaskFailed\n );\n if (status.statusCode() !== MeetingSessionStatusCode.IncompatibleSDP) {\n this.logger.info('failed to update audio-video session');\n }\n this.handleMeetingSessionStatus(status, error);\n });\n }\n }\n\n private notifyStop(status: MeetingSessionStatus, error: Error | null): void {\n this.forEachObserver(observer => {\n Maybe.of(observer.audioVideoDidStop).map(f => f.bind(observer)(status));\n });\n\n /* istanbul ignore else */\n if (this.eventController) {\n const {\n signalingOpenDurationMs,\n poorConnectionCount,\n startTimeMs,\n iceGatheringDurationMs,\n attendeePresenceDurationMs,\n meetingStartDurationMs,\n } = this.meetingSessionContext;\n const attributes: AudioVideoEventAttributes = {\n maxVideoTileCount: this.meetingSessionContext.maxVideoTileCount,\n meetingDurationMs: startTimeMs === null ? 0 : Math.round(Date.now() - startTimeMs),\n meetingStatus: MeetingSessionStatusCode[status.statusCode()],\n signalingOpenDurationMs,\n iceGatheringDurationMs,\n attendeePresenceDurationMs,\n poorConnectionCount,\n meetingStartDurationMs,\n retryCount: this.totalRetryCount,\n };\n\n /* istanbul ignore next: toString is optional */\n const meetingErrorMessage = (error && error.message) || status.toString?.() || '';\n if (attributes.meetingDurationMs === 0) {\n attributes.meetingErrorMessage = meetingErrorMessage;\n delete attributes.meetingDurationMs;\n delete attributes.attendeePresenceDurationMs;\n delete attributes.meetingStartDurationMs;\n this.eventController.publishEvent('meetingStartFailed', attributes);\n } else if (status.isFailure() || status.isAudioConnectionFailure()) {\n attributes.meetingErrorMessage = meetingErrorMessage;\n this.eventController.publishEvent('meetingFailed', attributes);\n } else {\n this.eventController.publishEvent('meetingEnded', attributes);\n }\n }\n }\n\n private actionFinishUpdating(): void {\n // we do not update parameter for simulcast since they are updated in AttachMediaInputTask\n if (!this.meetingSessionContext.enableSimulcast) {\n if (this.useUpdateTransceiverControllerForUplink) {\n this.meetingSessionContext.videoUplinkBandwidthPolicy.updateTransceiverController();\n } else {\n const maxBitrateKbps = this.meetingSessionContext.videoCaptureAndEncodeParameter.encodeBitrates()[0];\n this.enforceBandwidthLimitationForSender(maxBitrateKbps);\n }\n }\n\n this.monitorTask.resumeResubscribeCheck();\n this.receiveIndexTask.resumeIngestion();\n\n this.logger.info('updated audio-video session');\n }\n\n reconnect(status: MeetingSessionStatus, error: Error | null): boolean {\n if (this.promotedToPrimaryMeeting) {\n // If the client was promoted, we 'demote' them so that we don't get in any\n // unusual or unexpected state on reconnect\n this.promotedToPrimaryMeeting = false;\n this.forEachObserver(observer => {\n Maybe.of(observer.audioVideoWasDemotedFromPrimaryMeeting).map(f =>\n f.bind(observer)(\n new MeetingSessionStatus(MeetingSessionStatusCode.AudioVideoDisconnectedWhilePromoted)\n )\n );\n });\n }\n\n const willRetry = this._reconnectController.retryWithBackoff(\n async () => {\n if (this.sessionStateController.state() === SessionStateControllerState.NotConnected) {\n this.sessionStateController.perform(SessionStateControllerAction.Connect, () => {\n this.actionConnect(true);\n });\n } else {\n this.sessionStateController.perform(SessionStateControllerAction.Reconnect, () => {\n this.actionReconnect(status);\n });\n }\n this.totalRetryCount += 1;\n },\n () => {\n this.logger.info('canceled retry');\n }\n );\n if (!willRetry) {\n this.sessionStateController.perform(SessionStateControllerAction.Fail, () => {\n this.actionDisconnect(status, false, error);\n });\n }\n\n return willRetry;\n }\n\n private async actionReconnect(status: MeetingSessionStatus): Promise {\n if (!this._reconnectController.hasStartedConnectionAttempt()) {\n this._reconnectController.startedConnectionAttempt(false);\n this.forEachObserver(observer => {\n Maybe.of(observer.audioVideoDidStartConnecting).map(f => f.bind(observer)(true));\n });\n }\n\n this.meetingSessionContext.volumeIndicatorAdapter.onReconnect();\n this.connectionHealthData.reset();\n this.receiveRemotePauseResumeTask = new ReceiveRemoteVideoPauseResume(\n this.meetingSessionContext\n );\n try {\n await new SerialGroupTask(this.logger, this.wrapTaskName('AudioVideoReconnect'), [\n new TimeoutTask(\n this.logger,\n new SerialGroupTask(this.logger, 'Media', [\n new CleanRestartedSessionTask(this.meetingSessionContext),\n new SerialGroupTask(this.logger, 'Signaling', [\n new OpenSignalingConnectionTask(this.meetingSessionContext),\n new JoinAndReceiveIndexTask(this.meetingSessionContext),\n ]),\n new CreatePeerConnectionTask(this.meetingSessionContext),\n ]),\n this.configuration.connectionTimeoutMs\n ),\n // TODO: Do we need ReceiveVideoInputTask in the reconnect operation?\n new ReceiveVideoInputTask(this.meetingSessionContext),\n new TimeoutTask(\n this.logger,\n new SerialGroupTask(this.logger, 'UpdateSession', [\n new AttachMediaInputTask(this.meetingSessionContext),\n new CreateSDPTask(this.meetingSessionContext),\n new SetLocalDescriptionTask(this.meetingSessionContext),\n new FinishGatheringICECandidatesTask(this.meetingSessionContext),\n new SubscribeAndReceiveSubscribeAckTask(this.meetingSessionContext),\n new SetRemoteDescriptionTask(this.meetingSessionContext),\n this.receiveRemotePauseResumeTask,\n ]),\n this.configuration.connectionTimeoutMs\n ),\n ]).run();\n\n this.sessionStateController.perform(SessionStateControllerAction.FinishConnecting, () => {\n /* istanbul ignore else */\n if (this.eventController) {\n const {\n signalingOpenDurationMs,\n poorConnectionCount,\n startTimeMs,\n iceGatheringDurationMs,\n attendeePresenceDurationMs,\n meetingStartDurationMs,\n } = this.meetingSessionContext;\n const attributes: AudioVideoEventAttributes = {\n maxVideoTileCount: this.meetingSessionContext.maxVideoTileCount,\n meetingDurationMs: Math.round(Date.now() - startTimeMs),\n meetingStatus: MeetingSessionStatusCode[status.statusCode()],\n signalingOpenDurationMs,\n iceGatheringDurationMs,\n attendeePresenceDurationMs,\n poorConnectionCount,\n meetingStartDurationMs,\n retryCount: this.totalRetryCount,\n };\n this.eventController.publishEvent('meetingReconnected', attributes);\n }\n this.actionFinishConnecting();\n });\n } catch (error) {\n // To perform the \"Reconnect\" action again, the session should be in the \"Connected\" state.\n this.sessionStateController.perform(SessionStateControllerAction.FinishConnecting, () => {\n this.logger.info('failed to reconnect audio-video session');\n const status = new MeetingSessionStatus(\n this.getMeetingStatusCode(error) || MeetingSessionStatusCode.TaskFailed\n );\n this.handleMeetingSessionStatus(status, error);\n });\n }\n this.connectionHealthData.setConnectionStartTime();\n }\n\n private wrapTaskName(taskName: string): string {\n return `${taskName}/${this.configuration.meetingId}/${this.configuration.credentials.attendeeId}`;\n }\n\n private cleanUpMediaStreamsAfterStop(): void {\n this._mediaStreamBroker.removeMediaStreamBrokerObserver(this);\n this.meetingSessionContext.activeAudioInput = undefined;\n this.meetingSessionContext.activeVideoInput = undefined;\n }\n\n // Extract the meeting status from `Error.message`, relying on specific phrasing\n // 'the meeting status code ${CODE}`.\n //\n // e.g. reject(new Error(\n // `canceling ${this.name()} due to the meeting status code: ${MeetingSessionStatusCode.MeetingEnded}`));\n private getMeetingStatusCode(error: Error): MeetingSessionStatusCode | null {\n const matched = /the meeting status code: (\\d+)/.exec(error && error.message);\n if (matched && matched.length > 1) {\n return Number.parseInt(matched[1], 10);\n }\n return null;\n }\n\n private async enforceBandwidthLimitationForSender(maxBitrateKbps: number): Promise {\n await this.meetingSessionContext.transceiverController.setVideoSendingBitrateKbps(\n maxBitrateKbps\n );\n }\n\n handleMeetingSessionStatus(status: MeetingSessionStatus, error: Error | null): boolean {\n this.logger.info(`handling status: ${MeetingSessionStatusCode[status.statusCode()]}`);\n if (!status.isTerminal()) {\n if (this.meetingSessionContext.statsCollector) {\n this.meetingSessionContext.statsCollector.logMeetingSessionStatus(status);\n }\n }\n if (status.statusCode() === MeetingSessionStatusCode.IncompatibleSDP) {\n this.restartLocalVideo(() => {\n this.logger.info('handled incompatible SDP by attempting to restart video');\n });\n return true;\n }\n if (status.statusCode() === MeetingSessionStatusCode.VideoCallSwitchToViewOnly) {\n this._videoTileController.removeLocalVideoTile();\n this.forEachObserver((observer: AudioVideoObserver) => {\n Maybe.of(observer.videoSendDidBecomeUnavailable).map(f => f.bind(observer)());\n });\n return false;\n }\n if (status.statusCode() === MeetingSessionStatusCode.AudioVideoWasRemovedFromPrimaryMeeting) {\n this.forEachObserver((observer: AudioVideoObserver) => {\n Maybe.of(observer.audioVideoWasDemotedFromPrimaryMeeting).map(f =>\n f.bind(observer)(status)\n );\n });\n return false;\n }\n if (status.isTerminal()) {\n this.logger.error('session will not be reconnected');\n if (this.meetingSessionContext.reconnectController) {\n this.meetingSessionContext.reconnectController.disableReconnect();\n }\n }\n if (status.isFailure() || status.isTerminal()) {\n if (this.meetingSessionContext.reconnectController) {\n const willReconnect = this.reconnect(status, error);\n if (willReconnect) {\n this.logger.warn(\n `The audio video controller will reconnect due to status code ${\n MeetingSessionStatusCode[status.statusCode()]\n }${error ? ` and error: ${error.message}` : ``}`\n );\n } else {\n this.logger.error(\n `The audio video controller failed with status code ${\n MeetingSessionStatusCode[status.statusCode()]\n }${error ? ` and error: ${error.message}` : ``}`\n );\n }\n return willReconnect;\n }\n }\n return false;\n }\n\n setVideoMaxBandwidthKbps(maxBandwidthKbps: number): void {\n if (maxBandwidthKbps <= 0) {\n throw new Error('Max bandwidth kbps has to be greater than 0');\n }\n\n if (this.meetingSessionContext && this.meetingSessionContext.videoUplinkBandwidthPolicy) {\n this.logger.info(`video send has ideal max bandwidth ${maxBandwidthKbps} kbps`);\n this.meetingSessionContext.videoUplinkBandwidthPolicy.setIdealMaxBandwidthKbps(\n maxBandwidthKbps\n );\n }\n\n this.maxUplinkBandwidthKbps = maxBandwidthKbps;\n }\n\n async handleHasBandwidthPriority(hasBandwidthPriority: boolean): Promise {\n if (\n this.meetingSessionContext &&\n this.meetingSessionContext.videoUplinkBandwidthPolicy &&\n !this.meetingSessionContext.enableSimulcast\n ) {\n if (this.useUpdateTransceiverControllerForUplink) {\n this.meetingSessionContext.videoUplinkBandwidthPolicy.setHasBandwidthPriority(\n hasBandwidthPriority\n );\n await this.meetingSessionContext.videoUplinkBandwidthPolicy.updateTransceiverController();\n return;\n }\n const oldMaxBandwidth = this.meetingSessionContext.videoUplinkBandwidthPolicy.maxBandwidthKbps();\n\n this.meetingSessionContext.videoUplinkBandwidthPolicy.setHasBandwidthPriority(\n hasBandwidthPriority\n );\n const newMaxBandwidth = this.meetingSessionContext.videoUplinkBandwidthPolicy.maxBandwidthKbps();\n\n if (oldMaxBandwidth !== newMaxBandwidth) {\n this.logger.info(\n `video send bandwidth priority ${hasBandwidthPriority} max has changed from ${oldMaxBandwidth} kbps to ${newMaxBandwidth} kbps`\n );\n await this.enforceBandwidthLimitationForSender(newMaxBandwidth);\n }\n }\n }\n\n pauseReceivingStream(streamId: number): void {\n if (!!this.meetingSessionContext && this.meetingSessionContext.signalingClient) {\n this.meetingSessionContext.signalingClient.pause([streamId]);\n }\n }\n\n resumeReceivingStream(streamId: number): void {\n if (!!this.meetingSessionContext && this.meetingSessionContext.signalingClient) {\n this.meetingSessionContext.signalingClient.resume([streamId]);\n }\n }\n\n setVideoCodecSendPreferences(preferences: VideoCodecCapability[]): void {\n this.videoSendCodecPreferences = preferences; // In case we haven't called `initSignalingClient` yet\n this.meetingSessionContext.videoSendCodecPreferences = preferences;\n if (this.sessionStateController.state() !== SessionStateControllerState.NotConnected) {\n this.update({ needsRenegotiation: true });\n }\n }\n\n getRemoteVideoSources(): VideoSource[] {\n const { videoStreamIndex } = this.meetingSessionContext;\n if (!videoStreamIndex) {\n this.logger.info('meeting has not started');\n return [];\n }\n const selfAttendeeId = this.configuration.credentials.attendeeId;\n return videoStreamIndex.allVideoSendingSourcesExcludingSelf(selfAttendeeId);\n }\n\n encodingSimulcastLayersDidChange(simulcastLayers: SimulcastLayers): void {\n this.mayNeedRenegotiationForSimulcastLayerChange = true;\n this.forEachObserver(observer => {\n Maybe.of(observer.encodingSimulcastLayersDidChange).map(f =>\n f.bind(observer)(simulcastLayers)\n );\n });\n }\n\n promoteToPrimaryMeeting(credentials: MeetingSessionCredentials): Promise {\n return this.actionPromoteToPrimaryMeeting(credentials);\n }\n\n private async actionPromoteToPrimaryMeeting(\n credentials: MeetingSessionCredentials\n ): Promise {\n let resultingStatus = new MeetingSessionStatus(MeetingSessionStatusCode.SignalingRequestFailed);\n await new SerialGroupTask(this.logger, this.wrapTaskName('PromoteToPrimaryMeeting'), [\n new TimeoutTask(\n this.logger,\n new PromoteToPrimaryMeetingTask(\n this.meetingSessionContext,\n credentials,\n (status: MeetingSessionStatus) => {\n resultingStatus = status;\n }\n ),\n this.configuration.connectionTimeoutMs\n ),\n ]).run();\n this.promotedToPrimaryMeeting = resultingStatus.statusCode() === MeetingSessionStatusCode.OK;\n return resultingStatus;\n }\n\n demoteFromPrimaryMeeting(): void {\n this.meetingSessionContext.signalingClient.demoteFromPrimaryMeeting();\n this.forEachObserver(observer => {\n Maybe.of(observer.audioVideoWasDemotedFromPrimaryMeeting).map(f =>\n f.bind(observer)(new MeetingSessionStatus(MeetingSessionStatusCode.OK))\n );\n });\n }\n\n async videoInputDidChange(videoStream: MediaStream | undefined): Promise {\n this.logger.info('Receive a video input change event');\n // No active meeting, there is nothing to do\n if (!this.meetingSessionContext || !this.meetingSessionContext.peer) {\n this.logger.info(\n 'Skip updating video input because there is no active meeting and peer connection'\n );\n return;\n }\n if (this._videoTileController.hasStartedLocalVideoTile()) {\n if (videoStream) {\n await this.replaceLocalVideo(videoStream);\n } else {\n this._videoTileController.stopLocalVideoTile();\n }\n }\n }\n\n async audioInputDidChange(audioStream: MediaStream | undefined): Promise {\n this.logger.info('Receive an audio input change event');\n // No active meeting, there is nothing to do\n if (!this.meetingSessionContext || !this.meetingSessionContext.peer) {\n this.logger.info(\n 'Skip updating audio input because there is no active meeting and peer connection'\n );\n return;\n }\n if (!audioStream) {\n // If audio input stream stopped, try to get empty audio device from media stream broker\n try {\n audioStream = await this.mediaStreamBroker.acquireAudioInputStream();\n } catch (error) {\n this.logger.error('Could not acquire audio track from mediaStreamBroker');\n return;\n }\n }\n await this.replaceLocalAudio(audioStream);\n }\n}\n","'use strict';\n\nmodule.exports = function isCancel(value) {\n return !!(value && value.__CANCEL__);\n};\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['codedeploy'] = {};\nAWS.CodeDeploy = Service.defineService('codedeploy', ['2014-10-06']);\nObject.defineProperty(apiLoader.services['codedeploy'], '2014-10-06', {\n get: function get() {\n var model = require('../apis/codedeploy-2014-10-06.min.json');\n model.paginators = require('../apis/codedeploy-2014-10-06.paginators.json').pagination;\n model.waiters = require('../apis/codedeploy-2014-10-06.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.CodeDeploy;\n","'use strict';\nvar $ = require('../internals/export');\nvar sameValueZero = require('../internals/same-value-zero');\nvar aMap = require('../internals/a-map');\nvar iterate = require('../internals/map-iterate');\n\n// `Map.prototype.includes` method\n// https://github.com/tc39/proposal-collection-methods\n$({ target: 'Map', proto: true, real: true, forced: true }, {\n includes: function includes(searchElement) {\n return iterate(aMap(this), function (value) {\n if (sameValueZero(value, searchElement)) return true;\n }, true) === true;\n }\n});\n","'use strict';\nvar TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar isCallable = require('../internals/is-callable');\nvar classofRaw = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar $Object = Object;\n\n// ES3 wrong here\nvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) === 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (error) { /* empty */ }\n};\n\n// getting tag from ES6+ `Object.prototype.toString`\nmodule.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {\n var O, tag, result;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (tag = tryGet(O = $Object(it), TO_STRING_TAG)) == 'string' ? tag\n // builtinTag case\n : CORRECT_ARGUMENTS ? classofRaw(O)\n // ES3 arguments fallback\n : (result = classofRaw(O)) === 'Object' && isCallable(O.callee) ? 'Arguments' : result;\n};\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","var isarray = require('isarray')\n\n/**\n * Expose `pathToRegexp`.\n */\nmodule.exports = pathToRegexp\nmodule.exports.parse = parse\nmodule.exports.compile = compile\nmodule.exports.tokensToFunction = tokensToFunction\nmodule.exports.tokensToRegExp = tokensToRegExp\n\n/**\n * The main path matching regexp utility.\n *\n * @type {RegExp}\n */\nvar PATH_REGEXP = new RegExp([\n // Match escaped characters that would otherwise appear in future matches.\n // This allows the user to escape special characters that won't transform.\n '(\\\\\\\\.)',\n // Match Express-style parameters and un-named parameters with a prefix\n // and optional suffixes. Matches appear as:\n //\n // \"/:test(\\\\d+)?\" => [\"/\", \"test\", \"\\d+\", undefined, \"?\", undefined]\n // \"/route(\\\\d+)\" => [undefined, undefined, undefined, \"\\d+\", undefined, undefined]\n // \"/*\" => [\"/\", undefined, undefined, undefined, undefined, \"*\"]\n '([\\\\/.])?(?:(?:\\\\:(\\\\w+)(?:\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))?|\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))([+*?])?|(\\\\*))'\n].join('|'), 'g')\n\n/**\n * Parse a string for the raw tokens.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!Array}\n */\nfunction parse (str, options) {\n var tokens = []\n var key = 0\n var index = 0\n var path = ''\n var defaultDelimiter = options && options.delimiter || '/'\n var res\n\n while ((res = PATH_REGEXP.exec(str)) != null) {\n var m = res[0]\n var escaped = res[1]\n var offset = res.index\n path += str.slice(index, offset)\n index = offset + m.length\n\n // Ignore already escaped sequences.\n if (escaped) {\n path += escaped[1]\n continue\n }\n\n var next = str[index]\n var prefix = res[2]\n var name = res[3]\n var capture = res[4]\n var group = res[5]\n var modifier = res[6]\n var asterisk = res[7]\n\n // Push the current path onto the tokens.\n if (path) {\n tokens.push(path)\n path = ''\n }\n\n var partial = prefix != null && next != null && next !== prefix\n var repeat = modifier === '+' || modifier === '*'\n var optional = modifier === '?' || modifier === '*'\n var delimiter = prefix || defaultDelimiter\n var pattern = capture || group\n var prevText = prefix || (typeof tokens[tokens.length - 1] === 'string' ? tokens[tokens.length - 1] : '')\n\n tokens.push({\n name: name || key++,\n prefix: prefix || '',\n delimiter: delimiter,\n optional: optional,\n repeat: repeat,\n partial: partial,\n asterisk: !!asterisk,\n pattern: pattern ? escapeGroup(pattern) : (asterisk ? '.*' : restrictBacktrack(delimiter, prevText))\n })\n }\n\n // Match any characters still remaining.\n if (index < str.length) {\n path += str.substr(index)\n }\n\n // If the path exists, push it onto the end.\n if (path) {\n tokens.push(path)\n }\n\n return tokens\n}\n\nfunction restrictBacktrack(delimiter, prevText) {\n if (!prevText || prevText.indexOf(delimiter) > -1) {\n return '[^' + escapeString(delimiter) + ']+?'\n }\n\n return escapeString(prevText) + '|(?:(?!' + escapeString(prevText) + ')[^' + escapeString(delimiter) + '])+?'\n}\n\n/**\n * Compile a string to a template function for the path.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!function(Object=, Object=)}\n */\nfunction compile (str, options) {\n return tokensToFunction(parse(str, options), options)\n}\n\n/**\n * Prettier encoding of URI path segments.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeURIComponentPretty (str) {\n return encodeURI(str).replace(/[\\/?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Encode the asterisk parameter. Similar to `pretty`, but allows slashes.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeAsterisk (str) {\n return encodeURI(str).replace(/[?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Expose a method for transforming tokens into the path function.\n */\nfunction tokensToFunction (tokens, options) {\n // Compile all the tokens into regexps.\n var matches = new Array(tokens.length)\n\n // Compile all the patterns before compilation.\n for (var i = 0; i < tokens.length; i++) {\n if (typeof tokens[i] === 'object') {\n matches[i] = new RegExp('^(?:' + tokens[i].pattern + ')$', flags(options))\n }\n }\n\n return function (obj, opts) {\n var path = ''\n var data = obj || {}\n var options = opts || {}\n var encode = options.pretty ? encodeURIComponentPretty : encodeURIComponent\n\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i]\n\n if (typeof token === 'string') {\n path += token\n\n continue\n }\n\n var value = data[token.name]\n var segment\n\n if (value == null) {\n if (token.optional) {\n // Prepend partial segment prefixes.\n if (token.partial) {\n path += token.prefix\n }\n\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to be defined')\n }\n }\n\n if (isarray(value)) {\n if (!token.repeat) {\n throw new TypeError('Expected \"' + token.name + '\" to not repeat, but received `' + JSON.stringify(value) + '`')\n }\n\n if (value.length === 0) {\n if (token.optional) {\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to not be empty')\n }\n }\n\n for (var j = 0; j < value.length; j++) {\n segment = encode(value[j])\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected all \"' + token.name + '\" to match \"' + token.pattern + '\", but received `' + JSON.stringify(segment) + '`')\n }\n\n path += (j === 0 ? token.prefix : token.delimiter) + segment\n }\n\n continue\n }\n\n segment = token.asterisk ? encodeAsterisk(value) : encode(value)\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected \"' + token.name + '\" to match \"' + token.pattern + '\", but received \"' + segment + '\"')\n }\n\n path += token.prefix + segment\n }\n\n return path\n }\n}\n\n/**\n * Escape a regular expression string.\n *\n * @param {string} str\n * @return {string}\n */\nfunction escapeString (str) {\n return str.replace(/([.+*?=^!:${}()[\\]|\\/\\\\])/g, '\\\\$1')\n}\n\n/**\n * Escape the capturing group by escaping special characters and meaning.\n *\n * @param {string} group\n * @return {string}\n */\nfunction escapeGroup (group) {\n return group.replace(/([=!:$\\/()])/g, '\\\\$1')\n}\n\n/**\n * Attach the keys as a property of the regexp.\n *\n * @param {!RegExp} re\n * @param {Array} keys\n * @return {!RegExp}\n */\nfunction attachKeys (re, keys) {\n re.keys = keys\n return re\n}\n\n/**\n * Get the flags for a regexp from the options.\n *\n * @param {Object} options\n * @return {string}\n */\nfunction flags (options) {\n return options && options.sensitive ? '' : 'i'\n}\n\n/**\n * Pull out keys from a regexp.\n *\n * @param {!RegExp} path\n * @param {!Array} keys\n * @return {!RegExp}\n */\nfunction regexpToRegexp (path, keys) {\n // Use a negative lookahead to match only capturing groups.\n var groups = path.source.match(/\\((?!\\?)/g)\n\n if (groups) {\n for (var i = 0; i < groups.length; i++) {\n keys.push({\n name: i,\n prefix: null,\n delimiter: null,\n optional: false,\n repeat: false,\n partial: false,\n asterisk: false,\n pattern: null\n })\n }\n }\n\n return attachKeys(path, keys)\n}\n\n/**\n * Transform an array into a regexp.\n *\n * @param {!Array} path\n * @param {Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction arrayToRegexp (path, keys, options) {\n var parts = []\n\n for (var i = 0; i < path.length; i++) {\n parts.push(pathToRegexp(path[i], keys, options).source)\n }\n\n var regexp = new RegExp('(?:' + parts.join('|') + ')', flags(options))\n\n return attachKeys(regexp, keys)\n}\n\n/**\n * Create a path regexp from string input.\n *\n * @param {string} path\n * @param {!Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction stringToRegexp (path, keys, options) {\n return tokensToRegExp(parse(path, options), keys, options)\n}\n\n/**\n * Expose a function for taking tokens and returning a RegExp.\n *\n * @param {!Array} tokens\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction tokensToRegExp (tokens, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options)\n keys = []\n }\n\n options = options || {}\n\n var strict = options.strict\n var end = options.end !== false\n var route = ''\n\n // Iterate over the tokens and create our regexp string.\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i]\n\n if (typeof token === 'string') {\n route += escapeString(token)\n } else {\n var prefix = escapeString(token.prefix)\n var capture = '(?:' + token.pattern + ')'\n\n keys.push(token)\n\n if (token.repeat) {\n capture += '(?:' + prefix + capture + ')*'\n }\n\n if (token.optional) {\n if (!token.partial) {\n capture = '(?:' + prefix + '(' + capture + '))?'\n } else {\n capture = prefix + '(' + capture + ')?'\n }\n } else {\n capture = prefix + '(' + capture + ')'\n }\n\n route += capture\n }\n }\n\n var delimiter = escapeString(options.delimiter || '/')\n var endsWithDelimiter = route.slice(-delimiter.length) === delimiter\n\n // In non-strict mode we allow a slash at the end of match. If the path to\n // match already ends with a slash, we remove it for consistency. The slash\n // is valid at the end of a path match, not in the middle. This is important\n // in non-ending mode, where \"/test/\" shouldn't match \"/test//route\".\n if (!strict) {\n route = (endsWithDelimiter ? route.slice(0, -delimiter.length) : route) + '(?:' + delimiter + '(?=$))?'\n }\n\n if (end) {\n route += '$'\n } else {\n // In non-ending mode, we need the capturing groups to match as much as\n // possible by using a positive lookahead to the end or next path segment.\n route += strict && endsWithDelimiter ? '' : '(?=' + delimiter + '|$)'\n }\n\n return attachKeys(new RegExp('^' + route, flags(options)), keys)\n}\n\n/**\n * Normalize the given path string, returning a regular expression.\n *\n * An empty array can be passed in for the keys, which will hold the\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\n * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.\n *\n * @param {(string|RegExp|Array)} path\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction pathToRegexp (path, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options)\n keys = []\n }\n\n options = options || {}\n\n if (path instanceof RegExp) {\n return regexpToRegexp(path, /** @type {!Array} */ (keys))\n }\n\n if (isarray(path)) {\n return arrayToRegexp(/** @type {!Array} */ (path), /** @type {!Array} */ (keys), options)\n }\n\n return stringToRegexp(/** @type {string} */ (path), /** @type {!Array} */ (keys), options)\n}\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nmodule.exports = {\n 2: 'need dictionary', /* Z_NEED_DICT 2 */\n 1: 'stream end', /* Z_STREAM_END 1 */\n 0: '', /* Z_OK 0 */\n '-1': 'file error', /* Z_ERRNO (-1) */\n '-2': 'stream error', /* Z_STREAM_ERROR (-2) */\n '-3': 'data error', /* Z_DATA_ERROR (-3) */\n '-4': 'insufficient memory', /* Z_MEM_ERROR (-4) */\n '-5': 'buffer error', /* Z_BUF_ERROR (-5) */\n '-6': 'incompatible version' /* Z_VERSION_ERROR (-6) */\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport DefaultAudioMixController from '../audiomixcontroller/DefaultAudioMixController';\nimport AudioVideoObserver from '../audiovideoobserver/AudioVideoObserver';\nimport DefaultBrowserBehavior from '../browserbehavior/DefaultBrowserBehavior';\nimport ClientMetricReport from '../clientmetricreport/ClientMetricReport';\nimport ContentShareObserver from '../contentshareobserver/ContentShareObserver';\nimport DefaultDeviceController from '../devicecontroller/DefaultDeviceController';\nimport Device from '../devicecontroller/Device';\nimport PermissionDeniedError from '../devicecontroller/PermissionDeniedError';\nimport Logger from '../logger/Logger';\nimport MeetingSession from '../meetingsession/MeetingSession';\nimport MeetingSessionStatus from '../meetingsession/MeetingSessionStatus';\nimport BaseTask from '../task/BaseTask';\nimport TimeoutTask from '../task/TimeoutTask';\nimport CheckAudioConnectivityFeedback from './CheckAudioConnectivityFeedback';\nimport CheckAudioInputFeedback from './CheckAudioInputFeedback';\nimport CheckAudioOutputFeedback from './CheckAudioOutputFeedback';\nimport CheckCameraResolutionFeedback from './CheckCameraResolutionFeedback';\nimport CheckContentShareConnectivityFeedback from './CheckContentShareConnectivityFeedback';\nimport CheckNetworkTCPConnectivityFeedback from './CheckNetworkTCPConnectivityFeedback';\nimport CheckNetworkUDPConnectivityFeedback from './CheckNetworkUDPConnectivityFeedback';\nimport CheckVideoConnectivityFeedback from './CheckVideoConnectivityFeedback';\nimport CheckVideoInputFeedback from './CheckVideoInputFeedback';\nimport MeetingReadinessChecker from './MeetingReadinessChecker';\nimport MeetingReadinessCheckerConfiguration from './MeetingReadinessCheckerConfiguration';\n\nexport default class DefaultMeetingReadinessChecker implements MeetingReadinessChecker {\n private static async delay(timeoutMs: number): Promise {\n return new Promise(resolve => setTimeout(resolve, timeoutMs));\n }\n\n private audioContext: AudioContext;\n private gainNode: GainNode;\n private oscillatorNode: OscillatorNode;\n private destinationStream: MediaStreamAudioDestinationNode;\n private originalURLRewriter: (url: string) => string;\n\n private browserBehavior: DefaultBrowserBehavior = new DefaultBrowserBehavior();\n\n constructor(\n private logger: Logger,\n private meetingSession: MeetingSession,\n private configuration: MeetingReadinessCheckerConfiguration = new MeetingReadinessCheckerConfiguration()\n ) {}\n\n async checkAudioInput(audioInputDevice: Device): Promise {\n try {\n await this.meetingSession.audioVideo.startAudioInput(audioInputDevice);\n await this.meetingSession.audioVideo.stopAudioInput();\n return CheckAudioInputFeedback.Succeeded;\n } catch (error) {\n this.logger.error(`MeetingReadinessChecker: Audio input check failed with error ${error}`);\n if (error instanceof PermissionDeniedError) {\n return CheckAudioInputFeedback.PermissionDenied;\n }\n return CheckAudioInputFeedback.Failed;\n }\n }\n\n async checkAudioOutput(\n audioOutputDeviceInfo: MediaDeviceInfo | string,\n audioOutputVerificationCallback: () => Promise,\n audioElement: HTMLAudioElement = null\n ): Promise {\n try {\n const audioOutputDeviceId = audioOutputDeviceInfo\n ? (DefaultDeviceController.getIntrinsicDeviceId(audioOutputDeviceInfo) as string)\n : '';\n await this.playTone(\n audioOutputDeviceId,\n this.configuration.audioOutputFrequency,\n audioElement\n );\n const userFeedback = await audioOutputVerificationCallback();\n if (userFeedback) {\n return CheckAudioOutputFeedback.Succeeded;\n }\n return CheckAudioOutputFeedback.Failed;\n } catch (error) {\n this.logger.error(`MeetingReadinessChecker: Audio output check failed with error: ${error}`);\n return CheckAudioOutputFeedback.Failed;\n } finally {\n this.stopTone();\n }\n }\n\n private async playTone(\n sinkId: string | null,\n frequency: number | 440,\n audioElement: HTMLAudioElement | null\n ): Promise {\n const rampSec = 0.1;\n const maxGainValue = this.configuration.audioOutputGain;\n\n if (this.oscillatorNode) {\n this.stopTone();\n }\n this.audioContext = DefaultDeviceController.getAudioContext();\n this.gainNode = this.audioContext.createGain();\n this.gainNode.gain.value = 0;\n this.oscillatorNode = this.audioContext.createOscillator();\n this.oscillatorNode.frequency.value = frequency;\n this.oscillatorNode.connect(this.gainNode);\n this.destinationStream = this.audioContext.createMediaStreamDestination();\n this.gainNode.connect(this.destinationStream);\n const currentTime = this.audioContext.currentTime;\n const startTime = currentTime + 0.1;\n this.gainNode.gain.linearRampToValueAtTime(0, startTime);\n this.gainNode.gain.linearRampToValueAtTime(maxGainValue, startTime + rampSec);\n this.oscillatorNode.start();\n\n // Because we always use `DefaultAudioMixController`, and both this class\n // and DAMC use `DefaultBrowserBehavior`, it is not possible for the `bindAudioDevice` call here to throw.\n // Nevertheless, we `catch` here and disable code coverage.\n\n const audioMixController = new DefaultAudioMixController(this.logger);\n\n try {\n if (this.browserBehavior.supportsSetSinkId()) {\n await audioMixController.bindAudioDevice({ deviceId: sinkId } as MediaDeviceInfo);\n }\n } catch (e) {\n /* istanbul ignore next */\n this.logger.error(`Failed to bind audio device: ${e}`);\n }\n try {\n await audioMixController.bindAudioElement(audioElement || new Audio());\n } catch (e) {\n this.logger.error(`Failed to bind audio element: ${e}`);\n }\n await audioMixController.bindAudioStream(this.destinationStream.stream);\n }\n\n private stopTone(): void {\n if (!this.audioContext || !this.gainNode || !this.oscillatorNode || !this.destinationStream) {\n return;\n }\n const durationSec = 1;\n const rampSec = 0.1;\n const maxGainValue = this.configuration.audioOutputGain;\n const currentTime = this.audioContext.currentTime;\n this.gainNode.gain.linearRampToValueAtTime(maxGainValue, currentTime + rampSec + durationSec);\n this.gainNode.gain.linearRampToValueAtTime(0, currentTime + rampSec * 2 + durationSec);\n this.oscillatorNode.stop();\n this.oscillatorNode.disconnect(this.gainNode);\n this.gainNode.disconnect(this.destinationStream);\n this.oscillatorNode = null;\n this.gainNode = null;\n this.destinationStream = null;\n }\n\n async checkVideoInput(videoInputDevice: Device): Promise {\n try {\n await this.meetingSession.audioVideo.startVideoInput(videoInputDevice);\n await this.meetingSession.audioVideo.stopVideoInput();\n return CheckVideoInputFeedback.Succeeded;\n } catch (error) {\n this.logger.error(`MeetingReadinessChecker: Video check failed with error ${error}`);\n if (error instanceof PermissionDeniedError) {\n return CheckVideoInputFeedback.PermissionDenied;\n }\n return CheckVideoInputFeedback.Failed;\n }\n }\n\n async checkCameraResolution(\n videoInputDevice: MediaDeviceInfo | string,\n width: number,\n height: number\n ): Promise {\n let stream: MediaStream;\n try {\n const videoInputDeviceId = DefaultDeviceController.getIntrinsicDeviceId(\n videoInputDevice\n ) as string;\n const videoConstraint = {\n video: this.calculateVideoConstraint(videoInputDeviceId, width, height),\n };\n stream = await navigator.mediaDevices.getUserMedia(videoConstraint);\n } catch (error) {\n this.logger.error(\n `MeetingReadinessChecker: Camera resolution check with width: ${width} height ${height} failed with error ${error}`\n );\n if (error && error.name === 'OverconstrainedError') {\n return CheckCameraResolutionFeedback.ResolutionNotSupported;\n }\n if (error && error.name === 'NotAllowedError') {\n return CheckCameraResolutionFeedback.PermissionDenied;\n }\n return CheckCameraResolutionFeedback.Failed;\n } finally {\n if (stream) {\n stream.getTracks().forEach(function (track) {\n track.stop();\n });\n }\n }\n return CheckCameraResolutionFeedback.Succeeded;\n }\n\n private calculateVideoConstraint(\n videoInputDeviceId: string,\n width: number,\n height: number\n ): MediaTrackConstraints {\n const dimension = this.browserBehavior.requiresResolutionAlignment(width, height);\n const trackConstraints: MediaTrackConstraints = {};\n if (this.browserBehavior.requiresNoExactMediaStreamConstraints()) {\n trackConstraints.deviceId = videoInputDeviceId;\n trackConstraints.width = width;\n trackConstraints.height = height;\n } else {\n trackConstraints.deviceId = { exact: videoInputDeviceId };\n trackConstraints.width = { exact: dimension[0] };\n trackConstraints.height = { exact: dimension[1] };\n }\n return trackConstraints;\n }\n\n async checkContentShareConnectivity(\n sourceId?: string\n ): Promise {\n let isContentShareStarted = false;\n let isAudioVideoStarted = false;\n\n const contentShareObserver: ContentShareObserver = {\n contentShareDidStart: () => {\n isContentShareStarted = true;\n },\n };\n const observer: AudioVideoObserver = {\n audioVideoDidStart: () => {\n isAudioVideoStarted = true;\n },\n };\n\n try {\n this.meetingSession.audioVideo.addObserver(observer);\n this.meetingSession.audioVideo.start();\n\n this.meetingSession.audioVideo.addContentShareObserver(contentShareObserver);\n await this.meetingSession.audioVideo.startContentShareFromScreenCapture(sourceId);\n\n await this.executeTimeoutTask(async () => {\n return isAudioVideoStarted && isContentShareStarted;\n });\n\n if (!isAudioVideoStarted) {\n return CheckContentShareConnectivityFeedback.ConnectionFailed;\n }\n await this.stopMeeting();\n return isContentShareStarted\n ? CheckContentShareConnectivityFeedback.Succeeded\n : CheckContentShareConnectivityFeedback.TimedOut;\n } catch (error) {\n this.logger.error(`MeetingReadinessChecker: Content share check failed with error ${error}`);\n if (error.name === 'NotAllowedError') {\n return CheckContentShareConnectivityFeedback.PermissionDenied;\n } else {\n return CheckContentShareConnectivityFeedback.Failed;\n }\n } finally {\n this.meetingSession.audioVideo.removeObserver(observer);\n this.meetingSession.audioVideo.stopContentShare();\n this.meetingSession.audioVideo.removeContentShareObserver(contentShareObserver);\n }\n }\n\n async checkAudioConnectivity(audioInputDevice: Device): Promise {\n let audioPresence = false;\n const audioConnectivityMetrics = {\n packetsReceived: 0,\n };\n const audioVideo = this.meetingSession.audioVideo;\n\n const checkAudioConnectivityMetricsObserver: AudioVideoObserver = {\n metricsDidReceive(clientMetricReport: ClientMetricReport) {\n clientMetricReport.getRTCStatsReport().forEach(report => {\n // TODO: remove mediaType in next version as it is deprecated\n // mediaType was deprecated and replaced with kind\n if (\n report.type === 'inbound-rtp' &&\n (report.mediaType === 'audio' || report.kind === 'audio')\n ) {\n audioConnectivityMetrics.packetsReceived = report.packetsReceived;\n }\n });\n },\n };\n\n const attendeePresenceHandler = (\n attendeeId: string,\n present: boolean,\n _externalUserId: string,\n _dropped: boolean\n ): void => {\n if (attendeeId === this.meetingSession.configuration.credentials.attendeeId && present) {\n audioPresence = true;\n }\n };\n try {\n await audioVideo.startAudioInput(audioInputDevice);\n } catch (error) {\n this.logger.error(\n `MeetingReadinessChecker: Failed to get audio input device with error ${error}`\n );\n if (error instanceof PermissionDeniedError) {\n return CheckAudioConnectivityFeedback.AudioInputPermissionDenied;\n }\n return CheckAudioConnectivityFeedback.AudioInputRequestFailed;\n }\n audioVideo.realtimeSubscribeToAttendeeIdPresence(attendeePresenceHandler);\n audioVideo.addObserver(checkAudioConnectivityMetricsObserver);\n\n if (!(await this.startMeeting())) {\n audioVideo.removeObserver(checkAudioConnectivityMetricsObserver);\n audioVideo.realtimeUnsubscribeToAttendeeIdPresence(attendeePresenceHandler);\n await this.meetingSession.audioVideo.stopAudioInput();\n return CheckAudioConnectivityFeedback.ConnectionFailed;\n }\n await this.executeTimeoutTask(async () => {\n return this.isAudioConnectionSuccessful(audioPresence, audioConnectivityMetrics);\n });\n audioVideo.removeObserver(checkAudioConnectivityMetricsObserver);\n audioVideo.realtimeUnsubscribeToAttendeeIdPresence(attendeePresenceHandler);\n await this.stopMeeting();\n await this.meetingSession.audioVideo.stopAudioInput();\n return this.isAudioConnectionSuccessful(audioPresence, audioConnectivityMetrics)\n ? CheckAudioConnectivityFeedback.Succeeded\n : CheckAudioConnectivityFeedback.AudioNotReceived;\n }\n\n async checkVideoConnectivity(videoInputDevice: Device): Promise {\n const audioVideo = this.meetingSession.audioVideo;\n let packetsSent = 0;\n const observer: AudioVideoObserver = {\n metricsDidReceive(clientMetricReport: ClientMetricReport) {\n const rawStats = clientMetricReport.getRTCStatsReport();\n rawStats.forEach(report => {\n // TODO: remove mediaType in next version as it is deprecated\n if (\n report.type === 'outbound-rtp' &&\n (report.mediaType === 'video' || report.kind === 'video')\n ) {\n packetsSent = report.packetsSent;\n }\n });\n },\n };\n try {\n await audioVideo.startVideoInput(videoInputDevice);\n } catch (error) {\n this.logger.error(\n `MeetingReadinessChecker: Failed to get video input device with error ${error}`\n );\n if (error instanceof PermissionDeniedError) {\n return CheckVideoConnectivityFeedback.VideoInputPermissionDenied;\n }\n return CheckVideoConnectivityFeedback.VideoInputRequestFailed;\n }\n\n audioVideo.addObserver(observer);\n if (!(await this.startMeeting())) {\n return CheckVideoConnectivityFeedback.ConnectionFailed;\n }\n\n audioVideo.startLocalVideoTile();\n await this.executeTimeoutTask(async () => {\n return packetsSent > 0;\n });\n await audioVideo.stopVideoInput();\n await this.stopMeeting();\n audioVideo.removeObserver(observer);\n if (packetsSent <= 0) {\n return CheckVideoConnectivityFeedback.VideoNotSent;\n }\n return CheckVideoConnectivityFeedback.Succeeded;\n }\n\n async checkNetworkUDPConnectivity(): Promise {\n let candidatePairSucceed = false;\n const observer: AudioVideoObserver = {\n metricsDidReceive(clientMetricReport: ClientMetricReport) {\n const rawStats = clientMetricReport.getRTCStatsReport();\n rawStats.forEach(report => {\n if (report.type === 'candidate-pair' && report.state === 'succeeded') {\n candidatePairSucceed = true;\n }\n });\n },\n };\n try {\n this.originalURLRewriter = this.meetingSession.configuration.urls.urlRewriter;\n } catch (error) {\n this.logger.error(`MeetingSessionConfiguration.urls doesn't exist. Error: ${error}`);\n return CheckNetworkUDPConnectivityFeedback.MeetingSessionURLsNotInitialized;\n }\n this.meetingSession.configuration.urls.urlRewriter = (uri: string) => {\n const transformedUri = this.originalURLRewriter(uri);\n if (transformedUri.includes('transport=tcp')) {\n return '';\n }\n return transformedUri;\n };\n\n const audioVideo = this.meetingSession.audioVideo;\n audioVideo.addObserver(observer);\n if (!(await this.startMeeting())) {\n this.meetingSession.configuration.urls.urlRewriter = this.originalURLRewriter;\n return CheckNetworkUDPConnectivityFeedback.ConnectionFailed;\n }\n await this.executeTimeoutTask(async () => {\n return candidatePairSucceed;\n });\n this.meetingSession.configuration.urls.urlRewriter = this.originalURLRewriter;\n await this.stopMeeting();\n audioVideo.removeObserver(observer);\n if (!candidatePairSucceed) {\n return CheckNetworkUDPConnectivityFeedback.ICENegotiationFailed;\n }\n return CheckNetworkUDPConnectivityFeedback.Succeeded;\n }\n\n async checkNetworkTCPConnectivity(): Promise {\n let candidatePairSucceed = false;\n const observer: AudioVideoObserver = {\n metricsDidReceive(clientMetricReport: ClientMetricReport) {\n const rawStats = clientMetricReport.getRTCStatsReport();\n rawStats.forEach(report => {\n if (report.type === 'candidate-pair' && report.state === 'succeeded') {\n candidatePairSucceed = true;\n }\n });\n },\n };\n try {\n this.originalURLRewriter = this.meetingSession.configuration.urls.urlRewriter;\n } catch (error) {\n this.logger.error(`MeetingSessionConfiguration.urls doesn't exist. Error: ${error}`);\n return CheckNetworkTCPConnectivityFeedback.MeetingSessionURLsNotInitialized;\n }\n\n this.meetingSession.configuration.urls.urlRewriter = (uri: string) => {\n const transformedUri = this.originalURLRewriter(uri);\n if (transformedUri.includes('transport=udp')) {\n return '';\n }\n return transformedUri;\n };\n\n const audioVideo = this.meetingSession.audioVideo;\n audioVideo.addObserver(observer);\n if (!(await this.startMeeting())) {\n this.meetingSession.configuration.urls.urlRewriter = this.originalURLRewriter;\n return CheckNetworkTCPConnectivityFeedback.ConnectionFailed;\n }\n await this.executeTimeoutTask(async () => {\n return candidatePairSucceed;\n });\n this.meetingSession.configuration.urls.urlRewriter = this.originalURLRewriter;\n await this.stopMeeting();\n audioVideo.removeObserver(observer);\n if (!candidatePairSucceed) {\n return CheckNetworkTCPConnectivityFeedback.ICENegotiationFailed;\n }\n return CheckNetworkTCPConnectivityFeedback.Succeeded;\n }\n\n private async startMeeting(): Promise {\n let isStarted = false;\n const observer: AudioVideoObserver = {\n audioVideoDidStart: () => {\n isStarted = true;\n },\n };\n this.meetingSession.audioVideo.addObserver(observer);\n this.meetingSession.audioVideo.start();\n await this.executeTimeoutTask(async () => {\n return isStarted;\n });\n this.meetingSession.audioVideo.removeObserver(observer);\n return isStarted;\n }\n\n private async stopMeeting(): Promise {\n let isStopped = false;\n const observer: AudioVideoObserver = {\n audioVideoDidStop: (_sessionStatus: MeetingSessionStatus) => {\n isStopped = true;\n },\n };\n this.meetingSession.audioVideo.addObserver(observer);\n this.meetingSession.audioVideo.stop();\n await this.executeTimeoutTask(async () => {\n return isStopped;\n });\n this.meetingSession.audioVideo.removeObserver(observer);\n return isStopped;\n }\n\n private async executeTimeoutTask(conditionCheck: () => Promise): Promise {\n let isSuccess = false;\n class CheckForConditionTask extends BaseTask {\n private isCancelled = false;\n\n constructor(logger: Logger, private waitDurationMs: number) {\n super(logger);\n }\n\n cancel(): void {\n this.isCancelled = true;\n }\n\n async run(): Promise {\n while (!this.isCancelled) {\n if (await conditionCheck()) {\n isSuccess = true;\n break;\n }\n await DefaultMeetingReadinessChecker.delay(this.waitDurationMs);\n }\n }\n }\n const timeoutTask = new TimeoutTask(\n this.logger,\n new CheckForConditionTask(this.logger, this.configuration.waitDurationMs),\n this.configuration.timeoutMs\n );\n await timeoutTask.run();\n return isSuccess;\n }\n\n private isAudioConnectionSuccessful(\n audioPresence: boolean,\n audioConnectivityMetrics: { packetsReceived: number }\n ): boolean {\n return audioPresence && audioConnectivityMetrics.packetsReceived > 0;\n }\n}\n","var util = require('../util');\n\nfunction JsonBuilder() { }\n\nJsonBuilder.prototype.build = function(value, shape) {\n return JSON.stringify(translate(value, shape));\n};\n\nfunction translate(value, shape) {\n if (!shape || value === undefined || value === null) return undefined;\n\n switch (shape.type) {\n case 'structure': return translateStructure(value, shape);\n case 'map': return translateMap(value, shape);\n case 'list': return translateList(value, shape);\n default: return translateScalar(value, shape);\n }\n}\n\nfunction translateStructure(structure, shape) {\n if (shape.isDocument) {\n return structure;\n }\n var struct = {};\n util.each(structure, function(name, value) {\n var memberShape = shape.members[name];\n if (memberShape) {\n if (memberShape.location !== 'body') return;\n var locationName = memberShape.isLocationName ? memberShape.name : name;\n var result = translate(value, memberShape);\n if (result !== undefined) struct[locationName] = result;\n }\n });\n return struct;\n}\n\nfunction translateList(list, shape) {\n var out = [];\n util.arrayEach(list, function(value) {\n var result = translate(value, shape.member);\n if (result !== undefined) out.push(result);\n });\n return out;\n}\n\nfunction translateMap(map, shape) {\n var out = {};\n util.each(map, function(key, value) {\n var result = translate(value, shape.value);\n if (result !== undefined) out[key] = result;\n });\n return out;\n}\n\nfunction translateScalar(value, shape) {\n return shape.toWireFormat(value);\n}\n\n/**\n * @api private\n */\nmodule.exports = JsonBuilder;\n","'use strict';\n\n// Note: adler32 takes 12% for level 0 and 2% for level 6.\n// It isn't worth it to make additional optimizations as in original.\n// Small size is preferable.\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nconst adler32 = (adler, buf, len, pos) => {\n let s1 = (adler & 0xffff) |0,\n s2 = ((adler >>> 16) & 0xffff) |0,\n n = 0;\n\n while (len !== 0) {\n // Set limit ~ twice less than 5552, to keep\n // s2 in 31-bits, because we force signed ints.\n // in other case %= will fail.\n n = len > 2000 ? 2000 : len;\n len -= n;\n\n do {\n s1 = (s1 + buf[pos++]) |0;\n s2 = (s2 + s1) |0;\n } while (--n);\n\n s1 %= 65521;\n s2 %= 65521;\n }\n\n return (s1 | (s2 << 16)) |0;\n};\n\n\nmodule.exports = adler32;\n","var AWS = require('../core');\nvar v4Credentials = require('../signers/v4_credentials');\nvar resolveRegionalEndpointsFlag = require('../config_regional_endpoint');\nvar s3util = require('./s3util');\nvar regionUtil = require('../region_config');\n\n// Pull in managed upload extension\nrequire('../s3/managed_upload');\n\n/**\n * @api private\n */\nvar operationsWith200StatusCodeError = {\n 'completeMultipartUpload': true,\n 'copyObject': true,\n 'uploadPartCopy': true\n};\n\n/**\n * @api private\n */\n var regionRedirectErrorCodes = [\n 'AuthorizationHeaderMalformed', // non-head operations on virtual-hosted global bucket endpoints\n 'BadRequest', // head operations on virtual-hosted global bucket endpoints\n 'PermanentRedirect', // non-head operations on path-style or regional endpoints\n 301 // head operations on path-style or regional endpoints\n ];\n\nvar OBJECT_LAMBDA_SERVICE = 's3-object-lambda';\n\nAWS.util.update(AWS.S3.prototype, {\n /**\n * @api private\n */\n getSignatureVersion: function getSignatureVersion(request) {\n var defaultApiVersion = this.api.signatureVersion;\n var userDefinedVersion = this._originalConfig ? this._originalConfig.signatureVersion : null;\n var regionDefinedVersion = this.config.signatureVersion;\n var isPresigned = request ? request.isPresigned() : false;\n /*\n 1) User defined version specified:\n a) always return user defined version\n 2) No user defined version specified:\n a) If not using presigned urls, default to V4\n b) If using presigned urls, default to lowest version the region supports\n */\n if (userDefinedVersion) {\n userDefinedVersion = userDefinedVersion === 'v2' ? 's3' : userDefinedVersion;\n return userDefinedVersion;\n }\n if (isPresigned !== true) {\n defaultApiVersion = 'v4';\n } else if (regionDefinedVersion) {\n defaultApiVersion = regionDefinedVersion;\n }\n return defaultApiVersion;\n },\n\n /**\n * @api private\n */\n getSigningName: function getSigningName(req) {\n if (req && req.operation === 'writeGetObjectResponse') {\n return OBJECT_LAMBDA_SERVICE;\n }\n\n var _super = AWS.Service.prototype.getSigningName;\n return (req && req._parsedArn && req._parsedArn.service)\n ? req._parsedArn.service\n : _super.call(this);\n },\n\n /**\n * @api private\n */\n getSignerClass: function getSignerClass(request) {\n var signatureVersion = this.getSignatureVersion(request);\n return AWS.Signers.RequestSigner.getVersion(signatureVersion);\n },\n\n /**\n * @api private\n */\n validateService: function validateService() {\n var msg;\n var messages = [];\n\n // default to us-east-1 when no region is provided\n if (!this.config.region) this.config.region = 'us-east-1';\n\n if (!this.config.endpoint && this.config.s3BucketEndpoint) {\n messages.push('An endpoint must be provided when configuring ' +\n '`s3BucketEndpoint` to true.');\n }\n if (messages.length === 1) {\n msg = messages[0];\n } else if (messages.length > 1) {\n msg = 'Multiple configuration errors:\\n' + messages.join('\\n');\n }\n if (msg) {\n throw AWS.util.error(new Error(),\n {name: 'InvalidEndpoint', message: msg});\n }\n },\n\n /**\n * @api private\n */\n shouldDisableBodySigning: function shouldDisableBodySigning(request) {\n var signerClass = this.getSignerClass();\n if (this.config.s3DisableBodySigning === true && signerClass === AWS.Signers.V4\n && request.httpRequest.endpoint.protocol === 'https:') {\n return true;\n }\n return false;\n },\n\n /**\n * @api private\n */\n setupRequestListeners: function setupRequestListeners(request) {\n request.addListener('validateResponse', this.setExpiresString);\n var prependListener = true;\n request.addListener('validate', this.validateScheme);\n request.addListener('validate', this.validateBucketName, prependListener);\n request.addListener('validate', this.optInUsEast1RegionalEndpoint, prependListener);\n\n request.removeListener('validate',\n AWS.EventListeners.Core.VALIDATE_REGION);\n request.addListener('build', this.addContentType);\n request.addListener('build', this.computeContentMd5);\n request.addListener('build', this.computeSseCustomerKeyMd5);\n request.addListener('build', this.populateURI);\n request.addListener('afterBuild', this.addExpect100Continue);\n request.addListener('extractError', this.extractError);\n request.addListener('extractData', AWS.util.hoistPayloadMember);\n request.addListener('extractData', this.extractData);\n request.addListener('extractData', this.extractErrorFrom200Response);\n request.addListener('beforePresign', this.prepareSignedUrl);\n if (this.shouldDisableBodySigning(request)) {\n request.removeListener('afterBuild', AWS.EventListeners.Core.COMPUTE_SHA256);\n request.addListener('afterBuild', this.disableBodySigning);\n }\n //deal with ARNs supplied to Bucket\n if (request.operation !== 'createBucket' && s3util.isArnInParam(request, 'Bucket')) {\n // avoid duplicate parsing in the future\n request._parsedArn = AWS.util.ARN.parse(request.params.Bucket);\n\n request.removeListener('validate', this.validateBucketName);\n request.removeListener('build', this.populateURI);\n if (request._parsedArn.service === 's3') {\n request.addListener('validate', s3util.validateS3AccessPointArn);\n request.addListener('validate', this.validateArnResourceType);\n request.addListener('validate', this.validateArnRegion);\n } else if (request._parsedArn.service === 's3-outposts') {\n request.addListener('validate', s3util.validateOutpostsAccessPointArn);\n request.addListener('validate', s3util.validateOutpostsArn);\n request.addListener('validate', s3util.validateArnRegion);\n }\n request.addListener('validate', s3util.validateArnAccount);\n request.addListener('validate', s3util.validateArnService);\n request.addListener('build', this.populateUriFromAccessPointArn);\n request.addListener('build', s3util.validatePopulateUriFromArn);\n return;\n }\n //listeners regarding region inference\n request.addListener('validate', this.validateBucketEndpoint);\n request.addListener('validate', this.correctBucketRegionFromCache);\n request.onAsync('extractError', this.requestBucketRegion);\n if (AWS.util.isBrowser()) {\n request.onAsync('retry', this.reqRegionForNetworkingError);\n }\n },\n\n /**\n * @api private\n */\n validateScheme: function(req) {\n var params = req.params,\n scheme = req.httpRequest.endpoint.protocol,\n sensitive = params.SSECustomerKey || params.CopySourceSSECustomerKey;\n if (sensitive && scheme !== 'https:') {\n var msg = 'Cannot send SSE keys over HTTP. Set \\'sslEnabled\\'' +\n 'to \\'true\\' in your configuration';\n throw AWS.util.error(new Error(),\n { code: 'ConfigError', message: msg });\n }\n },\n\n /**\n * @api private\n */\n validateBucketEndpoint: function(req) {\n if (!req.params.Bucket && req.service.config.s3BucketEndpoint) {\n var msg = 'Cannot send requests to root API with `s3BucketEndpoint` set.';\n throw AWS.util.error(new Error(),\n { code: 'ConfigError', message: msg });\n }\n },\n\n /**\n * @api private\n */\n validateArnRegion: function validateArnRegion(req) {\n s3util.validateArnRegion(req, { allowFipsEndpoint: true });\n },\n\n /**\n * Validate resource-type supplied in S3 ARN\n */\n validateArnResourceType: function validateArnResourceType(req) {\n var resource = req._parsedArn.resource;\n\n if (\n resource.indexOf('accesspoint:') !== 0 &&\n resource.indexOf('accesspoint/') !== 0\n ) {\n throw AWS.util.error(new Error(), {\n code: 'InvalidARN',\n message: 'ARN resource should begin with \\'accesspoint/\\''\n });\n }\n },\n\n /**\n * @api private\n */\n validateBucketName: function validateBucketName(req) {\n var service = req.service;\n var signatureVersion = service.getSignatureVersion(req);\n var bucket = req.params && req.params.Bucket;\n var key = req.params && req.params.Key;\n var slashIndex = bucket && bucket.indexOf('/');\n if (bucket && slashIndex >= 0) {\n if (typeof key === 'string' && slashIndex > 0) {\n req.params = AWS.util.copy(req.params);\n // Need to include trailing slash to match sigv2 behavior\n var prefix = bucket.substr(slashIndex + 1) || '';\n req.params.Key = prefix + '/' + key;\n req.params.Bucket = bucket.substr(0, slashIndex);\n } else if (signatureVersion === 'v4') {\n var msg = 'Bucket names cannot contain forward slashes. Bucket: ' + bucket;\n throw AWS.util.error(new Error(),\n { code: 'InvalidBucket', message: msg });\n }\n }\n },\n\n /**\n * @api private\n */\n isValidAccelerateOperation: function isValidAccelerateOperation(operation) {\n var invalidOperations = [\n 'createBucket',\n 'deleteBucket',\n 'listBuckets'\n ];\n return invalidOperations.indexOf(operation) === -1;\n },\n\n /**\n * When us-east-1 region endpoint configuration is set, in stead of sending request to\n * global endpoint(e.g. 's3.amazonaws.com'), we will send request to\n * 's3.us-east-1.amazonaws.com'.\n * @api private\n */\n optInUsEast1RegionalEndpoint: function optInUsEast1RegionalEndpoint(req) {\n var service = req.service;\n var config = service.config;\n config.s3UsEast1RegionalEndpoint = resolveRegionalEndpointsFlag(service._originalConfig, {\n env: 'AWS_S3_US_EAST_1_REGIONAL_ENDPOINT',\n sharedConfig: 's3_us_east_1_regional_endpoint',\n clientConfig: 's3UsEast1RegionalEndpoint'\n });\n if (\n !(service._originalConfig || {}).endpoint &&\n req.httpRequest.region === 'us-east-1' &&\n config.s3UsEast1RegionalEndpoint === 'regional' &&\n req.httpRequest.endpoint.hostname.indexOf('s3.amazonaws.com') >= 0\n ) {\n var insertPoint = config.endpoint.indexOf('.amazonaws.com');\n var regionalEndpoint = config.endpoint.substring(0, insertPoint) +\n '.us-east-1' + config.endpoint.substring(insertPoint);\n req.httpRequest.updateEndpoint(regionalEndpoint);\n }\n },\n\n /**\n * S3 prefers dns-compatible bucket names to be moved from the uri path\n * to the hostname as a sub-domain. This is not possible, even for dns-compat\n * buckets when using SSL and the bucket name contains a dot ('.'). The\n * ssl wildcard certificate is only 1-level deep.\n *\n * @api private\n */\n populateURI: function populateURI(req) {\n var httpRequest = req.httpRequest;\n var b = req.params.Bucket;\n var service = req.service;\n var endpoint = httpRequest.endpoint;\n if (b) {\n if (!service.pathStyleBucketName(b)) {\n if (service.config.useAccelerateEndpoint && service.isValidAccelerateOperation(req.operation)) {\n if (service.config.useDualstackEndpoint) {\n endpoint.hostname = b + '.s3-accelerate.dualstack.amazonaws.com';\n } else {\n endpoint.hostname = b + '.s3-accelerate.amazonaws.com';\n }\n } else if (!service.config.s3BucketEndpoint) {\n endpoint.hostname =\n b + '.' + endpoint.hostname;\n }\n\n var port = endpoint.port;\n if (port !== 80 && port !== 443) {\n endpoint.host = endpoint.hostname + ':' +\n endpoint.port;\n } else {\n endpoint.host = endpoint.hostname;\n }\n\n httpRequest.virtualHostedBucket = b; // needed for signing the request\n service.removeVirtualHostedBucketFromPath(req);\n }\n }\n },\n\n /**\n * Takes the bucket name out of the path if bucket is virtual-hosted\n *\n * @api private\n */\n removeVirtualHostedBucketFromPath: function removeVirtualHostedBucketFromPath(req) {\n var httpRequest = req.httpRequest;\n var bucket = httpRequest.virtualHostedBucket;\n if (bucket && httpRequest.path) {\n if (req.params && req.params.Key) {\n var encodedS3Key = '/' + AWS.util.uriEscapePath(req.params.Key);\n if (httpRequest.path.indexOf(encodedS3Key) === 0 && (httpRequest.path.length === encodedS3Key.length || httpRequest.path[encodedS3Key.length] === '?')) {\n //path only contains key or path contains only key and querystring\n return;\n }\n }\n httpRequest.path = httpRequest.path.replace(new RegExp('/' + bucket), '');\n if (httpRequest.path[0] !== '/') {\n httpRequest.path = '/' + httpRequest.path;\n }\n }\n },\n\n /**\n * When user supply an access point ARN in the Bucket parameter, we need to\n * populate the URI according to the ARN.\n */\n populateUriFromAccessPointArn: function populateUriFromAccessPointArn(req) {\n var accessPointArn = req._parsedArn;\n\n var isOutpostArn = accessPointArn.service === 's3-outposts';\n var isObjectLambdaArn = accessPointArn.service === 's3-object-lambda';\n\n var outpostsSuffix = isOutpostArn ? '.' + accessPointArn.outpostId: '';\n var serviceName = isOutpostArn ? 's3-outposts': 's3-accesspoint';\n var fipsSuffix = !isOutpostArn && req.service.config.useFipsEndpoint ? '-fips': '';\n var dualStackSuffix = !isOutpostArn &&\n req.service.config.useDualstackEndpoint ? '.dualstack' : '';\n\n var endpoint = req.httpRequest.endpoint;\n var dnsSuffix = regionUtil.getEndpointSuffix(accessPointArn.region);\n var useArnRegion = req.service.config.s3UseArnRegion;\n\n endpoint.hostname = [\n accessPointArn.accessPoint + '-' + accessPointArn.accountId + outpostsSuffix,\n serviceName + fipsSuffix + dualStackSuffix,\n useArnRegion ? accessPointArn.region : req.service.config.region,\n dnsSuffix\n ].join('.');\n\n if (isObjectLambdaArn) {\n // should be in the format: \"accesspoint/${accesspointName}\"\n var serviceName = 's3-object-lambda';\n var accesspointName = accessPointArn.resource.split('/')[1];\n var fipsSuffix = req.service.config.useFipsEndpoint ? '-fips': '';\n endpoint.hostname = [\n accesspointName + '-' + accessPointArn.accountId,\n serviceName + fipsSuffix,\n useArnRegion ? accessPointArn.region : req.service.config.region,\n dnsSuffix\n ].join('.');\n }\n endpoint.host = endpoint.hostname;\n var encodedArn = AWS.util.uriEscape(req.params.Bucket);\n var path = req.httpRequest.path;\n //remove the Bucket value from path\n req.httpRequest.path = path.replace(new RegExp('/' + encodedArn), '');\n if (req.httpRequest.path[0] !== '/') {\n req.httpRequest.path = '/' + req.httpRequest.path;\n }\n req.httpRequest.region = accessPointArn.region; //region used to sign\n },\n\n /**\n * Adds Expect: 100-continue header if payload is greater-or-equal 1MB\n * @api private\n */\n addExpect100Continue: function addExpect100Continue(req) {\n var len = req.httpRequest.headers['Content-Length'];\n if (AWS.util.isNode() && (len >= 1024 * 1024 || req.params.Body instanceof AWS.util.stream.Stream)) {\n req.httpRequest.headers['Expect'] = '100-continue';\n }\n },\n\n /**\n * Adds a default content type if none is supplied.\n *\n * @api private\n */\n addContentType: function addContentType(req) {\n var httpRequest = req.httpRequest;\n if (httpRequest.method === 'GET' || httpRequest.method === 'HEAD') {\n // Content-Type is not set in GET/HEAD requests\n delete httpRequest.headers['Content-Type'];\n return;\n }\n\n if (!httpRequest.headers['Content-Type']) { // always have a Content-Type\n httpRequest.headers['Content-Type'] = 'application/octet-stream';\n }\n\n var contentType = httpRequest.headers['Content-Type'];\n if (AWS.util.isBrowser()) {\n if (typeof httpRequest.body === 'string' && !contentType.match(/;\\s*charset=/)) {\n var charset = '; charset=UTF-8';\n httpRequest.headers['Content-Type'] += charset;\n } else {\n var replaceFn = function(_, prefix, charsetName) {\n return prefix + charsetName.toUpperCase();\n };\n\n httpRequest.headers['Content-Type'] =\n contentType.replace(/(;\\s*charset=)(.+)$/, replaceFn);\n }\n }\n },\n\n /**\n * Checks whether checksums should be computed for the request if it's not\n * already set by {AWS.EventListeners.Core.COMPUTE_CHECKSUM}. It depends on\n * whether {AWS.Config.computeChecksums} is set.\n *\n * @param req [AWS.Request] the request to check against\n * @return [Boolean] whether to compute checksums for a request.\n * @api private\n */\n willComputeChecksums: function willComputeChecksums(req) {\n var rules = req.service.api.operations[req.operation].input.members;\n var body = req.httpRequest.body;\n var needsContentMD5 = req.service.config.computeChecksums &&\n rules.ContentMD5 &&\n !req.params.ContentMD5 &&\n body &&\n (AWS.util.Buffer.isBuffer(req.httpRequest.body) || typeof req.httpRequest.body === 'string');\n\n // Sha256 signing disabled, and not a presigned url\n if (needsContentMD5 && req.service.shouldDisableBodySigning(req) && !req.isPresigned()) {\n return true;\n }\n\n // SigV2 and presign, for backwards compatibility purpose.\n if (needsContentMD5 && this.getSignatureVersion(req) === 's3' && req.isPresigned()) {\n return true;\n }\n\n return false;\n },\n\n /**\n * A listener that computes the Content-MD5 and sets it in the header.\n * This listener is to support S3-specific features like\n * s3DisableBodySigning and SigV2 presign. Content MD5 logic for SigV4 is\n * handled in AWS.EventListeners.Core.COMPUTE_CHECKSUM\n *\n * @api private\n */\n computeContentMd5: function computeContentMd5(req) {\n if (req.service.willComputeChecksums(req)) {\n var md5 = AWS.util.crypto.md5(req.httpRequest.body, 'base64');\n req.httpRequest.headers['Content-MD5'] = md5;\n }\n },\n\n /**\n * @api private\n */\n computeSseCustomerKeyMd5: function computeSseCustomerKeyMd5(req) {\n var keys = {\n SSECustomerKey: 'x-amz-server-side-encryption-customer-key-MD5',\n CopySourceSSECustomerKey: 'x-amz-copy-source-server-side-encryption-customer-key-MD5'\n };\n AWS.util.each(keys, function(key, header) {\n if (req.params[key]) {\n var value = AWS.util.crypto.md5(req.params[key], 'base64');\n req.httpRequest.headers[header] = value;\n }\n });\n },\n\n /**\n * Returns true if the bucket name should be left in the URI path for\n * a request to S3. This function takes into account the current\n * endpoint protocol (e.g. http or https).\n *\n * @api private\n */\n pathStyleBucketName: function pathStyleBucketName(bucketName) {\n // user can force path style requests via the configuration\n if (this.config.s3ForcePathStyle) return true;\n if (this.config.s3BucketEndpoint) return false;\n\n if (s3util.dnsCompatibleBucketName(bucketName)) {\n return (this.config.sslEnabled && bucketName.match(/\\./)) ? true : false;\n } else {\n return true; // not dns compatible names must always use path style\n }\n },\n\n /**\n * For COPY operations, some can be error even with status code 200.\n * SDK treats the response as exception when response body indicates\n * an exception or body is empty.\n *\n * @api private\n */\n extractErrorFrom200Response: function extractErrorFrom200Response(resp) {\n var service = this.service ? this.service : this;\n if (!service.is200Error(resp) && !operationsWith200StatusCodeError[resp.request.operation]) {\n return;\n }\n var httpResponse = resp.httpResponse;\n var bodyString = httpResponse.body && httpResponse.body.toString() || '';\n if (bodyString && bodyString.indexOf('') === bodyString.length - 8) {\n // Response body with '...' indicates an exception.\n // Get S3 client object. In ManagedUpload, this.service refers to\n // S3 client object.\n resp.data = null;\n service.extractError(resp);\n resp.error.is200Error = true;\n throw resp.error;\n } else if (!httpResponse.body || !bodyString.match(/<[\\w_]/)) {\n // When body is empty or incomplete, S3 might stop the request on detecting client\n // side aborting the request.\n resp.data = null;\n throw AWS.util.error(new Error(), {\n code: 'InternalError',\n message: 'S3 aborted request'\n });\n }\n },\n\n /**\n * @api private\n * @param resp - to evaluate.\n * @return true if the response has status code 200 but is an error.\n */\n is200Error: function is200Error(resp) {\n var code = resp && resp.httpResponse && resp.httpResponse.statusCode;\n if (code !== 200) {\n return false;\n }\n try {\n var req = resp.request;\n var outputMembers = req.service.api.operations[req.operation].output.members;\n var keys = Object.keys(outputMembers);\n for (var i = 0; i < keys.length; ++i) {\n var member = outputMembers[keys[i]];\n if (member.type === 'binary' && member.isStreaming) {\n return false;\n }\n }\n\n var body = resp.httpResponse.body;\n if (body && body.byteLength !== undefined) {\n if (body.byteLength < 15 || body.byteLength > 3000) {\n // body is too short or long to be an error message.\n return false;\n }\n }\n if (!body) {\n return false;\n }\n var bodyString = body.toString();\n if (bodyString.indexOf('') === bodyString.length - 8) {\n return true;\n }\n } catch (e) {\n return false;\n }\n return false;\n },\n\n /**\n * @return [Boolean] whether the error can be retried\n * @api private\n */\n retryableError: function retryableError(error, request) {\n if (error.is200Error ||\n (operationsWith200StatusCodeError[request.operation] && error.statusCode === 200)) {\n return true;\n } else if (request._requestRegionForBucket &&\n request.service.bucketRegionCache[request._requestRegionForBucket]) {\n return false;\n } else if (error && error.code === 'RequestTimeout') {\n return true;\n } else if (error &&\n regionRedirectErrorCodes.indexOf(error.code) != -1 &&\n error.region && error.region != request.httpRequest.region) {\n request.httpRequest.region = error.region;\n if (error.statusCode === 301) {\n request.service.updateReqBucketRegion(request);\n }\n return true;\n } else {\n var _super = AWS.Service.prototype.retryableError;\n return _super.call(this, error, request);\n }\n },\n\n /**\n * Updates httpRequest with region. If region is not provided, then\n * the httpRequest will be updated based on httpRequest.region\n *\n * @api private\n */\n updateReqBucketRegion: function updateReqBucketRegion(request, region) {\n var httpRequest = request.httpRequest;\n if (typeof region === 'string' && region.length) {\n httpRequest.region = region;\n }\n if (!httpRequest.endpoint.host.match(/s3(?!-accelerate).*\\.amazonaws\\.com$/)) {\n return;\n }\n var service = request.service;\n var s3Config = service.config;\n var s3BucketEndpoint = s3Config.s3BucketEndpoint;\n if (s3BucketEndpoint) {\n delete s3Config.s3BucketEndpoint;\n }\n var newConfig = AWS.util.copy(s3Config);\n delete newConfig.endpoint;\n newConfig.region = httpRequest.region;\n\n httpRequest.endpoint = (new AWS.S3(newConfig)).endpoint;\n service.populateURI(request);\n s3Config.s3BucketEndpoint = s3BucketEndpoint;\n httpRequest.headers.Host = httpRequest.endpoint.host;\n\n if (request._asm.currentState === 'validate') {\n request.removeListener('build', service.populateURI);\n request.addListener('build', service.removeVirtualHostedBucketFromPath);\n }\n },\n\n /**\n * Provides a specialized parser for getBucketLocation -- all other\n * operations are parsed by the super class.\n *\n * @api private\n */\n extractData: function extractData(resp) {\n var req = resp.request;\n if (req.operation === 'getBucketLocation') {\n var match = resp.httpResponse.body.toString().match(/>(.+)<\\/Location/);\n delete resp.data['_'];\n if (match) {\n resp.data.LocationConstraint = match[1];\n } else {\n resp.data.LocationConstraint = '';\n }\n }\n var bucket = req.params.Bucket || null;\n if (req.operation === 'deleteBucket' && typeof bucket === 'string' && !resp.error) {\n req.service.clearBucketRegionCache(bucket);\n } else {\n var headers = resp.httpResponse.headers || {};\n var region = headers['x-amz-bucket-region'] || null;\n if (!region && req.operation === 'createBucket' && !resp.error) {\n var createBucketConfiguration = req.params.CreateBucketConfiguration;\n if (!createBucketConfiguration) {\n region = 'us-east-1';\n } else if (createBucketConfiguration.LocationConstraint === 'EU') {\n region = 'eu-west-1';\n } else {\n region = createBucketConfiguration.LocationConstraint;\n }\n }\n if (region) {\n if (bucket && region !== req.service.bucketRegionCache[bucket]) {\n req.service.bucketRegionCache[bucket] = region;\n }\n }\n }\n req.service.extractRequestIds(resp);\n },\n\n /**\n * Extracts an error object from the http response.\n *\n * @api private\n */\n extractError: function extractError(resp) {\n var codes = {\n 304: 'NotModified',\n 403: 'Forbidden',\n 400: 'BadRequest',\n 404: 'NotFound'\n };\n\n var req = resp.request;\n var code = resp.httpResponse.statusCode;\n var body = resp.httpResponse.body || '';\n\n var headers = resp.httpResponse.headers || {};\n var region = headers['x-amz-bucket-region'] || null;\n var bucket = req.params.Bucket || null;\n var bucketRegionCache = req.service.bucketRegionCache;\n if (region && bucket && region !== bucketRegionCache[bucket]) {\n bucketRegionCache[bucket] = region;\n }\n\n var cachedRegion;\n if (codes[code] && body.length === 0) {\n if (bucket && !region) {\n cachedRegion = bucketRegionCache[bucket] || null;\n if (cachedRegion !== req.httpRequest.region) {\n region = cachedRegion;\n }\n }\n resp.error = AWS.util.error(new Error(), {\n code: codes[code],\n message: null,\n region: region\n });\n } else {\n var data = new AWS.XML.Parser().parse(body.toString());\n\n if (data.Region && !region) {\n region = data.Region;\n if (bucket && region !== bucketRegionCache[bucket]) {\n bucketRegionCache[bucket] = region;\n }\n } else if (bucket && !region && !data.Region) {\n cachedRegion = bucketRegionCache[bucket] || null;\n if (cachedRegion !== req.httpRequest.region) {\n region = cachedRegion;\n }\n }\n\n resp.error = AWS.util.error(new Error(), {\n code: data.Code || code,\n message: data.Message || null,\n region: region\n });\n }\n req.service.extractRequestIds(resp);\n },\n\n /**\n * If region was not obtained synchronously, then send async request\n * to get bucket region for errors resulting from wrong region.\n *\n * @api private\n */\n requestBucketRegion: function requestBucketRegion(resp, done) {\n var error = resp.error;\n var req = resp.request;\n var bucket = req.params.Bucket || null;\n\n if (!error || !bucket || error.region || req.operation === 'listObjects' ||\n (AWS.util.isNode() && req.operation === 'headBucket') ||\n (error.statusCode === 400 && req.operation !== 'headObject') ||\n regionRedirectErrorCodes.indexOf(error.code) === -1) {\n return done();\n }\n var reqOperation = AWS.util.isNode() ? 'headBucket' : 'listObjects';\n var reqParams = {Bucket: bucket};\n if (reqOperation === 'listObjects') reqParams.MaxKeys = 0;\n var regionReq = req.service[reqOperation](reqParams);\n regionReq._requestRegionForBucket = bucket;\n regionReq.send(function() {\n var region = req.service.bucketRegionCache[bucket] || null;\n error.region = region;\n done();\n });\n },\n\n /**\n * For browser only. If NetworkingError received, will attempt to obtain\n * the bucket region.\n *\n * @api private\n */\n reqRegionForNetworkingError: function reqRegionForNetworkingError(resp, done) {\n if (!AWS.util.isBrowser()) {\n return done();\n }\n var error = resp.error;\n var request = resp.request;\n var bucket = request.params.Bucket;\n if (!error || error.code !== 'NetworkingError' || !bucket ||\n request.httpRequest.region === 'us-east-1') {\n return done();\n }\n var service = request.service;\n var bucketRegionCache = service.bucketRegionCache;\n var cachedRegion = bucketRegionCache[bucket] || null;\n\n if (cachedRegion && cachedRegion !== request.httpRequest.region) {\n service.updateReqBucketRegion(request, cachedRegion);\n done();\n } else if (!s3util.dnsCompatibleBucketName(bucket)) {\n service.updateReqBucketRegion(request, 'us-east-1');\n if (bucketRegionCache[bucket] !== 'us-east-1') {\n bucketRegionCache[bucket] = 'us-east-1';\n }\n done();\n } else if (request.httpRequest.virtualHostedBucket) {\n var getRegionReq = service.listObjects({Bucket: bucket, MaxKeys: 0});\n service.updateReqBucketRegion(getRegionReq, 'us-east-1');\n getRegionReq._requestRegionForBucket = bucket;\n\n getRegionReq.send(function() {\n var region = service.bucketRegionCache[bucket] || null;\n if (region && region !== request.httpRequest.region) {\n service.updateReqBucketRegion(request, region);\n }\n done();\n });\n } else {\n // DNS-compatible path-style\n // (s3ForcePathStyle or bucket name with dot over https)\n // Cannot obtain region information for this case\n done();\n }\n },\n\n /**\n * Cache for bucket region.\n *\n * @api private\n */\n bucketRegionCache: {},\n\n /**\n * Clears bucket region cache.\n *\n * @api private\n */\n clearBucketRegionCache: function(buckets) {\n var bucketRegionCache = this.bucketRegionCache;\n if (!buckets) {\n buckets = Object.keys(bucketRegionCache);\n } else if (typeof buckets === 'string') {\n buckets = [buckets];\n }\n for (var i = 0; i < buckets.length; i++) {\n delete bucketRegionCache[buckets[i]];\n }\n return bucketRegionCache;\n },\n\n /**\n * Corrects request region if bucket's cached region is different\n *\n * @api private\n */\n correctBucketRegionFromCache: function correctBucketRegionFromCache(req) {\n var bucket = req.params.Bucket || null;\n if (bucket) {\n var service = req.service;\n var requestRegion = req.httpRequest.region;\n var cachedRegion = service.bucketRegionCache[bucket];\n if (cachedRegion && cachedRegion !== requestRegion) {\n service.updateReqBucketRegion(req, cachedRegion);\n }\n }\n },\n\n /**\n * Extracts S3 specific request ids from the http response.\n *\n * @api private\n */\n extractRequestIds: function extractRequestIds(resp) {\n var extendedRequestId = resp.httpResponse.headers ? resp.httpResponse.headers['x-amz-id-2'] : null;\n var cfId = resp.httpResponse.headers ? resp.httpResponse.headers['x-amz-cf-id'] : null;\n resp.extendedRequestId = extendedRequestId;\n resp.cfId = cfId;\n\n if (resp.error) {\n resp.error.requestId = resp.requestId || null;\n resp.error.extendedRequestId = extendedRequestId;\n resp.error.cfId = cfId;\n }\n },\n\n /**\n * Get a pre-signed URL for a given operation name.\n *\n * @note You must ensure that you have static or previously resolved\n * credentials if you call this method synchronously (with no callback),\n * otherwise it may not properly sign the request. If you cannot guarantee\n * this (you are using an asynchronous credential provider, i.e., EC2\n * IAM roles), you should always call this method with an asynchronous\n * callback.\n * @note Not all operation parameters are supported when using pre-signed\n * URLs. Certain parameters, such as `SSECustomerKey`, `ACL`, `Expires`,\n * `ContentLength`, or `Tagging` must be provided as headers when sending a\n * request. If you are using pre-signed URLs to upload from a browser and\n * need to use these fields, see {createPresignedPost}.\n * @note The default signer allows altering the request by adding corresponding\n * headers to set some parameters (e.g. Range) and these added parameters\n * won't be signed. You must use signatureVersion v4 to to include these\n * parameters in the signed portion of the URL and enforce exact matching\n * between headers and signed params in the URL.\n * @note This operation cannot be used with a promise. See note above regarding\n * asynchronous credentials and use with a callback.\n * @param operation [String] the name of the operation to call\n * @param params [map] parameters to pass to the operation. See the given\n * operation for the expected operation parameters. In addition, you can\n * also pass the \"Expires\" parameter to inform S3 how long the URL should\n * work for.\n * @option params Expires [Integer] (900) the number of seconds to expire\n * the pre-signed URL operation in. Defaults to 15 minutes.\n * @param callback [Function] if a callback is provided, this function will\n * pass the URL as the second parameter (after the error parameter) to\n * the callback function.\n * @return [String] if called synchronously (with no callback), returns the\n * signed URL.\n * @return [null] nothing is returned if a callback is provided.\n * @example Pre-signing a getObject operation (synchronously)\n * var params = {Bucket: 'bucket', Key: 'key'};\n * var url = s3.getSignedUrl('getObject', params);\n * console.log('The URL is', url);\n * @example Pre-signing a putObject (asynchronously)\n * var params = {Bucket: 'bucket', Key: 'key'};\n * s3.getSignedUrl('putObject', params, function (err, url) {\n * console.log('The URL is', url);\n * });\n * @example Pre-signing a putObject operation with a specific payload\n * var params = {Bucket: 'bucket', Key: 'key', Body: 'body'};\n * var url = s3.getSignedUrl('putObject', params);\n * console.log('The URL is', url);\n * @example Passing in a 1-minute expiry time for a pre-signed URL\n * var params = {Bucket: 'bucket', Key: 'key', Expires: 60};\n * var url = s3.getSignedUrl('getObject', params);\n * console.log('The URL is', url); // expires in 60 seconds\n */\n getSignedUrl: function getSignedUrl(operation, params, callback) {\n params = AWS.util.copy(params || {});\n var expires = params.Expires || 900;\n\n if (typeof expires !== 'number') {\n throw AWS.util.error(new Error(),\n { code: 'InvalidParameterException', message: 'The expiration must be a number, received ' + typeof expires });\n }\n\n delete params.Expires; // we can't validate this\n var request = this.makeRequest(operation, params);\n\n if (callback) {\n AWS.util.defer(function() {\n request.presign(expires, callback);\n });\n } else {\n return request.presign(expires, callback);\n }\n },\n\n /**\n * @!method getSignedUrlPromise()\n * Returns a 'thenable' promise that will be resolved with a pre-signed URL\n * for a given operation name.\n *\n * Two callbacks can be provided to the `then` method on the returned promise.\n * The first callback will be called if the promise is fulfilled, and the second\n * callback will be called if the promise is rejected.\n * @note Not all operation parameters are supported when using pre-signed\n * URLs. Certain parameters, such as `SSECustomerKey`, `ACL`, `Expires`,\n * `ContentLength`, or `Tagging` must be provided as headers when sending a\n * request. If you are using pre-signed URLs to upload from a browser and\n * need to use these fields, see {createPresignedPost}.\n * @param operation [String] the name of the operation to call\n * @param params [map] parameters to pass to the operation. See the given\n * operation for the expected operation parameters. In addition, you can\n * also pass the \"Expires\" parameter to inform S3 how long the URL should\n * work for.\n * @option params Expires [Integer] (900) the number of seconds to expire\n * the pre-signed URL operation in. Defaults to 15 minutes.\n * @callback fulfilledCallback function(url)\n * Called if the promise is fulfilled.\n * @param url [String] the signed url\n * @callback rejectedCallback function(err)\n * Called if the promise is rejected.\n * @param err [Error] if an error occurred, this value will be filled\n * @return [Promise] A promise that represents the state of the `refresh` call.\n * @example Pre-signing a getObject operation\n * var params = {Bucket: 'bucket', Key: 'key'};\n * var promise = s3.getSignedUrlPromise('getObject', params);\n * promise.then(function(url) {\n * console.log('The URL is', url);\n * }, function(err) { ... });\n * @example Pre-signing a putObject operation with a specific payload\n * var params = {Bucket: 'bucket', Key: 'key', Body: 'body'};\n * var promise = s3.getSignedUrlPromise('putObject', params);\n * promise.then(function(url) {\n * console.log('The URL is', url);\n * }, function(err) { ... });\n * @example Passing in a 1-minute expiry time for a pre-signed URL\n * var params = {Bucket: 'bucket', Key: 'key', Expires: 60};\n * var promise = s3.getSignedUrlPromise('getObject', params);\n * promise.then(function(url) {\n * console.log('The URL is', url);\n * }, function(err) { ... });\n */\n\n /**\n * Get a pre-signed POST policy to support uploading to S3 directly from an\n * HTML form.\n *\n * @param params [map]\n * @option params Bucket [String] The bucket to which the post should be\n * uploaded\n * @option params Expires [Integer] (3600) The number of seconds for which\n * the presigned policy should be valid.\n * @option params Conditions [Array] An array of conditions that must be met\n * for the presigned policy to allow the\n * upload. This can include required tags,\n * the accepted range for content lengths,\n * etc.\n * @see http://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-HTTPPOSTConstructPolicy.html\n * @option params Fields [map] Fields to include in the form. All\n * values passed in as fields will be\n * signed as exact match conditions.\n * @param callback [Function]\n *\n * @note All fields passed in when creating presigned post data will be signed\n * as exact match conditions. Any fields that will be interpolated by S3\n * must be added to the fields hash after signing, and an appropriate\n * condition for such fields must be explicitly added to the Conditions\n * array passed to this function before signing.\n *\n * @example Presiging post data with a known key\n * var params = {\n * Bucket: 'bucket',\n * Fields: {\n * key: 'key'\n * }\n * };\n * s3.createPresignedPost(params, function(err, data) {\n * if (err) {\n * console.error('Presigning post data encountered an error', err);\n * } else {\n * console.log('The post data is', data);\n * }\n * });\n *\n * @example Presigning post data with an interpolated key\n * var params = {\n * Bucket: 'bucket',\n * Conditions: [\n * ['starts-with', '$key', 'path/to/uploads/']\n * ]\n * };\n * s3.createPresignedPost(params, function(err, data) {\n * if (err) {\n * console.error('Presigning post data encountered an error', err);\n * } else {\n * data.Fields.key = 'path/to/uploads/${filename}';\n * console.log('The post data is', data);\n * }\n * });\n *\n * @note You must ensure that you have static or previously resolved\n * credentials if you call this method synchronously (with no callback),\n * otherwise it may not properly sign the request. If you cannot guarantee\n * this (you are using an asynchronous credential provider, i.e., EC2\n * IAM roles), you should always call this method with an asynchronous\n * callback.\n *\n * @return [map] If called synchronously (with no callback), returns a hash\n * with the url to set as the form action and a hash of fields\n * to include in the form.\n * @return [null] Nothing is returned if a callback is provided.\n *\n * @callback callback function (err, data)\n * @param err [Error] the error object returned from the policy signer\n * @param data [map] The data necessary to construct an HTML form\n * @param data.url [String] The URL to use as the action of the form\n * @param data.fields [map] A hash of fields that must be included in the\n * form for the upload to succeed. This hash will\n * include the signed POST policy, your access key\n * ID and security token (if present), etc. These\n * may be safely included as input elements of type\n * 'hidden.'\n */\n createPresignedPost: function createPresignedPost(params, callback) {\n if (typeof params === 'function' && callback === undefined) {\n callback = params;\n params = null;\n }\n\n params = AWS.util.copy(params || {});\n var boundParams = this.config.params || {};\n var bucket = params.Bucket || boundParams.Bucket,\n self = this,\n config = this.config,\n endpoint = AWS.util.copy(this.endpoint);\n if (!config.s3BucketEndpoint) {\n endpoint.pathname = '/' + bucket;\n }\n\n function finalizePost() {\n return {\n url: AWS.util.urlFormat(endpoint),\n fields: self.preparePostFields(\n config.credentials,\n config.region,\n bucket,\n params.Fields,\n params.Conditions,\n params.Expires\n )\n };\n }\n\n if (callback) {\n config.getCredentials(function (err) {\n if (err) {\n callback(err);\n } else {\n try {\n callback(null, finalizePost());\n } catch (err) {\n callback(err);\n }\n }\n });\n } else {\n return finalizePost();\n }\n },\n\n /**\n * @api private\n */\n preparePostFields: function preparePostFields(\n credentials,\n region,\n bucket,\n fields,\n conditions,\n expiresInSeconds\n ) {\n var now = this.getSkewCorrectedDate();\n if (!credentials || !region || !bucket) {\n throw new Error('Unable to create a POST object policy without a bucket,'\n + ' region, and credentials');\n }\n fields = AWS.util.copy(fields || {});\n conditions = (conditions || []).slice(0);\n expiresInSeconds = expiresInSeconds || 3600;\n\n var signingDate = AWS.util.date.iso8601(now).replace(/[:\\-]|\\.\\d{3}/g, '');\n var shortDate = signingDate.substr(0, 8);\n var scope = v4Credentials.createScope(shortDate, region, 's3');\n var credential = credentials.accessKeyId + '/' + scope;\n\n fields['bucket'] = bucket;\n fields['X-Amz-Algorithm'] = 'AWS4-HMAC-SHA256';\n fields['X-Amz-Credential'] = credential;\n fields['X-Amz-Date'] = signingDate;\n if (credentials.sessionToken) {\n fields['X-Amz-Security-Token'] = credentials.sessionToken;\n }\n for (var field in fields) {\n if (fields.hasOwnProperty(field)) {\n var condition = {};\n condition[field] = fields[field];\n conditions.push(condition);\n }\n }\n\n fields.Policy = this.preparePostPolicy(\n new Date(now.valueOf() + expiresInSeconds * 1000),\n conditions\n );\n fields['X-Amz-Signature'] = AWS.util.crypto.hmac(\n v4Credentials.getSigningKey(credentials, shortDate, region, 's3', true),\n fields.Policy,\n 'hex'\n );\n\n return fields;\n },\n\n /**\n * @api private\n */\n preparePostPolicy: function preparePostPolicy(expiration, conditions) {\n return AWS.util.base64.encode(JSON.stringify({\n expiration: AWS.util.date.iso8601(expiration),\n conditions: conditions\n }));\n },\n\n /**\n * @api private\n */\n prepareSignedUrl: function prepareSignedUrl(request) {\n request.addListener('validate', request.service.noPresignedContentLength);\n request.removeListener('build', request.service.addContentType);\n if (!request.params.Body) {\n // no Content-MD5/SHA-256 if body is not provided\n request.removeListener('build', request.service.computeContentMd5);\n } else {\n request.addListener('afterBuild', AWS.EventListeners.Core.COMPUTE_SHA256);\n }\n },\n\n /**\n * @api private\n * @param request\n */\n disableBodySigning: function disableBodySigning(request) {\n var headers = request.httpRequest.headers;\n // Add the header to anything that isn't a presigned url, unless that presigned url had a body defined\n if (!Object.prototype.hasOwnProperty.call(headers, 'presigned-expires')) {\n headers['X-Amz-Content-Sha256'] = 'UNSIGNED-PAYLOAD';\n }\n },\n\n /**\n * @api private\n */\n noPresignedContentLength: function noPresignedContentLength(request) {\n if (request.params.ContentLength !== undefined) {\n throw AWS.util.error(new Error(), {code: 'UnexpectedParameter',\n message: 'ContentLength is not supported in pre-signed URLs.'});\n }\n },\n\n createBucket: function createBucket(params, callback) {\n // When creating a bucket *outside* the classic region, the location\n // constraint must be set for the bucket and it must match the endpoint.\n // This chunk of code will set the location constraint param based\n // on the region (when possible), but it will not override a passed-in\n // location constraint.\n if (typeof params === 'function' || !params) {\n callback = callback || params;\n params = {};\n }\n var hostname = this.endpoint.hostname;\n // copy params so that appending keys does not unintentioinallly\n // mutate params object argument passed in by user\n var copiedParams = AWS.util.copy(params);\n\n if (\n this.config.region !== 'us-east-1'\n && hostname !== this.api.globalEndpoint\n && !params.CreateBucketConfiguration\n ) {\n copiedParams.CreateBucketConfiguration = { LocationConstraint: this.config.region };\n }\n return this.makeRequest('createBucket', copiedParams, callback);\n },\n\n writeGetObjectResponse: function writeGetObjectResponse(params, callback) {\n\n var request = this.makeRequest('writeGetObjectResponse', AWS.util.copy(params), callback);\n var hostname = this.endpoint.hostname;\n if (hostname.indexOf(this.config.region) !== -1) {\n // hostname specifies a region already\n hostname = hostname.replace('s3.', OBJECT_LAMBDA_SERVICE + '.');\n } else {\n // Hostname doesn't have a region.\n // Object Lambda requires an explicit region.\n hostname = hostname.replace('s3.', OBJECT_LAMBDA_SERVICE + '.' + this.config.region + '.');\n }\n\n request.httpRequest.endpoint = new AWS.Endpoint(hostname, this.config);\n return request;\n },\n\n /**\n * @see AWS.S3.ManagedUpload\n * @overload upload(params = {}, [options], [callback])\n * Uploads an arbitrarily sized buffer, blob, or stream, using intelligent\n * concurrent handling of parts if the payload is large enough. You can\n * configure the concurrent queue size by setting `options`. Note that this\n * is the only operation for which the SDK can retry requests with stream\n * bodies.\n *\n * @param (see AWS.S3.putObject)\n * @option (see AWS.S3.ManagedUpload.constructor)\n * @return [AWS.S3.ManagedUpload] the managed upload object that can call\n * `send()` or track progress.\n * @example Uploading a stream object\n * var params = {Bucket: 'bucket', Key: 'key', Body: stream};\n * s3.upload(params, function(err, data) {\n * console.log(err, data);\n * });\n * @example Uploading a stream with concurrency of 1 and partSize of 10mb\n * var params = {Bucket: 'bucket', Key: 'key', Body: stream};\n * var options = {partSize: 10 * 1024 * 1024, queueSize: 1};\n * s3.upload(params, options, function(err, data) {\n * console.log(err, data);\n * });\n * @callback callback function(err, data)\n * @param err [Error] an error or null if no error occurred.\n * @param data [map] The response data from the successful upload:\n * @param data.Location [String] the URL of the uploaded object\n * @param data.ETag [String] the ETag of the uploaded object\n * @param data.Bucket [String] the bucket to which the object was uploaded\n * @param data.Key [String] the key to which the object was uploaded\n */\n upload: function upload(params, options, callback) {\n if (typeof options === 'function' && callback === undefined) {\n callback = options;\n options = null;\n }\n\n options = options || {};\n options = AWS.util.merge(options || {}, {service: this, params: params});\n\n var uploader = new AWS.S3.ManagedUpload(options);\n if (typeof callback === 'function') uploader.send(callback);\n return uploader;\n },\n\n /**\n * @api private\n */\n setExpiresString: function setExpiresString(response) {\n // Check if response contains Expires value, and populate ExpiresString.\n if (response && response.httpResponse && response.httpResponse.headers) {\n if ('expires' in response.httpResponse.headers) {\n response.httpResponse.headers.expiresstring = response.httpResponse.headers.expires;\n }\n }\n\n // Check if value in Expires is not a Date using parseTimestamp.\n try {\n if (response && response.httpResponse && response.httpResponse.headers) {\n if ('expires' in response.httpResponse.headers) {\n AWS.util.date.parseTimestamp(response.httpResponse.headers.expires);\n }\n }\n } catch (e) {\n console.log('AWS SDK', '(warning)', e);\n delete response.httpResponse.headers.expires;\n }\n }\n});\n\n/**\n * @api private\n */\nAWS.S3.addPromisesToClass = function addPromisesToClass(PromiseDependency) {\n this.prototype.getSignedUrlPromise = AWS.util.promisifyMethod('getSignedUrl', PromiseDependency);\n};\n\n/**\n * @api private\n */\nAWS.S3.deletePromisesFromClass = function deletePromisesFromClass() {\n delete this.prototype.getSignedUrlPromise;\n};\n\nAWS.util.addPromises(AWS.S3);\n","'use strict';\nvar aSet = require('../internals/a-set');\nvar has = require('../internals/set-helpers').has;\nvar size = require('../internals/set-size');\nvar getSetRecord = require('../internals/get-set-record');\nvar iterateSimple = require('../internals/iterate-simple');\nvar iteratorClose = require('../internals/iterator-close');\n\n// `Set.prototype.isSupersetOf` method\n// https://tc39.github.io/proposal-set-methods/#Set.prototype.isSupersetOf\nmodule.exports = function isSupersetOf(other) {\n var O = aSet(this);\n var otherRec = getSetRecord(other);\n if (size(O) < otherRec.size) return false;\n var iterator = otherRec.getIterator();\n return iterateSimple(iterator, function (e) {\n if (!has(O, e)) return iteratorClose(iterator, 'normal', false);\n }) !== false;\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { AssetSpec } from '../../libs/voicefocus/voicefocus';\nimport Versioning from '../versioning/Versioning';\n\nexport function wait(waitTimeMs: number): Promise {\n return new Promise(resolve => setTimeout(resolve, waitTimeMs));\n}\n\n// This is impossible to adequately test in Node, so Istanbul ignore.\n/* istanbul ignore next */\nexport function isIFramed(): boolean {\n // Same-origin iframes can check `nodeName`.\n // We can also check whether the parent window and the top window are the same.\n // Cross-origin iframes will throw on the `parent` check, so catch here.\n try {\n return window.frameElement?.nodeName === 'IFRAME' || parent !== top;\n } catch (e) {\n // Very likely to be a cross-origin iframe.\n return true;\n }\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function toLowerCasePropertyNames(input: any): any {\n if (input === null) {\n return null;\n } else if (typeof input !== 'object') {\n return input;\n } else if (Array.isArray(input)) {\n return input.map(toLowerCasePropertyNames);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return Object.keys(input).reduce((result: any, key: string) => {\n const value = input[key];\n const newValue = typeof value === 'object' ? toLowerCasePropertyNames(value) : value;\n result[key.toLowerCase()] = newValue;\n return result;\n }, {});\n}\n\n/**\n * Based on the SDK version, return an asset group.\n *\n * @returns the default asset spec, based on the SDK version.\n */\nexport function getDefaultAssetSpec(): AssetSpec {\n const version = Versioning.sdkVersionSemVer;\n\n return {\n assetGroup: `sdk-${version.major}.${version.minor}`,\n };\n}\n\n/**\n * Get UTC offset in (+|-)HH:mm format\n * E.g. For Asia/Calcutta timezone, +05:30 UTC offset value is returned\n */\nexport function getFormattedOffset(utcOffset: number): string {\n const offset = Math.abs(utcOffset);\n const offsetOperator = utcOffset <= 0 ? '+' : '-';\n const offsetHours = Math.floor(offset / 60)\n .toString()\n .padStart(2, '0');\n const offsetMinutes = Math.floor(offset % 60)\n .toString()\n .padStart(2, '0');\n\n return `${offsetOperator}${offsetHours}:${offsetMinutes}`;\n}\n\nexport function getRandomValues(buffer: Uint32Array): void {\n try {\n // Browser environment\n window.crypto.getRandomValues(buffer);\n } catch (error) {\n // Node environment for unit test\n const view = new DataView(buffer.buffer);\n view.setUint32(0, Math.trunc(Math.random() * 2 ** 32), true);\n }\n}\n\n/**\n * Shim for SuppressedError\n * https://github.com/tc39/proposal-explicit-resource-management?tab=readme-ov-file#the-suppressederror-error\n */\nexport class SuppressedError extends Error {\n constructor(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public readonly error: any,\n public readonly suppressed?: SuppressedError,\n message?: string\n ) {\n /* istanbul ignore next -- because coverage can't detect all the branches */\n super(message ?? `${error?.message ?? error}`);\n }\n}\n\n/**\n * Run a callback over the set of all values, suppress any errors, and only throw after iteration completes.\n * @param iterable - The iterable to iterate over\n * @param callback - The callback to run on each iteration\n * @throws If any of the callbacks throw an error\n */\nexport function iterateEvery(\n iterable: Iterable | undefined | null,\n callback: (value: T) => void\n): void {\n if (!iterable) return;\n let suppressedError: SuppressedError | undefined;\n for (const value of iterable) {\n try {\n callback(value);\n } catch (err) {\n suppressedError = new SuppressedError(err, suppressedError);\n }\n }\n if (suppressedError) {\n throw suppressedError;\n }\n}\n","var util = require('../util');\n\nfunction JsonParser() { }\n\nJsonParser.prototype.parse = function(value, shape) {\n return translate(JSON.parse(value), shape);\n};\n\nfunction translate(value, shape) {\n if (!shape || value === undefined) return undefined;\n\n switch (shape.type) {\n case 'structure': return translateStructure(value, shape);\n case 'map': return translateMap(value, shape);\n case 'list': return translateList(value, shape);\n default: return translateScalar(value, shape);\n }\n}\n\nfunction translateStructure(structure, shape) {\n if (structure == null) return undefined;\n if (shape.isDocument) return structure;\n\n var struct = {};\n var shapeMembers = shape.members;\n var isAwsQueryCompatible = shape.api && shape.api.awsQueryCompatible;\n util.each(shapeMembers, function(name, memberShape) {\n var locationName = memberShape.isLocationName ? memberShape.name : name;\n if (Object.prototype.hasOwnProperty.call(structure, locationName)) {\n var value = structure[locationName];\n var result = translate(value, memberShape);\n if (result !== undefined) struct[name] = result;\n } else if (isAwsQueryCompatible && memberShape.defaultValue) {\n if (memberShape.type === 'list') {\n struct[name] = typeof memberShape.defaultValue === 'function' ? memberShape.defaultValue() : memberShape.defaultValue;\n }\n }\n });\n return struct;\n}\n\nfunction translateList(list, shape) {\n if (list == null) return undefined;\n\n var out = [];\n util.arrayEach(list, function(value) {\n var result = translate(value, shape.member);\n if (result === undefined) out.push(null);\n else out.push(result);\n });\n return out;\n}\n\nfunction translateMap(map, shape) {\n if (map == null) return undefined;\n\n var out = {};\n util.each(map, function(key, value) {\n var result = translate(value, shape.value);\n if (result === undefined) out[key] = null;\n else out[key] = result;\n });\n return out;\n}\n\nfunction translateScalar(value, shape) {\n return shape.toType(value);\n}\n\n/**\n * @api private\n */\nmodule.exports = JsonParser;\n","'use strict';\nvar $ = require('../internals/export');\nvar bind = require('../internals/function-bind-context');\nvar aMap = require('../internals/a-map');\nvar iterate = require('../internals/map-iterate');\n\n// `Map.prototype.some` method\n// https://github.com/tc39/proposal-collection-methods\n$({ target: 'Map', proto: true, real: true, forced: true }, {\n some: function some(callbackfn /* , thisArg */) {\n var map = aMap(this);\n var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n return iterate(map, function (value, key) {\n if (boundFunction(value, key, map)) return true;\n }, true) === true;\n }\n});\n","'use strict';\n\nvar utils = require('./../utils');\nvar buildURL = require('../helpers/buildURL');\nvar InterceptorManager = require('./InterceptorManager');\nvar dispatchRequest = require('./dispatchRequest');\nvar mergeConfig = require('./mergeConfig');\nvar validator = require('../helpers/validator');\n\nvar validators = validator.validators;\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\nfunction Axios(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n}\n\n/**\n * Dispatch a request\n *\n * @param {Object} config The config specific for this request (merged with this.defaults)\n */\nAxios.prototype.request = function request(config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof config === 'string') {\n config = arguments[1] || {};\n config.url = arguments[0];\n } else {\n config = config || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n // Set config.method\n if (config.method) {\n config.method = config.method.toLowerCase();\n } else if (this.defaults.method) {\n config.method = this.defaults.method.toLowerCase();\n } else {\n config.method = 'get';\n }\n\n var transitional = config.transitional;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean, '1.0.0'),\n forcedJSONParsing: validators.transitional(validators.boolean, '1.0.0'),\n clarifyTimeoutError: validators.transitional(validators.boolean, '1.0.0')\n }, false);\n }\n\n // filter out skipped interceptors\n var requestInterceptorChain = [];\n var synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n var responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n var promise;\n\n if (!synchronousRequestInterceptors) {\n var chain = [dispatchRequest, undefined];\n\n Array.prototype.unshift.apply(chain, requestInterceptorChain);\n chain = chain.concat(responseInterceptorChain);\n\n promise = Promise.resolve(config);\n while (chain.length) {\n promise = promise.then(chain.shift(), chain.shift());\n }\n\n return promise;\n }\n\n\n var newConfig = config;\n while (requestInterceptorChain.length) {\n var onFulfilled = requestInterceptorChain.shift();\n var onRejected = requestInterceptorChain.shift();\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected(error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest(newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n while (responseInterceptorChain.length) {\n promise = promise.then(responseInterceptorChain.shift(), responseInterceptorChain.shift());\n }\n\n return promise;\n};\n\nAxios.prototype.getUri = function getUri(config) {\n config = mergeConfig(this.defaults, config);\n return buildURL(config.url, config.params, config.paramsSerializer).replace(/^\\?/, '');\n};\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: data\n }));\n };\n});\n\nmodule.exports = Axios;\n","// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { SourceData } from \"@aws-sdk/types\";\n\nexport function isEmptyData(data: SourceData): boolean {\n if (typeof data === \"string\") {\n return data.length === 0;\n }\n\n return data.byteLength === 0;\n}\n","var AWS = require('./core');\n\n/**\n * @api private\n * @!method on(eventName, callback)\n * Registers an event listener callback for the event given by `eventName`.\n * Parameters passed to the callback function depend on the individual event\n * being triggered. See the event documentation for those parameters.\n *\n * @param eventName [String] the event name to register the listener for\n * @param callback [Function] the listener callback function\n * @param toHead [Boolean] attach the listener callback to the head of callback array if set to true.\n * Default to be false.\n * @return [AWS.SequentialExecutor] the same object for chaining\n */\nAWS.SequentialExecutor = AWS.util.inherit({\n\n constructor: function SequentialExecutor() {\n this._events = {};\n },\n\n /**\n * @api private\n */\n listeners: function listeners(eventName) {\n return this._events[eventName] ? this._events[eventName].slice(0) : [];\n },\n\n on: function on(eventName, listener, toHead) {\n if (this._events[eventName]) {\n toHead ?\n this._events[eventName].unshift(listener) :\n this._events[eventName].push(listener);\n } else {\n this._events[eventName] = [listener];\n }\n return this;\n },\n\n onAsync: function onAsync(eventName, listener, toHead) {\n listener._isAsync = true;\n return this.on(eventName, listener, toHead);\n },\n\n removeListener: function removeListener(eventName, listener) {\n var listeners = this._events[eventName];\n if (listeners) {\n var length = listeners.length;\n var position = -1;\n for (var i = 0; i < length; ++i) {\n if (listeners[i] === listener) {\n position = i;\n }\n }\n if (position > -1) {\n listeners.splice(position, 1);\n }\n }\n return this;\n },\n\n removeAllListeners: function removeAllListeners(eventName) {\n if (eventName) {\n delete this._events[eventName];\n } else {\n this._events = {};\n }\n return this;\n },\n\n /**\n * @api private\n */\n emit: function emit(eventName, eventArgs, doneCallback) {\n if (!doneCallback) doneCallback = function() { };\n var listeners = this.listeners(eventName);\n var count = listeners.length;\n this.callListeners(listeners, eventArgs, doneCallback);\n return count > 0;\n },\n\n /**\n * @api private\n */\n callListeners: function callListeners(listeners, args, doneCallback, prevError) {\n var self = this;\n var error = prevError || null;\n\n function callNextListener(err) {\n if (err) {\n error = AWS.util.error(error || new Error(), err);\n if (self._haltHandlersOnError) {\n return doneCallback.call(self, error);\n }\n }\n self.callListeners(listeners, args, doneCallback, error);\n }\n\n while (listeners.length > 0) {\n var listener = listeners.shift();\n if (listener._isAsync) { // asynchronous listener\n listener.apply(self, args.concat([callNextListener]));\n return; // stop here, callNextListener will continue\n } else { // synchronous listener\n try {\n listener.apply(self, args);\n } catch (err) {\n error = AWS.util.error(error || new Error(), err);\n }\n if (error && self._haltHandlersOnError) {\n doneCallback.call(self, error);\n return;\n }\n }\n }\n doneCallback.call(self, error);\n },\n\n /**\n * Adds or copies a set of listeners from another list of\n * listeners or SequentialExecutor object.\n *\n * @param listeners [map>, AWS.SequentialExecutor]\n * a list of events and callbacks, or an event emitter object\n * containing listeners to add to this emitter object.\n * @return [AWS.SequentialExecutor] the emitter object, for chaining.\n * @example Adding listeners from a map of listeners\n * emitter.addListeners({\n * event1: [function() { ... }, function() { ... }],\n * event2: [function() { ... }]\n * });\n * emitter.emit('event1'); // emitter has event1\n * emitter.emit('event2'); // emitter has event2\n * @example Adding listeners from another emitter object\n * var emitter1 = new AWS.SequentialExecutor();\n * emitter1.on('event1', function() { ... });\n * emitter1.on('event2', function() { ... });\n * var emitter2 = new AWS.SequentialExecutor();\n * emitter2.addListeners(emitter1);\n * emitter2.emit('event1'); // emitter2 has event1\n * emitter2.emit('event2'); // emitter2 has event2\n */\n addListeners: function addListeners(listeners) {\n var self = this;\n\n // extract listeners if parameter is an SequentialExecutor object\n if (listeners._events) listeners = listeners._events;\n\n AWS.util.each(listeners, function(event, callbacks) {\n if (typeof callbacks === 'function') callbacks = [callbacks];\n AWS.util.arrayEach(callbacks, function(callback) {\n self.on(event, callback);\n });\n });\n\n return self;\n },\n\n /**\n * Registers an event with {on} and saves the callback handle function\n * as a property on the emitter object using a given `name`.\n *\n * @param name [String] the property name to set on this object containing\n * the callback function handle so that the listener can be removed in\n * the future.\n * @param (see on)\n * @return (see on)\n * @example Adding a named listener DATA_CALLBACK\n * var listener = function() { doSomething(); };\n * emitter.addNamedListener('DATA_CALLBACK', 'data', listener);\n *\n * // the following prints: true\n * console.log(emitter.DATA_CALLBACK == listener);\n */\n addNamedListener: function addNamedListener(name, eventName, callback, toHead) {\n this[name] = callback;\n this.addListener(eventName, callback, toHead);\n return this;\n },\n\n /**\n * @api private\n */\n addNamedAsyncListener: function addNamedAsyncListener(name, eventName, callback, toHead) {\n callback._isAsync = true;\n return this.addNamedListener(name, eventName, callback, toHead);\n },\n\n /**\n * Helper method to add a set of named listeners using\n * {addNamedListener}. The callback contains a parameter\n * with a handle to the `addNamedListener` method.\n *\n * @callback callback function(add)\n * The callback function is called immediately in order to provide\n * the `add` function to the block. This simplifies the addition of\n * a large group of named listeners.\n * @param add [Function] the {addNamedListener} function to call\n * when registering listeners.\n * @example Adding a set of named listeners\n * emitter.addNamedListeners(function(add) {\n * add('DATA_CALLBACK', 'data', function() { ... });\n * add('OTHER', 'otherEvent', function() { ... });\n * add('LAST', 'lastEvent', function() { ... });\n * });\n *\n * // these properties are now set:\n * emitter.DATA_CALLBACK;\n * emitter.OTHER;\n * emitter.LAST;\n */\n addNamedListeners: function addNamedListeners(callback) {\n var self = this;\n callback(\n function() {\n self.addNamedListener.apply(self, arguments);\n },\n function() {\n self.addNamedAsyncListener.apply(self, arguments);\n }\n );\n return this;\n }\n});\n\n/**\n * {on} is the prefered method.\n * @api private\n */\nAWS.SequentialExecutor.prototype.addListener = AWS.SequentialExecutor.prototype.on;\n\n/**\n * @api private\n */\nmodule.exports = AWS.SequentialExecutor;\n","'use strict';\nvar call = require('../internals/function-call');\n\nmodule.exports = function (record, fn, ITERATOR_INSTEAD_OF_RECORD) {\n var iterator = ITERATOR_INSTEAD_OF_RECORD ? record : record.iterator;\n var next = record.next;\n var step, result;\n while (!(step = call(next, iterator)).done) {\n result = fn(step.value);\n if (result !== undefined) return result;\n }\n};\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nconst { _tr_init, _tr_stored_block, _tr_flush_block, _tr_tally, _tr_align } = require('./trees');\nconst adler32 = require('./adler32');\nconst crc32 = require('./crc32');\nconst msg = require('./messages');\n\n/* Public constants ==========================================================*/\n/* ===========================================================================*/\n\nconst {\n Z_NO_FLUSH, Z_PARTIAL_FLUSH, Z_FULL_FLUSH, Z_FINISH, Z_BLOCK,\n Z_OK, Z_STREAM_END, Z_STREAM_ERROR, Z_DATA_ERROR, Z_BUF_ERROR,\n Z_DEFAULT_COMPRESSION,\n Z_FILTERED, Z_HUFFMAN_ONLY, Z_RLE, Z_FIXED, Z_DEFAULT_STRATEGY,\n Z_UNKNOWN,\n Z_DEFLATED\n} = require('./constants');\n\n/*============================================================================*/\n\n\nconst MAX_MEM_LEVEL = 9;\n/* Maximum value for memLevel in deflateInit2 */\nconst MAX_WBITS = 15;\n/* 32K LZ77 window */\nconst DEF_MEM_LEVEL = 8;\n\n\nconst LENGTH_CODES = 29;\n/* number of length codes, not counting the special END_BLOCK code */\nconst LITERALS = 256;\n/* number of literal bytes 0..255 */\nconst L_CODES = LITERALS + 1 + LENGTH_CODES;\n/* number of Literal or Length codes, including the END_BLOCK code */\nconst D_CODES = 30;\n/* number of distance codes */\nconst BL_CODES = 19;\n/* number of codes used to transfer the bit lengths */\nconst HEAP_SIZE = 2 * L_CODES + 1;\n/* maximum heap size */\nconst MAX_BITS = 15;\n/* All codes must not exceed MAX_BITS bits */\n\nconst MIN_MATCH = 3;\nconst MAX_MATCH = 258;\nconst MIN_LOOKAHEAD = (MAX_MATCH + MIN_MATCH + 1);\n\nconst PRESET_DICT = 0x20;\n\nconst INIT_STATE = 42; /* zlib header -> BUSY_STATE */\n//#ifdef GZIP\nconst GZIP_STATE = 57; /* gzip header -> BUSY_STATE | EXTRA_STATE */\n//#endif\nconst EXTRA_STATE = 69; /* gzip extra block -> NAME_STATE */\nconst NAME_STATE = 73; /* gzip file name -> COMMENT_STATE */\nconst COMMENT_STATE = 91; /* gzip comment -> HCRC_STATE */\nconst HCRC_STATE = 103; /* gzip header CRC -> BUSY_STATE */\nconst BUSY_STATE = 113; /* deflate -> FINISH_STATE */\nconst FINISH_STATE = 666; /* stream complete */\n\nconst BS_NEED_MORE = 1; /* block not completed, need more input or more output */\nconst BS_BLOCK_DONE = 2; /* block flush performed */\nconst BS_FINISH_STARTED = 3; /* finish started, need only more output at next deflate */\nconst BS_FINISH_DONE = 4; /* finish done, accept no more input or output */\n\nconst OS_CODE = 0x03; // Unix :) . Don't detect, use this default.\n\nconst err = (strm, errorCode) => {\n strm.msg = msg[errorCode];\n return errorCode;\n};\n\nconst rank = (f) => {\n return ((f) * 2) - ((f) > 4 ? 9 : 0);\n};\n\nconst zero = (buf) => {\n let len = buf.length; while (--len >= 0) { buf[len] = 0; }\n};\n\n/* ===========================================================================\n * Slide the hash table when sliding the window down (could be avoided with 32\n * bit values at the expense of memory usage). We slide even when level == 0 to\n * keep the hash table consistent if we switch back to level > 0 later.\n */\nconst slide_hash = (s) => {\n let n, m;\n let p;\n let wsize = s.w_size;\n\n n = s.hash_size;\n p = n;\n do {\n m = s.head[--p];\n s.head[p] = (m >= wsize ? m - wsize : 0);\n } while (--n);\n n = wsize;\n//#ifndef FASTEST\n p = n;\n do {\n m = s.prev[--p];\n s.prev[p] = (m >= wsize ? m - wsize : 0);\n /* If n is not on any hash chain, prev[n] is garbage but\n * its value will never be used.\n */\n } while (--n);\n//#endif\n};\n\n/* eslint-disable new-cap */\nlet HASH_ZLIB = (s, prev, data) => ((prev << s.hash_shift) ^ data) & s.hash_mask;\n// This hash causes less collisions, https://github.com/nodeca/pako/issues/135\n// But breaks binary compatibility\n//let HASH_FAST = (s, prev, data) => ((prev << 8) + (prev >> 8) + (data << 4)) & s.hash_mask;\nlet HASH = HASH_ZLIB;\n\n\n/* =========================================================================\n * Flush as much pending output as possible. All deflate() output, except for\n * some deflate_stored() output, goes through this function so some\n * applications may wish to modify it to avoid allocating a large\n * strm->next_out buffer and copying into it. (See also read_buf()).\n */\nconst flush_pending = (strm) => {\n const s = strm.state;\n\n //_tr_flush_bits(s);\n let len = s.pending;\n if (len > strm.avail_out) {\n len = strm.avail_out;\n }\n if (len === 0) { return; }\n\n strm.output.set(s.pending_buf.subarray(s.pending_out, s.pending_out + len), strm.next_out);\n strm.next_out += len;\n s.pending_out += len;\n strm.total_out += len;\n strm.avail_out -= len;\n s.pending -= len;\n if (s.pending === 0) {\n s.pending_out = 0;\n }\n};\n\n\nconst flush_block_only = (s, last) => {\n _tr_flush_block(s, (s.block_start >= 0 ? s.block_start : -1), s.strstart - s.block_start, last);\n s.block_start = s.strstart;\n flush_pending(s.strm);\n};\n\n\nconst put_byte = (s, b) => {\n s.pending_buf[s.pending++] = b;\n};\n\n\n/* =========================================================================\n * Put a short in the pending buffer. The 16-bit value is put in MSB order.\n * IN assertion: the stream state is correct and there is enough room in\n * pending_buf.\n */\nconst putShortMSB = (s, b) => {\n\n // put_byte(s, (Byte)(b >> 8));\n// put_byte(s, (Byte)(b & 0xff));\n s.pending_buf[s.pending++] = (b >>> 8) & 0xff;\n s.pending_buf[s.pending++] = b & 0xff;\n};\n\n\n/* ===========================================================================\n * Read a new buffer from the current input stream, update the adler32\n * and total number of bytes read. All deflate() input goes through\n * this function so some applications may wish to modify it to avoid\n * allocating a large strm->input buffer and copying from it.\n * (See also flush_pending()).\n */\nconst read_buf = (strm, buf, start, size) => {\n\n let len = strm.avail_in;\n\n if (len > size) { len = size; }\n if (len === 0) { return 0; }\n\n strm.avail_in -= len;\n\n // zmemcpy(buf, strm->next_in, len);\n buf.set(strm.input.subarray(strm.next_in, strm.next_in + len), start);\n if (strm.state.wrap === 1) {\n strm.adler = adler32(strm.adler, buf, len, start);\n }\n\n else if (strm.state.wrap === 2) {\n strm.adler = crc32(strm.adler, buf, len, start);\n }\n\n strm.next_in += len;\n strm.total_in += len;\n\n return len;\n};\n\n\n/* ===========================================================================\n * Set match_start to the longest match starting at the given string and\n * return its length. Matches shorter or equal to prev_length are discarded,\n * in which case the result is equal to prev_length and match_start is\n * garbage.\n * IN assertions: cur_match is the head of the hash chain for the current\n * string (strstart) and its distance is <= MAX_DIST, and prev_length >= 1\n * OUT assertion: the match length is not greater than s->lookahead.\n */\nconst longest_match = (s, cur_match) => {\n\n let chain_length = s.max_chain_length; /* max hash chain length */\n let scan = s.strstart; /* current string */\n let match; /* matched string */\n let len; /* length of current match */\n let best_len = s.prev_length; /* best match length so far */\n let nice_match = s.nice_match; /* stop if match long enough */\n const limit = (s.strstart > (s.w_size - MIN_LOOKAHEAD)) ?\n s.strstart - (s.w_size - MIN_LOOKAHEAD) : 0/*NIL*/;\n\n const _win = s.window; // shortcut\n\n const wmask = s.w_mask;\n const prev = s.prev;\n\n /* Stop when cur_match becomes <= limit. To simplify the code,\n * we prevent matches with the string of window index 0.\n */\n\n const strend = s.strstart + MAX_MATCH;\n let scan_end1 = _win[scan + best_len - 1];\n let scan_end = _win[scan + best_len];\n\n /* The code is optimized for HASH_BITS >= 8 and MAX_MATCH-2 multiple of 16.\n * It is easy to get rid of this optimization if necessary.\n */\n // Assert(s->hash_bits >= 8 && MAX_MATCH == 258, \"Code too clever\");\n\n /* Do not waste too much time if we already have a good match: */\n if (s.prev_length >= s.good_match) {\n chain_length >>= 2;\n }\n /* Do not look for matches beyond the end of the input. This is necessary\n * to make deflate deterministic.\n */\n if (nice_match > s.lookahead) { nice_match = s.lookahead; }\n\n // Assert((ulg)s->strstart <= s->window_size-MIN_LOOKAHEAD, \"need lookahead\");\n\n do {\n // Assert(cur_match < s->strstart, \"no future\");\n match = cur_match;\n\n /* Skip to next match if the match length cannot increase\n * or if the match length is less than 2. Note that the checks below\n * for insufficient lookahead only occur occasionally for performance\n * reasons. Therefore uninitialized memory will be accessed, and\n * conditional jumps will be made that depend on those values.\n * However the length of the match is limited to the lookahead, so\n * the output of deflate is not affected by the uninitialized values.\n */\n\n if (_win[match + best_len] !== scan_end ||\n _win[match + best_len - 1] !== scan_end1 ||\n _win[match] !== _win[scan] ||\n _win[++match] !== _win[scan + 1]) {\n continue;\n }\n\n /* The check at best_len-1 can be removed because it will be made\n * again later. (This heuristic is not always a win.)\n * It is not necessary to compare scan[2] and match[2] since they\n * are always equal when the other bytes match, given that\n * the hash keys are equal and that HASH_BITS >= 8.\n */\n scan += 2;\n match++;\n // Assert(*scan == *match, \"match[2]?\");\n\n /* We check for insufficient lookahead only every 8th comparison;\n * the 256th check will be made at strstart+258.\n */\n do {\n /*jshint noempty:false*/\n } while (_win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n scan < strend);\n\n // Assert(scan <= s->window+(unsigned)(s->window_size-1), \"wild scan\");\n\n len = MAX_MATCH - (strend - scan);\n scan = strend - MAX_MATCH;\n\n if (len > best_len) {\n s.match_start = cur_match;\n best_len = len;\n if (len >= nice_match) {\n break;\n }\n scan_end1 = _win[scan + best_len - 1];\n scan_end = _win[scan + best_len];\n }\n } while ((cur_match = prev[cur_match & wmask]) > limit && --chain_length !== 0);\n\n if (best_len <= s.lookahead) {\n return best_len;\n }\n return s.lookahead;\n};\n\n\n/* ===========================================================================\n * Fill the window when the lookahead becomes insufficient.\n * Updates strstart and lookahead.\n *\n * IN assertion: lookahead < MIN_LOOKAHEAD\n * OUT assertions: strstart <= window_size-MIN_LOOKAHEAD\n * At least one byte has been read, or avail_in == 0; reads are\n * performed for at least two bytes (required for the zip translate_eol\n * option -- not supported here).\n */\nconst fill_window = (s) => {\n\n const _w_size = s.w_size;\n let n, more, str;\n\n //Assert(s->lookahead < MIN_LOOKAHEAD, \"already enough lookahead\");\n\n do {\n more = s.window_size - s.lookahead - s.strstart;\n\n // JS ints have 32 bit, block below not needed\n /* Deal with !@#$% 64K limit: */\n //if (sizeof(int) <= 2) {\n // if (more == 0 && s->strstart == 0 && s->lookahead == 0) {\n // more = wsize;\n //\n // } else if (more == (unsigned)(-1)) {\n // /* Very unlikely, but possible on 16 bit machine if\n // * strstart == 0 && lookahead == 1 (input done a byte at time)\n // */\n // more--;\n // }\n //}\n\n\n /* If the window is almost full and there is insufficient lookahead,\n * move the upper half to the lower one to make room in the upper half.\n */\n if (s.strstart >= _w_size + (_w_size - MIN_LOOKAHEAD)) {\n\n s.window.set(s.window.subarray(_w_size, _w_size + _w_size - more), 0);\n s.match_start -= _w_size;\n s.strstart -= _w_size;\n /* we now have strstart >= MAX_DIST */\n s.block_start -= _w_size;\n if (s.insert > s.strstart) {\n s.insert = s.strstart;\n }\n slide_hash(s);\n more += _w_size;\n }\n if (s.strm.avail_in === 0) {\n break;\n }\n\n /* If there was no sliding:\n * strstart <= WSIZE+MAX_DIST-1 && lookahead <= MIN_LOOKAHEAD - 1 &&\n * more == window_size - lookahead - strstart\n * => more >= window_size - (MIN_LOOKAHEAD-1 + WSIZE + MAX_DIST-1)\n * => more >= window_size - 2*WSIZE + 2\n * In the BIG_MEM or MMAP case (not yet supported),\n * window_size == input_size + MIN_LOOKAHEAD &&\n * strstart + s->lookahead <= input_size => more >= MIN_LOOKAHEAD.\n * Otherwise, window_size == 2*WSIZE so more >= 2.\n * If there was sliding, more >= WSIZE. So in all cases, more >= 2.\n */\n //Assert(more >= 2, \"more < 2\");\n n = read_buf(s.strm, s.window, s.strstart + s.lookahead, more);\n s.lookahead += n;\n\n /* Initialize the hash value now that we have some input: */\n if (s.lookahead + s.insert >= MIN_MATCH) {\n str = s.strstart - s.insert;\n s.ins_h = s.window[str];\n\n /* UPDATE_HASH(s, s->ins_h, s->window[str + 1]); */\n s.ins_h = HASH(s, s.ins_h, s.window[str + 1]);\n//#if MIN_MATCH != 3\n// Call update_hash() MIN_MATCH-3 more times\n//#endif\n while (s.insert) {\n /* UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); */\n s.ins_h = HASH(s, s.ins_h, s.window[str + MIN_MATCH - 1]);\n\n s.prev[str & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = str;\n str++;\n s.insert--;\n if (s.lookahead + s.insert < MIN_MATCH) {\n break;\n }\n }\n }\n /* If the whole input has less than MIN_MATCH bytes, ins_h is garbage,\n * but this is not important since only literal bytes will be emitted.\n */\n\n } while (s.lookahead < MIN_LOOKAHEAD && s.strm.avail_in !== 0);\n\n /* If the WIN_INIT bytes after the end of the current data have never been\n * written, then zero those bytes in order to avoid memory check reports of\n * the use of uninitialized (or uninitialised as Julian writes) bytes by\n * the longest match routines. Update the high water mark for the next\n * time through here. WIN_INIT is set to MAX_MATCH since the longest match\n * routines allow scanning to strstart + MAX_MATCH, ignoring lookahead.\n */\n// if (s.high_water < s.window_size) {\n// const curr = s.strstart + s.lookahead;\n// let init = 0;\n//\n// if (s.high_water < curr) {\n// /* Previous high water mark below current data -- zero WIN_INIT\n// * bytes or up to end of window, whichever is less.\n// */\n// init = s.window_size - curr;\n// if (init > WIN_INIT)\n// init = WIN_INIT;\n// zmemzero(s->window + curr, (unsigned)init);\n// s->high_water = curr + init;\n// }\n// else if (s->high_water < (ulg)curr + WIN_INIT) {\n// /* High water mark at or above current data, but below current data\n// * plus WIN_INIT -- zero out to current data plus WIN_INIT, or up\n// * to end of window, whichever is less.\n// */\n// init = (ulg)curr + WIN_INIT - s->high_water;\n// if (init > s->window_size - s->high_water)\n// init = s->window_size - s->high_water;\n// zmemzero(s->window + s->high_water, (unsigned)init);\n// s->high_water += init;\n// }\n// }\n//\n// Assert((ulg)s->strstart <= s->window_size - MIN_LOOKAHEAD,\n// \"not enough room for search\");\n};\n\n/* ===========================================================================\n * Copy without compression as much as possible from the input stream, return\n * the current block state.\n *\n * In case deflateParams() is used to later switch to a non-zero compression\n * level, s->matches (otherwise unused when storing) keeps track of the number\n * of hash table slides to perform. If s->matches is 1, then one hash table\n * slide will be done when switching. If s->matches is 2, the maximum value\n * allowed here, then the hash table will be cleared, since two or more slides\n * is the same as a clear.\n *\n * deflate_stored() is written to minimize the number of times an input byte is\n * copied. It is most efficient with large input and output buffers, which\n * maximizes the opportunites to have a single copy from next_in to next_out.\n */\nconst deflate_stored = (s, flush) => {\n\n /* Smallest worthy block size when not flushing or finishing. By default\n * this is 32K. This can be as small as 507 bytes for memLevel == 1. For\n * large input and output buffers, the stored block size will be larger.\n */\n let min_block = s.pending_buf_size - 5 > s.w_size ? s.w_size : s.pending_buf_size - 5;\n\n /* Copy as many min_block or larger stored blocks directly to next_out as\n * possible. If flushing, copy the remaining available input to next_out as\n * stored blocks, if there is enough space.\n */\n let len, left, have, last = 0;\n let used = s.strm.avail_in;\n do {\n /* Set len to the maximum size block that we can copy directly with the\n * available input data and output space. Set left to how much of that\n * would be copied from what's left in the window.\n */\n len = 65535/* MAX_STORED */; /* maximum deflate stored block length */\n have = (s.bi_valid + 42) >> 3; /* number of header bytes */\n if (s.strm.avail_out < have) { /* need room for header */\n break;\n }\n /* maximum stored block length that will fit in avail_out: */\n have = s.strm.avail_out - have;\n left = s.strstart - s.block_start; /* bytes left in window */\n if (len > left + s.strm.avail_in) {\n len = left + s.strm.avail_in; /* limit len to the input */\n }\n if (len > have) {\n len = have; /* limit len to the output */\n }\n\n /* If the stored block would be less than min_block in length, or if\n * unable to copy all of the available input when flushing, then try\n * copying to the window and the pending buffer instead. Also don't\n * write an empty block when flushing -- deflate() does that.\n */\n if (len < min_block && ((len === 0 && flush !== Z_FINISH) ||\n flush === Z_NO_FLUSH ||\n len !== left + s.strm.avail_in)) {\n break;\n }\n\n /* Make a dummy stored block in pending to get the header bytes,\n * including any pending bits. This also updates the debugging counts.\n */\n last = flush === Z_FINISH && len === left + s.strm.avail_in ? 1 : 0;\n _tr_stored_block(s, 0, 0, last);\n\n /* Replace the lengths in the dummy stored block with len. */\n s.pending_buf[s.pending - 4] = len;\n s.pending_buf[s.pending - 3] = len >> 8;\n s.pending_buf[s.pending - 2] = ~len;\n s.pending_buf[s.pending - 1] = ~len >> 8;\n\n /* Write the stored block header bytes. */\n flush_pending(s.strm);\n\n//#ifdef ZLIB_DEBUG\n// /* Update debugging counts for the data about to be copied. */\n// s->compressed_len += len << 3;\n// s->bits_sent += len << 3;\n//#endif\n\n /* Copy uncompressed bytes from the window to next_out. */\n if (left) {\n if (left > len) {\n left = len;\n }\n //zmemcpy(s->strm->next_out, s->window + s->block_start, left);\n s.strm.output.set(s.window.subarray(s.block_start, s.block_start + left), s.strm.next_out);\n s.strm.next_out += left;\n s.strm.avail_out -= left;\n s.strm.total_out += left;\n s.block_start += left;\n len -= left;\n }\n\n /* Copy uncompressed bytes directly from next_in to next_out, updating\n * the check value.\n */\n if (len) {\n read_buf(s.strm, s.strm.output, s.strm.next_out, len);\n s.strm.next_out += len;\n s.strm.avail_out -= len;\n s.strm.total_out += len;\n }\n } while (last === 0);\n\n /* Update the sliding window with the last s->w_size bytes of the copied\n * data, or append all of the copied data to the existing window if less\n * than s->w_size bytes were copied. Also update the number of bytes to\n * insert in the hash tables, in the event that deflateParams() switches to\n * a non-zero compression level.\n */\n used -= s.strm.avail_in; /* number of input bytes directly copied */\n if (used) {\n /* If any input was used, then no unused input remains in the window,\n * therefore s->block_start == s->strstart.\n */\n if (used >= s.w_size) { /* supplant the previous history */\n s.matches = 2; /* clear hash */\n //zmemcpy(s->window, s->strm->next_in - s->w_size, s->w_size);\n s.window.set(s.strm.input.subarray(s.strm.next_in - s.w_size, s.strm.next_in), 0);\n s.strstart = s.w_size;\n s.insert = s.strstart;\n }\n else {\n if (s.window_size - s.strstart <= used) {\n /* Slide the window down. */\n s.strstart -= s.w_size;\n //zmemcpy(s->window, s->window + s->w_size, s->strstart);\n s.window.set(s.window.subarray(s.w_size, s.w_size + s.strstart), 0);\n if (s.matches < 2) {\n s.matches++; /* add a pending slide_hash() */\n }\n if (s.insert > s.strstart) {\n s.insert = s.strstart;\n }\n }\n //zmemcpy(s->window + s->strstart, s->strm->next_in - used, used);\n s.window.set(s.strm.input.subarray(s.strm.next_in - used, s.strm.next_in), s.strstart);\n s.strstart += used;\n s.insert += used > s.w_size - s.insert ? s.w_size - s.insert : used;\n }\n s.block_start = s.strstart;\n }\n if (s.high_water < s.strstart) {\n s.high_water = s.strstart;\n }\n\n /* If the last block was written to next_out, then done. */\n if (last) {\n return BS_FINISH_DONE;\n }\n\n /* If flushing and all input has been consumed, then done. */\n if (flush !== Z_NO_FLUSH && flush !== Z_FINISH &&\n s.strm.avail_in === 0 && s.strstart === s.block_start) {\n return BS_BLOCK_DONE;\n }\n\n /* Fill the window with any remaining input. */\n have = s.window_size - s.strstart;\n if (s.strm.avail_in > have && s.block_start >= s.w_size) {\n /* Slide the window down. */\n s.block_start -= s.w_size;\n s.strstart -= s.w_size;\n //zmemcpy(s->window, s->window + s->w_size, s->strstart);\n s.window.set(s.window.subarray(s.w_size, s.w_size + s.strstart), 0);\n if (s.matches < 2) {\n s.matches++; /* add a pending slide_hash() */\n }\n have += s.w_size; /* more space now */\n if (s.insert > s.strstart) {\n s.insert = s.strstart;\n }\n }\n if (have > s.strm.avail_in) {\n have = s.strm.avail_in;\n }\n if (have) {\n read_buf(s.strm, s.window, s.strstart, have);\n s.strstart += have;\n s.insert += have > s.w_size - s.insert ? s.w_size - s.insert : have;\n }\n if (s.high_water < s.strstart) {\n s.high_water = s.strstart;\n }\n\n /* There was not enough avail_out to write a complete worthy or flushed\n * stored block to next_out. Write a stored block to pending instead, if we\n * have enough input for a worthy block, or if flushing and there is enough\n * room for the remaining input as a stored block in the pending buffer.\n */\n have = (s.bi_valid + 42) >> 3; /* number of header bytes */\n /* maximum stored block length that will fit in pending: */\n have = s.pending_buf_size - have > 65535/* MAX_STORED */ ? 65535/* MAX_STORED */ : s.pending_buf_size - have;\n min_block = have > s.w_size ? s.w_size : have;\n left = s.strstart - s.block_start;\n if (left >= min_block ||\n ((left || flush === Z_FINISH) && flush !== Z_NO_FLUSH &&\n s.strm.avail_in === 0 && left <= have)) {\n len = left > have ? have : left;\n last = flush === Z_FINISH && s.strm.avail_in === 0 &&\n len === left ? 1 : 0;\n _tr_stored_block(s, s.block_start, len, last);\n s.block_start += len;\n flush_pending(s.strm);\n }\n\n /* We've done all we can with the available input and output. */\n return last ? BS_FINISH_STARTED : BS_NEED_MORE;\n};\n\n\n/* ===========================================================================\n * Compress as much as possible from the input stream, return the current\n * block state.\n * This function does not perform lazy evaluation of matches and inserts\n * new strings in the dictionary only for unmatched strings or for short\n * matches. It is used only for the fast compression options.\n */\nconst deflate_fast = (s, flush) => {\n\n let hash_head; /* head of the hash chain */\n let bflush; /* set if current block must be flushed */\n\n for (;;) {\n /* Make sure that we always have enough lookahead, except\n * at the end of the input file. We need MAX_MATCH bytes\n * for the next match, plus MIN_MATCH bytes to insert the\n * string following the next match.\n */\n if (s.lookahead < MIN_LOOKAHEAD) {\n fill_window(s);\n if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n if (s.lookahead === 0) {\n break; /* flush the current block */\n }\n }\n\n /* Insert the string window[strstart .. strstart+2] in the\n * dictionary, and set hash_head to the head of the hash chain:\n */\n hash_head = 0/*NIL*/;\n if (s.lookahead >= MIN_MATCH) {\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = HASH(s, s.ins_h, s.window[s.strstart + MIN_MATCH - 1]);\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n }\n\n /* Find the longest match, discarding those <= prev_length.\n * At this point we have always match_length < MIN_MATCH\n */\n if (hash_head !== 0/*NIL*/ && ((s.strstart - hash_head) <= (s.w_size - MIN_LOOKAHEAD))) {\n /* To simplify the code, we prevent matches with the string\n * of window index 0 (in particular we have to avoid a match\n * of the string with itself at the start of the input file).\n */\n s.match_length = longest_match(s, hash_head);\n /* longest_match() sets match_start */\n }\n if (s.match_length >= MIN_MATCH) {\n // check_match(s, s.strstart, s.match_start, s.match_length); // for debug only\n\n /*** _tr_tally_dist(s, s.strstart - s.match_start,\n s.match_length - MIN_MATCH, bflush); ***/\n bflush = _tr_tally(s, s.strstart - s.match_start, s.match_length - MIN_MATCH);\n\n s.lookahead -= s.match_length;\n\n /* Insert new strings in the hash table only if the match length\n * is not too large. This saves time but degrades compression.\n */\n if (s.match_length <= s.max_lazy_match/*max_insert_length*/ && s.lookahead >= MIN_MATCH) {\n s.match_length--; /* string at strstart already in table */\n do {\n s.strstart++;\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = HASH(s, s.ins_h, s.window[s.strstart + MIN_MATCH - 1]);\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n /* strstart never exceeds WSIZE-MAX_MATCH, so there are\n * always MIN_MATCH bytes ahead.\n */\n } while (--s.match_length !== 0);\n s.strstart++;\n } else\n {\n s.strstart += s.match_length;\n s.match_length = 0;\n s.ins_h = s.window[s.strstart];\n /* UPDATE_HASH(s, s.ins_h, s.window[s.strstart+1]); */\n s.ins_h = HASH(s, s.ins_h, s.window[s.strstart + 1]);\n\n//#if MIN_MATCH != 3\n// Call UPDATE_HASH() MIN_MATCH-3 more times\n//#endif\n /* If lookahead < MIN_MATCH, ins_h is garbage, but it does not\n * matter since it will be recomputed at next deflate call.\n */\n }\n } else {\n /* No match, output a literal byte */\n //Tracevv((stderr,\"%c\", s.window[s.strstart]));\n /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n bflush = _tr_tally(s, 0, s.window[s.strstart]);\n\n s.lookahead--;\n s.strstart++;\n }\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n s.insert = ((s.strstart < (MIN_MATCH - 1)) ? s.strstart : MIN_MATCH - 1);\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.sym_next) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n return BS_BLOCK_DONE;\n};\n\n/* ===========================================================================\n * Same as above, but achieves better compression. We use a lazy\n * evaluation for matches: a match is finally adopted only if there is\n * no better match at the next window position.\n */\nconst deflate_slow = (s, flush) => {\n\n let hash_head; /* head of hash chain */\n let bflush; /* set if current block must be flushed */\n\n let max_insert;\n\n /* Process the input block. */\n for (;;) {\n /* Make sure that we always have enough lookahead, except\n * at the end of the input file. We need MAX_MATCH bytes\n * for the next match, plus MIN_MATCH bytes to insert the\n * string following the next match.\n */\n if (s.lookahead < MIN_LOOKAHEAD) {\n fill_window(s);\n if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n if (s.lookahead === 0) { break; } /* flush the current block */\n }\n\n /* Insert the string window[strstart .. strstart+2] in the\n * dictionary, and set hash_head to the head of the hash chain:\n */\n hash_head = 0/*NIL*/;\n if (s.lookahead >= MIN_MATCH) {\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = HASH(s, s.ins_h, s.window[s.strstart + MIN_MATCH - 1]);\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n }\n\n /* Find the longest match, discarding those <= prev_length.\n */\n s.prev_length = s.match_length;\n s.prev_match = s.match_start;\n s.match_length = MIN_MATCH - 1;\n\n if (hash_head !== 0/*NIL*/ && s.prev_length < s.max_lazy_match &&\n s.strstart - hash_head <= (s.w_size - MIN_LOOKAHEAD)/*MAX_DIST(s)*/) {\n /* To simplify the code, we prevent matches with the string\n * of window index 0 (in particular we have to avoid a match\n * of the string with itself at the start of the input file).\n */\n s.match_length = longest_match(s, hash_head);\n /* longest_match() sets match_start */\n\n if (s.match_length <= 5 &&\n (s.strategy === Z_FILTERED || (s.match_length === MIN_MATCH && s.strstart - s.match_start > 4096/*TOO_FAR*/))) {\n\n /* If prev_match is also MIN_MATCH, match_start is garbage\n * but we will ignore the current match anyway.\n */\n s.match_length = MIN_MATCH - 1;\n }\n }\n /* If there was a match at the previous step and the current\n * match is not better, output the previous match:\n */\n if (s.prev_length >= MIN_MATCH && s.match_length <= s.prev_length) {\n max_insert = s.strstart + s.lookahead - MIN_MATCH;\n /* Do not insert strings in hash table beyond this. */\n\n //check_match(s, s.strstart-1, s.prev_match, s.prev_length);\n\n /***_tr_tally_dist(s, s.strstart - 1 - s.prev_match,\n s.prev_length - MIN_MATCH, bflush);***/\n bflush = _tr_tally(s, s.strstart - 1 - s.prev_match, s.prev_length - MIN_MATCH);\n /* Insert in hash table all strings up to the end of the match.\n * strstart-1 and strstart are already inserted. If there is not\n * enough lookahead, the last two strings are not inserted in\n * the hash table.\n */\n s.lookahead -= s.prev_length - 1;\n s.prev_length -= 2;\n do {\n if (++s.strstart <= max_insert) {\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = HASH(s, s.ins_h, s.window[s.strstart + MIN_MATCH - 1]);\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n }\n } while (--s.prev_length !== 0);\n s.match_available = 0;\n s.match_length = MIN_MATCH - 1;\n s.strstart++;\n\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n\n } else if (s.match_available) {\n /* If there was no match at the previous position, output a\n * single literal. If there was a match but the current match\n * is longer, truncate the previous match to a single literal.\n */\n //Tracevv((stderr,\"%c\", s->window[s->strstart-1]));\n /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/\n bflush = _tr_tally(s, 0, s.window[s.strstart - 1]);\n\n if (bflush) {\n /*** FLUSH_BLOCK_ONLY(s, 0) ***/\n flush_block_only(s, false);\n /***/\n }\n s.strstart++;\n s.lookahead--;\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n } else {\n /* There is no previous match to compare with, wait for\n * the next step to decide.\n */\n s.match_available = 1;\n s.strstart++;\n s.lookahead--;\n }\n }\n //Assert (flush != Z_NO_FLUSH, \"no flush?\");\n if (s.match_available) {\n //Tracevv((stderr,\"%c\", s->window[s->strstart-1]));\n /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/\n bflush = _tr_tally(s, 0, s.window[s.strstart - 1]);\n\n s.match_available = 0;\n }\n s.insert = s.strstart < MIN_MATCH - 1 ? s.strstart : MIN_MATCH - 1;\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.sym_next) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n\n return BS_BLOCK_DONE;\n};\n\n\n/* ===========================================================================\n * For Z_RLE, simply look for runs of bytes, generate matches only of distance\n * one. Do not maintain a hash table. (It will be regenerated if this run of\n * deflate switches away from Z_RLE.)\n */\nconst deflate_rle = (s, flush) => {\n\n let bflush; /* set if current block must be flushed */\n let prev; /* byte at distance one to match */\n let scan, strend; /* scan goes up to strend for length of run */\n\n const _win = s.window;\n\n for (;;) {\n /* Make sure that we always have enough lookahead, except\n * at the end of the input file. We need MAX_MATCH bytes\n * for the longest run, plus one for the unrolled loop.\n */\n if (s.lookahead <= MAX_MATCH) {\n fill_window(s);\n if (s.lookahead <= MAX_MATCH && flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n if (s.lookahead === 0) { break; } /* flush the current block */\n }\n\n /* See how many times the previous byte repeats */\n s.match_length = 0;\n if (s.lookahead >= MIN_MATCH && s.strstart > 0) {\n scan = s.strstart - 1;\n prev = _win[scan];\n if (prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan]) {\n strend = s.strstart + MAX_MATCH;\n do {\n /*jshint noempty:false*/\n } while (prev === _win[++scan] && prev === _win[++scan] &&\n prev === _win[++scan] && prev === _win[++scan] &&\n prev === _win[++scan] && prev === _win[++scan] &&\n prev === _win[++scan] && prev === _win[++scan] &&\n scan < strend);\n s.match_length = MAX_MATCH - (strend - scan);\n if (s.match_length > s.lookahead) {\n s.match_length = s.lookahead;\n }\n }\n //Assert(scan <= s->window+(uInt)(s->window_size-1), \"wild scan\");\n }\n\n /* Emit match if have run of MIN_MATCH or longer, else emit literal */\n if (s.match_length >= MIN_MATCH) {\n //check_match(s, s.strstart, s.strstart - 1, s.match_length);\n\n /*** _tr_tally_dist(s, 1, s.match_length - MIN_MATCH, bflush); ***/\n bflush = _tr_tally(s, 1, s.match_length - MIN_MATCH);\n\n s.lookahead -= s.match_length;\n s.strstart += s.match_length;\n s.match_length = 0;\n } else {\n /* No match, output a literal byte */\n //Tracevv((stderr,\"%c\", s->window[s->strstart]));\n /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n bflush = _tr_tally(s, 0, s.window[s.strstart]);\n\n s.lookahead--;\n s.strstart++;\n }\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n s.insert = 0;\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.sym_next) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n return BS_BLOCK_DONE;\n};\n\n/* ===========================================================================\n * For Z_HUFFMAN_ONLY, do not look for matches. Do not maintain a hash table.\n * (It will be regenerated if this run of deflate switches away from Huffman.)\n */\nconst deflate_huff = (s, flush) => {\n\n let bflush; /* set if current block must be flushed */\n\n for (;;) {\n /* Make sure that we have a literal to write. */\n if (s.lookahead === 0) {\n fill_window(s);\n if (s.lookahead === 0) {\n if (flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n break; /* flush the current block */\n }\n }\n\n /* Output a literal byte */\n s.match_length = 0;\n //Tracevv((stderr,\"%c\", s->window[s->strstart]));\n /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n bflush = _tr_tally(s, 0, s.window[s.strstart]);\n s.lookahead--;\n s.strstart++;\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n s.insert = 0;\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.sym_next) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n return BS_BLOCK_DONE;\n};\n\n/* Values for max_lazy_match, good_match and max_chain_length, depending on\n * the desired pack level (0..9). The values given below have been tuned to\n * exclude worst case performance for pathological files. Better values may be\n * found for specific files.\n */\nfunction Config(good_length, max_lazy, nice_length, max_chain, func) {\n\n this.good_length = good_length;\n this.max_lazy = max_lazy;\n this.nice_length = nice_length;\n this.max_chain = max_chain;\n this.func = func;\n}\n\nconst configuration_table = [\n /* good lazy nice chain */\n new Config(0, 0, 0, 0, deflate_stored), /* 0 store only */\n new Config(4, 4, 8, 4, deflate_fast), /* 1 max speed, no lazy matches */\n new Config(4, 5, 16, 8, deflate_fast), /* 2 */\n new Config(4, 6, 32, 32, deflate_fast), /* 3 */\n\n new Config(4, 4, 16, 16, deflate_slow), /* 4 lazy matches */\n new Config(8, 16, 32, 32, deflate_slow), /* 5 */\n new Config(8, 16, 128, 128, deflate_slow), /* 6 */\n new Config(8, 32, 128, 256, deflate_slow), /* 7 */\n new Config(32, 128, 258, 1024, deflate_slow), /* 8 */\n new Config(32, 258, 258, 4096, deflate_slow) /* 9 max compression */\n];\n\n\n/* ===========================================================================\n * Initialize the \"longest match\" routines for a new zlib stream\n */\nconst lm_init = (s) => {\n\n s.window_size = 2 * s.w_size;\n\n /*** CLEAR_HASH(s); ***/\n zero(s.head); // Fill with NIL (= 0);\n\n /* Set the default configuration parameters:\n */\n s.max_lazy_match = configuration_table[s.level].max_lazy;\n s.good_match = configuration_table[s.level].good_length;\n s.nice_match = configuration_table[s.level].nice_length;\n s.max_chain_length = configuration_table[s.level].max_chain;\n\n s.strstart = 0;\n s.block_start = 0;\n s.lookahead = 0;\n s.insert = 0;\n s.match_length = s.prev_length = MIN_MATCH - 1;\n s.match_available = 0;\n s.ins_h = 0;\n};\n\n\nfunction DeflateState() {\n this.strm = null; /* pointer back to this zlib stream */\n this.status = 0; /* as the name implies */\n this.pending_buf = null; /* output still pending */\n this.pending_buf_size = 0; /* size of pending_buf */\n this.pending_out = 0; /* next pending byte to output to the stream */\n this.pending = 0; /* nb of bytes in the pending buffer */\n this.wrap = 0; /* bit 0 true for zlib, bit 1 true for gzip */\n this.gzhead = null; /* gzip header information to write */\n this.gzindex = 0; /* where in extra, name, or comment */\n this.method = Z_DEFLATED; /* can only be DEFLATED */\n this.last_flush = -1; /* value of flush param for previous deflate call */\n\n this.w_size = 0; /* LZ77 window size (32K by default) */\n this.w_bits = 0; /* log2(w_size) (8..16) */\n this.w_mask = 0; /* w_size - 1 */\n\n this.window = null;\n /* Sliding window. Input bytes are read into the second half of the window,\n * and move to the first half later to keep a dictionary of at least wSize\n * bytes. With this organization, matches are limited to a distance of\n * wSize-MAX_MATCH bytes, but this ensures that IO is always\n * performed with a length multiple of the block size.\n */\n\n this.window_size = 0;\n /* Actual size of window: 2*wSize, except when the user input buffer\n * is directly used as sliding window.\n */\n\n this.prev = null;\n /* Link to older string with same hash index. To limit the size of this\n * array to 64K, this link is maintained only for the last 32K strings.\n * An index in this array is thus a window index modulo 32K.\n */\n\n this.head = null; /* Heads of the hash chains or NIL. */\n\n this.ins_h = 0; /* hash index of string to be inserted */\n this.hash_size = 0; /* number of elements in hash table */\n this.hash_bits = 0; /* log2(hash_size) */\n this.hash_mask = 0; /* hash_size-1 */\n\n this.hash_shift = 0;\n /* Number of bits by which ins_h must be shifted at each input\n * step. It must be such that after MIN_MATCH steps, the oldest\n * byte no longer takes part in the hash key, that is:\n * hash_shift * MIN_MATCH >= hash_bits\n */\n\n this.block_start = 0;\n /* Window position at the beginning of the current output block. Gets\n * negative when the window is moved backwards.\n */\n\n this.match_length = 0; /* length of best match */\n this.prev_match = 0; /* previous match */\n this.match_available = 0; /* set if previous match exists */\n this.strstart = 0; /* start of string to insert */\n this.match_start = 0; /* start of matching string */\n this.lookahead = 0; /* number of valid bytes ahead in window */\n\n this.prev_length = 0;\n /* Length of the best match at previous step. Matches not greater than this\n * are discarded. This is used in the lazy match evaluation.\n */\n\n this.max_chain_length = 0;\n /* To speed up deflation, hash chains are never searched beyond this\n * length. A higher limit improves compression ratio but degrades the\n * speed.\n */\n\n this.max_lazy_match = 0;\n /* Attempt to find a better match only when the current match is strictly\n * smaller than this value. This mechanism is used only for compression\n * levels >= 4.\n */\n // That's alias to max_lazy_match, don't use directly\n //this.max_insert_length = 0;\n /* Insert new strings in the hash table only if the match length is not\n * greater than this length. This saves time but degrades compression.\n * max_insert_length is used only for compression levels <= 3.\n */\n\n this.level = 0; /* compression level (1..9) */\n this.strategy = 0; /* favor or force Huffman coding*/\n\n this.good_match = 0;\n /* Use a faster search when the previous match is longer than this */\n\n this.nice_match = 0; /* Stop searching when current match exceeds this */\n\n /* used by trees.c: */\n\n /* Didn't use ct_data typedef below to suppress compiler warning */\n\n // struct ct_data_s dyn_ltree[HEAP_SIZE]; /* literal and length tree */\n // struct ct_data_s dyn_dtree[2*D_CODES+1]; /* distance tree */\n // struct ct_data_s bl_tree[2*BL_CODES+1]; /* Huffman tree for bit lengths */\n\n // Use flat array of DOUBLE size, with interleaved fata,\n // because JS does not support effective\n this.dyn_ltree = new Uint16Array(HEAP_SIZE * 2);\n this.dyn_dtree = new Uint16Array((2 * D_CODES + 1) * 2);\n this.bl_tree = new Uint16Array((2 * BL_CODES + 1) * 2);\n zero(this.dyn_ltree);\n zero(this.dyn_dtree);\n zero(this.bl_tree);\n\n this.l_desc = null; /* desc. for literal tree */\n this.d_desc = null; /* desc. for distance tree */\n this.bl_desc = null; /* desc. for bit length tree */\n\n //ush bl_count[MAX_BITS+1];\n this.bl_count = new Uint16Array(MAX_BITS + 1);\n /* number of codes at each bit length for an optimal tree */\n\n //int heap[2*L_CODES+1]; /* heap used to build the Huffman trees */\n this.heap = new Uint16Array(2 * L_CODES + 1); /* heap used to build the Huffman trees */\n zero(this.heap);\n\n this.heap_len = 0; /* number of elements in the heap */\n this.heap_max = 0; /* element of largest frequency */\n /* The sons of heap[n] are heap[2*n] and heap[2*n+1]. heap[0] is not used.\n * The same heap array is used to build all trees.\n */\n\n this.depth = new Uint16Array(2 * L_CODES + 1); //uch depth[2*L_CODES+1];\n zero(this.depth);\n /* Depth of each subtree used as tie breaker for trees of equal frequency\n */\n\n this.sym_buf = 0; /* buffer for distances and literals/lengths */\n\n this.lit_bufsize = 0;\n /* Size of match buffer for literals/lengths. There are 4 reasons for\n * limiting lit_bufsize to 64K:\n * - frequencies can be kept in 16 bit counters\n * - if compression is not successful for the first block, all input\n * data is still in the window so we can still emit a stored block even\n * when input comes from standard input. (This can also be done for\n * all blocks if lit_bufsize is not greater than 32K.)\n * - if compression is not successful for a file smaller than 64K, we can\n * even emit a stored file instead of a stored block (saving 5 bytes).\n * This is applicable only for zip (not gzip or zlib).\n * - creating new Huffman trees less frequently may not provide fast\n * adaptation to changes in the input data statistics. (Take for\n * example a binary file with poorly compressible code followed by\n * a highly compressible string table.) Smaller buffer sizes give\n * fast adaptation but have of course the overhead of transmitting\n * trees more frequently.\n * - I can't count above 4\n */\n\n this.sym_next = 0; /* running index in sym_buf */\n this.sym_end = 0; /* symbol table full when sym_next reaches this */\n\n this.opt_len = 0; /* bit length of current block with optimal trees */\n this.static_len = 0; /* bit length of current block with static trees */\n this.matches = 0; /* number of string matches in current block */\n this.insert = 0; /* bytes at end of window left to insert */\n\n\n this.bi_buf = 0;\n /* Output buffer. bits are inserted starting at the bottom (least\n * significant bits).\n */\n this.bi_valid = 0;\n /* Number of valid bits in bi_buf. All bits above the last valid bit\n * are always zero.\n */\n\n // Used for window memory init. We safely ignore it for JS. That makes\n // sense only for pointers and memory check tools.\n //this.high_water = 0;\n /* High water mark offset in window for initialized bytes -- bytes above\n * this are set to zero in order to avoid memory check warnings when\n * longest match routines access bytes past the input. This is then\n * updated to the new high water mark.\n */\n}\n\n\n/* =========================================================================\n * Check for a valid deflate stream state. Return 0 if ok, 1 if not.\n */\nconst deflateStateCheck = (strm) => {\n\n if (!strm) {\n return 1;\n }\n const s = strm.state;\n if (!s || s.strm !== strm || (s.status !== INIT_STATE &&\n//#ifdef GZIP\n s.status !== GZIP_STATE &&\n//#endif\n s.status !== EXTRA_STATE &&\n s.status !== NAME_STATE &&\n s.status !== COMMENT_STATE &&\n s.status !== HCRC_STATE &&\n s.status !== BUSY_STATE &&\n s.status !== FINISH_STATE)) {\n return 1;\n }\n return 0;\n};\n\n\nconst deflateResetKeep = (strm) => {\n\n if (deflateStateCheck(strm)) {\n return err(strm, Z_STREAM_ERROR);\n }\n\n strm.total_in = strm.total_out = 0;\n strm.data_type = Z_UNKNOWN;\n\n const s = strm.state;\n s.pending = 0;\n s.pending_out = 0;\n\n if (s.wrap < 0) {\n s.wrap = -s.wrap;\n /* was made negative by deflate(..., Z_FINISH); */\n }\n s.status =\n//#ifdef GZIP\n s.wrap === 2 ? GZIP_STATE :\n//#endif\n s.wrap ? INIT_STATE : BUSY_STATE;\n strm.adler = (s.wrap === 2) ?\n 0 // crc32(0, Z_NULL, 0)\n :\n 1; // adler32(0, Z_NULL, 0)\n s.last_flush = -2;\n _tr_init(s);\n return Z_OK;\n};\n\n\nconst deflateReset = (strm) => {\n\n const ret = deflateResetKeep(strm);\n if (ret === Z_OK) {\n lm_init(strm.state);\n }\n return ret;\n};\n\n\nconst deflateSetHeader = (strm, head) => {\n\n if (deflateStateCheck(strm) || strm.state.wrap !== 2) {\n return Z_STREAM_ERROR;\n }\n strm.state.gzhead = head;\n return Z_OK;\n};\n\n\nconst deflateInit2 = (strm, level, method, windowBits, memLevel, strategy) => {\n\n if (!strm) { // === Z_NULL\n return Z_STREAM_ERROR;\n }\n let wrap = 1;\n\n if (level === Z_DEFAULT_COMPRESSION) {\n level = 6;\n }\n\n if (windowBits < 0) { /* suppress zlib wrapper */\n wrap = 0;\n windowBits = -windowBits;\n }\n\n else if (windowBits > 15) {\n wrap = 2; /* write gzip wrapper instead */\n windowBits -= 16;\n }\n\n\n if (memLevel < 1 || memLevel > MAX_MEM_LEVEL || method !== Z_DEFLATED ||\n windowBits < 8 || windowBits > 15 || level < 0 || level > 9 ||\n strategy < 0 || strategy > Z_FIXED || (windowBits === 8 && wrap !== 1)) {\n return err(strm, Z_STREAM_ERROR);\n }\n\n\n if (windowBits === 8) {\n windowBits = 9;\n }\n /* until 256-byte window bug fixed */\n\n const s = new DeflateState();\n\n strm.state = s;\n s.strm = strm;\n s.status = INIT_STATE; /* to pass state test in deflateReset() */\n\n s.wrap = wrap;\n s.gzhead = null;\n s.w_bits = windowBits;\n s.w_size = 1 << s.w_bits;\n s.w_mask = s.w_size - 1;\n\n s.hash_bits = memLevel + 7;\n s.hash_size = 1 << s.hash_bits;\n s.hash_mask = s.hash_size - 1;\n s.hash_shift = ~~((s.hash_bits + MIN_MATCH - 1) / MIN_MATCH);\n\n s.window = new Uint8Array(s.w_size * 2);\n s.head = new Uint16Array(s.hash_size);\n s.prev = new Uint16Array(s.w_size);\n\n // Don't need mem init magic for JS.\n //s.high_water = 0; /* nothing written to s->window yet */\n\n s.lit_bufsize = 1 << (memLevel + 6); /* 16K elements by default */\n\n /* We overlay pending_buf and sym_buf. This works since the average size\n * for length/distance pairs over any compressed block is assured to be 31\n * bits or less.\n *\n * Analysis: The longest fixed codes are a length code of 8 bits plus 5\n * extra bits, for lengths 131 to 257. The longest fixed distance codes are\n * 5 bits plus 13 extra bits, for distances 16385 to 32768. The longest\n * possible fixed-codes length/distance pair is then 31 bits total.\n *\n * sym_buf starts one-fourth of the way into pending_buf. So there are\n * three bytes in sym_buf for every four bytes in pending_buf. Each symbol\n * in sym_buf is three bytes -- two for the distance and one for the\n * literal/length. As each symbol is consumed, the pointer to the next\n * sym_buf value to read moves forward three bytes. From that symbol, up to\n * 31 bits are written to pending_buf. The closest the written pending_buf\n * bits gets to the next sym_buf symbol to read is just before the last\n * code is written. At that time, 31*(n-2) bits have been written, just\n * after 24*(n-2) bits have been consumed from sym_buf. sym_buf starts at\n * 8*n bits into pending_buf. (Note that the symbol buffer fills when n-1\n * symbols are written.) The closest the writing gets to what is unread is\n * then n+14 bits. Here n is lit_bufsize, which is 16384 by default, and\n * can range from 128 to 32768.\n *\n * Therefore, at a minimum, there are 142 bits of space between what is\n * written and what is read in the overlain buffers, so the symbols cannot\n * be overwritten by the compressed data. That space is actually 139 bits,\n * due to the three-bit fixed-code block header.\n *\n * That covers the case where either Z_FIXED is specified, forcing fixed\n * codes, or when the use of fixed codes is chosen, because that choice\n * results in a smaller compressed block than dynamic codes. That latter\n * condition then assures that the above analysis also covers all dynamic\n * blocks. A dynamic-code block will only be chosen to be emitted if it has\n * fewer bits than a fixed-code block would for the same set of symbols.\n * Therefore its average symbol length is assured to be less than 31. So\n * the compressed data for a dynamic block also cannot overwrite the\n * symbols from which it is being constructed.\n */\n\n s.pending_buf_size = s.lit_bufsize * 4;\n s.pending_buf = new Uint8Array(s.pending_buf_size);\n\n // It is offset from `s.pending_buf` (size is `s.lit_bufsize * 2`)\n //s->sym_buf = s->pending_buf + s->lit_bufsize;\n s.sym_buf = s.lit_bufsize;\n\n //s->sym_end = (s->lit_bufsize - 1) * 3;\n s.sym_end = (s.lit_bufsize - 1) * 3;\n /* We avoid equality with lit_bufsize*3 because of wraparound at 64K\n * on 16 bit machines and because stored blocks are restricted to\n * 64K-1 bytes.\n */\n\n s.level = level;\n s.strategy = strategy;\n s.method = method;\n\n return deflateReset(strm);\n};\n\nconst deflateInit = (strm, level) => {\n\n return deflateInit2(strm, level, Z_DEFLATED, MAX_WBITS, DEF_MEM_LEVEL, Z_DEFAULT_STRATEGY);\n};\n\n\n/* ========================================================================= */\nconst deflate = (strm, flush) => {\n\n if (deflateStateCheck(strm) || flush > Z_BLOCK || flush < 0) {\n return strm ? err(strm, Z_STREAM_ERROR) : Z_STREAM_ERROR;\n }\n\n const s = strm.state;\n\n if (!strm.output ||\n (strm.avail_in !== 0 && !strm.input) ||\n (s.status === FINISH_STATE && flush !== Z_FINISH)) {\n return err(strm, (strm.avail_out === 0) ? Z_BUF_ERROR : Z_STREAM_ERROR);\n }\n\n const old_flush = s.last_flush;\n s.last_flush = flush;\n\n /* Flush as much pending output as possible */\n if (s.pending !== 0) {\n flush_pending(strm);\n if (strm.avail_out === 0) {\n /* Since avail_out is 0, deflate will be called again with\n * more output space, but possibly with both pending and\n * avail_in equal to zero. There won't be anything to do,\n * but this is not an error situation so make sure we\n * return OK instead of BUF_ERROR at next call of deflate:\n */\n s.last_flush = -1;\n return Z_OK;\n }\n\n /* Make sure there is something to do and avoid duplicate consecutive\n * flushes. For repeated and useless calls with Z_FINISH, we keep\n * returning Z_STREAM_END instead of Z_BUF_ERROR.\n */\n } else if (strm.avail_in === 0 && rank(flush) <= rank(old_flush) &&\n flush !== Z_FINISH) {\n return err(strm, Z_BUF_ERROR);\n }\n\n /* User must not provide more input after the first FINISH: */\n if (s.status === FINISH_STATE && strm.avail_in !== 0) {\n return err(strm, Z_BUF_ERROR);\n }\n\n /* Write the header */\n if (s.status === INIT_STATE && s.wrap === 0) {\n s.status = BUSY_STATE;\n }\n if (s.status === INIT_STATE) {\n /* zlib header */\n let header = (Z_DEFLATED + ((s.w_bits - 8) << 4)) << 8;\n let level_flags = -1;\n\n if (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2) {\n level_flags = 0;\n } else if (s.level < 6) {\n level_flags = 1;\n } else if (s.level === 6) {\n level_flags = 2;\n } else {\n level_flags = 3;\n }\n header |= (level_flags << 6);\n if (s.strstart !== 0) { header |= PRESET_DICT; }\n header += 31 - (header % 31);\n\n putShortMSB(s, header);\n\n /* Save the adler32 of the preset dictionary: */\n if (s.strstart !== 0) {\n putShortMSB(s, strm.adler >>> 16);\n putShortMSB(s, strm.adler & 0xffff);\n }\n strm.adler = 1; // adler32(0L, Z_NULL, 0);\n s.status = BUSY_STATE;\n\n /* Compression must start with an empty pending buffer */\n flush_pending(strm);\n if (s.pending !== 0) {\n s.last_flush = -1;\n return Z_OK;\n }\n }\n//#ifdef GZIP\n if (s.status === GZIP_STATE) {\n /* gzip header */\n strm.adler = 0; //crc32(0L, Z_NULL, 0);\n put_byte(s, 31);\n put_byte(s, 139);\n put_byte(s, 8);\n if (!s.gzhead) { // s->gzhead == Z_NULL\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, s.level === 9 ? 2 :\n (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ?\n 4 : 0));\n put_byte(s, OS_CODE);\n s.status = BUSY_STATE;\n\n /* Compression must start with an empty pending buffer */\n flush_pending(strm);\n if (s.pending !== 0) {\n s.last_flush = -1;\n return Z_OK;\n }\n }\n else {\n put_byte(s, (s.gzhead.text ? 1 : 0) +\n (s.gzhead.hcrc ? 2 : 0) +\n (!s.gzhead.extra ? 0 : 4) +\n (!s.gzhead.name ? 0 : 8) +\n (!s.gzhead.comment ? 0 : 16)\n );\n put_byte(s, s.gzhead.time & 0xff);\n put_byte(s, (s.gzhead.time >> 8) & 0xff);\n put_byte(s, (s.gzhead.time >> 16) & 0xff);\n put_byte(s, (s.gzhead.time >> 24) & 0xff);\n put_byte(s, s.level === 9 ? 2 :\n (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ?\n 4 : 0));\n put_byte(s, s.gzhead.os & 0xff);\n if (s.gzhead.extra && s.gzhead.extra.length) {\n put_byte(s, s.gzhead.extra.length & 0xff);\n put_byte(s, (s.gzhead.extra.length >> 8) & 0xff);\n }\n if (s.gzhead.hcrc) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending, 0);\n }\n s.gzindex = 0;\n s.status = EXTRA_STATE;\n }\n }\n if (s.status === EXTRA_STATE) {\n if (s.gzhead.extra/* != Z_NULL*/) {\n let beg = s.pending; /* start of bytes to update crc */\n let left = (s.gzhead.extra.length & 0xffff) - s.gzindex;\n while (s.pending + left > s.pending_buf_size) {\n let copy = s.pending_buf_size - s.pending;\n // zmemcpy(s.pending_buf + s.pending,\n // s.gzhead.extra + s.gzindex, copy);\n s.pending_buf.set(s.gzhead.extra.subarray(s.gzindex, s.gzindex + copy), s.pending);\n s.pending = s.pending_buf_size;\n //--- HCRC_UPDATE(beg) ---//\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n //---//\n s.gzindex += copy;\n flush_pending(strm);\n if (s.pending !== 0) {\n s.last_flush = -1;\n return Z_OK;\n }\n beg = 0;\n left -= copy;\n }\n // JS specific: s.gzhead.extra may be TypedArray or Array for backward compatibility\n // TypedArray.slice and TypedArray.from don't exist in IE10-IE11\n let gzhead_extra = new Uint8Array(s.gzhead.extra);\n // zmemcpy(s->pending_buf + s->pending,\n // s->gzhead->extra + s->gzindex, left);\n s.pending_buf.set(gzhead_extra.subarray(s.gzindex, s.gzindex + left), s.pending);\n s.pending += left;\n //--- HCRC_UPDATE(beg) ---//\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n //---//\n s.gzindex = 0;\n }\n s.status = NAME_STATE;\n }\n if (s.status === NAME_STATE) {\n if (s.gzhead.name/* != Z_NULL*/) {\n let beg = s.pending; /* start of bytes to update crc */\n let val;\n do {\n if (s.pending === s.pending_buf_size) {\n //--- HCRC_UPDATE(beg) ---//\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n //---//\n flush_pending(strm);\n if (s.pending !== 0) {\n s.last_flush = -1;\n return Z_OK;\n }\n beg = 0;\n }\n // JS specific: little magic to add zero terminator to end of string\n if (s.gzindex < s.gzhead.name.length) {\n val = s.gzhead.name.charCodeAt(s.gzindex++) & 0xff;\n } else {\n val = 0;\n }\n put_byte(s, val);\n } while (val !== 0);\n //--- HCRC_UPDATE(beg) ---//\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n //---//\n s.gzindex = 0;\n }\n s.status = COMMENT_STATE;\n }\n if (s.status === COMMENT_STATE) {\n if (s.gzhead.comment/* != Z_NULL*/) {\n let beg = s.pending; /* start of bytes to update crc */\n let val;\n do {\n if (s.pending === s.pending_buf_size) {\n //--- HCRC_UPDATE(beg) ---//\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n //---//\n flush_pending(strm);\n if (s.pending !== 0) {\n s.last_flush = -1;\n return Z_OK;\n }\n beg = 0;\n }\n // JS specific: little magic to add zero terminator to end of string\n if (s.gzindex < s.gzhead.comment.length) {\n val = s.gzhead.comment.charCodeAt(s.gzindex++) & 0xff;\n } else {\n val = 0;\n }\n put_byte(s, val);\n } while (val !== 0);\n //--- HCRC_UPDATE(beg) ---//\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n //---//\n }\n s.status = HCRC_STATE;\n }\n if (s.status === HCRC_STATE) {\n if (s.gzhead.hcrc) {\n if (s.pending + 2 > s.pending_buf_size) {\n flush_pending(strm);\n if (s.pending !== 0) {\n s.last_flush = -1;\n return Z_OK;\n }\n }\n put_byte(s, strm.adler & 0xff);\n put_byte(s, (strm.adler >> 8) & 0xff);\n strm.adler = 0; //crc32(0L, Z_NULL, 0);\n }\n s.status = BUSY_STATE;\n\n /* Compression must start with an empty pending buffer */\n flush_pending(strm);\n if (s.pending !== 0) {\n s.last_flush = -1;\n return Z_OK;\n }\n }\n//#endif\n\n /* Start a new block or continue the current one.\n */\n if (strm.avail_in !== 0 || s.lookahead !== 0 ||\n (flush !== Z_NO_FLUSH && s.status !== FINISH_STATE)) {\n let bstate = s.level === 0 ? deflate_stored(s, flush) :\n s.strategy === Z_HUFFMAN_ONLY ? deflate_huff(s, flush) :\n s.strategy === Z_RLE ? deflate_rle(s, flush) :\n configuration_table[s.level].func(s, flush);\n\n if (bstate === BS_FINISH_STARTED || bstate === BS_FINISH_DONE) {\n s.status = FINISH_STATE;\n }\n if (bstate === BS_NEED_MORE || bstate === BS_FINISH_STARTED) {\n if (strm.avail_out === 0) {\n s.last_flush = -1;\n /* avoid BUF_ERROR next call, see above */\n }\n return Z_OK;\n /* If flush != Z_NO_FLUSH && avail_out == 0, the next call\n * of deflate should use the same flush parameter to make sure\n * that the flush is complete. So we don't have to output an\n * empty block here, this will be done at next call. This also\n * ensures that for a very small output buffer, we emit at most\n * one empty block.\n */\n }\n if (bstate === BS_BLOCK_DONE) {\n if (flush === Z_PARTIAL_FLUSH) {\n _tr_align(s);\n }\n else if (flush !== Z_BLOCK) { /* FULL_FLUSH or SYNC_FLUSH */\n\n _tr_stored_block(s, 0, 0, false);\n /* For a full flush, this empty block will be recognized\n * as a special marker by inflate_sync().\n */\n if (flush === Z_FULL_FLUSH) {\n /*** CLEAR_HASH(s); ***/ /* forget history */\n zero(s.head); // Fill with NIL (= 0);\n\n if (s.lookahead === 0) {\n s.strstart = 0;\n s.block_start = 0;\n s.insert = 0;\n }\n }\n }\n flush_pending(strm);\n if (strm.avail_out === 0) {\n s.last_flush = -1; /* avoid BUF_ERROR at next call, see above */\n return Z_OK;\n }\n }\n }\n\n if (flush !== Z_FINISH) { return Z_OK; }\n if (s.wrap <= 0) { return Z_STREAM_END; }\n\n /* Write the trailer */\n if (s.wrap === 2) {\n put_byte(s, strm.adler & 0xff);\n put_byte(s, (strm.adler >> 8) & 0xff);\n put_byte(s, (strm.adler >> 16) & 0xff);\n put_byte(s, (strm.adler >> 24) & 0xff);\n put_byte(s, strm.total_in & 0xff);\n put_byte(s, (strm.total_in >> 8) & 0xff);\n put_byte(s, (strm.total_in >> 16) & 0xff);\n put_byte(s, (strm.total_in >> 24) & 0xff);\n }\n else\n {\n putShortMSB(s, strm.adler >>> 16);\n putShortMSB(s, strm.adler & 0xffff);\n }\n\n flush_pending(strm);\n /* If avail_out is zero, the application will call deflate again\n * to flush the rest.\n */\n if (s.wrap > 0) { s.wrap = -s.wrap; }\n /* write the trailer only once! */\n return s.pending !== 0 ? Z_OK : Z_STREAM_END;\n};\n\n\nconst deflateEnd = (strm) => {\n\n if (deflateStateCheck(strm)) {\n return Z_STREAM_ERROR;\n }\n\n const status = strm.state.status;\n\n strm.state = null;\n\n return status === BUSY_STATE ? err(strm, Z_DATA_ERROR) : Z_OK;\n};\n\n\n/* =========================================================================\n * Initializes the compression dictionary from the given byte\n * sequence without producing any compressed output.\n */\nconst deflateSetDictionary = (strm, dictionary) => {\n\n let dictLength = dictionary.length;\n\n if (deflateStateCheck(strm)) {\n return Z_STREAM_ERROR;\n }\n\n const s = strm.state;\n const wrap = s.wrap;\n\n if (wrap === 2 || (wrap === 1 && s.status !== INIT_STATE) || s.lookahead) {\n return Z_STREAM_ERROR;\n }\n\n /* when using zlib wrappers, compute Adler-32 for provided dictionary */\n if (wrap === 1) {\n /* adler32(strm->adler, dictionary, dictLength); */\n strm.adler = adler32(strm.adler, dictionary, dictLength, 0);\n }\n\n s.wrap = 0; /* avoid computing Adler-32 in read_buf */\n\n /* if dictionary would fill window, just replace the history */\n if (dictLength >= s.w_size) {\n if (wrap === 0) { /* already empty otherwise */\n /*** CLEAR_HASH(s); ***/\n zero(s.head); // Fill with NIL (= 0);\n s.strstart = 0;\n s.block_start = 0;\n s.insert = 0;\n }\n /* use the tail */\n // dictionary = dictionary.slice(dictLength - s.w_size);\n let tmpDict = new Uint8Array(s.w_size);\n tmpDict.set(dictionary.subarray(dictLength - s.w_size, dictLength), 0);\n dictionary = tmpDict;\n dictLength = s.w_size;\n }\n /* insert dictionary into window and hash */\n const avail = strm.avail_in;\n const next = strm.next_in;\n const input = strm.input;\n strm.avail_in = dictLength;\n strm.next_in = 0;\n strm.input = dictionary;\n fill_window(s);\n while (s.lookahead >= MIN_MATCH) {\n let str = s.strstart;\n let n = s.lookahead - (MIN_MATCH - 1);\n do {\n /* UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); */\n s.ins_h = HASH(s, s.ins_h, s.window[str + MIN_MATCH - 1]);\n\n s.prev[str & s.w_mask] = s.head[s.ins_h];\n\n s.head[s.ins_h] = str;\n str++;\n } while (--n);\n s.strstart = str;\n s.lookahead = MIN_MATCH - 1;\n fill_window(s);\n }\n s.strstart += s.lookahead;\n s.block_start = s.strstart;\n s.insert = s.lookahead;\n s.lookahead = 0;\n s.match_length = s.prev_length = MIN_MATCH - 1;\n s.match_available = 0;\n strm.next_in = next;\n strm.input = input;\n strm.avail_in = avail;\n s.wrap = wrap;\n return Z_OK;\n};\n\n\nmodule.exports.deflateInit = deflateInit;\nmodule.exports.deflateInit2 = deflateInit2;\nmodule.exports.deflateReset = deflateReset;\nmodule.exports.deflateResetKeep = deflateResetKeep;\nmodule.exports.deflateSetHeader = deflateSetHeader;\nmodule.exports.deflate = deflate;\nmodule.exports.deflateEnd = deflateEnd;\nmodule.exports.deflateSetDictionary = deflateSetDictionary;\nmodule.exports.deflateInfo = 'pako deflate (from Nodeca project)';\n\n/* Not implemented\nmodule.exports.deflateBound = deflateBound;\nmodule.exports.deflateCopy = deflateCopy;\nmodule.exports.deflateGetDictionary = deflateGetDictionary;\nmodule.exports.deflateParams = deflateParams;\nmodule.exports.deflatePending = deflatePending;\nmodule.exports.deflatePrime = deflatePrime;\nmodule.exports.deflateTune = deflateTune;\n*/\n","/**\n * Copyright (c) 2019 Digital Bazaar, Inc.\n */\n\nvar forge = require('./forge');\nrequire('./asn1');\nvar asn1 = forge.asn1;\n\nexports.privateKeyValidator = {\n // PrivateKeyInfo\n name: 'PrivateKeyInfo',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n value: [{\n // Version (INTEGER)\n name: 'PrivateKeyInfo.version',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.INTEGER,\n constructed: false,\n capture: 'privateKeyVersion'\n }, {\n // privateKeyAlgorithm\n name: 'PrivateKeyInfo.privateKeyAlgorithm',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n value: [{\n name: 'AlgorithmIdentifier.algorithm',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.OID,\n constructed: false,\n capture: 'privateKeyOid'\n }]\n }, {\n // PrivateKey\n name: 'PrivateKeyInfo',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.OCTETSTRING,\n constructed: false,\n capture: 'privateKey'\n }]\n};\n\nexports.publicKeyValidator = {\n name: 'SubjectPublicKeyInfo',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n captureAsn1: 'subjectPublicKeyInfo',\n value: [{\n name: 'SubjectPublicKeyInfo.AlgorithmIdentifier',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n value: [{\n name: 'AlgorithmIdentifier.algorithm',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.OID,\n constructed: false,\n capture: 'publicKeyOid'\n }]\n },\n // capture group for ed25519PublicKey\n {\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.BITSTRING,\n constructed: false,\n composed: true,\n captureBitStringValue: 'ed25519PublicKey'\n }\n // FIXME: this is capture group for rsaPublicKey, use it in this API or\n // discard?\n /* {\n // subjectPublicKey\n name: 'SubjectPublicKeyInfo.subjectPublicKey',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.BITSTRING,\n constructed: false,\n value: [{\n // RSAPublicKey\n name: 'SubjectPublicKeyInfo.subjectPublicKey.RSAPublicKey',\n tagClass: asn1.Class.UNIVERSAL,\n type: asn1.Type.SEQUENCE,\n constructed: true,\n optional: true,\n captureAsn1: 'rsaPublicKey'\n }]\n } */\n ]\n};\n","\"use strict\";\nvar protobuf = exports;\n\n/**\n * Build type, one of `\"full\"`, `\"light\"` or `\"minimal\"`.\n * @name build\n * @type {string}\n * @const\n */\nprotobuf.build = \"minimal\";\n\n// Serialization\nprotobuf.Writer = require(\"./writer\");\nprotobuf.BufferWriter = require(\"./writer_buffer\");\nprotobuf.Reader = require(\"./reader\");\nprotobuf.BufferReader = require(\"./reader_buffer\");\n\n// Utility\nprotobuf.util = require(\"./util/minimal\");\nprotobuf.rpc = require(\"./rpc\");\nprotobuf.roots = require(\"./roots\");\nprotobuf.configure = configure;\n\n/* istanbul ignore next */\n/**\n * Reconfigures the library according to the environment.\n * @returns {undefined}\n */\nfunction configure() {\n protobuf.util._configure();\n protobuf.Writer._configure(protobuf.BufferWriter);\n protobuf.Reader._configure(protobuf.BufferReader);\n}\n\n// Set up buffer utility according to the environment\nconfigure();\n","'use strict';\nvar globalThis = require('../internals/global-this');\n\nmodule.exports = globalThis;\n","'use strict';\nvar anObject = require('../internals/an-object');\n\n// `RegExp.prototype.flags` getter implementation\n// https://tc39.es/ecma262/#sec-get-regexp.prototype.flags\nmodule.exports = function () {\n var that = anObject(this);\n var result = '';\n if (that.hasIndices) result += 'd';\n if (that.global) result += 'g';\n if (that.ignoreCase) result += 'i';\n if (that.multiline) result += 'm';\n if (that.dotAll) result += 's';\n if (that.unicode) result += 'u';\n if (that.unicodeSets) result += 'v';\n if (that.sticky) result += 'y';\n return result;\n};\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['storagegateway'] = {};\nAWS.StorageGateway = Service.defineService('storagegateway', ['2013-06-30']);\nObject.defineProperty(apiLoader.services['storagegateway'], '2013-06-30', {\n get: function get() {\n var model = require('../apis/storagegateway-2013-06-30.min.json');\n model.paginators = require('../apis/storagegateway-2013-06-30.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.StorageGateway;\n","!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define([],t):\"object\"==typeof exports?exports.bowser=t():e.bowser=t()}(this,(function(){return function(e){var t={};function r(n){if(t[n])return t[n].exports;var i=t[n]={i:n,l:!1,exports:{}};return e[n].call(i.exports,i,i.exports,r),i.l=!0,i.exports}return r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&\"object\"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,\"default\",{enumerable:!0,value:e}),2&t&&\"string\"!=typeof e)for(var i in e)r.d(n,i,function(t){return e[t]}.bind(null,i));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,\"a\",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p=\"\",r(r.s=90)}({17:function(e,t,r){\"use strict\";t.__esModule=!0,t.default=void 0;var n=r(18),i=function(){function e(){}return e.getFirstMatch=function(e,t){var r=t.match(e);return r&&r.length>0&&r[1]||\"\"},e.getSecondMatch=function(e,t){var r=t.match(e);return r&&r.length>1&&r[2]||\"\"},e.matchAndReturnConst=function(e,t,r){if(e.test(t))return r},e.getWindowsVersionName=function(e){switch(e){case\"NT\":return\"NT\";case\"XP\":return\"XP\";case\"NT 5.0\":return\"2000\";case\"NT 5.1\":return\"XP\";case\"NT 5.2\":return\"2003\";case\"NT 6.0\":return\"Vista\";case\"NT 6.1\":return\"7\";case\"NT 6.2\":return\"8\";case\"NT 6.3\":return\"8.1\";case\"NT 10.0\":return\"10\";default:return}},e.getMacOSVersionName=function(e){var t=e.split(\".\").splice(0,2).map((function(e){return parseInt(e,10)||0}));if(t.push(0),10===t[0])switch(t[1]){case 5:return\"Leopard\";case 6:return\"Snow Leopard\";case 7:return\"Lion\";case 8:return\"Mountain Lion\";case 9:return\"Mavericks\";case 10:return\"Yosemite\";case 11:return\"El Capitan\";case 12:return\"Sierra\";case 13:return\"High Sierra\";case 14:return\"Mojave\";case 15:return\"Catalina\";default:return}},e.getAndroidVersionName=function(e){var t=e.split(\".\").splice(0,2).map((function(e){return parseInt(e,10)||0}));if(t.push(0),!(1===t[0]&&t[1]<5))return 1===t[0]&&t[1]<6?\"Cupcake\":1===t[0]&&t[1]>=6?\"Donut\":2===t[0]&&t[1]<2?\"Eclair\":2===t[0]&&2===t[1]?\"Froyo\":2===t[0]&&t[1]>2?\"Gingerbread\":3===t[0]?\"Honeycomb\":4===t[0]&&t[1]<1?\"Ice Cream Sandwich\":4===t[0]&&t[1]<4?\"Jelly Bean\":4===t[0]&&t[1]>=4?\"KitKat\":5===t[0]?\"Lollipop\":6===t[0]?\"Marshmallow\":7===t[0]?\"Nougat\":8===t[0]?\"Oreo\":9===t[0]?\"Pie\":void 0},e.getVersionPrecision=function(e){return e.split(\".\").length},e.compareVersions=function(t,r,n){void 0===n&&(n=!1);var i=e.getVersionPrecision(t),s=e.getVersionPrecision(r),a=Math.max(i,s),o=0,u=e.map([t,r],(function(t){var r=a-e.getVersionPrecision(t),n=t+new Array(r+1).join(\".0\");return e.map(n.split(\".\"),(function(e){return new Array(20-e.length).join(\"0\")+e})).reverse()}));for(n&&(o=a-Math.min(i,s)),a-=1;a>=o;){if(u[0][a]>u[1][a])return 1;if(u[0][a]===u[1][a]){if(a===o)return 0;a-=1}else if(u[0][a]1?i-1:0),a=1;a0){var a=Object.keys(r),u=o.default.find(a,(function(e){return t.isOS(e)}));if(u){var d=this.satisfies(r[u]);if(void 0!==d)return d}var c=o.default.find(a,(function(e){return t.isPlatform(e)}));if(c){var f=this.satisfies(r[c]);if(void 0!==f)return f}}if(s>0){var l=Object.keys(i),h=o.default.find(l,(function(e){return t.isBrowser(e,!0)}));if(void 0!==h)return this.compareVersion(i[h])}},t.isBrowser=function(e,t){void 0===t&&(t=!1);var r=this.getBrowserName().toLowerCase(),n=e.toLowerCase(),i=o.default.getBrowserTypeByAlias(n);return t&&i&&(n=i.toLowerCase()),n===r},t.compareVersion=function(e){var t=[0],r=e,n=!1,i=this.getBrowserVersion();if(\"string\"==typeof i)return\">\"===e[0]||\"<\"===e[0]?(r=e.substr(1),\"=\"===e[1]?(n=!0,r=e.substr(2)):t=[],\">\"===e[0]?t.push(1):t.push(-1)):\"=\"===e[0]?r=e.substr(1):\"~\"===e[0]&&(n=!0,r=e.substr(1)),t.indexOf(o.default.compareVersions(i,r,n))>-1},t.isOS=function(e){return this.getOSName(!0)===String(e).toLowerCase()},t.isPlatform=function(e){return this.getPlatformType(!0)===String(e).toLowerCase()},t.isEngine=function(e){return this.getEngineName(!0)===String(e).toLowerCase()},t.is=function(e,t){return void 0===t&&(t=!1),this.isBrowser(e,t)||this.isOS(e)||this.isPlatform(e)},t.some=function(e){var t=this;return void 0===e&&(e=[]),e.some((function(e){return t.is(e)}))},e}();t.default=d,e.exports=t.default},92:function(e,t,r){\"use strict\";t.__esModule=!0,t.default=void 0;var n,i=(n=r(17))&&n.__esModule?n:{default:n};var s=/version\\/(\\d+(\\.?_?\\d+)+)/i,a=[{test:[/googlebot/i],describe:function(e){var t={name:\"Googlebot\"},r=i.default.getFirstMatch(/googlebot\\/(\\d+(\\.\\d+))/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/opera/i],describe:function(e){var t={name:\"Opera\"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/(?:opera)[\\s/](\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/opr\\/|opios/i],describe:function(e){var t={name:\"Opera\"},r=i.default.getFirstMatch(/(?:opr|opios)[\\s/](\\S+)/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/SamsungBrowser/i],describe:function(e){var t={name:\"Samsung Internet for Android\"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/(?:SamsungBrowser)[\\s/](\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/Whale/i],describe:function(e){var t={name:\"NAVER Whale Browser\"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/(?:whale)[\\s/](\\d+(?:\\.\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/MZBrowser/i],describe:function(e){var t={name:\"MZ Browser\"},r=i.default.getFirstMatch(/(?:MZBrowser)[\\s/](\\d+(?:\\.\\d+)+)/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/focus/i],describe:function(e){var t={name:\"Focus\"},r=i.default.getFirstMatch(/(?:focus)[\\s/](\\d+(?:\\.\\d+)+)/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/swing/i],describe:function(e){var t={name:\"Swing\"},r=i.default.getFirstMatch(/(?:swing)[\\s/](\\d+(?:\\.\\d+)+)/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/coast/i],describe:function(e){var t={name:\"Opera Coast\"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/(?:coast)[\\s/](\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/opt\\/\\d+(?:.?_?\\d+)+/i],describe:function(e){var t={name:\"Opera Touch\"},r=i.default.getFirstMatch(/(?:opt)[\\s/](\\d+(\\.?_?\\d+)+)/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/yabrowser/i],describe:function(e){var t={name:\"Yandex Browser\"},r=i.default.getFirstMatch(/(?:yabrowser)[\\s/](\\d+(\\.?_?\\d+)+)/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/ucbrowser/i],describe:function(e){var t={name:\"UC Browser\"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/(?:ucbrowser)[\\s/](\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/Maxthon|mxios/i],describe:function(e){var t={name:\"Maxthon\"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/(?:Maxthon|mxios)[\\s/](\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/epiphany/i],describe:function(e){var t={name:\"Epiphany\"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/(?:epiphany)[\\s/](\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/puffin/i],describe:function(e){var t={name:\"Puffin\"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/(?:puffin)[\\s/](\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/sleipnir/i],describe:function(e){var t={name:\"Sleipnir\"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/(?:sleipnir)[\\s/](\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/k-meleon/i],describe:function(e){var t={name:\"K-Meleon\"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/(?:k-meleon)[\\s/](\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/micromessenger/i],describe:function(e){var t={name:\"WeChat\"},r=i.default.getFirstMatch(/(?:micromessenger)[\\s/](\\d+(\\.?_?\\d+)+)/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/qqbrowser/i],describe:function(e){var t={name:/qqbrowserlite/i.test(e)?\"QQ Browser Lite\":\"QQ Browser\"},r=i.default.getFirstMatch(/(?:qqbrowserlite|qqbrowser)[/](\\d+(\\.?_?\\d+)+)/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/msie|trident/i],describe:function(e){var t={name:\"Internet Explorer\"},r=i.default.getFirstMatch(/(?:msie |rv:)(\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/\\sedg\\//i],describe:function(e){var t={name:\"Microsoft Edge\"},r=i.default.getFirstMatch(/\\sedg\\/(\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/edg([ea]|ios)/i],describe:function(e){var t={name:\"Microsoft Edge\"},r=i.default.getSecondMatch(/edg([ea]|ios)\\/(\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/vivaldi/i],describe:function(e){var t={name:\"Vivaldi\"},r=i.default.getFirstMatch(/vivaldi\\/(\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/seamonkey/i],describe:function(e){var t={name:\"SeaMonkey\"},r=i.default.getFirstMatch(/seamonkey\\/(\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/sailfish/i],describe:function(e){var t={name:\"Sailfish\"},r=i.default.getFirstMatch(/sailfish\\s?browser\\/(\\d+(\\.\\d+)?)/i,e);return r&&(t.version=r),t}},{test:[/silk/i],describe:function(e){var t={name:\"Amazon Silk\"},r=i.default.getFirstMatch(/silk\\/(\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/phantom/i],describe:function(e){var t={name:\"PhantomJS\"},r=i.default.getFirstMatch(/phantomjs\\/(\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/slimerjs/i],describe:function(e){var t={name:\"SlimerJS\"},r=i.default.getFirstMatch(/slimerjs\\/(\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/blackberry|\\bbb\\d+/i,/rim\\stablet/i],describe:function(e){var t={name:\"BlackBerry\"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/blackberry[\\d]+\\/(\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/(web|hpw)[o0]s/i],describe:function(e){var t={name:\"WebOS Browser\"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/w(?:eb)?[o0]sbrowser\\/(\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/bada/i],describe:function(e){var t={name:\"Bada\"},r=i.default.getFirstMatch(/dolfin\\/(\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/tizen/i],describe:function(e){var t={name:\"Tizen\"},r=i.default.getFirstMatch(/(?:tizen\\s?)?browser\\/(\\d+(\\.?_?\\d+)+)/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/qupzilla/i],describe:function(e){var t={name:\"QupZilla\"},r=i.default.getFirstMatch(/(?:qupzilla)[\\s/](\\d+(\\.?_?\\d+)+)/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/firefox|iceweasel|fxios/i],describe:function(e){var t={name:\"Firefox\"},r=i.default.getFirstMatch(/(?:firefox|iceweasel|fxios)[\\s/](\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/electron/i],describe:function(e){var t={name:\"Electron\"},r=i.default.getFirstMatch(/(?:electron)\\/(\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/MiuiBrowser/i],describe:function(e){var t={name:\"Miui\"},r=i.default.getFirstMatch(/(?:MiuiBrowser)[\\s/](\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/chromium/i],describe:function(e){var t={name:\"Chromium\"},r=i.default.getFirstMatch(/(?:chromium)[\\s/](\\d+(\\.?_?\\d+)+)/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/chrome|crios|crmo/i],describe:function(e){var t={name:\"Chrome\"},r=i.default.getFirstMatch(/(?:chrome|crios|crmo)\\/(\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/GSA/i],describe:function(e){var t={name:\"Google Search\"},r=i.default.getFirstMatch(/(?:GSA)\\/(\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:function(e){var t=!e.test(/like android/i),r=e.test(/android/i);return t&&r},describe:function(e){var t={name:\"Android Browser\"},r=i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/playstation 4/i],describe:function(e){var t={name:\"PlayStation 4\"},r=i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/safari|applewebkit/i],describe:function(e){var t={name:\"Safari\"},r=i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/.*/i],describe:function(e){var t=-1!==e.search(\"\\\\(\")?/^(.*)\\/(.*)[ \\t]\\((.*)/:/^(.*)\\/(.*) /;return{name:i.default.getFirstMatch(t,e),version:i.default.getSecondMatch(t,e)}}}];t.default=a,e.exports=t.default},93:function(e,t,r){\"use strict\";t.__esModule=!0,t.default=void 0;var n,i=(n=r(17))&&n.__esModule?n:{default:n},s=r(18);var a=[{test:[/Roku\\/DVP/],describe:function(e){var t=i.default.getFirstMatch(/Roku\\/DVP-(\\d+\\.\\d+)/i,e);return{name:s.OS_MAP.Roku,version:t}}},{test:[/windows phone/i],describe:function(e){var t=i.default.getFirstMatch(/windows phone (?:os)?\\s?(\\d+(\\.\\d+)*)/i,e);return{name:s.OS_MAP.WindowsPhone,version:t}}},{test:[/windows /i],describe:function(e){var t=i.default.getFirstMatch(/Windows ((NT|XP)( \\d\\d?.\\d)?)/i,e),r=i.default.getWindowsVersionName(t);return{name:s.OS_MAP.Windows,version:t,versionName:r}}},{test:[/Macintosh(.*?) FxiOS(.*?)\\//],describe:function(e){var t={name:s.OS_MAP.iOS},r=i.default.getSecondMatch(/(Version\\/)(\\d[\\d.]+)/,e);return r&&(t.version=r),t}},{test:[/macintosh/i],describe:function(e){var t=i.default.getFirstMatch(/mac os x (\\d+(\\.?_?\\d+)+)/i,e).replace(/[_\\s]/g,\".\"),r=i.default.getMacOSVersionName(t),n={name:s.OS_MAP.MacOS,version:t};return r&&(n.versionName=r),n}},{test:[/(ipod|iphone|ipad)/i],describe:function(e){var t=i.default.getFirstMatch(/os (\\d+([_\\s]\\d+)*) like mac os x/i,e).replace(/[_\\s]/g,\".\");return{name:s.OS_MAP.iOS,version:t}}},{test:function(e){var t=!e.test(/like android/i),r=e.test(/android/i);return t&&r},describe:function(e){var t=i.default.getFirstMatch(/android[\\s/-](\\d+(\\.\\d+)*)/i,e),r=i.default.getAndroidVersionName(t),n={name:s.OS_MAP.Android,version:t};return r&&(n.versionName=r),n}},{test:[/(web|hpw)[o0]s/i],describe:function(e){var t=i.default.getFirstMatch(/(?:web|hpw)[o0]s\\/(\\d+(\\.\\d+)*)/i,e),r={name:s.OS_MAP.WebOS};return t&&t.length&&(r.version=t),r}},{test:[/blackberry|\\bbb\\d+/i,/rim\\stablet/i],describe:function(e){var t=i.default.getFirstMatch(/rim\\stablet\\sos\\s(\\d+(\\.\\d+)*)/i,e)||i.default.getFirstMatch(/blackberry\\d+\\/(\\d+([_\\s]\\d+)*)/i,e)||i.default.getFirstMatch(/\\bbb(\\d+)/i,e);return{name:s.OS_MAP.BlackBerry,version:t}}},{test:[/bada/i],describe:function(e){var t=i.default.getFirstMatch(/bada\\/(\\d+(\\.\\d+)*)/i,e);return{name:s.OS_MAP.Bada,version:t}}},{test:[/tizen/i],describe:function(e){var t=i.default.getFirstMatch(/tizen[/\\s](\\d+(\\.\\d+)*)/i,e);return{name:s.OS_MAP.Tizen,version:t}}},{test:[/linux/i],describe:function(){return{name:s.OS_MAP.Linux}}},{test:[/CrOS/],describe:function(){return{name:s.OS_MAP.ChromeOS}}},{test:[/PlayStation 4/],describe:function(e){var t=i.default.getFirstMatch(/PlayStation 4[/\\s](\\d+(\\.\\d+)*)/i,e);return{name:s.OS_MAP.PlayStation4,version:t}}}];t.default=a,e.exports=t.default},94:function(e,t,r){\"use strict\";t.__esModule=!0,t.default=void 0;var n,i=(n=r(17))&&n.__esModule?n:{default:n},s=r(18);var a=[{test:[/googlebot/i],describe:function(){return{type:\"bot\",vendor:\"Google\"}}},{test:[/huawei/i],describe:function(e){var t=i.default.getFirstMatch(/(can-l01)/i,e)&&\"Nova\",r={type:s.PLATFORMS_MAP.mobile,vendor:\"Huawei\"};return t&&(r.model=t),r}},{test:[/nexus\\s*(?:7|8|9|10).*/i],describe:function(){return{type:s.PLATFORMS_MAP.tablet,vendor:\"Nexus\"}}},{test:[/ipad/i],describe:function(){return{type:s.PLATFORMS_MAP.tablet,vendor:\"Apple\",model:\"iPad\"}}},{test:[/Macintosh(.*?) FxiOS(.*?)\\//],describe:function(){return{type:s.PLATFORMS_MAP.tablet,vendor:\"Apple\",model:\"iPad\"}}},{test:[/kftt build/i],describe:function(){return{type:s.PLATFORMS_MAP.tablet,vendor:\"Amazon\",model:\"Kindle Fire HD 7\"}}},{test:[/silk/i],describe:function(){return{type:s.PLATFORMS_MAP.tablet,vendor:\"Amazon\"}}},{test:[/tablet(?! pc)/i],describe:function(){return{type:s.PLATFORMS_MAP.tablet}}},{test:function(e){var t=e.test(/ipod|iphone/i),r=e.test(/like (ipod|iphone)/i);return t&&!r},describe:function(e){var t=i.default.getFirstMatch(/(ipod|iphone)/i,e);return{type:s.PLATFORMS_MAP.mobile,vendor:\"Apple\",model:t}}},{test:[/nexus\\s*[0-6].*/i,/galaxy nexus/i],describe:function(){return{type:s.PLATFORMS_MAP.mobile,vendor:\"Nexus\"}}},{test:[/[^-]mobi/i],describe:function(){return{type:s.PLATFORMS_MAP.mobile}}},{test:function(e){return\"blackberry\"===e.getBrowserName(!0)},describe:function(){return{type:s.PLATFORMS_MAP.mobile,vendor:\"BlackBerry\"}}},{test:function(e){return\"bada\"===e.getBrowserName(!0)},describe:function(){return{type:s.PLATFORMS_MAP.mobile}}},{test:function(e){return\"windows phone\"===e.getBrowserName()},describe:function(){return{type:s.PLATFORMS_MAP.mobile,vendor:\"Microsoft\"}}},{test:function(e){var t=Number(String(e.getOSVersion()).split(\".\")[0]);return\"android\"===e.getOSName(!0)&&t>=3},describe:function(){return{type:s.PLATFORMS_MAP.tablet}}},{test:function(e){return\"android\"===e.getOSName(!0)},describe:function(){return{type:s.PLATFORMS_MAP.mobile}}},{test:function(e){return\"macos\"===e.getOSName(!0)},describe:function(){return{type:s.PLATFORMS_MAP.desktop,vendor:\"Apple\"}}},{test:function(e){return\"windows\"===e.getOSName(!0)},describe:function(){return{type:s.PLATFORMS_MAP.desktop}}},{test:function(e){return\"linux\"===e.getOSName(!0)},describe:function(){return{type:s.PLATFORMS_MAP.desktop}}},{test:function(e){return\"playstation 4\"===e.getOSName(!0)},describe:function(){return{type:s.PLATFORMS_MAP.tv}}},{test:function(e){return\"roku\"===e.getOSName(!0)},describe:function(){return{type:s.PLATFORMS_MAP.tv}}}];t.default=a,e.exports=t.default},95:function(e,t,r){\"use strict\";t.__esModule=!0,t.default=void 0;var n,i=(n=r(17))&&n.__esModule?n:{default:n},s=r(18);var a=[{test:function(e){return\"microsoft edge\"===e.getBrowserName(!0)},describe:function(e){if(/\\sedg\\//i.test(e))return{name:s.ENGINE_MAP.Blink};var t=i.default.getFirstMatch(/edge\\/(\\d+(\\.?_?\\d+)+)/i,e);return{name:s.ENGINE_MAP.EdgeHTML,version:t}}},{test:[/trident/i],describe:function(e){var t={name:s.ENGINE_MAP.Trident},r=i.default.getFirstMatch(/trident\\/(\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:function(e){return e.test(/presto/i)},describe:function(e){var t={name:s.ENGINE_MAP.Presto},r=i.default.getFirstMatch(/presto\\/(\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:function(e){var t=e.test(/gecko/i),r=e.test(/like gecko/i);return t&&!r},describe:function(e){var t={name:s.ENGINE_MAP.Gecko},r=i.default.getFirstMatch(/gecko\\/(\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/(apple)?webkit\\/537\\.36/i],describe:function(){return{name:s.ENGINE_MAP.Blink}}},{test:[/(apple)?webkit/i],describe:function(e){var t={name:s.ENGINE_MAP.WebKit},r=i.default.getFirstMatch(/webkit\\/(\\d+(\\.?_?\\d+)+)/i,e);return r&&(t.version=r),t}}];t.default=a,e.exports=t.default}})}));","/**\n * Node.js module for Forge.\n *\n * @author Dave Longley\n *\n * Copyright 2011-2016 Digital Bazaar, Inc.\n */\nmodule.exports = require('./forge');\nrequire('./aes');\nrequire('./aesCipherSuites');\nrequire('./asn1');\nrequire('./cipher');\nrequire('./des');\nrequire('./ed25519');\nrequire('./hmac');\nrequire('./kem');\nrequire('./log');\nrequire('./md.all');\nrequire('./mgf1');\nrequire('./pbkdf2');\nrequire('./pem');\nrequire('./pkcs1');\nrequire('./pkcs12');\nrequire('./pkcs7');\nrequire('./pki');\nrequire('./prime');\nrequire('./prng');\nrequire('./pss');\nrequire('./random');\nrequire('./rc2');\nrequire('./ssh');\nrequire('./tls');\nrequire('./util');\n","/**\n * Javascript implementation of a basic Public Key Infrastructure, including\n * support for RSA public and private keys.\n *\n * @author Dave Longley\n *\n * Copyright (c) 2010-2013 Digital Bazaar, Inc.\n */\nvar forge = require('./forge');\nrequire('./asn1');\nrequire('./oids');\nrequire('./pbe');\nrequire('./pem');\nrequire('./pbkdf2');\nrequire('./pkcs12');\nrequire('./pss');\nrequire('./rsa');\nrequire('./util');\nrequire('./x509');\n\n// shortcut for asn.1 API\nvar asn1 = forge.asn1;\n\n/* Public Key Infrastructure (PKI) implementation. */\nvar pki = module.exports = forge.pki = forge.pki || {};\n\n/**\n * NOTE: THIS METHOD IS DEPRECATED. Use pem.decode() instead.\n *\n * Converts PEM-formatted data to DER.\n *\n * @param pem the PEM-formatted data.\n *\n * @return the DER-formatted data.\n */\npki.pemToDer = function(pem) {\n var msg = forge.pem.decode(pem)[0];\n if(msg.procType && msg.procType.type === 'ENCRYPTED') {\n throw new Error('Could not convert PEM to DER; PEM is encrypted.');\n }\n return forge.util.createBuffer(msg.body);\n};\n\n/**\n * Converts an RSA private key from PEM format.\n *\n * @param pem the PEM-formatted private key.\n *\n * @return the private key.\n */\npki.privateKeyFromPem = function(pem) {\n var msg = forge.pem.decode(pem)[0];\n\n if(msg.type !== 'PRIVATE KEY' && msg.type !== 'RSA PRIVATE KEY') {\n var error = new Error('Could not convert private key from PEM; PEM ' +\n 'header type is not \"PRIVATE KEY\" or \"RSA PRIVATE KEY\".');\n error.headerType = msg.type;\n throw error;\n }\n if(msg.procType && msg.procType.type === 'ENCRYPTED') {\n throw new Error('Could not convert private key from PEM; PEM is encrypted.');\n }\n\n // convert DER to ASN.1 object\n var obj = asn1.fromDer(msg.body);\n\n return pki.privateKeyFromAsn1(obj);\n};\n\n/**\n * Converts an RSA private key to PEM format.\n *\n * @param key the private key.\n * @param maxline the maximum characters per line, defaults to 64.\n *\n * @return the PEM-formatted private key.\n */\npki.privateKeyToPem = function(key, maxline) {\n // convert to ASN.1, then DER, then PEM-encode\n var msg = {\n type: 'RSA PRIVATE KEY',\n body: asn1.toDer(pki.privateKeyToAsn1(key)).getBytes()\n };\n return forge.pem.encode(msg, {maxline: maxline});\n};\n\n/**\n * Converts a PrivateKeyInfo to PEM format.\n *\n * @param pki the PrivateKeyInfo.\n * @param maxline the maximum characters per line, defaults to 64.\n *\n * @return the PEM-formatted private key.\n */\npki.privateKeyInfoToPem = function(pki, maxline) {\n // convert to DER, then PEM-encode\n var msg = {\n type: 'PRIVATE KEY',\n body: asn1.toDer(pki).getBytes()\n };\n return forge.pem.encode(msg, {maxline: maxline});\n};\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['pricing'] = {};\nAWS.Pricing = Service.defineService('pricing', ['2017-10-15']);\nObject.defineProperty(apiLoader.services['pricing'], '2017-10-15', {\n get: function get() {\n var model = require('../apis/pricing-2017-10-15.min.json');\n model.paginators = require('../apis/pricing-2017-10-15.paginators.json').pagination;\n model.waiters = require('../apis/pricing-2017-10-15.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.Pricing;\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport TranscriptAlternative from './TranscriptAlternative';\nimport TranscriptLanguageWithScore from './TranscriptLanguageWithScore';\n\nexport default class TranscriptResult {\n resultId: string;\n channelId?: string;\n isPartial: boolean;\n languageCode?: string;\n languageIdentification?: TranscriptLanguageWithScore[];\n startTimeMs: number; // epoch time\n endTimeMs: number; // epoch time\n alternatives: TranscriptAlternative[];\n}\n","'use strict';\n\nvar utils = require('./utils');\n\nvar has = Object.prototype.hasOwnProperty;\nvar isArray = Array.isArray;\n\nvar defaults = {\n allowDots: false,\n allowEmptyArrays: false,\n allowPrototypes: false,\n allowSparse: false,\n arrayLimit: 20,\n charset: 'utf-8',\n charsetSentinel: false,\n comma: false,\n decodeDotInKeys: false,\n decoder: utils.decode,\n delimiter: '&',\n depth: 5,\n duplicates: 'combine',\n ignoreQueryPrefix: false,\n interpretNumericEntities: false,\n parameterLimit: 1000,\n parseArrays: true,\n plainObjects: false,\n strictDepth: false,\n strictNullHandling: false,\n throwOnLimitExceeded: false\n};\n\nvar interpretNumericEntities = function (str) {\n return str.replace(/&#(\\d+);/g, function ($0, numberStr) {\n return String.fromCharCode(parseInt(numberStr, 10));\n });\n};\n\nvar parseArrayValue = function (val, options, currentArrayLength) {\n if (val && typeof val === 'string' && options.comma && val.indexOf(',') > -1) {\n return val.split(',');\n }\n\n if (options.throwOnLimitExceeded && currentArrayLength >= options.arrayLimit) {\n throw new RangeError('Array limit exceeded. Only ' + options.arrayLimit + ' element' + (options.arrayLimit === 1 ? '' : 's') + ' allowed in an array.');\n }\n\n return val;\n};\n\n// This is what browsers will submit when the ✓ character occurs in an\n// application/x-www-form-urlencoded body and the encoding of the page containing\n// the form is iso-8859-1, or when the submitted form has an accept-charset\n// attribute of iso-8859-1. Presumably also with other charsets that do not contain\n// the ✓ character, such as us-ascii.\nvar isoSentinel = 'utf8=%26%2310003%3B'; // encodeURIComponent('✓')\n\n// These are the percent-encoded utf-8 octets representing a checkmark, indicating that the request actually is utf-8 encoded.\nvar charsetSentinel = 'utf8=%E2%9C%93'; // encodeURIComponent('✓')\n\nvar parseValues = function parseQueryStringValues(str, options) {\n var obj = { __proto__: null };\n\n var cleanStr = options.ignoreQueryPrefix ? str.replace(/^\\?/, '') : str;\n cleanStr = cleanStr.replace(/%5B/gi, '[').replace(/%5D/gi, ']');\n\n var limit = options.parameterLimit === Infinity ? undefined : options.parameterLimit;\n var parts = cleanStr.split(\n options.delimiter,\n options.throwOnLimitExceeded ? limit + 1 : limit\n );\n\n if (options.throwOnLimitExceeded && parts.length > limit) {\n throw new RangeError('Parameter limit exceeded. Only ' + limit + ' parameter' + (limit === 1 ? '' : 's') + ' allowed.');\n }\n\n var skipIndex = -1; // Keep track of where the utf8 sentinel was found\n var i;\n\n var charset = options.charset;\n if (options.charsetSentinel) {\n for (i = 0; i < parts.length; ++i) {\n if (parts[i].indexOf('utf8=') === 0) {\n if (parts[i] === charsetSentinel) {\n charset = 'utf-8';\n } else if (parts[i] === isoSentinel) {\n charset = 'iso-8859-1';\n }\n skipIndex = i;\n i = parts.length; // The eslint settings do not allow break;\n }\n }\n }\n\n for (i = 0; i < parts.length; ++i) {\n if (i === skipIndex) {\n continue;\n }\n var part = parts[i];\n\n var bracketEqualsPos = part.indexOf(']=');\n var pos = bracketEqualsPos === -1 ? part.indexOf('=') : bracketEqualsPos + 1;\n\n var key;\n var val;\n if (pos === -1) {\n key = options.decoder(part, defaults.decoder, charset, 'key');\n val = options.strictNullHandling ? null : '';\n } else {\n key = options.decoder(part.slice(0, pos), defaults.decoder, charset, 'key');\n\n val = utils.maybeMap(\n parseArrayValue(\n part.slice(pos + 1),\n options,\n isArray(obj[key]) ? obj[key].length : 0\n ),\n function (encodedVal) {\n return options.decoder(encodedVal, defaults.decoder, charset, 'value');\n }\n );\n }\n\n if (val && options.interpretNumericEntities && charset === 'iso-8859-1') {\n val = interpretNumericEntities(String(val));\n }\n\n if (part.indexOf('[]=') > -1) {\n val = isArray(val) ? [val] : val;\n }\n\n var existing = has.call(obj, key);\n if (existing && options.duplicates === 'combine') {\n obj[key] = utils.combine(obj[key], val);\n } else if (!existing || options.duplicates === 'last') {\n obj[key] = val;\n }\n }\n\n return obj;\n};\n\nvar parseObject = function (chain, val, options, valuesParsed) {\n var currentArrayLength = 0;\n if (chain.length > 0 && chain[chain.length - 1] === '[]') {\n var parentKey = chain.slice(0, -1).join('');\n currentArrayLength = Array.isArray(val) && val[parentKey] ? val[parentKey].length : 0;\n }\n\n var leaf = valuesParsed ? val : parseArrayValue(val, options, currentArrayLength);\n\n for (var i = chain.length - 1; i >= 0; --i) {\n var obj;\n var root = chain[i];\n\n if (root === '[]' && options.parseArrays) {\n obj = options.allowEmptyArrays && (leaf === '' || (options.strictNullHandling && leaf === null))\n ? []\n : utils.combine([], leaf);\n } else {\n obj = options.plainObjects ? { __proto__: null } : {};\n var cleanRoot = root.charAt(0) === '[' && root.charAt(root.length - 1) === ']' ? root.slice(1, -1) : root;\n var decodedRoot = options.decodeDotInKeys ? cleanRoot.replace(/%2E/g, '.') : cleanRoot;\n var index = parseInt(decodedRoot, 10);\n if (!options.parseArrays && decodedRoot === '') {\n obj = { 0: leaf };\n } else if (\n !isNaN(index)\n && root !== decodedRoot\n && String(index) === decodedRoot\n && index >= 0\n && (options.parseArrays && index <= options.arrayLimit)\n ) {\n obj = [];\n obj[index] = leaf;\n } else if (decodedRoot !== '__proto__') {\n obj[decodedRoot] = leaf;\n }\n }\n\n leaf = obj;\n }\n\n return leaf;\n};\n\nvar parseKeys = function parseQueryStringKeys(givenKey, val, options, valuesParsed) {\n if (!givenKey) {\n return;\n }\n\n // Transform dot notation to bracket notation\n var key = options.allowDots ? givenKey.replace(/\\.([^.[]+)/g, '[$1]') : givenKey;\n\n // The regex chunks\n\n var brackets = /(\\[[^[\\]]*])/;\n var child = /(\\[[^[\\]]*])/g;\n\n // Get the parent\n\n var segment = options.depth > 0 && brackets.exec(key);\n var parent = segment ? key.slice(0, segment.index) : key;\n\n // Stash the parent if it exists\n\n var keys = [];\n if (parent) {\n // If we aren't using plain objects, optionally prefix keys that would overwrite object prototype properties\n if (!options.plainObjects && has.call(Object.prototype, parent)) {\n if (!options.allowPrototypes) {\n return;\n }\n }\n\n keys.push(parent);\n }\n\n // Loop through children appending to the array until we hit depth\n\n var i = 0;\n while (options.depth > 0 && (segment = child.exec(key)) !== null && i < options.depth) {\n i += 1;\n if (!options.plainObjects && has.call(Object.prototype, segment[1].slice(1, -1))) {\n if (!options.allowPrototypes) {\n return;\n }\n }\n keys.push(segment[1]);\n }\n\n // If there's a remainder, check strictDepth option for throw, else just add whatever is left\n\n if (segment) {\n if (options.strictDepth === true) {\n throw new RangeError('Input depth exceeded depth option of ' + options.depth + ' and strictDepth is true');\n }\n keys.push('[' + key.slice(segment.index) + ']');\n }\n\n return parseObject(keys, val, options, valuesParsed);\n};\n\nvar normalizeParseOptions = function normalizeParseOptions(opts) {\n if (!opts) {\n return defaults;\n }\n\n if (typeof opts.allowEmptyArrays !== 'undefined' && typeof opts.allowEmptyArrays !== 'boolean') {\n throw new TypeError('`allowEmptyArrays` option can only be `true` or `false`, when provided');\n }\n\n if (typeof opts.decodeDotInKeys !== 'undefined' && typeof opts.decodeDotInKeys !== 'boolean') {\n throw new TypeError('`decodeDotInKeys` option can only be `true` or `false`, when provided');\n }\n\n if (opts.decoder !== null && typeof opts.decoder !== 'undefined' && typeof opts.decoder !== 'function') {\n throw new TypeError('Decoder has to be a function.');\n }\n\n if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {\n throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');\n }\n\n if (typeof opts.throwOnLimitExceeded !== 'undefined' && typeof opts.throwOnLimitExceeded !== 'boolean') {\n throw new TypeError('`throwOnLimitExceeded` option must be a boolean');\n }\n\n var charset = typeof opts.charset === 'undefined' ? defaults.charset : opts.charset;\n\n var duplicates = typeof opts.duplicates === 'undefined' ? defaults.duplicates : opts.duplicates;\n\n if (duplicates !== 'combine' && duplicates !== 'first' && duplicates !== 'last') {\n throw new TypeError('The duplicates option must be either combine, first, or last');\n }\n\n var allowDots = typeof opts.allowDots === 'undefined' ? opts.decodeDotInKeys === true ? true : defaults.allowDots : !!opts.allowDots;\n\n return {\n allowDots: allowDots,\n allowEmptyArrays: typeof opts.allowEmptyArrays === 'boolean' ? !!opts.allowEmptyArrays : defaults.allowEmptyArrays,\n allowPrototypes: typeof opts.allowPrototypes === 'boolean' ? opts.allowPrototypes : defaults.allowPrototypes,\n allowSparse: typeof opts.allowSparse === 'boolean' ? opts.allowSparse : defaults.allowSparse,\n arrayLimit: typeof opts.arrayLimit === 'number' ? opts.arrayLimit : defaults.arrayLimit,\n charset: charset,\n charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,\n comma: typeof opts.comma === 'boolean' ? opts.comma : defaults.comma,\n decodeDotInKeys: typeof opts.decodeDotInKeys === 'boolean' ? opts.decodeDotInKeys : defaults.decodeDotInKeys,\n decoder: typeof opts.decoder === 'function' ? opts.decoder : defaults.decoder,\n delimiter: typeof opts.delimiter === 'string' || utils.isRegExp(opts.delimiter) ? opts.delimiter : defaults.delimiter,\n // eslint-disable-next-line no-implicit-coercion, no-extra-parens\n depth: (typeof opts.depth === 'number' || opts.depth === false) ? +opts.depth : defaults.depth,\n duplicates: duplicates,\n ignoreQueryPrefix: opts.ignoreQueryPrefix === true,\n interpretNumericEntities: typeof opts.interpretNumericEntities === 'boolean' ? opts.interpretNumericEntities : defaults.interpretNumericEntities,\n parameterLimit: typeof opts.parameterLimit === 'number' ? opts.parameterLimit : defaults.parameterLimit,\n parseArrays: opts.parseArrays !== false,\n plainObjects: typeof opts.plainObjects === 'boolean' ? opts.plainObjects : defaults.plainObjects,\n strictDepth: typeof opts.strictDepth === 'boolean' ? !!opts.strictDepth : defaults.strictDepth,\n strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling,\n throwOnLimitExceeded: typeof opts.throwOnLimitExceeded === 'boolean' ? opts.throwOnLimitExceeded : false\n };\n};\n\nmodule.exports = function (str, opts) {\n var options = normalizeParseOptions(opts);\n\n if (str === '' || str === null || typeof str === 'undefined') {\n return options.plainObjects ? { __proto__: null } : {};\n }\n\n var tempObj = typeof str === 'string' ? parseValues(str, options) : str;\n var obj = options.plainObjects ? { __proto__: null } : {};\n\n // Iterate over the keys and setup the new object\n\n var keys = Object.keys(tempObj);\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n var newObj = parseKeys(key, tempObj[key], options, typeof str === 'string');\n obj = utils.merge(obj, newObj, options);\n }\n\n if (options.allowSparse === true) {\n return obj;\n }\n\n return utils.compact(obj);\n};\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['mediastoredata'] = {};\nAWS.MediaStoreData = Service.defineService('mediastoredata', ['2017-09-01']);\nObject.defineProperty(apiLoader.services['mediastoredata'], '2017-09-01', {\n get: function get() {\n var model = require('../apis/mediastore-data-2017-09-01.min.json');\n model.paginators = require('../apis/mediastore-data-2017-09-01.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.MediaStoreData;\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = _default;\nexports.URL = exports.DNS = void 0;\n\nvar _bytesToUuid = _interopRequireDefault(require(\"./bytesToUuid.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction uuidToBytes(uuid) {\n // Note: We assume we're being passed a valid uuid string\n var bytes = [];\n uuid.replace(/[a-fA-F0-9]{2}/g, function (hex) {\n bytes.push(parseInt(hex, 16));\n });\n return bytes;\n}\n\nfunction stringToBytes(str) {\n str = unescape(encodeURIComponent(str)); // UTF8 escape\n\n var bytes = new Array(str.length);\n\n for (var i = 0; i < str.length; i++) {\n bytes[i] = str.charCodeAt(i);\n }\n\n return bytes;\n}\n\nconst DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8';\nexports.DNS = DNS;\nconst URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8';\nexports.URL = URL;\n\nfunction _default(name, version, hashfunc) {\n var generateUUID = function (value, namespace, buf, offset) {\n var off = buf && offset || 0;\n if (typeof value == 'string') value = stringToBytes(value);\n if (typeof namespace == 'string') namespace = uuidToBytes(namespace);\n if (!Array.isArray(value)) throw TypeError('value must be an array of bytes');\n if (!Array.isArray(namespace) || namespace.length !== 16) throw TypeError('namespace must be uuid string or an Array of 16 byte values'); // Per 4.3\n\n var bytes = hashfunc(namespace.concat(value));\n bytes[6] = bytes[6] & 0x0f | version;\n bytes[8] = bytes[8] & 0x3f | 0x80;\n\n if (buf) {\n for (var idx = 0; idx < 16; ++idx) {\n buf[off + idx] = bytes[idx];\n }\n }\n\n return buf || (0, _bytesToUuid.default)(bytes);\n }; // Function#name is not settable on some platforms (#270)\n\n\n try {\n generateUUID.name = name;\n } catch (err) {} // For CommonJS default export support\n\n\n generateUUID.DNS = DNS;\n generateUUID.URL = URL;\n return generateUUID;\n}","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport AudioVideoControllerState from '../audiovideocontroller/AudioVideoControllerState';\nimport MeetingSessionStatusCode from '../meetingsession/MeetingSessionStatusCode';\nimport RealtimeAttendeePositionInFrame from '../realtimecontroller/RealtimeAttendeePositionInFrame';\nimport BaseTask from './BaseTask';\n\n/*\n * [[WaitForAttendeePresenceTask]] waits until an attendee presence event happens.\n */\nexport default class WaitForAttendeePresenceTask extends BaseTask {\n protected taskName = 'WaitForAttendeePresenceTask';\n\n private cancelPromise: undefined | ((error: Error) => void);\n\n constructor(private context: AudioVideoControllerState) {\n super(context.logger);\n }\n\n cancel(): void {\n // Just in case. The baseCancel behavior should prevent this.\n /* istanbul ignore else */\n if (this.cancelPromise) {\n const error = new Error(\n `canceling ${this.name()} due to the meeting status code: ${\n MeetingSessionStatusCode.NoAttendeePresent\n }`\n );\n this.cancelPromise(error);\n delete this.cancelPromise;\n }\n }\n\n async run(): Promise {\n const attendeeId = this.context.meetingSessionConfiguration.credentials.attendeeId;\n return new Promise((resolve, reject) => {\n const handler = (\n presentAttendeeId: string,\n present: boolean,\n _externalUserId: string | undefined,\n _dropped: boolean | undefined,\n _pos: RealtimeAttendeePositionInFrame | undefined\n ): void => {\n if (attendeeId === presentAttendeeId && present) {\n this.context.realtimeController.realtimeUnsubscribeToAttendeeIdPresence(handler);\n resolve();\n delete this.cancelPromise;\n }\n };\n\n this.cancelPromise = (error: Error) => {\n this.context.realtimeController.realtimeUnsubscribeToAttendeeIdPresence(handler);\n reject(error);\n };\n\n this.context.realtimeController.realtimeSubscribeToAttendeeIdPresence(handler);\n });\n }\n}\n","module.exports = Array.isArray || function (arr) {\n return Object.prototype.toString.call(arr) == '[object Array]';\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\n/**\n * [[EventBufferConfiguration]] contains necessary information to\n * configure buffer.\n */\nexport default class EventBufferConfiguration {\n /**\n * Events sending interval.\n * Default is 5000.\n */\n flushIntervalMs: number;\n\n /**\n * Number of buffer items to send in a request.\n * Default is 2.\n */\n flushSize: number;\n\n /**\n * Maximum buffer capacity in Kilobytes.\n * Default is 64Kb.\n */\n maxBufferCapacityKb: number;\n\n /**\n * Maximum buffer items allowed.\n * Default is 100.\n * Max buffer item capacity = (maxBufferCapacityKb * 1024) / totalBufferItems;\n */\n totalBufferItems: number;\n\n /**\n * Retrying limit when sending events.\n * Default is 15.\n */\n retryCountLimit: number;\n\n constructor(\n flushIntervalMs = 5000,\n flushSize = 2,\n maxBufferCapacityKb = 64,\n totalBufferItems = 100,\n retryCountLimit = 15\n ) {\n this.flushIntervalMs = flushIntervalMs;\n this.flushSize = flushSize;\n this.maxBufferCapacityKb = maxBufferCapacityKb;\n this.totalBufferItems = totalBufferItems;\n this.retryCountLimit = retryCountLimit;\n }\n}\n","'use strict';\nvar isCallable = require('../internals/is-callable');\nvar tryToString = require('../internals/try-to-string');\n\nvar $TypeError = TypeError;\n\n// `Assert: IsCallable(argument) is true`\nmodule.exports = function (argument) {\n if (isCallable(argument)) return argument;\n throw new $TypeError(tryToString(argument) + ' is not a function');\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport Logger from '../logger/Logger';\nimport BaseConnectionHealthPolicy from './BaseConnectionHealthPolicy';\nimport ConnectionHealthData from './ConnectionHealthData';\nimport ConnectionHealthPolicy from './ConnectionHealthPolicy';\nimport ConnectionHealthPolicyConfiguration from './ConnectionHealthPolicyConfiguration';\n\nexport default class SendingAudioFailureConnectionHealthPolicy\n extends BaseConnectionHealthPolicy\n implements ConnectionHealthPolicy {\n private readonly sendingAudioFailureSamplesToConsider: number;\n private readonly sendingAudioFailureInitialWaitTimeMs: number;\n private readonly coolDownTimeMs: number;\n private readonly maximumTimesToWarn: number;\n private warnCount: number;\n private lastWarnTimestampMs: number;\n\n constructor(\n private logger: Logger,\n configuration: ConnectionHealthPolicyConfiguration,\n data: ConnectionHealthData\n ) {\n super(configuration, data, 'Sending Audio Health');\n this.sendingAudioFailureSamplesToConsider =\n configuration.sendingAudioFailureSamplesToConsider > 0\n ? configuration.sendingAudioFailureSamplesToConsider\n : 1;\n this.sendingAudioFailureInitialWaitTimeMs = configuration.sendingAudioFailureInitialWaitTimeMs;\n this.maximumTimesToWarn = configuration.maximumTimesToWarn;\n this.coolDownTimeMs = configuration.cooldownTimeMs;\n this.lastWarnTimestampMs = 0;\n this.warnCount = 0;\n }\n\n private isSendingAudioUnhealthy(): boolean {\n const hasEnoughTimeElapsedToEvaluateStatus = !this.currentData.isConnectionStartRecent(\n this.sendingAudioFailureInitialWaitTimeMs\n );\n const areAudioPacketsNotBeingSent =\n this.currentData.consecutiveStatsWithNoAudioPacketsSent >=\n this.sendingAudioFailureSamplesToConsider;\n return hasEnoughTimeElapsedToEvaluateStatus && areAudioPacketsNotBeingSent;\n }\n\n health(): number {\n if (this.isSendingAudioUnhealthy()) {\n const didWarnRecently = Date.now() - this.lastWarnTimestampMs < this.coolDownTimeMs;\n if (this.currentHealth > this.minimumHealth() && !didWarnRecently) {\n this.logger.warn(\n `Sending Audio is unhealthy for ${this.sendingAudioFailureSamplesToConsider} seconds consecutively.`\n );\n this.warnCount++;\n if (this.warnCount > this.maximumTimesToWarn) {\n this.logger.warn(\n 'SendingAudioFailure health policy maximum warnings breached. Falling back to reporting healthy.'\n );\n return this.maximumHealth();\n }\n this.lastWarnTimestampMs = Date.now();\n return this.minimumHealth();\n } else {\n return this.currentHealth;\n }\n }\n return this.maximumHealth();\n }\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport Backoff from '../backoff/Backoff';\nimport FullJitterBackoff from '../backoff/FullJitterBackoff';\nimport Destroyable from '../destroyable/Destroyable';\nimport EventBufferConfiguration from '../eventbufferconfiguration/EventBufferConfiguration';\nimport MeetingHistoryState from '../eventcontroller/MeetingHistoryState';\nimport EventData from '../eventreporter/EventData';\nimport EventsIngestionMetadata from '../eventreporter/EventsIngestionMetadata';\nimport EventsClientConfiguration from '../eventsclientconfiguration/EventsClientConfiguration';\nimport Logger from '../logger/Logger';\nimport IntervalScheduler from '../scheduler/IntervalScheduler';\nimport DefaultUserAgentParser from '../useragentparser/DefaultUserAgentParser';\nimport { wait } from '../utils/Utils';\nimport EventBuffer from './EventBuffer';\nimport JSONIngestionEvent from './JSONIngestionEvent';\nimport JSONIngestionPayloadItem from './JSONIngestionPayloadItem';\nimport JSONIngestionRecord from './JSONIngestionRecord';\n\n/**\n * [[InMemoryJSONEventBuffer]] is an in-memory implementation for buffering and\n * sending events. It buffers events based on number of events and its size whichever reaches\n * first. Events are sent out at an scheduled interval where important events are sent immediately.\n * It also retries sending events if failed upto the retry count limit. It implements\n * beaconing mechanism based on 'pagehide' and 'visibilitychange' to beacon all events as a last attempt.\n */\nexport default class InMemoryJSONEventBuffer implements EventBuffer, Destroyable {\n private static readonly SENDING_FAILURE_CODES = new Set([\n 408, // Request timeout.\n 429, // Too many requests.\n 500, // Internal server error.\n 502, // Bad Gateway.\n 503, // Service Unavailable.\n 504, // Gateway Timeout.\n ]);\n private static readonly RETRY_FIXED_BACKOFF_WAIT_MS = 0;\n private static readonly RETRY_SHORT_BACKOFF_MS = 1000;\n private static readonly RETRY_LONG_BACKOFF_MS = 15000;\n private static readonly MAX_PAYLOAD_ITEMS = 2;\n private static readonly MAX_ITEM_SIZE_BYTES_ALLOWED = 3000;\n private maxBufferCapacityBytes: number;\n private totalBufferItems: number;\n private buffer: JSONIngestionEvent[] = [];\n private bufferSize = 0;\n private maxBufferItemCapacityBytes = 0;\n private currentIngestionEvent: JSONIngestionEvent;\n private ingestionEventSize = 0;\n private logger: Logger;\n private flushIntervalMs: number = 0;\n private flushSize: number = 0;\n private intervalScheduler: IntervalScheduler;\n private failedIngestionEvents: JSONIngestionEvent[] = [];\n private retryCountLimit = 15;\n private ingestionURL: string;\n private lock: boolean = false;\n private metadata: EventsIngestionMetadata;\n private type: string;\n private v: number;\n private beaconEventListener: undefined | ((e: Event) => void);\n private cancellableEvents = new Map();\n private importantEvents: Set;\n private authenticationToken: string;\n private attributesToFilter = ['externalUserId', 'externalMeetingId', 'timestampMs'];\n\n constructor(\n eventBufferConfiguration: EventBufferConfiguration,\n eventsClientConfiguration: EventsClientConfiguration,\n ingestionURL: string,\n importantEvents: MeetingHistoryState[],\n logger: Logger\n ) {\n const userAgentParserResult = new DefaultUserAgentParser(logger).getParserResult();\n const { browserMajorVersion: _browserMajorVersion, ...clientMetadata } = userAgentParserResult;\n const { type, v, ...rest } = eventsClientConfiguration.toJSON();\n this.authenticationToken = eventsClientConfiguration.getAuthenticationToken();\n this.metadata = { ...clientMetadata, ...rest };\n Object.keys(this.metadata).forEach(key => this.attributesToFilter.push(key));\n this.type = type;\n this.v = v;\n this.ingestionURL = ingestionURL;\n this.logger = logger;\n this.importantEvents = new Set(importantEvents);\n const {\n maxBufferCapacityKb,\n totalBufferItems,\n flushSize,\n flushIntervalMs,\n retryCountLimit,\n } = eventBufferConfiguration;\n this.maxBufferCapacityBytes = maxBufferCapacityKb * 1024;\n this.totalBufferItems = totalBufferItems;\n this.maxBufferItemCapacityBytes = Math.round(this.maxBufferCapacityBytes / totalBufferItems);\n this.flushIntervalMs = flushIntervalMs;\n this.flushSize = flushSize;\n this.retryCountLimit = retryCountLimit;\n this.currentIngestionEvent = this.initializeAndGetCurrentIngestionEvent();\n this.beaconEventListener = (e: Event) => this.beaconEventHandler(e);\n this.addEventListeners();\n }\n\n private addEventListeners(): void {\n if (\n !this.beaconEventListener ||\n !('window' in global) ||\n !window.addEventListener ||\n !('document' in global) ||\n !document.addEventListener\n ) {\n return;\n }\n this.logger.debug(\n `Event Reporting - InMemoryJSONEventBuffer - addEventListeners - adding pagehide and visibility change event listeners`\n );\n window.addEventListener('pagehide', this.beaconEventListener);\n document.addEventListener('visibilitychange', this.beaconEventListener);\n }\n\n private beaconEventHandler(e: Event): void {\n /* istanbul ignore else */\n if (\n (e.type === 'visibilitychange' && document.visibilityState === 'hidden') ||\n e.type === 'pagehide'\n ) {\n this.logger.debug(\n `Event Reporting - InMemoryJSONEventBuffer - beaconEventHandler is triggered calling sendBeacon`\n );\n this.sendBeacon();\n }\n }\n\n private removeEventListeners(): void {\n if (\n !this.beaconEventListener ||\n !('window' in global) ||\n !window.removeEventListener ||\n !('document' in global) ||\n !document.removeEventListener\n ) {\n return;\n }\n window.removeEventListener('pagehide', this.beaconEventListener);\n document.removeEventListener('visibilitychange', this.beaconEventListener);\n this.logger.debug(\n `Event Reporting - InMemoryJSONEventBuffer - removeEventListeners - removing pagehide and visibility change event listeners`\n );\n }\n\n start(): void {\n this.removeEventListeners();\n this.addEventListeners();\n this.intervalScheduler?.stop();\n this.intervalScheduler = new IntervalScheduler(this.flushIntervalMs);\n this.intervalScheduler.start(() => this.sendEvents());\n }\n\n stop(): void {\n this.intervalScheduler?.stop();\n this.intervalScheduler = undefined;\n this.sendBeacon();\n this.removeEventListeners();\n }\n\n async addItem(item: EventData): Promise {\n this.logger.debug(\n `Event Reporting - InMemoryJSONEventBuffer - addItem - received event ${JSON.stringify(item)}`\n );\n const { name, ts, attributes } = item;\n // Filter out PII and redundant attributes.\n const filteredAttributes =\n attributes && this.filterAttributes(attributes, this.attributesToFilter);\n\n const event = { name, ts, ...filteredAttributes };\n this.logger.debug(\n `Event Reporting - InMemoryJSONEventBuffer - addItem - event after filtering attributes ${JSON.stringify(\n event\n )}`\n );\n const size = this.getSize(event);\n if (size > InMemoryJSONEventBuffer.MAX_ITEM_SIZE_BYTES_ALLOWED) {\n throw new Error(\n `Event Reporting - Item to be added has size ${size} bytes. Item cannot exceed max item size allowed of ${InMemoryJSONEventBuffer.MAX_ITEM_SIZE_BYTES_ALLOWED} bytes.`\n );\n }\n if (this.importantEvents.has(name)) {\n // Send immediate events and asyncly retry.\n this.logger.debug(\n `Event Reporting - InMemoryJSONEventBuffer - addItem - sending important event ${JSON.stringify(\n event\n )}`\n );\n this.sendEventImmediately({ name, ts, attributes: filteredAttributes });\n return;\n }\n\n if (this.isFull()) {\n this.logger.warn('Event Reporting - Event buffer is full');\n throw new Error('Buffer full');\n }\n this.currentIngestionEvent.payloads.push(event);\n this.ingestionEventSize += size;\n if (this.bufferItemThresholdReached(size)) {\n const currentEvent = this.deepCopyCurrentIngestionEvent(this.currentIngestionEvent);\n this.buffer.push(currentEvent);\n this.bufferSize += this.ingestionEventSize;\n this.currentIngestionEvent = this.initializeAndGetCurrentIngestionEvent();\n this.logger.debug(\n `Event Reporting - InMemoryJSONEventBuffer - addItem - buffer item threshold reached updated buffer ${JSON.stringify(\n this.buffer\n )}`\n );\n }\n }\n\n private filterAttributes(\n attributes: { [key: string]: string | number },\n attributesToFilter: string[]\n ): { [key: string]: string | number } {\n const attributesToFilterSet = new Set(attributesToFilter);\n const keysToFilterOut = Object.keys(attributes).filter(key => attributesToFilterSet.has(key));\n keysToFilterOut.forEach(key => delete attributes[key]);\n return attributes;\n }\n\n private initializeAndGetCurrentIngestionEvent(): JSONIngestionEvent {\n const bufferItem = {\n type: this.type,\n v: this.v,\n payloads: [] as JSONIngestionPayloadItem[],\n };\n this.ingestionEventSize = this.getSize(bufferItem);\n return bufferItem;\n }\n\n private deepCopyCurrentIngestionEvent = (event: JSONIngestionEvent): JSONIngestionEvent => {\n const newEvent: JSONIngestionEvent = {\n type: event.type,\n v: event.v,\n payloads: [...event.payloads],\n };\n return newEvent;\n };\n\n private bufferItemThresholdReached(size: number): boolean {\n return (\n size + this.ingestionEventSize >= this.maxBufferItemCapacityBytes ||\n this.currentIngestionEvent.payloads.length === InMemoryJSONEventBuffer.MAX_PAYLOAD_ITEMS\n );\n }\n\n private getSize(item: object | string | number): number {\n let bytes = 0;\n if (typeof item === 'object') {\n for (const [key, value] of Object.entries(item)) {\n bytes += this.getPrimitiveSize(key);\n bytes += this.getSize(value);\n }\n } else {\n bytes += this.getPrimitiveSize(item);\n }\n return bytes;\n }\n\n private getPrimitiveSize(item: string | number): number {\n let bytes = 0;\n /* istanbul ignore else */\n if (typeof item === 'string') {\n bytes += item.length * 2;\n } else if (typeof item === 'number') {\n bytes += 8;\n }\n return bytes;\n }\n\n private isFull(): boolean {\n return (\n this.bufferSize === this.maxBufferCapacityBytes ||\n this.buffer.length === this.totalBufferItems\n );\n }\n\n private isEmpty(): boolean {\n return this.buffer.length === 0 || this.bufferSize === 0;\n }\n\n private getItems(end: number, start: number = 0): JSONIngestionEvent[] {\n if (this.isEmpty()) {\n return [];\n }\n end = Math.min(this.buffer.length, end + 1);\n const items = this.buffer.splice(start, end);\n return items;\n }\n\n private sendEvents = async (): Promise => {\n if (this.lock) {\n return;\n }\n const batch: JSONIngestionEvent[] = this.getItems(this.flushSize);\n if (batch.length === 0) {\n return;\n }\n this.lock = true;\n const body = this.makeRequestBody(batch);\n let failed = false;\n\n // If a page re-directs, in Safari and Chrome, the network\n // request shows cancelled but the data reaches the ingestion endpoint.\n // In Firefox, the request errors out with 'NS_BINDING_ABORT' state. Hence, add the event\n // to cancellable events to try with `sendBeacon` lastly.\n const timestamp = Date.now();\n if (this.metadata.browserName.toLowerCase() === 'firefox') {\n this.cancellableEvents.set(timestamp, batch);\n }\n\n try {\n this.logger.debug(\n `Event Reporting - InMemoryJSONEventBuffer - sendEvents - sending body ${body}`\n );\n const response = await this.send(body);\n this.cancellableEvents.delete(timestamp);\n if (!response.ok) {\n this.logger.error(\n `Event Reporting - InMemoryJSONEventBuffer - sendEvents - Failed to send events ${body} with response status ${response.status}`\n );\n failed = true;\n } else {\n try {\n const data = await response.json();\n this.logger.debug(\n `Event Reporting - InMemoryJSONEventBuffer - sendEvents - send successful events: ${body} message: ${JSON.stringify(\n data\n )}`\n );\n } catch (err) {\n /* istanbul ignore next */\n this.logger.warn(\n `Event Reporting - InMemoryJSONEventBuffer - sendEvents error reading OK response ${err} for events ${body}`\n );\n }\n }\n } catch (error) {\n failed = true;\n this.logger.warn(\n `Event Reporting - InMemoryJSONEventBuffer - sendEvents - Error in sending events ${body} to the ingestion endpoint ${error}`\n );\n } finally {\n this.lock = false;\n }\n\n if (failed) {\n this.cancellableEvents.delete(timestamp);\n this.failedIngestionEvents.push(...batch);\n }\n };\n\n private makeBeaconRequestBody(batchEvents: JSONIngestionEvent[]): string {\n const ingestionRecord: JSONIngestionRecord = {\n metadata: this.metadata,\n events: batchEvents,\n authorization: this.authenticationToken,\n };\n return JSON.stringify(ingestionRecord);\n }\n\n private makeRequestBody(batchEvents: JSONIngestionEvent[]): string {\n const ingestionRecord: JSONIngestionRecord = {\n metadata: this.metadata,\n events: batchEvents,\n };\n return JSON.stringify(ingestionRecord);\n }\n\n private async sendEventImmediately(item: EventData): Promise {\n this.logger.debug(\n `Event Reporting - InMemoryJSONEventBuffer - sendEventImmediately - important event received ${JSON.stringify(\n item\n )}`\n );\n const { name, ts, attributes } = item;\n const event: JSONIngestionEvent = {\n type: this.type,\n v: this.v,\n payloads: [\n {\n name,\n ts,\n ...attributes,\n },\n ],\n };\n let failed = false;\n let response: Response = null;\n const body = this.makeRequestBody([event]);\n try {\n response = await this.send(body);\n if (response.ok) {\n try {\n const data = await response.json();\n this.logger.debug(\n `Event Reporting - InMemoryJSONEventBuffer - sendEventImmediately - send successful event: ${body}, message: ${JSON.stringify(\n data\n )}`\n );\n } catch (err) {\n /* istanbul ignore next */\n this.logger.warn(\n `Event Reporting - InMemoryJSONEventBuffer - sendEventImmediately - Error reading OK response ${err} for event ${body}`\n );\n }\n return;\n } else {\n this.logger.error(\n `Event Reporting - InMemoryJSONEventBuffer - sendEventImmediately - Failed to send an important event ${body} with response status ${response.status}`\n );\n failed = true;\n }\n } catch (error) {\n this.logger.warn(\n `Event Reporting - There may be a failure in sending an important event ${body} to the ingestion endpoint ${error}.`\n );\n failed = true;\n try {\n /**\n * Important events like meetingEnded, meetingStartFailed may result into page-redirects.\n * In such a case, Firefox aborts the fetch request with 'NS_BINDING_ABORT' state.\n * Chrome and Safari show fetch request as cancelled and the fetch failure is catched, but,\n * events appear at ingestion backend. Chrome and Safari behavior is unreliable, but Firefox consistently fails,\n * hence, we beacon data as a last resort when using Firefox.\n * During the page-redirect, we do not have access to check fetch's response to handle Chrome and Safari behavior,\n * hence, event ingestion may fail.\n *\n */\n if (this.metadata.browserName.toLowerCase() === 'firefox') {\n const body = this.makeBeaconRequestBody([event]);\n this.logger.debug(\n `Event Reporting - InMemoryJSONEventBuffer - sendEventImmediately - beaconing data out ${body}`\n );\n if (!navigator.sendBeacon(`${this.ingestionURL}?beacon=1`, body)) {\n failed = true;\n } else {\n failed = false;\n }\n }\n } catch (error) {\n this.logger.warn(`Event Reporting - Error sending beacon for an important event ${body}`);\n failed = true;\n }\n }\n\n /* istanbul ignore else */\n if (failed) {\n this.logger.debug(\n `Event Reporting - InMemoryJSONEventBuffer - sendEventImmediately - pushing to failed events ${body}`\n );\n this.failedIngestionEvents.push(event);\n }\n }\n\n private async send(data: string): Promise {\n const backoff: Backoff = new FullJitterBackoff(\n InMemoryJSONEventBuffer.RETRY_FIXED_BACKOFF_WAIT_MS,\n InMemoryJSONEventBuffer.RETRY_SHORT_BACKOFF_MS,\n InMemoryJSONEventBuffer.RETRY_LONG_BACKOFF_MS\n );\n try {\n let retryCount = 0;\n while (retryCount < this.retryCountLimit) {\n const response = await fetch(this.ingestionURL, {\n method: 'POST',\n headers: {\n Authorization: `Bearer ${this.authenticationToken}`,\n },\n body: data,\n });\n if (response.ok || !InMemoryJSONEventBuffer.SENDING_FAILURE_CODES.has(response.status)) {\n return response;\n } else {\n this.logger.warn(\n `Will retry sending failure for ${data} due to status code ${response.status}.`\n );\n retryCount++;\n /* istanbul ignore else */\n if (retryCount < this.retryCountLimit) {\n const backoffTime = backoff.nextBackoffAmountMs();\n await wait(backoffTime);\n }\n }\n }\n /* istanbul ignore else */\n if (retryCount === this.retryCountLimit) {\n throw new Error(`Retry count limit reached for ${data}`);\n }\n } catch (error) {\n throw error;\n }\n }\n\n private async sendBeacon(): Promise {\n // Any pending events from buffer.\n const events = this.buffer;\n this.logger.debug(\n `Event Reporting - InMemoryJSONEventBuffer - sendBeacon - clearing out buffer events ${JSON.stringify(\n events\n )}`\n );\n this.buffer = [];\n // Any pending event in current ingestion event.\n if (this.currentIngestionEvent.payloads.length > 0) {\n const clearCurrenIngestionEvent = this.deepCopyCurrentIngestionEvent(\n this.currentIngestionEvent\n );\n events.push(clearCurrenIngestionEvent);\n this.logger.debug(\n `Event Reporting - InMemoryJSONEventBuffer - sendBeacon - clearing out current ingestion event ${JSON.stringify(\n clearCurrenIngestionEvent\n )}`\n );\n this.currentIngestionEvent = this.initializeAndGetCurrentIngestionEvent();\n }\n\n // Any failed ingestion events which were sent before.\n if (this.failedIngestionEvents.length > 0) {\n const failedRecordsCopy = this.failedIngestionEvents.map(record =>\n this.deepCopyCurrentIngestionEvent(record)\n );\n events.push(...failedRecordsCopy);\n this.logger.debug(\n `Event Reporting - InMemoryJSONEventBuffer - sendBeacon - clearing out any failed ingestion event ${JSON.stringify(\n failedRecordsCopy\n )}`\n );\n this.failedIngestionEvents = [];\n }\n\n // Any cancelled requests due to page-redirects.\n if (this.cancellableEvents.size > 0) {\n this.cancellableEvents.forEach(value => {\n events.push(...value);\n this.logger.debug(\n `Event Reporting - InMemoryJSONEventBuffer - sendBeacon - clearing out each cancellable event ${JSON.stringify(\n value\n )}`\n );\n });\n this.cancellableEvents.clear();\n }\n\n if (events.length === 0) {\n return;\n }\n const beaconData = this.makeBeaconRequestBody(events);\n this.logger.debug(\n `Event Reporting - InMemoryJSONEventBuffer - sendBeacon - beacon data to send ${beaconData}`\n );\n try {\n /* istanbul ignore else */\n if (!navigator.sendBeacon(`${this.ingestionURL}?beacon=1`, beaconData)) {\n this.logger.warn(`Event Reporting - Browser failed to queue beacon data ${beaconData}`);\n }\n } catch (error) {\n this.logger.warn(\n `Event Reporting - Sending beacon data ${beaconData} failed with error ${error}`\n );\n }\n }\n\n private reset(): void {\n this.maxBufferCapacityBytes = 0;\n this.totalBufferItems = 0;\n this.buffer = [];\n this.bufferSize = 0;\n this.maxBufferItemCapacityBytes = 0;\n this.ingestionEventSize = 0;\n this.flushIntervalMs = 0;\n this.flushSize = 0;\n this.failedIngestionEvents = [];\n this.lock = false;\n this.beaconEventListener = undefined;\n this.cancellableEvents.clear();\n }\n\n async destroy(): Promise {\n this.stop();\n this.reset();\n }\n}\n","'use strict';\nvar has = require('../internals/set-helpers').has;\n\n// Perform ? RequireInternalSlot(M, [[SetData]])\nmodule.exports = function (it) {\n has(it);\n return it;\n};\n","var AWS = require('./core');\nrequire('./credentials');\nrequire('./credentials/credential_provider_chain');\nvar PromisesDependency;\n\n/**\n * The main configuration class used by all service objects to set\n * the region, credentials, and other options for requests.\n *\n * By default, credentials and region settings are left unconfigured.\n * This should be configured by the application before using any\n * AWS service APIs.\n *\n * In order to set global configuration options, properties should\n * be assigned to the global {AWS.config} object.\n *\n * @see AWS.config\n *\n * @!group General Configuration Options\n *\n * @!attribute credentials\n * @return [AWS.Credentials] the AWS credentials to sign requests with.\n *\n * @!attribute region\n * @example Set the global region setting to us-west-2\n * AWS.config.update({region: 'us-west-2'});\n * @return [AWS.Credentials] The region to send service requests to.\n * @see http://docs.amazonwebservices.com/general/latest/gr/rande.html\n * A list of available endpoints for each AWS service\n *\n * @!attribute maxRetries\n * @return [Integer] the maximum amount of retries to perform for a\n * service request. By default this value is calculated by the specific\n * service object that the request is being made to.\n *\n * @!attribute maxRedirects\n * @return [Integer] the maximum amount of redirects to follow for a\n * service request. Defaults to 10.\n *\n * @!attribute paramValidation\n * @return [Boolean|map] whether input parameters should be validated against\n * the operation description before sending the request. Defaults to true.\n * Pass a map to enable any of the following specific validation features:\n *\n * * **min** [Boolean] — Validates that a value meets the min\n * constraint. This is enabled by default when paramValidation is set\n * to `true`.\n * * **max** [Boolean] — Validates that a value meets the max\n * constraint.\n * * **pattern** [Boolean] — Validates that a string value matches a\n * regular expression.\n * * **enum** [Boolean] — Validates that a string value matches one\n * of the allowable enum values.\n *\n * @!attribute computeChecksums\n * @return [Boolean] whether to compute checksums for payload bodies when\n * the service accepts it (currently supported in S3 and SQS only).\n *\n * @!attribute convertResponseTypes\n * @return [Boolean] whether types are converted when parsing response data.\n * Currently only supported for JSON based services. Turning this off may\n * improve performance on large response payloads. Defaults to `true`.\n *\n * @!attribute correctClockSkew\n * @return [Boolean] whether to apply a clock skew correction and retry\n * requests that fail because of an skewed client clock. Defaults to\n * `false`.\n *\n * @!attribute sslEnabled\n * @return [Boolean] whether SSL is enabled for requests\n *\n * @!attribute s3ForcePathStyle\n * @return [Boolean] whether to force path style URLs for S3 objects\n *\n * @!attribute s3BucketEndpoint\n * @note Setting this configuration option requires an `endpoint` to be\n * provided explicitly to the service constructor.\n * @return [Boolean] whether the provided endpoint addresses an individual\n * bucket (false if it addresses the root API endpoint).\n *\n * @!attribute s3DisableBodySigning\n * @return [Boolean] whether to disable S3 body signing when using signature version `v4`.\n * Body signing can only be disabled when using https. Defaults to `true`.\n *\n * @!attribute s3UsEast1RegionalEndpoint\n * @return ['legacy'|'regional'] when region is set to 'us-east-1', whether to send s3\n * request to global endpoints or 'us-east-1' regional endpoints. This config is only\n * applicable to S3 client;\n * Defaults to 'legacy'\n * @!attribute s3UseArnRegion\n * @return [Boolean] whether to override the request region with the region inferred\n * from requested resource's ARN. Only available for S3 buckets\n * Defaults to `true`\n *\n * @!attribute useAccelerateEndpoint\n * @note This configuration option is only compatible with S3 while accessing\n * dns-compatible buckets.\n * @return [Boolean] Whether to use the Accelerate endpoint with the S3 service.\n * Defaults to `false`.\n *\n * @!attribute retryDelayOptions\n * @example Set the base retry delay for all services to 300 ms\n * AWS.config.update({retryDelayOptions: {base: 300}});\n * // Delays with maxRetries = 3: 300, 600, 1200\n * @example Set a custom backoff function to provide delay values on retries\n * AWS.config.update({retryDelayOptions: {customBackoff: function(retryCount, err) {\n * // returns delay in ms\n * }}});\n * @return [map] A set of options to configure the retry delay on retryable errors.\n * Currently supported options are:\n *\n * * **base** [Integer] — The base number of milliseconds to use in the\n * exponential backoff for operation retries. Defaults to 100 ms for all services except\n * DynamoDB, where it defaults to 50ms.\n *\n * * **customBackoff ** [function] — A custom function that accepts a\n * retry count and error and returns the amount of time to delay in\n * milliseconds. If the result is a non-zero negative value, no further\n * retry attempts will be made. The `base` option will be ignored if this\n * option is supplied. The function is only called for retryable errors.\n *\n * @!attribute httpOptions\n * @return [map] A set of options to pass to the low-level HTTP request.\n * Currently supported options are:\n *\n * * **proxy** [String] — the URL to proxy requests through\n * * **agent** [http.Agent, https.Agent] — the Agent object to perform\n * HTTP requests with. Used for connection pooling. Note that for\n * SSL connections, a special Agent object is used in order to enable\n * peer certificate verification. This feature is only supported in the\n * Node.js environment.\n * * **connectTimeout** [Integer] — Sets the socket to timeout after\n * failing to establish a connection with the server after\n * `connectTimeout` milliseconds. This timeout has no effect once a socket\n * connection has been established.\n * * **timeout** [Integer] — The number of milliseconds a request can\n * take before automatically being terminated.\n * Defaults to two minutes (120000).\n * * **xhrAsync** [Boolean] — Whether the SDK will send asynchronous\n * HTTP requests. Used in the browser environment only. Set to false to\n * send requests synchronously. Defaults to true (async on).\n * * **xhrWithCredentials** [Boolean] — Sets the \"withCredentials\"\n * property of an XMLHttpRequest object. Used in the browser environment\n * only. Defaults to false.\n * @!attribute logger\n * @return [#write,#log] an object that responds to .write() (like a stream)\n * or .log() (like the console object) in order to log information about\n * requests\n *\n * @!attribute systemClockOffset\n * @return [Number] an offset value in milliseconds to apply to all signing\n * times. Use this to compensate for clock skew when your system may be\n * out of sync with the service time. Note that this configuration option\n * can only be applied to the global `AWS.config` object and cannot be\n * overridden in service-specific configuration. Defaults to 0 milliseconds.\n *\n * @!attribute signatureVersion\n * @return [String] the signature version to sign requests with (overriding\n * the API configuration). Possible values are: 'v2', 'v3', 'v4'.\n *\n * @!attribute signatureCache\n * @return [Boolean] whether the signature to sign requests with (overriding\n * the API configuration) is cached. Only applies to the signature version 'v4'.\n * Defaults to `true`.\n *\n * @!attribute endpointDiscoveryEnabled\n * @return [Boolean|undefined] whether to call operations with endpoints\n * given by service dynamically. Setting this config to `true` will enable\n * endpoint discovery for all applicable operations. Setting it to `false`\n * will explicitly disable endpoint discovery even though operations that\n * require endpoint discovery will presumably fail. Leaving it to\n * `undefined` means SDK only do endpoint discovery when it's required.\n * Defaults to `undefined`\n *\n * @!attribute endpointCacheSize\n * @return [Number] the size of the global cache storing endpoints from endpoint\n * discovery operations. Once endpoint cache is created, updating this setting\n * cannot change existing cache size.\n * Defaults to 1000\n *\n * @!attribute hostPrefixEnabled\n * @return [Boolean] whether to marshal request parameters to the prefix of\n * hostname. Defaults to `true`.\n *\n * @!attribute stsRegionalEndpoints\n * @return ['legacy'|'regional'] whether to send sts request to global endpoints or\n * regional endpoints.\n * Defaults to 'legacy'.\n *\n * @!attribute useFipsEndpoint\n * @return [Boolean] Enables FIPS compatible endpoints. Defaults to `false`.\n *\n * @!attribute useDualstackEndpoint\n * @return [Boolean] Enables IPv6 dualstack endpoint. Defaults to `false`.\n */\nAWS.Config = AWS.util.inherit({\n /**\n * @!endgroup\n */\n\n /**\n * Creates a new configuration object. This is the object that passes\n * option data along to service requests, including credentials, security,\n * region information, and some service specific settings.\n *\n * @example Creating a new configuration object with credentials and region\n * var config = new AWS.Config({\n * accessKeyId: 'AKID', secretAccessKey: 'SECRET', region: 'us-west-2'\n * });\n * @option options accessKeyId [String] your AWS access key ID.\n * @option options secretAccessKey [String] your AWS secret access key.\n * @option options sessionToken [AWS.Credentials] the optional AWS\n * session token to sign requests with.\n * @option options credentials [AWS.Credentials] the AWS credentials\n * to sign requests with. You can either specify this object, or\n * specify the accessKeyId and secretAccessKey options directly.\n * @option options credentialProvider [AWS.CredentialProviderChain] the\n * provider chain used to resolve credentials if no static `credentials`\n * property is set.\n * @option options region [String] the region to send service requests to.\n * See {region} for more information.\n * @option options maxRetries [Integer] the maximum amount of retries to\n * attempt with a request. See {maxRetries} for more information.\n * @option options maxRedirects [Integer] the maximum amount of redirects to\n * follow with a request. See {maxRedirects} for more information.\n * @option options sslEnabled [Boolean] whether to enable SSL for\n * requests.\n * @option options paramValidation [Boolean|map] whether input parameters\n * should be validated against the operation description before sending\n * the request. Defaults to true. Pass a map to enable any of the\n * following specific validation features:\n *\n * * **min** [Boolean] — Validates that a value meets the min\n * constraint. This is enabled by default when paramValidation is set\n * to `true`.\n * * **max** [Boolean] — Validates that a value meets the max\n * constraint.\n * * **pattern** [Boolean] — Validates that a string value matches a\n * regular expression.\n * * **enum** [Boolean] — Validates that a string value matches one\n * of the allowable enum values.\n * @option options computeChecksums [Boolean] whether to compute checksums\n * for payload bodies when the service accepts it (currently supported\n * in S3 only)\n * @option options convertResponseTypes [Boolean] whether types are converted\n * when parsing response data. Currently only supported for JSON based\n * services. Turning this off may improve performance on large response\n * payloads. Defaults to `true`.\n * @option options correctClockSkew [Boolean] whether to apply a clock skew\n * correction and retry requests that fail because of an skewed client\n * clock. Defaults to `false`.\n * @option options s3ForcePathStyle [Boolean] whether to force path\n * style URLs for S3 objects.\n * @option options s3BucketEndpoint [Boolean] whether the provided endpoint\n * addresses an individual bucket (false if it addresses the root API\n * endpoint). Note that setting this configuration option requires an\n * `endpoint` to be provided explicitly to the service constructor.\n * @option options s3DisableBodySigning [Boolean] whether S3 body signing\n * should be disabled when using signature version `v4`. Body signing\n * can only be disabled when using https. Defaults to `true`.\n * @option options s3UsEast1RegionalEndpoint ['legacy'|'regional'] when region\n * is set to 'us-east-1', whether to send s3 request to global endpoints or\n * 'us-east-1' regional endpoints. This config is only applicable to S3 client.\n * Defaults to `legacy`\n * @option options s3UseArnRegion [Boolean] whether to override the request region\n * with the region inferred from requested resource's ARN. Only available for S3 buckets\n * Defaults to `true`\n *\n * @option options retryDelayOptions [map] A set of options to configure\n * the retry delay on retryable errors. Currently supported options are:\n *\n * * **base** [Integer] — The base number of milliseconds to use in the\n * exponential backoff for operation retries. Defaults to 100 ms for all\n * services except DynamoDB, where it defaults to 50ms.\n * * **customBackoff ** [function] — A custom function that accepts a\n * retry count and error and returns the amount of time to delay in\n * milliseconds. If the result is a non-zero negative value, no further\n * retry attempts will be made. The `base` option will be ignored if this\n * option is supplied. The function is only called for retryable errors.\n * @option options httpOptions [map] A set of options to pass to the low-level\n * HTTP request. Currently supported options are:\n *\n * * **proxy** [String] — the URL to proxy requests through\n * * **agent** [http.Agent, https.Agent] — the Agent object to perform\n * HTTP requests with. Used for connection pooling. Defaults to the global\n * agent (`http.globalAgent`) for non-SSL connections. Note that for\n * SSL connections, a special Agent object is used in order to enable\n * peer certificate verification. This feature is only available in the\n * Node.js environment.\n * * **connectTimeout** [Integer] — Sets the socket to timeout after\n * failing to establish a connection with the server after\n * `connectTimeout` milliseconds. This timeout has no effect once a socket\n * connection has been established.\n * * **timeout** [Integer] — Sets the socket to timeout after timeout\n * milliseconds of inactivity on the socket. Defaults to two minutes\n * (120000).\n * * **xhrAsync** [Boolean] — Whether the SDK will send asynchronous\n * HTTP requests. Used in the browser environment only. Set to false to\n * send requests synchronously. Defaults to true (async on).\n * * **xhrWithCredentials** [Boolean] — Sets the \"withCredentials\"\n * property of an XMLHttpRequest object. Used in the browser environment\n * only. Defaults to false.\n * @option options apiVersion [String, Date] a String in YYYY-MM-DD format\n * (or a date) that represents the latest possible API version that can be\n * used in all services (unless overridden by `apiVersions`). Specify\n * 'latest' to use the latest possible version.\n * @option options apiVersions [map] a map of service\n * identifiers (the lowercase service class name) with the API version to\n * use when instantiating a service. Specify 'latest' for each individual\n * that can use the latest available version.\n * @option options logger [#write,#log] an object that responds to .write()\n * (like a stream) or .log() (like the console object) in order to log\n * information about requests\n * @option options systemClockOffset [Number] an offset value in milliseconds\n * to apply to all signing times. Use this to compensate for clock skew\n * when your system may be out of sync with the service time. Note that\n * this configuration option can only be applied to the global `AWS.config`\n * object and cannot be overridden in service-specific configuration.\n * Defaults to 0 milliseconds.\n * @option options signatureVersion [String] the signature version to sign\n * requests with (overriding the API configuration). Possible values are:\n * 'v2', 'v3', 'v4'.\n * @option options signatureCache [Boolean] whether the signature to sign\n * requests with (overriding the API configuration) is cached. Only applies\n * to the signature version 'v4'. Defaults to `true`.\n * @option options dynamoDbCrc32 [Boolean] whether to validate the CRC32\n * checksum of HTTP response bodies returned by DynamoDB. Default: `true`.\n * @option options useAccelerateEndpoint [Boolean] Whether to use the\n * S3 Transfer Acceleration endpoint with the S3 service. Default: `false`.\n * @option options clientSideMonitoring [Boolean] whether to collect and\n * publish this client's performance metrics of all its API requests.\n * @option options endpointDiscoveryEnabled [Boolean|undefined] whether to\n * call operations with endpoints given by service dynamically. Setting this\n * config to `true` will enable endpoint discovery for all applicable operations.\n * Setting it to `false` will explicitly disable endpoint discovery even though\n * operations that require endpoint discovery will presumably fail. Leaving it\n * to `undefined` means SDK will only do endpoint discovery when it's required.\n * Defaults to `undefined`\n * @option options endpointCacheSize [Number] the size of the global cache storing\n * endpoints from endpoint discovery operations. Once endpoint cache is created,\n * updating this setting cannot change existing cache size.\n * Defaults to 1000\n * @option options hostPrefixEnabled [Boolean] whether to marshal request\n * parameters to the prefix of hostname.\n * Defaults to `true`.\n * @option options stsRegionalEndpoints ['legacy'|'regional'] whether to send sts request\n * to global endpoints or regional endpoints.\n * Defaults to 'legacy'.\n * @option options useFipsEndpoint [Boolean] Enables FIPS compatible endpoints.\n * Defaults to `false`.\n * @option options useDualstackEndpoint [Boolean] Enables IPv6 dualstack endpoint.\n * Defaults to `false`.\n */\n constructor: function Config(options) {\n if (options === undefined) options = {};\n options = this.extractCredentials(options);\n\n AWS.util.each.call(this, this.keys, function (key, value) {\n this.set(key, options[key], value);\n });\n },\n\n /**\n * @!group Managing Credentials\n */\n\n /**\n * Loads credentials from the configuration object. This is used internally\n * by the SDK to ensure that refreshable {Credentials} objects are properly\n * refreshed and loaded when sending a request. If you want to ensure that\n * your credentials are loaded prior to a request, you can use this method\n * directly to provide accurate credential data stored in the object.\n *\n * @note If you configure the SDK with static or environment credentials,\n * the credential data should already be present in {credentials} attribute.\n * This method is primarily necessary to load credentials from asynchronous\n * sources, or sources that can refresh credentials periodically.\n * @example Getting your access key\n * AWS.config.getCredentials(function(err) {\n * if (err) console.log(err.stack); // credentials not loaded\n * else console.log(\"Access Key:\", AWS.config.credentials.accessKeyId);\n * })\n * @callback callback function(err)\n * Called when the {credentials} have been properly set on the configuration\n * object.\n *\n * @param err [Error] if this is set, credentials were not successfully\n * loaded and this error provides information why.\n * @see credentials\n * @see Credentials\n */\n getCredentials: function getCredentials(callback) {\n var self = this;\n\n function finish(err) {\n callback(err, err ? null : self.credentials);\n }\n\n function credError(msg, err) {\n return new AWS.util.error(err || new Error(), {\n code: 'CredentialsError',\n message: msg,\n name: 'CredentialsError'\n });\n }\n\n function getAsyncCredentials() {\n self.credentials.get(function(err) {\n if (err) {\n var msg = 'Could not load credentials from ' +\n self.credentials.constructor.name;\n err = credError(msg, err);\n }\n finish(err);\n });\n }\n\n function getStaticCredentials() {\n var err = null;\n if (!self.credentials.accessKeyId || !self.credentials.secretAccessKey) {\n err = credError('Missing credentials');\n }\n finish(err);\n }\n\n if (self.credentials) {\n if (typeof self.credentials.get === 'function') {\n getAsyncCredentials();\n } else { // static credentials\n getStaticCredentials();\n }\n } else if (self.credentialProvider) {\n self.credentialProvider.resolve(function(err, creds) {\n if (err) {\n err = credError('Could not load credentials from any providers', err);\n }\n self.credentials = creds;\n finish(err);\n });\n } else {\n finish(credError('No credentials to load'));\n }\n },\n\n /**\n * Loads token from the configuration object. This is used internally\n * by the SDK to ensure that refreshable {Token} objects are properly\n * refreshed and loaded when sending a request. If you want to ensure that\n * your token is loaded prior to a request, you can use this method\n * directly to provide accurate token data stored in the object.\n *\n * @note If you configure the SDK with static token, the token data should\n * already be present in {token} attribute. This method is primarily necessary\n * to load token from asynchronous sources, or sources that can refresh\n * token periodically.\n * @example Getting your access token\n * AWS.config.getToken(function(err) {\n * if (err) console.log(err.stack); // token not loaded\n * else console.log(\"Token:\", AWS.config.token.token);\n * })\n * @callback callback function(err)\n * Called when the {token} have been properly set on the configuration object.\n *\n * @param err [Error] if this is set, token was not successfully loaded and\n * this error provides information why.\n * @see token\n */\n getToken: function getToken(callback) {\n var self = this;\n\n function finish(err) {\n callback(err, err ? null : self.token);\n }\n\n function tokenError(msg, err) {\n return new AWS.util.error(err || new Error(), {\n code: 'TokenError',\n message: msg,\n name: 'TokenError'\n });\n }\n\n function getAsyncToken() {\n self.token.get(function(err) {\n if (err) {\n var msg = 'Could not load token from ' +\n self.token.constructor.name;\n err = tokenError(msg, err);\n }\n finish(err);\n });\n }\n\n function getStaticToken() {\n var err = null;\n if (!self.token.token) {\n err = tokenError('Missing token');\n }\n finish(err);\n }\n\n if (self.token) {\n if (typeof self.token.get === 'function') {\n getAsyncToken();\n } else { // static token\n getStaticToken();\n }\n } else if (self.tokenProvider) {\n self.tokenProvider.resolve(function(err, token) {\n if (err) {\n err = tokenError('Could not load token from any providers', err);\n }\n self.token = token;\n finish(err);\n });\n } else {\n finish(tokenError('No token to load'));\n }\n },\n\n /**\n * @!group Loading and Setting Configuration Options\n */\n\n /**\n * @overload update(options, allowUnknownKeys = false)\n * Updates the current configuration object with new options.\n *\n * @example Update maxRetries property of a configuration object\n * config.update({maxRetries: 10});\n * @param [Object] options a map of option keys and values.\n * @param [Boolean] allowUnknownKeys whether unknown keys can be set on\n * the configuration object. Defaults to `false`.\n * @see constructor\n */\n update: function update(options, allowUnknownKeys) {\n allowUnknownKeys = allowUnknownKeys || false;\n options = this.extractCredentials(options);\n AWS.util.each.call(this, options, function (key, value) {\n if (allowUnknownKeys || Object.prototype.hasOwnProperty.call(this.keys, key) ||\n AWS.Service.hasService(key)) {\n this.set(key, value);\n }\n });\n },\n\n /**\n * Loads configuration data from a JSON file into this config object.\n * @note Loading configuration will reset all existing configuration\n * on the object.\n * @!macro nobrowser\n * @param path [String] the path relative to your process's current\n * working directory to load configuration from.\n * @return [AWS.Config] the same configuration object\n */\n loadFromPath: function loadFromPath(path) {\n this.clear();\n\n var options = JSON.parse(AWS.util.readFileSync(path));\n var fileSystemCreds = new AWS.FileSystemCredentials(path);\n var chain = new AWS.CredentialProviderChain();\n chain.providers.unshift(fileSystemCreds);\n chain.resolve(function (err, creds) {\n if (err) throw err;\n else options.credentials = creds;\n });\n\n this.constructor(options);\n\n return this;\n },\n\n /**\n * Clears configuration data on this object\n *\n * @api private\n */\n clear: function clear() {\n /*jshint forin:false */\n AWS.util.each.call(this, this.keys, function (key) {\n delete this[key];\n });\n\n // reset credential provider\n this.set('credentials', undefined);\n this.set('credentialProvider', undefined);\n },\n\n /**\n * Sets a property on the configuration object, allowing for a\n * default value\n * @api private\n */\n set: function set(property, value, defaultValue) {\n if (value === undefined) {\n if (defaultValue === undefined) {\n defaultValue = this.keys[property];\n }\n if (typeof defaultValue === 'function') {\n this[property] = defaultValue.call(this);\n } else {\n this[property] = defaultValue;\n }\n } else if (property === 'httpOptions' && this[property]) {\n // deep merge httpOptions\n this[property] = AWS.util.merge(this[property], value);\n } else {\n this[property] = value;\n }\n },\n\n /**\n * All of the keys with their default values.\n *\n * @constant\n * @api private\n */\n keys: {\n credentials: null,\n credentialProvider: null,\n region: null,\n logger: null,\n apiVersions: {},\n apiVersion: null,\n endpoint: undefined,\n httpOptions: {\n timeout: 120000\n },\n maxRetries: undefined,\n maxRedirects: 10,\n paramValidation: true,\n sslEnabled: true,\n s3ForcePathStyle: false,\n s3BucketEndpoint: false,\n s3DisableBodySigning: true,\n s3UsEast1RegionalEndpoint: 'legacy',\n s3UseArnRegion: undefined,\n computeChecksums: true,\n convertResponseTypes: true,\n correctClockSkew: false,\n customUserAgent: null,\n dynamoDbCrc32: true,\n systemClockOffset: 0,\n signatureVersion: null,\n signatureCache: true,\n retryDelayOptions: {},\n useAccelerateEndpoint: false,\n clientSideMonitoring: false,\n endpointDiscoveryEnabled: undefined,\n endpointCacheSize: 1000,\n hostPrefixEnabled: true,\n stsRegionalEndpoints: 'legacy',\n useFipsEndpoint: false,\n useDualstackEndpoint: false,\n token: null\n },\n\n /**\n * Extracts accessKeyId, secretAccessKey and sessionToken\n * from a configuration hash.\n *\n * @api private\n */\n extractCredentials: function extractCredentials(options) {\n if (options.accessKeyId && options.secretAccessKey) {\n options = AWS.util.copy(options);\n options.credentials = new AWS.Credentials(options);\n }\n return options;\n },\n\n /**\n * Sets the promise dependency the SDK will use wherever Promises are returned.\n * Passing `null` will force the SDK to use native Promises if they are available.\n * If native Promises are not available, passing `null` will have no effect.\n * @param [Constructor] dep A reference to a Promise constructor\n */\n setPromisesDependency: function setPromisesDependency(dep) {\n PromisesDependency = dep;\n // if null was passed in, we should try to use native promises\n if (dep === null && typeof Promise === 'function') {\n PromisesDependency = Promise;\n }\n var constructors = [AWS.Request, AWS.Credentials, AWS.CredentialProviderChain];\n if (AWS.S3) {\n constructors.push(AWS.S3);\n if (AWS.S3.ManagedUpload) {\n constructors.push(AWS.S3.ManagedUpload);\n }\n }\n AWS.util.addPromises(constructors, PromisesDependency);\n },\n\n /**\n * Gets the promise dependency set by `AWS.config.setPromisesDependency`.\n */\n getPromisesDependency: function getPromisesDependency() {\n return PromisesDependency;\n }\n});\n\n/**\n * @return [AWS.Config] The global configuration object singleton instance\n * @readonly\n * @see AWS.Config\n */\nAWS.config = new AWS.Config();\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport BackgroundFilterVideoFrameProcessorDelegate from '../backgroundfilter/BackgroundFilterVideoFrameProcessorDelegate';\n\n/**\n * This class adds the functionality to allow for a set of unique observers to be added to the\n * video frame processor.\n */\n/** @internal */\nexport default class BackgroundReplacementVideoFrameProcessorDelegate extends BackgroundFilterVideoFrameProcessorDelegate {}\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['ec2'] = {};\nAWS.EC2 = Service.defineService('ec2', ['2013-06-15*', '2013-10-15*', '2014-02-01*', '2014-05-01*', '2014-06-15*', '2014-09-01*', '2014-10-01*', '2015-03-01*', '2015-04-15*', '2015-10-01*', '2016-04-01*', '2016-09-15*', '2016-11-15']);\nrequire('../lib/services/ec2');\nObject.defineProperty(apiLoader.services['ec2'], '2016-11-15', {\n get: function get() {\n var model = require('../apis/ec2-2016-11-15.min.json');\n model.paginators = require('../apis/ec2-2016-11-15.paginators.json').pagination;\n model.waiters = require('../apis/ec2-2016-11-15.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.EC2;\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport AudioVideoControllerState from '../audiovideocontroller/AudioVideoControllerState';\nimport RemovableObserver from '../removableobserver/RemovableObserver';\nimport SignalingClientEvent from '../signalingclient/SignalingClientEvent';\nimport SignalingClientEventType from '../signalingclient/SignalingClientEventType';\nimport SignalingClientObserver from '../signalingclientobserver/SignalingClientObserver';\nimport { SdkPauseResumeFrame, SdkSignalFrame } from '../signalingprotocol/SignalingProtocol.js';\nimport VideoDownlinkObserver from '../videodownlinkbandwidthpolicy/VideoDownlinkObserver';\nimport BaseTask from './BaseTask';\n\n/*\n * [[ReceiveRemoteVideoPauseResume]] receives [[SdkPauseFrame]] from the server side (only if\n * `VideoDownlinkBandwidthPolicy.getServerSideNetworkAdaption()` == `BandwidthProbingAndRemoteVideoQualityAdaption`)\n * which indicates remote video sources that have been paused or resumed and updates [[VideoDownlinkBandwidthPolicy]]\n * and [[VideoTileController]]\n *\n */\nexport default class ReceiveRemoteVideoPauseResume\n extends BaseTask\n implements SignalingClientObserver, RemovableObserver {\n protected taskName = 'ReceiveRemoteVideoPauseResume';\n\n private serverPausedVideoTileIds = new Set();\n\n constructor(private context: AudioVideoControllerState) {\n super(context.logger);\n }\n\n removeObserver(): void {\n this.context.signalingClient.removeObserver(this);\n }\n\n async run(): Promise {\n this.context.signalingClient.registerObserver(this);\n this.context.removableObservers.push(this);\n }\n\n updateSubscribedGroupdIds(groupIds: Set): void {\n const existingVideoTileIds = new Set();\n for (const groupId of groupIds) {\n const attendeeId = this.context.videoStreamIndex.attendeeIdForGroupId(groupId);\n if (attendeeId.length === 0) {\n this.logger.warn(`Could not find attendee ID for newly subscribed group ID ${groupId}`);\n continue;\n }\n let videoTile = this.context.videoTileController.getVideoTileForAttendeeId(attendeeId);\n if (videoTile === undefined) {\n this.logger.info(\n `No existing video tile for attendee ID ${attendeeId} with new group ID ${groupId}. Creating new one.`\n );\n videoTile = this.context.videoTileController.addVideoTile();\n videoTile.bindVideoStream(attendeeId, false, null, 0, 0, 0, null);\n }\n existingVideoTileIds.add(videoTile.id());\n }\n\n this.serverPausedVideoTileIds.forEach(id => {\n if (!existingVideoTileIds.has(id)) {\n this.serverPausedVideoTileIds.delete(id);\n }\n });\n }\n\n handleSignalingClientEvent(event: SignalingClientEvent): void {\n if (\n event.type !== SignalingClientEventType.ReceivedSignalFrame ||\n (event.message.type !== SdkSignalFrame.Type.PAUSE &&\n event.message.type !== SdkSignalFrame.Type.RESUME)\n ) {\n return;\n }\n\n // @ts-ignore: force cast to SdkPauseFrame\n const pauseResumeFrame: SdkPauseResumeFrame = event.message.pause;\n const messageType = event.message.type;\n this.logger.info(\n `Received new ${\n messageType === SdkSignalFrame.Type.PAUSE ? 'pause' : 'resume'\n } frame: ${JSON.stringify(pauseResumeFrame)}`\n );\n\n if (\n !pauseResumeFrame ||\n this.context.videoTileController.getVideoTileForAttendeeId === undefined ||\n this.context.videoDownlinkBandwidthPolicy.forEachObserver === undefined ||\n this.context.videoStreamIndex.attendeeIdForGroupId === undefined\n ) {\n return;\n }\n\n const tiles = pauseResumeFrame.groupIds.map((groupId: number) => {\n const attendeeId = this.context.videoStreamIndex.attendeeIdForGroupId(groupId);\n if (attendeeId.length === 0) {\n this.logger.warn(`Could not find attendee ID for paused group ID ${groupId}`);\n return undefined;\n }\n return this.context.videoTileController.getVideoTileForAttendeeId(attendeeId);\n });\n\n for (const tile of tiles) {\n if (tile === undefined) {\n // Warning is logged above\n continue;\n }\n if (messageType === SdkSignalFrame.Type.PAUSE) {\n if (!tile.state().paused) {\n this.serverPausedVideoTileIds.add(tile.id());\n this.context.videoDownlinkBandwidthPolicy.forEachObserver(\n (observer: VideoDownlinkObserver) => {\n observer.tileWillBePausedByDownlinkPolicy(tile.id());\n }\n );\n // This circumvents the tile controller so it will not send\n // any signaling messages to server side.\n tile.pause();\n }\n } else {\n // Don't resume user paused video tiles\n if (tile.state().paused && this.serverPausedVideoTileIds.has(tile.id())) {\n this.serverPausedVideoTileIds.delete(tile.id());\n this.context.videoDownlinkBandwidthPolicy.forEachObserver(\n (observer: VideoDownlinkObserver) => {\n observer.tileWillBeUnpausedByDownlinkPolicy(tile.id());\n }\n );\n // See comment above.\n tile.unpause();\n }\n }\n }\n }\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nexport default class Message {\n constructor(\n public readonly type: string, // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\n public readonly headers: any,\n public readonly payload: string\n ) {}\n}\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['xray'] = {};\nAWS.XRay = Service.defineService('xray', ['2016-04-12']);\nObject.defineProperty(apiLoader.services['xray'], '2016-04-12', {\n get: function get() {\n var model = require('../apis/xray-2016-04-12.min.json');\n model.paginators = require('../apis/xray-2016-04-12.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.XRay;\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport GetUserMediaError from './GetUserMediaError';\n\nexport default class TypeError extends GetUserMediaError {\n constructor(cause?: Error) {\n super(cause);\n this.name = 'TypeError';\n }\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport EventBufferConfiguration from '../eventbufferconfiguration/EventBufferConfiguration';\nimport EventsClientConfiguration from '../eventsclientconfiguration/EventsClientConfiguration';\n\n/**\n * [[EventIngestionConfiguration]] contains necessary information to\n * report events to the ingestion service.\n */\nexport default class EventIngestionConfiguration {\n /**\n * Client specific configuration.\n */\n eventsClientConfiguration: EventsClientConfiguration;\n\n /**\n * Ingestion service endpoint to send the events.\n */\n ingestionURL: string;\n\n /**\n * Buffer configuration to use when buffering and sending events\n * to the ingestion service endpoint.\n * This is optional and we use default values to create EventBufferConfiguration.\n */\n eventBufferConfiguration: EventBufferConfiguration;\n\n constructor(\n eventsClientConfiguration: EventsClientConfiguration,\n ingestionURL: string,\n eventBufferConfiguration = new EventBufferConfiguration()\n ) {\n this.eventsClientConfiguration = eventsClientConfiguration;\n this.ingestionURL = ingestionURL;\n this.eventBufferConfiguration = eventBufferConfiguration;\n }\n}\n","'use strict';\nvar path = require('../internals/path');\nvar hasOwn = require('../internals/has-own-property');\nvar wrappedWellKnownSymbolModule = require('../internals/well-known-symbol-wrapped');\nvar defineProperty = require('../internals/object-define-property').f;\n\nmodule.exports = function (NAME) {\n var Symbol = path.Symbol || (path.Symbol = {});\n if (!hasOwn(Symbol, NAME)) defineProperty(Symbol, NAME, {\n value: wrappedWellKnownSymbolModule.f(NAME)\n });\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nexport enum LogLevel {\n DEBUG,\n INFO,\n WARN,\n ERROR,\n OFF,\n}\n\nexport default LogLevel;\n","'use strict';\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar $Object = Object;\n\n// `ToObject` abstract operation\n// https://tc39.es/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n return $Object(requireObjectCoercible(argument));\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport ClientMetricReport from '../clientmetricreport/ClientMetricReport';\nimport VideoSource from '../videosource/VideoSource';\nimport DefaultVideoStreamIdSet from '../videostreamidset/DefaultVideoStreamIdSet';\nimport VideoStreamIdSet from '../videostreamidset/VideoStreamIdSet';\nimport VideoStreamDescription from '../videostreamindex/VideoStreamDescription';\nimport VideoStreamIndex from '../videostreamindex/VideoStreamIndex';\nimport VideoDownlinkBandwidthPolicy from './VideoDownlinkBandwidthPolicy';\n\n/**\n * [[AllHighestVideoBandwidthPolicy]] implements is a rudimentary policy that simply\n * always subscribes to the highest quality video stream available\n * for all non-self participants.\n */\nexport default class AllHighestVideoBandwidthPolicy implements VideoDownlinkBandwidthPolicy {\n private optimalReceiveSet: VideoStreamIdSet;\n private subscribedReceiveSet: VideoStreamIdSet;\n private videoSources: VideoSource[] | undefined;\n protected videoIndex: VideoStreamIndex;\n\n // Cap total receive bitrate at 15000 kbps to avoid hitting per client connection limits\n private static maxReceiveBitrateKbps = 15000;\n\n constructor(private selfAttendeeId: string) {\n this.reset();\n }\n\n reset(): void {\n this.optimalReceiveSet = new DefaultVideoStreamIdSet();\n this.subscribedReceiveSet = new DefaultVideoStreamIdSet();\n this.videoSources = undefined;\n }\n\n updateIndex(videoIndex: VideoStreamIndex): void {\n this.videoIndex = videoIndex;\n this.optimalReceiveSet = this.calculateOptimalReceiveSet(videoIndex);\n }\n\n updateMetrics(_clientMetricReport: ClientMetricReport): void {}\n\n wantsResubscribe(): boolean {\n return !this.subscribedReceiveSet.equal(this.optimalReceiveSet);\n }\n\n chooseSubscriptions(): VideoStreamIdSet {\n this.subscribedReceiveSet = this.optimalReceiveSet.clone();\n return this.subscribedReceiveSet.clone();\n }\n\n chooseRemoteVideoSources(videoSources: VideoSource[]): void {\n this.videoSources = videoSources;\n this.optimalReceiveSet = this.calculateOptimalReceiveSet(this.videoIndex).clone();\n }\n\n private calculateOptimalReceiveSet(videoIndex: VideoStreamIndex): VideoStreamIdSet {\n const streamSelectionSet = new DefaultVideoStreamIdSet();\n\n if (!this.videoIndex || this.videoIndex.allStreams().empty()) {\n return streamSelectionSet;\n }\n\n const receiveSet = videoIndex.highestQualityStreamFromEachGroupExcludingSelf(\n this.selfAttendeeId\n );\n\n // If video sources are not chosen, then use all of them.\n const videoSources = !!this.videoSources\n ? this.videoSources\n : this.videoIndex.allVideoSendingSourcesExcludingSelf(this.selfAttendeeId);\n\n // Get the list of all the remote stream information\n const remoteInfos = this.videoIndex.remoteStreamDescriptions();\n\n const mapOfAttendeeIdToRemoteDescriptions = new Map();\n\n for (const info of remoteInfos) {\n if (receiveSet.contain(info.streamId)) {\n mapOfAttendeeIdToRemoteDescriptions.set(info.attendeeId, info);\n }\n }\n\n let totalBitrateKbps = 0;\n for (const videoSource of videoSources) {\n const attendeeId = videoSource.attendee.attendeeId;\n if (mapOfAttendeeIdToRemoteDescriptions.has(attendeeId)) {\n const info = mapOfAttendeeIdToRemoteDescriptions.get(attendeeId);\n if (\n totalBitrateKbps + info.maxBitrateKbps <=\n AllHighestVideoBandwidthPolicy.maxReceiveBitrateKbps\n ) {\n streamSelectionSet.add(info.streamId);\n totalBitrateKbps += info.maxBitrateKbps;\n } else {\n console.warn(\n 'total bitrate ' +\n (totalBitrateKbps + info.maxBitrateKbps) +\n ' exceeds maximum limit (15000). Use chooseRemoteVideoSources to select a subset of participants to avoid this.'\n );\n // We could continue to check more sources (some of them might still fall under the limit).\n // But we stop here to limit resubscribes if we're hovering near the cap.\n break;\n }\n }\n }\n\n return streamSelectionSet;\n }\n}\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['lexruntime'] = {};\nAWS.LexRuntime = Service.defineService('lexruntime', ['2016-11-28']);\nObject.defineProperty(apiLoader.services['lexruntime'], '2016-11-28', {\n get: function get() {\n var model = require('../apis/runtime.lex-2016-11-28.min.json');\n model.paginators = require('../apis/runtime.lex-2016-11-28.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.LexRuntime;\n","require('./browser_loader');\n\nvar AWS = require('./core');\n\nif (typeof window !== 'undefined') window.AWS = AWS;\nif (typeof module !== 'undefined') {\n /**\n * @api private\n */\n module.exports = AWS;\n}\nif (typeof self !== 'undefined') self.AWS = AWS;\n\n/**\n * @private\n * DO NOT REMOVE\n * browser builder will strip out this line if services are supplied on the command line.\n */\nrequire('../clients/browser_default');\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar anObject = require('../internals/an-object');\n\nvar concat = uncurryThis([].concat);\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n var keys = getOwnPropertyNamesModule.f(anObject(it));\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n return getOwnPropertySymbols ? concat(keys, getOwnPropertySymbols(it)) : keys;\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport AudioVideoControllerState from '../audiovideocontroller/AudioVideoControllerState';\nimport MeetingSessionStatus from '../meetingsession/MeetingSessionStatus';\nimport MeetingSessionStatusCode from '../meetingsession/MeetingSessionStatusCode';\nimport MeetingSessionTURNCredentials from '../meetingsession/MeetingSessionTURNCredentials';\nimport ServerSideNetworkAdaption, {\n convertServerSideNetworkAdaptionEnumFromSignaled,\n} from '../signalingclient/ServerSideNetworkAdaption';\nimport SignalingClient from '../signalingclient/SignalingClient';\nimport SignalingClientEvent from '../signalingclient/SignalingClientEvent';\nimport SignalingClientEventType from '../signalingclient/SignalingClientEventType';\nimport SignalingClientJoin from '../signalingclient/SignalingClientJoin';\nimport SignalingClientObserver from '../signalingclientobserver/SignalingClientObserver';\nimport {\n SdkIndexFrame,\n SdkServerSideNetworkAdaption,\n SdkSignalFrame,\n} from '../signalingprotocol/SignalingProtocol.js';\nimport TaskCanceler from '../taskcanceler/TaskCanceler';\nimport BaseTask from './BaseTask';\n\n/*\n * [[JoinAndReceiveIndexTask]] sends the JoinFrame and asynchronously waits for the server to send the [[SdkIndexFrame]].\n * It should run with the [[TimeoutTask]] as the subtask so it can get canceled after timeout.\n */\nexport default class JoinAndReceiveIndexTask extends BaseTask {\n protected taskName = 'JoinAndReceiveIndexTask';\n private taskCanceler: TaskCanceler | null = null;\n\n constructor(private context: AudioVideoControllerState) {\n super(context.logger);\n }\n\n cancel(): void {\n if (this.taskCanceler) {\n this.taskCanceler.cancel();\n this.taskCanceler = null;\n }\n }\n\n async run(): Promise {\n const indexFrame = await new Promise((resolve, reject) => {\n const context = this.context;\n context.turnCredentials = null;\n class IndexFrameInterceptor implements SignalingClientObserver, TaskCanceler {\n constructor(private signalingClient: SignalingClient) {}\n\n cancel(): void {\n this.signalingClient.removeObserver(this);\n reject(new Error(`JoinAndReceiveIndexTask got canceled while waiting for SdkIndexFrame`));\n }\n\n handleSignalingClientEvent(event: SignalingClientEvent): void {\n if (event.type === SignalingClientEventType.WebSocketClosed) {\n let message = `The signaling connection was closed with code ${event.closeCode} and reason: ${event.closeReason}`;\n context.logger.warn(message);\n\n let statusCode: MeetingSessionStatusCode = MeetingSessionStatusCode.SignalingBadRequest;\n if (event.closeCode === 4410) {\n message = 'The meeting already ended.';\n context.logger.warn(message);\n statusCode = MeetingSessionStatusCode.MeetingEnded;\n } else if (event.closeCode >= 4500 && event.closeCode < 4600) {\n statusCode = MeetingSessionStatusCode.SignalingInternalServerError;\n }\n context.audioVideoController.handleMeetingSessionStatus(\n new MeetingSessionStatus(statusCode),\n new Error(message)\n );\n return;\n }\n if (event.type !== SignalingClientEventType.ReceivedSignalFrame) {\n return;\n }\n if (event.message.type === SdkSignalFrame.Type.JOIN_ACK) {\n // @ts-ignore: force cast to SdkJoinAckFrame\n const joinAckFrame: SdkJoinAckFrame = event.message.joinack;\n if (!joinAckFrame) {\n // This should realistically never happen\n context.audioVideoController.handleMeetingSessionStatus(\n new MeetingSessionStatus(MeetingSessionStatusCode.SignalingRequestFailed),\n new Error(`Join ACK message did not include expected frame`)\n );\n return;\n }\n if (joinAckFrame.videoSubscriptionLimit) {\n context.videoSubscriptionLimit = joinAckFrame.videoSubscriptionLimit;\n }\n\n context.serverSupportsCompression = joinAckFrame.wantsCompressedSdp;\n if (\n joinAckFrame.defaultServerSideNetworkAdaption !== undefined &&\n joinAckFrame.defaultServerSideNetworkAdaption !== ServerSideNetworkAdaption.Default &&\n context.videoDownlinkBandwidthPolicy.setServerSideNetworkAdaption !== undefined\n ) {\n const defaultServerSideNetworkAdaption: SdkServerSideNetworkAdaption =\n joinAckFrame.defaultServerSideNetworkAdaption;\n context.logger.info(\n `Overriding server side network adaption value to ${defaultServerSideNetworkAdaption}`\n );\n context.videoDownlinkBandwidthPolicy.setServerSideNetworkAdaption(\n convertServerSideNetworkAdaptionEnumFromSignaled(defaultServerSideNetworkAdaption)\n );\n }\n if (joinAckFrame && joinAckFrame.turnCredentials) {\n context.turnCredentials = new MeetingSessionTURNCredentials();\n context.turnCredentials.username = joinAckFrame.turnCredentials.username;\n context.turnCredentials.password = joinAckFrame.turnCredentials.password;\n context.turnCredentials.ttl = joinAckFrame.turnCredentials.ttl;\n context.turnCredentials.uris = joinAckFrame.turnCredentials.uris\n .map((uri: string): string => {\n return context.meetingSessionConfiguration.urls.urlRewriter(uri);\n })\n .filter((uri: string) => {\n return !!uri;\n });\n } else {\n context.logger.error('missing TURN credentials in JoinAckFrame');\n }\n return;\n }\n if (event.message.type !== SdkSignalFrame.Type.INDEX) {\n return;\n }\n this.signalingClient.removeObserver(this);\n // @ts-ignore: force cast to SdkIndexFrame\n const indexFrame: SdkIndexFrame = event.message.index;\n resolve(indexFrame);\n }\n }\n const interceptor = new IndexFrameInterceptor(this.context.signalingClient);\n this.context.signalingClient.registerObserver(interceptor);\n this.taskCanceler = interceptor;\n\n // reset SDP compression state\n this.context.previousSdpAnswerAsString = '';\n this.context.previousSdpOffer = null;\n this.context.serverSupportsCompression = false;\n\n const join = new SignalingClientJoin(\n this.context.meetingSessionConfiguration.applicationMetadata\n );\n if (\n this.context.videoDownlinkBandwidthPolicy.getServerSideNetworkAdaption !== undefined &&\n this.context.videoDownlinkBandwidthPolicy.supportedServerSideNetworkAdaptions !== undefined\n ) {\n join.serverSideNetworkAdaption = this.context.videoDownlinkBandwidthPolicy.getServerSideNetworkAdaption();\n join.supportedServerSideNetworkAdaptions = this.context.videoDownlinkBandwidthPolicy.supportedServerSideNetworkAdaptions();\n }\n if (this.context.videoDownlinkBandwidthPolicy.wantsAllTemporalLayersInIndex !== undefined) {\n join.wantsAllTemporalLayersInIndex = this.context.videoDownlinkBandwidthPolicy.wantsAllTemporalLayersInIndex();\n }\n join.disablePeriodicKeyframeRequestOnContentSender = this.context.meetingSessionConfiguration.disablePeriodicKeyframeRequestOnContentSender;\n this.context.signalingClient.join(join);\n });\n this.context.logger.info(`received first index ${JSON.stringify(indexFrame)}`);\n // We currently don't bother ingesting this into the same places as `ReceiveVideoStreamIndexTask` as we synchronously attempt a first subscribe\n // after this task completes and the state isn't quite in the right place to make it work without some refactoring. However that\n // means that we will always have an initial subscribe without any received videos.\n this.context.indexFrame = indexFrame;\n }\n}\n","import AGCOptions from './voicefocus/AGCOptions';\nimport ActiveSpeakerDetector from './activespeakerdetector/ActiveSpeakerDetector';\nimport ActiveSpeakerDetectorFacade from './activespeakerdetector/ActiveSpeakerDetectorFacade';\nimport ActiveSpeakerPolicy from './activespeakerpolicy/ActiveSpeakerPolicy';\nimport AllHighestVideoBandwidthPolicy from './videodownlinkbandwidthpolicy/AllHighestVideoBandwidthPolicy';\nimport ApplicationMetadata from './applicationmetadata/ApplicationMetadata';\nimport AssetSpec from './voicefocus/AssetSpec';\nimport AsyncScheduler from './scheduler/AsyncScheduler';\nimport AttachMediaInputTask from './task/AttachMediaInputTask';\nimport Attendee from './attendee/Attendee';\nimport AudioInputDevice from './devicecontroller/AudioInputDevice';\nimport AudioLogEvent from './statscollector/AudioLogEvent';\nimport AudioMixController from './audiomixcontroller/AudioMixController';\nimport AudioMixControllerFacade from './audiomixcontroller/AudioMixControllerFacade';\nimport AudioMixObserver from './audiomixobserver/AudioMixObserver';\nimport AudioNodeSubgraph from './devicecontroller/AudioNodeSubgraph';\nimport AudioProfile from './audioprofile/AudioProfile';\nimport AudioTransformDevice from './devicecontroller/AudioTransformDevice';\nimport AudioVideoController from './audiovideocontroller/AudioVideoController';\nimport AudioVideoControllerFacade from './audiovideocontroller/AudioVideoControllerFacade';\nimport AudioVideoControllerState from './audiovideocontroller/AudioVideoControllerState';\nimport AudioVideoEventAttributes from './eventcontroller/AudioVideoEventAttributes';\nimport AudioVideoFacade from './audiovideofacade/AudioVideoFacade';\nimport AudioVideoObserver from './audiovideoobserver/AudioVideoObserver';\nimport BackgroundBlurOptions from './backgroundblurprocessor/BackgroundBlurOptions';\nimport BackgroundBlurProcessor from './backgroundblurprocessor/BackgroundBlurProcessor';\nimport BackgroundBlurStrength from './backgroundblurprocessor/BackgroundBlurStrength';\nimport BackgroundBlurVideoFrameProcessor from './backgroundblurprocessor/BackgroundBlurVideoFrameProcessor';\nimport BackgroundBlurVideoFrameProcessorObserver from './backgroundblurprocessor/BackgroundBlurVideoFrameProcessorObserver';\nimport BackgroundFilterOptions from './backgroundfilter/BackgroundFilterOptions';\nimport BackgroundFilterPaths from './backgroundfilter/BackgroundFilterPaths';\nimport BackgroundFilterSpec from './backgroundfilter/BackgroundFilterSpec';\nimport BackgroundFilterVideoFrameProcessor from './backgroundfilter/BackgroundFilterVideoFrameProcessor';\nimport BackgroundFilterVideoFrameProcessorObserver from './backgroundfilter/BackgroundFilterVideoFrameProcessorObserver';\nimport BackgroundReplacementOptions from './backgroundreplacementprocessor/BackgroundReplacementOptions';\nimport BackgroundReplacementProcessor from './backgroundreplacementprocessor/BackgroundReplacementProcessor';\nimport BackgroundReplacementVideoFrameProcessor from './backgroundreplacementprocessor/BackgroundReplacementVideoFrameProcessor';\nimport BackgroundReplacementVideoFrameProcessorObserver from './backgroundreplacementprocessor/BackgroundReplacementVideoFrameProcessorObserver';\nimport Backoff from './backoff/Backoff';\nimport BackoffFactory from './backoff/BackoffFactory';\nimport BaseConnectionHealthPolicy from './connectionhealthpolicy/BaseConnectionHealthPolicy';\nimport BaseTask from './task/BaseTask';\nimport BitrateParameters from './videouplinkbandwidthpolicy/BitrateParameters';\nimport BrowserBehavior from './browserbehavior/BrowserBehavior';\nimport CSPMonitor from './cspmonitor/CSPMonitor';\nimport CanvasVideoFrameBuffer from './videoframeprocessor/CanvasVideoFrameBuffer';\nimport CheckAudioConnectivityFeedback from './meetingreadinesschecker/CheckAudioConnectivityFeedback';\nimport CheckAudioInputFeedback from './meetingreadinesschecker/CheckAudioInputFeedback';\nimport CheckAudioOutputFeedback from './meetingreadinesschecker/CheckAudioOutputFeedback';\nimport CheckCameraResolutionFeedback from './meetingreadinesschecker/CheckCameraResolutionFeedback';\nimport CheckContentShareConnectivityFeedback from './meetingreadinesschecker/CheckContentShareConnectivityFeedback';\nimport CheckNetworkTCPConnectivityFeedback from './meetingreadinesschecker/CheckNetworkTCPConnectivityFeedback';\nimport CheckNetworkUDPConnectivityFeedback from './meetingreadinesschecker/CheckNetworkUDPConnectivityFeedback';\nimport CheckVideoConnectivityFeedback from './meetingreadinesschecker/CheckVideoConnectivityFeedback';\nimport CheckVideoInputFeedback from './meetingreadinesschecker/CheckVideoInputFeedback';\nimport CleanRestartedSessionTask from './task/CleanRestartedSessionTask';\nimport CleanStoppedSessionTask from './task/CleanStoppedSessionTask';\nimport ClientMetricReport from './clientmetricreport/ClientMetricReport';\nimport ClientMetricReportDirection from './clientmetricreport/ClientMetricReportDirection';\nimport ClientMetricReportMediaType from './clientmetricreport/ClientMetricReportMediaType';\nimport ClientVideoStreamReceivingReport from './clientmetricreport/ClientVideoStreamReceivingReport';\nimport ConnectionHealthData from './connectionhealthpolicy/ConnectionHealthData';\nimport ConnectionHealthPolicy from './connectionhealthpolicy/ConnectionHealthPolicy';\nimport ConnectionHealthPolicyConfiguration from './connectionhealthpolicy/ConnectionHealthPolicyConfiguration';\nimport ConnectionMetrics from './videouplinkbandwidthpolicy/ConnectionMetrics';\nimport ConnectionMonitor from './connectionmonitor/ConnectionMonitor';\nimport ConsoleLogger from './logger/ConsoleLogger';\nimport ContentShareConstants from './contentsharecontroller/ContentShareConstants';\nimport ContentShareController from './contentsharecontroller/ContentShareController';\nimport ContentShareControllerFacade from './contentsharecontroller/ContentShareControllerFacade';\nimport ContentShareMediaStreamBroker from './contentsharecontroller/ContentShareMediaStreamBroker';\nimport ContentShareObserver from './contentshareobserver/ContentShareObserver';\nimport ContentShareSimulcastEncodingParameters from './videouplinkbandwidthpolicy/ContentShareSimulcastEncodingParameters';\nimport CreatePeerConnectionTask from './task/CreatePeerConnectionTask';\nimport CreateSDPTask from './task/CreateSDPTask';\nimport DataMessage from './datamessage/DataMessage';\nimport DefaultActiveSpeakerDetector from './activespeakerdetector/DefaultActiveSpeakerDetector';\nimport DefaultActiveSpeakerPolicy from './activespeakerpolicy/DefaultActiveSpeakerPolicy';\nimport DefaultAudioMixController from './audiomixcontroller/DefaultAudioMixController';\nimport DefaultAudioVideoController from './audiovideocontroller/DefaultAudioVideoController';\nimport DefaultAudioVideoFacade from './audiovideofacade/DefaultAudioVideoFacade';\nimport DefaultBrowserBehavior from './browserbehavior/DefaultBrowserBehavior';\nimport DefaultContentShareController from './contentsharecontroller/DefaultContentShareController';\nimport DefaultDeviceController from './devicecontroller/DefaultDeviceController';\nimport DefaultDevicePixelRatioMonitor from './devicepixelratiomonitor/DefaultDevicePixelRatioMonitor';\nimport DefaultEventController from './eventcontroller/DefaultEventController';\nimport DefaultMediaDeviceFactory from './mediadevicefactory/DefaultMediaDeviceFactory';\nimport DefaultMeetingEventReporter from './eventreporter/DefaultMeetingEventReporter';\nimport DefaultMeetingReadinessChecker from './meetingreadinesschecker/DefaultMeetingReadinessChecker';\nimport DefaultMeetingSession from './meetingsession/DefaultMeetingSession';\nimport DefaultMessagingSession from './messagingsession/DefaultMessagingSession';\nimport DefaultModality from './modality/DefaultModality';\nimport DefaultPingPong from './pingpong/DefaultPingPong';\nimport DefaultRealtimeController from './realtimecontroller/DefaultRealtimeController';\nimport DefaultReconnectController from './reconnectcontroller/DefaultReconnectController';\nimport DefaultSessionStateController from './sessionstatecontroller/DefaultSessionStateController';\nimport DefaultSigV4 from './sigv4/DefaultSigV4';\nimport DefaultSignalingClient from './signalingclient/DefaultSignalingClient';\nimport DefaultSimulcastUplinkPolicy from './videouplinkbandwidthpolicy/DefaultSimulcastUplinkPolicy';\nimport DefaultSimulcastUplinkPolicyForContentShare from './videouplinkbandwidthpolicy/DefaultSimulcastUplinkPolicyForContentShare';\nimport DefaultTransceiverController from './transceivercontroller/DefaultTransceiverController';\nimport DefaultTranscriptionController from './transcript/DefaultTranscriptionController';\nimport DefaultUserAgentParser from './useragentparser/DefaultUserAgentParser';\nimport DefaultVideoCaptureAndEncodeParameter from './videocaptureandencodeparameter/DefaultVideoCaptureAndEncodeParameter';\nimport DefaultVideoElementResolutionMonitor from './videotile/DefaultVideoElementResolutionMonitor';\nimport DefaultVideoFrameProcessorPipeline from './videoframeprocessor/DefaultVideoFrameProcessorPipeline';\nimport DefaultVideoFrameProcessorTimer from './videoframeprocessor/DefaultVideoFrameProcessorTimer';\nimport DefaultVideoStreamIdSet from './videostreamidset/DefaultVideoStreamIdSet';\nimport DefaultVideoStreamIndex from './videostreamindex/DefaultVideoStreamIndex';\nimport DefaultVideoTile from './videotile/DefaultVideoTile';\nimport DefaultVideoTileController from './videotilecontroller/DefaultVideoTileController';\nimport DefaultVideoTileFactory from './videotilefactory/DefaultVideoTileFactory';\nimport DefaultVideoTransformDevice from './videoframeprocessor/DefaultVideoTransformDevice';\nimport DefaultVideoTransformDeviceObserver from './videoframeprocessor/DefaultVideoTransformDeviceObserver';\nimport DefaultVolumeIndicatorAdapter from './volumeindicatoradapter/DefaultVolumeIndicatorAdapter';\nimport DefaultWebSocketAdapter from './websocketadapter/DefaultWebSocketAdapter';\nimport Destroyable from './destroyable/Destroyable';\nimport Device from './devicecontroller/Device';\nimport DeviceChangeObserver from './devicechangeobserver/DeviceChangeObserver';\nimport DeviceController from './devicecontroller/DeviceController';\nimport DeviceControllerBasedMediaStreamBroker from './mediastreambroker/DeviceControllerBasedMediaStreamBroker';\nimport DeviceControllerFacade from './devicecontroller/DeviceControllerFacade';\nimport DeviceEventAttributes from './eventcontroller/DeviceEventAttributes';\nimport DevicePixelRatioMonitor from './devicepixelratiomonitor/DevicePixelRatioMonitor';\nimport DevicePixelRatioObserver from './devicepixelratioobserver/DevicePixelRatioObserver';\nimport DevicePixelRatioSource from './devicepixelratiosource/DevicePixelRatioSource';\nimport DevicePixelRatioWindowSource from './devicepixelratiosource/DevicePixelRatioWindowSource';\nimport DeviceSelection from './devicecontroller/DeviceSelection';\nimport EventAttributes from './eventcontroller/EventAttributes';\nimport EventBuffer from './eventbuffer/EventBuffer';\nimport EventBufferConfiguration from './eventbufferconfiguration/EventBufferConfiguration';\nimport EventController from './eventcontroller/EventController';\nimport EventData from './eventreporter/EventData';\nimport EventIngestionConfiguration from './eventingestionconfiguration/EventIngestionConfiguration';\nimport EventName from './eventcontroller/EventName';\nimport EventObserver from './eventobserver/EventObserver';\nimport EventReporter from './eventreporter/EventReporter';\nimport EventsClientConfiguration from './eventsclientconfiguration/EventsClientConfiguration';\nimport EventsIngestionMetadata from './eventreporter/EventsIngestionMetadata';\nimport ExtendedBrowserBehavior from './browserbehavior/ExtendedBrowserBehavior';\nimport FinishGatheringICECandidatesTask from './task/FinishGatheringICECandidatesTask';\nimport FullJitterBackoff from './backoff/FullJitterBackoff';\nimport FullJitterBackoffFactory from './backoff/FullJitterBackoffFactory';\nimport FullJitterLimitedBackoff from './backoff/FullJitterLimitedBackoff';\nimport GetUserMediaError from './devicecontroller/GetUserMediaError';\nimport GlobalMetricReport from './clientmetricreport/GlobalMetricReport';\nimport InMemoryJSONEventBuffer from './eventbuffer/InMemoryJSONEventBuffer';\nimport IntervalScheduler from './scheduler/IntervalScheduler';\nimport JoinAndReceiveIndexTask from './task/JoinAndReceiveIndexTask';\nimport LeaveAndReceiveLeaveAckTask from './task/LeaveAndReceiveLeaveAckTask';\nimport ListenForVolumeIndicatorsTask from './task/ListenForVolumeIndicatorsTask';\nimport Log from './logger/Log';\nimport LogLevel from './logger/LogLevel';\nimport Logger from './logger/Logger';\nimport MediaDeviceFactory from './mediadevicefactory/MediaDeviceFactory';\nimport MediaDeviceProxyHandler from './mediadevicefactory/MediaDeviceProxyHandler';\nimport MediaStreamBroker from './mediastreambroker/MediaStreamBroker';\nimport MediaStreamBrokerObserver from './mediastreambrokerobserver/MediaStreamBrokerObserver';\nimport MeetingEventsClientConfiguration from './eventsclientconfiguration/MeetingEventsClientConfiguration';\nimport MeetingEventsClientConfigurationAttributes from './eventsclientconfiguration/MeetingEventsClientConfigurationAttributes';\nimport MeetingFeatures from './meetingsession/MeetingFeatures';\nimport MeetingHistoryState from './eventcontroller/MeetingHistoryState';\nimport MeetingReadinessChecker from './meetingreadinesschecker/MeetingReadinessChecker';\nimport MeetingReadinessCheckerConfiguration from './meetingreadinesschecker/MeetingReadinessCheckerConfiguration';\nimport MeetingSession from './meetingsession/MeetingSession';\nimport MeetingSessionConfiguration from './meetingsession/MeetingSessionConfiguration';\nimport MeetingSessionCredentials from './meetingsession/MeetingSessionCredentials';\nimport MeetingSessionLifecycleEvent from './meetingsession/MeetingSessionLifecycleEvent';\nimport MeetingSessionLifecycleEventCondition from './meetingsession/MeetingSessionLifecycleEventCondition';\nimport MeetingSessionStatus from './meetingsession/MeetingSessionStatus';\nimport MeetingSessionStatusCode from './meetingsession/MeetingSessionStatusCode';\nimport MeetingSessionTURNCredentials from './meetingsession/MeetingSessionTURNCredentials';\nimport MeetingSessionURLs from './meetingsession/MeetingSessionURLs';\nimport MeetingSessionVideoAvailability from './meetingsession/MeetingSessionVideoAvailability';\nimport Message from './message/Message';\nimport MessagingSession from './messagingsession/MessagingSession';\nimport MessagingSessionConfiguration from './messagingsession/MessagingSessionConfiguration';\nimport MessagingSessionObserver from './messagingsessionobserver/MessagingSessionObserver';\nimport Modality from './modality/Modality';\nimport ModelShape from './modelspec/ModelShape';\nimport ModelSpec from './modelspec/ModelSpec';\nimport ModelSpecBuilder from './backgroundblurprocessor/ModelSpecBuilder';\nimport MonitorTask from './task/MonitorTask';\nimport MultiLogger from './logger/MultiLogger';\nimport NScaleVideoUplinkBandwidthPolicy from './videouplinkbandwidthpolicy/NScaleVideoUplinkBandwidthPolicy';\nimport NoOpAudioVideoController from './audiovideocontroller/NoOpAudioVideoController';\nimport NoOpDebugLogger from './logger/NoOpDebugLogger';\nimport NoOpDeviceController from './devicecontroller/NoOpDeviceController';\nimport NoOpEventReporter from './eventreporter/NoOpEventReporter';\nimport NoOpLogger from './logger/NoOpLogger';\nimport NoOpMediaStreamBroker from './mediastreambroker/NoOpMediaStreamBroker';\nimport NoOpTask from './task/NoOpTask';\nimport NoOpVideoElementFactory from './videoelementfactory/NoOpVideoElementFactory';\nimport NoOpVideoFrameProcessor from './videoframeprocessor/NoOpVideoFrameProcessor';\nimport NoVideoDownlinkBandwidthPolicy from './videodownlinkbandwidthpolicy/NoVideoDownlinkBandwidthPolicy';\nimport NoVideoUplinkBandwidthPolicy from './videouplinkbandwidthpolicy/NoVideoUplinkBandwidthPolicy';\nimport NotFoundError from './devicecontroller/NotFoundError';\nimport NotReadableError from './devicecontroller/NotReadableError';\nimport OnceTask from './task/OnceTask';\nimport OpenSignalingConnectionTask from './task/OpenSignalingConnectionTask';\nimport OverconstrainedError from './devicecontroller/OverconstrainedError';\nimport POSTLogger from './logger/POSTLogger';\nimport POSTLoggerOptions from './logger/POSTLoggerOptions';\nimport ParallelGroupTask from './task/ParallelGroupTask';\nimport PermissionDeniedError from './devicecontroller/PermissionDeniedError';\nimport PingPong from './pingpong/PingPong';\nimport PingPongObserver from './pingpongobserver/PingPongObserver';\nimport PrefetchOn from './messagingsession/PrefetchOn';\nimport PrefetchSortBy from './messagingsession/PrefetchSortBy';\nimport PromiseQueue from './utils/PromiseQueue';\nimport PromoteToPrimaryMeetingTask from './task/PromoteToPrimaryMeetingTask';\nimport RealtimeAttendeePositionInFrame from './realtimecontroller/RealtimeAttendeePositionInFrame';\nimport RealtimeController from './realtimecontroller/RealtimeController';\nimport RealtimeControllerFacade from './realtimecontroller/RealtimeControllerFacade';\nimport RealtimeState from './realtimecontroller/RealtimeState';\nimport RealtimeSubscribeToAttendeeIdPresenceCallback from './realtimecontroller/RealtimeSubscribeToAttendeeIdPresenceCallback';\nimport RealtimeVolumeIndicator from './realtimecontroller/RealtimeVolumeIndicator';\nimport ReceiveAudioInputTask from './task/ReceiveAudioInputTask';\nimport ReceiveRemoteVideoPauseResumeTask from './task/ReceiveRemoteVideoPauseResumeTask';\nimport ReceiveVideoInputTask from './task/ReceiveVideoInputTask';\nimport ReceiveVideoStreamIndexTask from './task/ReceiveVideoStreamIndexTask';\nimport ReconnectController from './reconnectcontroller/ReconnectController';\nimport ReconnectionHealthPolicy from './connectionhealthpolicy/ReconnectionHealthPolicy';\nimport RedundantAudioEncoder from './redundantaudioencoder/RedundantAudioEncoder';\nimport RedundantAudioEncoderWorkerCode from './redundantaudioencoderworkercode/RedundantAudioEncoderWorkerCode';\nimport RedundantAudioRecoveryMetricReport from './clientmetricreport/RedundantAudioRecoveryMetricReport';\nimport RedundantAudioRecoveryMetricsObserver from './redundantaudiorecoverymetricsobserver/RedundantAudioRecoveryMetricsObserver';\nimport RemovableAnalyserNode from './devicecontroller/RemovableAnalyserNode';\nimport RemovableObserver from './removableobserver/RemovableObserver';\nimport RunnableTask from './task/RunnableTask';\nimport SDP from './sdp/SDP';\nimport SDPCandidateType from './sdp/SDPCandidateType';\nimport SDPMediaSection from './sdp/SDPMediaSection';\nimport Scheduler from './scheduler/Scheduler';\nimport SendAndReceiveDataMessagesTask from './task/SendAndReceiveDataMessagesTask';\nimport SendingAudioFailureConnectionHealthPolicy from './connectionhealthpolicy/SendingAudioFailureConnectionHealthPolicy';\nimport SerialGroupTask from './task/SerialGroupTask';\nimport ServerSideNetworkAdaption from './signalingclient/ServerSideNetworkAdaption';\nimport SessionStateController from './sessionstatecontroller/SessionStateController';\nimport SessionStateControllerAction from './sessionstatecontroller/SessionStateControllerAction';\nimport SessionStateControllerDeferPriority from './sessionstatecontroller/SessionStateControllerDeferPriority';\nimport SessionStateControllerState from './sessionstatecontroller/SessionStateControllerState';\nimport SessionStateControllerTransitionResult from './sessionstatecontroller/SessionStateControllerTransitionResult';\nimport SetLocalDescriptionTask from './task/SetLocalDescriptionTask';\nimport SetRemoteDescriptionTask from './task/SetRemoteDescriptionTask';\nimport SigV4 from './sigv4/SigV4';\nimport SignalingAndMetricsConnectionMonitor from './connectionmonitor/SignalingAndMetricsConnectionMonitor';\nimport SignalingClient from './signalingclient/SignalingClient';\nimport SignalingClientConnectionRequest from './signalingclient/SignalingClientConnectionRequest';\nimport SignalingClientEvent from './signalingclient/SignalingClientEvent';\nimport SignalingClientEventType from './signalingclient/SignalingClientEventType';\nimport SignalingClientJoin from './signalingclient/SignalingClientJoin';\nimport SignalingClientObserver from './signalingclientobserver/SignalingClientObserver';\nimport SignalingClientSubscribe from './signalingclient/SignalingClientSubscribe';\nimport SignalingClientVideoSubscriptionConfiguration from './signalingclient/SignalingClientVideoSubscriptionConfiguration';\nimport SimulcastContentShareTransceiverController from './transceivercontroller/SimulcastContentShareTransceiverController';\nimport SimulcastLayers from './simulcastlayers/SimulcastLayers';\nimport SimulcastTransceiverController from './transceivercontroller/SimulcastTransceiverController';\nimport SimulcastUplinkObserver from './videouplinkbandwidthpolicy/SimulcastUplinkObserver';\nimport SimulcastUplinkPolicy from './videouplinkbandwidthpolicy/SimulcastUplinkPolicy';\nimport SimulcastVideoStreamIndex from './videostreamindex/SimulcastVideoStreamIndex';\nimport SingleNodeAudioTransformDevice from './devicecontroller/SingleNodeAudioTransformDevice';\nimport StreamMetricReport from './clientmetricreport/StreamMetricReport';\nimport SubscribeAndReceiveSubscribeAckTask from './task/SubscribeAndReceiveSubscribeAckTask';\nimport TargetDisplaySize from './videodownlinkbandwidthpolicy/TargetDisplaySize';\nimport Task from './task/Task';\nimport TaskCanceler from './taskcanceler/TaskCanceler';\nimport TaskStatus from './task/TaskStatus';\nimport TimeoutScheduler from './scheduler/TimeoutScheduler';\nimport TimeoutTask from './task/TimeoutTask';\nimport TransceiverController from './transceivercontroller/TransceiverController';\nimport Transcript from './transcript/Transcript';\nimport TranscriptAlternative from './transcript/TranscriptAlternative';\nimport TranscriptEntity from './transcript/TranscriptEntity';\nimport TranscriptEvent from './transcript/TranscriptEvent';\nimport TranscriptItem from './transcript/TranscriptItem';\nimport TranscriptItemType from './transcript/TranscriptItemType';\nimport TranscriptLanguageWithScore from './transcript/TranscriptLanguageWithScore';\nimport TranscriptResult from './transcript/TranscriptResult';\nimport TranscriptionController from './transcript/TranscriptionController';\nimport TranscriptionStatus from './transcript/TranscriptionStatus';\nimport TranscriptionStatusType from './transcript/TranscriptionStatusType';\nimport TypeError from './devicecontroller/TypeError';\nimport UnusableAudioWarningConnectionHealthPolicy from './connectionhealthpolicy/UnusableAudioWarningConnectionHealthPolicy';\nimport UserAgentParser from './useragentparser/UserAgentParser';\nimport Versioning from './versioning/Versioning';\nimport VideoAdaptiveProbePolicy from './videodownlinkbandwidthpolicy/VideoAdaptiveProbePolicy';\nimport VideoCaptureAndEncodeParameter from './videocaptureandencodeparameter/VideoCaptureAndEncodeParameter';\nimport VideoCodecCapability from './sdp/VideoCodecCapability';\nimport VideoDownlinkBandwidthPolicy from './videodownlinkbandwidthpolicy/VideoDownlinkBandwidthPolicy';\nimport VideoDownlinkObserver from './videodownlinkbandwidthpolicy/VideoDownlinkObserver';\nimport VideoElementFactory from './videoelementfactory/VideoElementFactory';\nimport VideoElementResolutionMonitor from './videotile/VideoElementResolutionMonitor';\nimport VideoEncodingConnectionHealthPolicyName from './connectionhealthpolicy/VideoEncodingConnectionHealthPolicyName';\nimport VideoEncodingCpuConnectionHealthPolicy from './connectionhealthpolicy/VideoEncodingCpuConnectionHealthPolicy';\nimport VideoEncodingFramerateConnectionHealthPolicy from './connectionhealthpolicy/VideoEncodingFramerateConnectionHealthPolicy';\nimport VideoEncodingParameters from './videouplinkbandwidthpolicy/VideoEncodingParameters';\nimport VideoFXEventAttributes from './eventcontroller/VideoFXEventAttributes';\nimport VideoFrameBuffer from './videoframeprocessor/VideoFrameBuffer';\nimport VideoFrameProcessor from './videoframeprocessor/VideoFrameProcessor';\nimport VideoFrameProcessorPipeline from './videoframeprocessor/VideoFrameProcessorPipeline';\nimport VideoFrameProcessorPipelineObserver from './videoframeprocessor/VideoFrameProcessorPipelineObserver';\nimport VideoFrameProcessorTimer from './videoframeprocessor/VideoFrameProcessorTimer';\nimport VideoFxBlurStrength from './videofx/VideoFxBlurStrength';\nimport VideoFxConfig from './videofx/VideoFxConfig';\nimport VideoFxPaths from './videofx/VideoFxPaths';\nimport VideoFxProcessor from './videofx/VideoFxProcessor';\nimport VideoFxSpec from './videofx/VideoFxSpec';\nimport VideoInputDevice from './devicecontroller/VideoInputDevice';\nimport VideoLogEvent from './statscollector/VideoLogEvent';\nimport VideoOnlyTransceiverController from './transceivercontroller/VideoOnlyTransceiverController';\nimport VideoPreference from './videodownlinkbandwidthpolicy/VideoPreference';\nimport VideoPreferences from './videodownlinkbandwidthpolicy/VideoPreferences';\nimport VideoPriorityBasedPolicy from './videodownlinkbandwidthpolicy/VideoPriorityBasedPolicy';\nimport VideoPriorityBasedPolicyConfig from './videodownlinkbandwidthpolicy/VideoPriorityBasedPolicyConfig';\nimport VideoQualityAdaptationPreference from './videodownlinkbandwidthpolicy/VideoQualityAdaptationPreference';\nimport VideoQualitySettings from './devicecontroller/VideoQualitySettings';\nimport VideoSource from './videosource/VideoSource';\nimport VideoStreamDescription from './videostreamindex/VideoStreamDescription';\nimport VideoStreamIdSet from './videostreamidset/VideoStreamIdSet';\nimport VideoStreamIndex from './videostreamindex/VideoStreamIndex';\nimport VideoTile from './videotile/VideoTile';\nimport VideoTileController from './videotilecontroller/VideoTileController';\nimport VideoTileControllerFacade from './videotilecontroller/VideoTileControllerFacade';\nimport VideoTileFactory from './videotilefactory/VideoTileFactory';\nimport VideoTileState from './videotile/VideoTileState';\nimport VideoTransformDevice from './devicecontroller/VideoTransformDevice';\nimport VideoUplinkBandwidthPolicy from './videouplinkbandwidthpolicy/VideoUplinkBandwidthPolicy';\nimport VoiceFocusConfig from './voicefocus/VoiceFocusConfig';\nimport VoiceFocusDeviceOptions from './voicefocus/VoiceFocusDeviceOptions';\nimport VoiceFocusDeviceTransformer from './voicefocus/VoiceFocusDeviceTransformer';\nimport VoiceFocusModelComplexity from './voicefocus/VoiceFocusModelComplexity';\nimport VoiceFocusModelName from './voicefocus/VoiceFocusModelName';\nimport VoiceFocusPaths from './voicefocus/VoiceFocusPaths';\nimport VoiceFocusSpec from './voicefocus/VoiceFocusSpec';\nimport VoiceFocusTransformDevice from './voicefocus/VoiceFocusTransformDevice';\nimport VoiceFocusTransformDeviceObserver from './voicefocus/VoiceFocusTransformDeviceObserver';\nimport VolumeIndicatorAdapter from './volumeindicatoradapter/VolumeIndicatorAdapter';\nimport VolumeIndicatorCallback from './realtimecontroller/VolumeIndicatorCallback';\nimport WaitForAttendeePresenceTask from './task/WaitForAttendeePresenceTask';\nimport WebSocketAdapter from './websocketadapter/WebSocketAdapter';\nimport WebSocketReadyState from './websocketadapter/WebSocketReadyState';\nimport ZLIBTextCompressor from './sdp/ZLIBTextCompressor';\nimport { MutableVideoPreferences } from './videodownlinkbandwidthpolicy/VideoPreferences';\nimport { Some, None, Maybe, MaybeProvider, Eq, PartialOrd } from './utils/Types';\nimport { isAudioTransformDevice } from './devicecontroller/AudioTransformDevice';\nimport { isDestroyable } from './destroyable/Destroyable';\nimport { isVideoTransformDevice } from './devicecontroller/VideoTransformDevice';\n\nexport {\n AGCOptions,\n ActiveSpeakerDetector,\n ActiveSpeakerDetectorFacade,\n ActiveSpeakerPolicy,\n AllHighestVideoBandwidthPolicy,\n ApplicationMetadata,\n AssetSpec,\n AsyncScheduler,\n AttachMediaInputTask,\n Attendee,\n AudioInputDevice,\n AudioLogEvent,\n AudioMixController,\n AudioMixControllerFacade,\n AudioMixObserver,\n AudioNodeSubgraph,\n AudioProfile,\n AudioTransformDevice,\n AudioVideoController,\n AudioVideoControllerFacade,\n AudioVideoControllerState,\n AudioVideoEventAttributes,\n AudioVideoFacade,\n AudioVideoObserver,\n BackgroundBlurOptions,\n BackgroundBlurProcessor,\n BackgroundBlurStrength,\n BackgroundBlurVideoFrameProcessor,\n BackgroundBlurVideoFrameProcessorObserver,\n BackgroundFilterOptions,\n BackgroundFilterPaths,\n BackgroundFilterSpec,\n BackgroundFilterVideoFrameProcessor,\n BackgroundFilterVideoFrameProcessorObserver,\n BackgroundReplacementOptions,\n BackgroundReplacementProcessor,\n BackgroundReplacementVideoFrameProcessor,\n BackgroundReplacementVideoFrameProcessorObserver,\n Backoff,\n BackoffFactory,\n BaseConnectionHealthPolicy,\n BaseTask,\n BitrateParameters,\n BrowserBehavior,\n CSPMonitor,\n CanvasVideoFrameBuffer,\n CheckAudioConnectivityFeedback,\n CheckAudioInputFeedback,\n CheckAudioOutputFeedback,\n CheckCameraResolutionFeedback,\n CheckContentShareConnectivityFeedback,\n CheckNetworkTCPConnectivityFeedback,\n CheckNetworkUDPConnectivityFeedback,\n CheckVideoConnectivityFeedback,\n CheckVideoInputFeedback,\n CleanRestartedSessionTask,\n CleanStoppedSessionTask,\n ClientMetricReport,\n ClientMetricReportDirection,\n ClientMetricReportMediaType,\n ClientVideoStreamReceivingReport,\n ConnectionHealthData,\n ConnectionHealthPolicy,\n ConnectionHealthPolicyConfiguration,\n ConnectionMetrics,\n ConnectionMonitor,\n ConsoleLogger,\n ContentShareConstants,\n ContentShareController,\n ContentShareControllerFacade,\n ContentShareMediaStreamBroker,\n ContentShareObserver,\n ContentShareSimulcastEncodingParameters,\n CreatePeerConnectionTask,\n CreateSDPTask,\n DataMessage,\n DefaultActiveSpeakerDetector,\n DefaultActiveSpeakerPolicy,\n DefaultAudioMixController,\n DefaultAudioVideoController,\n DefaultAudioVideoFacade,\n DefaultBrowserBehavior,\n DefaultContentShareController,\n DefaultDeviceController,\n DefaultDevicePixelRatioMonitor,\n DefaultEventController,\n DefaultMediaDeviceFactory,\n DefaultMeetingEventReporter,\n DefaultMeetingReadinessChecker,\n DefaultMeetingSession,\n DefaultMessagingSession,\n DefaultModality,\n DefaultPingPong,\n DefaultRealtimeController,\n DefaultReconnectController,\n DefaultSessionStateController,\n DefaultSigV4,\n DefaultSignalingClient,\n DefaultSimulcastUplinkPolicy,\n DefaultSimulcastUplinkPolicyForContentShare,\n DefaultTransceiverController,\n DefaultTranscriptionController,\n DefaultUserAgentParser,\n DefaultVideoCaptureAndEncodeParameter,\n DefaultVideoElementResolutionMonitor,\n DefaultVideoFrameProcessorPipeline,\n DefaultVideoFrameProcessorTimer,\n DefaultVideoStreamIdSet,\n DefaultVideoStreamIndex,\n DefaultVideoTile,\n DefaultVideoTileController,\n DefaultVideoTileFactory,\n DefaultVideoTransformDevice,\n DefaultVideoTransformDeviceObserver,\n DefaultVolumeIndicatorAdapter,\n DefaultWebSocketAdapter,\n Destroyable,\n Device,\n DeviceChangeObserver,\n DeviceController,\n DeviceControllerBasedMediaStreamBroker,\n DeviceControllerFacade,\n DeviceEventAttributes,\n DevicePixelRatioMonitor,\n DevicePixelRatioObserver,\n DevicePixelRatioSource,\n DevicePixelRatioWindowSource,\n DeviceSelection,\n Eq,\n EventAttributes,\n EventBuffer,\n EventBufferConfiguration,\n EventController,\n EventData,\n EventIngestionConfiguration,\n EventName,\n EventObserver,\n EventReporter,\n EventsClientConfiguration,\n EventsIngestionMetadata,\n ExtendedBrowserBehavior,\n FinishGatheringICECandidatesTask,\n FullJitterBackoff,\n FullJitterBackoffFactory,\n FullJitterLimitedBackoff,\n GetUserMediaError,\n GlobalMetricReport,\n InMemoryJSONEventBuffer,\n IntervalScheduler,\n JoinAndReceiveIndexTask,\n LeaveAndReceiveLeaveAckTask,\n ListenForVolumeIndicatorsTask,\n Log,\n LogLevel,\n Logger,\n Maybe,\n MaybeProvider,\n MediaDeviceFactory,\n MediaDeviceProxyHandler,\n MediaStreamBroker,\n MediaStreamBrokerObserver,\n MeetingEventsClientConfiguration,\n MeetingEventsClientConfigurationAttributes,\n MeetingFeatures,\n MeetingHistoryState,\n MeetingReadinessChecker,\n MeetingReadinessCheckerConfiguration,\n MeetingSession,\n MeetingSessionConfiguration,\n MeetingSessionCredentials,\n MeetingSessionLifecycleEvent,\n MeetingSessionLifecycleEventCondition,\n MeetingSessionStatus,\n MeetingSessionStatusCode,\n MeetingSessionTURNCredentials,\n MeetingSessionURLs,\n MeetingSessionVideoAvailability,\n Message,\n MessagingSession,\n MessagingSessionConfiguration,\n MessagingSessionObserver,\n Modality,\n ModelShape,\n ModelSpec,\n ModelSpecBuilder,\n MonitorTask,\n MultiLogger,\n MutableVideoPreferences,\n NScaleVideoUplinkBandwidthPolicy,\n NoOpAudioVideoController,\n NoOpDebugLogger,\n NoOpDeviceController,\n NoOpEventReporter,\n NoOpLogger,\n NoOpMediaStreamBroker,\n NoOpTask,\n NoOpVideoElementFactory,\n NoOpVideoFrameProcessor,\n NoVideoDownlinkBandwidthPolicy,\n NoVideoUplinkBandwidthPolicy,\n None,\n NotFoundError,\n NotReadableError,\n OnceTask,\n OpenSignalingConnectionTask,\n OverconstrainedError,\n POSTLogger,\n POSTLoggerOptions,\n ParallelGroupTask,\n PartialOrd,\n PermissionDeniedError,\n PingPong,\n PingPongObserver,\n PrefetchOn,\n PrefetchSortBy,\n PromiseQueue,\n PromoteToPrimaryMeetingTask,\n RealtimeAttendeePositionInFrame,\n RealtimeController,\n RealtimeControllerFacade,\n RealtimeState,\n RealtimeSubscribeToAttendeeIdPresenceCallback,\n RealtimeVolumeIndicator,\n ReceiveAudioInputTask,\n ReceiveRemoteVideoPauseResumeTask,\n ReceiveVideoInputTask,\n ReceiveVideoStreamIndexTask,\n ReconnectController,\n ReconnectionHealthPolicy,\n RedundantAudioEncoder,\n RedundantAudioEncoderWorkerCode,\n RedundantAudioRecoveryMetricReport,\n RedundantAudioRecoveryMetricsObserver,\n RemovableAnalyserNode,\n RemovableObserver,\n RunnableTask,\n SDP,\n SDPCandidateType,\n SDPMediaSection,\n Scheduler,\n SendAndReceiveDataMessagesTask,\n SendingAudioFailureConnectionHealthPolicy,\n SerialGroupTask,\n ServerSideNetworkAdaption,\n SessionStateController,\n SessionStateControllerAction,\n SessionStateControllerDeferPriority,\n SessionStateControllerState,\n SessionStateControllerTransitionResult,\n SetLocalDescriptionTask,\n SetRemoteDescriptionTask,\n SigV4,\n SignalingAndMetricsConnectionMonitor,\n SignalingClient,\n SignalingClientConnectionRequest,\n SignalingClientEvent,\n SignalingClientEventType,\n SignalingClientJoin,\n SignalingClientObserver,\n SignalingClientSubscribe,\n SignalingClientVideoSubscriptionConfiguration,\n SimulcastContentShareTransceiverController,\n SimulcastLayers,\n SimulcastTransceiverController,\n SimulcastUplinkObserver,\n SimulcastUplinkPolicy,\n SimulcastVideoStreamIndex,\n SingleNodeAudioTransformDevice,\n Some,\n StreamMetricReport,\n SubscribeAndReceiveSubscribeAckTask,\n TargetDisplaySize,\n Task,\n TaskCanceler,\n TaskStatus,\n TimeoutScheduler,\n TimeoutTask,\n TransceiverController,\n Transcript,\n TranscriptAlternative,\n TranscriptEntity,\n TranscriptEvent,\n TranscriptItem,\n TranscriptItemType,\n TranscriptLanguageWithScore,\n TranscriptResult,\n TranscriptionController,\n TranscriptionStatus,\n TranscriptionStatusType,\n TypeError,\n UnusableAudioWarningConnectionHealthPolicy,\n UserAgentParser,\n Versioning,\n VideoAdaptiveProbePolicy,\n VideoCaptureAndEncodeParameter,\n VideoCodecCapability,\n VideoDownlinkBandwidthPolicy,\n VideoDownlinkObserver,\n VideoElementFactory,\n VideoElementResolutionMonitor,\n VideoEncodingConnectionHealthPolicyName,\n VideoEncodingCpuConnectionHealthPolicy,\n VideoEncodingFramerateConnectionHealthPolicy,\n VideoEncodingParameters,\n VideoFXEventAttributes,\n VideoFrameBuffer,\n VideoFrameProcessor,\n VideoFrameProcessorPipeline,\n VideoFrameProcessorPipelineObserver,\n VideoFrameProcessorTimer,\n VideoFxBlurStrength,\n VideoFxConfig,\n VideoFxPaths,\n VideoFxProcessor,\n VideoFxSpec,\n VideoInputDevice,\n VideoLogEvent,\n VideoOnlyTransceiverController,\n VideoPreference,\n VideoPreferences,\n VideoPriorityBasedPolicy,\n VideoPriorityBasedPolicyConfig,\n VideoQualityAdaptationPreference,\n VideoQualitySettings,\n VideoSource,\n VideoStreamDescription,\n VideoStreamIdSet,\n VideoStreamIndex,\n VideoTile,\n VideoTileController,\n VideoTileControllerFacade,\n VideoTileFactory,\n VideoTileState,\n VideoTransformDevice,\n VideoUplinkBandwidthPolicy,\n VoiceFocusConfig,\n VoiceFocusDeviceOptions,\n VoiceFocusDeviceTransformer,\n VoiceFocusModelComplexity,\n VoiceFocusModelName,\n VoiceFocusPaths,\n VoiceFocusSpec,\n VoiceFocusTransformDevice,\n VoiceFocusTransformDeviceObserver,\n VolumeIndicatorAdapter,\n VolumeIndicatorCallback,\n WaitForAttendeePresenceTask,\n WebSocketAdapter,\n WebSocketReadyState,\n ZLIBTextCompressor,\n isAudioTransformDevice,\n isDestroyable,\n isVideoTransformDevice,\n}\n","(function(exports) {\n \"use strict\";\n\n function isArray(obj) {\n if (obj !== null) {\n return Object.prototype.toString.call(obj) === \"[object Array]\";\n } else {\n return false;\n }\n }\n\n function isObject(obj) {\n if (obj !== null) {\n return Object.prototype.toString.call(obj) === \"[object Object]\";\n } else {\n return false;\n }\n }\n\n function strictDeepEqual(first, second) {\n // Check the scalar case first.\n if (first === second) {\n return true;\n }\n\n // Check if they are the same type.\n var firstType = Object.prototype.toString.call(first);\n if (firstType !== Object.prototype.toString.call(second)) {\n return false;\n }\n // We know that first and second have the same type so we can just check the\n // first type from now on.\n if (isArray(first) === true) {\n // Short circuit if they're not the same length;\n if (first.length !== second.length) {\n return false;\n }\n for (var i = 0; i < first.length; i++) {\n if (strictDeepEqual(first[i], second[i]) === false) {\n return false;\n }\n }\n return true;\n }\n if (isObject(first) === true) {\n // An object is equal if it has the same key/value pairs.\n var keysSeen = {};\n for (var key in first) {\n if (hasOwnProperty.call(first, key)) {\n if (strictDeepEqual(first[key], second[key]) === false) {\n return false;\n }\n keysSeen[key] = true;\n }\n }\n // Now check that there aren't any keys in second that weren't\n // in first.\n for (var key2 in second) {\n if (hasOwnProperty.call(second, key2)) {\n if (keysSeen[key2] !== true) {\n return false;\n }\n }\n }\n return true;\n }\n return false;\n }\n\n function isFalse(obj) {\n // From the spec:\n // A false value corresponds to the following values:\n // Empty list\n // Empty object\n // Empty string\n // False boolean\n // null value\n\n // First check the scalar values.\n if (obj === \"\" || obj === false || obj === null) {\n return true;\n } else if (isArray(obj) && obj.length === 0) {\n // Check for an empty array.\n return true;\n } else if (isObject(obj)) {\n // Check for an empty object.\n for (var key in obj) {\n // If there are any keys, then\n // the object is not empty so the object\n // is not false.\n if (obj.hasOwnProperty(key)) {\n return false;\n }\n }\n return true;\n } else {\n return false;\n }\n }\n\n function objValues(obj) {\n var keys = Object.keys(obj);\n var values = [];\n for (var i = 0; i < keys.length; i++) {\n values.push(obj[keys[i]]);\n }\n return values;\n }\n\n function merge(a, b) {\n var merged = {};\n for (var key in a) {\n merged[key] = a[key];\n }\n for (var key2 in b) {\n merged[key2] = b[key2];\n }\n return merged;\n }\n\n var trimLeft;\n if (typeof String.prototype.trimLeft === \"function\") {\n trimLeft = function(str) {\n return str.trimLeft();\n };\n } else {\n trimLeft = function(str) {\n return str.match(/^\\s*(.*)/)[1];\n };\n }\n\n // Type constants used to define functions.\n var TYPE_NUMBER = 0;\n var TYPE_ANY = 1;\n var TYPE_STRING = 2;\n var TYPE_ARRAY = 3;\n var TYPE_OBJECT = 4;\n var TYPE_BOOLEAN = 5;\n var TYPE_EXPREF = 6;\n var TYPE_NULL = 7;\n var TYPE_ARRAY_NUMBER = 8;\n var TYPE_ARRAY_STRING = 9;\n var TYPE_NAME_TABLE = {\n 0: 'number',\n 1: 'any',\n 2: 'string',\n 3: 'array',\n 4: 'object',\n 5: 'boolean',\n 6: 'expression',\n 7: 'null',\n 8: 'Array',\n 9: 'Array'\n };\n\n var TOK_EOF = \"EOF\";\n var TOK_UNQUOTEDIDENTIFIER = \"UnquotedIdentifier\";\n var TOK_QUOTEDIDENTIFIER = \"QuotedIdentifier\";\n var TOK_RBRACKET = \"Rbracket\";\n var TOK_RPAREN = \"Rparen\";\n var TOK_COMMA = \"Comma\";\n var TOK_COLON = \"Colon\";\n var TOK_RBRACE = \"Rbrace\";\n var TOK_NUMBER = \"Number\";\n var TOK_CURRENT = \"Current\";\n var TOK_EXPREF = \"Expref\";\n var TOK_PIPE = \"Pipe\";\n var TOK_OR = \"Or\";\n var TOK_AND = \"And\";\n var TOK_EQ = \"EQ\";\n var TOK_GT = \"GT\";\n var TOK_LT = \"LT\";\n var TOK_GTE = \"GTE\";\n var TOK_LTE = \"LTE\";\n var TOK_NE = \"NE\";\n var TOK_FLATTEN = \"Flatten\";\n var TOK_STAR = \"Star\";\n var TOK_FILTER = \"Filter\";\n var TOK_DOT = \"Dot\";\n var TOK_NOT = \"Not\";\n var TOK_LBRACE = \"Lbrace\";\n var TOK_LBRACKET = \"Lbracket\";\n var TOK_LPAREN= \"Lparen\";\n var TOK_LITERAL= \"Literal\";\n\n // The \"&\", \"[\", \"<\", \">\" tokens\n // are not in basicToken because\n // there are two token variants\n // (\"&&\", \"[?\", \"<=\", \">=\"). This is specially handled\n // below.\n\n var basicTokens = {\n \".\": TOK_DOT,\n \"*\": TOK_STAR,\n \",\": TOK_COMMA,\n \":\": TOK_COLON,\n \"{\": TOK_LBRACE,\n \"}\": TOK_RBRACE,\n \"]\": TOK_RBRACKET,\n \"(\": TOK_LPAREN,\n \")\": TOK_RPAREN,\n \"@\": TOK_CURRENT\n };\n\n var operatorStartToken = {\n \"<\": true,\n \">\": true,\n \"=\": true,\n \"!\": true\n };\n\n var skipChars = {\n \" \": true,\n \"\\t\": true,\n \"\\n\": true\n };\n\n\n function isAlpha(ch) {\n return (ch >= \"a\" && ch <= \"z\") ||\n (ch >= \"A\" && ch <= \"Z\") ||\n ch === \"_\";\n }\n\n function isNum(ch) {\n return (ch >= \"0\" && ch <= \"9\") ||\n ch === \"-\";\n }\n function isAlphaNum(ch) {\n return (ch >= \"a\" && ch <= \"z\") ||\n (ch >= \"A\" && ch <= \"Z\") ||\n (ch >= \"0\" && ch <= \"9\") ||\n ch === \"_\";\n }\n\n function Lexer() {\n }\n Lexer.prototype = {\n tokenize: function(stream) {\n var tokens = [];\n this._current = 0;\n var start;\n var identifier;\n var token;\n while (this._current < stream.length) {\n if (isAlpha(stream[this._current])) {\n start = this._current;\n identifier = this._consumeUnquotedIdentifier(stream);\n tokens.push({type: TOK_UNQUOTEDIDENTIFIER,\n value: identifier,\n start: start});\n } else if (basicTokens[stream[this._current]] !== undefined) {\n tokens.push({type: basicTokens[stream[this._current]],\n value: stream[this._current],\n start: this._current});\n this._current++;\n } else if (isNum(stream[this._current])) {\n token = this._consumeNumber(stream);\n tokens.push(token);\n } else if (stream[this._current] === \"[\") {\n // No need to increment this._current. This happens\n // in _consumeLBracket\n token = this._consumeLBracket(stream);\n tokens.push(token);\n } else if (stream[this._current] === \"\\\"\") {\n start = this._current;\n identifier = this._consumeQuotedIdentifier(stream);\n tokens.push({type: TOK_QUOTEDIDENTIFIER,\n value: identifier,\n start: start});\n } else if (stream[this._current] === \"'\") {\n start = this._current;\n identifier = this._consumeRawStringLiteral(stream);\n tokens.push({type: TOK_LITERAL,\n value: identifier,\n start: start});\n } else if (stream[this._current] === \"`\") {\n start = this._current;\n var literal = this._consumeLiteral(stream);\n tokens.push({type: TOK_LITERAL,\n value: literal,\n start: start});\n } else if (operatorStartToken[stream[this._current]] !== undefined) {\n tokens.push(this._consumeOperator(stream));\n } else if (skipChars[stream[this._current]] !== undefined) {\n // Ignore whitespace.\n this._current++;\n } else if (stream[this._current] === \"&\") {\n start = this._current;\n this._current++;\n if (stream[this._current] === \"&\") {\n this._current++;\n tokens.push({type: TOK_AND, value: \"&&\", start: start});\n } else {\n tokens.push({type: TOK_EXPREF, value: \"&\", start: start});\n }\n } else if (stream[this._current] === \"|\") {\n start = this._current;\n this._current++;\n if (stream[this._current] === \"|\") {\n this._current++;\n tokens.push({type: TOK_OR, value: \"||\", start: start});\n } else {\n tokens.push({type: TOK_PIPE, value: \"|\", start: start});\n }\n } else {\n var error = new Error(\"Unknown character:\" + stream[this._current]);\n error.name = \"LexerError\";\n throw error;\n }\n }\n return tokens;\n },\n\n _consumeUnquotedIdentifier: function(stream) {\n var start = this._current;\n this._current++;\n while (this._current < stream.length && isAlphaNum(stream[this._current])) {\n this._current++;\n }\n return stream.slice(start, this._current);\n },\n\n _consumeQuotedIdentifier: function(stream) {\n var start = this._current;\n this._current++;\n var maxLength = stream.length;\n while (stream[this._current] !== \"\\\"\" && this._current < maxLength) {\n // You can escape a double quote and you can escape an escape.\n var current = this._current;\n if (stream[current] === \"\\\\\" && (stream[current + 1] === \"\\\\\" ||\n stream[current + 1] === \"\\\"\")) {\n current += 2;\n } else {\n current++;\n }\n this._current = current;\n }\n this._current++;\n return JSON.parse(stream.slice(start, this._current));\n },\n\n _consumeRawStringLiteral: function(stream) {\n var start = this._current;\n this._current++;\n var maxLength = stream.length;\n while (stream[this._current] !== \"'\" && this._current < maxLength) {\n // You can escape a single quote and you can escape an escape.\n var current = this._current;\n if (stream[current] === \"\\\\\" && (stream[current + 1] === \"\\\\\" ||\n stream[current + 1] === \"'\")) {\n current += 2;\n } else {\n current++;\n }\n this._current = current;\n }\n this._current++;\n var literal = stream.slice(start + 1, this._current - 1);\n return literal.replace(\"\\\\'\", \"'\");\n },\n\n _consumeNumber: function(stream) {\n var start = this._current;\n this._current++;\n var maxLength = stream.length;\n while (isNum(stream[this._current]) && this._current < maxLength) {\n this._current++;\n }\n var value = parseInt(stream.slice(start, this._current));\n return {type: TOK_NUMBER, value: value, start: start};\n },\n\n _consumeLBracket: function(stream) {\n var start = this._current;\n this._current++;\n if (stream[this._current] === \"?\") {\n this._current++;\n return {type: TOK_FILTER, value: \"[?\", start: start};\n } else if (stream[this._current] === \"]\") {\n this._current++;\n return {type: TOK_FLATTEN, value: \"[]\", start: start};\n } else {\n return {type: TOK_LBRACKET, value: \"[\", start: start};\n }\n },\n\n _consumeOperator: function(stream) {\n var start = this._current;\n var startingChar = stream[start];\n this._current++;\n if (startingChar === \"!\") {\n if (stream[this._current] === \"=\") {\n this._current++;\n return {type: TOK_NE, value: \"!=\", start: start};\n } else {\n return {type: TOK_NOT, value: \"!\", start: start};\n }\n } else if (startingChar === \"<\") {\n if (stream[this._current] === \"=\") {\n this._current++;\n return {type: TOK_LTE, value: \"<=\", start: start};\n } else {\n return {type: TOK_LT, value: \"<\", start: start};\n }\n } else if (startingChar === \">\") {\n if (stream[this._current] === \"=\") {\n this._current++;\n return {type: TOK_GTE, value: \">=\", start: start};\n } else {\n return {type: TOK_GT, value: \">\", start: start};\n }\n } else if (startingChar === \"=\") {\n if (stream[this._current] === \"=\") {\n this._current++;\n return {type: TOK_EQ, value: \"==\", start: start};\n }\n }\n },\n\n _consumeLiteral: function(stream) {\n this._current++;\n var start = this._current;\n var maxLength = stream.length;\n var literal;\n while(stream[this._current] !== \"`\" && this._current < maxLength) {\n // You can escape a literal char or you can escape the escape.\n var current = this._current;\n if (stream[current] === \"\\\\\" && (stream[current + 1] === \"\\\\\" ||\n stream[current + 1] === \"`\")) {\n current += 2;\n } else {\n current++;\n }\n this._current = current;\n }\n var literalString = trimLeft(stream.slice(start, this._current));\n literalString = literalString.replace(\"\\\\`\", \"`\");\n if (this._looksLikeJSON(literalString)) {\n literal = JSON.parse(literalString);\n } else {\n // Try to JSON parse it as \"\"\n literal = JSON.parse(\"\\\"\" + literalString + \"\\\"\");\n }\n // +1 gets us to the ending \"`\", +1 to move on to the next char.\n this._current++;\n return literal;\n },\n\n _looksLikeJSON: function(literalString) {\n var startingChars = \"[{\\\"\";\n var jsonLiterals = [\"true\", \"false\", \"null\"];\n var numberLooking = \"-0123456789\";\n\n if (literalString === \"\") {\n return false;\n } else if (startingChars.indexOf(literalString[0]) >= 0) {\n return true;\n } else if (jsonLiterals.indexOf(literalString) >= 0) {\n return true;\n } else if (numberLooking.indexOf(literalString[0]) >= 0) {\n try {\n JSON.parse(literalString);\n return true;\n } catch (ex) {\n return false;\n }\n } else {\n return false;\n }\n }\n };\n\n var bindingPower = {};\n bindingPower[TOK_EOF] = 0;\n bindingPower[TOK_UNQUOTEDIDENTIFIER] = 0;\n bindingPower[TOK_QUOTEDIDENTIFIER] = 0;\n bindingPower[TOK_RBRACKET] = 0;\n bindingPower[TOK_RPAREN] = 0;\n bindingPower[TOK_COMMA] = 0;\n bindingPower[TOK_RBRACE] = 0;\n bindingPower[TOK_NUMBER] = 0;\n bindingPower[TOK_CURRENT] = 0;\n bindingPower[TOK_EXPREF] = 0;\n bindingPower[TOK_PIPE] = 1;\n bindingPower[TOK_OR] = 2;\n bindingPower[TOK_AND] = 3;\n bindingPower[TOK_EQ] = 5;\n bindingPower[TOK_GT] = 5;\n bindingPower[TOK_LT] = 5;\n bindingPower[TOK_GTE] = 5;\n bindingPower[TOK_LTE] = 5;\n bindingPower[TOK_NE] = 5;\n bindingPower[TOK_FLATTEN] = 9;\n bindingPower[TOK_STAR] = 20;\n bindingPower[TOK_FILTER] = 21;\n bindingPower[TOK_DOT] = 40;\n bindingPower[TOK_NOT] = 45;\n bindingPower[TOK_LBRACE] = 50;\n bindingPower[TOK_LBRACKET] = 55;\n bindingPower[TOK_LPAREN] = 60;\n\n function Parser() {\n }\n\n Parser.prototype = {\n parse: function(expression) {\n this._loadTokens(expression);\n this.index = 0;\n var ast = this.expression(0);\n if (this._lookahead(0) !== TOK_EOF) {\n var t = this._lookaheadToken(0);\n var error = new Error(\n \"Unexpected token type: \" + t.type + \", value: \" + t.value);\n error.name = \"ParserError\";\n throw error;\n }\n return ast;\n },\n\n _loadTokens: function(expression) {\n var lexer = new Lexer();\n var tokens = lexer.tokenize(expression);\n tokens.push({type: TOK_EOF, value: \"\", start: expression.length});\n this.tokens = tokens;\n },\n\n expression: function(rbp) {\n var leftToken = this._lookaheadToken(0);\n this._advance();\n var left = this.nud(leftToken);\n var currentToken = this._lookahead(0);\n while (rbp < bindingPower[currentToken]) {\n this._advance();\n left = this.led(currentToken, left);\n currentToken = this._lookahead(0);\n }\n return left;\n },\n\n _lookahead: function(number) {\n return this.tokens[this.index + number].type;\n },\n\n _lookaheadToken: function(number) {\n return this.tokens[this.index + number];\n },\n\n _advance: function() {\n this.index++;\n },\n\n nud: function(token) {\n var left;\n var right;\n var expression;\n switch (token.type) {\n case TOK_LITERAL:\n return {type: \"Literal\", value: token.value};\n case TOK_UNQUOTEDIDENTIFIER:\n return {type: \"Field\", name: token.value};\n case TOK_QUOTEDIDENTIFIER:\n var node = {type: \"Field\", name: token.value};\n if (this._lookahead(0) === TOK_LPAREN) {\n throw new Error(\"Quoted identifier not allowed for function names.\");\n }\n return node;\n case TOK_NOT:\n right = this.expression(bindingPower.Not);\n return {type: \"NotExpression\", children: [right]};\n case TOK_STAR:\n left = {type: \"Identity\"};\n right = null;\n if (this._lookahead(0) === TOK_RBRACKET) {\n // This can happen in a multiselect,\n // [a, b, *]\n right = {type: \"Identity\"};\n } else {\n right = this._parseProjectionRHS(bindingPower.Star);\n }\n return {type: \"ValueProjection\", children: [left, right]};\n case TOK_FILTER:\n return this.led(token.type, {type: \"Identity\"});\n case TOK_LBRACE:\n return this._parseMultiselectHash();\n case TOK_FLATTEN:\n left = {type: TOK_FLATTEN, children: [{type: \"Identity\"}]};\n right = this._parseProjectionRHS(bindingPower.Flatten);\n return {type: \"Projection\", children: [left, right]};\n case TOK_LBRACKET:\n if (this._lookahead(0) === TOK_NUMBER || this._lookahead(0) === TOK_COLON) {\n right = this._parseIndexExpression();\n return this._projectIfSlice({type: \"Identity\"}, right);\n } else if (this._lookahead(0) === TOK_STAR &&\n this._lookahead(1) === TOK_RBRACKET) {\n this._advance();\n this._advance();\n right = this._parseProjectionRHS(bindingPower.Star);\n return {type: \"Projection\",\n children: [{type: \"Identity\"}, right]};\n }\n return this._parseMultiselectList();\n case TOK_CURRENT:\n return {type: TOK_CURRENT};\n case TOK_EXPREF:\n expression = this.expression(bindingPower.Expref);\n return {type: \"ExpressionReference\", children: [expression]};\n case TOK_LPAREN:\n var args = [];\n while (this._lookahead(0) !== TOK_RPAREN) {\n if (this._lookahead(0) === TOK_CURRENT) {\n expression = {type: TOK_CURRENT};\n this._advance();\n } else {\n expression = this.expression(0);\n }\n args.push(expression);\n }\n this._match(TOK_RPAREN);\n return args[0];\n default:\n this._errorToken(token);\n }\n },\n\n led: function(tokenName, left) {\n var right;\n switch(tokenName) {\n case TOK_DOT:\n var rbp = bindingPower.Dot;\n if (this._lookahead(0) !== TOK_STAR) {\n right = this._parseDotRHS(rbp);\n return {type: \"Subexpression\", children: [left, right]};\n }\n // Creating a projection.\n this._advance();\n right = this._parseProjectionRHS(rbp);\n return {type: \"ValueProjection\", children: [left, right]};\n case TOK_PIPE:\n right = this.expression(bindingPower.Pipe);\n return {type: TOK_PIPE, children: [left, right]};\n case TOK_OR:\n right = this.expression(bindingPower.Or);\n return {type: \"OrExpression\", children: [left, right]};\n case TOK_AND:\n right = this.expression(bindingPower.And);\n return {type: \"AndExpression\", children: [left, right]};\n case TOK_LPAREN:\n var name = left.name;\n var args = [];\n var expression, node;\n while (this._lookahead(0) !== TOK_RPAREN) {\n if (this._lookahead(0) === TOK_CURRENT) {\n expression = {type: TOK_CURRENT};\n this._advance();\n } else {\n expression = this.expression(0);\n }\n if (this._lookahead(0) === TOK_COMMA) {\n this._match(TOK_COMMA);\n }\n args.push(expression);\n }\n this._match(TOK_RPAREN);\n node = {type: \"Function\", name: name, children: args};\n return node;\n case TOK_FILTER:\n var condition = this.expression(0);\n this._match(TOK_RBRACKET);\n if (this._lookahead(0) === TOK_FLATTEN) {\n right = {type: \"Identity\"};\n } else {\n right = this._parseProjectionRHS(bindingPower.Filter);\n }\n return {type: \"FilterProjection\", children: [left, right, condition]};\n case TOK_FLATTEN:\n var leftNode = {type: TOK_FLATTEN, children: [left]};\n var rightNode = this._parseProjectionRHS(bindingPower.Flatten);\n return {type: \"Projection\", children: [leftNode, rightNode]};\n case TOK_EQ:\n case TOK_NE:\n case TOK_GT:\n case TOK_GTE:\n case TOK_LT:\n case TOK_LTE:\n return this._parseComparator(left, tokenName);\n case TOK_LBRACKET:\n var token = this._lookaheadToken(0);\n if (token.type === TOK_NUMBER || token.type === TOK_COLON) {\n right = this._parseIndexExpression();\n return this._projectIfSlice(left, right);\n }\n this._match(TOK_STAR);\n this._match(TOK_RBRACKET);\n right = this._parseProjectionRHS(bindingPower.Star);\n return {type: \"Projection\", children: [left, right]};\n default:\n this._errorToken(this._lookaheadToken(0));\n }\n },\n\n _match: function(tokenType) {\n if (this._lookahead(0) === tokenType) {\n this._advance();\n } else {\n var t = this._lookaheadToken(0);\n var error = new Error(\"Expected \" + tokenType + \", got: \" + t.type);\n error.name = \"ParserError\";\n throw error;\n }\n },\n\n _errorToken: function(token) {\n var error = new Error(\"Invalid token (\" +\n token.type + \"): \\\"\" +\n token.value + \"\\\"\");\n error.name = \"ParserError\";\n throw error;\n },\n\n\n _parseIndexExpression: function() {\n if (this._lookahead(0) === TOK_COLON || this._lookahead(1) === TOK_COLON) {\n return this._parseSliceExpression();\n } else {\n var node = {\n type: \"Index\",\n value: this._lookaheadToken(0).value};\n this._advance();\n this._match(TOK_RBRACKET);\n return node;\n }\n },\n\n _projectIfSlice: function(left, right) {\n var indexExpr = {type: \"IndexExpression\", children: [left, right]};\n if (right.type === \"Slice\") {\n return {\n type: \"Projection\",\n children: [indexExpr, this._parseProjectionRHS(bindingPower.Star)]\n };\n } else {\n return indexExpr;\n }\n },\n\n _parseSliceExpression: function() {\n // [start:end:step] where each part is optional, as well as the last\n // colon.\n var parts = [null, null, null];\n var index = 0;\n var currentToken = this._lookahead(0);\n while (currentToken !== TOK_RBRACKET && index < 3) {\n if (currentToken === TOK_COLON) {\n index++;\n this._advance();\n } else if (currentToken === TOK_NUMBER) {\n parts[index] = this._lookaheadToken(0).value;\n this._advance();\n } else {\n var t = this._lookahead(0);\n var error = new Error(\"Syntax error, unexpected token: \" +\n t.value + \"(\" + t.type + \")\");\n error.name = \"Parsererror\";\n throw error;\n }\n currentToken = this._lookahead(0);\n }\n this._match(TOK_RBRACKET);\n return {\n type: \"Slice\",\n children: parts\n };\n },\n\n _parseComparator: function(left, comparator) {\n var right = this.expression(bindingPower[comparator]);\n return {type: \"Comparator\", name: comparator, children: [left, right]};\n },\n\n _parseDotRHS: function(rbp) {\n var lookahead = this._lookahead(0);\n var exprTokens = [TOK_UNQUOTEDIDENTIFIER, TOK_QUOTEDIDENTIFIER, TOK_STAR];\n if (exprTokens.indexOf(lookahead) >= 0) {\n return this.expression(rbp);\n } else if (lookahead === TOK_LBRACKET) {\n this._match(TOK_LBRACKET);\n return this._parseMultiselectList();\n } else if (lookahead === TOK_LBRACE) {\n this._match(TOK_LBRACE);\n return this._parseMultiselectHash();\n }\n },\n\n _parseProjectionRHS: function(rbp) {\n var right;\n if (bindingPower[this._lookahead(0)] < 10) {\n right = {type: \"Identity\"};\n } else if (this._lookahead(0) === TOK_LBRACKET) {\n right = this.expression(rbp);\n } else if (this._lookahead(0) === TOK_FILTER) {\n right = this.expression(rbp);\n } else if (this._lookahead(0) === TOK_DOT) {\n this._match(TOK_DOT);\n right = this._parseDotRHS(rbp);\n } else {\n var t = this._lookaheadToken(0);\n var error = new Error(\"Sytanx error, unexpected token: \" +\n t.value + \"(\" + t.type + \")\");\n error.name = \"ParserError\";\n throw error;\n }\n return right;\n },\n\n _parseMultiselectList: function() {\n var expressions = [];\n while (this._lookahead(0) !== TOK_RBRACKET) {\n var expression = this.expression(0);\n expressions.push(expression);\n if (this._lookahead(0) === TOK_COMMA) {\n this._match(TOK_COMMA);\n if (this._lookahead(0) === TOK_RBRACKET) {\n throw new Error(\"Unexpected token Rbracket\");\n }\n }\n }\n this._match(TOK_RBRACKET);\n return {type: \"MultiSelectList\", children: expressions};\n },\n\n _parseMultiselectHash: function() {\n var pairs = [];\n var identifierTypes = [TOK_UNQUOTEDIDENTIFIER, TOK_QUOTEDIDENTIFIER];\n var keyToken, keyName, value, node;\n for (;;) {\n keyToken = this._lookaheadToken(0);\n if (identifierTypes.indexOf(keyToken.type) < 0) {\n throw new Error(\"Expecting an identifier token, got: \" +\n keyToken.type);\n }\n keyName = keyToken.value;\n this._advance();\n this._match(TOK_COLON);\n value = this.expression(0);\n node = {type: \"KeyValuePair\", name: keyName, value: value};\n pairs.push(node);\n if (this._lookahead(0) === TOK_COMMA) {\n this._match(TOK_COMMA);\n } else if (this._lookahead(0) === TOK_RBRACE) {\n this._match(TOK_RBRACE);\n break;\n }\n }\n return {type: \"MultiSelectHash\", children: pairs};\n }\n };\n\n\n function TreeInterpreter(runtime) {\n this.runtime = runtime;\n }\n\n TreeInterpreter.prototype = {\n search: function(node, value) {\n return this.visit(node, value);\n },\n\n visit: function(node, value) {\n var matched, current, result, first, second, field, left, right, collected, i;\n switch (node.type) {\n case \"Field\":\n if (value !== null && isObject(value)) {\n field = value[node.name];\n if (field === undefined) {\n return null;\n } else {\n return field;\n }\n }\n return null;\n case \"Subexpression\":\n result = this.visit(node.children[0], value);\n for (i = 1; i < node.children.length; i++) {\n result = this.visit(node.children[1], result);\n if (result === null) {\n return null;\n }\n }\n return result;\n case \"IndexExpression\":\n left = this.visit(node.children[0], value);\n right = this.visit(node.children[1], left);\n return right;\n case \"Index\":\n if (!isArray(value)) {\n return null;\n }\n var index = node.value;\n if (index < 0) {\n index = value.length + index;\n }\n result = value[index];\n if (result === undefined) {\n result = null;\n }\n return result;\n case \"Slice\":\n if (!isArray(value)) {\n return null;\n }\n var sliceParams = node.children.slice(0);\n var computed = this.computeSliceParams(value.length, sliceParams);\n var start = computed[0];\n var stop = computed[1];\n var step = computed[2];\n result = [];\n if (step > 0) {\n for (i = start; i < stop; i += step) {\n result.push(value[i]);\n }\n } else {\n for (i = start; i > stop; i += step) {\n result.push(value[i]);\n }\n }\n return result;\n case \"Projection\":\n // Evaluate left child.\n var base = this.visit(node.children[0], value);\n if (!isArray(base)) {\n return null;\n }\n collected = [];\n for (i = 0; i < base.length; i++) {\n current = this.visit(node.children[1], base[i]);\n if (current !== null) {\n collected.push(current);\n }\n }\n return collected;\n case \"ValueProjection\":\n // Evaluate left child.\n base = this.visit(node.children[0], value);\n if (!isObject(base)) {\n return null;\n }\n collected = [];\n var values = objValues(base);\n for (i = 0; i < values.length; i++) {\n current = this.visit(node.children[1], values[i]);\n if (current !== null) {\n collected.push(current);\n }\n }\n return collected;\n case \"FilterProjection\":\n base = this.visit(node.children[0], value);\n if (!isArray(base)) {\n return null;\n }\n var filtered = [];\n var finalResults = [];\n for (i = 0; i < base.length; i++) {\n matched = this.visit(node.children[2], base[i]);\n if (!isFalse(matched)) {\n filtered.push(base[i]);\n }\n }\n for (var j = 0; j < filtered.length; j++) {\n current = this.visit(node.children[1], filtered[j]);\n if (current !== null) {\n finalResults.push(current);\n }\n }\n return finalResults;\n case \"Comparator\":\n first = this.visit(node.children[0], value);\n second = this.visit(node.children[1], value);\n switch(node.name) {\n case TOK_EQ:\n result = strictDeepEqual(first, second);\n break;\n case TOK_NE:\n result = !strictDeepEqual(first, second);\n break;\n case TOK_GT:\n result = first > second;\n break;\n case TOK_GTE:\n result = first >= second;\n break;\n case TOK_LT:\n result = first < second;\n break;\n case TOK_LTE:\n result = first <= second;\n break;\n default:\n throw new Error(\"Unknown comparator: \" + node.name);\n }\n return result;\n case TOK_FLATTEN:\n var original = this.visit(node.children[0], value);\n if (!isArray(original)) {\n return null;\n }\n var merged = [];\n for (i = 0; i < original.length; i++) {\n current = original[i];\n if (isArray(current)) {\n merged.push.apply(merged, current);\n } else {\n merged.push(current);\n }\n }\n return merged;\n case \"Identity\":\n return value;\n case \"MultiSelectList\":\n if (value === null) {\n return null;\n }\n collected = [];\n for (i = 0; i < node.children.length; i++) {\n collected.push(this.visit(node.children[i], value));\n }\n return collected;\n case \"MultiSelectHash\":\n if (value === null) {\n return null;\n }\n collected = {};\n var child;\n for (i = 0; i < node.children.length; i++) {\n child = node.children[i];\n collected[child.name] = this.visit(child.value, value);\n }\n return collected;\n case \"OrExpression\":\n matched = this.visit(node.children[0], value);\n if (isFalse(matched)) {\n matched = this.visit(node.children[1], value);\n }\n return matched;\n case \"AndExpression\":\n first = this.visit(node.children[0], value);\n\n if (isFalse(first) === true) {\n return first;\n }\n return this.visit(node.children[1], value);\n case \"NotExpression\":\n first = this.visit(node.children[0], value);\n return isFalse(first);\n case \"Literal\":\n return node.value;\n case TOK_PIPE:\n left = this.visit(node.children[0], value);\n return this.visit(node.children[1], left);\n case TOK_CURRENT:\n return value;\n case \"Function\":\n var resolvedArgs = [];\n for (i = 0; i < node.children.length; i++) {\n resolvedArgs.push(this.visit(node.children[i], value));\n }\n return this.runtime.callFunction(node.name, resolvedArgs);\n case \"ExpressionReference\":\n var refNode = node.children[0];\n // Tag the node with a specific attribute so the type\n // checker verify the type.\n refNode.jmespathType = TOK_EXPREF;\n return refNode;\n default:\n throw new Error(\"Unknown node type: \" + node.type);\n }\n },\n\n computeSliceParams: function(arrayLength, sliceParams) {\n var start = sliceParams[0];\n var stop = sliceParams[1];\n var step = sliceParams[2];\n var computed = [null, null, null];\n if (step === null) {\n step = 1;\n } else if (step === 0) {\n var error = new Error(\"Invalid slice, step cannot be 0\");\n error.name = \"RuntimeError\";\n throw error;\n }\n var stepValueNegative = step < 0 ? true : false;\n\n if (start === null) {\n start = stepValueNegative ? arrayLength - 1 : 0;\n } else {\n start = this.capSliceRange(arrayLength, start, step);\n }\n\n if (stop === null) {\n stop = stepValueNegative ? -1 : arrayLength;\n } else {\n stop = this.capSliceRange(arrayLength, stop, step);\n }\n computed[0] = start;\n computed[1] = stop;\n computed[2] = step;\n return computed;\n },\n\n capSliceRange: function(arrayLength, actualValue, step) {\n if (actualValue < 0) {\n actualValue += arrayLength;\n if (actualValue < 0) {\n actualValue = step < 0 ? -1 : 0;\n }\n } else if (actualValue >= arrayLength) {\n actualValue = step < 0 ? arrayLength - 1 : arrayLength;\n }\n return actualValue;\n }\n\n };\n\n function Runtime(interpreter) {\n this._interpreter = interpreter;\n this.functionTable = {\n // name: [function, ]\n // The can be:\n //\n // {\n // args: [[type1, type2], [type1, type2]],\n // variadic: true|false\n // }\n //\n // Each arg in the arg list is a list of valid types\n // (if the function is overloaded and supports multiple\n // types. If the type is \"any\" then no type checking\n // occurs on the argument. Variadic is optional\n // and if not provided is assumed to be false.\n abs: {_func: this._functionAbs, _signature: [{types: [TYPE_NUMBER]}]},\n avg: {_func: this._functionAvg, _signature: [{types: [TYPE_ARRAY_NUMBER]}]},\n ceil: {_func: this._functionCeil, _signature: [{types: [TYPE_NUMBER]}]},\n contains: {\n _func: this._functionContains,\n _signature: [{types: [TYPE_STRING, TYPE_ARRAY]},\n {types: [TYPE_ANY]}]},\n \"ends_with\": {\n _func: this._functionEndsWith,\n _signature: [{types: [TYPE_STRING]}, {types: [TYPE_STRING]}]},\n floor: {_func: this._functionFloor, _signature: [{types: [TYPE_NUMBER]}]},\n length: {\n _func: this._functionLength,\n _signature: [{types: [TYPE_STRING, TYPE_ARRAY, TYPE_OBJECT]}]},\n map: {\n _func: this._functionMap,\n _signature: [{types: [TYPE_EXPREF]}, {types: [TYPE_ARRAY]}]},\n max: {\n _func: this._functionMax,\n _signature: [{types: [TYPE_ARRAY_NUMBER, TYPE_ARRAY_STRING]}]},\n \"merge\": {\n _func: this._functionMerge,\n _signature: [{types: [TYPE_OBJECT], variadic: true}]\n },\n \"max_by\": {\n _func: this._functionMaxBy,\n _signature: [{types: [TYPE_ARRAY]}, {types: [TYPE_EXPREF]}]\n },\n sum: {_func: this._functionSum, _signature: [{types: [TYPE_ARRAY_NUMBER]}]},\n \"starts_with\": {\n _func: this._functionStartsWith,\n _signature: [{types: [TYPE_STRING]}, {types: [TYPE_STRING]}]},\n min: {\n _func: this._functionMin,\n _signature: [{types: [TYPE_ARRAY_NUMBER, TYPE_ARRAY_STRING]}]},\n \"min_by\": {\n _func: this._functionMinBy,\n _signature: [{types: [TYPE_ARRAY]}, {types: [TYPE_EXPREF]}]\n },\n type: {_func: this._functionType, _signature: [{types: [TYPE_ANY]}]},\n keys: {_func: this._functionKeys, _signature: [{types: [TYPE_OBJECT]}]},\n values: {_func: this._functionValues, _signature: [{types: [TYPE_OBJECT]}]},\n sort: {_func: this._functionSort, _signature: [{types: [TYPE_ARRAY_STRING, TYPE_ARRAY_NUMBER]}]},\n \"sort_by\": {\n _func: this._functionSortBy,\n _signature: [{types: [TYPE_ARRAY]}, {types: [TYPE_EXPREF]}]\n },\n join: {\n _func: this._functionJoin,\n _signature: [\n {types: [TYPE_STRING]},\n {types: [TYPE_ARRAY_STRING]}\n ]\n },\n reverse: {\n _func: this._functionReverse,\n _signature: [{types: [TYPE_STRING, TYPE_ARRAY]}]},\n \"to_array\": {_func: this._functionToArray, _signature: [{types: [TYPE_ANY]}]},\n \"to_string\": {_func: this._functionToString, _signature: [{types: [TYPE_ANY]}]},\n \"to_number\": {_func: this._functionToNumber, _signature: [{types: [TYPE_ANY]}]},\n \"not_null\": {\n _func: this._functionNotNull,\n _signature: [{types: [TYPE_ANY], variadic: true}]\n }\n };\n }\n\n Runtime.prototype = {\n callFunction: function(name, resolvedArgs) {\n var functionEntry = this.functionTable[name];\n if (functionEntry === undefined) {\n throw new Error(\"Unknown function: \" + name + \"()\");\n }\n this._validateArgs(name, resolvedArgs, functionEntry._signature);\n return functionEntry._func.call(this, resolvedArgs);\n },\n\n _validateArgs: function(name, args, signature) {\n // Validating the args requires validating\n // the correct arity and the correct type of each arg.\n // If the last argument is declared as variadic, then we need\n // a minimum number of args to be required. Otherwise it has to\n // be an exact amount.\n var pluralized;\n if (signature[signature.length - 1].variadic) {\n if (args.length < signature.length) {\n pluralized = signature.length === 1 ? \" argument\" : \" arguments\";\n throw new Error(\"ArgumentError: \" + name + \"() \" +\n \"takes at least\" + signature.length + pluralized +\n \" but received \" + args.length);\n }\n } else if (args.length !== signature.length) {\n pluralized = signature.length === 1 ? \" argument\" : \" arguments\";\n throw new Error(\"ArgumentError: \" + name + \"() \" +\n \"takes \" + signature.length + pluralized +\n \" but received \" + args.length);\n }\n var currentSpec;\n var actualType;\n var typeMatched;\n for (var i = 0; i < signature.length; i++) {\n typeMatched = false;\n currentSpec = signature[i].types;\n actualType = this._getTypeName(args[i]);\n for (var j = 0; j < currentSpec.length; j++) {\n if (this._typeMatches(actualType, currentSpec[j], args[i])) {\n typeMatched = true;\n break;\n }\n }\n if (!typeMatched) {\n var expected = currentSpec\n .map(function(typeIdentifier) {\n return TYPE_NAME_TABLE[typeIdentifier];\n })\n .join(',');\n throw new Error(\"TypeError: \" + name + \"() \" +\n \"expected argument \" + (i + 1) +\n \" to be type \" + expected +\n \" but received type \" +\n TYPE_NAME_TABLE[actualType] + \" instead.\");\n }\n }\n },\n\n _typeMatches: function(actual, expected, argValue) {\n if (expected === TYPE_ANY) {\n return true;\n }\n if (expected === TYPE_ARRAY_STRING ||\n expected === TYPE_ARRAY_NUMBER ||\n expected === TYPE_ARRAY) {\n // The expected type can either just be array,\n // or it can require a specific subtype (array of numbers).\n //\n // The simplest case is if \"array\" with no subtype is specified.\n if (expected === TYPE_ARRAY) {\n return actual === TYPE_ARRAY;\n } else if (actual === TYPE_ARRAY) {\n // Otherwise we need to check subtypes.\n // I think this has potential to be improved.\n var subtype;\n if (expected === TYPE_ARRAY_NUMBER) {\n subtype = TYPE_NUMBER;\n } else if (expected === TYPE_ARRAY_STRING) {\n subtype = TYPE_STRING;\n }\n for (var i = 0; i < argValue.length; i++) {\n if (!this._typeMatches(\n this._getTypeName(argValue[i]), subtype,\n argValue[i])) {\n return false;\n }\n }\n return true;\n }\n } else {\n return actual === expected;\n }\n },\n _getTypeName: function(obj) {\n switch (Object.prototype.toString.call(obj)) {\n case \"[object String]\":\n return TYPE_STRING;\n case \"[object Number]\":\n return TYPE_NUMBER;\n case \"[object Array]\":\n return TYPE_ARRAY;\n case \"[object Boolean]\":\n return TYPE_BOOLEAN;\n case \"[object Null]\":\n return TYPE_NULL;\n case \"[object Object]\":\n // Check if it's an expref. If it has, it's been\n // tagged with a jmespathType attr of 'Expref';\n if (obj.jmespathType === TOK_EXPREF) {\n return TYPE_EXPREF;\n } else {\n return TYPE_OBJECT;\n }\n }\n },\n\n _functionStartsWith: function(resolvedArgs) {\n return resolvedArgs[0].lastIndexOf(resolvedArgs[1]) === 0;\n },\n\n _functionEndsWith: function(resolvedArgs) {\n var searchStr = resolvedArgs[0];\n var suffix = resolvedArgs[1];\n return searchStr.indexOf(suffix, searchStr.length - suffix.length) !== -1;\n },\n\n _functionReverse: function(resolvedArgs) {\n var typeName = this._getTypeName(resolvedArgs[0]);\n if (typeName === TYPE_STRING) {\n var originalStr = resolvedArgs[0];\n var reversedStr = \"\";\n for (var i = originalStr.length - 1; i >= 0; i--) {\n reversedStr += originalStr[i];\n }\n return reversedStr;\n } else {\n var reversedArray = resolvedArgs[0].slice(0);\n reversedArray.reverse();\n return reversedArray;\n }\n },\n\n _functionAbs: function(resolvedArgs) {\n return Math.abs(resolvedArgs[0]);\n },\n\n _functionCeil: function(resolvedArgs) {\n return Math.ceil(resolvedArgs[0]);\n },\n\n _functionAvg: function(resolvedArgs) {\n var sum = 0;\n var inputArray = resolvedArgs[0];\n for (var i = 0; i < inputArray.length; i++) {\n sum += inputArray[i];\n }\n return sum / inputArray.length;\n },\n\n _functionContains: function(resolvedArgs) {\n return resolvedArgs[0].indexOf(resolvedArgs[1]) >= 0;\n },\n\n _functionFloor: function(resolvedArgs) {\n return Math.floor(resolvedArgs[0]);\n },\n\n _functionLength: function(resolvedArgs) {\n if (!isObject(resolvedArgs[0])) {\n return resolvedArgs[0].length;\n } else {\n // As far as I can tell, there's no way to get the length\n // of an object without O(n) iteration through the object.\n return Object.keys(resolvedArgs[0]).length;\n }\n },\n\n _functionMap: function(resolvedArgs) {\n var mapped = [];\n var interpreter = this._interpreter;\n var exprefNode = resolvedArgs[0];\n var elements = resolvedArgs[1];\n for (var i = 0; i < elements.length; i++) {\n mapped.push(interpreter.visit(exprefNode, elements[i]));\n }\n return mapped;\n },\n\n _functionMerge: function(resolvedArgs) {\n var merged = {};\n for (var i = 0; i < resolvedArgs.length; i++) {\n var current = resolvedArgs[i];\n for (var key in current) {\n merged[key] = current[key];\n }\n }\n return merged;\n },\n\n _functionMax: function(resolvedArgs) {\n if (resolvedArgs[0].length > 0) {\n var typeName = this._getTypeName(resolvedArgs[0][0]);\n if (typeName === TYPE_NUMBER) {\n return Math.max.apply(Math, resolvedArgs[0]);\n } else {\n var elements = resolvedArgs[0];\n var maxElement = elements[0];\n for (var i = 1; i < elements.length; i++) {\n if (maxElement.localeCompare(elements[i]) < 0) {\n maxElement = elements[i];\n }\n }\n return maxElement;\n }\n } else {\n return null;\n }\n },\n\n _functionMin: function(resolvedArgs) {\n if (resolvedArgs[0].length > 0) {\n var typeName = this._getTypeName(resolvedArgs[0][0]);\n if (typeName === TYPE_NUMBER) {\n return Math.min.apply(Math, resolvedArgs[0]);\n } else {\n var elements = resolvedArgs[0];\n var minElement = elements[0];\n for (var i = 1; i < elements.length; i++) {\n if (elements[i].localeCompare(minElement) < 0) {\n minElement = elements[i];\n }\n }\n return minElement;\n }\n } else {\n return null;\n }\n },\n\n _functionSum: function(resolvedArgs) {\n var sum = 0;\n var listToSum = resolvedArgs[0];\n for (var i = 0; i < listToSum.length; i++) {\n sum += listToSum[i];\n }\n return sum;\n },\n\n _functionType: function(resolvedArgs) {\n switch (this._getTypeName(resolvedArgs[0])) {\n case TYPE_NUMBER:\n return \"number\";\n case TYPE_STRING:\n return \"string\";\n case TYPE_ARRAY:\n return \"array\";\n case TYPE_OBJECT:\n return \"object\";\n case TYPE_BOOLEAN:\n return \"boolean\";\n case TYPE_EXPREF:\n return \"expref\";\n case TYPE_NULL:\n return \"null\";\n }\n },\n\n _functionKeys: function(resolvedArgs) {\n return Object.keys(resolvedArgs[0]);\n },\n\n _functionValues: function(resolvedArgs) {\n var obj = resolvedArgs[0];\n var keys = Object.keys(obj);\n var values = [];\n for (var i = 0; i < keys.length; i++) {\n values.push(obj[keys[i]]);\n }\n return values;\n },\n\n _functionJoin: function(resolvedArgs) {\n var joinChar = resolvedArgs[0];\n var listJoin = resolvedArgs[1];\n return listJoin.join(joinChar);\n },\n\n _functionToArray: function(resolvedArgs) {\n if (this._getTypeName(resolvedArgs[0]) === TYPE_ARRAY) {\n return resolvedArgs[0];\n } else {\n return [resolvedArgs[0]];\n }\n },\n\n _functionToString: function(resolvedArgs) {\n if (this._getTypeName(resolvedArgs[0]) === TYPE_STRING) {\n return resolvedArgs[0];\n } else {\n return JSON.stringify(resolvedArgs[0]);\n }\n },\n\n _functionToNumber: function(resolvedArgs) {\n var typeName = this._getTypeName(resolvedArgs[0]);\n var convertedValue;\n if (typeName === TYPE_NUMBER) {\n return resolvedArgs[0];\n } else if (typeName === TYPE_STRING) {\n convertedValue = +resolvedArgs[0];\n if (!isNaN(convertedValue)) {\n return convertedValue;\n }\n }\n return null;\n },\n\n _functionNotNull: function(resolvedArgs) {\n for (var i = 0; i < resolvedArgs.length; i++) {\n if (this._getTypeName(resolvedArgs[i]) !== TYPE_NULL) {\n return resolvedArgs[i];\n }\n }\n return null;\n },\n\n _functionSort: function(resolvedArgs) {\n var sortedArray = resolvedArgs[0].slice(0);\n sortedArray.sort();\n return sortedArray;\n },\n\n _functionSortBy: function(resolvedArgs) {\n var sortedArray = resolvedArgs[0].slice(0);\n if (sortedArray.length === 0) {\n return sortedArray;\n }\n var interpreter = this._interpreter;\n var exprefNode = resolvedArgs[1];\n var requiredType = this._getTypeName(\n interpreter.visit(exprefNode, sortedArray[0]));\n if ([TYPE_NUMBER, TYPE_STRING].indexOf(requiredType) < 0) {\n throw new Error(\"TypeError\");\n }\n var that = this;\n // In order to get a stable sort out of an unstable\n // sort algorithm, we decorate/sort/undecorate (DSU)\n // by creating a new list of [index, element] pairs.\n // In the cmp function, if the evaluated elements are\n // equal, then the index will be used as the tiebreaker.\n // After the decorated list has been sorted, it will be\n // undecorated to extract the original elements.\n var decorated = [];\n for (var i = 0; i < sortedArray.length; i++) {\n decorated.push([i, sortedArray[i]]);\n }\n decorated.sort(function(a, b) {\n var exprA = interpreter.visit(exprefNode, a[1]);\n var exprB = interpreter.visit(exprefNode, b[1]);\n if (that._getTypeName(exprA) !== requiredType) {\n throw new Error(\n \"TypeError: expected \" + requiredType + \", received \" +\n that._getTypeName(exprA));\n } else if (that._getTypeName(exprB) !== requiredType) {\n throw new Error(\n \"TypeError: expected \" + requiredType + \", received \" +\n that._getTypeName(exprB));\n }\n if (exprA > exprB) {\n return 1;\n } else if (exprA < exprB) {\n return -1;\n } else {\n // If they're equal compare the items by their\n // order to maintain relative order of equal keys\n // (i.e. to get a stable sort).\n return a[0] - b[0];\n }\n });\n // Undecorate: extract out the original list elements.\n for (var j = 0; j < decorated.length; j++) {\n sortedArray[j] = decorated[j][1];\n }\n return sortedArray;\n },\n\n _functionMaxBy: function(resolvedArgs) {\n var exprefNode = resolvedArgs[1];\n var resolvedArray = resolvedArgs[0];\n var keyFunction = this.createKeyFunction(exprefNode, [TYPE_NUMBER, TYPE_STRING]);\n var maxNumber = -Infinity;\n var maxRecord;\n var current;\n for (var i = 0; i < resolvedArray.length; i++) {\n current = keyFunction(resolvedArray[i]);\n if (current > maxNumber) {\n maxNumber = current;\n maxRecord = resolvedArray[i];\n }\n }\n return maxRecord;\n },\n\n _functionMinBy: function(resolvedArgs) {\n var exprefNode = resolvedArgs[1];\n var resolvedArray = resolvedArgs[0];\n var keyFunction = this.createKeyFunction(exprefNode, [TYPE_NUMBER, TYPE_STRING]);\n var minNumber = Infinity;\n var minRecord;\n var current;\n for (var i = 0; i < resolvedArray.length; i++) {\n current = keyFunction(resolvedArray[i]);\n if (current < minNumber) {\n minNumber = current;\n minRecord = resolvedArray[i];\n }\n }\n return minRecord;\n },\n\n createKeyFunction: function(exprefNode, allowedTypes) {\n var that = this;\n var interpreter = this._interpreter;\n var keyFunc = function(x) {\n var current = interpreter.visit(exprefNode, x);\n if (allowedTypes.indexOf(that._getTypeName(current)) < 0) {\n var msg = \"TypeError: expected one of \" + allowedTypes +\n \", received \" + that._getTypeName(current);\n throw new Error(msg);\n }\n return current;\n };\n return keyFunc;\n }\n\n };\n\n function compile(stream) {\n var parser = new Parser();\n var ast = parser.parse(stream);\n return ast;\n }\n\n function tokenize(stream) {\n var lexer = new Lexer();\n return lexer.tokenize(stream);\n }\n\n function search(data, expression) {\n var parser = new Parser();\n // This needs to be improved. Both the interpreter and runtime depend on\n // each other. The runtime needs the interpreter to support exprefs.\n // There's likely a clean way to avoid the cyclic dependency.\n var runtime = new Runtime();\n var interpreter = new TreeInterpreter(runtime);\n runtime._interpreter = interpreter;\n var node = parser.parse(expression);\n return interpreter.search(node, data);\n }\n\n exports.tokenize = tokenize;\n exports.compile = compile;\n exports.search = search;\n exports.strictDeepEqual = strictDeepEqual;\n})(typeof exports === \"undefined\" ? this.jmespath = {} : exports);\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['s3'] = {};\nAWS.S3 = Service.defineService('s3', ['2006-03-01']);\nrequire('../lib/services/s3');\nObject.defineProperty(apiLoader.services['s3'], '2006-03-01', {\n get: function get() {\n var model = require('../apis/s3-2006-03-01.min.json');\n model.paginators = require('../apis/s3-2006-03-01.paginators.json').pagination;\n model.waiters = require('../apis/s3-2006-03-01.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.S3;\n","'use strict';\nvar globalThis = require('../internals/global-this');\n\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\n\nmodule.exports = function (key, value) {\n try {\n defineProperty(globalThis, key, { value: value, configurable: true, writable: true });\n } catch (error) {\n globalThis[key] = value;\n } return value;\n};\n","'use strict'\n\nvar isObject = function isObject(val) {\n return val !== null && !Array.isArray(val) && typeof val === 'object'\n}\n\nvar codes = {\n // ----------------------------------------\n // By Code\n // ----------------------------------------\n 3: 'Cancel',\n 6: 'Help',\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 28: 'Convert',\n 29: 'NonConvert',\n 30: 'Accept',\n 31: 'ModeChange',\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 41: 'Select',\n 42: 'Print',\n 43: 'Execute',\n 44: 'PrintScreen',\n 45: 'Insert',\n 46: 'Delete',\n 48: ['0', ')'],\n 49: ['1', '!'],\n 50: ['2', '@'],\n 51: ['3', '#'],\n 52: ['4', '$'],\n 53: ['5', '%'],\n 54: ['6', '^'],\n 55: ['7', '&'],\n 56: ['8', '*'],\n 57: ['9', '('],\n 91: 'OS',\n 93: 'ContextMenu',\n 144: 'NumLock',\n 145: 'ScrollLock',\n 181: 'VolumeMute',\n 182: 'VolumeDown',\n 183: 'VolumeUp',\n 186: [';', ':'],\n 187: ['=', '+'],\n 188: [',', '<'],\n 189: ['-', '_'],\n 190: ['.', '>'],\n 191: ['/', '?'],\n 192: ['`', '~'],\n 219: ['[', '{'],\n 220: ['\\\\', '|'],\n 221: [']', '}'],\n 222: [\"'\", '\"'],\n 224: 'Meta',\n 225: 'AltGraph',\n 246: 'Attn',\n 247: 'CrSel',\n 248: 'ExSel',\n 249: 'EraseEof',\n 250: 'Play',\n 251: 'ZoomOut',\n}\n\n// Function Keys (F1-24)\nfor (var i = 0; i < 24; i += 1) {\n codes[112 + i] = 'F' + (i + 1)\n}\n\n// Alphabet (a-Z)\nfor (var j = 0; j < 26; j += 1) {\n var n = j + 65\n codes[n] = [String.fromCharCode(n + 32), String.fromCharCode(n)]\n}\n\nvar keyboardKey = {\n codes: codes,\n\n /**\n * Get the `keyCode` or `which` value from a keyboard event or `key` name.\n * @param {string|object} eventOrKey A keyboard event-like object or `key` name.\n * @param {string} [eventOrKey.key] If object, it must have one of these keys.\n * @param {number} [eventOrKey.keyCode] If object, it must have one of these keys.\n * @param {number} [eventOrKey.which] If object, it must have one of these keys.\n * @returns {number|undefined}\n */\n getCode: function getCode(eventOrKey) {\n if (isObject(eventOrKey)) {\n return eventOrKey.keyCode || eventOrKey.which || this[eventOrKey.key]\n }\n return this[eventOrKey]\n },\n\n /**\n * Get the key name from a keyboard event, `keyCode`, or `which` value.\n * @param {number|object} eventOrCode A keyboard event-like object or key code.\n * @param {string} [eventOrCode.key] If object with a `key` name, it will be returned.\n * @param {number} [eventOrCode.keyCode] If object, it must have one of these keys.\n * @param {number} [eventOrCode.which] If object, it must have one of these keys.\n * @param {boolean} [eventOrCode.shiftKey] If object, it must have one of these keys.\n * @returns {string|undefined}\n */\n getKey: function getKey(eventOrCode) {\n var isEvent = isObject(eventOrCode)\n\n // handle events with a `key` already defined\n if (isEvent && eventOrCode.key) {\n return eventOrCode.key\n }\n\n var name = codes[isEvent ? eventOrCode.keyCode || eventOrCode.which : eventOrCode]\n\n if (Array.isArray(name)) {\n if (isEvent) {\n name = name[eventOrCode.shiftKey ? 1 : 0]\n } else {\n name = name[0]\n }\n }\n\n return name\n },\n\n // ----------------------------------------\n // By Name\n // ----------------------------------------\n // declare these manually for static analysis\n Cancel: 3,\n Help: 6,\n Backspace: 8,\n Tab: 9,\n Clear: 12,\n Enter: 13,\n Shift: 16,\n Control: 17,\n Alt: 18,\n Pause: 19,\n CapsLock: 20,\n Escape: 27,\n Convert: 28,\n NonConvert: 29,\n Accept: 30,\n ModeChange: 31,\n ' ': 32,\n PageUp: 33,\n PageDown: 34,\n End: 35,\n Home: 36,\n ArrowLeft: 37,\n ArrowUp: 38,\n ArrowRight: 39,\n ArrowDown: 40,\n Select: 41,\n Print: 42,\n Execute: 43,\n PrintScreen: 44,\n Insert: 45,\n Delete: 46,\n 0: 48,\n ')': 48,\n 1: 49,\n '!': 49,\n 2: 50,\n '@': 50,\n 3: 51,\n '#': 51,\n 4: 52,\n $: 52,\n 5: 53,\n '%': 53,\n 6: 54,\n '^': 54,\n 7: 55,\n '&': 55,\n 8: 56,\n '*': 56,\n 9: 57,\n '(': 57,\n a: 65,\n A: 65,\n b: 66,\n B: 66,\n c: 67,\n C: 67,\n d: 68,\n D: 68,\n e: 69,\n E: 69,\n f: 70,\n F: 70,\n g: 71,\n G: 71,\n h: 72,\n H: 72,\n i: 73,\n I: 73,\n j: 74,\n J: 74,\n k: 75,\n K: 75,\n l: 76,\n L: 76,\n m: 77,\n M: 77,\n n: 78,\n N: 78,\n o: 79,\n O: 79,\n p: 80,\n P: 80,\n q: 81,\n Q: 81,\n r: 82,\n R: 82,\n s: 83,\n S: 83,\n t: 84,\n T: 84,\n u: 85,\n U: 85,\n v: 86,\n V: 86,\n w: 87,\n W: 87,\n x: 88,\n X: 88,\n y: 89,\n Y: 89,\n z: 90,\n Z: 90,\n OS: 91,\n ContextMenu: 93,\n F1: 112,\n F2: 113,\n F3: 114,\n F4: 115,\n F5: 116,\n F6: 117,\n F7: 118,\n F8: 119,\n F9: 120,\n F10: 121,\n F11: 122,\n F12: 123,\n F13: 124,\n F14: 125,\n F15: 126,\n F16: 127,\n F17: 128,\n F18: 129,\n F19: 130,\n F20: 131,\n F21: 132,\n F22: 133,\n F23: 134,\n F24: 135,\n NumLock: 144,\n ScrollLock: 145,\n VolumeMute: 181,\n VolumeDown: 182,\n VolumeUp: 183,\n ';': 186,\n ':': 186,\n '=': 187,\n '+': 187,\n ',': 188,\n '<': 188,\n '-': 189,\n _: 189,\n '.': 190,\n '>': 190,\n '/': 191,\n '?': 191,\n '`': 192,\n '~': 192,\n '[': 219,\n '{': 219,\n '\\\\': 220,\n '|': 220,\n ']': 221,\n '}': 221,\n \"'\": 222,\n '\"': 222,\n Meta: 224,\n AltGraph: 225,\n Attn: 246,\n CrSel: 247,\n ExSel: 248,\n EraseEof: 249,\n Play: 250,\n ZoomOut: 251,\n}\n\n// ----------------------------------------\n// By Alias\n// ----------------------------------------\n// provide dot-notation accessible keys for all key names\nkeyboardKey.Spacebar = keyboardKey[' ']\nkeyboardKey.Digit0 = keyboardKey['0']\nkeyboardKey.Digit1 = keyboardKey['1']\nkeyboardKey.Digit2 = keyboardKey['2']\nkeyboardKey.Digit3 = keyboardKey['3']\nkeyboardKey.Digit4 = keyboardKey['4']\nkeyboardKey.Digit5 = keyboardKey['5']\nkeyboardKey.Digit6 = keyboardKey['6']\nkeyboardKey.Digit7 = keyboardKey['7']\nkeyboardKey.Digit8 = keyboardKey['8']\nkeyboardKey.Digit9 = keyboardKey['9']\nkeyboardKey.Tilde = keyboardKey['~']\nkeyboardKey.GraveAccent = keyboardKey['`']\nkeyboardKey.ExclamationPoint = keyboardKey['!']\nkeyboardKey.AtSign = keyboardKey['@']\nkeyboardKey.PoundSign = keyboardKey['#']\nkeyboardKey.PercentSign = keyboardKey['%']\nkeyboardKey.Caret = keyboardKey['^']\nkeyboardKey.Ampersand = keyboardKey['&']\nkeyboardKey.PlusSign = keyboardKey['+']\nkeyboardKey.MinusSign = keyboardKey['-']\nkeyboardKey.EqualsSign = keyboardKey['=']\nkeyboardKey.DivisionSign = keyboardKey['/']\nkeyboardKey.MultiplicationSign = keyboardKey['*']\nkeyboardKey.Comma = keyboardKey[',']\nkeyboardKey.Decimal = keyboardKey['.']\nkeyboardKey.Colon = keyboardKey[':']\nkeyboardKey.Semicolon = keyboardKey[';']\nkeyboardKey.Pipe = keyboardKey['|']\nkeyboardKey.BackSlash = keyboardKey['\\\\']\nkeyboardKey.QuestionMark = keyboardKey['?']\nkeyboardKey.SingleQuote = keyboardKey[\"'\"]\nkeyboardKey.DoubleQuote = keyboardKey['\"']\nkeyboardKey.LeftCurlyBrace = keyboardKey['{']\nkeyboardKey.RightCurlyBrace = keyboardKey['}']\nkeyboardKey.LeftParenthesis = keyboardKey['(']\nkeyboardKey.RightParenthesis = keyboardKey[')']\nkeyboardKey.LeftAngleBracket = keyboardKey['<']\nkeyboardKey.RightAngleBracket = keyboardKey['>']\nkeyboardKey.LeftSquareBracket = keyboardKey['[']\nkeyboardKey.RightSquareBracket = keyboardKey[']']\n\nmodule.exports = keyboardKey\n","'use strict';\n\nvar createError = require('./createError');\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n */\nmodule.exports = function settle(resolve, reject, response) {\n var validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(createError(\n 'Request failed with status code ' + response.status,\n response.config,\n null,\n response.request,\n response\n ));\n }\n};\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['athena'] = {};\nAWS.Athena = Service.defineService('athena', ['2017-05-18']);\nObject.defineProperty(apiLoader.services['athena'], '2017-05-18', {\n get: function get() {\n var model = require('../apis/athena-2017-05-18.min.json');\n model.paginators = require('../apis/athena-2017-05-18.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.Athena;\n","\"use strict\";\nmodule.exports = Reader;\n\nvar util = require(\"./util/minimal\");\n\nvar BufferReader; // cyclic\n\nvar LongBits = util.LongBits,\n utf8 = util.utf8;\n\n/* istanbul ignore next */\nfunction indexOutOfRange(reader, writeLength) {\n return RangeError(\"index out of range: \" + reader.pos + \" + \" + (writeLength || 1) + \" > \" + reader.len);\n}\n\n/**\n * Constructs a new reader instance using the specified buffer.\n * @classdesc Wire format reader using `Uint8Array` if available, otherwise `Array`.\n * @constructor\n * @param {Uint8Array} buffer Buffer to read from\n */\nfunction Reader(buffer) {\n\n /**\n * Read buffer.\n * @type {Uint8Array}\n */\n this.buf = buffer;\n\n /**\n * Read buffer position.\n * @type {number}\n */\n this.pos = 0;\n\n /**\n * Read buffer length.\n * @type {number}\n */\n this.len = buffer.length;\n}\n\nvar create_array = typeof Uint8Array !== \"undefined\"\n ? function create_typed_array(buffer) {\n if (buffer instanceof Uint8Array || Array.isArray(buffer))\n return new Reader(buffer);\n throw Error(\"illegal buffer\");\n }\n /* istanbul ignore next */\n : function create_array(buffer) {\n if (Array.isArray(buffer))\n return new Reader(buffer);\n throw Error(\"illegal buffer\");\n };\n\nvar create = function create() {\n return util.Buffer\n ? function create_buffer_setup(buffer) {\n return (Reader.create = function create_buffer(buffer) {\n return util.Buffer.isBuffer(buffer)\n ? new BufferReader(buffer)\n /* istanbul ignore next */\n : create_array(buffer);\n })(buffer);\n }\n /* istanbul ignore next */\n : create_array;\n};\n\n/**\n * Creates a new reader using the specified buffer.\n * @function\n * @param {Uint8Array|Buffer} buffer Buffer to read from\n * @returns {Reader|BufferReader} A {@link BufferReader} if `buffer` is a Buffer, otherwise a {@link Reader}\n * @throws {Error} If `buffer` is not a valid buffer\n */\nReader.create = create();\n\nReader.prototype._slice = util.Array.prototype.subarray || /* istanbul ignore next */ util.Array.prototype.slice;\n\n/**\n * Reads a varint as an unsigned 32 bit value.\n * @function\n * @returns {number} Value read\n */\nReader.prototype.uint32 = (function read_uint32_setup() {\n var value = 4294967295; // optimizer type-hint, tends to deopt otherwise (?!)\n return function read_uint32() {\n value = ( this.buf[this.pos] & 127 ) >>> 0; if (this.buf[this.pos++] < 128) return value;\n value = (value | (this.buf[this.pos] & 127) << 7) >>> 0; if (this.buf[this.pos++] < 128) return value;\n value = (value | (this.buf[this.pos] & 127) << 14) >>> 0; if (this.buf[this.pos++] < 128) return value;\n value = (value | (this.buf[this.pos] & 127) << 21) >>> 0; if (this.buf[this.pos++] < 128) return value;\n value = (value | (this.buf[this.pos] & 15) << 28) >>> 0; if (this.buf[this.pos++] < 128) return value;\n\n /* istanbul ignore if */\n if ((this.pos += 5) > this.len) {\n this.pos = this.len;\n throw indexOutOfRange(this, 10);\n }\n return value;\n };\n})();\n\n/**\n * Reads a varint as a signed 32 bit value.\n * @returns {number} Value read\n */\nReader.prototype.int32 = function read_int32() {\n return this.uint32() | 0;\n};\n\n/**\n * Reads a zig-zag encoded varint as a signed 32 bit value.\n * @returns {number} Value read\n */\nReader.prototype.sint32 = function read_sint32() {\n var value = this.uint32();\n return value >>> 1 ^ -(value & 1) | 0;\n};\n\n/* eslint-disable no-invalid-this */\n\nfunction readLongVarint() {\n // tends to deopt with local vars for octet etc.\n var bits = new LongBits(0, 0);\n var i = 0;\n if (this.len - this.pos > 4) { // fast route (lo)\n for (; i < 4; ++i) {\n // 1st..4th\n bits.lo = (bits.lo | (this.buf[this.pos] & 127) << i * 7) >>> 0;\n if (this.buf[this.pos++] < 128)\n return bits;\n }\n // 5th\n bits.lo = (bits.lo | (this.buf[this.pos] & 127) << 28) >>> 0;\n bits.hi = (bits.hi | (this.buf[this.pos] & 127) >> 4) >>> 0;\n if (this.buf[this.pos++] < 128)\n return bits;\n i = 0;\n } else {\n for (; i < 3; ++i) {\n /* istanbul ignore if */\n if (this.pos >= this.len)\n throw indexOutOfRange(this);\n // 1st..3th\n bits.lo = (bits.lo | (this.buf[this.pos] & 127) << i * 7) >>> 0;\n if (this.buf[this.pos++] < 128)\n return bits;\n }\n // 4th\n bits.lo = (bits.lo | (this.buf[this.pos++] & 127) << i * 7) >>> 0;\n return bits;\n }\n if (this.len - this.pos > 4) { // fast route (hi)\n for (; i < 5; ++i) {\n // 6th..10th\n bits.hi = (bits.hi | (this.buf[this.pos] & 127) << i * 7 + 3) >>> 0;\n if (this.buf[this.pos++] < 128)\n return bits;\n }\n } else {\n for (; i < 5; ++i) {\n /* istanbul ignore if */\n if (this.pos >= this.len)\n throw indexOutOfRange(this);\n // 6th..10th\n bits.hi = (bits.hi | (this.buf[this.pos] & 127) << i * 7 + 3) >>> 0;\n if (this.buf[this.pos++] < 128)\n return bits;\n }\n }\n /* istanbul ignore next */\n throw Error(\"invalid varint encoding\");\n}\n\n/* eslint-enable no-invalid-this */\n\n/**\n * Reads a varint as a signed 64 bit value.\n * @name Reader#int64\n * @function\n * @returns {Long} Value read\n */\n\n/**\n * Reads a varint as an unsigned 64 bit value.\n * @name Reader#uint64\n * @function\n * @returns {Long} Value read\n */\n\n/**\n * Reads a zig-zag encoded varint as a signed 64 bit value.\n * @name Reader#sint64\n * @function\n * @returns {Long} Value read\n */\n\n/**\n * Reads a varint as a boolean.\n * @returns {boolean} Value read\n */\nReader.prototype.bool = function read_bool() {\n return this.uint32() !== 0;\n};\n\nfunction readFixed32_end(buf, end) { // note that this uses `end`, not `pos`\n return (buf[end - 4]\n | buf[end - 3] << 8\n | buf[end - 2] << 16\n | buf[end - 1] << 24) >>> 0;\n}\n\n/**\n * Reads fixed 32 bits as an unsigned 32 bit integer.\n * @returns {number} Value read\n */\nReader.prototype.fixed32 = function read_fixed32() {\n\n /* istanbul ignore if */\n if (this.pos + 4 > this.len)\n throw indexOutOfRange(this, 4);\n\n return readFixed32_end(this.buf, this.pos += 4);\n};\n\n/**\n * Reads fixed 32 bits as a signed 32 bit integer.\n * @returns {number} Value read\n */\nReader.prototype.sfixed32 = function read_sfixed32() {\n\n /* istanbul ignore if */\n if (this.pos + 4 > this.len)\n throw indexOutOfRange(this, 4);\n\n return readFixed32_end(this.buf, this.pos += 4) | 0;\n};\n\n/* eslint-disable no-invalid-this */\n\nfunction readFixed64(/* this: Reader */) {\n\n /* istanbul ignore if */\n if (this.pos + 8 > this.len)\n throw indexOutOfRange(this, 8);\n\n return new LongBits(readFixed32_end(this.buf, this.pos += 4), readFixed32_end(this.buf, this.pos += 4));\n}\n\n/* eslint-enable no-invalid-this */\n\n/**\n * Reads fixed 64 bits.\n * @name Reader#fixed64\n * @function\n * @returns {Long} Value read\n */\n\n/**\n * Reads zig-zag encoded fixed 64 bits.\n * @name Reader#sfixed64\n * @function\n * @returns {Long} Value read\n */\n\n/**\n * Reads a float (32 bit) as a number.\n * @function\n * @returns {number} Value read\n */\nReader.prototype.float = function read_float() {\n\n /* istanbul ignore if */\n if (this.pos + 4 > this.len)\n throw indexOutOfRange(this, 4);\n\n var value = util.float.readFloatLE(this.buf, this.pos);\n this.pos += 4;\n return value;\n};\n\n/**\n * Reads a double (64 bit float) as a number.\n * @function\n * @returns {number} Value read\n */\nReader.prototype.double = function read_double() {\n\n /* istanbul ignore if */\n if (this.pos + 8 > this.len)\n throw indexOutOfRange(this, 4);\n\n var value = util.float.readDoubleLE(this.buf, this.pos);\n this.pos += 8;\n return value;\n};\n\n/**\n * Reads a sequence of bytes preceeded by its length as a varint.\n * @returns {Uint8Array} Value read\n */\nReader.prototype.bytes = function read_bytes() {\n var length = this.uint32(),\n start = this.pos,\n end = this.pos + length;\n\n /* istanbul ignore if */\n if (end > this.len)\n throw indexOutOfRange(this, length);\n\n this.pos += length;\n if (Array.isArray(this.buf)) // plain array\n return this.buf.slice(start, end);\n\n if (start === end) { // fix for IE 10/Win8 and others' subarray returning array of size 1\n var nativeBuffer = util.Buffer;\n return nativeBuffer\n ? nativeBuffer.alloc(0)\n : new this.buf.constructor(0);\n }\n return this._slice.call(this.buf, start, end);\n};\n\n/**\n * Reads a string preceeded by its byte length as a varint.\n * @returns {string} Value read\n */\nReader.prototype.string = function read_string() {\n var bytes = this.bytes();\n return utf8.read(bytes, 0, bytes.length);\n};\n\n/**\n * Skips the specified number of bytes if specified, otherwise skips a varint.\n * @param {number} [length] Length if known, otherwise a varint is assumed\n * @returns {Reader} `this`\n */\nReader.prototype.skip = function skip(length) {\n if (typeof length === \"number\") {\n /* istanbul ignore if */\n if (this.pos + length > this.len)\n throw indexOutOfRange(this, length);\n this.pos += length;\n } else {\n do {\n /* istanbul ignore if */\n if (this.pos >= this.len)\n throw indexOutOfRange(this);\n } while (this.buf[this.pos++] & 128);\n }\n return this;\n};\n\n/**\n * Skips the next element of the specified wire type.\n * @param {number} wireType Wire type received\n * @returns {Reader} `this`\n */\nReader.prototype.skipType = function(wireType) {\n switch (wireType) {\n case 0:\n this.skip();\n break;\n case 1:\n this.skip(8);\n break;\n case 2:\n this.skip(this.uint32());\n break;\n case 3:\n while ((wireType = this.uint32() & 7) !== 4) {\n this.skipType(wireType);\n }\n break;\n case 5:\n this.skip(4);\n break;\n\n /* istanbul ignore next */\n default:\n throw Error(\"invalid wire type \" + wireType + \" at offset \" + this.pos);\n }\n return this;\n};\n\nReader._configure = function(BufferReader_) {\n BufferReader = BufferReader_;\n Reader.create = create();\n BufferReader._configure();\n\n var fn = util.Long ? \"toLong\" : /* istanbul ignore next */ \"toNumber\";\n util.merge(Reader.prototype, {\n\n int64: function read_int64() {\n return readLongVarint.call(this)[fn](false);\n },\n\n uint64: function read_uint64() {\n return readLongVarint.call(this)[fn](true);\n },\n\n sint64: function read_sint64() {\n return readLongVarint.call(this).zzDecode()[fn](false);\n },\n\n fixed64: function read_fixed64() {\n return readFixed64.call(this)[fn](true);\n },\n\n sfixed64: function read_sfixed64() {\n return readFixed64.call(this)[fn](false);\n }\n\n });\n};\n","var AWS = require('./core');\nvar AcceptorStateMachine = require('./state_machine');\nvar inherit = AWS.util.inherit;\nvar domain = AWS.util.domain;\nvar jmespath = require('jmespath');\n\n/**\n * @api private\n */\nvar hardErrorStates = {success: 1, error: 1, complete: 1};\n\nfunction isTerminalState(machine) {\n return Object.prototype.hasOwnProperty.call(hardErrorStates, machine._asm.currentState);\n}\n\nvar fsm = new AcceptorStateMachine();\nfsm.setupStates = function() {\n var transition = function(_, done) {\n var self = this;\n self._haltHandlersOnError = false;\n\n self.emit(self._asm.currentState, function(err) {\n if (err) {\n if (isTerminalState(self)) {\n if (domain && self.domain instanceof domain.Domain) {\n err.domainEmitter = self;\n err.domain = self.domain;\n err.domainThrown = false;\n self.domain.emit('error', err);\n } else {\n throw err;\n }\n } else {\n self.response.error = err;\n done(err);\n }\n } else {\n done(self.response.error);\n }\n });\n\n };\n\n this.addState('validate', 'build', 'error', transition);\n this.addState('build', 'afterBuild', 'restart', transition);\n this.addState('afterBuild', 'sign', 'restart', transition);\n this.addState('sign', 'send', 'retry', transition);\n this.addState('retry', 'afterRetry', 'afterRetry', transition);\n this.addState('afterRetry', 'sign', 'error', transition);\n this.addState('send', 'validateResponse', 'retry', transition);\n this.addState('validateResponse', 'extractData', 'extractError', transition);\n this.addState('extractError', 'extractData', 'retry', transition);\n this.addState('extractData', 'success', 'retry', transition);\n this.addState('restart', 'build', 'error', transition);\n this.addState('success', 'complete', 'complete', transition);\n this.addState('error', 'complete', 'complete', transition);\n this.addState('complete', null, null, transition);\n};\nfsm.setupStates();\n\n/**\n * ## Asynchronous Requests\n *\n * All requests made through the SDK are asynchronous and use a\n * callback interface. Each service method that kicks off a request\n * returns an `AWS.Request` object that you can use to register\n * callbacks.\n *\n * For example, the following service method returns the request\n * object as \"request\", which can be used to register callbacks:\n *\n * ```javascript\n * // request is an AWS.Request object\n * var request = ec2.describeInstances();\n *\n * // register callbacks on request to retrieve response data\n * request.on('success', function(response) {\n * console.log(response.data);\n * });\n * ```\n *\n * When a request is ready to be sent, the {send} method should\n * be called:\n *\n * ```javascript\n * request.send();\n * ```\n *\n * Since registered callbacks may or may not be idempotent, requests should only\n * be sent once. To perform the same operation multiple times, you will need to\n * create multiple request objects, each with its own registered callbacks.\n *\n * ## Removing Default Listeners for Events\n *\n * Request objects are built with default listeners for the various events,\n * depending on the service type. In some cases, you may want to remove\n * some built-in listeners to customize behaviour. Doing this requires\n * access to the built-in listener functions, which are exposed through\n * the {AWS.EventListeners.Core} namespace. For instance, you may\n * want to customize the HTTP handler used when sending a request. In this\n * case, you can remove the built-in listener associated with the 'send'\n * event, the {AWS.EventListeners.Core.SEND} listener and add your own.\n *\n * ## Multiple Callbacks and Chaining\n *\n * You can register multiple callbacks on any request object. The\n * callbacks can be registered for different events, or all for the\n * same event. In addition, you can chain callback registration, for\n * example:\n *\n * ```javascript\n * request.\n * on('success', function(response) {\n * console.log(\"Success!\");\n * }).\n * on('error', function(error, response) {\n * console.log(\"Error!\");\n * }).\n * on('complete', function(response) {\n * console.log(\"Always!\");\n * }).\n * send();\n * ```\n *\n * The above example will print either \"Success! Always!\", or \"Error! Always!\",\n * depending on whether the request succeeded or not.\n *\n * @!attribute httpRequest\n * @readonly\n * @!group HTTP Properties\n * @return [AWS.HttpRequest] the raw HTTP request object\n * containing request headers and body information\n * sent by the service.\n *\n * @!attribute startTime\n * @readonly\n * @!group Operation Properties\n * @return [Date] the time that the request started\n *\n * @!group Request Building Events\n *\n * @!event validate(request)\n * Triggered when a request is being validated. Listeners\n * should throw an error if the request should not be sent.\n * @param request [Request] the request object being sent\n * @see AWS.EventListeners.Core.VALIDATE_CREDENTIALS\n * @see AWS.EventListeners.Core.VALIDATE_REGION\n * @example Ensuring that a certain parameter is set before sending a request\n * var req = s3.putObject(params);\n * req.on('validate', function() {\n * if (!req.params.Body.match(/^Hello\\s/)) {\n * throw new Error('Body must start with \"Hello \"');\n * }\n * });\n * req.send(function(err, data) { ... });\n *\n * @!event build(request)\n * Triggered when the request payload is being built. Listeners\n * should fill the necessary information to send the request\n * over HTTP.\n * @param (see AWS.Request~validate)\n * @example Add a custom HTTP header to a request\n * var req = s3.putObject(params);\n * req.on('build', function() {\n * req.httpRequest.headers['Custom-Header'] = 'value';\n * });\n * req.send(function(err, data) { ... });\n *\n * @!event sign(request)\n * Triggered when the request is being signed. Listeners should\n * add the correct authentication headers and/or adjust the body,\n * depending on the authentication mechanism being used.\n * @param (see AWS.Request~validate)\n *\n * @!group Request Sending Events\n *\n * @!event send(response)\n * Triggered when the request is ready to be sent. Listeners\n * should call the underlying transport layer to initiate\n * the sending of the request.\n * @param response [Response] the response object\n * @context [Request] the request object that was sent\n * @see AWS.EventListeners.Core.SEND\n *\n * @!event retry(response)\n * Triggered when a request failed and might need to be retried or redirected.\n * If the response is retryable, the listener should set the\n * `response.error.retryable` property to `true`, and optionally set\n * `response.error.retryDelay` to the millisecond delay for the next attempt.\n * In the case of a redirect, `response.error.redirect` should be set to\n * `true` with `retryDelay` set to an optional delay on the next request.\n *\n * If a listener decides that a request should not be retried,\n * it should set both `retryable` and `redirect` to false.\n *\n * Note that a retryable error will be retried at most\n * {AWS.Config.maxRetries} times (based on the service object's config).\n * Similarly, a request that is redirected will only redirect at most\n * {AWS.Config.maxRedirects} times.\n *\n * @param (see AWS.Request~send)\n * @context (see AWS.Request~send)\n * @example Adding a custom retry for a 404 response\n * request.on('retry', function(response) {\n * // this resource is not yet available, wait 10 seconds to get it again\n * if (response.httpResponse.statusCode === 404 && response.error) {\n * response.error.retryable = true; // retry this error\n * response.error.retryDelay = 10000; // wait 10 seconds\n * }\n * });\n *\n * @!group Data Parsing Events\n *\n * @!event extractError(response)\n * Triggered on all non-2xx requests so that listeners can extract\n * error details from the response body. Listeners to this event\n * should set the `response.error` property.\n * @param (see AWS.Request~send)\n * @context (see AWS.Request~send)\n *\n * @!event extractData(response)\n * Triggered in successful requests to allow listeners to\n * de-serialize the response body into `response.data`.\n * @param (see AWS.Request~send)\n * @context (see AWS.Request~send)\n *\n * @!group Completion Events\n *\n * @!event success(response)\n * Triggered when the request completed successfully.\n * `response.data` will contain the response data and\n * `response.error` will be null.\n * @param (see AWS.Request~send)\n * @context (see AWS.Request~send)\n *\n * @!event error(error, response)\n * Triggered when an error occurs at any point during the\n * request. `response.error` will contain details about the error\n * that occurred. `response.data` will be null.\n * @param error [Error] the error object containing details about\n * the error that occurred.\n * @param (see AWS.Request~send)\n * @context (see AWS.Request~send)\n *\n * @!event complete(response)\n * Triggered whenever a request cycle completes. `response.error`\n * should be checked, since the request may have failed.\n * @param (see AWS.Request~send)\n * @context (see AWS.Request~send)\n *\n * @!group HTTP Events\n *\n * @!event httpHeaders(statusCode, headers, response, statusMessage)\n * Triggered when headers are sent by the remote server\n * @param statusCode [Integer] the HTTP response code\n * @param headers [map] the response headers\n * @param (see AWS.Request~send)\n * @param statusMessage [String] A status message corresponding to the HTTP\n * response code\n * @context (see AWS.Request~send)\n *\n * @!event httpData(chunk, response)\n * Triggered when data is sent by the remote server\n * @param chunk [Buffer] the buffer data containing the next data chunk\n * from the server\n * @param (see AWS.Request~send)\n * @context (see AWS.Request~send)\n * @see AWS.EventListeners.Core.HTTP_DATA\n *\n * @!event httpUploadProgress(progress, response)\n * Triggered when the HTTP request has uploaded more data\n * @param progress [map] An object containing the `loaded` and `total` bytes\n * of the request.\n * @param (see AWS.Request~send)\n * @context (see AWS.Request~send)\n * @note This event will not be emitted in Node.js 0.8.x.\n *\n * @!event httpDownloadProgress(progress, response)\n * Triggered when the HTTP request has downloaded more data\n * @param progress [map] An object containing the `loaded` and `total` bytes\n * of the request.\n * @param (see AWS.Request~send)\n * @context (see AWS.Request~send)\n * @note This event will not be emitted in Node.js 0.8.x.\n *\n * @!event httpError(error, response)\n * Triggered when the HTTP request failed\n * @param error [Error] the error object that was thrown\n * @param (see AWS.Request~send)\n * @context (see AWS.Request~send)\n *\n * @!event httpDone(response)\n * Triggered when the server is finished sending data\n * @param (see AWS.Request~send)\n * @context (see AWS.Request~send)\n *\n * @see AWS.Response\n */\nAWS.Request = inherit({\n\n /**\n * Creates a request for an operation on a given service with\n * a set of input parameters.\n *\n * @param service [AWS.Service] the service to perform the operation on\n * @param operation [String] the operation to perform on the service\n * @param params [Object] parameters to send to the operation.\n * See the operation's documentation for the format of the\n * parameters.\n */\n constructor: function Request(service, operation, params) {\n var endpoint = service.endpoint;\n var region = service.config.region;\n var customUserAgent = service.config.customUserAgent;\n\n if (service.signingRegion) {\n region = service.signingRegion;\n } else if (service.isGlobalEndpoint) {\n region = 'us-east-1';\n }\n\n this.domain = domain && domain.active;\n this.service = service;\n this.operation = operation;\n this.params = params || {};\n this.httpRequest = new AWS.HttpRequest(endpoint, region);\n this.httpRequest.appendToUserAgent(customUserAgent);\n this.startTime = service.getSkewCorrectedDate();\n\n this.response = new AWS.Response(this);\n this._asm = new AcceptorStateMachine(fsm.states, 'validate');\n this._haltHandlersOnError = false;\n\n AWS.SequentialExecutor.call(this);\n this.emit = this.emitEvent;\n },\n\n /**\n * @!group Sending a Request\n */\n\n /**\n * @overload send(callback = null)\n * Sends the request object.\n *\n * @callback callback function(err, data)\n * If a callback is supplied, it is called when a response is returned\n * from the service.\n * @context [AWS.Request] the request object being sent.\n * @param err [Error] the error object returned from the request.\n * Set to `null` if the request is successful.\n * @param data [Object] the de-serialized data returned from\n * the request. Set to `null` if a request error occurs.\n * @example Sending a request with a callback\n * request = s3.putObject({Bucket: 'bucket', Key: 'key'});\n * request.send(function(err, data) { console.log(err, data); });\n * @example Sending a request with no callback (using event handlers)\n * request = s3.putObject({Bucket: 'bucket', Key: 'key'});\n * request.on('complete', function(response) { ... }); // register a callback\n * request.send();\n */\n send: function send(callback) {\n if (callback) {\n // append to user agent\n this.httpRequest.appendToUserAgent('callback');\n this.on('complete', function (resp) {\n callback.call(resp, resp.error, resp.data);\n });\n }\n this.runTo();\n\n return this.response;\n },\n\n /**\n * @!method promise()\n * Sends the request and returns a 'thenable' promise.\n *\n * Two callbacks can be provided to the `then` method on the returned promise.\n * The first callback will be called if the promise is fulfilled, and the second\n * callback will be called if the promise is rejected.\n * @callback fulfilledCallback function(data)\n * Called if the promise is fulfilled.\n * @param data [Object] the de-serialized data returned from the request.\n * @callback rejectedCallback function(error)\n * Called if the promise is rejected.\n * @param error [Error] the error object returned from the request.\n * @return [Promise] A promise that represents the state of the request.\n * @example Sending a request using promises.\n * var request = s3.putObject({Bucket: 'bucket', Key: 'key'});\n * var result = request.promise();\n * result.then(function(data) { ... }, function(error) { ... });\n */\n\n /**\n * @api private\n */\n build: function build(callback) {\n return this.runTo('send', callback);\n },\n\n /**\n * @api private\n */\n runTo: function runTo(state, done) {\n this._asm.runTo(state, done, this);\n return this;\n },\n\n /**\n * Aborts a request, emitting the error and complete events.\n *\n * @!macro nobrowser\n * @example Aborting a request after sending\n * var params = {\n * Bucket: 'bucket', Key: 'key',\n * Body: Buffer.alloc(1024 * 1024 * 5) // 5MB payload\n * };\n * var request = s3.putObject(params);\n * request.send(function (err, data) {\n * if (err) console.log(\"Error:\", err.code, err.message);\n * else console.log(data);\n * });\n *\n * // abort request in 1 second\n * setTimeout(request.abort.bind(request), 1000);\n *\n * // prints \"Error: RequestAbortedError Request aborted by user\"\n * @return [AWS.Request] the same request object, for chaining.\n * @since v1.4.0\n */\n abort: function abort() {\n this.removeAllListeners('validateResponse');\n this.removeAllListeners('extractError');\n this.on('validateResponse', function addAbortedError(resp) {\n resp.error = AWS.util.error(new Error('Request aborted by user'), {\n code: 'RequestAbortedError', retryable: false\n });\n });\n\n if (this.httpRequest.stream && !this.httpRequest.stream.didCallback) { // abort HTTP stream\n this.httpRequest.stream.abort();\n if (this.httpRequest._abortCallback) {\n this.httpRequest._abortCallback();\n } else {\n this.removeAllListeners('send'); // haven't sent yet, so let's not\n }\n }\n\n return this;\n },\n\n /**\n * Iterates over each page of results given a pageable request, calling\n * the provided callback with each page of data. After all pages have been\n * retrieved, the callback is called with `null` data.\n *\n * @note This operation can generate multiple requests to a service.\n * @example Iterating over multiple pages of objects in an S3 bucket\n * var pages = 1;\n * s3.listObjects().eachPage(function(err, data) {\n * if (err) return;\n * console.log(\"Page\", pages++);\n * console.log(data);\n * });\n * @example Iterating over multiple pages with an asynchronous callback\n * s3.listObjects(params).eachPage(function(err, data, done) {\n * doSomethingAsyncAndOrExpensive(function() {\n * // The next page of results isn't fetched until done is called\n * done();\n * });\n * });\n * @callback callback function(err, data, [doneCallback])\n * Called with each page of resulting data from the request. If the\n * optional `doneCallback` is provided in the function, it must be called\n * when the callback is complete.\n *\n * @param err [Error] an error object, if an error occurred.\n * @param data [Object] a single page of response data. If there is no\n * more data, this object will be `null`.\n * @param doneCallback [Function] an optional done callback. If this\n * argument is defined in the function declaration, it should be called\n * when the next page is ready to be retrieved. This is useful for\n * controlling serial pagination across asynchronous operations.\n * @return [Boolean] if the callback returns `false`, pagination will\n * stop.\n *\n * @see AWS.Request.eachItem\n * @see AWS.Response.nextPage\n * @since v1.4.0\n */\n eachPage: function eachPage(callback) {\n // Make all callbacks async-ish\n callback = AWS.util.fn.makeAsync(callback, 3);\n\n function wrappedCallback(response) {\n callback.call(response, response.error, response.data, function (result) {\n if (result === false) return;\n\n if (response.hasNextPage()) {\n response.nextPage().on('complete', wrappedCallback).send();\n } else {\n callback.call(response, null, null, AWS.util.fn.noop);\n }\n });\n }\n\n this.on('complete', wrappedCallback).send();\n },\n\n /**\n * Enumerates over individual items of a request, paging the responses if\n * necessary.\n *\n * @api experimental\n * @since v1.4.0\n */\n eachItem: function eachItem(callback) {\n var self = this;\n function wrappedCallback(err, data) {\n if (err) return callback(err, null);\n if (data === null) return callback(null, null);\n\n var config = self.service.paginationConfig(self.operation);\n var resultKey = config.resultKey;\n if (Array.isArray(resultKey)) resultKey = resultKey[0];\n var items = jmespath.search(data, resultKey);\n var continueIteration = true;\n AWS.util.arrayEach(items, function(item) {\n continueIteration = callback(null, item);\n if (continueIteration === false) {\n return AWS.util.abort;\n }\n });\n return continueIteration;\n }\n\n this.eachPage(wrappedCallback);\n },\n\n /**\n * @return [Boolean] whether the operation can return multiple pages of\n * response data.\n * @see AWS.Response.eachPage\n * @since v1.4.0\n */\n isPageable: function isPageable() {\n return this.service.paginationConfig(this.operation) ? true : false;\n },\n\n /**\n * Sends the request and converts the request object into a readable stream\n * that can be read from or piped into a writable stream.\n *\n * @note The data read from a readable stream contains only\n * the raw HTTP body contents.\n * @example Manually reading from a stream\n * request.createReadStream().on('data', function(data) {\n * console.log(\"Got data:\", data.toString());\n * });\n * @example Piping a request body into a file\n * var out = fs.createWriteStream('/path/to/outfile.jpg');\n * s3.service.getObject(params).createReadStream().pipe(out);\n * @return [Stream] the readable stream object that can be piped\n * or read from (by registering 'data' event listeners).\n * @!macro nobrowser\n */\n createReadStream: function createReadStream() {\n var streams = AWS.util.stream;\n var req = this;\n var stream = null;\n\n if (AWS.HttpClient.streamsApiVersion === 2) {\n stream = new streams.PassThrough();\n process.nextTick(function() { req.send(); });\n } else {\n stream = new streams.Stream();\n stream.readable = true;\n\n stream.sent = false;\n stream.on('newListener', function(event) {\n if (!stream.sent && event === 'data') {\n stream.sent = true;\n process.nextTick(function() { req.send(); });\n }\n });\n }\n\n this.on('error', function(err) {\n stream.emit('error', err);\n });\n\n this.on('httpHeaders', function streamHeaders(statusCode, headers, resp) {\n if (statusCode < 300) {\n req.removeListener('httpData', AWS.EventListeners.Core.HTTP_DATA);\n req.removeListener('httpError', AWS.EventListeners.Core.HTTP_ERROR);\n req.on('httpError', function streamHttpError(error) {\n resp.error = error;\n resp.error.retryable = false;\n });\n\n var shouldCheckContentLength = false;\n var expectedLen;\n if (req.httpRequest.method !== 'HEAD') {\n expectedLen = parseInt(headers['content-length'], 10);\n }\n if (expectedLen !== undefined && !isNaN(expectedLen) && expectedLen >= 0) {\n shouldCheckContentLength = true;\n var receivedLen = 0;\n }\n\n var checkContentLengthAndEmit = function checkContentLengthAndEmit() {\n if (shouldCheckContentLength && receivedLen !== expectedLen) {\n stream.emit('error', AWS.util.error(\n new Error('Stream content length mismatch. Received ' +\n receivedLen + ' of ' + expectedLen + ' bytes.'),\n { code: 'StreamContentLengthMismatch' }\n ));\n } else if (AWS.HttpClient.streamsApiVersion === 2) {\n stream.end();\n } else {\n stream.emit('end');\n }\n };\n\n var httpStream = resp.httpResponse.createUnbufferedStream();\n\n if (AWS.HttpClient.streamsApiVersion === 2) {\n if (shouldCheckContentLength) {\n var lengthAccumulator = new streams.PassThrough();\n lengthAccumulator._write = function(chunk) {\n if (chunk && chunk.length) {\n receivedLen += chunk.length;\n }\n return streams.PassThrough.prototype._write.apply(this, arguments);\n };\n\n lengthAccumulator.on('end', checkContentLengthAndEmit);\n stream.on('error', function(err) {\n shouldCheckContentLength = false;\n httpStream.unpipe(lengthAccumulator);\n lengthAccumulator.emit('end');\n lengthAccumulator.end();\n });\n httpStream.pipe(lengthAccumulator).pipe(stream, { end: false });\n } else {\n httpStream.pipe(stream);\n }\n } else {\n\n if (shouldCheckContentLength) {\n httpStream.on('data', function(arg) {\n if (arg && arg.length) {\n receivedLen += arg.length;\n }\n });\n }\n\n httpStream.on('data', function(arg) {\n stream.emit('data', arg);\n });\n httpStream.on('end', checkContentLengthAndEmit);\n }\n\n httpStream.on('error', function(err) {\n shouldCheckContentLength = false;\n stream.emit('error', err);\n });\n }\n });\n\n return stream;\n },\n\n /**\n * @param [Array,Response] args This should be the response object,\n * or an array of args to send to the event.\n * @api private\n */\n emitEvent: function emit(eventName, args, done) {\n if (typeof args === 'function') { done = args; args = null; }\n if (!done) done = function() { };\n if (!args) args = this.eventParameters(eventName, this.response);\n\n var origEmit = AWS.SequentialExecutor.prototype.emit;\n origEmit.call(this, eventName, args, function (err) {\n if (err) this.response.error = err;\n done.call(this, err);\n });\n },\n\n /**\n * @api private\n */\n eventParameters: function eventParameters(eventName) {\n switch (eventName) {\n case 'restart':\n case 'validate':\n case 'sign':\n case 'build':\n case 'afterValidate':\n case 'afterBuild':\n return [this];\n case 'error':\n return [this.response.error, this.response];\n default:\n return [this.response];\n }\n },\n\n /**\n * @api private\n */\n presign: function presign(expires, callback) {\n if (!callback && typeof expires === 'function') {\n callback = expires;\n expires = null;\n }\n return new AWS.Signers.Presign().sign(this.toGet(), expires, callback);\n },\n\n /**\n * @api private\n */\n isPresigned: function isPresigned() {\n return Object.prototype.hasOwnProperty.call(this.httpRequest.headers, 'presigned-expires');\n },\n\n /**\n * @api private\n */\n toUnauthenticated: function toUnauthenticated() {\n this._unAuthenticated = true;\n this.removeListener('validate', AWS.EventListeners.Core.VALIDATE_CREDENTIALS);\n this.removeListener('sign', AWS.EventListeners.Core.SIGN);\n return this;\n },\n\n /**\n * @api private\n */\n toGet: function toGet() {\n if (this.service.api.protocol === 'query' ||\n this.service.api.protocol === 'ec2') {\n this.removeListener('build', this.buildAsGet);\n this.addListener('build', this.buildAsGet);\n }\n return this;\n },\n\n /**\n * @api private\n */\n buildAsGet: function buildAsGet(request) {\n request.httpRequest.method = 'GET';\n request.httpRequest.path = request.service.endpoint.path +\n '?' + request.httpRequest.body;\n request.httpRequest.body = '';\n\n // don't need these headers on a GET request\n delete request.httpRequest.headers['Content-Length'];\n delete request.httpRequest.headers['Content-Type'];\n },\n\n /**\n * @api private\n */\n haltHandlersOnError: function haltHandlersOnError() {\n this._haltHandlersOnError = true;\n }\n});\n\n/**\n * @api private\n */\nAWS.Request.addPromisesToClass = function addPromisesToClass(PromiseDependency) {\n this.prototype.promise = function promise() {\n var self = this;\n // append to user agent\n this.httpRequest.appendToUserAgent('promise');\n return new PromiseDependency(function(resolve, reject) {\n self.on('complete', function(resp) {\n if (resp.error) {\n reject(resp.error);\n } else {\n // define $response property so that it is not enumerable\n // this prevents circular reference errors when stringifying the JSON object\n resolve(Object.defineProperty(\n resp.data || {},\n '$response',\n {value: resp}\n ));\n }\n });\n self.runTo();\n });\n };\n};\n\n/**\n * @api private\n */\nAWS.Request.deletePromisesFromClass = function deletePromisesFromClass() {\n delete this.prototype.promise;\n};\n\nAWS.util.addPromises(AWS.Request);\n\nAWS.util.mixin(AWS.Request, AWS.SequentialExecutor);\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport EventReporter from './EventReporter';\n\nexport default class NoOpEventReporter implements EventReporter {\n constructor() {}\n\n reportEvent(\n _ts: number,\n _name: string,\n _attributes?: { [key: string]: string | number }\n ): Promise {\n return;\n }\n\n start(): void {}\n\n stop(): void {}\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\n// Using an enum here to make sure we can expand on future features\nenum PrefetchSortBy {\n Unread = 'unread',\n LastMessageTimestamp = 'last-message-timestamp',\n}\n\nexport default PrefetchSortBy;\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport DevicePixelRatioSource from './DevicePixelRatioSource';\n\nexport default class DevicePixelRatioWindowSource implements DevicePixelRatioSource {\n devicePixelRatio(): number {\n if (typeof window === 'undefined' || !window || !window.devicePixelRatio) {\n return 1;\n }\n return window.devicePixelRatio;\n }\n}\n","'use strict';\nvar call = require('../internals/function-call');\nvar anObject = require('../internals/an-object');\nvar getMethod = require('../internals/get-method');\n\nmodule.exports = function (iterator, kind, value) {\n var innerResult, innerError;\n anObject(iterator);\n try {\n innerResult = getMethod(iterator, 'return');\n if (!innerResult) {\n if (kind === 'throw') throw value;\n return value;\n }\n innerResult = call(innerResult, iterator);\n } catch (error) {\n innerError = true;\n innerResult = error;\n }\n if (kind === 'throw') throw value;\n if (innerError) throw innerResult;\n anObject(innerResult);\n return value;\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport Attendee from '../attendee/Attendee';\nimport TranscriptItemType from './TranscriptItemType';\n\nexport default class TranscriptItem {\n type: TranscriptItemType;\n startTimeMs: number; // epoch time\n endTimeMs: number; // epoch time\n attendee: Attendee;\n content: string;\n vocabularyFilterMatch?: boolean;\n confidence?: number; // confidence level of the predicted word ranging from 0 - 1 inclusive.\n stable?: boolean;\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport TranscriptionStatusType from './TranscriptionStatusType';\n\nexport default class TranscriptionStatus {\n type: TranscriptionStatusType;\n eventTimeMs: number; // epoch time\n transcriptionRegion: string;\n transcriptionConfiguration: string;\n message?: string;\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport {\n SdkBitrateFrame,\n SdkIndexFrame,\n SdkStreamMediaType,\n SdkSubscribeAckFrame,\n} from '../signalingprotocol/SignalingProtocol.js';\nimport DefaultVideoStreamIndex from './DefaultVideoStreamIndex';\nimport VideoStreamDescription from './VideoStreamDescription';\n\n/**\n * [[SimulcastTransceiverController]] implements [[VideoStreamIndex]] to facilitate video stream\n * subscription and includes query functions for stream id and attendee id.\n */\nexport default class SimulcastVideoStreamIndex extends DefaultVideoStreamIndex {\n private streamIdToBitrateKbpsMap: Map = new Map();\n\n // First time when the bitrate of a stream id is missing from bitrate message, mark it as UNSEEN\n static readonly UNSEEN_STREAM_BITRATE = -2;\n // Second time when the bitrate is missing, mark it as recently inactive\n static readonly RECENTLY_INACTIVE_STREAM_BITRATE = -1;\n // Third time when bitrate is missing, mark it as not sending\n static readonly NOT_SENDING_STREAM_BITRATE = 0;\n\n static readonly BitratesMsgFrequencyMs: number = 4000;\n\n private _localStreamInfos: VideoStreamDescription[] = [];\n\n // Map send rid to stream Id\n private _sendRidToVideoStreamIdMap: Map = new Map();\n\n localStreamDescriptions(): VideoStreamDescription[] {\n const clonedDescriptions: VideoStreamDescription[] = [];\n this._localStreamInfos.forEach(desc => {\n clonedDescriptions.push(desc.clone());\n });\n return clonedDescriptions;\n }\n\n integrateUplinkPolicyDecision(encodingParams: RTCRtpEncodingParameters[]): void {\n // Reuse local streams (that might already have stream IDs allocated) until\n // there are no more and then add as many new local streams as needed\n let hasStreamsToReuse = true;\n let localStreamIndex = 0;\n for (let i = 0; i < encodingParams.length; i++) {\n const targetMaxBitrateKbps = encodingParams[i].maxBitrate / 1000;\n const targetMaxFrameRate = encodingParams[i].maxFramerate;\n if (!hasStreamsToReuse || i === this._localStreamInfos.length) {\n hasStreamsToReuse = false;\n const newInfo = new VideoStreamDescription();\n newInfo.maxBitrateKbps = targetMaxBitrateKbps;\n newInfo.maxFrameRate = targetMaxFrameRate;\n newInfo.disabledByUplinkPolicy = targetMaxBitrateKbps === 0 ? true : false;\n newInfo.rid = encodingParams[i].rid;\n if (targetMaxBitrateKbps !== 0) {\n newInfo.timeEnabled = Date.now();\n }\n this._localStreamInfos.push(newInfo);\n localStreamIndex++;\n continue;\n }\n\n if (\n this._localStreamInfos[localStreamIndex].maxBitrateKbps === 0 &&\n targetMaxBitrateKbps > 0\n ) {\n this._localStreamInfos[localStreamIndex].timeEnabled = Date.now();\n }\n this._localStreamInfos[localStreamIndex].maxBitrateKbps = targetMaxBitrateKbps;\n this._localStreamInfos[localStreamIndex].maxFrameRate = targetMaxFrameRate;\n this._localStreamInfos[localStreamIndex].disabledByUplinkPolicy =\n targetMaxBitrateKbps === 0 ? true : false;\n localStreamIndex++;\n }\n\n if (hasStreamsToReuse) {\n // splice is zero-based, remove stream starting from localStreamIndex\n this._localStreamInfos.splice(localStreamIndex);\n }\n }\n\n integrateBitratesFrame(bitrateFrame: SdkBitrateFrame): void {\n super.integrateBitratesFrame(bitrateFrame);\n\n const stillSending = new Set();\n const existingSet = new Set(this.streamIdToBitrateKbpsMap.keys());\n for (const bitrateMsg of bitrateFrame.bitrates) {\n stillSending.add(bitrateMsg.sourceStreamId);\n this.streamIdToBitrateKbpsMap.set(\n bitrateMsg.sourceStreamId,\n this.convertBpsToKbps(bitrateMsg.avgBitrateBps)\n );\n }\n\n for (const id of existingSet) {\n if (!stillSending.has(id)) {\n const avgBitrateBps = this.streamIdToBitrateKbpsMap.get(id);\n if (avgBitrateBps === SimulcastVideoStreamIndex.UNSEEN_STREAM_BITRATE) {\n this.streamIdToBitrateKbpsMap.set(\n id,\n SimulcastVideoStreamIndex.RECENTLY_INACTIVE_STREAM_BITRATE\n );\n } else {\n this.streamIdToBitrateKbpsMap.set(\n id,\n SimulcastVideoStreamIndex.NOT_SENDING_STREAM_BITRATE\n );\n }\n }\n }\n\n this.logLocalStreamDescriptions();\n }\n\n private logLocalStreamDescriptions(): void {\n let msg = '';\n for (const desc of this._localStreamInfos) {\n msg += `streamId=${desc.streamId} maxBitrate=${desc.maxBitrateKbps} disabledByUplink=${desc.disabledByUplinkPolicy}\\n`;\n }\n this.logger.debug(() => {\n return msg;\n });\n }\n\n integrateIndexFrame(indexFrame: SdkIndexFrame): void {\n super.integrateIndexFrame(indexFrame);\n\n const newIndexStreamIdSet = new Set();\n const existingSet = new Set(this.streamIdToBitrateKbpsMap.keys());\n for (const stream of this.currentIndex.sources) {\n if (stream.mediaType !== SdkStreamMediaType.VIDEO) {\n continue;\n }\n newIndexStreamIdSet.add(stream.streamId);\n if (!this.streamIdToBitrateKbpsMap.has(stream.streamId)) {\n this.streamIdToBitrateKbpsMap.set(\n stream.streamId,\n SimulcastVideoStreamIndex.UNSEEN_STREAM_BITRATE\n );\n }\n }\n\n for (const id of existingSet) {\n if (!newIndexStreamIdSet.has(id)) {\n this.streamIdToBitrateKbpsMap.delete(id);\n }\n }\n }\n\n integrateSubscribeAckFrame(subscribeAck: SdkSubscribeAckFrame): void {\n super.integrateSubscribeAckFrame(subscribeAck);\n if (!subscribeAck.allocations || subscribeAck.allocations === undefined) {\n return;\n }\n\n let localStreamStartIndex = 0;\n this._sendRidToVideoStreamIdMap.clear();\n for (const allocation of subscribeAck.allocations) {\n // track label is what we offered to the server\n if (this._localStreamInfos.length < localStreamStartIndex + 1) {\n this.logger.info('simulcast: allocation has more than number of local streams');\n break;\n }\n this._localStreamInfos[localStreamStartIndex].groupId = allocation.groupId;\n this._localStreamInfos[localStreamStartIndex].streamId = allocation.streamId;\n if (!this.streamIdToBitrateKbpsMap.has(allocation.streamId)) {\n this.streamIdToBitrateKbpsMap.set(\n allocation.streamId,\n SimulcastVideoStreamIndex.UNSEEN_STREAM_BITRATE\n );\n }\n this._sendRidToVideoStreamIdMap.set(\n this._localStreamInfos[localStreamStartIndex].rid,\n allocation.streamId\n );\n localStreamStartIndex++;\n }\n }\n\n sendVideoStreamIdFromRid(rid: string): number {\n let res = 0;\n if (this._sendRidToVideoStreamIdMap.has(rid)) {\n res = this._sendRidToVideoStreamIdMap.get(rid);\n }\n return res;\n }\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\n/**\n * [[MeetingReadinessCheckerConfiguration]] includes custom settings used for MeetingReadinessChecker\n */\nexport default class MeetingReadinessCheckerConfiguration {\n /**\n * Specify how long to wait for each check in a test.\n * If null, it will use the default value.\n */\n timeoutMs: number = 10000;\n\n /**\n * Specify the wait time before checking again when a check condition is not met.\n * If null, it will use the default value.\n */\n waitDurationMs: number = 3000;\n\n /**\n * Specify the frequency of oscillation in hertz for the audio output test.\n */\n audioOutputFrequency?: number = 440;\n\n /**\n * Specify the gain value from 0 to 1.0 for the audio output test.\n */\n audioOutputGain?: number = 0.1;\n}\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['route53domains'] = {};\nAWS.Route53Domains = Service.defineService('route53domains', ['2014-05-15']);\nObject.defineProperty(apiLoader.services['route53domains'], '2014-05-15', {\n get: function get() {\n var model = require('../apis/route53domains-2014-05-15.min.json');\n model.paginators = require('../apis/route53domains-2014-05-15.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.Route53Domains;\n","'use strict';\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\nfunction GZheader() {\n /* true if compressed data believed to be text */\n this.text = 0;\n /* modification time */\n this.time = 0;\n /* extra flags (not used when writing a gzip file) */\n this.xflags = 0;\n /* operating system */\n this.os = 0;\n /* pointer to extra field or Z_NULL if none */\n this.extra = null;\n /* extra field length (valid if extra != Z_NULL) */\n this.extra_len = 0; // Actually, we don't need it in JS,\n // but leave for few code modifications\n\n //\n // Setup limits is not necessary because in js we should not preallocate memory\n // for inflate use constant limit in 65536 bytes\n //\n\n /* space at extra (only when reading header) */\n // this.extra_max = 0;\n /* pointer to zero-terminated file name or Z_NULL */\n this.name = '';\n /* space at name (only when reading header) */\n // this.name_max = 0;\n /* pointer to zero-terminated comment or Z_NULL */\n this.comment = '';\n /* space at comment (only when reading header) */\n // this.comm_max = 0;\n /* true if there was or will be a header crc */\n this.hcrc = 0;\n /* true when done reading gzip header (not used when writing a gzip file) */\n this.done = false;\n}\n\nmodule.exports = GZheader;\n","'use strict';\n\n/** @type {import('./reflectApply')} */\nmodule.exports = typeof Reflect !== 'undefined' && Reflect && Reflect.apply;\n","\"use strict\";\r\nmodule.exports = asPromise;\r\n\r\n/**\r\n * Callback as used by {@link util.asPromise}.\r\n * @typedef asPromiseCallback\r\n * @type {function}\r\n * @param {Error|null} error Error, if any\r\n * @param {...*} params Additional arguments\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Returns a promise from a node-style callback function.\r\n * @memberof util\r\n * @param {asPromiseCallback} fn Function to call\r\n * @param {*} ctx Function context\r\n * @param {...*} params Function arguments\r\n * @returns {Promise<*>} Promisified function\r\n */\r\nfunction asPromise(fn, ctx/*, varargs */) {\r\n var params = new Array(arguments.length - 1),\r\n offset = 0,\r\n index = 2,\r\n pending = true;\r\n while (index < arguments.length)\r\n params[offset++] = arguments[index++];\r\n return new Promise(function executor(resolve, reject) {\r\n params[offset] = function callback(err/*, varargs */) {\r\n if (pending) {\r\n pending = false;\r\n if (err)\r\n reject(err);\r\n else {\r\n var params = new Array(arguments.length - 1),\r\n offset = 0;\r\n while (offset < params.length)\r\n params[offset++] = arguments[offset];\r\n resolve.apply(null, params);\r\n }\r\n }\r\n };\r\n try {\r\n fn.apply(ctx || null, params);\r\n } catch (err) {\r\n if (pending) {\r\n pending = false;\r\n reject(err);\r\n }\r\n }\r\n });\r\n}\r\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport BackgroundFilterSpec from '../backgroundfilter/BackgroundFilterSpec';\nimport BackgroundFilterVideoFrameProcessor from '../backgroundfilter/BackgroundFilterVideoFrameProcessor';\nimport ConsoleLogger from '../logger/ConsoleLogger';\nimport Logger from '../logger/Logger';\nimport LogLevel from '../logger/LogLevel';\nimport NoOpVideoFrameProcessor from '../videoframeprocessor/NoOpVideoFrameProcessor';\nimport BackgroundBlurOptions from './BackgroundBlurOptions';\nimport BackgroundBlurProcessor from './BackgroundBlurProcessor';\nimport BackgroundBlurProcessorBuiltIn from './BackgroundBlurProcessorBuiltIn';\nimport BackgroundBlurProcessorProvided from './BackgroundBlurProcessorProvided';\nimport BlurStrength from './BackgroundBlurStrength';\n\n/**\n * No-op implementation of the blur processor. An instance of this class will be returned when a user attempts\n * to create a blur processor when it is not supported.\n */\n/** @internal */\nclass NoOpBackgroundBlurProcessor\n extends NoOpVideoFrameProcessor\n implements BackgroundBlurProcessor {\n /**\n * no-op\n */\n setBlurStrength(): void {}\n\n /**\n * no-op\n * @returns\n */\n async loadAssets(): Promise {\n return;\n }\n\n /**\n * no-op\n */\n addObserver(): void {}\n\n /**\n * no-op\n */\n removeObserver(): void {}\n}\n\n/**\n * [[BackgroundBlurVideoFrameProcessor]]\n * Creates a background blur processor which identifies the foreground person and blurs the background.\n */\nexport default class BackgroundBlurVideoFrameProcessor extends BackgroundFilterVideoFrameProcessor {\n /**\n * A factory method that will call the private constructor to instantiate the processor and asynchronously\n * initialize the worker, wasm, and ML models. Upon completion of the initialization the promise will either\n * be resolved or rejected.\n * @param spec The spec defines the assets that will be used for adding background blur to a frame\n * @param blurStrength How much blur to apply to a frame\n * @returns\n */\n static async create(\n spec?: BackgroundFilterSpec,\n options?: BackgroundBlurOptions\n ): Promise {\n spec = BackgroundBlurVideoFrameProcessor.resolveSpec(spec);\n options = BackgroundBlurVideoFrameProcessor.resolveOptions(options);\n const { logger } = options;\n\n const supported = await BackgroundBlurVideoFrameProcessor.isSupported(spec, options);\n // if blur is not supported do not initialize. The processor will become a no op if not supported.\n logger.info(`processor is ${supported ? '' : 'not'} supported`);\n if (!supported) {\n logger.warn('Using no-op processor because background blur is not supported');\n return new NoOpBackgroundBlurProcessor();\n }\n\n let processor: BackgroundBlurProcessor;\n if (await BackgroundBlurProcessorProvided.isSupported()) {\n logger.info('Using browser-provided background blur');\n processor = new BackgroundBlurProcessorProvided(spec, options);\n } else {\n logger.info('Using built-in background blur');\n processor = new BackgroundBlurProcessorBuiltIn(spec, options);\n }\n\n await processor.loadAssets();\n return processor;\n }\n\n /**\n * Based on the options that are passed in set defaults for options\n * @param options the options that are passed in\n * @returns An updated set of options with defaults set\n */\n protected static resolveOptions(options: BackgroundBlurOptions = {}): BackgroundBlurOptions {\n let processorOptions: BackgroundBlurOptions = { ...options };\n\n if (!processorOptions.blurStrength) {\n processorOptions.blurStrength = BlurStrength.MEDIUM;\n }\n\n if (!processorOptions.logger) {\n processorOptions.logger = new ConsoleLogger('BackgroundBlurProcessor', LogLevel.INFO);\n }\n processorOptions = super.resolveOptions(processorOptions);\n return processorOptions;\n }\n\n /**\n * This method will detect the environment in which it is being used and determine if background\n * blur can be used.\n * @param spec The {@link BackgroundBlurSpec} spec that will be used to initialize assets\n * @param options options such as logger\n * @returns a boolean promise that will resolve to true if supported and false if not\n */\n static isSupported(spec?: BackgroundFilterSpec, options?: { logger?: Logger }): Promise {\n spec = BackgroundBlurVideoFrameProcessor.resolveSpec(spec);\n options = BackgroundBlurVideoFrameProcessor.resolveOptions(options);\n return super.isSupported(spec, options);\n }\n}\n","/* eslint-disable no-prototype-builtins */\nvar g =\n (typeof globalThis !== 'undefined' && globalThis) ||\n (typeof self !== 'undefined' && self) ||\n // eslint-disable-next-line no-undef\n (typeof global !== 'undefined' && global) ||\n {}\n\nvar support = {\n searchParams: 'URLSearchParams' in g,\n iterable: 'Symbol' in g && 'iterator' in Symbol,\n blob:\n 'FileReader' in g &&\n 'Blob' in g &&\n (function() {\n try {\n new Blob()\n return true\n } catch (e) {\n return false\n }\n })(),\n formData: 'FormData' in g,\n arrayBuffer: 'ArrayBuffer' in g\n}\n\nfunction isDataView(obj) {\n return obj && DataView.prototype.isPrototypeOf(obj)\n}\n\nif (support.arrayBuffer) {\n var viewClasses = [\n '[object Int8Array]',\n '[object Uint8Array]',\n '[object Uint8ClampedArray]',\n '[object Int16Array]',\n '[object Uint16Array]',\n '[object Int32Array]',\n '[object Uint32Array]',\n '[object Float32Array]',\n '[object Float64Array]'\n ]\n\n var isArrayBufferView =\n ArrayBuffer.isView ||\n function(obj) {\n return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1\n }\n}\n\nfunction normalizeName(name) {\n if (typeof name !== 'string') {\n name = String(name)\n }\n if (/[^a-z0-9\\-#$%&'*+.^_`|~!]/i.test(name) || name === '') {\n throw new TypeError('Invalid character in header field name: \"' + name + '\"')\n }\n return name.toLowerCase()\n}\n\nfunction normalizeValue(value) {\n if (typeof value !== 'string') {\n value = String(value)\n }\n return value\n}\n\n// Build a destructive iterator for the value list\nfunction iteratorFor(items) {\n var iterator = {\n next: function() {\n var value = items.shift()\n return {done: value === undefined, value: value}\n }\n }\n\n if (support.iterable) {\n iterator[Symbol.iterator] = function() {\n return iterator\n }\n }\n\n return iterator\n}\n\nexport function Headers(headers) {\n this.map = {}\n\n if (headers instanceof Headers) {\n headers.forEach(function(value, name) {\n this.append(name, value)\n }, this)\n } else if (Array.isArray(headers)) {\n headers.forEach(function(header) {\n if (header.length != 2) {\n throw new TypeError('Headers constructor: expected name/value pair to be length 2, found' + header.length)\n }\n this.append(header[0], header[1])\n }, this)\n } else if (headers) {\n Object.getOwnPropertyNames(headers).forEach(function(name) {\n this.append(name, headers[name])\n }, this)\n }\n}\n\nHeaders.prototype.append = function(name, value) {\n name = normalizeName(name)\n value = normalizeValue(value)\n var oldValue = this.map[name]\n this.map[name] = oldValue ? oldValue + ', ' + value : value\n}\n\nHeaders.prototype['delete'] = function(name) {\n delete this.map[normalizeName(name)]\n}\n\nHeaders.prototype.get = function(name) {\n name = normalizeName(name)\n return this.has(name) ? this.map[name] : null\n}\n\nHeaders.prototype.has = function(name) {\n return this.map.hasOwnProperty(normalizeName(name))\n}\n\nHeaders.prototype.set = function(name, value) {\n this.map[normalizeName(name)] = normalizeValue(value)\n}\n\nHeaders.prototype.forEach = function(callback, thisArg) {\n for (var name in this.map) {\n if (this.map.hasOwnProperty(name)) {\n callback.call(thisArg, this.map[name], name, this)\n }\n }\n}\n\nHeaders.prototype.keys = function() {\n var items = []\n this.forEach(function(value, name) {\n items.push(name)\n })\n return iteratorFor(items)\n}\n\nHeaders.prototype.values = function() {\n var items = []\n this.forEach(function(value) {\n items.push(value)\n })\n return iteratorFor(items)\n}\n\nHeaders.prototype.entries = function() {\n var items = []\n this.forEach(function(value, name) {\n items.push([name, value])\n })\n return iteratorFor(items)\n}\n\nif (support.iterable) {\n Headers.prototype[Symbol.iterator] = Headers.prototype.entries\n}\n\nfunction consumed(body) {\n if (body._noBody) return\n if (body.bodyUsed) {\n return Promise.reject(new TypeError('Already read'))\n }\n body.bodyUsed = true\n}\n\nfunction fileReaderReady(reader) {\n return new Promise(function(resolve, reject) {\n reader.onload = function() {\n resolve(reader.result)\n }\n reader.onerror = function() {\n reject(reader.error)\n }\n })\n}\n\nfunction readBlobAsArrayBuffer(blob) {\n var reader = new FileReader()\n var promise = fileReaderReady(reader)\n reader.readAsArrayBuffer(blob)\n return promise\n}\n\nfunction readBlobAsText(blob) {\n var reader = new FileReader()\n var promise = fileReaderReady(reader)\n var match = /charset=([A-Za-z0-9_-]+)/.exec(blob.type)\n var encoding = match ? match[1] : 'utf-8'\n reader.readAsText(blob, encoding)\n return promise\n}\n\nfunction readArrayBufferAsText(buf) {\n var view = new Uint8Array(buf)\n var chars = new Array(view.length)\n\n for (var i = 0; i < view.length; i++) {\n chars[i] = String.fromCharCode(view[i])\n }\n return chars.join('')\n}\n\nfunction bufferClone(buf) {\n if (buf.slice) {\n return buf.slice(0)\n } else {\n var view = new Uint8Array(buf.byteLength)\n view.set(new Uint8Array(buf))\n return view.buffer\n }\n}\n\nfunction Body() {\n this.bodyUsed = false\n\n this._initBody = function(body) {\n /*\n fetch-mock wraps the Response object in an ES6 Proxy to\n provide useful test harness features such as flush. However, on\n ES5 browsers without fetch or Proxy support pollyfills must be used;\n the proxy-pollyfill is unable to proxy an attribute unless it exists\n on the object before the Proxy is created. This change ensures\n Response.bodyUsed exists on the instance, while maintaining the\n semantic of setting Request.bodyUsed in the constructor before\n _initBody is called.\n */\n // eslint-disable-next-line no-self-assign\n this.bodyUsed = this.bodyUsed\n this._bodyInit = body\n if (!body) {\n this._noBody = true;\n this._bodyText = ''\n } else if (typeof body === 'string') {\n this._bodyText = body\n } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n this._bodyBlob = body\n } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n this._bodyFormData = body\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this._bodyText = body.toString()\n } else if (support.arrayBuffer && support.blob && isDataView(body)) {\n this._bodyArrayBuffer = bufferClone(body.buffer)\n // IE 10-11 can't handle a DataView body.\n this._bodyInit = new Blob([this._bodyArrayBuffer])\n } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\n this._bodyArrayBuffer = bufferClone(body)\n } else {\n this._bodyText = body = Object.prototype.toString.call(body)\n }\n\n if (!this.headers.get('content-type')) {\n if (typeof body === 'string') {\n this.headers.set('content-type', 'text/plain;charset=UTF-8')\n } else if (this._bodyBlob && this._bodyBlob.type) {\n this.headers.set('content-type', this._bodyBlob.type)\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8')\n }\n }\n }\n\n if (support.blob) {\n this.blob = function() {\n var rejected = consumed(this)\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return Promise.resolve(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(new Blob([this._bodyArrayBuffer]))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as blob')\n } else {\n return Promise.resolve(new Blob([this._bodyText]))\n }\n }\n }\n\n this.arrayBuffer = function() {\n if (this._bodyArrayBuffer) {\n var isConsumed = consumed(this)\n if (isConsumed) {\n return isConsumed\n } else if (ArrayBuffer.isView(this._bodyArrayBuffer)) {\n return Promise.resolve(\n this._bodyArrayBuffer.buffer.slice(\n this._bodyArrayBuffer.byteOffset,\n this._bodyArrayBuffer.byteOffset + this._bodyArrayBuffer.byteLength\n )\n )\n } else {\n return Promise.resolve(this._bodyArrayBuffer)\n }\n } else if (support.blob) {\n return this.blob().then(readBlobAsArrayBuffer)\n } else {\n throw new Error('could not read as ArrayBuffer')\n }\n }\n\n this.text = function() {\n var rejected = consumed(this)\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return readBlobAsText(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as text')\n } else {\n return Promise.resolve(this._bodyText)\n }\n }\n\n if (support.formData) {\n this.formData = function() {\n return this.text().then(decode)\n }\n }\n\n this.json = function() {\n return this.text().then(JSON.parse)\n }\n\n return this\n}\n\n// HTTP methods whose capitalization should be normalized\nvar methods = ['CONNECT', 'DELETE', 'GET', 'HEAD', 'OPTIONS', 'PATCH', 'POST', 'PUT', 'TRACE']\n\nfunction normalizeMethod(method) {\n var upcased = method.toUpperCase()\n return methods.indexOf(upcased) > -1 ? upcased : method\n}\n\nexport function Request(input, options) {\n if (!(this instanceof Request)) {\n throw new TypeError('Please use the \"new\" operator, this DOM object constructor cannot be called as a function.')\n }\n\n options = options || {}\n var body = options.body\n\n if (input instanceof Request) {\n if (input.bodyUsed) {\n throw new TypeError('Already read')\n }\n this.url = input.url\n this.credentials = input.credentials\n if (!options.headers) {\n this.headers = new Headers(input.headers)\n }\n this.method = input.method\n this.mode = input.mode\n this.signal = input.signal\n if (!body && input._bodyInit != null) {\n body = input._bodyInit\n input.bodyUsed = true\n }\n } else {\n this.url = String(input)\n }\n\n this.credentials = options.credentials || this.credentials || 'same-origin'\n if (options.headers || !this.headers) {\n this.headers = new Headers(options.headers)\n }\n this.method = normalizeMethod(options.method || this.method || 'GET')\n this.mode = options.mode || this.mode || null\n this.signal = options.signal || this.signal || (function () {\n if ('AbortController' in g) {\n var ctrl = new AbortController();\n return ctrl.signal;\n }\n }());\n this.referrer = null\n\n if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n throw new TypeError('Body not allowed for GET or HEAD requests')\n }\n this._initBody(body)\n\n if (this.method === 'GET' || this.method === 'HEAD') {\n if (options.cache === 'no-store' || options.cache === 'no-cache') {\n // Search for a '_' parameter in the query string\n var reParamSearch = /([?&])_=[^&]*/\n if (reParamSearch.test(this.url)) {\n // If it already exists then set the value with the current time\n this.url = this.url.replace(reParamSearch, '$1_=' + new Date().getTime())\n } else {\n // Otherwise add a new '_' parameter to the end with the current time\n var reQueryString = /\\?/\n this.url += (reQueryString.test(this.url) ? '&' : '?') + '_=' + new Date().getTime()\n }\n }\n }\n}\n\nRequest.prototype.clone = function() {\n return new Request(this, {body: this._bodyInit})\n}\n\nfunction decode(body) {\n var form = new FormData()\n body\n .trim()\n .split('&')\n .forEach(function(bytes) {\n if (bytes) {\n var split = bytes.split('=')\n var name = split.shift().replace(/\\+/g, ' ')\n var value = split.join('=').replace(/\\+/g, ' ')\n form.append(decodeURIComponent(name), decodeURIComponent(value))\n }\n })\n return form\n}\n\nfunction parseHeaders(rawHeaders) {\n var headers = new Headers()\n // Replace instances of \\r\\n and \\n followed by at least one space or horizontal tab with a space\n // https://tools.ietf.org/html/rfc7230#section-3.2\n var preProcessedHeaders = rawHeaders.replace(/\\r?\\n[\\t ]+/g, ' ')\n // Avoiding split via regex to work around a common IE11 bug with the core-js 3.6.0 regex polyfill\n // https://github.com/github/fetch/issues/748\n // https://github.com/zloirock/core-js/issues/751\n preProcessedHeaders\n .split('\\r')\n .map(function(header) {\n return header.indexOf('\\n') === 0 ? header.substr(1, header.length) : header\n })\n .forEach(function(line) {\n var parts = line.split(':')\n var key = parts.shift().trim()\n if (key) {\n var value = parts.join(':').trim()\n try {\n headers.append(key, value)\n } catch (error) {\n console.warn('Response ' + error.message)\n }\n }\n })\n return headers\n}\n\nBody.call(Request.prototype)\n\nexport function Response(bodyInit, options) {\n if (!(this instanceof Response)) {\n throw new TypeError('Please use the \"new\" operator, this DOM object constructor cannot be called as a function.')\n }\n if (!options) {\n options = {}\n }\n\n this.type = 'default'\n this.status = options.status === undefined ? 200 : options.status\n if (this.status < 200 || this.status > 599) {\n throw new RangeError(\"Failed to construct 'Response': The status provided (0) is outside the range [200, 599].\")\n }\n this.ok = this.status >= 200 && this.status < 300\n this.statusText = options.statusText === undefined ? '' : '' + options.statusText\n this.headers = new Headers(options.headers)\n this.url = options.url || ''\n this._initBody(bodyInit)\n}\n\nBody.call(Response.prototype)\n\nResponse.prototype.clone = function() {\n return new Response(this._bodyInit, {\n status: this.status,\n statusText: this.statusText,\n headers: new Headers(this.headers),\n url: this.url\n })\n}\n\nResponse.error = function() {\n var response = new Response(null, {status: 200, statusText: ''})\n response.ok = false\n response.status = 0\n response.type = 'error'\n return response\n}\n\nvar redirectStatuses = [301, 302, 303, 307, 308]\n\nResponse.redirect = function(url, status) {\n if (redirectStatuses.indexOf(status) === -1) {\n throw new RangeError('Invalid status code')\n }\n\n return new Response(null, {status: status, headers: {location: url}})\n}\n\nexport var DOMException = g.DOMException\ntry {\n new DOMException()\n} catch (err) {\n DOMException = function(message, name) {\n this.message = message\n this.name = name\n var error = Error(message)\n this.stack = error.stack\n }\n DOMException.prototype = Object.create(Error.prototype)\n DOMException.prototype.constructor = DOMException\n}\n\nexport function fetch(input, init) {\n return new Promise(function(resolve, reject) {\n var request = new Request(input, init)\n\n if (request.signal && request.signal.aborted) {\n return reject(new DOMException('Aborted', 'AbortError'))\n }\n\n var xhr = new XMLHttpRequest()\n\n function abortXhr() {\n xhr.abort()\n }\n\n xhr.onload = function() {\n var options = {\n statusText: xhr.statusText,\n headers: parseHeaders(xhr.getAllResponseHeaders() || '')\n }\n // This check if specifically for when a user fetches a file locally from the file system\n // Only if the status is out of a normal range\n if (request.url.indexOf('file://') === 0 && (xhr.status < 200 || xhr.status > 599)) {\n options.status = 200;\n } else {\n options.status = xhr.status;\n }\n options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL')\n var body = 'response' in xhr ? xhr.response : xhr.responseText\n setTimeout(function() {\n resolve(new Response(body, options))\n }, 0)\n }\n\n xhr.onerror = function() {\n setTimeout(function() {\n reject(new TypeError('Network request failed'))\n }, 0)\n }\n\n xhr.ontimeout = function() {\n setTimeout(function() {\n reject(new TypeError('Network request timed out'))\n }, 0)\n }\n\n xhr.onabort = function() {\n setTimeout(function() {\n reject(new DOMException('Aborted', 'AbortError'))\n }, 0)\n }\n\n function fixUrl(url) {\n try {\n return url === '' && g.location.href ? g.location.href : url\n } catch (e) {\n return url\n }\n }\n\n xhr.open(request.method, fixUrl(request.url), true)\n\n if (request.credentials === 'include') {\n xhr.withCredentials = true\n } else if (request.credentials === 'omit') {\n xhr.withCredentials = false\n }\n\n if ('responseType' in xhr) {\n if (support.blob) {\n xhr.responseType = 'blob'\n } else if (\n support.arrayBuffer\n ) {\n xhr.responseType = 'arraybuffer'\n }\n }\n\n if (init && typeof init.headers === 'object' && !(init.headers instanceof Headers || (g.Headers && init.headers instanceof g.Headers))) {\n var names = [];\n Object.getOwnPropertyNames(init.headers).forEach(function(name) {\n names.push(normalizeName(name))\n xhr.setRequestHeader(name, normalizeValue(init.headers[name]))\n })\n request.headers.forEach(function(value, name) {\n if (names.indexOf(name) === -1) {\n xhr.setRequestHeader(name, value)\n }\n })\n } else {\n request.headers.forEach(function(value, name) {\n xhr.setRequestHeader(name, value)\n })\n }\n\n if (request.signal) {\n request.signal.addEventListener('abort', abortXhr)\n\n xhr.onreadystatechange = function() {\n // DONE (success or failure)\n if (xhr.readyState === 4) {\n request.signal.removeEventListener('abort', abortXhr)\n }\n }\n }\n\n xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit)\n })\n}\n\nfetch.polyfill = true\n\nif (!g.fetch) {\n g.fetch = fetch\n g.Headers = Headers\n g.Request = Request\n g.Response = Response\n}\n","/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['codepipeline'] = {};\nAWS.CodePipeline = Service.defineService('codepipeline', ['2015-07-09']);\nObject.defineProperty(apiLoader.services['codepipeline'], '2015-07-09', {\n get: function get() {\n var model = require('../apis/codepipeline-2015-07-09.min.json');\n model.paginators = require('../apis/codepipeline-2015-07-09.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.CodePipeline;\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\nvar callBound = require('call-bound');\nvar inspect = require('object-inspect');\nvar getSideChannelMap = require('side-channel-map');\n\nvar $TypeError = require('es-errors/type');\nvar $WeakMap = GetIntrinsic('%WeakMap%', true);\n\n/** @type {(thisArg: WeakMap, key: K) => V} */\nvar $weakMapGet = callBound('WeakMap.prototype.get', true);\n/** @type {(thisArg: WeakMap, key: K, value: V) => void} */\nvar $weakMapSet = callBound('WeakMap.prototype.set', true);\n/** @type {(thisArg: WeakMap, key: K) => boolean} */\nvar $weakMapHas = callBound('WeakMap.prototype.has', true);\n/** @type {(thisArg: WeakMap, key: K) => boolean} */\nvar $weakMapDelete = callBound('WeakMap.prototype.delete', true);\n\n/** @type {import('.')} */\nmodule.exports = $WeakMap\n\t? /** @type {Exclude} */ function getSideChannelWeakMap() {\n\t\t/** @typedef {ReturnType} Channel */\n\t\t/** @typedef {Parameters[0]} K */\n\t\t/** @typedef {Parameters[1]} V */\n\n\t\t/** @type {WeakMap | undefined} */ var $wm;\n\t\t/** @type {Channel | undefined} */ var $m;\n\n\t\t/** @type {Channel} */\n\t\tvar channel = {\n\t\t\tassert: function (key) {\n\t\t\t\tif (!channel.has(key)) {\n\t\t\t\t\tthrow new $TypeError('Side channel does not contain ' + inspect(key));\n\t\t\t\t}\n\t\t\t},\n\t\t\t'delete': function (key) {\n\t\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\t\tif ($wm) {\n\t\t\t\t\t\treturn $weakMapDelete($wm, key);\n\t\t\t\t\t}\n\t\t\t\t} else if (getSideChannelMap) {\n\t\t\t\t\tif ($m) {\n\t\t\t\t\t\treturn $m['delete'](key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\tget: function (key) {\n\t\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\t\tif ($wm) {\n\t\t\t\t\t\treturn $weakMapGet($wm, key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn $m && $m.get(key);\n\t\t\t},\n\t\t\thas: function (key) {\n\t\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\t\tif ($wm) {\n\t\t\t\t\t\treturn $weakMapHas($wm, key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn !!$m && $m.has(key);\n\t\t\t},\n\t\t\tset: function (key, value) {\n\t\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\t\tif (!$wm) {\n\t\t\t\t\t\t$wm = new $WeakMap();\n\t\t\t\t\t}\n\t\t\t\t\t$weakMapSet($wm, key, value);\n\t\t\t\t} else if (getSideChannelMap) {\n\t\t\t\t\tif (!$m) {\n\t\t\t\t\t\t$m = getSideChannelMap();\n\t\t\t\t\t}\n\t\t\t\t\t// eslint-disable-next-line no-extra-parens\n\t\t\t\t\t/** @type {NonNullable} */ ($m).set(key, value);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\t// @ts-expect-error TODO: figure out why this is erroring\n\t\treturn channel;\n\t}\n\t: getSideChannelMap;\n","'use strict';\n\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';\nvar aCallable = require('../internals/a-callable');\nvar anObject = require('../internals/an-object');\nvar call = require('../internals/function-call');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar getIteratorDirect = require('../internals/get-iterator-direct');\n\nvar INVALID_SIZE = 'Invalid size';\nvar $RangeError = RangeError;\nvar $TypeError = TypeError;\nvar max = Math.max;\n\nvar SetRecord = function (set, intSize) {\n this.set = set;\n this.size = max(intSize, 0);\n this.has = aCallable(set.has);\n this.keys = aCallable(set.keys);\n};\n\nSetRecord.prototype = {\n getIterator: function () {\n return getIteratorDirect(anObject(call(this.keys, this.set)));\n },\n includes: function (it) {\n return call(this.has, this.set, it);\n }\n};\n\n// `GetSetRecord` abstract operation\n// https://tc39.es/proposal-set-methods/#sec-getsetrecord\nmodule.exports = function (obj) {\n anObject(obj);\n var numSize = +obj.size;\n // NOTE: If size is undefined, then numSize will be NaN\n // eslint-disable-next-line no-self-compare -- NaN check\n if (numSize !== numSize) throw new $TypeError(INVALID_SIZE);\n var intSize = toIntegerOrInfinity(numSize);\n if (intSize < 0) throw new $RangeError(INVALID_SIZE);\n return new SetRecord(obj, intSize);\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport Logger from '../logger/Logger';\nimport RealtimeController from '../realtimecontroller/RealtimeController';\nimport {\n SdkAudioAttendeeState,\n SdkAudioMetadataFrame,\n SdkAudioStreamIdInfoFrame,\n} from '../signalingprotocol/SignalingProtocol.js';\nimport VolumeIndicatorAdapter from './VolumeIndicatorAdapter';\n\nexport default class DefaultVolumeIndicatorAdapter implements VolumeIndicatorAdapter {\n private streamIdToAttendeeId: { [key: number]: string } = {};\n private streamIdToExternalUserId: { [key: number]: string } = {};\n private warnedAboutMissingStreamIdMapping: { [key: number]: boolean } = {};\n private attendeeIdToStreamId: { [key: string]: number } = {};\n private sessionReconnected: boolean = false;\n static MAX_SIGNAL_STRENGTH_LEVELS: number = 2;\n static IMPLICIT_VOLUME: number = 0;\n static IMPLICIT_SIGNAL_STRENGTH: number = 1;\n\n constructor(\n private logger: Logger,\n private realtimeController: RealtimeController,\n private minVolumeDecibels: number,\n private maxVolumeDecibels: number,\n private selfAttendeeId?: string\n ) {}\n\n onReconnect(): void {\n this.sessionReconnected = true;\n }\n\n sendRealtimeUpdatesForAudioStreamIdInfo(info: SdkAudioStreamIdInfoFrame): void {\n let streamIndex = 0;\n for (const stream of info.streams) {\n const hasAttendeeId = !!stream.attendeeId;\n const hasExternalUserId = !!stream.externalUserId;\n const hasMuted = stream.hasOwnProperty('muted');\n const hasDropped = !!stream.dropped;\n if (hasAttendeeId) {\n if (\n !!this.attendeeIdToStreamId[stream.attendeeId] &&\n this.attendeeIdToStreamId[stream.attendeeId] < stream.audioStreamId\n ) {\n delete this.attendeeIdToStreamId[stream.attendeeId];\n }\n this.streamIdToAttendeeId[stream.audioStreamId] = stream.attendeeId;\n const externalUserId = hasExternalUserId ? stream.externalUserId : stream.attendeeId;\n this.streamIdToExternalUserId[stream.audioStreamId] = externalUserId;\n this.attendeeIdToStreamId[stream.attendeeId] = stream.audioStreamId;\n this.realtimeController.realtimeSetAttendeeIdPresence(\n stream.attendeeId,\n true,\n externalUserId,\n false,\n { attendeeIndex: streamIndex++, attendeesInFrame: info.streams.length }\n );\n }\n if (hasMuted) {\n const attendeeId = this.streamIdToAttendeeId[stream.audioStreamId];\n const externalUserId = this.streamIdToExternalUserId[stream.audioStreamId];\n this.realtimeController.realtimeUpdateVolumeIndicator(\n attendeeId,\n null,\n stream.muted,\n null,\n externalUserId\n );\n }\n if (!hasAttendeeId && !hasMuted) {\n const attendeeId = this.streamIdToAttendeeId[stream.audioStreamId];\n if (attendeeId) {\n const externalUserId = this.streamIdToExternalUserId[stream.audioStreamId];\n delete this.streamIdToAttendeeId[stream.audioStreamId];\n delete this.streamIdToExternalUserId[stream.audioStreamId];\n delete this.warnedAboutMissingStreamIdMapping[stream.audioStreamId];\n if (this.attendeeIdToStreamId[attendeeId] === stream.audioStreamId) {\n delete this.attendeeIdToStreamId[attendeeId];\n }\n let attendeeHasNewStreamId = false;\n for (const otherStreamId of Object.keys(this.streamIdToAttendeeId)) {\n const otherStreamIdNumber = parseInt(otherStreamId);\n if (\n otherStreamIdNumber > stream.audioStreamId &&\n this.streamIdToAttendeeId[otherStreamIdNumber] === attendeeId\n ) {\n attendeeHasNewStreamId = true;\n break;\n }\n }\n if (!attendeeHasNewStreamId) {\n this.realtimeController.realtimeSetAttendeeIdPresence(\n attendeeId,\n false,\n externalUserId,\n hasDropped,\n { attendeeIndex: streamIndex++, attendeesInFrame: info.streams.length }\n );\n }\n }\n }\n }\n if (this.sessionReconnected) {\n this.cleanUpState(info);\n this.sessionReconnected = false;\n }\n }\n\n private cleanUpState(info: SdkAudioStreamIdInfoFrame): void {\n const localAttendeeIds = Object.values(this.streamIdToAttendeeId);\n const remoteAttendeeIds = info.streams.map(stream => stream.attendeeId);\n const deletedAttendeeIds = localAttendeeIds.filter(id => {\n return !remoteAttendeeIds.includes(id);\n });\n\n for (const [index, deletedAttendeeId] of deletedAttendeeIds.entries()) {\n const streamId = this.attendeeIdToStreamId[deletedAttendeeId];\n const externalUserId = this.streamIdToExternalUserId[streamId];\n delete this.streamIdToAttendeeId[streamId];\n delete this.streamIdToExternalUserId[streamId];\n delete this.warnedAboutMissingStreamIdMapping[streamId];\n delete this.attendeeIdToStreamId[deletedAttendeeId];\n\n // During reconnection, the audio info frame might not include self attendee.\n // However, if that happens, there would be another audio info frame with the self attendee after reconnection.\n // So we should not send leave event here for self attendee.\n if (deletedAttendeeId === this.selfAttendeeId) {\n this.logger.warn(\n `the volume indicator adapter cleans up the current attendee (presence = false) after reconnection`\n );\n continue;\n }\n // The reconnect event does not have information whether the attendee is dropped/left.\n // Defaulting to attendee leaving the meeting\n this.realtimeController.realtimeSetAttendeeIdPresence(\n deletedAttendeeId,\n false,\n externalUserId,\n false,\n { attendeeIndex: index, attendeesInFrame: deletedAttendeeId.length }\n );\n }\n }\n\n sendRealtimeUpdatesForAudioMetadata(metadata: SdkAudioMetadataFrame): void {\n let volumes: { [key: string]: number } | null = null;\n let signalStrengths: { [key: string]: number } | null = null;\n for (const state of metadata.attendeeStates) {\n const attendeeId = this.attendeeIdForStreamId(state.audioStreamId);\n if (state.hasOwnProperty('volume')) {\n if (volumes === null) {\n volumes = {};\n }\n if (attendeeId !== null) {\n // @ts-ignore: TODO fix this protobufjs issue\n volumes[attendeeId] = this.normalizedVolume(state);\n }\n }\n if (state.hasOwnProperty('signalStrength')) {\n if (signalStrengths === null) {\n signalStrengths = {};\n }\n if (attendeeId !== null) {\n // @ts-ignore: TODO fix this protobufjs issue\n signalStrengths[attendeeId] = this.normalizedSignalStrength(state);\n }\n }\n }\n this.applyRealtimeUpdatesForAudioMetadata(volumes, signalStrengths);\n }\n\n private normalizedVolume(state: SdkAudioAttendeeState): number {\n const dBVolume = -state.volume;\n const normalized =\n 1.0 - (dBVolume - this.maxVolumeDecibels) / (this.minVolumeDecibels - this.maxVolumeDecibels);\n const clipped = Math.min(Math.max(normalized, 0.0), 1.0);\n return clipped;\n }\n\n private normalizedSignalStrength(state: SdkAudioAttendeeState): number {\n const normalized =\n state.signalStrength / DefaultVolumeIndicatorAdapter.MAX_SIGNAL_STRENGTH_LEVELS;\n const clipped = Math.min(Math.max(normalized, 0.0), 1.0);\n return clipped;\n }\n\n private applyRealtimeUpdatesForAudioMetadata(\n volumes: { [key: string]: number } | null,\n signalStrengths: { [key: string]: number } | null\n ): void {\n for (const streamId in this.streamIdToAttendeeId) {\n const attendeeId = this.streamIdToAttendeeId[streamId];\n const externalUserId = this.streamIdToExternalUserId[streamId];\n let volumeUpdate: number | null = null;\n let signalStrengthUpdate: number | null = null;\n if (volumes !== null) {\n if (volumes.hasOwnProperty(attendeeId)) {\n volumeUpdate = volumes[attendeeId];\n } else {\n volumeUpdate = DefaultVolumeIndicatorAdapter.IMPLICIT_VOLUME;\n }\n }\n if (signalStrengths !== null) {\n if (signalStrengths.hasOwnProperty(attendeeId)) {\n signalStrengthUpdate = signalStrengths[attendeeId];\n } else {\n signalStrengthUpdate = DefaultVolumeIndicatorAdapter.IMPLICIT_SIGNAL_STRENGTH;\n }\n }\n if (volumeUpdate !== null || signalStrengthUpdate !== null) {\n this.realtimeController.realtimeUpdateVolumeIndicator(\n attendeeId,\n volumeUpdate,\n null,\n signalStrengthUpdate,\n externalUserId\n );\n }\n }\n }\n\n private attendeeIdForStreamId(streamId: number): string | null {\n if (streamId === 0) {\n return null;\n }\n const attendeeId = this.streamIdToAttendeeId[streamId];\n if (attendeeId) {\n return attendeeId;\n }\n if (!this.warnedAboutMissingStreamIdMapping[streamId]) {\n this.warnedAboutMissingStreamIdMapping[streamId] = true;\n this.logger.warn(`volume indicator stream id ${streamId} seen before being defined`);\n }\n return null;\n }\n}\n","'use strict';\nvar has = require('../internals/map-helpers').has;\n\n// Perform ? RequireInternalSlot(M, [[MapData]])\nmodule.exports = function (it) {\n has(it);\n return it;\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport Logger from '../logger/Logger';\nimport CanvasVideoFrameBuffer from './CanvasVideoFrameBuffer';\nimport DefaultVideoFrameProcessorTimer from './DefaultVideoFrameProcessorTimer';\nimport VideoFrameBuffer from './VideoFrameBuffer';\nimport VideoFrameProcessor from './VideoFrameProcessor';\nimport VideoFrameProcessorPipeline from './VideoFrameProcessorPipeline';\nimport VideoFrameProcessorPipelineObserver from './VideoFrameProcessorPipelineObserver';\nimport VideoFrameProcessorTimer from './VideoFrameProcessorTimer';\n\nconst DEFAULT_FRAMERATE = 15;\n\n/** @internal */\ninterface HTMLCanvasElementWithCaptureStream extends HTMLCanvasElement {\n // Not in IE, but that's OK.\n captureStream(frameRate?: number): MediaStream;\n}\n\n/**\n * [[DefaultVideoFrameProcessorPipeline]] implements {@link VideoFrameProcessorPipeline}.\n * It constructs a buffer {@link CanvasVideoFrameBuffer} as source by default and invokes processor based on `framerate`.\n * The default output type is `MediaStream`.\n */\nexport default class DefaultVideoFrameProcessorPipeline implements VideoFrameProcessorPipeline {\n private fr: number = DEFAULT_FRAMERATE;\n // initialize with dummy inactive MediaStream to keep strict type\n outputMediaStream: MediaStream = new MediaStream();\n\n private videoInput: HTMLVideoElement = document.createElement('video') as HTMLVideoElement;\n\n private canvasOutput: HTMLCanvasElementWithCaptureStream = document.createElement(\n 'canvas'\n ) as HTMLCanvasElementWithCaptureStream;\n private outputCtx = this.canvasOutput.getContext('2d');\n\n private canvasInput: HTMLCanvasElement = document.createElement('canvas');\n private inputCtx = this.canvasInput.getContext('2d');\n private inputVideoStream: MediaStream | null = null;\n\n private sourceBuffers: VideoFrameBuffer[] = [];\n private destBuffers: VideoFrameBuffer[] = [];\n private observers: Set = new Set<\n VideoFrameProcessorPipelineObserver\n >();\n\n private hasStarted: boolean = false;\n private timer: VideoFrameProcessorTimer;\n\n constructor(\n private logger: Logger,\n private stages: VideoFrameProcessor[],\n timer: VideoFrameProcessorTimer = new DefaultVideoFrameProcessorTimer()\n ) {\n this.timer = timer;\n }\n\n destroy(): void {\n this.stop();\n if (this.stages) {\n for (const stage of this.stages) {\n stage.destroy();\n }\n }\n this.timer.destroy();\n }\n\n get framerate(): number {\n return this.fr;\n }\n\n // A negative framerate will cause `captureStream` to throw `NotSupportedError`.\n // The setter prevents this by switching to the default framerate if less than 0.\n set framerate(value: number) {\n this.fr = value < 0 ? DEFAULT_FRAMERATE : value;\n }\n\n stop(): void {\n // empty stream, stop pipeline\n // null input media stream stops the pipeline.\n this.videoInput.removeEventListener('loadedmetadata', this.process);\n this.videoInput.srcObject = null;\n\n // Clean the input stream and buffers.\n this.destroyInputMediaStreamAndBuffers();\n\n // Stop all the output tracks, but don't discard the media stream,\n // because it's how other parts of the codebase recognize when\n // a selected stream is part of this transform device.\n if (this.outputMediaStream) {\n for (const track of this.outputMediaStream.getVideoTracks()) {\n track.stop();\n }\n }\n\n if (this.hasStarted) {\n this.hasStarted = false;\n this.forEachObserver(observer => {\n if (observer.processingDidStop) {\n observer.processingDidStop();\n }\n });\n }\n }\n\n addObserver(observer: VideoFrameProcessorPipelineObserver): void {\n this.observers.add(observer);\n }\n\n removeObserver(observer: VideoFrameProcessorPipelineObserver): void {\n this.observers.delete(observer);\n }\n\n async getInputMediaStream(): Promise {\n return this.inputVideoStream;\n }\n\n getActiveOutputMediaStream(): MediaStream {\n if (this.isOutputMediaStreamActive()) {\n return this.outputMediaStream;\n }\n\n this.outputMediaStream = this.canvasOutput.captureStream(this.framerate);\n this.cloneInputAudioTracksToOutput();\n return this.outputMediaStream;\n }\n\n /**\n * `inputMediaStream` is by default used to construct one {@link CanvasVideoFrameBuffer}\n * The buffer will be fed into the first {@link VideoFrameProcessor}.\n */\n async setInputMediaStream(inputMediaStream: MediaStream | null): Promise {\n if (!inputMediaStream) {\n this.stop();\n return;\n }\n\n if (inputMediaStream.getVideoTracks().length === 0) {\n this.logger.error('No video tracks in input media stream, ignoring');\n return;\n }\n\n this.inputVideoStream = inputMediaStream;\n const settings = this.inputVideoStream.getVideoTracks()[0].getSettings();\n this.logger.info(`processing pipeline input stream settings ${JSON.stringify(settings)}`);\n this.framerate = settings.frameRate;\n this.canvasOutput.width = settings.width;\n this.canvasOutput.height = settings.height;\n this.videoInput.addEventListener('loadedmetadata', this.process);\n this.videoInput.srcObject = this.inputVideoStream;\n // avoid iOS safari full screen video\n this.videoInput.setAttribute('playsinline', 'true');\n // create sources\n const canvasBuffer = new CanvasVideoFrameBuffer(this.canvasInput);\n this.sourceBuffers.push(canvasBuffer);\n\n this.videoInput.load();\n try {\n await this.videoInput.play();\n } catch {\n this.logger.warn('Video element play() overrided by another load().');\n }\n\n this.cloneInputAudioTracksToOutput();\n }\n\n private cloneInputAudioTracksToOutput(): void {\n if (!this.isOutputMediaStreamActive() || this.inputVideoStream === null) {\n this.logger.info('Not cloning input audio tracks to output, do not have media streams ready');\n return; // Just wait for `getActiveOutputMediaStream`\n }\n\n // Remove current audio tracks from output\n for (const audioTrack of this.outputMediaStream.getAudioTracks()) {\n this.logger.info(`Removing audio track ${audioTrack.id} from output stream`);\n this.outputMediaStream.removeTrack(audioTrack);\n }\n\n for (const audioTrack of this.inputVideoStream.getAudioTracks()) {\n this.logger.info(`Adding audio track ${audioTrack.id} to output stream`);\n this.outputMediaStream.addTrack(audioTrack);\n }\n }\n\n private isOutputMediaStreamActive(): boolean {\n return this.outputMediaStream && this.outputMediaStream.active;\n }\n\n set processors(stages: VideoFrameProcessor[]) {\n this.stages = stages;\n }\n\n get processors(): VideoFrameProcessor[] {\n return this.stages;\n }\n\n process = async (_event: Event): Promise => {\n if (!this.inputVideoStream) {\n return;\n }\n\n const processVideoStart = performance.now();\n\n // videoWidth is intrinsic video width\n if (this.videoInput.videoWidth) {\n if (this.canvasInput.width !== this.videoInput.videoWidth) {\n this.canvasInput.width = this.videoInput.videoWidth;\n this.canvasInput.height = this.videoInput.videoHeight;\n this.sourceBuffers[0].height = this.canvasInput.height;\n this.sourceBuffers[0].width = this.canvasInput.width;\n this.sourceBuffers[0].framerate = this.framerate;\n }\n\n this.inputCtx.drawImage(this.videoInput, 0, 0);\n }\n\n // processes input buffers\n let buffers: VideoFrameBuffer[] = [];\n buffers.push(this.sourceBuffers[0]);\n try {\n for (const proc of this.processors) {\n buffers = await proc.process(buffers);\n }\n } catch (_error) {\n this.forEachObserver(obs => {\n if (obs.processingDidFailToStart) {\n obs.processingDidFailToStart();\n }\n });\n return;\n }\n\n this.destBuffers = buffers;\n let imageSource: CanvasImageSource;\n try {\n imageSource = await this.destBuffers[0].asCanvasImageSource();\n } catch (error) {\n /* istanbul ignore else: Check exists incase stop is interleaved with async function calls; hard to mock */\n if (this.inputVideoStream) {\n this.logger.info('buffers are destroyed and pipeline could not start');\n this.forEachObserver(obs => {\n if (obs.processingDidFailToStart) {\n obs.processingDidFailToStart();\n }\n });\n }\n return;\n }\n\n // finally draws the image\n const frameWidth = imageSource.width as number;\n const frameHeight = imageSource.height as number;\n if (frameWidth !== 0 && frameHeight !== 0) {\n if (this.canvasOutput.width !== frameWidth && this.canvasOutput.height !== frameHeight) {\n this.canvasOutput.width = frameWidth;\n this.canvasOutput.height = frameHeight;\n }\n\n this.outputCtx.drawImage(\n imageSource,\n 0,\n 0,\n frameWidth,\n frameHeight,\n 0,\n 0,\n frameWidth,\n frameHeight\n );\n\n if (!this.hasStarted) {\n this.hasStarted = true;\n this.forEachObserver(observer => {\n if (observer.processingDidStart) {\n observer.processingDidStart();\n }\n });\n }\n }\n\n // measures time\n const processVideoLatency = performance.now() - processVideoStart;\n const leave = (1000 * 2) / this.framerate - processVideoLatency; // half fps\n const nextFrameDelay = Math.max(0, 1000 / this.framerate - processVideoLatency);\n\n if (leave <= 0) {\n this.forEachObserver(obs => {\n if (obs.processingLatencyTooHigh) {\n obs.processingLatencyTooHigh(processVideoLatency);\n }\n });\n }\n\n await this.timer.start(nextFrameDelay, this.process.bind(this));\n };\n\n private forEachObserver(\n observerFunc: (observer: VideoFrameProcessorPipelineObserver) => void\n ): void {\n for (const observer of this.observers) {\n setTimeout(() => {\n observerFunc(observer);\n }, 0);\n }\n }\n\n private destroyInputMediaStreamAndBuffers(): void {\n if (this.inputVideoStream) {\n for (const track of this.inputVideoStream.getTracks()) {\n track.stop();\n }\n }\n this.inputVideoStream = null;\n\n for (const buffer of this.sourceBuffers) {\n buffer.destroy();\n }\n this.sourceBuffers = [];\n }\n}\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\n// eslint-disable-next-line es/no-map -- safe\nvar MapPrototype = Map.prototype;\n\nmodule.exports = {\n // eslint-disable-next-line es/no-map -- safe\n Map: Map,\n set: uncurryThis(MapPrototype.set),\n get: uncurryThis(MapPrototype.get),\n has: uncurryThis(MapPrototype.has),\n remove: uncurryThis(MapPrototype['delete']),\n proto: MapPrototype\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar bind = require('../internals/function-bind-context');\nvar aSet = require('../internals/a-set');\nvar iterate = require('../internals/set-iterate');\n\n// `Set.prototype.every` method\n// https://github.com/tc39/proposal-collection-methods\n$({ target: 'Set', proto: true, real: true, forced: true }, {\n every: function every(callbackfn /* , thisArg */) {\n var set = aSet(this);\n var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n return iterate(set, function (value) {\n if (!boundFunction(value, value, set)) return false;\n }, true) !== false;\n }\n});\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar defineGlobalProperty = require('../internals/define-global-property');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar isForced = require('../internals/is-forced');\n\n/*\n options.target - name of the target object\n options.global - target is the global object\n options.stat - export as static methods of target\n options.proto - export as prototype methods of target\n options.real - real prototype method for the `pure` version\n options.forced - export even if the native feature is available\n options.bind - bind methods to the target, required for the `pure` version\n options.wrap - wrap constructors to preventing global pollution, required for the `pure` version\n options.unsafe - use the simple assignment of property instead of delete + defineProperty\n options.sham - add a flag to not completely full polyfills\n options.enumerable - export as enumerable property\n options.dontCallGetSet - prevent calling a getter on target\n options.name - the .name of the function if it does not match the key\n*/\nmodule.exports = function (options, source) {\n var TARGET = options.target;\n var GLOBAL = options.global;\n var STATIC = options.stat;\n var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n if (GLOBAL) {\n target = globalThis;\n } else if (STATIC) {\n target = globalThis[TARGET] || defineGlobalProperty(TARGET, {});\n } else {\n target = globalThis[TARGET] && globalThis[TARGET].prototype;\n }\n if (target) for (key in source) {\n sourceProperty = source[key];\n if (options.dontCallGetSet) {\n descriptor = getOwnPropertyDescriptor(target, key);\n targetProperty = descriptor && descriptor.value;\n } else targetProperty = target[key];\n FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n // contained in target\n if (!FORCED && targetProperty !== undefined) {\n if (typeof sourceProperty == typeof targetProperty) continue;\n copyConstructorProperties(sourceProperty, targetProperty);\n }\n // add a flag to not completely full polyfills\n if (options.sham || (targetProperty && targetProperty.sham)) {\n createNonEnumerableProperty(sourceProperty, 'sham', true);\n }\n defineBuiltIn(target, key, sourceProperty, options);\n }\n};\n","\"use strict\";\r\n\r\n/**\r\n * A minimal base64 implementation for number arrays.\r\n * @memberof util\r\n * @namespace\r\n */\r\nvar base64 = exports;\r\n\r\n/**\r\n * Calculates the byte length of a base64 encoded string.\r\n * @param {string} string Base64 encoded string\r\n * @returns {number} Byte length\r\n */\r\nbase64.length = function length(string) {\r\n var p = string.length;\r\n if (!p)\r\n return 0;\r\n var n = 0;\r\n while (--p % 4 > 1 && string.charAt(p) === \"=\")\r\n ++n;\r\n return Math.ceil(string.length * 3) / 4 - n;\r\n};\r\n\r\n// Base64 encoding table\r\nvar b64 = new Array(64);\r\n\r\n// Base64 decoding table\r\nvar s64 = new Array(123);\r\n\r\n// 65..90, 97..122, 48..57, 43, 47\r\nfor (var i = 0; i < 64;)\r\n s64[b64[i] = i < 26 ? i + 65 : i < 52 ? i + 71 : i < 62 ? i - 4 : i - 59 | 43] = i++;\r\n\r\n/**\r\n * Encodes a buffer to a base64 encoded string.\r\n * @param {Uint8Array} buffer Source buffer\r\n * @param {number} start Source start\r\n * @param {number} end Source end\r\n * @returns {string} Base64 encoded string\r\n */\r\nbase64.encode = function encode(buffer, start, end) {\r\n var parts = null,\r\n chunk = [];\r\n var i = 0, // output index\r\n j = 0, // goto index\r\n t; // temporary\r\n while (start < end) {\r\n var b = buffer[start++];\r\n switch (j) {\r\n case 0:\r\n chunk[i++] = b64[b >> 2];\r\n t = (b & 3) << 4;\r\n j = 1;\r\n break;\r\n case 1:\r\n chunk[i++] = b64[t | b >> 4];\r\n t = (b & 15) << 2;\r\n j = 2;\r\n break;\r\n case 2:\r\n chunk[i++] = b64[t | b >> 6];\r\n chunk[i++] = b64[b & 63];\r\n j = 0;\r\n break;\r\n }\r\n if (i > 8191) {\r\n (parts || (parts = [])).push(String.fromCharCode.apply(String, chunk));\r\n i = 0;\r\n }\r\n }\r\n if (j) {\r\n chunk[i++] = b64[t];\r\n chunk[i++] = 61;\r\n if (j === 1)\r\n chunk[i++] = 61;\r\n }\r\n if (parts) {\r\n if (i)\r\n parts.push(String.fromCharCode.apply(String, chunk.slice(0, i)));\r\n return parts.join(\"\");\r\n }\r\n return String.fromCharCode.apply(String, chunk.slice(0, i));\r\n};\r\n\r\nvar invalidEncoding = \"invalid encoding\";\r\n\r\n/**\r\n * Decodes a base64 encoded string to a buffer.\r\n * @param {string} string Source string\r\n * @param {Uint8Array} buffer Destination buffer\r\n * @param {number} offset Destination offset\r\n * @returns {number} Number of bytes written\r\n * @throws {Error} If encoding is invalid\r\n */\r\nbase64.decode = function decode(string, buffer, offset) {\r\n var start = offset;\r\n var j = 0, // goto index\r\n t; // temporary\r\n for (var i = 0; i < string.length;) {\r\n var c = string.charCodeAt(i++);\r\n if (c === 61 && j > 1)\r\n break;\r\n if ((c = s64[c]) === undefined)\r\n throw Error(invalidEncoding);\r\n switch (j) {\r\n case 0:\r\n t = c;\r\n j = 1;\r\n break;\r\n case 1:\r\n buffer[offset++] = t << 2 | (c & 48) >> 4;\r\n t = c;\r\n j = 2;\r\n break;\r\n case 2:\r\n buffer[offset++] = (t & 15) << 4 | (c & 60) >> 2;\r\n t = c;\r\n j = 3;\r\n break;\r\n case 3:\r\n buffer[offset++] = (t & 3) << 6 | c;\r\n j = 0;\r\n break;\r\n }\r\n }\r\n if (j === 1)\r\n throw Error(invalidEncoding);\r\n return offset - start;\r\n};\r\n\r\n/**\r\n * Tests if the specified string appears to be base64 encoded.\r\n * @param {string} string String to test\r\n * @returns {boolean} `true` if probably base64 encoded, otherwise false\r\n */\r\nbase64.test = function test(string) {\r\n return /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(string);\r\n};\r\n","'use strict';\nvar isCallable = require('../internals/is-callable');\n\nmodule.exports = function (it) {\n return typeof it == 'object' ? it !== null : isCallable(it);\n};\n","'use strict';\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- safe\nexports.f = Object.getOwnPropertySymbols;\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\n/*\n * Browser-compatible JavaScript MD5\n *\n * Modification of JavaScript MD5\n * https://github.com/blueimp/JavaScript-MD5\n *\n * Copyright 2011, Sebastian Tschan\n * https://blueimp.net\n *\n * Licensed under the MIT license:\n * https://opensource.org/licenses/MIT\n *\n * Based on\n * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message\n * Digest Algorithm, as defined in RFC 1321.\n * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n * Distributed under the BSD License\n * See http://pajhome.org.uk/crypt/md5 for more info.\n */\nfunction md5(bytes) {\n if (typeof bytes == 'string') {\n var msg = unescape(encodeURIComponent(bytes)); // UTF8 escape\n\n bytes = new Array(msg.length);\n\n for (var i = 0; i < msg.length; i++) bytes[i] = msg.charCodeAt(i);\n }\n\n return md5ToHexEncodedArray(wordsToMd5(bytesToWords(bytes), bytes.length * 8));\n}\n/*\n * Convert an array of little-endian words to an array of bytes\n */\n\n\nfunction md5ToHexEncodedArray(input) {\n var i;\n var x;\n var output = [];\n var length32 = input.length * 32;\n var hexTab = '0123456789abcdef';\n var hex;\n\n for (i = 0; i < length32; i += 8) {\n x = input[i >> 5] >>> i % 32 & 0xff;\n hex = parseInt(hexTab.charAt(x >>> 4 & 0x0f) + hexTab.charAt(x & 0x0f), 16);\n output.push(hex);\n }\n\n return output;\n}\n/*\n * Calculate the MD5 of an array of little-endian words, and a bit length.\n */\n\n\nfunction wordsToMd5(x, len) {\n /* append padding */\n x[len >> 5] |= 0x80 << len % 32;\n x[(len + 64 >>> 9 << 4) + 14] = len;\n var i;\n var olda;\n var oldb;\n var oldc;\n var oldd;\n var a = 1732584193;\n var b = -271733879;\n var c = -1732584194;\n var d = 271733878;\n\n for (i = 0; i < x.length; i += 16) {\n olda = a;\n oldb = b;\n oldc = c;\n oldd = d;\n a = md5ff(a, b, c, d, x[i], 7, -680876936);\n d = md5ff(d, a, b, c, x[i + 1], 12, -389564586);\n c = md5ff(c, d, a, b, x[i + 2], 17, 606105819);\n b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330);\n a = md5ff(a, b, c, d, x[i + 4], 7, -176418897);\n d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426);\n c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341);\n b = md5ff(b, c, d, a, x[i + 7], 22, -45705983);\n a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416);\n d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417);\n c = md5ff(c, d, a, b, x[i + 10], 17, -42063);\n b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162);\n a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682);\n d = md5ff(d, a, b, c, x[i + 13], 12, -40341101);\n c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290);\n b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329);\n a = md5gg(a, b, c, d, x[i + 1], 5, -165796510);\n d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632);\n c = md5gg(c, d, a, b, x[i + 11], 14, 643717713);\n b = md5gg(b, c, d, a, x[i], 20, -373897302);\n a = md5gg(a, b, c, d, x[i + 5], 5, -701558691);\n d = md5gg(d, a, b, c, x[i + 10], 9, 38016083);\n c = md5gg(c, d, a, b, x[i + 15], 14, -660478335);\n b = md5gg(b, c, d, a, x[i + 4], 20, -405537848);\n a = md5gg(a, b, c, d, x[i + 9], 5, 568446438);\n d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690);\n c = md5gg(c, d, a, b, x[i + 3], 14, -187363961);\n b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501);\n a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467);\n d = md5gg(d, a, b, c, x[i + 2], 9, -51403784);\n c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473);\n b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734);\n a = md5hh(a, b, c, d, x[i + 5], 4, -378558);\n d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463);\n c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562);\n b = md5hh(b, c, d, a, x[i + 14], 23, -35309556);\n a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060);\n d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353);\n c = md5hh(c, d, a, b, x[i + 7], 16, -155497632);\n b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640);\n a = md5hh(a, b, c, d, x[i + 13], 4, 681279174);\n d = md5hh(d, a, b, c, x[i], 11, -358537222);\n c = md5hh(c, d, a, b, x[i + 3], 16, -722521979);\n b = md5hh(b, c, d, a, x[i + 6], 23, 76029189);\n a = md5hh(a, b, c, d, x[i + 9], 4, -640364487);\n d = md5hh(d, a, b, c, x[i + 12], 11, -421815835);\n c = md5hh(c, d, a, b, x[i + 15], 16, 530742520);\n b = md5hh(b, c, d, a, x[i + 2], 23, -995338651);\n a = md5ii(a, b, c, d, x[i], 6, -198630844);\n d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415);\n c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905);\n b = md5ii(b, c, d, a, x[i + 5], 21, -57434055);\n a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571);\n d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606);\n c = md5ii(c, d, a, b, x[i + 10], 15, -1051523);\n b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799);\n a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359);\n d = md5ii(d, a, b, c, x[i + 15], 10, -30611744);\n c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380);\n b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649);\n a = md5ii(a, b, c, d, x[i + 4], 6, -145523070);\n d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379);\n c = md5ii(c, d, a, b, x[i + 2], 15, 718787259);\n b = md5ii(b, c, d, a, x[i + 9], 21, -343485551);\n a = safeAdd(a, olda);\n b = safeAdd(b, oldb);\n c = safeAdd(c, oldc);\n d = safeAdd(d, oldd);\n }\n\n return [a, b, c, d];\n}\n/*\n * Convert an array bytes to an array of little-endian words\n * Characters >255 have their high-byte silently ignored.\n */\n\n\nfunction bytesToWords(input) {\n var i;\n var output = [];\n output[(input.length >> 2) - 1] = undefined;\n\n for (i = 0; i < output.length; i += 1) {\n output[i] = 0;\n }\n\n var length8 = input.length * 8;\n\n for (i = 0; i < length8; i += 8) {\n output[i >> 5] |= (input[i / 8] & 0xff) << i % 32;\n }\n\n return output;\n}\n/*\n * Add integers, wrapping at 2^32. This uses 16-bit operations internally\n * to work around bugs in some JS interpreters.\n */\n\n\nfunction safeAdd(x, y) {\n var lsw = (x & 0xffff) + (y & 0xffff);\n var msw = (x >> 16) + (y >> 16) + (lsw >> 16);\n return msw << 16 | lsw & 0xffff;\n}\n/*\n * Bitwise rotate a 32-bit number to the left.\n */\n\n\nfunction bitRotateLeft(num, cnt) {\n return num << cnt | num >>> 32 - cnt;\n}\n/*\n * These functions implement the four basic operations the algorithm uses.\n */\n\n\nfunction md5cmn(q, a, b, x, s, t) {\n return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b);\n}\n\nfunction md5ff(a, b, c, d, x, s, t) {\n return md5cmn(b & c | ~b & d, a, b, x, s, t);\n}\n\nfunction md5gg(a, b, c, d, x, s, t) {\n return md5cmn(b & d | c & ~d, a, b, x, s, t);\n}\n\nfunction md5hh(a, b, c, d, x, s, t) {\n return md5cmn(b ^ c ^ d, a, b, x, s, t);\n}\n\nfunction md5ii(a, b, c, d, x, s, t) {\n return md5cmn(c ^ (b | ~d), a, b, x, s, t);\n}\n\nvar _default = md5;\nexports.default = _default;","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['kinesisvideo'] = {};\nAWS.KinesisVideo = Service.defineService('kinesisvideo', ['2017-09-30']);\nObject.defineProperty(apiLoader.services['kinesisvideo'], '2017-09-30', {\n get: function get() {\n var model = require('../apis/kinesisvideo-2017-09-30.min.json');\n model.paginators = require('../apis/kinesisvideo-2017-09-30.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.KinesisVideo;\n","var AWS = require('../core');\n\nAWS.util.update(AWS.EC2.prototype, {\n /**\n * @api private\n */\n setupRequestListeners: function setupRequestListeners(request) {\n request.removeListener('extractError', AWS.EventListeners.Query.EXTRACT_ERROR);\n request.addListener('extractError', this.extractError);\n\n if (request.operation === 'copySnapshot') {\n request.onAsync('validate', this.buildCopySnapshotPresignedUrl);\n }\n },\n\n /**\n * @api private\n */\n buildCopySnapshotPresignedUrl: function buildCopySnapshotPresignedUrl(req, done) {\n if (req.params.PresignedUrl || req._subRequest) {\n return done();\n }\n\n req.params = AWS.util.copy(req.params);\n req.params.DestinationRegion = req.service.config.region;\n\n var config = AWS.util.copy(req.service.config);\n delete config.endpoint;\n config.region = req.params.SourceRegion;\n var svc = new req.service.constructor(config);\n var newReq = svc[req.operation](req.params);\n newReq._subRequest = true;\n newReq.presign(function(err, url) {\n if (err) done(err);\n else {\n req.params.PresignedUrl = url;\n done();\n }\n });\n },\n\n /**\n * @api private\n */\n extractError: function extractError(resp) {\n // EC2 nests the error code and message deeper than other AWS Query services.\n var httpResponse = resp.httpResponse;\n var data = new AWS.XML.Parser().parse(httpResponse.body.toString() || '');\n if (data.Errors) {\n resp.error = AWS.util.error(new Error(), {\n code: data.Errors.Error.Code,\n message: data.Errors.Error.Message\n });\n } else {\n resp.error = AWS.util.error(new Error(), {\n code: httpResponse.statusCode,\n message: null\n });\n }\n resp.error.requestId = data.RequestID || null;\n }\n});\n","/*eslint-disable block-scoped-var, id-length, no-control-regex, no-magic-numbers, no-prototype-builtins, no-redeclare, no-shadow, no-var, sort-vars*/\n\"use strict\";\n\nvar $protobuf = require(\"protobufjs/minimal\");\n\n// Common aliases\nvar $Reader = $protobuf.Reader, $Writer = $protobuf.Writer, $util = $protobuf.util;\n\n// Exported root namespace\nvar $root = $protobuf.roots[\"default\"] || ($protobuf.roots[\"default\"] = {});\n\n$root.SdkSignalFrame = (function() {\n\n /**\n * Properties of a SdkSignalFrame.\n * @name ISdkSignalFrame\n * @interface ISdkSignalFrame\n * @property {number|Long} timestampMs SdkSignalFrame timestampMs\n * @property {SdkSignalFrame.Type} type SdkSignalFrame type\n * @property {ISdkErrorFrame|null} [error] SdkSignalFrame error\n * @property {ISdkJoinFrame|null} [join] SdkSignalFrame join\n * @property {ISdkJoinAckFrame|null} [joinack] SdkSignalFrame joinack\n * @property {ISdkSubscribeFrame|null} [sub] SdkSignalFrame sub\n * @property {ISdkSubscribeAckFrame|null} [suback] SdkSignalFrame suback\n * @property {ISdkIndexFrame|null} [index] SdkSignalFrame index\n * @property {ISdkPauseResumeFrame|null} [pause] SdkSignalFrame pause\n * @property {ISdkLeaveFrame|null} [leave] SdkSignalFrame leave\n * @property {ISdkLeaveAckFrame|null} [leaveAck] SdkSignalFrame leaveAck\n * @property {ISdkBitrateFrame|null} [bitrates] SdkSignalFrame bitrates\n * @property {ISdkAudioControlFrame|null} [audioControl] SdkSignalFrame audioControl\n * @property {ISdkAudioMetadataFrame|null} [audioMetadata] SdkSignalFrame audioMetadata\n * @property {ISdkAudioStreamIdInfoFrame|null} [audioStreamIdInfo] SdkSignalFrame audioStreamIdInfo\n * @property {ISdkPingPongFrame|null} [pingPong] SdkSignalFrame pingPong\n * @property {ISdkAudioStatusFrame|null} [audioStatus] SdkSignalFrame audioStatus\n * @property {ISdkClientMetricFrame|null} [clientMetric] SdkSignalFrame clientMetric\n * @property {ISdkDataMessageFrame|null} [dataMessage] SdkSignalFrame dataMessage\n * @property {ISdkRemoteVideoUpdateFrame|null} [remoteVideoUpdate] SdkSignalFrame remoteVideoUpdate\n * @property {ISdkPrimaryMeetingJoinFrame|null} [primaryMeetingJoin] SdkSignalFrame primaryMeetingJoin\n * @property {ISdkPrimaryMeetingJoinAckFrame|null} [primaryMeetingJoinAck] SdkSignalFrame primaryMeetingJoinAck\n * @property {ISdkPrimaryMeetingLeaveFrame|null} [primaryMeetingLeave] SdkSignalFrame primaryMeetingLeave\n * @property {ISdkNotificationFrame|null} [notification] SdkSignalFrame notification\n */\n\n /**\n * Constructs a new SdkSignalFrame.\n * @name SdkSignalFrame\n * @classdesc Represents a SdkSignalFrame.\n * @implements ISdkSignalFrame\n * @constructor\n * @param {ISdkSignalFrame=} [properties] Properties to set\n */\n function SdkSignalFrame(properties) {\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * SdkSignalFrame timestampMs.\n * @member {number|Long} timestampMs\n * @memberof SdkSignalFrame\n * @instance\n */\n SdkSignalFrame.prototype.timestampMs = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * SdkSignalFrame type.\n * @member {SdkSignalFrame.Type} type\n * @memberof SdkSignalFrame\n * @instance\n */\n SdkSignalFrame.prototype.type = 1;\n\n /**\n * SdkSignalFrame error.\n * @member {ISdkErrorFrame|null|undefined} error\n * @memberof SdkSignalFrame\n * @instance\n */\n SdkSignalFrame.prototype.error = null;\n\n /**\n * SdkSignalFrame join.\n * @member {ISdkJoinFrame|null|undefined} join\n * @memberof SdkSignalFrame\n * @instance\n */\n SdkSignalFrame.prototype.join = null;\n\n /**\n * SdkSignalFrame joinack.\n * @member {ISdkJoinAckFrame|null|undefined} joinack\n * @memberof SdkSignalFrame\n * @instance\n */\n SdkSignalFrame.prototype.joinack = null;\n\n /**\n * SdkSignalFrame sub.\n * @member {ISdkSubscribeFrame|null|undefined} sub\n * @memberof SdkSignalFrame\n * @instance\n */\n SdkSignalFrame.prototype.sub = null;\n\n /**\n * SdkSignalFrame suback.\n * @member {ISdkSubscribeAckFrame|null|undefined} suback\n * @memberof SdkSignalFrame\n * @instance\n */\n SdkSignalFrame.prototype.suback = null;\n\n /**\n * SdkSignalFrame index.\n * @member {ISdkIndexFrame|null|undefined} index\n * @memberof SdkSignalFrame\n * @instance\n */\n SdkSignalFrame.prototype.index = null;\n\n /**\n * SdkSignalFrame pause.\n * @member {ISdkPauseResumeFrame|null|undefined} pause\n * @memberof SdkSignalFrame\n * @instance\n */\n SdkSignalFrame.prototype.pause = null;\n\n /**\n * SdkSignalFrame leave.\n * @member {ISdkLeaveFrame|null|undefined} leave\n * @memberof SdkSignalFrame\n * @instance\n */\n SdkSignalFrame.prototype.leave = null;\n\n /**\n * SdkSignalFrame leaveAck.\n * @member {ISdkLeaveAckFrame|null|undefined} leaveAck\n * @memberof SdkSignalFrame\n * @instance\n */\n SdkSignalFrame.prototype.leaveAck = null;\n\n /**\n * SdkSignalFrame bitrates.\n * @member {ISdkBitrateFrame|null|undefined} bitrates\n * @memberof SdkSignalFrame\n * @instance\n */\n SdkSignalFrame.prototype.bitrates = null;\n\n /**\n * SdkSignalFrame audioControl.\n * @member {ISdkAudioControlFrame|null|undefined} audioControl\n * @memberof SdkSignalFrame\n * @instance\n */\n SdkSignalFrame.prototype.audioControl = null;\n\n /**\n * SdkSignalFrame audioMetadata.\n * @member {ISdkAudioMetadataFrame|null|undefined} audioMetadata\n * @memberof SdkSignalFrame\n * @instance\n */\n SdkSignalFrame.prototype.audioMetadata = null;\n\n /**\n * SdkSignalFrame audioStreamIdInfo.\n * @member {ISdkAudioStreamIdInfoFrame|null|undefined} audioStreamIdInfo\n * @memberof SdkSignalFrame\n * @instance\n */\n SdkSignalFrame.prototype.audioStreamIdInfo = null;\n\n /**\n * SdkSignalFrame pingPong.\n * @member {ISdkPingPongFrame|null|undefined} pingPong\n * @memberof SdkSignalFrame\n * @instance\n */\n SdkSignalFrame.prototype.pingPong = null;\n\n /**\n * SdkSignalFrame audioStatus.\n * @member {ISdkAudioStatusFrame|null|undefined} audioStatus\n * @memberof SdkSignalFrame\n * @instance\n */\n SdkSignalFrame.prototype.audioStatus = null;\n\n /**\n * SdkSignalFrame clientMetric.\n * @member {ISdkClientMetricFrame|null|undefined} clientMetric\n * @memberof SdkSignalFrame\n * @instance\n */\n SdkSignalFrame.prototype.clientMetric = null;\n\n /**\n * SdkSignalFrame dataMessage.\n * @member {ISdkDataMessageFrame|null|undefined} dataMessage\n * @memberof SdkSignalFrame\n * @instance\n */\n SdkSignalFrame.prototype.dataMessage = null;\n\n /**\n * SdkSignalFrame remoteVideoUpdate.\n * @member {ISdkRemoteVideoUpdateFrame|null|undefined} remoteVideoUpdate\n * @memberof SdkSignalFrame\n * @instance\n */\n SdkSignalFrame.prototype.remoteVideoUpdate = null;\n\n /**\n * SdkSignalFrame primaryMeetingJoin.\n * @member {ISdkPrimaryMeetingJoinFrame|null|undefined} primaryMeetingJoin\n * @memberof SdkSignalFrame\n * @instance\n */\n SdkSignalFrame.prototype.primaryMeetingJoin = null;\n\n /**\n * SdkSignalFrame primaryMeetingJoinAck.\n * @member {ISdkPrimaryMeetingJoinAckFrame|null|undefined} primaryMeetingJoinAck\n * @memberof SdkSignalFrame\n * @instance\n */\n SdkSignalFrame.prototype.primaryMeetingJoinAck = null;\n\n /**\n * SdkSignalFrame primaryMeetingLeave.\n * @member {ISdkPrimaryMeetingLeaveFrame|null|undefined} primaryMeetingLeave\n * @memberof SdkSignalFrame\n * @instance\n */\n SdkSignalFrame.prototype.primaryMeetingLeave = null;\n\n /**\n * SdkSignalFrame notification.\n * @member {ISdkNotificationFrame|null|undefined} notification\n * @memberof SdkSignalFrame\n * @instance\n */\n SdkSignalFrame.prototype.notification = null;\n\n /**\n * Creates a new SdkSignalFrame instance using the specified properties.\n * @function create\n * @memberof SdkSignalFrame\n * @static\n * @param {ISdkSignalFrame=} [properties] Properties to set\n * @returns {SdkSignalFrame} SdkSignalFrame instance\n */\n SdkSignalFrame.create = function create(properties) {\n return new SdkSignalFrame(properties);\n };\n\n /**\n * Encodes the specified SdkSignalFrame message. Does not implicitly {@link SdkSignalFrame.verify|verify} messages.\n * @function encode\n * @memberof SdkSignalFrame\n * @static\n * @param {ISdkSignalFrame} message SdkSignalFrame message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n SdkSignalFrame.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n writer.uint32(/* id 1, wireType 0 =*/8).uint64(message.timestampMs);\n writer.uint32(/* id 2, wireType 0 =*/16).int32(message.type);\n if (message.error != null && Object.hasOwnProperty.call(message, \"error\"))\n $root.SdkErrorFrame.encode(message.error, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim();\n if (message.join != null && Object.hasOwnProperty.call(message, \"join\"))\n $root.SdkJoinFrame.encode(message.join, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim();\n if (message.joinack != null && Object.hasOwnProperty.call(message, \"joinack\"))\n $root.SdkJoinAckFrame.encode(message.joinack, writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim();\n if (message.sub != null && Object.hasOwnProperty.call(message, \"sub\"))\n $root.SdkSubscribeFrame.encode(message.sub, writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim();\n if (message.suback != null && Object.hasOwnProperty.call(message, \"suback\"))\n $root.SdkSubscribeAckFrame.encode(message.suback, writer.uint32(/* id 7, wireType 2 =*/58).fork()).ldelim();\n if (message.index != null && Object.hasOwnProperty.call(message, \"index\"))\n $root.SdkIndexFrame.encode(message.index, writer.uint32(/* id 8, wireType 2 =*/66).fork()).ldelim();\n if (message.pause != null && Object.hasOwnProperty.call(message, \"pause\"))\n $root.SdkPauseResumeFrame.encode(message.pause, writer.uint32(/* id 10, wireType 2 =*/82).fork()).ldelim();\n if (message.leave != null && Object.hasOwnProperty.call(message, \"leave\"))\n $root.SdkLeaveFrame.encode(message.leave, writer.uint32(/* id 11, wireType 2 =*/90).fork()).ldelim();\n if (message.leaveAck != null && Object.hasOwnProperty.call(message, \"leaveAck\"))\n $root.SdkLeaveAckFrame.encode(message.leaveAck, writer.uint32(/* id 12, wireType 2 =*/98).fork()).ldelim();\n if (message.bitrates != null && Object.hasOwnProperty.call(message, \"bitrates\"))\n $root.SdkBitrateFrame.encode(message.bitrates, writer.uint32(/* id 14, wireType 2 =*/114).fork()).ldelim();\n if (message.audioControl != null && Object.hasOwnProperty.call(message, \"audioControl\"))\n $root.SdkAudioControlFrame.encode(message.audioControl, writer.uint32(/* id 17, wireType 2 =*/138).fork()).ldelim();\n if (message.audioMetadata != null && Object.hasOwnProperty.call(message, \"audioMetadata\"))\n $root.SdkAudioMetadataFrame.encode(message.audioMetadata, writer.uint32(/* id 18, wireType 2 =*/146).fork()).ldelim();\n if (message.audioStreamIdInfo != null && Object.hasOwnProperty.call(message, \"audioStreamIdInfo\"))\n $root.SdkAudioStreamIdInfoFrame.encode(message.audioStreamIdInfo, writer.uint32(/* id 19, wireType 2 =*/154).fork()).ldelim();\n if (message.pingPong != null && Object.hasOwnProperty.call(message, \"pingPong\"))\n $root.SdkPingPongFrame.encode(message.pingPong, writer.uint32(/* id 20, wireType 2 =*/162).fork()).ldelim();\n if (message.audioStatus != null && Object.hasOwnProperty.call(message, \"audioStatus\"))\n $root.SdkAudioStatusFrame.encode(message.audioStatus, writer.uint32(/* id 21, wireType 2 =*/170).fork()).ldelim();\n if (message.clientMetric != null && Object.hasOwnProperty.call(message, \"clientMetric\"))\n $root.SdkClientMetricFrame.encode(message.clientMetric, writer.uint32(/* id 22, wireType 2 =*/178).fork()).ldelim();\n if (message.dataMessage != null && Object.hasOwnProperty.call(message, \"dataMessage\"))\n $root.SdkDataMessageFrame.encode(message.dataMessage, writer.uint32(/* id 23, wireType 2 =*/186).fork()).ldelim();\n if (message.remoteVideoUpdate != null && Object.hasOwnProperty.call(message, \"remoteVideoUpdate\"))\n $root.SdkRemoteVideoUpdateFrame.encode(message.remoteVideoUpdate, writer.uint32(/* id 25, wireType 2 =*/202).fork()).ldelim();\n if (message.primaryMeetingJoin != null && Object.hasOwnProperty.call(message, \"primaryMeetingJoin\"))\n $root.SdkPrimaryMeetingJoinFrame.encode(message.primaryMeetingJoin, writer.uint32(/* id 26, wireType 2 =*/210).fork()).ldelim();\n if (message.primaryMeetingJoinAck != null && Object.hasOwnProperty.call(message, \"primaryMeetingJoinAck\"))\n $root.SdkPrimaryMeetingJoinAckFrame.encode(message.primaryMeetingJoinAck, writer.uint32(/* id 27, wireType 2 =*/218).fork()).ldelim();\n if (message.primaryMeetingLeave != null && Object.hasOwnProperty.call(message, \"primaryMeetingLeave\"))\n $root.SdkPrimaryMeetingLeaveFrame.encode(message.primaryMeetingLeave, writer.uint32(/* id 28, wireType 2 =*/226).fork()).ldelim();\n if (message.notification != null && Object.hasOwnProperty.call(message, \"notification\"))\n $root.SdkNotificationFrame.encode(message.notification, writer.uint32(/* id 35, wireType 2 =*/282).fork()).ldelim();\n return writer;\n };\n\n /**\n * Encodes the specified SdkSignalFrame message, length delimited. Does not implicitly {@link SdkSignalFrame.verify|verify} messages.\n * @function encodeDelimited\n * @memberof SdkSignalFrame\n * @static\n * @param {ISdkSignalFrame} message SdkSignalFrame message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n SdkSignalFrame.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a SdkSignalFrame message from the specified reader or buffer.\n * @function decode\n * @memberof SdkSignalFrame\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {SdkSignalFrame} SdkSignalFrame\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n SdkSignalFrame.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.SdkSignalFrame();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n message.timestampMs = reader.uint64();\n break;\n }\n case 2: {\n message.type = reader.int32();\n break;\n }\n case 3: {\n message.error = $root.SdkErrorFrame.decode(reader, reader.uint32());\n break;\n }\n case 4: {\n message.join = $root.SdkJoinFrame.decode(reader, reader.uint32());\n break;\n }\n case 5: {\n message.joinack = $root.SdkJoinAckFrame.decode(reader, reader.uint32());\n break;\n }\n case 6: {\n message.sub = $root.SdkSubscribeFrame.decode(reader, reader.uint32());\n break;\n }\n case 7: {\n message.suback = $root.SdkSubscribeAckFrame.decode(reader, reader.uint32());\n break;\n }\n case 8: {\n message.index = $root.SdkIndexFrame.decode(reader, reader.uint32());\n break;\n }\n case 10: {\n message.pause = $root.SdkPauseResumeFrame.decode(reader, reader.uint32());\n break;\n }\n case 11: {\n message.leave = $root.SdkLeaveFrame.decode(reader, reader.uint32());\n break;\n }\n case 12: {\n message.leaveAck = $root.SdkLeaveAckFrame.decode(reader, reader.uint32());\n break;\n }\n case 14: {\n message.bitrates = $root.SdkBitrateFrame.decode(reader, reader.uint32());\n break;\n }\n case 17: {\n message.audioControl = $root.SdkAudioControlFrame.decode(reader, reader.uint32());\n break;\n }\n case 18: {\n message.audioMetadata = $root.SdkAudioMetadataFrame.decode(reader, reader.uint32());\n break;\n }\n case 19: {\n message.audioStreamIdInfo = $root.SdkAudioStreamIdInfoFrame.decode(reader, reader.uint32());\n break;\n }\n case 20: {\n message.pingPong = $root.SdkPingPongFrame.decode(reader, reader.uint32());\n break;\n }\n case 21: {\n message.audioStatus = $root.SdkAudioStatusFrame.decode(reader, reader.uint32());\n break;\n }\n case 22: {\n message.clientMetric = $root.SdkClientMetricFrame.decode(reader, reader.uint32());\n break;\n }\n case 23: {\n message.dataMessage = $root.SdkDataMessageFrame.decode(reader, reader.uint32());\n break;\n }\n case 25: {\n message.remoteVideoUpdate = $root.SdkRemoteVideoUpdateFrame.decode(reader, reader.uint32());\n break;\n }\n case 26: {\n message.primaryMeetingJoin = $root.SdkPrimaryMeetingJoinFrame.decode(reader, reader.uint32());\n break;\n }\n case 27: {\n message.primaryMeetingJoinAck = $root.SdkPrimaryMeetingJoinAckFrame.decode(reader, reader.uint32());\n break;\n }\n case 28: {\n message.primaryMeetingLeave = $root.SdkPrimaryMeetingLeaveFrame.decode(reader, reader.uint32());\n break;\n }\n case 35: {\n message.notification = $root.SdkNotificationFrame.decode(reader, reader.uint32());\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n if (!message.hasOwnProperty(\"timestampMs\"))\n throw $util.ProtocolError(\"missing required 'timestampMs'\", { instance: message });\n if (!message.hasOwnProperty(\"type\"))\n throw $util.ProtocolError(\"missing required 'type'\", { instance: message });\n return message;\n };\n\n /**\n * Decodes a SdkSignalFrame message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof SdkSignalFrame\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {SdkSignalFrame} SdkSignalFrame\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n SdkSignalFrame.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a SdkSignalFrame message.\n * @function verify\n * @memberof SdkSignalFrame\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n SdkSignalFrame.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (!$util.isInteger(message.timestampMs) && !(message.timestampMs && $util.isInteger(message.timestampMs.low) && $util.isInteger(message.timestampMs.high)))\n return \"timestampMs: integer|Long expected\";\n switch (message.type) {\n default:\n return \"type: enum value expected\";\n case 1:\n case 2:\n case 3:\n case 4:\n case 5:\n case 7:\n case 8:\n case 9:\n case 10:\n case 13:\n case 16:\n case 17:\n case 18:\n case 19:\n case 20:\n case 21:\n case 22:\n case 24:\n case 25:\n case 26:\n case 27:\n case 34:\n break;\n }\n if (message.error != null && message.hasOwnProperty(\"error\")) {\n var error = $root.SdkErrorFrame.verify(message.error);\n if (error)\n return \"error.\" + error;\n }\n if (message.join != null && message.hasOwnProperty(\"join\")) {\n var error = $root.SdkJoinFrame.verify(message.join);\n if (error)\n return \"join.\" + error;\n }\n if (message.joinack != null && message.hasOwnProperty(\"joinack\")) {\n var error = $root.SdkJoinAckFrame.verify(message.joinack);\n if (error)\n return \"joinack.\" + error;\n }\n if (message.sub != null && message.hasOwnProperty(\"sub\")) {\n var error = $root.SdkSubscribeFrame.verify(message.sub);\n if (error)\n return \"sub.\" + error;\n }\n if (message.suback != null && message.hasOwnProperty(\"suback\")) {\n var error = $root.SdkSubscribeAckFrame.verify(message.suback);\n if (error)\n return \"suback.\" + error;\n }\n if (message.index != null && message.hasOwnProperty(\"index\")) {\n var error = $root.SdkIndexFrame.verify(message.index);\n if (error)\n return \"index.\" + error;\n }\n if (message.pause != null && message.hasOwnProperty(\"pause\")) {\n var error = $root.SdkPauseResumeFrame.verify(message.pause);\n if (error)\n return \"pause.\" + error;\n }\n if (message.leave != null && message.hasOwnProperty(\"leave\")) {\n var error = $root.SdkLeaveFrame.verify(message.leave);\n if (error)\n return \"leave.\" + error;\n }\n if (message.leaveAck != null && message.hasOwnProperty(\"leaveAck\")) {\n var error = $root.SdkLeaveAckFrame.verify(message.leaveAck);\n if (error)\n return \"leaveAck.\" + error;\n }\n if (message.bitrates != null && message.hasOwnProperty(\"bitrates\")) {\n var error = $root.SdkBitrateFrame.verify(message.bitrates);\n if (error)\n return \"bitrates.\" + error;\n }\n if (message.audioControl != null && message.hasOwnProperty(\"audioControl\")) {\n var error = $root.SdkAudioControlFrame.verify(message.audioControl);\n if (error)\n return \"audioControl.\" + error;\n }\n if (message.audioMetadata != null && message.hasOwnProperty(\"audioMetadata\")) {\n var error = $root.SdkAudioMetadataFrame.verify(message.audioMetadata);\n if (error)\n return \"audioMetadata.\" + error;\n }\n if (message.audioStreamIdInfo != null && message.hasOwnProperty(\"audioStreamIdInfo\")) {\n var error = $root.SdkAudioStreamIdInfoFrame.verify(message.audioStreamIdInfo);\n if (error)\n return \"audioStreamIdInfo.\" + error;\n }\n if (message.pingPong != null && message.hasOwnProperty(\"pingPong\")) {\n var error = $root.SdkPingPongFrame.verify(message.pingPong);\n if (error)\n return \"pingPong.\" + error;\n }\n if (message.audioStatus != null && message.hasOwnProperty(\"audioStatus\")) {\n var error = $root.SdkAudioStatusFrame.verify(message.audioStatus);\n if (error)\n return \"audioStatus.\" + error;\n }\n if (message.clientMetric != null && message.hasOwnProperty(\"clientMetric\")) {\n var error = $root.SdkClientMetricFrame.verify(message.clientMetric);\n if (error)\n return \"clientMetric.\" + error;\n }\n if (message.dataMessage != null && message.hasOwnProperty(\"dataMessage\")) {\n var error = $root.SdkDataMessageFrame.verify(message.dataMessage);\n if (error)\n return \"dataMessage.\" + error;\n }\n if (message.remoteVideoUpdate != null && message.hasOwnProperty(\"remoteVideoUpdate\")) {\n var error = $root.SdkRemoteVideoUpdateFrame.verify(message.remoteVideoUpdate);\n if (error)\n return \"remoteVideoUpdate.\" + error;\n }\n if (message.primaryMeetingJoin != null && message.hasOwnProperty(\"primaryMeetingJoin\")) {\n var error = $root.SdkPrimaryMeetingJoinFrame.verify(message.primaryMeetingJoin);\n if (error)\n return \"primaryMeetingJoin.\" + error;\n }\n if (message.primaryMeetingJoinAck != null && message.hasOwnProperty(\"primaryMeetingJoinAck\")) {\n var error = $root.SdkPrimaryMeetingJoinAckFrame.verify(message.primaryMeetingJoinAck);\n if (error)\n return \"primaryMeetingJoinAck.\" + error;\n }\n if (message.primaryMeetingLeave != null && message.hasOwnProperty(\"primaryMeetingLeave\")) {\n var error = $root.SdkPrimaryMeetingLeaveFrame.verify(message.primaryMeetingLeave);\n if (error)\n return \"primaryMeetingLeave.\" + error;\n }\n if (message.notification != null && message.hasOwnProperty(\"notification\")) {\n var error = $root.SdkNotificationFrame.verify(message.notification);\n if (error)\n return \"notification.\" + error;\n }\n return null;\n };\n\n /**\n * Creates a SdkSignalFrame message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof SdkSignalFrame\n * @static\n * @param {Object.} object Plain object\n * @returns {SdkSignalFrame} SdkSignalFrame\n */\n SdkSignalFrame.fromObject = function fromObject(object) {\n if (object instanceof $root.SdkSignalFrame)\n return object;\n var message = new $root.SdkSignalFrame();\n if (object.timestampMs != null)\n if ($util.Long)\n (message.timestampMs = $util.Long.fromValue(object.timestampMs)).unsigned = true;\n else if (typeof object.timestampMs === \"string\")\n message.timestampMs = parseInt(object.timestampMs, 10);\n else if (typeof object.timestampMs === \"number\")\n message.timestampMs = object.timestampMs;\n else if (typeof object.timestampMs === \"object\")\n message.timestampMs = new $util.LongBits(object.timestampMs.low >>> 0, object.timestampMs.high >>> 0).toNumber(true);\n switch (object.type) {\n default:\n if (typeof object.type === \"number\") {\n message.type = object.type;\n break;\n }\n break;\n case \"JOIN\":\n case 1:\n message.type = 1;\n break;\n case \"JOIN_ACK\":\n case 2:\n message.type = 2;\n break;\n case \"SUBSCRIBE\":\n case 3:\n message.type = 3;\n break;\n case \"SUBSCRIBE_ACK\":\n case 4:\n message.type = 4;\n break;\n case \"INDEX\":\n case 5:\n message.type = 5;\n break;\n case \"PAUSE\":\n case 7:\n message.type = 7;\n break;\n case \"RESUME\":\n case 8:\n message.type = 8;\n break;\n case \"LEAVE\":\n case 9:\n message.type = 9;\n break;\n case \"LEAVE_ACK\":\n case 10:\n message.type = 10;\n break;\n case \"BITRATES\":\n case 13:\n message.type = 13;\n break;\n case \"AUDIO_CONTROL\":\n case 16:\n message.type = 16;\n break;\n case \"AUDIO_METADATA\":\n case 17:\n message.type = 17;\n break;\n case \"AUDIO_STREAM_ID_INFO\":\n case 18:\n message.type = 18;\n break;\n case \"PING_PONG\":\n case 19:\n message.type = 19;\n break;\n case \"AUDIO_STATUS\":\n case 20:\n message.type = 20;\n break;\n case \"CLIENT_METRIC\":\n case 21:\n message.type = 21;\n break;\n case \"DATA_MESSAGE\":\n case 22:\n message.type = 22;\n break;\n case \"REMOTE_VIDEO_UPDATE\":\n case 24:\n message.type = 24;\n break;\n case \"PRIMARY_MEETING_JOIN\":\n case 25:\n message.type = 25;\n break;\n case \"PRIMARY_MEETING_JOIN_ACK\":\n case 26:\n message.type = 26;\n break;\n case \"PRIMARY_MEETING_LEAVE\":\n case 27:\n message.type = 27;\n break;\n case \"NOTIFICATION\":\n case 34:\n message.type = 34;\n break;\n }\n if (object.error != null) {\n if (typeof object.error !== \"object\")\n throw TypeError(\".SdkSignalFrame.error: object expected\");\n message.error = $root.SdkErrorFrame.fromObject(object.error);\n }\n if (object.join != null) {\n if (typeof object.join !== \"object\")\n throw TypeError(\".SdkSignalFrame.join: object expected\");\n message.join = $root.SdkJoinFrame.fromObject(object.join);\n }\n if (object.joinack != null) {\n if (typeof object.joinack !== \"object\")\n throw TypeError(\".SdkSignalFrame.joinack: object expected\");\n message.joinack = $root.SdkJoinAckFrame.fromObject(object.joinack);\n }\n if (object.sub != null) {\n if (typeof object.sub !== \"object\")\n throw TypeError(\".SdkSignalFrame.sub: object expected\");\n message.sub = $root.SdkSubscribeFrame.fromObject(object.sub);\n }\n if (object.suback != null) {\n if (typeof object.suback !== \"object\")\n throw TypeError(\".SdkSignalFrame.suback: object expected\");\n message.suback = $root.SdkSubscribeAckFrame.fromObject(object.suback);\n }\n if (object.index != null) {\n if (typeof object.index !== \"object\")\n throw TypeError(\".SdkSignalFrame.index: object expected\");\n message.index = $root.SdkIndexFrame.fromObject(object.index);\n }\n if (object.pause != null) {\n if (typeof object.pause !== \"object\")\n throw TypeError(\".SdkSignalFrame.pause: object expected\");\n message.pause = $root.SdkPauseResumeFrame.fromObject(object.pause);\n }\n if (object.leave != null) {\n if (typeof object.leave !== \"object\")\n throw TypeError(\".SdkSignalFrame.leave: object expected\");\n message.leave = $root.SdkLeaveFrame.fromObject(object.leave);\n }\n if (object.leaveAck != null) {\n if (typeof object.leaveAck !== \"object\")\n throw TypeError(\".SdkSignalFrame.leaveAck: object expected\");\n message.leaveAck = $root.SdkLeaveAckFrame.fromObject(object.leaveAck);\n }\n if (object.bitrates != null) {\n if (typeof object.bitrates !== \"object\")\n throw TypeError(\".SdkSignalFrame.bitrates: object expected\");\n message.bitrates = $root.SdkBitrateFrame.fromObject(object.bitrates);\n }\n if (object.audioControl != null) {\n if (typeof object.audioControl !== \"object\")\n throw TypeError(\".SdkSignalFrame.audioControl: object expected\");\n message.audioControl = $root.SdkAudioControlFrame.fromObject(object.audioControl);\n }\n if (object.audioMetadata != null) {\n if (typeof object.audioMetadata !== \"object\")\n throw TypeError(\".SdkSignalFrame.audioMetadata: object expected\");\n message.audioMetadata = $root.SdkAudioMetadataFrame.fromObject(object.audioMetadata);\n }\n if (object.audioStreamIdInfo != null) {\n if (typeof object.audioStreamIdInfo !== \"object\")\n throw TypeError(\".SdkSignalFrame.audioStreamIdInfo: object expected\");\n message.audioStreamIdInfo = $root.SdkAudioStreamIdInfoFrame.fromObject(object.audioStreamIdInfo);\n }\n if (object.pingPong != null) {\n if (typeof object.pingPong !== \"object\")\n throw TypeError(\".SdkSignalFrame.pingPong: object expected\");\n message.pingPong = $root.SdkPingPongFrame.fromObject(object.pingPong);\n }\n if (object.audioStatus != null) {\n if (typeof object.audioStatus !== \"object\")\n throw TypeError(\".SdkSignalFrame.audioStatus: object expected\");\n message.audioStatus = $root.SdkAudioStatusFrame.fromObject(object.audioStatus);\n }\n if (object.clientMetric != null) {\n if (typeof object.clientMetric !== \"object\")\n throw TypeError(\".SdkSignalFrame.clientMetric: object expected\");\n message.clientMetric = $root.SdkClientMetricFrame.fromObject(object.clientMetric);\n }\n if (object.dataMessage != null) {\n if (typeof object.dataMessage !== \"object\")\n throw TypeError(\".SdkSignalFrame.dataMessage: object expected\");\n message.dataMessage = $root.SdkDataMessageFrame.fromObject(object.dataMessage);\n }\n if (object.remoteVideoUpdate != null) {\n if (typeof object.remoteVideoUpdate !== \"object\")\n throw TypeError(\".SdkSignalFrame.remoteVideoUpdate: object expected\");\n message.remoteVideoUpdate = $root.SdkRemoteVideoUpdateFrame.fromObject(object.remoteVideoUpdate);\n }\n if (object.primaryMeetingJoin != null) {\n if (typeof object.primaryMeetingJoin !== \"object\")\n throw TypeError(\".SdkSignalFrame.primaryMeetingJoin: object expected\");\n message.primaryMeetingJoin = $root.SdkPrimaryMeetingJoinFrame.fromObject(object.primaryMeetingJoin);\n }\n if (object.primaryMeetingJoinAck != null) {\n if (typeof object.primaryMeetingJoinAck !== \"object\")\n throw TypeError(\".SdkSignalFrame.primaryMeetingJoinAck: object expected\");\n message.primaryMeetingJoinAck = $root.SdkPrimaryMeetingJoinAckFrame.fromObject(object.primaryMeetingJoinAck);\n }\n if (object.primaryMeetingLeave != null) {\n if (typeof object.primaryMeetingLeave !== \"object\")\n throw TypeError(\".SdkSignalFrame.primaryMeetingLeave: object expected\");\n message.primaryMeetingLeave = $root.SdkPrimaryMeetingLeaveFrame.fromObject(object.primaryMeetingLeave);\n }\n if (object.notification != null) {\n if (typeof object.notification !== \"object\")\n throw TypeError(\".SdkSignalFrame.notification: object expected\");\n message.notification = $root.SdkNotificationFrame.fromObject(object.notification);\n }\n return message;\n };\n\n /**\n * Creates a plain object from a SdkSignalFrame message. Also converts values to other types if specified.\n * @function toObject\n * @memberof SdkSignalFrame\n * @static\n * @param {SdkSignalFrame} message SdkSignalFrame\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n SdkSignalFrame.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.defaults) {\n if ($util.Long) {\n var long = new $util.Long(0, 0, true);\n object.timestampMs = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.timestampMs = options.longs === String ? \"0\" : 0;\n object.type = options.enums === String ? \"JOIN\" : 1;\n object.error = null;\n object.join = null;\n object.joinack = null;\n object.sub = null;\n object.suback = null;\n object.index = null;\n object.pause = null;\n object.leave = null;\n object.leaveAck = null;\n object.bitrates = null;\n object.audioControl = null;\n object.audioMetadata = null;\n object.audioStreamIdInfo = null;\n object.pingPong = null;\n object.audioStatus = null;\n object.clientMetric = null;\n object.dataMessage = null;\n object.remoteVideoUpdate = null;\n object.primaryMeetingJoin = null;\n object.primaryMeetingJoinAck = null;\n object.primaryMeetingLeave = null;\n object.notification = null;\n }\n if (message.timestampMs != null && message.hasOwnProperty(\"timestampMs\"))\n if (typeof message.timestampMs === \"number\")\n object.timestampMs = options.longs === String ? String(message.timestampMs) : message.timestampMs;\n else\n object.timestampMs = options.longs === String ? $util.Long.prototype.toString.call(message.timestampMs) : options.longs === Number ? new $util.LongBits(message.timestampMs.low >>> 0, message.timestampMs.high >>> 0).toNumber(true) : message.timestampMs;\n if (message.type != null && message.hasOwnProperty(\"type\"))\n object.type = options.enums === String ? $root.SdkSignalFrame.Type[message.type] === undefined ? message.type : $root.SdkSignalFrame.Type[message.type] : message.type;\n if (message.error != null && message.hasOwnProperty(\"error\"))\n object.error = $root.SdkErrorFrame.toObject(message.error, options);\n if (message.join != null && message.hasOwnProperty(\"join\"))\n object.join = $root.SdkJoinFrame.toObject(message.join, options);\n if (message.joinack != null && message.hasOwnProperty(\"joinack\"))\n object.joinack = $root.SdkJoinAckFrame.toObject(message.joinack, options);\n if (message.sub != null && message.hasOwnProperty(\"sub\"))\n object.sub = $root.SdkSubscribeFrame.toObject(message.sub, options);\n if (message.suback != null && message.hasOwnProperty(\"suback\"))\n object.suback = $root.SdkSubscribeAckFrame.toObject(message.suback, options);\n if (message.index != null && message.hasOwnProperty(\"index\"))\n object.index = $root.SdkIndexFrame.toObject(message.index, options);\n if (message.pause != null && message.hasOwnProperty(\"pause\"))\n object.pause = $root.SdkPauseResumeFrame.toObject(message.pause, options);\n if (message.leave != null && message.hasOwnProperty(\"leave\"))\n object.leave = $root.SdkLeaveFrame.toObject(message.leave, options);\n if (message.leaveAck != null && message.hasOwnProperty(\"leaveAck\"))\n object.leaveAck = $root.SdkLeaveAckFrame.toObject(message.leaveAck, options);\n if (message.bitrates != null && message.hasOwnProperty(\"bitrates\"))\n object.bitrates = $root.SdkBitrateFrame.toObject(message.bitrates, options);\n if (message.audioControl != null && message.hasOwnProperty(\"audioControl\"))\n object.audioControl = $root.SdkAudioControlFrame.toObject(message.audioControl, options);\n if (message.audioMetadata != null && message.hasOwnProperty(\"audioMetadata\"))\n object.audioMetadata = $root.SdkAudioMetadataFrame.toObject(message.audioMetadata, options);\n if (message.audioStreamIdInfo != null && message.hasOwnProperty(\"audioStreamIdInfo\"))\n object.audioStreamIdInfo = $root.SdkAudioStreamIdInfoFrame.toObject(message.audioStreamIdInfo, options);\n if (message.pingPong != null && message.hasOwnProperty(\"pingPong\"))\n object.pingPong = $root.SdkPingPongFrame.toObject(message.pingPong, options);\n if (message.audioStatus != null && message.hasOwnProperty(\"audioStatus\"))\n object.audioStatus = $root.SdkAudioStatusFrame.toObject(message.audioStatus, options);\n if (message.clientMetric != null && message.hasOwnProperty(\"clientMetric\"))\n object.clientMetric = $root.SdkClientMetricFrame.toObject(message.clientMetric, options);\n if (message.dataMessage != null && message.hasOwnProperty(\"dataMessage\"))\n object.dataMessage = $root.SdkDataMessageFrame.toObject(message.dataMessage, options);\n if (message.remoteVideoUpdate != null && message.hasOwnProperty(\"remoteVideoUpdate\"))\n object.remoteVideoUpdate = $root.SdkRemoteVideoUpdateFrame.toObject(message.remoteVideoUpdate, options);\n if (message.primaryMeetingJoin != null && message.hasOwnProperty(\"primaryMeetingJoin\"))\n object.primaryMeetingJoin = $root.SdkPrimaryMeetingJoinFrame.toObject(message.primaryMeetingJoin, options);\n if (message.primaryMeetingJoinAck != null && message.hasOwnProperty(\"primaryMeetingJoinAck\"))\n object.primaryMeetingJoinAck = $root.SdkPrimaryMeetingJoinAckFrame.toObject(message.primaryMeetingJoinAck, options);\n if (message.primaryMeetingLeave != null && message.hasOwnProperty(\"primaryMeetingLeave\"))\n object.primaryMeetingLeave = $root.SdkPrimaryMeetingLeaveFrame.toObject(message.primaryMeetingLeave, options);\n if (message.notification != null && message.hasOwnProperty(\"notification\"))\n object.notification = $root.SdkNotificationFrame.toObject(message.notification, options);\n return object;\n };\n\n /**\n * Converts this SdkSignalFrame to JSON.\n * @function toJSON\n * @memberof SdkSignalFrame\n * @instance\n * @returns {Object.} JSON object\n */\n SdkSignalFrame.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n /**\n * Gets the default type url for SdkSignalFrame\n * @function getTypeUrl\n * @memberof SdkSignalFrame\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n SdkSignalFrame.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/SdkSignalFrame\";\n };\n\n /**\n * Type enum.\n * @name SdkSignalFrame.Type\n * @enum {number}\n * @property {number} JOIN=1 JOIN value\n * @property {number} JOIN_ACK=2 JOIN_ACK value\n * @property {number} SUBSCRIBE=3 SUBSCRIBE value\n * @property {number} SUBSCRIBE_ACK=4 SUBSCRIBE_ACK value\n * @property {number} INDEX=5 INDEX value\n * @property {number} PAUSE=7 PAUSE value\n * @property {number} RESUME=8 RESUME value\n * @property {number} LEAVE=9 LEAVE value\n * @property {number} LEAVE_ACK=10 LEAVE_ACK value\n * @property {number} BITRATES=13 BITRATES value\n * @property {number} AUDIO_CONTROL=16 AUDIO_CONTROL value\n * @property {number} AUDIO_METADATA=17 AUDIO_METADATA value\n * @property {number} AUDIO_STREAM_ID_INFO=18 AUDIO_STREAM_ID_INFO value\n * @property {number} PING_PONG=19 PING_PONG value\n * @property {number} AUDIO_STATUS=20 AUDIO_STATUS value\n * @property {number} CLIENT_METRIC=21 CLIENT_METRIC value\n * @property {number} DATA_MESSAGE=22 DATA_MESSAGE value\n * @property {number} REMOTE_VIDEO_UPDATE=24 REMOTE_VIDEO_UPDATE value\n * @property {number} PRIMARY_MEETING_JOIN=25 PRIMARY_MEETING_JOIN value\n * @property {number} PRIMARY_MEETING_JOIN_ACK=26 PRIMARY_MEETING_JOIN_ACK value\n * @property {number} PRIMARY_MEETING_LEAVE=27 PRIMARY_MEETING_LEAVE value\n * @property {number} NOTIFICATION=34 NOTIFICATION value\n */\n SdkSignalFrame.Type = (function() {\n var valuesById = {}, values = Object.create(valuesById);\n values[valuesById[1] = \"JOIN\"] = 1;\n values[valuesById[2] = \"JOIN_ACK\"] = 2;\n values[valuesById[3] = \"SUBSCRIBE\"] = 3;\n values[valuesById[4] = \"SUBSCRIBE_ACK\"] = 4;\n values[valuesById[5] = \"INDEX\"] = 5;\n values[valuesById[7] = \"PAUSE\"] = 7;\n values[valuesById[8] = \"RESUME\"] = 8;\n values[valuesById[9] = \"LEAVE\"] = 9;\n values[valuesById[10] = \"LEAVE_ACK\"] = 10;\n values[valuesById[13] = \"BITRATES\"] = 13;\n values[valuesById[16] = \"AUDIO_CONTROL\"] = 16;\n values[valuesById[17] = \"AUDIO_METADATA\"] = 17;\n values[valuesById[18] = \"AUDIO_STREAM_ID_INFO\"] = 18;\n values[valuesById[19] = \"PING_PONG\"] = 19;\n values[valuesById[20] = \"AUDIO_STATUS\"] = 20;\n values[valuesById[21] = \"CLIENT_METRIC\"] = 21;\n values[valuesById[22] = \"DATA_MESSAGE\"] = 22;\n values[valuesById[24] = \"REMOTE_VIDEO_UPDATE\"] = 24;\n values[valuesById[25] = \"PRIMARY_MEETING_JOIN\"] = 25;\n values[valuesById[26] = \"PRIMARY_MEETING_JOIN_ACK\"] = 26;\n values[valuesById[27] = \"PRIMARY_MEETING_LEAVE\"] = 27;\n values[valuesById[34] = \"NOTIFICATION\"] = 34;\n return values;\n })();\n\n return SdkSignalFrame;\n})();\n\n$root.SdkErrorFrame = (function() {\n\n /**\n * Properties of a SdkErrorFrame.\n * @name ISdkErrorFrame\n * @interface ISdkErrorFrame\n * @property {number|null} [status] SdkErrorFrame status\n * @property {string|null} [description] SdkErrorFrame description\n */\n\n /**\n * Constructs a new SdkErrorFrame.\n * @name SdkErrorFrame\n * @classdesc Represents a SdkErrorFrame.\n * @implements ISdkErrorFrame\n * @constructor\n * @param {ISdkErrorFrame=} [properties] Properties to set\n */\n function SdkErrorFrame(properties) {\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * SdkErrorFrame status.\n * @member {number} status\n * @memberof SdkErrorFrame\n * @instance\n */\n SdkErrorFrame.prototype.status = 0;\n\n /**\n * SdkErrorFrame description.\n * @member {string} description\n * @memberof SdkErrorFrame\n * @instance\n */\n SdkErrorFrame.prototype.description = \"\";\n\n /**\n * Creates a new SdkErrorFrame instance using the specified properties.\n * @function create\n * @memberof SdkErrorFrame\n * @static\n * @param {ISdkErrorFrame=} [properties] Properties to set\n * @returns {SdkErrorFrame} SdkErrorFrame instance\n */\n SdkErrorFrame.create = function create(properties) {\n return new SdkErrorFrame(properties);\n };\n\n /**\n * Encodes the specified SdkErrorFrame message. Does not implicitly {@link SdkErrorFrame.verify|verify} messages.\n * @function encode\n * @memberof SdkErrorFrame\n * @static\n * @param {ISdkErrorFrame} message SdkErrorFrame message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n SdkErrorFrame.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.status != null && Object.hasOwnProperty.call(message, \"status\"))\n writer.uint32(/* id 1, wireType 0 =*/8).uint32(message.status);\n if (message.description != null && Object.hasOwnProperty.call(message, \"description\"))\n writer.uint32(/* id 2, wireType 2 =*/18).string(message.description);\n return writer;\n };\n\n /**\n * Encodes the specified SdkErrorFrame message, length delimited. Does not implicitly {@link SdkErrorFrame.verify|verify} messages.\n * @function encodeDelimited\n * @memberof SdkErrorFrame\n * @static\n * @param {ISdkErrorFrame} message SdkErrorFrame message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n SdkErrorFrame.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a SdkErrorFrame message from the specified reader or buffer.\n * @function decode\n * @memberof SdkErrorFrame\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {SdkErrorFrame} SdkErrorFrame\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n SdkErrorFrame.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.SdkErrorFrame();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n message.status = reader.uint32();\n break;\n }\n case 2: {\n message.description = reader.string();\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a SdkErrorFrame message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof SdkErrorFrame\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {SdkErrorFrame} SdkErrorFrame\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n SdkErrorFrame.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a SdkErrorFrame message.\n * @function verify\n * @memberof SdkErrorFrame\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n SdkErrorFrame.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.status != null && message.hasOwnProperty(\"status\"))\n if (!$util.isInteger(message.status))\n return \"status: integer expected\";\n if (message.description != null && message.hasOwnProperty(\"description\"))\n if (!$util.isString(message.description))\n return \"description: string expected\";\n return null;\n };\n\n /**\n * Creates a SdkErrorFrame message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof SdkErrorFrame\n * @static\n * @param {Object.} object Plain object\n * @returns {SdkErrorFrame} SdkErrorFrame\n */\n SdkErrorFrame.fromObject = function fromObject(object) {\n if (object instanceof $root.SdkErrorFrame)\n return object;\n var message = new $root.SdkErrorFrame();\n if (object.status != null)\n message.status = object.status >>> 0;\n if (object.description != null)\n message.description = String(object.description);\n return message;\n };\n\n /**\n * Creates a plain object from a SdkErrorFrame message. Also converts values to other types if specified.\n * @function toObject\n * @memberof SdkErrorFrame\n * @static\n * @param {SdkErrorFrame} message SdkErrorFrame\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n SdkErrorFrame.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.defaults) {\n object.status = 0;\n object.description = \"\";\n }\n if (message.status != null && message.hasOwnProperty(\"status\"))\n object.status = message.status;\n if (message.description != null && message.hasOwnProperty(\"description\"))\n object.description = message.description;\n return object;\n };\n\n /**\n * Converts this SdkErrorFrame to JSON.\n * @function toJSON\n * @memberof SdkErrorFrame\n * @instance\n * @returns {Object.} JSON object\n */\n SdkErrorFrame.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n /**\n * Gets the default type url for SdkErrorFrame\n * @function getTypeUrl\n * @memberof SdkErrorFrame\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n SdkErrorFrame.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/SdkErrorFrame\";\n };\n\n return SdkErrorFrame;\n})();\n\n/**\n * SdkJoinFlags enum.\n * @name SdkJoinFlags\n * @enum {number}\n * @property {number} HAS_STREAM_UPDATE=2 HAS_STREAM_UPDATE value\n * @property {number} COMPLETE_VIDEO_SOURCES_LIST=16 COMPLETE_VIDEO_SOURCES_LIST value\n * @property {number} EXCLUDE_SELF_CONTENT_IN_INDEX=32 EXCLUDE_SELF_CONTENT_IN_INDEX value\n */\n$root.SdkJoinFlags = (function() {\n var valuesById = {}, values = Object.create(valuesById);\n values[valuesById[2] = \"HAS_STREAM_UPDATE\"] = 2;\n values[valuesById[16] = \"COMPLETE_VIDEO_SOURCES_LIST\"] = 16;\n values[valuesById[32] = \"EXCLUDE_SELF_CONTENT_IN_INDEX\"] = 32;\n return values;\n})();\n\n$root.SdkClientDetails = (function() {\n\n /**\n * Properties of a SdkClientDetails.\n * @name ISdkClientDetails\n * @interface ISdkClientDetails\n * @property {string|null} [appName] SdkClientDetails appName\n * @property {string|null} [appVersion] SdkClientDetails appVersion\n * @property {string|null} [deviceModel] SdkClientDetails deviceModel\n * @property {string|null} [deviceMake] SdkClientDetails deviceMake\n * @property {string|null} [platformName] SdkClientDetails platformName\n * @property {string|null} [platformVersion] SdkClientDetails platformVersion\n * @property {string|null} [clientSource] SdkClientDetails clientSource\n * @property {string|null} [chimeSdkVersion] SdkClientDetails chimeSdkVersion\n * @property {string|null} [clientUtcOffset] SdkClientDetails clientUtcOffset\n */\n\n /**\n * Constructs a new SdkClientDetails.\n * @name SdkClientDetails\n * @classdesc Represents a SdkClientDetails.\n * @implements ISdkClientDetails\n * @constructor\n * @param {ISdkClientDetails=} [properties] Properties to set\n */\n function SdkClientDetails(properties) {\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * SdkClientDetails appName.\n * @member {string} appName\n * @memberof SdkClientDetails\n * @instance\n */\n SdkClientDetails.prototype.appName = \"\";\n\n /**\n * SdkClientDetails appVersion.\n * @member {string} appVersion\n * @memberof SdkClientDetails\n * @instance\n */\n SdkClientDetails.prototype.appVersion = \"\";\n\n /**\n * SdkClientDetails deviceModel.\n * @member {string} deviceModel\n * @memberof SdkClientDetails\n * @instance\n */\n SdkClientDetails.prototype.deviceModel = \"\";\n\n /**\n * SdkClientDetails deviceMake.\n * @member {string} deviceMake\n * @memberof SdkClientDetails\n * @instance\n */\n SdkClientDetails.prototype.deviceMake = \"\";\n\n /**\n * SdkClientDetails platformName.\n * @member {string} platformName\n * @memberof SdkClientDetails\n * @instance\n */\n SdkClientDetails.prototype.platformName = \"\";\n\n /**\n * SdkClientDetails platformVersion.\n * @member {string} platformVersion\n * @memberof SdkClientDetails\n * @instance\n */\n SdkClientDetails.prototype.platformVersion = \"\";\n\n /**\n * SdkClientDetails clientSource.\n * @member {string} clientSource\n * @memberof SdkClientDetails\n * @instance\n */\n SdkClientDetails.prototype.clientSource = \"\";\n\n /**\n * SdkClientDetails chimeSdkVersion.\n * @member {string} chimeSdkVersion\n * @memberof SdkClientDetails\n * @instance\n */\n SdkClientDetails.prototype.chimeSdkVersion = \"\";\n\n /**\n * SdkClientDetails clientUtcOffset.\n * @member {string} clientUtcOffset\n * @memberof SdkClientDetails\n * @instance\n */\n SdkClientDetails.prototype.clientUtcOffset = \"\";\n\n /**\n * Creates a new SdkClientDetails instance using the specified properties.\n * @function create\n * @memberof SdkClientDetails\n * @static\n * @param {ISdkClientDetails=} [properties] Properties to set\n * @returns {SdkClientDetails} SdkClientDetails instance\n */\n SdkClientDetails.create = function create(properties) {\n return new SdkClientDetails(properties);\n };\n\n /**\n * Encodes the specified SdkClientDetails message. Does not implicitly {@link SdkClientDetails.verify|verify} messages.\n * @function encode\n * @memberof SdkClientDetails\n * @static\n * @param {ISdkClientDetails} message SdkClientDetails message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n SdkClientDetails.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.appName != null && Object.hasOwnProperty.call(message, \"appName\"))\n writer.uint32(/* id 1, wireType 2 =*/10).string(message.appName);\n if (message.appVersion != null && Object.hasOwnProperty.call(message, \"appVersion\"))\n writer.uint32(/* id 2, wireType 2 =*/18).string(message.appVersion);\n if (message.deviceModel != null && Object.hasOwnProperty.call(message, \"deviceModel\"))\n writer.uint32(/* id 3, wireType 2 =*/26).string(message.deviceModel);\n if (message.deviceMake != null && Object.hasOwnProperty.call(message, \"deviceMake\"))\n writer.uint32(/* id 4, wireType 2 =*/34).string(message.deviceMake);\n if (message.platformName != null && Object.hasOwnProperty.call(message, \"platformName\"))\n writer.uint32(/* id 5, wireType 2 =*/42).string(message.platformName);\n if (message.platformVersion != null && Object.hasOwnProperty.call(message, \"platformVersion\"))\n writer.uint32(/* id 6, wireType 2 =*/50).string(message.platformVersion);\n if (message.clientSource != null && Object.hasOwnProperty.call(message, \"clientSource\"))\n writer.uint32(/* id 7, wireType 2 =*/58).string(message.clientSource);\n if (message.chimeSdkVersion != null && Object.hasOwnProperty.call(message, \"chimeSdkVersion\"))\n writer.uint32(/* id 8, wireType 2 =*/66).string(message.chimeSdkVersion);\n if (message.clientUtcOffset != null && Object.hasOwnProperty.call(message, \"clientUtcOffset\"))\n writer.uint32(/* id 9, wireType 2 =*/74).string(message.clientUtcOffset);\n return writer;\n };\n\n /**\n * Encodes the specified SdkClientDetails message, length delimited. Does not implicitly {@link SdkClientDetails.verify|verify} messages.\n * @function encodeDelimited\n * @memberof SdkClientDetails\n * @static\n * @param {ISdkClientDetails} message SdkClientDetails message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n SdkClientDetails.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a SdkClientDetails message from the specified reader or buffer.\n * @function decode\n * @memberof SdkClientDetails\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {SdkClientDetails} SdkClientDetails\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n SdkClientDetails.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.SdkClientDetails();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n message.appName = reader.string();\n break;\n }\n case 2: {\n message.appVersion = reader.string();\n break;\n }\n case 3: {\n message.deviceModel = reader.string();\n break;\n }\n case 4: {\n message.deviceMake = reader.string();\n break;\n }\n case 5: {\n message.platformName = reader.string();\n break;\n }\n case 6: {\n message.platformVersion = reader.string();\n break;\n }\n case 7: {\n message.clientSource = reader.string();\n break;\n }\n case 8: {\n message.chimeSdkVersion = reader.string();\n break;\n }\n case 9: {\n message.clientUtcOffset = reader.string();\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a SdkClientDetails message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof SdkClientDetails\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {SdkClientDetails} SdkClientDetails\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n SdkClientDetails.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a SdkClientDetails message.\n * @function verify\n * @memberof SdkClientDetails\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n SdkClientDetails.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.appName != null && message.hasOwnProperty(\"appName\"))\n if (!$util.isString(message.appName))\n return \"appName: string expected\";\n if (message.appVersion != null && message.hasOwnProperty(\"appVersion\"))\n if (!$util.isString(message.appVersion))\n return \"appVersion: string expected\";\n if (message.deviceModel != null && message.hasOwnProperty(\"deviceModel\"))\n if (!$util.isString(message.deviceModel))\n return \"deviceModel: string expected\";\n if (message.deviceMake != null && message.hasOwnProperty(\"deviceMake\"))\n if (!$util.isString(message.deviceMake))\n return \"deviceMake: string expected\";\n if (message.platformName != null && message.hasOwnProperty(\"platformName\"))\n if (!$util.isString(message.platformName))\n return \"platformName: string expected\";\n if (message.platformVersion != null && message.hasOwnProperty(\"platformVersion\"))\n if (!$util.isString(message.platformVersion))\n return \"platformVersion: string expected\";\n if (message.clientSource != null && message.hasOwnProperty(\"clientSource\"))\n if (!$util.isString(message.clientSource))\n return \"clientSource: string expected\";\n if (message.chimeSdkVersion != null && message.hasOwnProperty(\"chimeSdkVersion\"))\n if (!$util.isString(message.chimeSdkVersion))\n return \"chimeSdkVersion: string expected\";\n if (message.clientUtcOffset != null && message.hasOwnProperty(\"clientUtcOffset\"))\n if (!$util.isString(message.clientUtcOffset))\n return \"clientUtcOffset: string expected\";\n return null;\n };\n\n /**\n * Creates a SdkClientDetails message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof SdkClientDetails\n * @static\n * @param {Object.} object Plain object\n * @returns {SdkClientDetails} SdkClientDetails\n */\n SdkClientDetails.fromObject = function fromObject(object) {\n if (object instanceof $root.SdkClientDetails)\n return object;\n var message = new $root.SdkClientDetails();\n if (object.appName != null)\n message.appName = String(object.appName);\n if (object.appVersion != null)\n message.appVersion = String(object.appVersion);\n if (object.deviceModel != null)\n message.deviceModel = String(object.deviceModel);\n if (object.deviceMake != null)\n message.deviceMake = String(object.deviceMake);\n if (object.platformName != null)\n message.platformName = String(object.platformName);\n if (object.platformVersion != null)\n message.platformVersion = String(object.platformVersion);\n if (object.clientSource != null)\n message.clientSource = String(object.clientSource);\n if (object.chimeSdkVersion != null)\n message.chimeSdkVersion = String(object.chimeSdkVersion);\n if (object.clientUtcOffset != null)\n message.clientUtcOffset = String(object.clientUtcOffset);\n return message;\n };\n\n /**\n * Creates a plain object from a SdkClientDetails message. Also converts values to other types if specified.\n * @function toObject\n * @memberof SdkClientDetails\n * @static\n * @param {SdkClientDetails} message SdkClientDetails\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n SdkClientDetails.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.defaults) {\n object.appName = \"\";\n object.appVersion = \"\";\n object.deviceModel = \"\";\n object.deviceMake = \"\";\n object.platformName = \"\";\n object.platformVersion = \"\";\n object.clientSource = \"\";\n object.chimeSdkVersion = \"\";\n object.clientUtcOffset = \"\";\n }\n if (message.appName != null && message.hasOwnProperty(\"appName\"))\n object.appName = message.appName;\n if (message.appVersion != null && message.hasOwnProperty(\"appVersion\"))\n object.appVersion = message.appVersion;\n if (message.deviceModel != null && message.hasOwnProperty(\"deviceModel\"))\n object.deviceModel = message.deviceModel;\n if (message.deviceMake != null && message.hasOwnProperty(\"deviceMake\"))\n object.deviceMake = message.deviceMake;\n if (message.platformName != null && message.hasOwnProperty(\"platformName\"))\n object.platformName = message.platformName;\n if (message.platformVersion != null && message.hasOwnProperty(\"platformVersion\"))\n object.platformVersion = message.platformVersion;\n if (message.clientSource != null && message.hasOwnProperty(\"clientSource\"))\n object.clientSource = message.clientSource;\n if (message.chimeSdkVersion != null && message.hasOwnProperty(\"chimeSdkVersion\"))\n object.chimeSdkVersion = message.chimeSdkVersion;\n if (message.clientUtcOffset != null && message.hasOwnProperty(\"clientUtcOffset\"))\n object.clientUtcOffset = message.clientUtcOffset;\n return object;\n };\n\n /**\n * Converts this SdkClientDetails to JSON.\n * @function toJSON\n * @memberof SdkClientDetails\n * @instance\n * @returns {Object.} JSON object\n */\n SdkClientDetails.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n /**\n * Gets the default type url for SdkClientDetails\n * @function getTypeUrl\n * @memberof SdkClientDetails\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n SdkClientDetails.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/SdkClientDetails\";\n };\n\n return SdkClientDetails;\n})();\n\n/**\n * SdkServerSideNetworkAdaption enum.\n * @name SdkServerSideNetworkAdaption\n * @enum {number}\n * @property {number} DEFAULT=1 DEFAULT value\n * @property {number} NONE=2 NONE value\n * @property {number} BANDWIDTH_PROBING=3 BANDWIDTH_PROBING value\n * @property {number} BANDWIDTH_PROBING_AND_VIDEO_QUALITY_ADAPTION=4 BANDWIDTH_PROBING_AND_VIDEO_QUALITY_ADAPTION value\n */\n$root.SdkServerSideNetworkAdaption = (function() {\n var valuesById = {}, values = Object.create(valuesById);\n values[valuesById[1] = \"DEFAULT\"] = 1;\n values[valuesById[2] = \"NONE\"] = 2;\n values[valuesById[3] = \"BANDWIDTH_PROBING\"] = 3;\n values[valuesById[4] = \"BANDWIDTH_PROBING_AND_VIDEO_QUALITY_ADAPTION\"] = 4;\n return values;\n})();\n\n$root.SdkJoinFrame = (function() {\n\n /**\n * Properties of a SdkJoinFrame.\n * @name ISdkJoinFrame\n * @interface ISdkJoinFrame\n * @property {number|null} [protocolVersion] SdkJoinFrame protocolVersion\n * @property {number|null} [maxNumOfVideos] SdkJoinFrame maxNumOfVideos\n * @property {number|null} [flags] SdkJoinFrame flags\n * @property {ISdkClientDetails|null} [clientDetails] SdkJoinFrame clientDetails\n * @property {number|Long|null} [audioSessionId] SdkJoinFrame audioSessionId\n * @property {boolean|null} [wantsCompressedSdp] SdkJoinFrame wantsCompressedSdp\n * @property {SdkServerSideNetworkAdaption|null} [serverSideNetworkAdaption] SdkJoinFrame serverSideNetworkAdaption\n * @property {Array.|null} [supportedServerSideNetworkAdaptions] SdkJoinFrame supportedServerSideNetworkAdaptions\n * @property {boolean|null} [wantsAllTemporalLayersInIndex] SdkJoinFrame wantsAllTemporalLayersInIndex\n * @property {boolean|null} [disablePeriodicKeyframeRequestOnContentSender] SdkJoinFrame disablePeriodicKeyframeRequestOnContentSender\n */\n\n /**\n * Constructs a new SdkJoinFrame.\n * @name SdkJoinFrame\n * @classdesc Represents a SdkJoinFrame.\n * @implements ISdkJoinFrame\n * @constructor\n * @param {ISdkJoinFrame=} [properties] Properties to set\n */\n function SdkJoinFrame(properties) {\n this.supportedServerSideNetworkAdaptions = [];\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * SdkJoinFrame protocolVersion.\n * @member {number} protocolVersion\n * @memberof SdkJoinFrame\n * @instance\n */\n SdkJoinFrame.prototype.protocolVersion = 2;\n\n /**\n * SdkJoinFrame maxNumOfVideos.\n * @member {number} maxNumOfVideos\n * @memberof SdkJoinFrame\n * @instance\n */\n SdkJoinFrame.prototype.maxNumOfVideos = 0;\n\n /**\n * SdkJoinFrame flags.\n * @member {number} flags\n * @memberof SdkJoinFrame\n * @instance\n */\n SdkJoinFrame.prototype.flags = 0;\n\n /**\n * SdkJoinFrame clientDetails.\n * @member {ISdkClientDetails|null|undefined} clientDetails\n * @memberof SdkJoinFrame\n * @instance\n */\n SdkJoinFrame.prototype.clientDetails = null;\n\n /**\n * SdkJoinFrame audioSessionId.\n * @member {number|Long} audioSessionId\n * @memberof SdkJoinFrame\n * @instance\n */\n SdkJoinFrame.prototype.audioSessionId = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * SdkJoinFrame wantsCompressedSdp.\n * @member {boolean} wantsCompressedSdp\n * @memberof SdkJoinFrame\n * @instance\n */\n SdkJoinFrame.prototype.wantsCompressedSdp = false;\n\n /**\n * SdkJoinFrame serverSideNetworkAdaption.\n * @member {SdkServerSideNetworkAdaption} serverSideNetworkAdaption\n * @memberof SdkJoinFrame\n * @instance\n */\n SdkJoinFrame.prototype.serverSideNetworkAdaption = 1;\n\n /**\n * SdkJoinFrame supportedServerSideNetworkAdaptions.\n * @member {Array.} supportedServerSideNetworkAdaptions\n * @memberof SdkJoinFrame\n * @instance\n */\n SdkJoinFrame.prototype.supportedServerSideNetworkAdaptions = $util.emptyArray;\n\n /**\n * SdkJoinFrame wantsAllTemporalLayersInIndex.\n * @member {boolean} wantsAllTemporalLayersInIndex\n * @memberof SdkJoinFrame\n * @instance\n */\n SdkJoinFrame.prototype.wantsAllTemporalLayersInIndex = false;\n\n /**\n * SdkJoinFrame disablePeriodicKeyframeRequestOnContentSender.\n * @member {boolean} disablePeriodicKeyframeRequestOnContentSender\n * @memberof SdkJoinFrame\n * @instance\n */\n SdkJoinFrame.prototype.disablePeriodicKeyframeRequestOnContentSender = false;\n\n /**\n * Creates a new SdkJoinFrame instance using the specified properties.\n * @function create\n * @memberof SdkJoinFrame\n * @static\n * @param {ISdkJoinFrame=} [properties] Properties to set\n * @returns {SdkJoinFrame} SdkJoinFrame instance\n */\n SdkJoinFrame.create = function create(properties) {\n return new SdkJoinFrame(properties);\n };\n\n /**\n * Encodes the specified SdkJoinFrame message. Does not implicitly {@link SdkJoinFrame.verify|verify} messages.\n * @function encode\n * @memberof SdkJoinFrame\n * @static\n * @param {ISdkJoinFrame} message SdkJoinFrame message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n SdkJoinFrame.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.protocolVersion != null && Object.hasOwnProperty.call(message, \"protocolVersion\"))\n writer.uint32(/* id 1, wireType 0 =*/8).uint32(message.protocolVersion);\n if (message.maxNumOfVideos != null && Object.hasOwnProperty.call(message, \"maxNumOfVideos\"))\n writer.uint32(/* id 2, wireType 0 =*/16).uint32(message.maxNumOfVideos);\n if (message.flags != null && Object.hasOwnProperty.call(message, \"flags\"))\n writer.uint32(/* id 3, wireType 0 =*/24).uint32(message.flags);\n if (message.clientDetails != null && Object.hasOwnProperty.call(message, \"clientDetails\"))\n $root.SdkClientDetails.encode(message.clientDetails, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim();\n if (message.audioSessionId != null && Object.hasOwnProperty.call(message, \"audioSessionId\"))\n writer.uint32(/* id 6, wireType 0 =*/48).uint64(message.audioSessionId);\n if (message.wantsCompressedSdp != null && Object.hasOwnProperty.call(message, \"wantsCompressedSdp\"))\n writer.uint32(/* id 7, wireType 0 =*/56).bool(message.wantsCompressedSdp);\n if (message.serverSideNetworkAdaption != null && Object.hasOwnProperty.call(message, \"serverSideNetworkAdaption\"))\n writer.uint32(/* id 10, wireType 0 =*/80).int32(message.serverSideNetworkAdaption);\n if (message.supportedServerSideNetworkAdaptions != null && message.supportedServerSideNetworkAdaptions.length)\n for (var i = 0; i < message.supportedServerSideNetworkAdaptions.length; ++i)\n writer.uint32(/* id 11, wireType 0 =*/88).int32(message.supportedServerSideNetworkAdaptions[i]);\n if (message.wantsAllTemporalLayersInIndex != null && Object.hasOwnProperty.call(message, \"wantsAllTemporalLayersInIndex\"))\n writer.uint32(/* id 12, wireType 0 =*/96).bool(message.wantsAllTemporalLayersInIndex);\n if (message.disablePeriodicKeyframeRequestOnContentSender != null && Object.hasOwnProperty.call(message, \"disablePeriodicKeyframeRequestOnContentSender\"))\n writer.uint32(/* id 13, wireType 0 =*/104).bool(message.disablePeriodicKeyframeRequestOnContentSender);\n return writer;\n };\n\n /**\n * Encodes the specified SdkJoinFrame message, length delimited. Does not implicitly {@link SdkJoinFrame.verify|verify} messages.\n * @function encodeDelimited\n * @memberof SdkJoinFrame\n * @static\n * @param {ISdkJoinFrame} message SdkJoinFrame message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n SdkJoinFrame.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a SdkJoinFrame message from the specified reader or buffer.\n * @function decode\n * @memberof SdkJoinFrame\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {SdkJoinFrame} SdkJoinFrame\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n SdkJoinFrame.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.SdkJoinFrame();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n message.protocolVersion = reader.uint32();\n break;\n }\n case 2: {\n message.maxNumOfVideos = reader.uint32();\n break;\n }\n case 3: {\n message.flags = reader.uint32();\n break;\n }\n case 4: {\n message.clientDetails = $root.SdkClientDetails.decode(reader, reader.uint32());\n break;\n }\n case 6: {\n message.audioSessionId = reader.uint64();\n break;\n }\n case 7: {\n message.wantsCompressedSdp = reader.bool();\n break;\n }\n case 10: {\n message.serverSideNetworkAdaption = reader.int32();\n break;\n }\n case 11: {\n if (!(message.supportedServerSideNetworkAdaptions && message.supportedServerSideNetworkAdaptions.length))\n message.supportedServerSideNetworkAdaptions = [];\n if ((tag & 7) === 2) {\n var end2 = reader.uint32() + reader.pos;\n while (reader.pos < end2)\n message.supportedServerSideNetworkAdaptions.push(reader.int32());\n } else\n message.supportedServerSideNetworkAdaptions.push(reader.int32());\n break;\n }\n case 12: {\n message.wantsAllTemporalLayersInIndex = reader.bool();\n break;\n }\n case 13: {\n message.disablePeriodicKeyframeRequestOnContentSender = reader.bool();\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a SdkJoinFrame message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof SdkJoinFrame\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {SdkJoinFrame} SdkJoinFrame\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n SdkJoinFrame.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a SdkJoinFrame message.\n * @function verify\n * @memberof SdkJoinFrame\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n SdkJoinFrame.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.protocolVersion != null && message.hasOwnProperty(\"protocolVersion\"))\n if (!$util.isInteger(message.protocolVersion))\n return \"protocolVersion: integer expected\";\n if (message.maxNumOfVideos != null && message.hasOwnProperty(\"maxNumOfVideos\"))\n if (!$util.isInteger(message.maxNumOfVideos))\n return \"maxNumOfVideos: integer expected\";\n if (message.flags != null && message.hasOwnProperty(\"flags\"))\n if (!$util.isInteger(message.flags))\n return \"flags: integer expected\";\n if (message.clientDetails != null && message.hasOwnProperty(\"clientDetails\")) {\n var error = $root.SdkClientDetails.verify(message.clientDetails);\n if (error)\n return \"clientDetails.\" + error;\n }\n if (message.audioSessionId != null && message.hasOwnProperty(\"audioSessionId\"))\n if (!$util.isInteger(message.audioSessionId) && !(message.audioSessionId && $util.isInteger(message.audioSessionId.low) && $util.isInteger(message.audioSessionId.high)))\n return \"audioSessionId: integer|Long expected\";\n if (message.wantsCompressedSdp != null && message.hasOwnProperty(\"wantsCompressedSdp\"))\n if (typeof message.wantsCompressedSdp !== \"boolean\")\n return \"wantsCompressedSdp: boolean expected\";\n if (message.serverSideNetworkAdaption != null && message.hasOwnProperty(\"serverSideNetworkAdaption\"))\n switch (message.serverSideNetworkAdaption) {\n default:\n return \"serverSideNetworkAdaption: enum value expected\";\n case 1:\n case 2:\n case 3:\n case 4:\n break;\n }\n if (message.supportedServerSideNetworkAdaptions != null && message.hasOwnProperty(\"supportedServerSideNetworkAdaptions\")) {\n if (!Array.isArray(message.supportedServerSideNetworkAdaptions))\n return \"supportedServerSideNetworkAdaptions: array expected\";\n for (var i = 0; i < message.supportedServerSideNetworkAdaptions.length; ++i)\n switch (message.supportedServerSideNetworkAdaptions[i]) {\n default:\n return \"supportedServerSideNetworkAdaptions: enum value[] expected\";\n case 1:\n case 2:\n case 3:\n case 4:\n break;\n }\n }\n if (message.wantsAllTemporalLayersInIndex != null && message.hasOwnProperty(\"wantsAllTemporalLayersInIndex\"))\n if (typeof message.wantsAllTemporalLayersInIndex !== \"boolean\")\n return \"wantsAllTemporalLayersInIndex: boolean expected\";\n if (message.disablePeriodicKeyframeRequestOnContentSender != null && message.hasOwnProperty(\"disablePeriodicKeyframeRequestOnContentSender\"))\n if (typeof message.disablePeriodicKeyframeRequestOnContentSender !== \"boolean\")\n return \"disablePeriodicKeyframeRequestOnContentSender: boolean expected\";\n return null;\n };\n\n /**\n * Creates a SdkJoinFrame message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof SdkJoinFrame\n * @static\n * @param {Object.} object Plain object\n * @returns {SdkJoinFrame} SdkJoinFrame\n */\n SdkJoinFrame.fromObject = function fromObject(object) {\n if (object instanceof $root.SdkJoinFrame)\n return object;\n var message = new $root.SdkJoinFrame();\n if (object.protocolVersion != null)\n message.protocolVersion = object.protocolVersion >>> 0;\n if (object.maxNumOfVideos != null)\n message.maxNumOfVideos = object.maxNumOfVideos >>> 0;\n if (object.flags != null)\n message.flags = object.flags >>> 0;\n if (object.clientDetails != null) {\n if (typeof object.clientDetails !== \"object\")\n throw TypeError(\".SdkJoinFrame.clientDetails: object expected\");\n message.clientDetails = $root.SdkClientDetails.fromObject(object.clientDetails);\n }\n if (object.audioSessionId != null)\n if ($util.Long)\n (message.audioSessionId = $util.Long.fromValue(object.audioSessionId)).unsigned = true;\n else if (typeof object.audioSessionId === \"string\")\n message.audioSessionId = parseInt(object.audioSessionId, 10);\n else if (typeof object.audioSessionId === \"number\")\n message.audioSessionId = object.audioSessionId;\n else if (typeof object.audioSessionId === \"object\")\n message.audioSessionId = new $util.LongBits(object.audioSessionId.low >>> 0, object.audioSessionId.high >>> 0).toNumber(true);\n if (object.wantsCompressedSdp != null)\n message.wantsCompressedSdp = Boolean(object.wantsCompressedSdp);\n switch (object.serverSideNetworkAdaption) {\n default:\n if (typeof object.serverSideNetworkAdaption === \"number\") {\n message.serverSideNetworkAdaption = object.serverSideNetworkAdaption;\n break;\n }\n break;\n case \"DEFAULT\":\n case 1:\n message.serverSideNetworkAdaption = 1;\n break;\n case \"NONE\":\n case 2:\n message.serverSideNetworkAdaption = 2;\n break;\n case \"BANDWIDTH_PROBING\":\n case 3:\n message.serverSideNetworkAdaption = 3;\n break;\n case \"BANDWIDTH_PROBING_AND_VIDEO_QUALITY_ADAPTION\":\n case 4:\n message.serverSideNetworkAdaption = 4;\n break;\n }\n if (object.supportedServerSideNetworkAdaptions) {\n if (!Array.isArray(object.supportedServerSideNetworkAdaptions))\n throw TypeError(\".SdkJoinFrame.supportedServerSideNetworkAdaptions: array expected\");\n message.supportedServerSideNetworkAdaptions = [];\n for (var i = 0; i < object.supportedServerSideNetworkAdaptions.length; ++i)\n switch (object.supportedServerSideNetworkAdaptions[i]) {\n default:\n if (typeof object.supportedServerSideNetworkAdaptions[i] === \"number\") {\n message.supportedServerSideNetworkAdaptions[i] = object.supportedServerSideNetworkAdaptions[i];\n break;\n }\n case \"DEFAULT\":\n case 1:\n message.supportedServerSideNetworkAdaptions[i] = 1;\n break;\n case \"NONE\":\n case 2:\n message.supportedServerSideNetworkAdaptions[i] = 2;\n break;\n case \"BANDWIDTH_PROBING\":\n case 3:\n message.supportedServerSideNetworkAdaptions[i] = 3;\n break;\n case \"BANDWIDTH_PROBING_AND_VIDEO_QUALITY_ADAPTION\":\n case 4:\n message.supportedServerSideNetworkAdaptions[i] = 4;\n break;\n }\n }\n if (object.wantsAllTemporalLayersInIndex != null)\n message.wantsAllTemporalLayersInIndex = Boolean(object.wantsAllTemporalLayersInIndex);\n if (object.disablePeriodicKeyframeRequestOnContentSender != null)\n message.disablePeriodicKeyframeRequestOnContentSender = Boolean(object.disablePeriodicKeyframeRequestOnContentSender);\n return message;\n };\n\n /**\n * Creates a plain object from a SdkJoinFrame message. Also converts values to other types if specified.\n * @function toObject\n * @memberof SdkJoinFrame\n * @static\n * @param {SdkJoinFrame} message SdkJoinFrame\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n SdkJoinFrame.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.arrays || options.defaults)\n object.supportedServerSideNetworkAdaptions = [];\n if (options.defaults) {\n object.protocolVersion = 2;\n object.maxNumOfVideos = 0;\n object.flags = 0;\n object.clientDetails = null;\n if ($util.Long) {\n var long = new $util.Long(0, 0, true);\n object.audioSessionId = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.audioSessionId = options.longs === String ? \"0\" : 0;\n object.wantsCompressedSdp = false;\n object.serverSideNetworkAdaption = options.enums === String ? \"DEFAULT\" : 1;\n object.wantsAllTemporalLayersInIndex = false;\n object.disablePeriodicKeyframeRequestOnContentSender = false;\n }\n if (message.protocolVersion != null && message.hasOwnProperty(\"protocolVersion\"))\n object.protocolVersion = message.protocolVersion;\n if (message.maxNumOfVideos != null && message.hasOwnProperty(\"maxNumOfVideos\"))\n object.maxNumOfVideos = message.maxNumOfVideos;\n if (message.flags != null && message.hasOwnProperty(\"flags\"))\n object.flags = message.flags;\n if (message.clientDetails != null && message.hasOwnProperty(\"clientDetails\"))\n object.clientDetails = $root.SdkClientDetails.toObject(message.clientDetails, options);\n if (message.audioSessionId != null && message.hasOwnProperty(\"audioSessionId\"))\n if (typeof message.audioSessionId === \"number\")\n object.audioSessionId = options.longs === String ? String(message.audioSessionId) : message.audioSessionId;\n else\n object.audioSessionId = options.longs === String ? $util.Long.prototype.toString.call(message.audioSessionId) : options.longs === Number ? new $util.LongBits(message.audioSessionId.low >>> 0, message.audioSessionId.high >>> 0).toNumber(true) : message.audioSessionId;\n if (message.wantsCompressedSdp != null && message.hasOwnProperty(\"wantsCompressedSdp\"))\n object.wantsCompressedSdp = message.wantsCompressedSdp;\n if (message.serverSideNetworkAdaption != null && message.hasOwnProperty(\"serverSideNetworkAdaption\"))\n object.serverSideNetworkAdaption = options.enums === String ? $root.SdkServerSideNetworkAdaption[message.serverSideNetworkAdaption] === undefined ? message.serverSideNetworkAdaption : $root.SdkServerSideNetworkAdaption[message.serverSideNetworkAdaption] : message.serverSideNetworkAdaption;\n if (message.supportedServerSideNetworkAdaptions && message.supportedServerSideNetworkAdaptions.length) {\n object.supportedServerSideNetworkAdaptions = [];\n for (var j = 0; j < message.supportedServerSideNetworkAdaptions.length; ++j)\n object.supportedServerSideNetworkAdaptions[j] = options.enums === String ? $root.SdkServerSideNetworkAdaption[message.supportedServerSideNetworkAdaptions[j]] === undefined ? message.supportedServerSideNetworkAdaptions[j] : $root.SdkServerSideNetworkAdaption[message.supportedServerSideNetworkAdaptions[j]] : message.supportedServerSideNetworkAdaptions[j];\n }\n if (message.wantsAllTemporalLayersInIndex != null && message.hasOwnProperty(\"wantsAllTemporalLayersInIndex\"))\n object.wantsAllTemporalLayersInIndex = message.wantsAllTemporalLayersInIndex;\n if (message.disablePeriodicKeyframeRequestOnContentSender != null && message.hasOwnProperty(\"disablePeriodicKeyframeRequestOnContentSender\"))\n object.disablePeriodicKeyframeRequestOnContentSender = message.disablePeriodicKeyframeRequestOnContentSender;\n return object;\n };\n\n /**\n * Converts this SdkJoinFrame to JSON.\n * @function toJSON\n * @memberof SdkJoinFrame\n * @instance\n * @returns {Object.} JSON object\n */\n SdkJoinFrame.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n /**\n * Gets the default type url for SdkJoinFrame\n * @function getTypeUrl\n * @memberof SdkJoinFrame\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n SdkJoinFrame.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/SdkJoinFrame\";\n };\n\n return SdkJoinFrame;\n})();\n\n$root.SdkJoinAckFrame = (function() {\n\n /**\n * Properties of a SdkJoinAckFrame.\n * @name ISdkJoinAckFrame\n * @interface ISdkJoinAckFrame\n * @property {ISdkTurnCredentials|null} [turnCredentials] SdkJoinAckFrame turnCredentials\n * @property {number|null} [videoSubscriptionLimit] SdkJoinAckFrame videoSubscriptionLimit\n * @property {boolean|null} [wantsCompressedSdp] SdkJoinAckFrame wantsCompressedSdp\n * @property {SdkServerSideNetworkAdaption|null} [defaultServerSideNetworkAdaption] SdkJoinAckFrame defaultServerSideNetworkAdaption\n */\n\n /**\n * Constructs a new SdkJoinAckFrame.\n * @name SdkJoinAckFrame\n * @classdesc Represents a SdkJoinAckFrame.\n * @implements ISdkJoinAckFrame\n * @constructor\n * @param {ISdkJoinAckFrame=} [properties] Properties to set\n */\n function SdkJoinAckFrame(properties) {\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * SdkJoinAckFrame turnCredentials.\n * @member {ISdkTurnCredentials|null|undefined} turnCredentials\n * @memberof SdkJoinAckFrame\n * @instance\n */\n SdkJoinAckFrame.prototype.turnCredentials = null;\n\n /**\n * SdkJoinAckFrame videoSubscriptionLimit.\n * @member {number} videoSubscriptionLimit\n * @memberof SdkJoinAckFrame\n * @instance\n */\n SdkJoinAckFrame.prototype.videoSubscriptionLimit = 0;\n\n /**\n * SdkJoinAckFrame wantsCompressedSdp.\n * @member {boolean} wantsCompressedSdp\n * @memberof SdkJoinAckFrame\n * @instance\n */\n SdkJoinAckFrame.prototype.wantsCompressedSdp = false;\n\n /**\n * SdkJoinAckFrame defaultServerSideNetworkAdaption.\n * @member {SdkServerSideNetworkAdaption} defaultServerSideNetworkAdaption\n * @memberof SdkJoinAckFrame\n * @instance\n */\n SdkJoinAckFrame.prototype.defaultServerSideNetworkAdaption = 1;\n\n /**\n * Creates a new SdkJoinAckFrame instance using the specified properties.\n * @function create\n * @memberof SdkJoinAckFrame\n * @static\n * @param {ISdkJoinAckFrame=} [properties] Properties to set\n * @returns {SdkJoinAckFrame} SdkJoinAckFrame instance\n */\n SdkJoinAckFrame.create = function create(properties) {\n return new SdkJoinAckFrame(properties);\n };\n\n /**\n * Encodes the specified SdkJoinAckFrame message. Does not implicitly {@link SdkJoinAckFrame.verify|verify} messages.\n * @function encode\n * @memberof SdkJoinAckFrame\n * @static\n * @param {ISdkJoinAckFrame} message SdkJoinAckFrame message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n SdkJoinAckFrame.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.turnCredentials != null && Object.hasOwnProperty.call(message, \"turnCredentials\"))\n $root.SdkTurnCredentials.encode(message.turnCredentials, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();\n if (message.videoSubscriptionLimit != null && Object.hasOwnProperty.call(message, \"videoSubscriptionLimit\"))\n writer.uint32(/* id 2, wireType 0 =*/16).uint32(message.videoSubscriptionLimit);\n if (message.wantsCompressedSdp != null && Object.hasOwnProperty.call(message, \"wantsCompressedSdp\"))\n writer.uint32(/* id 3, wireType 0 =*/24).bool(message.wantsCompressedSdp);\n if (message.defaultServerSideNetworkAdaption != null && Object.hasOwnProperty.call(message, \"defaultServerSideNetworkAdaption\"))\n writer.uint32(/* id 4, wireType 0 =*/32).int32(message.defaultServerSideNetworkAdaption);\n return writer;\n };\n\n /**\n * Encodes the specified SdkJoinAckFrame message, length delimited. Does not implicitly {@link SdkJoinAckFrame.verify|verify} messages.\n * @function encodeDelimited\n * @memberof SdkJoinAckFrame\n * @static\n * @param {ISdkJoinAckFrame} message SdkJoinAckFrame message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n SdkJoinAckFrame.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a SdkJoinAckFrame message from the specified reader or buffer.\n * @function decode\n * @memberof SdkJoinAckFrame\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {SdkJoinAckFrame} SdkJoinAckFrame\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n SdkJoinAckFrame.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.SdkJoinAckFrame();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n message.turnCredentials = $root.SdkTurnCredentials.decode(reader, reader.uint32());\n break;\n }\n case 2: {\n message.videoSubscriptionLimit = reader.uint32();\n break;\n }\n case 3: {\n message.wantsCompressedSdp = reader.bool();\n break;\n }\n case 4: {\n message.defaultServerSideNetworkAdaption = reader.int32();\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a SdkJoinAckFrame message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof SdkJoinAckFrame\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {SdkJoinAckFrame} SdkJoinAckFrame\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n SdkJoinAckFrame.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a SdkJoinAckFrame message.\n * @function verify\n * @memberof SdkJoinAckFrame\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n SdkJoinAckFrame.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.turnCredentials != null && message.hasOwnProperty(\"turnCredentials\")) {\n var error = $root.SdkTurnCredentials.verify(message.turnCredentials);\n if (error)\n return \"turnCredentials.\" + error;\n }\n if (message.videoSubscriptionLimit != null && message.hasOwnProperty(\"videoSubscriptionLimit\"))\n if (!$util.isInteger(message.videoSubscriptionLimit))\n return \"videoSubscriptionLimit: integer expected\";\n if (message.wantsCompressedSdp != null && message.hasOwnProperty(\"wantsCompressedSdp\"))\n if (typeof message.wantsCompressedSdp !== \"boolean\")\n return \"wantsCompressedSdp: boolean expected\";\n if (message.defaultServerSideNetworkAdaption != null && message.hasOwnProperty(\"defaultServerSideNetworkAdaption\"))\n switch (message.defaultServerSideNetworkAdaption) {\n default:\n return \"defaultServerSideNetworkAdaption: enum value expected\";\n case 1:\n case 2:\n case 3:\n case 4:\n break;\n }\n return null;\n };\n\n /**\n * Creates a SdkJoinAckFrame message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof SdkJoinAckFrame\n * @static\n * @param {Object.} object Plain object\n * @returns {SdkJoinAckFrame} SdkJoinAckFrame\n */\n SdkJoinAckFrame.fromObject = function fromObject(object) {\n if (object instanceof $root.SdkJoinAckFrame)\n return object;\n var message = new $root.SdkJoinAckFrame();\n if (object.turnCredentials != null) {\n if (typeof object.turnCredentials !== \"object\")\n throw TypeError(\".SdkJoinAckFrame.turnCredentials: object expected\");\n message.turnCredentials = $root.SdkTurnCredentials.fromObject(object.turnCredentials);\n }\n if (object.videoSubscriptionLimit != null)\n message.videoSubscriptionLimit = object.videoSubscriptionLimit >>> 0;\n if (object.wantsCompressedSdp != null)\n message.wantsCompressedSdp = Boolean(object.wantsCompressedSdp);\n switch (object.defaultServerSideNetworkAdaption) {\n default:\n if (typeof object.defaultServerSideNetworkAdaption === \"number\") {\n message.defaultServerSideNetworkAdaption = object.defaultServerSideNetworkAdaption;\n break;\n }\n break;\n case \"DEFAULT\":\n case 1:\n message.defaultServerSideNetworkAdaption = 1;\n break;\n case \"NONE\":\n case 2:\n message.defaultServerSideNetworkAdaption = 2;\n break;\n case \"BANDWIDTH_PROBING\":\n case 3:\n message.defaultServerSideNetworkAdaption = 3;\n break;\n case \"BANDWIDTH_PROBING_AND_VIDEO_QUALITY_ADAPTION\":\n case 4:\n message.defaultServerSideNetworkAdaption = 4;\n break;\n }\n return message;\n };\n\n /**\n * Creates a plain object from a SdkJoinAckFrame message. Also converts values to other types if specified.\n * @function toObject\n * @memberof SdkJoinAckFrame\n * @static\n * @param {SdkJoinAckFrame} message SdkJoinAckFrame\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n SdkJoinAckFrame.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.defaults) {\n object.turnCredentials = null;\n object.videoSubscriptionLimit = 0;\n object.wantsCompressedSdp = false;\n object.defaultServerSideNetworkAdaption = options.enums === String ? \"DEFAULT\" : 1;\n }\n if (message.turnCredentials != null && message.hasOwnProperty(\"turnCredentials\"))\n object.turnCredentials = $root.SdkTurnCredentials.toObject(message.turnCredentials, options);\n if (message.videoSubscriptionLimit != null && message.hasOwnProperty(\"videoSubscriptionLimit\"))\n object.videoSubscriptionLimit = message.videoSubscriptionLimit;\n if (message.wantsCompressedSdp != null && message.hasOwnProperty(\"wantsCompressedSdp\"))\n object.wantsCompressedSdp = message.wantsCompressedSdp;\n if (message.defaultServerSideNetworkAdaption != null && message.hasOwnProperty(\"defaultServerSideNetworkAdaption\"))\n object.defaultServerSideNetworkAdaption = options.enums === String ? $root.SdkServerSideNetworkAdaption[message.defaultServerSideNetworkAdaption] === undefined ? message.defaultServerSideNetworkAdaption : $root.SdkServerSideNetworkAdaption[message.defaultServerSideNetworkAdaption] : message.defaultServerSideNetworkAdaption;\n return object;\n };\n\n /**\n * Converts this SdkJoinAckFrame to JSON.\n * @function toJSON\n * @memberof SdkJoinAckFrame\n * @instance\n * @returns {Object.} JSON object\n */\n SdkJoinAckFrame.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n /**\n * Gets the default type url for SdkJoinAckFrame\n * @function getTypeUrl\n * @memberof SdkJoinAckFrame\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n SdkJoinAckFrame.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/SdkJoinAckFrame\";\n };\n\n return SdkJoinAckFrame;\n})();\n\n$root.SdkLeaveFrame = (function() {\n\n /**\n * Properties of a SdkLeaveFrame.\n * @name ISdkLeaveFrame\n * @interface ISdkLeaveFrame\n */\n\n /**\n * Constructs a new SdkLeaveFrame.\n * @name SdkLeaveFrame\n * @classdesc Represents a SdkLeaveFrame.\n * @implements ISdkLeaveFrame\n * @constructor\n * @param {ISdkLeaveFrame=} [properties] Properties to set\n */\n function SdkLeaveFrame(properties) {\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * Creates a new SdkLeaveFrame instance using the specified properties.\n * @function create\n * @memberof SdkLeaveFrame\n * @static\n * @param {ISdkLeaveFrame=} [properties] Properties to set\n * @returns {SdkLeaveFrame} SdkLeaveFrame instance\n */\n SdkLeaveFrame.create = function create(properties) {\n return new SdkLeaveFrame(properties);\n };\n\n /**\n * Encodes the specified SdkLeaveFrame message. Does not implicitly {@link SdkLeaveFrame.verify|verify} messages.\n * @function encode\n * @memberof SdkLeaveFrame\n * @static\n * @param {ISdkLeaveFrame} message SdkLeaveFrame message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n SdkLeaveFrame.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n return writer;\n };\n\n /**\n * Encodes the specified SdkLeaveFrame message, length delimited. Does not implicitly {@link SdkLeaveFrame.verify|verify} messages.\n * @function encodeDelimited\n * @memberof SdkLeaveFrame\n * @static\n * @param {ISdkLeaveFrame} message SdkLeaveFrame message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n SdkLeaveFrame.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a SdkLeaveFrame message from the specified reader or buffer.\n * @function decode\n * @memberof SdkLeaveFrame\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {SdkLeaveFrame} SdkLeaveFrame\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n SdkLeaveFrame.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.SdkLeaveFrame();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a SdkLeaveFrame message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof SdkLeaveFrame\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {SdkLeaveFrame} SdkLeaveFrame\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n SdkLeaveFrame.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a SdkLeaveFrame message.\n * @function verify\n * @memberof SdkLeaveFrame\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n SdkLeaveFrame.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n return null;\n };\n\n /**\n * Creates a SdkLeaveFrame message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof SdkLeaveFrame\n * @static\n * @param {Object.} object Plain object\n * @returns {SdkLeaveFrame} SdkLeaveFrame\n */\n SdkLeaveFrame.fromObject = function fromObject(object) {\n if (object instanceof $root.SdkLeaveFrame)\n return object;\n return new $root.SdkLeaveFrame();\n };\n\n /**\n * Creates a plain object from a SdkLeaveFrame message. Also converts values to other types if specified.\n * @function toObject\n * @memberof SdkLeaveFrame\n * @static\n * @param {SdkLeaveFrame} message SdkLeaveFrame\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n SdkLeaveFrame.toObject = function toObject() {\n return {};\n };\n\n /**\n * Converts this SdkLeaveFrame to JSON.\n * @function toJSON\n * @memberof SdkLeaveFrame\n * @instance\n * @returns {Object.} JSON object\n */\n SdkLeaveFrame.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n /**\n * Gets the default type url for SdkLeaveFrame\n * @function getTypeUrl\n * @memberof SdkLeaveFrame\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n SdkLeaveFrame.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/SdkLeaveFrame\";\n };\n\n return SdkLeaveFrame;\n})();\n\n$root.SdkLeaveAckFrame = (function() {\n\n /**\n * Properties of a SdkLeaveAckFrame.\n * @name ISdkLeaveAckFrame\n * @interface ISdkLeaveAckFrame\n */\n\n /**\n * Constructs a new SdkLeaveAckFrame.\n * @name SdkLeaveAckFrame\n * @classdesc Represents a SdkLeaveAckFrame.\n * @implements ISdkLeaveAckFrame\n * @constructor\n * @param {ISdkLeaveAckFrame=} [properties] Properties to set\n */\n function SdkLeaveAckFrame(properties) {\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * Creates a new SdkLeaveAckFrame instance using the specified properties.\n * @function create\n * @memberof SdkLeaveAckFrame\n * @static\n * @param {ISdkLeaveAckFrame=} [properties] Properties to set\n * @returns {SdkLeaveAckFrame} SdkLeaveAckFrame instance\n */\n SdkLeaveAckFrame.create = function create(properties) {\n return new SdkLeaveAckFrame(properties);\n };\n\n /**\n * Encodes the specified SdkLeaveAckFrame message. Does not implicitly {@link SdkLeaveAckFrame.verify|verify} messages.\n * @function encode\n * @memberof SdkLeaveAckFrame\n * @static\n * @param {ISdkLeaveAckFrame} message SdkLeaveAckFrame message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n SdkLeaveAckFrame.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n return writer;\n };\n\n /**\n * Encodes the specified SdkLeaveAckFrame message, length delimited. Does not implicitly {@link SdkLeaveAckFrame.verify|verify} messages.\n * @function encodeDelimited\n * @memberof SdkLeaveAckFrame\n * @static\n * @param {ISdkLeaveAckFrame} message SdkLeaveAckFrame message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n SdkLeaveAckFrame.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a SdkLeaveAckFrame message from the specified reader or buffer.\n * @function decode\n * @memberof SdkLeaveAckFrame\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {SdkLeaveAckFrame} SdkLeaveAckFrame\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n SdkLeaveAckFrame.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.SdkLeaveAckFrame();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a SdkLeaveAckFrame message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof SdkLeaveAckFrame\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {SdkLeaveAckFrame} SdkLeaveAckFrame\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n SdkLeaveAckFrame.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a SdkLeaveAckFrame message.\n * @function verify\n * @memberof SdkLeaveAckFrame\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n SdkLeaveAckFrame.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n return null;\n };\n\n /**\n * Creates a SdkLeaveAckFrame message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof SdkLeaveAckFrame\n * @static\n * @param {Object.} object Plain object\n * @returns {SdkLeaveAckFrame} SdkLeaveAckFrame\n */\n SdkLeaveAckFrame.fromObject = function fromObject(object) {\n if (object instanceof $root.SdkLeaveAckFrame)\n return object;\n return new $root.SdkLeaveAckFrame();\n };\n\n /**\n * Creates a plain object from a SdkLeaveAckFrame message. Also converts values to other types if specified.\n * @function toObject\n * @memberof SdkLeaveAckFrame\n * @static\n * @param {SdkLeaveAckFrame} message SdkLeaveAckFrame\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n SdkLeaveAckFrame.toObject = function toObject() {\n return {};\n };\n\n /**\n * Converts this SdkLeaveAckFrame to JSON.\n * @function toJSON\n * @memberof SdkLeaveAckFrame\n * @instance\n * @returns {Object.} JSON object\n */\n SdkLeaveAckFrame.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n /**\n * Gets the default type url for SdkLeaveAckFrame\n * @function getTypeUrl\n * @memberof SdkLeaveAckFrame\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n SdkLeaveAckFrame.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/SdkLeaveAckFrame\";\n };\n\n return SdkLeaveAckFrame;\n})();\n\n/**\n * SdkStreamServiceType enum.\n * @name SdkStreamServiceType\n * @enum {number}\n * @property {number} RX=1 RX value\n * @property {number} TX=2 TX value\n * @property {number} DUPLEX=3 DUPLEX value\n */\n$root.SdkStreamServiceType = (function() {\n var valuesById = {}, values = Object.create(valuesById);\n values[valuesById[1] = \"RX\"] = 1;\n values[valuesById[2] = \"TX\"] = 2;\n values[valuesById[3] = \"DUPLEX\"] = 3;\n return values;\n})();\n\n/**\n * SdkStreamMediaType enum.\n * @name SdkStreamMediaType\n * @enum {number}\n * @property {number} AUDIO=1 AUDIO value\n * @property {number} VIDEO=2 VIDEO value\n */\n$root.SdkStreamMediaType = (function() {\n var valuesById = {}, values = Object.create(valuesById);\n values[valuesById[1] = \"AUDIO\"] = 1;\n values[valuesById[2] = \"VIDEO\"] = 2;\n return values;\n})();\n\n$root.SdkSubscribeFrame = (function() {\n\n /**\n * Properties of a SdkSubscribeFrame.\n * @name ISdkSubscribeFrame\n * @interface ISdkSubscribeFrame\n * @property {SdkStreamServiceType|null} [duplex] SdkSubscribeFrame duplex\n * @property {Array.|null} [sendStreams] SdkSubscribeFrame sendStreams\n * @property {Array.|null} [receiveStreamIds] SdkSubscribeFrame receiveStreamIds\n * @property {string|null} [sdpOffer] SdkSubscribeFrame sdpOffer\n * @property {string|null} [audioHost] SdkSubscribeFrame audioHost\n * @property {boolean|null} [audioCheckin] SdkSubscribeFrame audioCheckin\n * @property {boolean|null} [audioMuted] SdkSubscribeFrame audioMuted\n * @property {Uint8Array|null} [compressedSdpOffer] SdkSubscribeFrame compressedSdpOffer\n * @property {Array.|null} [videoSubscriptionConfiguration] SdkSubscribeFrame videoSubscriptionConfiguration\n */\n\n /**\n * Constructs a new SdkSubscribeFrame.\n * @name SdkSubscribeFrame\n * @classdesc Represents a SdkSubscribeFrame.\n * @implements ISdkSubscribeFrame\n * @constructor\n * @param {ISdkSubscribeFrame=} [properties] Properties to set\n */\n function SdkSubscribeFrame(properties) {\n this.sendStreams = [];\n this.receiveStreamIds = [];\n this.videoSubscriptionConfiguration = [];\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * SdkSubscribeFrame duplex.\n * @member {SdkStreamServiceType} duplex\n * @memberof SdkSubscribeFrame\n * @instance\n */\n SdkSubscribeFrame.prototype.duplex = 1;\n\n /**\n * SdkSubscribeFrame sendStreams.\n * @member {Array.} sendStreams\n * @memberof SdkSubscribeFrame\n * @instance\n */\n SdkSubscribeFrame.prototype.sendStreams = $util.emptyArray;\n\n /**\n * SdkSubscribeFrame receiveStreamIds.\n * @member {Array.} receiveStreamIds\n * @memberof SdkSubscribeFrame\n * @instance\n */\n SdkSubscribeFrame.prototype.receiveStreamIds = $util.emptyArray;\n\n /**\n * SdkSubscribeFrame sdpOffer.\n * @member {string} sdpOffer\n * @memberof SdkSubscribeFrame\n * @instance\n */\n SdkSubscribeFrame.prototype.sdpOffer = \"\";\n\n /**\n * SdkSubscribeFrame audioHost.\n * @member {string} audioHost\n * @memberof SdkSubscribeFrame\n * @instance\n */\n SdkSubscribeFrame.prototype.audioHost = \"\";\n\n /**\n * SdkSubscribeFrame audioCheckin.\n * @member {boolean} audioCheckin\n * @memberof SdkSubscribeFrame\n * @instance\n */\n SdkSubscribeFrame.prototype.audioCheckin = false;\n\n /**\n * SdkSubscribeFrame audioMuted.\n * @member {boolean} audioMuted\n * @memberof SdkSubscribeFrame\n * @instance\n */\n SdkSubscribeFrame.prototype.audioMuted = false;\n\n /**\n * SdkSubscribeFrame compressedSdpOffer.\n * @member {Uint8Array} compressedSdpOffer\n * @memberof SdkSubscribeFrame\n * @instance\n */\n SdkSubscribeFrame.prototype.compressedSdpOffer = $util.newBuffer([]);\n\n /**\n * SdkSubscribeFrame videoSubscriptionConfiguration.\n * @member {Array.} videoSubscriptionConfiguration\n * @memberof SdkSubscribeFrame\n * @instance\n */\n SdkSubscribeFrame.prototype.videoSubscriptionConfiguration = $util.emptyArray;\n\n /**\n * Creates a new SdkSubscribeFrame instance using the specified properties.\n * @function create\n * @memberof SdkSubscribeFrame\n * @static\n * @param {ISdkSubscribeFrame=} [properties] Properties to set\n * @returns {SdkSubscribeFrame} SdkSubscribeFrame instance\n */\n SdkSubscribeFrame.create = function create(properties) {\n return new SdkSubscribeFrame(properties);\n };\n\n /**\n * Encodes the specified SdkSubscribeFrame message. Does not implicitly {@link SdkSubscribeFrame.verify|verify} messages.\n * @function encode\n * @memberof SdkSubscribeFrame\n * @static\n * @param {ISdkSubscribeFrame} message SdkSubscribeFrame message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n SdkSubscribeFrame.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.duplex != null && Object.hasOwnProperty.call(message, \"duplex\"))\n writer.uint32(/* id 1, wireType 0 =*/8).int32(message.duplex);\n if (message.sendStreams != null && message.sendStreams.length)\n for (var i = 0; i < message.sendStreams.length; ++i)\n $root.SdkStreamDescriptor.encode(message.sendStreams[i], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();\n if (message.receiveStreamIds != null && message.receiveStreamIds.length)\n for (var i = 0; i < message.receiveStreamIds.length; ++i)\n writer.uint32(/* id 3, wireType 0 =*/24).uint32(message.receiveStreamIds[i]);\n if (message.sdpOffer != null && Object.hasOwnProperty.call(message, \"sdpOffer\"))\n writer.uint32(/* id 4, wireType 2 =*/34).string(message.sdpOffer);\n if (message.audioHost != null && Object.hasOwnProperty.call(message, \"audioHost\"))\n writer.uint32(/* id 5, wireType 2 =*/42).string(message.audioHost);\n if (message.audioCheckin != null && Object.hasOwnProperty.call(message, \"audioCheckin\"))\n writer.uint32(/* id 6, wireType 0 =*/48).bool(message.audioCheckin);\n if (message.audioMuted != null && Object.hasOwnProperty.call(message, \"audioMuted\"))\n writer.uint32(/* id 7, wireType 0 =*/56).bool(message.audioMuted);\n if (message.compressedSdpOffer != null && Object.hasOwnProperty.call(message, \"compressedSdpOffer\"))\n writer.uint32(/* id 8, wireType 2 =*/66).bytes(message.compressedSdpOffer);\n if (message.videoSubscriptionConfiguration != null && message.videoSubscriptionConfiguration.length)\n for (var i = 0; i < message.videoSubscriptionConfiguration.length; ++i)\n $root.SdkVideoSubscriptionConfiguration.encode(message.videoSubscriptionConfiguration[i], writer.uint32(/* id 9, wireType 2 =*/74).fork()).ldelim();\n return writer;\n };\n\n /**\n * Encodes the specified SdkSubscribeFrame message, length delimited. Does not implicitly {@link SdkSubscribeFrame.verify|verify} messages.\n * @function encodeDelimited\n * @memberof SdkSubscribeFrame\n * @static\n * @param {ISdkSubscribeFrame} message SdkSubscribeFrame message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n SdkSubscribeFrame.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a SdkSubscribeFrame message from the specified reader or buffer.\n * @function decode\n * @memberof SdkSubscribeFrame\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {SdkSubscribeFrame} SdkSubscribeFrame\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n SdkSubscribeFrame.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.SdkSubscribeFrame();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n message.duplex = reader.int32();\n break;\n }\n case 2: {\n if (!(message.sendStreams && message.sendStreams.length))\n message.sendStreams = [];\n message.sendStreams.push($root.SdkStreamDescriptor.decode(reader, reader.uint32()));\n break;\n }\n case 3: {\n if (!(message.receiveStreamIds && message.receiveStreamIds.length))\n message.receiveStreamIds = [];\n if ((tag & 7) === 2) {\n var end2 = reader.uint32() + reader.pos;\n while (reader.pos < end2)\n message.receiveStreamIds.push(reader.uint32());\n } else\n message.receiveStreamIds.push(reader.uint32());\n break;\n }\n case 4: {\n message.sdpOffer = reader.string();\n break;\n }\n case 5: {\n message.audioHost = reader.string();\n break;\n }\n case 6: {\n message.audioCheckin = reader.bool();\n break;\n }\n case 7: {\n message.audioMuted = reader.bool();\n break;\n }\n case 8: {\n message.compressedSdpOffer = reader.bytes();\n break;\n }\n case 9: {\n if (!(message.videoSubscriptionConfiguration && message.videoSubscriptionConfiguration.length))\n message.videoSubscriptionConfiguration = [];\n message.videoSubscriptionConfiguration.push($root.SdkVideoSubscriptionConfiguration.decode(reader, reader.uint32()));\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a SdkSubscribeFrame message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof SdkSubscribeFrame\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {SdkSubscribeFrame} SdkSubscribeFrame\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n SdkSubscribeFrame.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a SdkSubscribeFrame message.\n * @function verify\n * @memberof SdkSubscribeFrame\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n SdkSubscribeFrame.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.duplex != null && message.hasOwnProperty(\"duplex\"))\n switch (message.duplex) {\n default:\n return \"duplex: enum value expected\";\n case 1:\n case 2:\n case 3:\n break;\n }\n if (message.sendStreams != null && message.hasOwnProperty(\"sendStreams\")) {\n if (!Array.isArray(message.sendStreams))\n return \"sendStreams: array expected\";\n for (var i = 0; i < message.sendStreams.length; ++i) {\n var error = $root.SdkStreamDescriptor.verify(message.sendStreams[i]);\n if (error)\n return \"sendStreams.\" + error;\n }\n }\n if (message.receiveStreamIds != null && message.hasOwnProperty(\"receiveStreamIds\")) {\n if (!Array.isArray(message.receiveStreamIds))\n return \"receiveStreamIds: array expected\";\n for (var i = 0; i < message.receiveStreamIds.length; ++i)\n if (!$util.isInteger(message.receiveStreamIds[i]))\n return \"receiveStreamIds: integer[] expected\";\n }\n if (message.sdpOffer != null && message.hasOwnProperty(\"sdpOffer\"))\n if (!$util.isString(message.sdpOffer))\n return \"sdpOffer: string expected\";\n if (message.audioHost != null && message.hasOwnProperty(\"audioHost\"))\n if (!$util.isString(message.audioHost))\n return \"audioHost: string expected\";\n if (message.audioCheckin != null && message.hasOwnProperty(\"audioCheckin\"))\n if (typeof message.audioCheckin !== \"boolean\")\n return \"audioCheckin: boolean expected\";\n if (message.audioMuted != null && message.hasOwnProperty(\"audioMuted\"))\n if (typeof message.audioMuted !== \"boolean\")\n return \"audioMuted: boolean expected\";\n if (message.compressedSdpOffer != null && message.hasOwnProperty(\"compressedSdpOffer\"))\n if (!(message.compressedSdpOffer && typeof message.compressedSdpOffer.length === \"number\" || $util.isString(message.compressedSdpOffer)))\n return \"compressedSdpOffer: buffer expected\";\n if (message.videoSubscriptionConfiguration != null && message.hasOwnProperty(\"videoSubscriptionConfiguration\")) {\n if (!Array.isArray(message.videoSubscriptionConfiguration))\n return \"videoSubscriptionConfiguration: array expected\";\n for (var i = 0; i < message.videoSubscriptionConfiguration.length; ++i) {\n var error = $root.SdkVideoSubscriptionConfiguration.verify(message.videoSubscriptionConfiguration[i]);\n if (error)\n return \"videoSubscriptionConfiguration.\" + error;\n }\n }\n return null;\n };\n\n /**\n * Creates a SdkSubscribeFrame message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof SdkSubscribeFrame\n * @static\n * @param {Object.} object Plain object\n * @returns {SdkSubscribeFrame} SdkSubscribeFrame\n */\n SdkSubscribeFrame.fromObject = function fromObject(object) {\n if (object instanceof $root.SdkSubscribeFrame)\n return object;\n var message = new $root.SdkSubscribeFrame();\n switch (object.duplex) {\n default:\n if (typeof object.duplex === \"number\") {\n message.duplex = object.duplex;\n break;\n }\n break;\n case \"RX\":\n case 1:\n message.duplex = 1;\n break;\n case \"TX\":\n case 2:\n message.duplex = 2;\n break;\n case \"DUPLEX\":\n case 3:\n message.duplex = 3;\n break;\n }\n if (object.sendStreams) {\n if (!Array.isArray(object.sendStreams))\n throw TypeError(\".SdkSubscribeFrame.sendStreams: array expected\");\n message.sendStreams = [];\n for (var i = 0; i < object.sendStreams.length; ++i) {\n if (typeof object.sendStreams[i] !== \"object\")\n throw TypeError(\".SdkSubscribeFrame.sendStreams: object expected\");\n message.sendStreams[i] = $root.SdkStreamDescriptor.fromObject(object.sendStreams[i]);\n }\n }\n if (object.receiveStreamIds) {\n if (!Array.isArray(object.receiveStreamIds))\n throw TypeError(\".SdkSubscribeFrame.receiveStreamIds: array expected\");\n message.receiveStreamIds = [];\n for (var i = 0; i < object.receiveStreamIds.length; ++i)\n message.receiveStreamIds[i] = object.receiveStreamIds[i] >>> 0;\n }\n if (object.sdpOffer != null)\n message.sdpOffer = String(object.sdpOffer);\n if (object.audioHost != null)\n message.audioHost = String(object.audioHost);\n if (object.audioCheckin != null)\n message.audioCheckin = Boolean(object.audioCheckin);\n if (object.audioMuted != null)\n message.audioMuted = Boolean(object.audioMuted);\n if (object.compressedSdpOffer != null)\n if (typeof object.compressedSdpOffer === \"string\")\n $util.base64.decode(object.compressedSdpOffer, message.compressedSdpOffer = $util.newBuffer($util.base64.length(object.compressedSdpOffer)), 0);\n else if (object.compressedSdpOffer.length >= 0)\n message.compressedSdpOffer = object.compressedSdpOffer;\n if (object.videoSubscriptionConfiguration) {\n if (!Array.isArray(object.videoSubscriptionConfiguration))\n throw TypeError(\".SdkSubscribeFrame.videoSubscriptionConfiguration: array expected\");\n message.videoSubscriptionConfiguration = [];\n for (var i = 0; i < object.videoSubscriptionConfiguration.length; ++i) {\n if (typeof object.videoSubscriptionConfiguration[i] !== \"object\")\n throw TypeError(\".SdkSubscribeFrame.videoSubscriptionConfiguration: object expected\");\n message.videoSubscriptionConfiguration[i] = $root.SdkVideoSubscriptionConfiguration.fromObject(object.videoSubscriptionConfiguration[i]);\n }\n }\n return message;\n };\n\n /**\n * Creates a plain object from a SdkSubscribeFrame message. Also converts values to other types if specified.\n * @function toObject\n * @memberof SdkSubscribeFrame\n * @static\n * @param {SdkSubscribeFrame} message SdkSubscribeFrame\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n SdkSubscribeFrame.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.arrays || options.defaults) {\n object.sendStreams = [];\n object.receiveStreamIds = [];\n object.videoSubscriptionConfiguration = [];\n }\n if (options.defaults) {\n object.duplex = options.enums === String ? \"RX\" : 1;\n object.sdpOffer = \"\";\n object.audioHost = \"\";\n object.audioCheckin = false;\n object.audioMuted = false;\n if (options.bytes === String)\n object.compressedSdpOffer = \"\";\n else {\n object.compressedSdpOffer = [];\n if (options.bytes !== Array)\n object.compressedSdpOffer = $util.newBuffer(object.compressedSdpOffer);\n }\n }\n if (message.duplex != null && message.hasOwnProperty(\"duplex\"))\n object.duplex = options.enums === String ? $root.SdkStreamServiceType[message.duplex] === undefined ? message.duplex : $root.SdkStreamServiceType[message.duplex] : message.duplex;\n if (message.sendStreams && message.sendStreams.length) {\n object.sendStreams = [];\n for (var j = 0; j < message.sendStreams.length; ++j)\n object.sendStreams[j] = $root.SdkStreamDescriptor.toObject(message.sendStreams[j], options);\n }\n if (message.receiveStreamIds && message.receiveStreamIds.length) {\n object.receiveStreamIds = [];\n for (var j = 0; j < message.receiveStreamIds.length; ++j)\n object.receiveStreamIds[j] = message.receiveStreamIds[j];\n }\n if (message.sdpOffer != null && message.hasOwnProperty(\"sdpOffer\"))\n object.sdpOffer = message.sdpOffer;\n if (message.audioHost != null && message.hasOwnProperty(\"audioHost\"))\n object.audioHost = message.audioHost;\n if (message.audioCheckin != null && message.hasOwnProperty(\"audioCheckin\"))\n object.audioCheckin = message.audioCheckin;\n if (message.audioMuted != null && message.hasOwnProperty(\"audioMuted\"))\n object.audioMuted = message.audioMuted;\n if (message.compressedSdpOffer != null && message.hasOwnProperty(\"compressedSdpOffer\"))\n object.compressedSdpOffer = options.bytes === String ? $util.base64.encode(message.compressedSdpOffer, 0, message.compressedSdpOffer.length) : options.bytes === Array ? Array.prototype.slice.call(message.compressedSdpOffer) : message.compressedSdpOffer;\n if (message.videoSubscriptionConfiguration && message.videoSubscriptionConfiguration.length) {\n object.videoSubscriptionConfiguration = [];\n for (var j = 0; j < message.videoSubscriptionConfiguration.length; ++j)\n object.videoSubscriptionConfiguration[j] = $root.SdkVideoSubscriptionConfiguration.toObject(message.videoSubscriptionConfiguration[j], options);\n }\n return object;\n };\n\n /**\n * Converts this SdkSubscribeFrame to JSON.\n * @function toJSON\n * @memberof SdkSubscribeFrame\n * @instance\n * @returns {Object.} JSON object\n */\n SdkSubscribeFrame.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n /**\n * Gets the default type url for SdkSubscribeFrame\n * @function getTypeUrl\n * @memberof SdkSubscribeFrame\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n SdkSubscribeFrame.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/SdkSubscribeFrame\";\n };\n\n return SdkSubscribeFrame;\n})();\n\n$root.SdkSubscribeAckFrame = (function() {\n\n /**\n * Properties of a SdkSubscribeAckFrame.\n * @name ISdkSubscribeAckFrame\n * @interface ISdkSubscribeAckFrame\n * @property {SdkStreamServiceType|null} [duplex] SdkSubscribeAckFrame duplex\n * @property {Array.|null} [allocations] SdkSubscribeAckFrame allocations\n * @property {string|null} [sdpAnswer] SdkSubscribeAckFrame sdpAnswer\n * @property {Array.|null} [tracks] SdkSubscribeAckFrame tracks\n * @property {Uint8Array|null} [compressedSdpAnswer] SdkSubscribeAckFrame compressedSdpAnswer\n */\n\n /**\n * Constructs a new SdkSubscribeAckFrame.\n * @name SdkSubscribeAckFrame\n * @classdesc Represents a SdkSubscribeAckFrame.\n * @implements ISdkSubscribeAckFrame\n * @constructor\n * @param {ISdkSubscribeAckFrame=} [properties] Properties to set\n */\n function SdkSubscribeAckFrame(properties) {\n this.allocations = [];\n this.tracks = [];\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * SdkSubscribeAckFrame duplex.\n * @member {SdkStreamServiceType} duplex\n * @memberof SdkSubscribeAckFrame\n * @instance\n */\n SdkSubscribeAckFrame.prototype.duplex = 1;\n\n /**\n * SdkSubscribeAckFrame allocations.\n * @member {Array.} allocations\n * @memberof SdkSubscribeAckFrame\n * @instance\n */\n SdkSubscribeAckFrame.prototype.allocations = $util.emptyArray;\n\n /**\n * SdkSubscribeAckFrame sdpAnswer.\n * @member {string} sdpAnswer\n * @memberof SdkSubscribeAckFrame\n * @instance\n */\n SdkSubscribeAckFrame.prototype.sdpAnswer = \"\";\n\n /**\n * SdkSubscribeAckFrame tracks.\n * @member {Array.} tracks\n * @memberof SdkSubscribeAckFrame\n * @instance\n */\n SdkSubscribeAckFrame.prototype.tracks = $util.emptyArray;\n\n /**\n * SdkSubscribeAckFrame compressedSdpAnswer.\n * @member {Uint8Array} compressedSdpAnswer\n * @memberof SdkSubscribeAckFrame\n * @instance\n */\n SdkSubscribeAckFrame.prototype.compressedSdpAnswer = $util.newBuffer([]);\n\n /**\n * Creates a new SdkSubscribeAckFrame instance using the specified properties.\n * @function create\n * @memberof SdkSubscribeAckFrame\n * @static\n * @param {ISdkSubscribeAckFrame=} [properties] Properties to set\n * @returns {SdkSubscribeAckFrame} SdkSubscribeAckFrame instance\n */\n SdkSubscribeAckFrame.create = function create(properties) {\n return new SdkSubscribeAckFrame(properties);\n };\n\n /**\n * Encodes the specified SdkSubscribeAckFrame message. Does not implicitly {@link SdkSubscribeAckFrame.verify|verify} messages.\n * @function encode\n * @memberof SdkSubscribeAckFrame\n * @static\n * @param {ISdkSubscribeAckFrame} message SdkSubscribeAckFrame message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n SdkSubscribeAckFrame.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.duplex != null && Object.hasOwnProperty.call(message, \"duplex\"))\n writer.uint32(/* id 1, wireType 0 =*/8).int32(message.duplex);\n if (message.allocations != null && message.allocations.length)\n for (var i = 0; i < message.allocations.length; ++i)\n $root.SdkStreamAllocation.encode(message.allocations[i], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();\n if (message.sdpAnswer != null && Object.hasOwnProperty.call(message, \"sdpAnswer\"))\n writer.uint32(/* id 3, wireType 2 =*/26).string(message.sdpAnswer);\n if (message.tracks != null && message.tracks.length)\n for (var i = 0; i < message.tracks.length; ++i)\n $root.SdkTrackMapping.encode(message.tracks[i], writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim();\n if (message.compressedSdpAnswer != null && Object.hasOwnProperty.call(message, \"compressedSdpAnswer\"))\n writer.uint32(/* id 5, wireType 2 =*/42).bytes(message.compressedSdpAnswer);\n return writer;\n };\n\n /**\n * Encodes the specified SdkSubscribeAckFrame message, length delimited. Does not implicitly {@link SdkSubscribeAckFrame.verify|verify} messages.\n * @function encodeDelimited\n * @memberof SdkSubscribeAckFrame\n * @static\n * @param {ISdkSubscribeAckFrame} message SdkSubscribeAckFrame message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n SdkSubscribeAckFrame.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a SdkSubscribeAckFrame message from the specified reader or buffer.\n * @function decode\n * @memberof SdkSubscribeAckFrame\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {SdkSubscribeAckFrame} SdkSubscribeAckFrame\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n SdkSubscribeAckFrame.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.SdkSubscribeAckFrame();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n message.duplex = reader.int32();\n break;\n }\n case 2: {\n if (!(message.allocations && message.allocations.length))\n message.allocations = [];\n message.allocations.push($root.SdkStreamAllocation.decode(reader, reader.uint32()));\n break;\n }\n case 3: {\n message.sdpAnswer = reader.string();\n break;\n }\n case 4: {\n if (!(message.tracks && message.tracks.length))\n message.tracks = [];\n message.tracks.push($root.SdkTrackMapping.decode(reader, reader.uint32()));\n break;\n }\n case 5: {\n message.compressedSdpAnswer = reader.bytes();\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a SdkSubscribeAckFrame message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof SdkSubscribeAckFrame\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {SdkSubscribeAckFrame} SdkSubscribeAckFrame\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n SdkSubscribeAckFrame.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a SdkSubscribeAckFrame message.\n * @function verify\n * @memberof SdkSubscribeAckFrame\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n SdkSubscribeAckFrame.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.duplex != null && message.hasOwnProperty(\"duplex\"))\n switch (message.duplex) {\n default:\n return \"duplex: enum value expected\";\n case 1:\n case 2:\n case 3:\n break;\n }\n if (message.allocations != null && message.hasOwnProperty(\"allocations\")) {\n if (!Array.isArray(message.allocations))\n return \"allocations: array expected\";\n for (var i = 0; i < message.allocations.length; ++i) {\n var error = $root.SdkStreamAllocation.verify(message.allocations[i]);\n if (error)\n return \"allocations.\" + error;\n }\n }\n if (message.sdpAnswer != null && message.hasOwnProperty(\"sdpAnswer\"))\n if (!$util.isString(message.sdpAnswer))\n return \"sdpAnswer: string expected\";\n if (message.tracks != null && message.hasOwnProperty(\"tracks\")) {\n if (!Array.isArray(message.tracks))\n return \"tracks: array expected\";\n for (var i = 0; i < message.tracks.length; ++i) {\n var error = $root.SdkTrackMapping.verify(message.tracks[i]);\n if (error)\n return \"tracks.\" + error;\n }\n }\n if (message.compressedSdpAnswer != null && message.hasOwnProperty(\"compressedSdpAnswer\"))\n if (!(message.compressedSdpAnswer && typeof message.compressedSdpAnswer.length === \"number\" || $util.isString(message.compressedSdpAnswer)))\n return \"compressedSdpAnswer: buffer expected\";\n return null;\n };\n\n /**\n * Creates a SdkSubscribeAckFrame message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof SdkSubscribeAckFrame\n * @static\n * @param {Object.} object Plain object\n * @returns {SdkSubscribeAckFrame} SdkSubscribeAckFrame\n */\n SdkSubscribeAckFrame.fromObject = function fromObject(object) {\n if (object instanceof $root.SdkSubscribeAckFrame)\n return object;\n var message = new $root.SdkSubscribeAckFrame();\n switch (object.duplex) {\n default:\n if (typeof object.duplex === \"number\") {\n message.duplex = object.duplex;\n break;\n }\n break;\n case \"RX\":\n case 1:\n message.duplex = 1;\n break;\n case \"TX\":\n case 2:\n message.duplex = 2;\n break;\n case \"DUPLEX\":\n case 3:\n message.duplex = 3;\n break;\n }\n if (object.allocations) {\n if (!Array.isArray(object.allocations))\n throw TypeError(\".SdkSubscribeAckFrame.allocations: array expected\");\n message.allocations = [];\n for (var i = 0; i < object.allocations.length; ++i) {\n if (typeof object.allocations[i] !== \"object\")\n throw TypeError(\".SdkSubscribeAckFrame.allocations: object expected\");\n message.allocations[i] = $root.SdkStreamAllocation.fromObject(object.allocations[i]);\n }\n }\n if (object.sdpAnswer != null)\n message.sdpAnswer = String(object.sdpAnswer);\n if (object.tracks) {\n if (!Array.isArray(object.tracks))\n throw TypeError(\".SdkSubscribeAckFrame.tracks: array expected\");\n message.tracks = [];\n for (var i = 0; i < object.tracks.length; ++i) {\n if (typeof object.tracks[i] !== \"object\")\n throw TypeError(\".SdkSubscribeAckFrame.tracks: object expected\");\n message.tracks[i] = $root.SdkTrackMapping.fromObject(object.tracks[i]);\n }\n }\n if (object.compressedSdpAnswer != null)\n if (typeof object.compressedSdpAnswer === \"string\")\n $util.base64.decode(object.compressedSdpAnswer, message.compressedSdpAnswer = $util.newBuffer($util.base64.length(object.compressedSdpAnswer)), 0);\n else if (object.compressedSdpAnswer.length >= 0)\n message.compressedSdpAnswer = object.compressedSdpAnswer;\n return message;\n };\n\n /**\n * Creates a plain object from a SdkSubscribeAckFrame message. Also converts values to other types if specified.\n * @function toObject\n * @memberof SdkSubscribeAckFrame\n * @static\n * @param {SdkSubscribeAckFrame} message SdkSubscribeAckFrame\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n SdkSubscribeAckFrame.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.arrays || options.defaults) {\n object.allocations = [];\n object.tracks = [];\n }\n if (options.defaults) {\n object.duplex = options.enums === String ? \"RX\" : 1;\n object.sdpAnswer = \"\";\n if (options.bytes === String)\n object.compressedSdpAnswer = \"\";\n else {\n object.compressedSdpAnswer = [];\n if (options.bytes !== Array)\n object.compressedSdpAnswer = $util.newBuffer(object.compressedSdpAnswer);\n }\n }\n if (message.duplex != null && message.hasOwnProperty(\"duplex\"))\n object.duplex = options.enums === String ? $root.SdkStreamServiceType[message.duplex] === undefined ? message.duplex : $root.SdkStreamServiceType[message.duplex] : message.duplex;\n if (message.allocations && message.allocations.length) {\n object.allocations = [];\n for (var j = 0; j < message.allocations.length; ++j)\n object.allocations[j] = $root.SdkStreamAllocation.toObject(message.allocations[j], options);\n }\n if (message.sdpAnswer != null && message.hasOwnProperty(\"sdpAnswer\"))\n object.sdpAnswer = message.sdpAnswer;\n if (message.tracks && message.tracks.length) {\n object.tracks = [];\n for (var j = 0; j < message.tracks.length; ++j)\n object.tracks[j] = $root.SdkTrackMapping.toObject(message.tracks[j], options);\n }\n if (message.compressedSdpAnswer != null && message.hasOwnProperty(\"compressedSdpAnswer\"))\n object.compressedSdpAnswer = options.bytes === String ? $util.base64.encode(message.compressedSdpAnswer, 0, message.compressedSdpAnswer.length) : options.bytes === Array ? Array.prototype.slice.call(message.compressedSdpAnswer) : message.compressedSdpAnswer;\n return object;\n };\n\n /**\n * Converts this SdkSubscribeAckFrame to JSON.\n * @function toJSON\n * @memberof SdkSubscribeAckFrame\n * @instance\n * @returns {Object.} JSON object\n */\n SdkSubscribeAckFrame.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n /**\n * Gets the default type url for SdkSubscribeAckFrame\n * @function getTypeUrl\n * @memberof SdkSubscribeAckFrame\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n SdkSubscribeAckFrame.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/SdkSubscribeAckFrame\";\n };\n\n return SdkSubscribeAckFrame;\n})();\n\n$root.SdkIndexFrame = (function() {\n\n /**\n * Properties of a SdkIndexFrame.\n * @name ISdkIndexFrame\n * @interface ISdkIndexFrame\n * @property {boolean|null} [atCapacity] SdkIndexFrame atCapacity\n * @property {Array.|null} [sources] SdkIndexFrame sources\n * @property {Array.|null} [pausedAtSourceIds] SdkIndexFrame pausedAtSourceIds\n * @property {number|null} [numParticipants] SdkIndexFrame numParticipants\n * @property {Array.|null} [supportedReceiveCodecIntersection] SdkIndexFrame supportedReceiveCodecIntersection\n */\n\n /**\n * Constructs a new SdkIndexFrame.\n * @name SdkIndexFrame\n * @classdesc Represents a SdkIndexFrame.\n * @implements ISdkIndexFrame\n * @constructor\n * @param {ISdkIndexFrame=} [properties] Properties to set\n */\n function SdkIndexFrame(properties) {\n this.sources = [];\n this.pausedAtSourceIds = [];\n this.supportedReceiveCodecIntersection = [];\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * SdkIndexFrame atCapacity.\n * @member {boolean} atCapacity\n * @memberof SdkIndexFrame\n * @instance\n */\n SdkIndexFrame.prototype.atCapacity = false;\n\n /**\n * SdkIndexFrame sources.\n * @member {Array.} sources\n * @memberof SdkIndexFrame\n * @instance\n */\n SdkIndexFrame.prototype.sources = $util.emptyArray;\n\n /**\n * SdkIndexFrame pausedAtSourceIds.\n * @member {Array.} pausedAtSourceIds\n * @memberof SdkIndexFrame\n * @instance\n */\n SdkIndexFrame.prototype.pausedAtSourceIds = $util.emptyArray;\n\n /**\n * SdkIndexFrame numParticipants.\n * @member {number} numParticipants\n * @memberof SdkIndexFrame\n * @instance\n */\n SdkIndexFrame.prototype.numParticipants = 0;\n\n /**\n * SdkIndexFrame supportedReceiveCodecIntersection.\n * @member {Array.} supportedReceiveCodecIntersection\n * @memberof SdkIndexFrame\n * @instance\n */\n SdkIndexFrame.prototype.supportedReceiveCodecIntersection = $util.emptyArray;\n\n /**\n * Creates a new SdkIndexFrame instance using the specified properties.\n * @function create\n * @memberof SdkIndexFrame\n * @static\n * @param {ISdkIndexFrame=} [properties] Properties to set\n * @returns {SdkIndexFrame} SdkIndexFrame instance\n */\n SdkIndexFrame.create = function create(properties) {\n return new SdkIndexFrame(properties);\n };\n\n /**\n * Encodes the specified SdkIndexFrame message. Does not implicitly {@link SdkIndexFrame.verify|verify} messages.\n * @function encode\n * @memberof SdkIndexFrame\n * @static\n * @param {ISdkIndexFrame} message SdkIndexFrame message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n SdkIndexFrame.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.atCapacity != null && Object.hasOwnProperty.call(message, \"atCapacity\"))\n writer.uint32(/* id 1, wireType 0 =*/8).bool(message.atCapacity);\n if (message.sources != null && message.sources.length)\n for (var i = 0; i < message.sources.length; ++i)\n $root.SdkStreamDescriptor.encode(message.sources[i], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();\n if (message.pausedAtSourceIds != null && message.pausedAtSourceIds.length)\n for (var i = 0; i < message.pausedAtSourceIds.length; ++i)\n writer.uint32(/* id 3, wireType 0 =*/24).uint32(message.pausedAtSourceIds[i]);\n if (message.numParticipants != null && Object.hasOwnProperty.call(message, \"numParticipants\"))\n writer.uint32(/* id 4, wireType 0 =*/32).uint32(message.numParticipants);\n if (message.supportedReceiveCodecIntersection != null && message.supportedReceiveCodecIntersection.length)\n for (var i = 0; i < message.supportedReceiveCodecIntersection.length; ++i)\n writer.uint32(/* id 5, wireType 0 =*/40).int32(message.supportedReceiveCodecIntersection[i]);\n return writer;\n };\n\n /**\n * Encodes the specified SdkIndexFrame message, length delimited. Does not implicitly {@link SdkIndexFrame.verify|verify} messages.\n * @function encodeDelimited\n * @memberof SdkIndexFrame\n * @static\n * @param {ISdkIndexFrame} message SdkIndexFrame message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n SdkIndexFrame.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a SdkIndexFrame message from the specified reader or buffer.\n * @function decode\n * @memberof SdkIndexFrame\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {SdkIndexFrame} SdkIndexFrame\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n SdkIndexFrame.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.SdkIndexFrame();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n message.atCapacity = reader.bool();\n break;\n }\n case 2: {\n if (!(message.sources && message.sources.length))\n message.sources = [];\n message.sources.push($root.SdkStreamDescriptor.decode(reader, reader.uint32()));\n break;\n }\n case 3: {\n if (!(message.pausedAtSourceIds && message.pausedAtSourceIds.length))\n message.pausedAtSourceIds = [];\n if ((tag & 7) === 2) {\n var end2 = reader.uint32() + reader.pos;\n while (reader.pos < end2)\n message.pausedAtSourceIds.push(reader.uint32());\n } else\n message.pausedAtSourceIds.push(reader.uint32());\n break;\n }\n case 4: {\n message.numParticipants = reader.uint32();\n break;\n }\n case 5: {\n if (!(message.supportedReceiveCodecIntersection && message.supportedReceiveCodecIntersection.length))\n message.supportedReceiveCodecIntersection = [];\n if ((tag & 7) === 2) {\n var end2 = reader.uint32() + reader.pos;\n while (reader.pos < end2)\n message.supportedReceiveCodecIntersection.push(reader.int32());\n } else\n message.supportedReceiveCodecIntersection.push(reader.int32());\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a SdkIndexFrame message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof SdkIndexFrame\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {SdkIndexFrame} SdkIndexFrame\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n SdkIndexFrame.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a SdkIndexFrame message.\n * @function verify\n * @memberof SdkIndexFrame\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n SdkIndexFrame.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.atCapacity != null && message.hasOwnProperty(\"atCapacity\"))\n if (typeof message.atCapacity !== \"boolean\")\n return \"atCapacity: boolean expected\";\n if (message.sources != null && message.hasOwnProperty(\"sources\")) {\n if (!Array.isArray(message.sources))\n return \"sources: array expected\";\n for (var i = 0; i < message.sources.length; ++i) {\n var error = $root.SdkStreamDescriptor.verify(message.sources[i]);\n if (error)\n return \"sources.\" + error;\n }\n }\n if (message.pausedAtSourceIds != null && message.hasOwnProperty(\"pausedAtSourceIds\")) {\n if (!Array.isArray(message.pausedAtSourceIds))\n return \"pausedAtSourceIds: array expected\";\n for (var i = 0; i < message.pausedAtSourceIds.length; ++i)\n if (!$util.isInteger(message.pausedAtSourceIds[i]))\n return \"pausedAtSourceIds: integer[] expected\";\n }\n if (message.numParticipants != null && message.hasOwnProperty(\"numParticipants\"))\n if (!$util.isInteger(message.numParticipants))\n return \"numParticipants: integer expected\";\n if (message.supportedReceiveCodecIntersection != null && message.hasOwnProperty(\"supportedReceiveCodecIntersection\")) {\n if (!Array.isArray(message.supportedReceiveCodecIntersection))\n return \"supportedReceiveCodecIntersection: array expected\";\n for (var i = 0; i < message.supportedReceiveCodecIntersection.length; ++i)\n switch (message.supportedReceiveCodecIntersection[i]) {\n default:\n return \"supportedReceiveCodecIntersection: enum value[] expected\";\n case 1:\n case 2:\n case 3:\n case 4:\n case 5:\n case 6:\n case 8:\n case 11:\n break;\n }\n }\n return null;\n };\n\n /**\n * Creates a SdkIndexFrame message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof SdkIndexFrame\n * @static\n * @param {Object.} object Plain object\n * @returns {SdkIndexFrame} SdkIndexFrame\n */\n SdkIndexFrame.fromObject = function fromObject(object) {\n if (object instanceof $root.SdkIndexFrame)\n return object;\n var message = new $root.SdkIndexFrame();\n if (object.atCapacity != null)\n message.atCapacity = Boolean(object.atCapacity);\n if (object.sources) {\n if (!Array.isArray(object.sources))\n throw TypeError(\".SdkIndexFrame.sources: array expected\");\n message.sources = [];\n for (var i = 0; i < object.sources.length; ++i) {\n if (typeof object.sources[i] !== \"object\")\n throw TypeError(\".SdkIndexFrame.sources: object expected\");\n message.sources[i] = $root.SdkStreamDescriptor.fromObject(object.sources[i]);\n }\n }\n if (object.pausedAtSourceIds) {\n if (!Array.isArray(object.pausedAtSourceIds))\n throw TypeError(\".SdkIndexFrame.pausedAtSourceIds: array expected\");\n message.pausedAtSourceIds = [];\n for (var i = 0; i < object.pausedAtSourceIds.length; ++i)\n message.pausedAtSourceIds[i] = object.pausedAtSourceIds[i] >>> 0;\n }\n if (object.numParticipants != null)\n message.numParticipants = object.numParticipants >>> 0;\n if (object.supportedReceiveCodecIntersection) {\n if (!Array.isArray(object.supportedReceiveCodecIntersection))\n throw TypeError(\".SdkIndexFrame.supportedReceiveCodecIntersection: array expected\");\n message.supportedReceiveCodecIntersection = [];\n for (var i = 0; i < object.supportedReceiveCodecIntersection.length; ++i)\n switch (object.supportedReceiveCodecIntersection[i]) {\n default:\n if (typeof object.supportedReceiveCodecIntersection[i] === \"number\") {\n message.supportedReceiveCodecIntersection[i] = object.supportedReceiveCodecIntersection[i];\n break;\n }\n case \"VP8\":\n case 1:\n message.supportedReceiveCodecIntersection[i] = 1;\n break;\n case \"H264_BASELINE_PROFILE\":\n case 2:\n message.supportedReceiveCodecIntersection[i] = 2;\n break;\n case \"H264_CONSTRAINED_BASELINE_PROFILE\":\n case 3:\n message.supportedReceiveCodecIntersection[i] = 3;\n break;\n case \"H264_MAIN_PROFILE\":\n case 4:\n message.supportedReceiveCodecIntersection[i] = 4;\n break;\n case \"H264_HIGH_PROFILE\":\n case 5:\n message.supportedReceiveCodecIntersection[i] = 5;\n break;\n case \"H264_CONSTRAINED_HIGH_PROFILE\":\n case 6:\n message.supportedReceiveCodecIntersection[i] = 6;\n break;\n case \"VP9_PROFILE_0\":\n case 8:\n message.supportedReceiveCodecIntersection[i] = 8;\n break;\n case \"AV1_MAIN_PROFILE\":\n case 11:\n message.supportedReceiveCodecIntersection[i] = 11;\n break;\n }\n }\n return message;\n };\n\n /**\n * Creates a plain object from a SdkIndexFrame message. Also converts values to other types if specified.\n * @function toObject\n * @memberof SdkIndexFrame\n * @static\n * @param {SdkIndexFrame} message SdkIndexFrame\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n SdkIndexFrame.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.arrays || options.defaults) {\n object.sources = [];\n object.pausedAtSourceIds = [];\n object.supportedReceiveCodecIntersection = [];\n }\n if (options.defaults) {\n object.atCapacity = false;\n object.numParticipants = 0;\n }\n if (message.atCapacity != null && message.hasOwnProperty(\"atCapacity\"))\n object.atCapacity = message.atCapacity;\n if (message.sources && message.sources.length) {\n object.sources = [];\n for (var j = 0; j < message.sources.length; ++j)\n object.sources[j] = $root.SdkStreamDescriptor.toObject(message.sources[j], options);\n }\n if (message.pausedAtSourceIds && message.pausedAtSourceIds.length) {\n object.pausedAtSourceIds = [];\n for (var j = 0; j < message.pausedAtSourceIds.length; ++j)\n object.pausedAtSourceIds[j] = message.pausedAtSourceIds[j];\n }\n if (message.numParticipants != null && message.hasOwnProperty(\"numParticipants\"))\n object.numParticipants = message.numParticipants;\n if (message.supportedReceiveCodecIntersection && message.supportedReceiveCodecIntersection.length) {\n object.supportedReceiveCodecIntersection = [];\n for (var j = 0; j < message.supportedReceiveCodecIntersection.length; ++j)\n object.supportedReceiveCodecIntersection[j] = options.enums === String ? $root.SdkVideoCodecCapability[message.supportedReceiveCodecIntersection[j]] === undefined ? message.supportedReceiveCodecIntersection[j] : $root.SdkVideoCodecCapability[message.supportedReceiveCodecIntersection[j]] : message.supportedReceiveCodecIntersection[j];\n }\n return object;\n };\n\n /**\n * Converts this SdkIndexFrame to JSON.\n * @function toJSON\n * @memberof SdkIndexFrame\n * @instance\n * @returns {Object.} JSON object\n */\n SdkIndexFrame.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n /**\n * Gets the default type url for SdkIndexFrame\n * @function getTypeUrl\n * @memberof SdkIndexFrame\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n SdkIndexFrame.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/SdkIndexFrame\";\n };\n\n return SdkIndexFrame;\n})();\n\n$root.SdkPauseResumeFrame = (function() {\n\n /**\n * Properties of a SdkPauseResumeFrame.\n * @name ISdkPauseResumeFrame\n * @interface ISdkPauseResumeFrame\n * @property {Array.|null} [streamIds] SdkPauseResumeFrame streamIds\n * @property {Array.|null} [groupIds] SdkPauseResumeFrame groupIds\n */\n\n /**\n * Constructs a new SdkPauseResumeFrame.\n * @name SdkPauseResumeFrame\n * @classdesc Represents a SdkPauseResumeFrame.\n * @implements ISdkPauseResumeFrame\n * @constructor\n * @param {ISdkPauseResumeFrame=} [properties] Properties to set\n */\n function SdkPauseResumeFrame(properties) {\n this.streamIds = [];\n this.groupIds = [];\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * SdkPauseResumeFrame streamIds.\n * @member {Array.} streamIds\n * @memberof SdkPauseResumeFrame\n * @instance\n */\n SdkPauseResumeFrame.prototype.streamIds = $util.emptyArray;\n\n /**\n * SdkPauseResumeFrame groupIds.\n * @member {Array.} groupIds\n * @memberof SdkPauseResumeFrame\n * @instance\n */\n SdkPauseResumeFrame.prototype.groupIds = $util.emptyArray;\n\n /**\n * Creates a new SdkPauseResumeFrame instance using the specified properties.\n * @function create\n * @memberof SdkPauseResumeFrame\n * @static\n * @param {ISdkPauseResumeFrame=} [properties] Properties to set\n * @returns {SdkPauseResumeFrame} SdkPauseResumeFrame instance\n */\n SdkPauseResumeFrame.create = function create(properties) {\n return new SdkPauseResumeFrame(properties);\n };\n\n /**\n * Encodes the specified SdkPauseResumeFrame message. Does not implicitly {@link SdkPauseResumeFrame.verify|verify} messages.\n * @function encode\n * @memberof SdkPauseResumeFrame\n * @static\n * @param {ISdkPauseResumeFrame} message SdkPauseResumeFrame message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n SdkPauseResumeFrame.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.streamIds != null && message.streamIds.length)\n for (var i = 0; i < message.streamIds.length; ++i)\n writer.uint32(/* id 1, wireType 0 =*/8).uint32(message.streamIds[i]);\n if (message.groupIds != null && message.groupIds.length)\n for (var i = 0; i < message.groupIds.length; ++i)\n writer.uint32(/* id 2, wireType 0 =*/16).uint32(message.groupIds[i]);\n return writer;\n };\n\n /**\n * Encodes the specified SdkPauseResumeFrame message, length delimited. Does not implicitly {@link SdkPauseResumeFrame.verify|verify} messages.\n * @function encodeDelimited\n * @memberof SdkPauseResumeFrame\n * @static\n * @param {ISdkPauseResumeFrame} message SdkPauseResumeFrame message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n SdkPauseResumeFrame.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a SdkPauseResumeFrame message from the specified reader or buffer.\n * @function decode\n * @memberof SdkPauseResumeFrame\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {SdkPauseResumeFrame} SdkPauseResumeFrame\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n SdkPauseResumeFrame.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.SdkPauseResumeFrame();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (!(message.streamIds && message.streamIds.length))\n message.streamIds = [];\n if ((tag & 7) === 2) {\n var end2 = reader.uint32() + reader.pos;\n while (reader.pos < end2)\n message.streamIds.push(reader.uint32());\n } else\n message.streamIds.push(reader.uint32());\n break;\n }\n case 2: {\n if (!(message.groupIds && message.groupIds.length))\n message.groupIds = [];\n if ((tag & 7) === 2) {\n var end2 = reader.uint32() + reader.pos;\n while (reader.pos < end2)\n message.groupIds.push(reader.uint32());\n } else\n message.groupIds.push(reader.uint32());\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a SdkPauseResumeFrame message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof SdkPauseResumeFrame\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {SdkPauseResumeFrame} SdkPauseResumeFrame\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n SdkPauseResumeFrame.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a SdkPauseResumeFrame message.\n * @function verify\n * @memberof SdkPauseResumeFrame\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n SdkPauseResumeFrame.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.streamIds != null && message.hasOwnProperty(\"streamIds\")) {\n if (!Array.isArray(message.streamIds))\n return \"streamIds: array expected\";\n for (var i = 0; i < message.streamIds.length; ++i)\n if (!$util.isInteger(message.streamIds[i]))\n return \"streamIds: integer[] expected\";\n }\n if (message.groupIds != null && message.hasOwnProperty(\"groupIds\")) {\n if (!Array.isArray(message.groupIds))\n return \"groupIds: array expected\";\n for (var i = 0; i < message.groupIds.length; ++i)\n if (!$util.isInteger(message.groupIds[i]))\n return \"groupIds: integer[] expected\";\n }\n return null;\n };\n\n /**\n * Creates a SdkPauseResumeFrame message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof SdkPauseResumeFrame\n * @static\n * @param {Object.} object Plain object\n * @returns {SdkPauseResumeFrame} SdkPauseResumeFrame\n */\n SdkPauseResumeFrame.fromObject = function fromObject(object) {\n if (object instanceof $root.SdkPauseResumeFrame)\n return object;\n var message = new $root.SdkPauseResumeFrame();\n if (object.streamIds) {\n if (!Array.isArray(object.streamIds))\n throw TypeError(\".SdkPauseResumeFrame.streamIds: array expected\");\n message.streamIds = [];\n for (var i = 0; i < object.streamIds.length; ++i)\n message.streamIds[i] = object.streamIds[i] >>> 0;\n }\n if (object.groupIds) {\n if (!Array.isArray(object.groupIds))\n throw TypeError(\".SdkPauseResumeFrame.groupIds: array expected\");\n message.groupIds = [];\n for (var i = 0; i < object.groupIds.length; ++i)\n message.groupIds[i] = object.groupIds[i] >>> 0;\n }\n return message;\n };\n\n /**\n * Creates a plain object from a SdkPauseResumeFrame message. Also converts values to other types if specified.\n * @function toObject\n * @memberof SdkPauseResumeFrame\n * @static\n * @param {SdkPauseResumeFrame} message SdkPauseResumeFrame\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n SdkPauseResumeFrame.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.arrays || options.defaults) {\n object.streamIds = [];\n object.groupIds = [];\n }\n if (message.streamIds && message.streamIds.length) {\n object.streamIds = [];\n for (var j = 0; j < message.streamIds.length; ++j)\n object.streamIds[j] = message.streamIds[j];\n }\n if (message.groupIds && message.groupIds.length) {\n object.groupIds = [];\n for (var j = 0; j < message.groupIds.length; ++j)\n object.groupIds[j] = message.groupIds[j];\n }\n return object;\n };\n\n /**\n * Converts this SdkPauseResumeFrame to JSON.\n * @function toJSON\n * @memberof SdkPauseResumeFrame\n * @instance\n * @returns {Object.} JSON object\n */\n SdkPauseResumeFrame.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n /**\n * Gets the default type url for SdkPauseResumeFrame\n * @function getTypeUrl\n * @memberof SdkPauseResumeFrame\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n SdkPauseResumeFrame.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/SdkPauseResumeFrame\";\n };\n\n return SdkPauseResumeFrame;\n})();\n\n$root.SdkBitrateFrame = (function() {\n\n /**\n * Properties of a SdkBitrateFrame.\n * @name ISdkBitrateFrame\n * @interface ISdkBitrateFrame\n * @property {Array.|null} [bitrates] SdkBitrateFrame bitrates\n * @property {number|null} [serverAvailableOutgoingBitrate] SdkBitrateFrame serverAvailableOutgoingBitrate\n */\n\n /**\n * Constructs a new SdkBitrateFrame.\n * @name SdkBitrateFrame\n * @classdesc Represents a SdkBitrateFrame.\n * @implements ISdkBitrateFrame\n * @constructor\n * @param {ISdkBitrateFrame=} [properties] Properties to set\n */\n function SdkBitrateFrame(properties) {\n this.bitrates = [];\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * SdkBitrateFrame bitrates.\n * @member {Array.} bitrates\n * @memberof SdkBitrateFrame\n * @instance\n */\n SdkBitrateFrame.prototype.bitrates = $util.emptyArray;\n\n /**\n * SdkBitrateFrame serverAvailableOutgoingBitrate.\n * @member {number} serverAvailableOutgoingBitrate\n * @memberof SdkBitrateFrame\n * @instance\n */\n SdkBitrateFrame.prototype.serverAvailableOutgoingBitrate = 0;\n\n /**\n * Creates a new SdkBitrateFrame instance using the specified properties.\n * @function create\n * @memberof SdkBitrateFrame\n * @static\n * @param {ISdkBitrateFrame=} [properties] Properties to set\n * @returns {SdkBitrateFrame} SdkBitrateFrame instance\n */\n SdkBitrateFrame.create = function create(properties) {\n return new SdkBitrateFrame(properties);\n };\n\n /**\n * Encodes the specified SdkBitrateFrame message. Does not implicitly {@link SdkBitrateFrame.verify|verify} messages.\n * @function encode\n * @memberof SdkBitrateFrame\n * @static\n * @param {ISdkBitrateFrame} message SdkBitrateFrame message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n SdkBitrateFrame.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.bitrates != null && message.bitrates.length)\n for (var i = 0; i < message.bitrates.length; ++i)\n $root.SdkBitrate.encode(message.bitrates[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();\n if (message.serverAvailableOutgoingBitrate != null && Object.hasOwnProperty.call(message, \"serverAvailableOutgoingBitrate\"))\n writer.uint32(/* id 2, wireType 0 =*/16).uint32(message.serverAvailableOutgoingBitrate);\n return writer;\n };\n\n /**\n * Encodes the specified SdkBitrateFrame message, length delimited. Does not implicitly {@link SdkBitrateFrame.verify|verify} messages.\n * @function encodeDelimited\n * @memberof SdkBitrateFrame\n * @static\n * @param {ISdkBitrateFrame} message SdkBitrateFrame message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n SdkBitrateFrame.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a SdkBitrateFrame message from the specified reader or buffer.\n * @function decode\n * @memberof SdkBitrateFrame\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {SdkBitrateFrame} SdkBitrateFrame\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n SdkBitrateFrame.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.SdkBitrateFrame();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (!(message.bitrates && message.bitrates.length))\n message.bitrates = [];\n message.bitrates.push($root.SdkBitrate.decode(reader, reader.uint32()));\n break;\n }\n case 2: {\n message.serverAvailableOutgoingBitrate = reader.uint32();\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a SdkBitrateFrame message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof SdkBitrateFrame\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {SdkBitrateFrame} SdkBitrateFrame\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n SdkBitrateFrame.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a SdkBitrateFrame message.\n * @function verify\n * @memberof SdkBitrateFrame\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n SdkBitrateFrame.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.bitrates != null && message.hasOwnProperty(\"bitrates\")) {\n if (!Array.isArray(message.bitrates))\n return \"bitrates: array expected\";\n for (var i = 0; i < message.bitrates.length; ++i) {\n var error = $root.SdkBitrate.verify(message.bitrates[i]);\n if (error)\n return \"bitrates.\" + error;\n }\n }\n if (message.serverAvailableOutgoingBitrate != null && message.hasOwnProperty(\"serverAvailableOutgoingBitrate\"))\n if (!$util.isInteger(message.serverAvailableOutgoingBitrate))\n return \"serverAvailableOutgoingBitrate: integer expected\";\n return null;\n };\n\n /**\n * Creates a SdkBitrateFrame message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof SdkBitrateFrame\n * @static\n * @param {Object.} object Plain object\n * @returns {SdkBitrateFrame} SdkBitrateFrame\n */\n SdkBitrateFrame.fromObject = function fromObject(object) {\n if (object instanceof $root.SdkBitrateFrame)\n return object;\n var message = new $root.SdkBitrateFrame();\n if (object.bitrates) {\n if (!Array.isArray(object.bitrates))\n throw TypeError(\".SdkBitrateFrame.bitrates: array expected\");\n message.bitrates = [];\n for (var i = 0; i < object.bitrates.length; ++i) {\n if (typeof object.bitrates[i] !== \"object\")\n throw TypeError(\".SdkBitrateFrame.bitrates: object expected\");\n message.bitrates[i] = $root.SdkBitrate.fromObject(object.bitrates[i]);\n }\n }\n if (object.serverAvailableOutgoingBitrate != null)\n message.serverAvailableOutgoingBitrate = object.serverAvailableOutgoingBitrate >>> 0;\n return message;\n };\n\n /**\n * Creates a plain object from a SdkBitrateFrame message. Also converts values to other types if specified.\n * @function toObject\n * @memberof SdkBitrateFrame\n * @static\n * @param {SdkBitrateFrame} message SdkBitrateFrame\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n SdkBitrateFrame.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.arrays || options.defaults)\n object.bitrates = [];\n if (options.defaults)\n object.serverAvailableOutgoingBitrate = 0;\n if (message.bitrates && message.bitrates.length) {\n object.bitrates = [];\n for (var j = 0; j < message.bitrates.length; ++j)\n object.bitrates[j] = $root.SdkBitrate.toObject(message.bitrates[j], options);\n }\n if (message.serverAvailableOutgoingBitrate != null && message.hasOwnProperty(\"serverAvailableOutgoingBitrate\"))\n object.serverAvailableOutgoingBitrate = message.serverAvailableOutgoingBitrate;\n return object;\n };\n\n /**\n * Converts this SdkBitrateFrame to JSON.\n * @function toJSON\n * @memberof SdkBitrateFrame\n * @instance\n * @returns {Object.} JSON object\n */\n SdkBitrateFrame.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n /**\n * Gets the default type url for SdkBitrateFrame\n * @function getTypeUrl\n * @memberof SdkBitrateFrame\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n SdkBitrateFrame.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/SdkBitrateFrame\";\n };\n\n return SdkBitrateFrame;\n})();\n\n$root.SdkStreamDescriptor = (function() {\n\n /**\n * Properties of a SdkStreamDescriptor.\n * @name ISdkStreamDescriptor\n * @interface ISdkStreamDescriptor\n * @property {number|null} [streamId] SdkStreamDescriptor streamId\n * @property {number|null} [framerate] SdkStreamDescriptor framerate\n * @property {number|null} [maxBitrateKbps] SdkStreamDescriptor maxBitrateKbps\n * @property {string|null} [trackLabel] SdkStreamDescriptor trackLabel\n * @property {number|null} [groupId] SdkStreamDescriptor groupId\n * @property {number|null} [avgBitrateBps] SdkStreamDescriptor avgBitrateBps\n * @property {string|null} [attendeeId] SdkStreamDescriptor attendeeId\n * @property {SdkStreamMediaType|null} [mediaType] SdkStreamDescriptor mediaType\n * @property {string|null} [externalUserId] SdkStreamDescriptor externalUserId\n * @property {number|null} [width] SdkStreamDescriptor width\n * @property {number|null} [height] SdkStreamDescriptor height\n */\n\n /**\n * Constructs a new SdkStreamDescriptor.\n * @name SdkStreamDescriptor\n * @classdesc Represents a SdkStreamDescriptor.\n * @implements ISdkStreamDescriptor\n * @constructor\n * @param {ISdkStreamDescriptor=} [properties] Properties to set\n */\n function SdkStreamDescriptor(properties) {\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * SdkStreamDescriptor streamId.\n * @member {number} streamId\n * @memberof SdkStreamDescriptor\n * @instance\n */\n SdkStreamDescriptor.prototype.streamId = 0;\n\n /**\n * SdkStreamDescriptor framerate.\n * @member {number} framerate\n * @memberof SdkStreamDescriptor\n * @instance\n */\n SdkStreamDescriptor.prototype.framerate = 0;\n\n /**\n * SdkStreamDescriptor maxBitrateKbps.\n * @member {number} maxBitrateKbps\n * @memberof SdkStreamDescriptor\n * @instance\n */\n SdkStreamDescriptor.prototype.maxBitrateKbps = 0;\n\n /**\n * SdkStreamDescriptor trackLabel.\n * @member {string} trackLabel\n * @memberof SdkStreamDescriptor\n * @instance\n */\n SdkStreamDescriptor.prototype.trackLabel = \"\";\n\n /**\n * SdkStreamDescriptor groupId.\n * @member {number} groupId\n * @memberof SdkStreamDescriptor\n * @instance\n */\n SdkStreamDescriptor.prototype.groupId = 0;\n\n /**\n * SdkStreamDescriptor avgBitrateBps.\n * @member {number} avgBitrateBps\n * @memberof SdkStreamDescriptor\n * @instance\n */\n SdkStreamDescriptor.prototype.avgBitrateBps = 0;\n\n /**\n * SdkStreamDescriptor attendeeId.\n * @member {string} attendeeId\n * @memberof SdkStreamDescriptor\n * @instance\n */\n SdkStreamDescriptor.prototype.attendeeId = \"\";\n\n /**\n * SdkStreamDescriptor mediaType.\n * @member {SdkStreamMediaType} mediaType\n * @memberof SdkStreamDescriptor\n * @instance\n */\n SdkStreamDescriptor.prototype.mediaType = 1;\n\n /**\n * SdkStreamDescriptor externalUserId.\n * @member {string} externalUserId\n * @memberof SdkStreamDescriptor\n * @instance\n */\n SdkStreamDescriptor.prototype.externalUserId = \"\";\n\n /**\n * SdkStreamDescriptor width.\n * @member {number} width\n * @memberof SdkStreamDescriptor\n * @instance\n */\n SdkStreamDescriptor.prototype.width = 0;\n\n /**\n * SdkStreamDescriptor height.\n * @member {number} height\n * @memberof SdkStreamDescriptor\n * @instance\n */\n SdkStreamDescriptor.prototype.height = 0;\n\n /**\n * Creates a new SdkStreamDescriptor instance using the specified properties.\n * @function create\n * @memberof SdkStreamDescriptor\n * @static\n * @param {ISdkStreamDescriptor=} [properties] Properties to set\n * @returns {SdkStreamDescriptor} SdkStreamDescriptor instance\n */\n SdkStreamDescriptor.create = function create(properties) {\n return new SdkStreamDescriptor(properties);\n };\n\n /**\n * Encodes the specified SdkStreamDescriptor message. Does not implicitly {@link SdkStreamDescriptor.verify|verify} messages.\n * @function encode\n * @memberof SdkStreamDescriptor\n * @static\n * @param {ISdkStreamDescriptor} message SdkStreamDescriptor message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n SdkStreamDescriptor.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.streamId != null && Object.hasOwnProperty.call(message, \"streamId\"))\n writer.uint32(/* id 1, wireType 0 =*/8).uint32(message.streamId);\n if (message.framerate != null && Object.hasOwnProperty.call(message, \"framerate\"))\n writer.uint32(/* id 2, wireType 0 =*/16).uint32(message.framerate);\n if (message.maxBitrateKbps != null && Object.hasOwnProperty.call(message, \"maxBitrateKbps\"))\n writer.uint32(/* id 3, wireType 0 =*/24).uint32(message.maxBitrateKbps);\n if (message.trackLabel != null && Object.hasOwnProperty.call(message, \"trackLabel\"))\n writer.uint32(/* id 4, wireType 2 =*/34).string(message.trackLabel);\n if (message.groupId != null && Object.hasOwnProperty.call(message, \"groupId\"))\n writer.uint32(/* id 6, wireType 0 =*/48).uint32(message.groupId);\n if (message.avgBitrateBps != null && Object.hasOwnProperty.call(message, \"avgBitrateBps\"))\n writer.uint32(/* id 7, wireType 0 =*/56).uint32(message.avgBitrateBps);\n if (message.attendeeId != null && Object.hasOwnProperty.call(message, \"attendeeId\"))\n writer.uint32(/* id 8, wireType 2 =*/66).string(message.attendeeId);\n if (message.mediaType != null && Object.hasOwnProperty.call(message, \"mediaType\"))\n writer.uint32(/* id 9, wireType 0 =*/72).int32(message.mediaType);\n if (message.externalUserId != null && Object.hasOwnProperty.call(message, \"externalUserId\"))\n writer.uint32(/* id 10, wireType 2 =*/82).string(message.externalUserId);\n if (message.width != null && Object.hasOwnProperty.call(message, \"width\"))\n writer.uint32(/* id 11, wireType 0 =*/88).uint32(message.width);\n if (message.height != null && Object.hasOwnProperty.call(message, \"height\"))\n writer.uint32(/* id 12, wireType 0 =*/96).uint32(message.height);\n return writer;\n };\n\n /**\n * Encodes the specified SdkStreamDescriptor message, length delimited. Does not implicitly {@link SdkStreamDescriptor.verify|verify} messages.\n * @function encodeDelimited\n * @memberof SdkStreamDescriptor\n * @static\n * @param {ISdkStreamDescriptor} message SdkStreamDescriptor message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n SdkStreamDescriptor.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a SdkStreamDescriptor message from the specified reader or buffer.\n * @function decode\n * @memberof SdkStreamDescriptor\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {SdkStreamDescriptor} SdkStreamDescriptor\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n SdkStreamDescriptor.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.SdkStreamDescriptor();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n message.streamId = reader.uint32();\n break;\n }\n case 2: {\n message.framerate = reader.uint32();\n break;\n }\n case 3: {\n message.maxBitrateKbps = reader.uint32();\n break;\n }\n case 4: {\n message.trackLabel = reader.string();\n break;\n }\n case 6: {\n message.groupId = reader.uint32();\n break;\n }\n case 7: {\n message.avgBitrateBps = reader.uint32();\n break;\n }\n case 8: {\n message.attendeeId = reader.string();\n break;\n }\n case 9: {\n message.mediaType = reader.int32();\n break;\n }\n case 10: {\n message.externalUserId = reader.string();\n break;\n }\n case 11: {\n message.width = reader.uint32();\n break;\n }\n case 12: {\n message.height = reader.uint32();\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a SdkStreamDescriptor message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof SdkStreamDescriptor\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {SdkStreamDescriptor} SdkStreamDescriptor\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n SdkStreamDescriptor.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a SdkStreamDescriptor message.\n * @function verify\n * @memberof SdkStreamDescriptor\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n SdkStreamDescriptor.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.streamId != null && message.hasOwnProperty(\"streamId\"))\n if (!$util.isInteger(message.streamId))\n return \"streamId: integer expected\";\n if (message.framerate != null && message.hasOwnProperty(\"framerate\"))\n if (!$util.isInteger(message.framerate))\n return \"framerate: integer expected\";\n if (message.maxBitrateKbps != null && message.hasOwnProperty(\"maxBitrateKbps\"))\n if (!$util.isInteger(message.maxBitrateKbps))\n return \"maxBitrateKbps: integer expected\";\n if (message.trackLabel != null && message.hasOwnProperty(\"trackLabel\"))\n if (!$util.isString(message.trackLabel))\n return \"trackLabel: string expected\";\n if (message.groupId != null && message.hasOwnProperty(\"groupId\"))\n if (!$util.isInteger(message.groupId))\n return \"groupId: integer expected\";\n if (message.avgBitrateBps != null && message.hasOwnProperty(\"avgBitrateBps\"))\n if (!$util.isInteger(message.avgBitrateBps))\n return \"avgBitrateBps: integer expected\";\n if (message.attendeeId != null && message.hasOwnProperty(\"attendeeId\"))\n if (!$util.isString(message.attendeeId))\n return \"attendeeId: string expected\";\n if (message.mediaType != null && message.hasOwnProperty(\"mediaType\"))\n switch (message.mediaType) {\n default:\n return \"mediaType: enum value expected\";\n case 1:\n case 2:\n break;\n }\n if (message.externalUserId != null && message.hasOwnProperty(\"externalUserId\"))\n if (!$util.isString(message.externalUserId))\n return \"externalUserId: string expected\";\n if (message.width != null && message.hasOwnProperty(\"width\"))\n if (!$util.isInteger(message.width))\n return \"width: integer expected\";\n if (message.height != null && message.hasOwnProperty(\"height\"))\n if (!$util.isInteger(message.height))\n return \"height: integer expected\";\n return null;\n };\n\n /**\n * Creates a SdkStreamDescriptor message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof SdkStreamDescriptor\n * @static\n * @param {Object.} object Plain object\n * @returns {SdkStreamDescriptor} SdkStreamDescriptor\n */\n SdkStreamDescriptor.fromObject = function fromObject(object) {\n if (object instanceof $root.SdkStreamDescriptor)\n return object;\n var message = new $root.SdkStreamDescriptor();\n if (object.streamId != null)\n message.streamId = object.streamId >>> 0;\n if (object.framerate != null)\n message.framerate = object.framerate >>> 0;\n if (object.maxBitrateKbps != null)\n message.maxBitrateKbps = object.maxBitrateKbps >>> 0;\n if (object.trackLabel != null)\n message.trackLabel = String(object.trackLabel);\n if (object.groupId != null)\n message.groupId = object.groupId >>> 0;\n if (object.avgBitrateBps != null)\n message.avgBitrateBps = object.avgBitrateBps >>> 0;\n if (object.attendeeId != null)\n message.attendeeId = String(object.attendeeId);\n switch (object.mediaType) {\n default:\n if (typeof object.mediaType === \"number\") {\n message.mediaType = object.mediaType;\n break;\n }\n break;\n case \"AUDIO\":\n case 1:\n message.mediaType = 1;\n break;\n case \"VIDEO\":\n case 2:\n message.mediaType = 2;\n break;\n }\n if (object.externalUserId != null)\n message.externalUserId = String(object.externalUserId);\n if (object.width != null)\n message.width = object.width >>> 0;\n if (object.height != null)\n message.height = object.height >>> 0;\n return message;\n };\n\n /**\n * Creates a plain object from a SdkStreamDescriptor message. Also converts values to other types if specified.\n * @function toObject\n * @memberof SdkStreamDescriptor\n * @static\n * @param {SdkStreamDescriptor} message SdkStreamDescriptor\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n SdkStreamDescriptor.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.defaults) {\n object.streamId = 0;\n object.framerate = 0;\n object.maxBitrateKbps = 0;\n object.trackLabel = \"\";\n object.groupId = 0;\n object.avgBitrateBps = 0;\n object.attendeeId = \"\";\n object.mediaType = options.enums === String ? \"AUDIO\" : 1;\n object.externalUserId = \"\";\n object.width = 0;\n object.height = 0;\n }\n if (message.streamId != null && message.hasOwnProperty(\"streamId\"))\n object.streamId = message.streamId;\n if (message.framerate != null && message.hasOwnProperty(\"framerate\"))\n object.framerate = message.framerate;\n if (message.maxBitrateKbps != null && message.hasOwnProperty(\"maxBitrateKbps\"))\n object.maxBitrateKbps = message.maxBitrateKbps;\n if (message.trackLabel != null && message.hasOwnProperty(\"trackLabel\"))\n object.trackLabel = message.trackLabel;\n if (message.groupId != null && message.hasOwnProperty(\"groupId\"))\n object.groupId = message.groupId;\n if (message.avgBitrateBps != null && message.hasOwnProperty(\"avgBitrateBps\"))\n object.avgBitrateBps = message.avgBitrateBps;\n if (message.attendeeId != null && message.hasOwnProperty(\"attendeeId\"))\n object.attendeeId = message.attendeeId;\n if (message.mediaType != null && message.hasOwnProperty(\"mediaType\"))\n object.mediaType = options.enums === String ? $root.SdkStreamMediaType[message.mediaType] === undefined ? message.mediaType : $root.SdkStreamMediaType[message.mediaType] : message.mediaType;\n if (message.externalUserId != null && message.hasOwnProperty(\"externalUserId\"))\n object.externalUserId = message.externalUserId;\n if (message.width != null && message.hasOwnProperty(\"width\"))\n object.width = message.width;\n if (message.height != null && message.hasOwnProperty(\"height\"))\n object.height = message.height;\n return object;\n };\n\n /**\n * Converts this SdkStreamDescriptor to JSON.\n * @function toJSON\n * @memberof SdkStreamDescriptor\n * @instance\n * @returns {Object.} JSON object\n */\n SdkStreamDescriptor.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n /**\n * Gets the default type url for SdkStreamDescriptor\n * @function getTypeUrl\n * @memberof SdkStreamDescriptor\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n SdkStreamDescriptor.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/SdkStreamDescriptor\";\n };\n\n return SdkStreamDescriptor;\n})();\n\n$root.SdkStreamAllocation = (function() {\n\n /**\n * Properties of a SdkStreamAllocation.\n * @name ISdkStreamAllocation\n * @interface ISdkStreamAllocation\n * @property {string|null} [trackLabel] SdkStreamAllocation trackLabel\n * @property {number|null} [streamId] SdkStreamAllocation streamId\n * @property {number|null} [groupId] SdkStreamAllocation groupId\n */\n\n /**\n * Constructs a new SdkStreamAllocation.\n * @name SdkStreamAllocation\n * @classdesc Represents a SdkStreamAllocation.\n * @implements ISdkStreamAllocation\n * @constructor\n * @param {ISdkStreamAllocation=} [properties] Properties to set\n */\n function SdkStreamAllocation(properties) {\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * SdkStreamAllocation trackLabel.\n * @member {string} trackLabel\n * @memberof SdkStreamAllocation\n * @instance\n */\n SdkStreamAllocation.prototype.trackLabel = \"\";\n\n /**\n * SdkStreamAllocation streamId.\n * @member {number} streamId\n * @memberof SdkStreamAllocation\n * @instance\n */\n SdkStreamAllocation.prototype.streamId = 0;\n\n /**\n * SdkStreamAllocation groupId.\n * @member {number} groupId\n * @memberof SdkStreamAllocation\n * @instance\n */\n SdkStreamAllocation.prototype.groupId = 0;\n\n /**\n * Creates a new SdkStreamAllocation instance using the specified properties.\n * @function create\n * @memberof SdkStreamAllocation\n * @static\n * @param {ISdkStreamAllocation=} [properties] Properties to set\n * @returns {SdkStreamAllocation} SdkStreamAllocation instance\n */\n SdkStreamAllocation.create = function create(properties) {\n return new SdkStreamAllocation(properties);\n };\n\n /**\n * Encodes the specified SdkStreamAllocation message. Does not implicitly {@link SdkStreamAllocation.verify|verify} messages.\n * @function encode\n * @memberof SdkStreamAllocation\n * @static\n * @param {ISdkStreamAllocation} message SdkStreamAllocation message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n SdkStreamAllocation.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.trackLabel != null && Object.hasOwnProperty.call(message, \"trackLabel\"))\n writer.uint32(/* id 1, wireType 2 =*/10).string(message.trackLabel);\n if (message.streamId != null && Object.hasOwnProperty.call(message, \"streamId\"))\n writer.uint32(/* id 2, wireType 0 =*/16).uint32(message.streamId);\n if (message.groupId != null && Object.hasOwnProperty.call(message, \"groupId\"))\n writer.uint32(/* id 3, wireType 0 =*/24).uint32(message.groupId);\n return writer;\n };\n\n /**\n * Encodes the specified SdkStreamAllocation message, length delimited. Does not implicitly {@link SdkStreamAllocation.verify|verify} messages.\n * @function encodeDelimited\n * @memberof SdkStreamAllocation\n * @static\n * @param {ISdkStreamAllocation} message SdkStreamAllocation message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n SdkStreamAllocation.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a SdkStreamAllocation message from the specified reader or buffer.\n * @function decode\n * @memberof SdkStreamAllocation\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {SdkStreamAllocation} SdkStreamAllocation\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n SdkStreamAllocation.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.SdkStreamAllocation();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n message.trackLabel = reader.string();\n break;\n }\n case 2: {\n message.streamId = reader.uint32();\n break;\n }\n case 3: {\n message.groupId = reader.uint32();\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a SdkStreamAllocation message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof SdkStreamAllocation\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {SdkStreamAllocation} SdkStreamAllocation\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n SdkStreamAllocation.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a SdkStreamAllocation message.\n * @function verify\n * @memberof SdkStreamAllocation\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n SdkStreamAllocation.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.trackLabel != null && message.hasOwnProperty(\"trackLabel\"))\n if (!$util.isString(message.trackLabel))\n return \"trackLabel: string expected\";\n if (message.streamId != null && message.hasOwnProperty(\"streamId\"))\n if (!$util.isInteger(message.streamId))\n return \"streamId: integer expected\";\n if (message.groupId != null && message.hasOwnProperty(\"groupId\"))\n if (!$util.isInteger(message.groupId))\n return \"groupId: integer expected\";\n return null;\n };\n\n /**\n * Creates a SdkStreamAllocation message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof SdkStreamAllocation\n * @static\n * @param {Object.} object Plain object\n * @returns {SdkStreamAllocation} SdkStreamAllocation\n */\n SdkStreamAllocation.fromObject = function fromObject(object) {\n if (object instanceof $root.SdkStreamAllocation)\n return object;\n var message = new $root.SdkStreamAllocation();\n if (object.trackLabel != null)\n message.trackLabel = String(object.trackLabel);\n if (object.streamId != null)\n message.streamId = object.streamId >>> 0;\n if (object.groupId != null)\n message.groupId = object.groupId >>> 0;\n return message;\n };\n\n /**\n * Creates a plain object from a SdkStreamAllocation message. Also converts values to other types if specified.\n * @function toObject\n * @memberof SdkStreamAllocation\n * @static\n * @param {SdkStreamAllocation} message SdkStreamAllocation\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n SdkStreamAllocation.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.defaults) {\n object.trackLabel = \"\";\n object.streamId = 0;\n object.groupId = 0;\n }\n if (message.trackLabel != null && message.hasOwnProperty(\"trackLabel\"))\n object.trackLabel = message.trackLabel;\n if (message.streamId != null && message.hasOwnProperty(\"streamId\"))\n object.streamId = message.streamId;\n if (message.groupId != null && message.hasOwnProperty(\"groupId\"))\n object.groupId = message.groupId;\n return object;\n };\n\n /**\n * Converts this SdkStreamAllocation to JSON.\n * @function toJSON\n * @memberof SdkStreamAllocation\n * @instance\n * @returns {Object.} JSON object\n */\n SdkStreamAllocation.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n /**\n * Gets the default type url for SdkStreamAllocation\n * @function getTypeUrl\n * @memberof SdkStreamAllocation\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n SdkStreamAllocation.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/SdkStreamAllocation\";\n };\n\n return SdkStreamAllocation;\n})();\n\n$root.SdkTrackMapping = (function() {\n\n /**\n * Properties of a SdkTrackMapping.\n * @name ISdkTrackMapping\n * @interface ISdkTrackMapping\n * @property {number|null} [streamId] SdkTrackMapping streamId\n * @property {number|null} [ssrc] SdkTrackMapping ssrc\n * @property {string|null} [trackLabel] SdkTrackMapping trackLabel\n */\n\n /**\n * Constructs a new SdkTrackMapping.\n * @name SdkTrackMapping\n * @classdesc Represents a SdkTrackMapping.\n * @implements ISdkTrackMapping\n * @constructor\n * @param {ISdkTrackMapping=} [properties] Properties to set\n */\n function SdkTrackMapping(properties) {\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * SdkTrackMapping streamId.\n * @member {number} streamId\n * @memberof SdkTrackMapping\n * @instance\n */\n SdkTrackMapping.prototype.streamId = 0;\n\n /**\n * SdkTrackMapping ssrc.\n * @member {number} ssrc\n * @memberof SdkTrackMapping\n * @instance\n */\n SdkTrackMapping.prototype.ssrc = 0;\n\n /**\n * SdkTrackMapping trackLabel.\n * @member {string} trackLabel\n * @memberof SdkTrackMapping\n * @instance\n */\n SdkTrackMapping.prototype.trackLabel = \"\";\n\n /**\n * Creates a new SdkTrackMapping instance using the specified properties.\n * @function create\n * @memberof SdkTrackMapping\n * @static\n * @param {ISdkTrackMapping=} [properties] Properties to set\n * @returns {SdkTrackMapping} SdkTrackMapping instance\n */\n SdkTrackMapping.create = function create(properties) {\n return new SdkTrackMapping(properties);\n };\n\n /**\n * Encodes the specified SdkTrackMapping message. Does not implicitly {@link SdkTrackMapping.verify|verify} messages.\n * @function encode\n * @memberof SdkTrackMapping\n * @static\n * @param {ISdkTrackMapping} message SdkTrackMapping message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n SdkTrackMapping.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.streamId != null && Object.hasOwnProperty.call(message, \"streamId\"))\n writer.uint32(/* id 1, wireType 0 =*/8).uint32(message.streamId);\n if (message.ssrc != null && Object.hasOwnProperty.call(message, \"ssrc\"))\n writer.uint32(/* id 2, wireType 0 =*/16).uint32(message.ssrc);\n if (message.trackLabel != null && Object.hasOwnProperty.call(message, \"trackLabel\"))\n writer.uint32(/* id 3, wireType 2 =*/26).string(message.trackLabel);\n return writer;\n };\n\n /**\n * Encodes the specified SdkTrackMapping message, length delimited. Does not implicitly {@link SdkTrackMapping.verify|verify} messages.\n * @function encodeDelimited\n * @memberof SdkTrackMapping\n * @static\n * @param {ISdkTrackMapping} message SdkTrackMapping message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n SdkTrackMapping.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a SdkTrackMapping message from the specified reader or buffer.\n * @function decode\n * @memberof SdkTrackMapping\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {SdkTrackMapping} SdkTrackMapping\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n SdkTrackMapping.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.SdkTrackMapping();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n message.streamId = reader.uint32();\n break;\n }\n case 2: {\n message.ssrc = reader.uint32();\n break;\n }\n case 3: {\n message.trackLabel = reader.string();\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a SdkTrackMapping message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof SdkTrackMapping\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {SdkTrackMapping} SdkTrackMapping\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n SdkTrackMapping.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a SdkTrackMapping message.\n * @function verify\n * @memberof SdkTrackMapping\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n SdkTrackMapping.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.streamId != null && message.hasOwnProperty(\"streamId\"))\n if (!$util.isInteger(message.streamId))\n return \"streamId: integer expected\";\n if (message.ssrc != null && message.hasOwnProperty(\"ssrc\"))\n if (!$util.isInteger(message.ssrc))\n return \"ssrc: integer expected\";\n if (message.trackLabel != null && message.hasOwnProperty(\"trackLabel\"))\n if (!$util.isString(message.trackLabel))\n return \"trackLabel: string expected\";\n return null;\n };\n\n /**\n * Creates a SdkTrackMapping message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof SdkTrackMapping\n * @static\n * @param {Object.} object Plain object\n * @returns {SdkTrackMapping} SdkTrackMapping\n */\n SdkTrackMapping.fromObject = function fromObject(object) {\n if (object instanceof $root.SdkTrackMapping)\n return object;\n var message = new $root.SdkTrackMapping();\n if (object.streamId != null)\n message.streamId = object.streamId >>> 0;\n if (object.ssrc != null)\n message.ssrc = object.ssrc >>> 0;\n if (object.trackLabel != null)\n message.trackLabel = String(object.trackLabel);\n return message;\n };\n\n /**\n * Creates a plain object from a SdkTrackMapping message. Also converts values to other types if specified.\n * @function toObject\n * @memberof SdkTrackMapping\n * @static\n * @param {SdkTrackMapping} message SdkTrackMapping\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n SdkTrackMapping.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.defaults) {\n object.streamId = 0;\n object.ssrc = 0;\n object.trackLabel = \"\";\n }\n if (message.streamId != null && message.hasOwnProperty(\"streamId\"))\n object.streamId = message.streamId;\n if (message.ssrc != null && message.hasOwnProperty(\"ssrc\"))\n object.ssrc = message.ssrc;\n if (message.trackLabel != null && message.hasOwnProperty(\"trackLabel\"))\n object.trackLabel = message.trackLabel;\n return object;\n };\n\n /**\n * Converts this SdkTrackMapping to JSON.\n * @function toJSON\n * @memberof SdkTrackMapping\n * @instance\n * @returns {Object.} JSON object\n */\n SdkTrackMapping.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n /**\n * Gets the default type url for SdkTrackMapping\n * @function getTypeUrl\n * @memberof SdkTrackMapping\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n SdkTrackMapping.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/SdkTrackMapping\";\n };\n\n return SdkTrackMapping;\n})();\n\n$root.SdkBitrate = (function() {\n\n /**\n * Properties of a SdkBitrate.\n * @name ISdkBitrate\n * @interface ISdkBitrate\n * @property {number|null} [sourceStreamId] SdkBitrate sourceStreamId\n * @property {number|null} [avgBitrateBps] SdkBitrate avgBitrateBps\n */\n\n /**\n * Constructs a new SdkBitrate.\n * @name SdkBitrate\n * @classdesc Represents a SdkBitrate.\n * @implements ISdkBitrate\n * @constructor\n * @param {ISdkBitrate=} [properties] Properties to set\n */\n function SdkBitrate(properties) {\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * SdkBitrate sourceStreamId.\n * @member {number} sourceStreamId\n * @memberof SdkBitrate\n * @instance\n */\n SdkBitrate.prototype.sourceStreamId = 0;\n\n /**\n * SdkBitrate avgBitrateBps.\n * @member {number} avgBitrateBps\n * @memberof SdkBitrate\n * @instance\n */\n SdkBitrate.prototype.avgBitrateBps = 0;\n\n /**\n * Creates a new SdkBitrate instance using the specified properties.\n * @function create\n * @memberof SdkBitrate\n * @static\n * @param {ISdkBitrate=} [properties] Properties to set\n * @returns {SdkBitrate} SdkBitrate instance\n */\n SdkBitrate.create = function create(properties) {\n return new SdkBitrate(properties);\n };\n\n /**\n * Encodes the specified SdkBitrate message. Does not implicitly {@link SdkBitrate.verify|verify} messages.\n * @function encode\n * @memberof SdkBitrate\n * @static\n * @param {ISdkBitrate} message SdkBitrate message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n SdkBitrate.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.sourceStreamId != null && Object.hasOwnProperty.call(message, \"sourceStreamId\"))\n writer.uint32(/* id 1, wireType 0 =*/8).uint32(message.sourceStreamId);\n if (message.avgBitrateBps != null && Object.hasOwnProperty.call(message, \"avgBitrateBps\"))\n writer.uint32(/* id 2, wireType 0 =*/16).uint32(message.avgBitrateBps);\n return writer;\n };\n\n /**\n * Encodes the specified SdkBitrate message, length delimited. Does not implicitly {@link SdkBitrate.verify|verify} messages.\n * @function encodeDelimited\n * @memberof SdkBitrate\n * @static\n * @param {ISdkBitrate} message SdkBitrate message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n SdkBitrate.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a SdkBitrate message from the specified reader or buffer.\n * @function decode\n * @memberof SdkBitrate\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {SdkBitrate} SdkBitrate\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n SdkBitrate.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.SdkBitrate();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n message.sourceStreamId = reader.uint32();\n break;\n }\n case 2: {\n message.avgBitrateBps = reader.uint32();\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a SdkBitrate message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof SdkBitrate\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {SdkBitrate} SdkBitrate\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n SdkBitrate.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a SdkBitrate message.\n * @function verify\n * @memberof SdkBitrate\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n SdkBitrate.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.sourceStreamId != null && message.hasOwnProperty(\"sourceStreamId\"))\n if (!$util.isInteger(message.sourceStreamId))\n return \"sourceStreamId: integer expected\";\n if (message.avgBitrateBps != null && message.hasOwnProperty(\"avgBitrateBps\"))\n if (!$util.isInteger(message.avgBitrateBps))\n return \"avgBitrateBps: integer expected\";\n return null;\n };\n\n /**\n * Creates a SdkBitrate message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof SdkBitrate\n * @static\n * @param {Object.} object Plain object\n * @returns {SdkBitrate} SdkBitrate\n */\n SdkBitrate.fromObject = function fromObject(object) {\n if (object instanceof $root.SdkBitrate)\n return object;\n var message = new $root.SdkBitrate();\n if (object.sourceStreamId != null)\n message.sourceStreamId = object.sourceStreamId >>> 0;\n if (object.avgBitrateBps != null)\n message.avgBitrateBps = object.avgBitrateBps >>> 0;\n return message;\n };\n\n /**\n * Creates a plain object from a SdkBitrate message. Also converts values to other types if specified.\n * @function toObject\n * @memberof SdkBitrate\n * @static\n * @param {SdkBitrate} message SdkBitrate\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n SdkBitrate.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.defaults) {\n object.sourceStreamId = 0;\n object.avgBitrateBps = 0;\n }\n if (message.sourceStreamId != null && message.hasOwnProperty(\"sourceStreamId\"))\n object.sourceStreamId = message.sourceStreamId;\n if (message.avgBitrateBps != null && message.hasOwnProperty(\"avgBitrateBps\"))\n object.avgBitrateBps = message.avgBitrateBps;\n return object;\n };\n\n /**\n * Converts this SdkBitrate to JSON.\n * @function toJSON\n * @memberof SdkBitrate\n * @instance\n * @returns {Object.} JSON object\n */\n SdkBitrate.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n /**\n * Gets the default type url for SdkBitrate\n * @function getTypeUrl\n * @memberof SdkBitrate\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n SdkBitrate.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/SdkBitrate\";\n };\n\n return SdkBitrate;\n})();\n\n$root.SdkAudioControlFrame = (function() {\n\n /**\n * Properties of a SdkAudioControlFrame.\n * @name ISdkAudioControlFrame\n * @interface ISdkAudioControlFrame\n * @property {boolean|null} [muted] SdkAudioControlFrame muted\n */\n\n /**\n * Constructs a new SdkAudioControlFrame.\n * @name SdkAudioControlFrame\n * @classdesc Represents a SdkAudioControlFrame.\n * @implements ISdkAudioControlFrame\n * @constructor\n * @param {ISdkAudioControlFrame=} [properties] Properties to set\n */\n function SdkAudioControlFrame(properties) {\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * SdkAudioControlFrame muted.\n * @member {boolean} muted\n * @memberof SdkAudioControlFrame\n * @instance\n */\n SdkAudioControlFrame.prototype.muted = false;\n\n /**\n * Creates a new SdkAudioControlFrame instance using the specified properties.\n * @function create\n * @memberof SdkAudioControlFrame\n * @static\n * @param {ISdkAudioControlFrame=} [properties] Properties to set\n * @returns {SdkAudioControlFrame} SdkAudioControlFrame instance\n */\n SdkAudioControlFrame.create = function create(properties) {\n return new SdkAudioControlFrame(properties);\n };\n\n /**\n * Encodes the specified SdkAudioControlFrame message. Does not implicitly {@link SdkAudioControlFrame.verify|verify} messages.\n * @function encode\n * @memberof SdkAudioControlFrame\n * @static\n * @param {ISdkAudioControlFrame} message SdkAudioControlFrame message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n SdkAudioControlFrame.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.muted != null && Object.hasOwnProperty.call(message, \"muted\"))\n writer.uint32(/* id 1, wireType 0 =*/8).bool(message.muted);\n return writer;\n };\n\n /**\n * Encodes the specified SdkAudioControlFrame message, length delimited. Does not implicitly {@link SdkAudioControlFrame.verify|verify} messages.\n * @function encodeDelimited\n * @memberof SdkAudioControlFrame\n * @static\n * @param {ISdkAudioControlFrame} message SdkAudioControlFrame message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n SdkAudioControlFrame.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a SdkAudioControlFrame message from the specified reader or buffer.\n * @function decode\n * @memberof SdkAudioControlFrame\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {SdkAudioControlFrame} SdkAudioControlFrame\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n SdkAudioControlFrame.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.SdkAudioControlFrame();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n message.muted = reader.bool();\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a SdkAudioControlFrame message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof SdkAudioControlFrame\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {SdkAudioControlFrame} SdkAudioControlFrame\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n SdkAudioControlFrame.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a SdkAudioControlFrame message.\n * @function verify\n * @memberof SdkAudioControlFrame\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n SdkAudioControlFrame.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.muted != null && message.hasOwnProperty(\"muted\"))\n if (typeof message.muted !== \"boolean\")\n return \"muted: boolean expected\";\n return null;\n };\n\n /**\n * Creates a SdkAudioControlFrame message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof SdkAudioControlFrame\n * @static\n * @param {Object.} object Plain object\n * @returns {SdkAudioControlFrame} SdkAudioControlFrame\n */\n SdkAudioControlFrame.fromObject = function fromObject(object) {\n if (object instanceof $root.SdkAudioControlFrame)\n return object;\n var message = new $root.SdkAudioControlFrame();\n if (object.muted != null)\n message.muted = Boolean(object.muted);\n return message;\n };\n\n /**\n * Creates a plain object from a SdkAudioControlFrame message. Also converts values to other types if specified.\n * @function toObject\n * @memberof SdkAudioControlFrame\n * @static\n * @param {SdkAudioControlFrame} message SdkAudioControlFrame\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n SdkAudioControlFrame.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.defaults)\n object.muted = false;\n if (message.muted != null && message.hasOwnProperty(\"muted\"))\n object.muted = message.muted;\n return object;\n };\n\n /**\n * Converts this SdkAudioControlFrame to JSON.\n * @function toJSON\n * @memberof SdkAudioControlFrame\n * @instance\n * @returns {Object.} JSON object\n */\n SdkAudioControlFrame.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n /**\n * Gets the default type url for SdkAudioControlFrame\n * @function getTypeUrl\n * @memberof SdkAudioControlFrame\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n SdkAudioControlFrame.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/SdkAudioControlFrame\";\n };\n\n return SdkAudioControlFrame;\n})();\n\n$root.SdkAudioMetadataFrame = (function() {\n\n /**\n * Properties of a SdkAudioMetadataFrame.\n * @name ISdkAudioMetadataFrame\n * @interface ISdkAudioMetadataFrame\n * @property {Array.|null} [attendeeStates] SdkAudioMetadataFrame attendeeStates\n */\n\n /**\n * Constructs a new SdkAudioMetadataFrame.\n * @name SdkAudioMetadataFrame\n * @classdesc Represents a SdkAudioMetadataFrame.\n * @implements ISdkAudioMetadataFrame\n * @constructor\n * @param {ISdkAudioMetadataFrame=} [properties] Properties to set\n */\n function SdkAudioMetadataFrame(properties) {\n this.attendeeStates = [];\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * SdkAudioMetadataFrame attendeeStates.\n * @member {Array.} attendeeStates\n * @memberof SdkAudioMetadataFrame\n * @instance\n */\n SdkAudioMetadataFrame.prototype.attendeeStates = $util.emptyArray;\n\n /**\n * Creates a new SdkAudioMetadataFrame instance using the specified properties.\n * @function create\n * @memberof SdkAudioMetadataFrame\n * @static\n * @param {ISdkAudioMetadataFrame=} [properties] Properties to set\n * @returns {SdkAudioMetadataFrame} SdkAudioMetadataFrame instance\n */\n SdkAudioMetadataFrame.create = function create(properties) {\n return new SdkAudioMetadataFrame(properties);\n };\n\n /**\n * Encodes the specified SdkAudioMetadataFrame message. Does not implicitly {@link SdkAudioMetadataFrame.verify|verify} messages.\n * @function encode\n * @memberof SdkAudioMetadataFrame\n * @static\n * @param {ISdkAudioMetadataFrame} message SdkAudioMetadataFrame message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n SdkAudioMetadataFrame.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.attendeeStates != null && message.attendeeStates.length)\n for (var i = 0; i < message.attendeeStates.length; ++i)\n $root.SdkAudioAttendeeState.encode(message.attendeeStates[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();\n return writer;\n };\n\n /**\n * Encodes the specified SdkAudioMetadataFrame message, length delimited. Does not implicitly {@link SdkAudioMetadataFrame.verify|verify} messages.\n * @function encodeDelimited\n * @memberof SdkAudioMetadataFrame\n * @static\n * @param {ISdkAudioMetadataFrame} message SdkAudioMetadataFrame message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n SdkAudioMetadataFrame.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a SdkAudioMetadataFrame message from the specified reader or buffer.\n * @function decode\n * @memberof SdkAudioMetadataFrame\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {SdkAudioMetadataFrame} SdkAudioMetadataFrame\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n SdkAudioMetadataFrame.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.SdkAudioMetadataFrame();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (!(message.attendeeStates && message.attendeeStates.length))\n message.attendeeStates = [];\n message.attendeeStates.push($root.SdkAudioAttendeeState.decode(reader, reader.uint32()));\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a SdkAudioMetadataFrame message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof SdkAudioMetadataFrame\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {SdkAudioMetadataFrame} SdkAudioMetadataFrame\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n SdkAudioMetadataFrame.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a SdkAudioMetadataFrame message.\n * @function verify\n * @memberof SdkAudioMetadataFrame\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n SdkAudioMetadataFrame.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.attendeeStates != null && message.hasOwnProperty(\"attendeeStates\")) {\n if (!Array.isArray(message.attendeeStates))\n return \"attendeeStates: array expected\";\n for (var i = 0; i < message.attendeeStates.length; ++i) {\n var error = $root.SdkAudioAttendeeState.verify(message.attendeeStates[i]);\n if (error)\n return \"attendeeStates.\" + error;\n }\n }\n return null;\n };\n\n /**\n * Creates a SdkAudioMetadataFrame message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof SdkAudioMetadataFrame\n * @static\n * @param {Object.} object Plain object\n * @returns {SdkAudioMetadataFrame} SdkAudioMetadataFrame\n */\n SdkAudioMetadataFrame.fromObject = function fromObject(object) {\n if (object instanceof $root.SdkAudioMetadataFrame)\n return object;\n var message = new $root.SdkAudioMetadataFrame();\n if (object.attendeeStates) {\n if (!Array.isArray(object.attendeeStates))\n throw TypeError(\".SdkAudioMetadataFrame.attendeeStates: array expected\");\n message.attendeeStates = [];\n for (var i = 0; i < object.attendeeStates.length; ++i) {\n if (typeof object.attendeeStates[i] !== \"object\")\n throw TypeError(\".SdkAudioMetadataFrame.attendeeStates: object expected\");\n message.attendeeStates[i] = $root.SdkAudioAttendeeState.fromObject(object.attendeeStates[i]);\n }\n }\n return message;\n };\n\n /**\n * Creates a plain object from a SdkAudioMetadataFrame message. Also converts values to other types if specified.\n * @function toObject\n * @memberof SdkAudioMetadataFrame\n * @static\n * @param {SdkAudioMetadataFrame} message SdkAudioMetadataFrame\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n SdkAudioMetadataFrame.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.arrays || options.defaults)\n object.attendeeStates = [];\n if (message.attendeeStates && message.attendeeStates.length) {\n object.attendeeStates = [];\n for (var j = 0; j < message.attendeeStates.length; ++j)\n object.attendeeStates[j] = $root.SdkAudioAttendeeState.toObject(message.attendeeStates[j], options);\n }\n return object;\n };\n\n /**\n * Converts this SdkAudioMetadataFrame to JSON.\n * @function toJSON\n * @memberof SdkAudioMetadataFrame\n * @instance\n * @returns {Object.} JSON object\n */\n SdkAudioMetadataFrame.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n /**\n * Gets the default type url for SdkAudioMetadataFrame\n * @function getTypeUrl\n * @memberof SdkAudioMetadataFrame\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n SdkAudioMetadataFrame.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/SdkAudioMetadataFrame\";\n };\n\n return SdkAudioMetadataFrame;\n})();\n\n$root.SdkAudioAttendeeState = (function() {\n\n /**\n * Properties of a SdkAudioAttendeeState.\n * @name ISdkAudioAttendeeState\n * @interface ISdkAudioAttendeeState\n * @property {number|null} [audioStreamId] SdkAudioAttendeeState audioStreamId\n * @property {number|null} [volume] SdkAudioAttendeeState volume\n * @property {boolean|null} [muted] SdkAudioAttendeeState muted\n * @property {number|null} [signalStrength] SdkAudioAttendeeState signalStrength\n */\n\n /**\n * Constructs a new SdkAudioAttendeeState.\n * @name SdkAudioAttendeeState\n * @classdesc Represents a SdkAudioAttendeeState.\n * @implements ISdkAudioAttendeeState\n * @constructor\n * @param {ISdkAudioAttendeeState=} [properties] Properties to set\n */\n function SdkAudioAttendeeState(properties) {\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * SdkAudioAttendeeState audioStreamId.\n * @member {number} audioStreamId\n * @memberof SdkAudioAttendeeState\n * @instance\n */\n SdkAudioAttendeeState.prototype.audioStreamId = 0;\n\n /**\n * SdkAudioAttendeeState volume.\n * @member {number} volume\n * @memberof SdkAudioAttendeeState\n * @instance\n */\n SdkAudioAttendeeState.prototype.volume = 0;\n\n /**\n * SdkAudioAttendeeState muted.\n * @member {boolean} muted\n * @memberof SdkAudioAttendeeState\n * @instance\n */\n SdkAudioAttendeeState.prototype.muted = false;\n\n /**\n * SdkAudioAttendeeState signalStrength.\n * @member {number} signalStrength\n * @memberof SdkAudioAttendeeState\n * @instance\n */\n SdkAudioAttendeeState.prototype.signalStrength = 0;\n\n /**\n * Creates a new SdkAudioAttendeeState instance using the specified properties.\n * @function create\n * @memberof SdkAudioAttendeeState\n * @static\n * @param {ISdkAudioAttendeeState=} [properties] Properties to set\n * @returns {SdkAudioAttendeeState} SdkAudioAttendeeState instance\n */\n SdkAudioAttendeeState.create = function create(properties) {\n return new SdkAudioAttendeeState(properties);\n };\n\n /**\n * Encodes the specified SdkAudioAttendeeState message. Does not implicitly {@link SdkAudioAttendeeState.verify|verify} messages.\n * @function encode\n * @memberof SdkAudioAttendeeState\n * @static\n * @param {ISdkAudioAttendeeState} message SdkAudioAttendeeState message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n SdkAudioAttendeeState.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.audioStreamId != null && Object.hasOwnProperty.call(message, \"audioStreamId\"))\n writer.uint32(/* id 1, wireType 0 =*/8).uint32(message.audioStreamId);\n if (message.volume != null && Object.hasOwnProperty.call(message, \"volume\"))\n writer.uint32(/* id 2, wireType 0 =*/16).uint32(message.volume);\n if (message.muted != null && Object.hasOwnProperty.call(message, \"muted\"))\n writer.uint32(/* id 3, wireType 0 =*/24).bool(message.muted);\n if (message.signalStrength != null && Object.hasOwnProperty.call(message, \"signalStrength\"))\n writer.uint32(/* id 4, wireType 0 =*/32).uint32(message.signalStrength);\n return writer;\n };\n\n /**\n * Encodes the specified SdkAudioAttendeeState message, length delimited. Does not implicitly {@link SdkAudioAttendeeState.verify|verify} messages.\n * @function encodeDelimited\n * @memberof SdkAudioAttendeeState\n * @static\n * @param {ISdkAudioAttendeeState} message SdkAudioAttendeeState message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n SdkAudioAttendeeState.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a SdkAudioAttendeeState message from the specified reader or buffer.\n * @function decode\n * @memberof SdkAudioAttendeeState\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {SdkAudioAttendeeState} SdkAudioAttendeeState\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n SdkAudioAttendeeState.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.SdkAudioAttendeeState();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n message.audioStreamId = reader.uint32();\n break;\n }\n case 2: {\n message.volume = reader.uint32();\n break;\n }\n case 3: {\n message.muted = reader.bool();\n break;\n }\n case 4: {\n message.signalStrength = reader.uint32();\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a SdkAudioAttendeeState message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof SdkAudioAttendeeState\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {SdkAudioAttendeeState} SdkAudioAttendeeState\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n SdkAudioAttendeeState.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a SdkAudioAttendeeState message.\n * @function verify\n * @memberof SdkAudioAttendeeState\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n SdkAudioAttendeeState.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.audioStreamId != null && message.hasOwnProperty(\"audioStreamId\"))\n if (!$util.isInteger(message.audioStreamId))\n return \"audioStreamId: integer expected\";\n if (message.volume != null && message.hasOwnProperty(\"volume\"))\n if (!$util.isInteger(message.volume))\n return \"volume: integer expected\";\n if (message.muted != null && message.hasOwnProperty(\"muted\"))\n if (typeof message.muted !== \"boolean\")\n return \"muted: boolean expected\";\n if (message.signalStrength != null && message.hasOwnProperty(\"signalStrength\"))\n if (!$util.isInteger(message.signalStrength))\n return \"signalStrength: integer expected\";\n return null;\n };\n\n /**\n * Creates a SdkAudioAttendeeState message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof SdkAudioAttendeeState\n * @static\n * @param {Object.} object Plain object\n * @returns {SdkAudioAttendeeState} SdkAudioAttendeeState\n */\n SdkAudioAttendeeState.fromObject = function fromObject(object) {\n if (object instanceof $root.SdkAudioAttendeeState)\n return object;\n var message = new $root.SdkAudioAttendeeState();\n if (object.audioStreamId != null)\n message.audioStreamId = object.audioStreamId >>> 0;\n if (object.volume != null)\n message.volume = object.volume >>> 0;\n if (object.muted != null)\n message.muted = Boolean(object.muted);\n if (object.signalStrength != null)\n message.signalStrength = object.signalStrength >>> 0;\n return message;\n };\n\n /**\n * Creates a plain object from a SdkAudioAttendeeState message. Also converts values to other types if specified.\n * @function toObject\n * @memberof SdkAudioAttendeeState\n * @static\n * @param {SdkAudioAttendeeState} message SdkAudioAttendeeState\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n SdkAudioAttendeeState.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.defaults) {\n object.audioStreamId = 0;\n object.volume = 0;\n object.muted = false;\n object.signalStrength = 0;\n }\n if (message.audioStreamId != null && message.hasOwnProperty(\"audioStreamId\"))\n object.audioStreamId = message.audioStreamId;\n if (message.volume != null && message.hasOwnProperty(\"volume\"))\n object.volume = message.volume;\n if (message.muted != null && message.hasOwnProperty(\"muted\"))\n object.muted = message.muted;\n if (message.signalStrength != null && message.hasOwnProperty(\"signalStrength\"))\n object.signalStrength = message.signalStrength;\n return object;\n };\n\n /**\n * Converts this SdkAudioAttendeeState to JSON.\n * @function toJSON\n * @memberof SdkAudioAttendeeState\n * @instance\n * @returns {Object.} JSON object\n */\n SdkAudioAttendeeState.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n /**\n * Gets the default type url for SdkAudioAttendeeState\n * @function getTypeUrl\n * @memberof SdkAudioAttendeeState\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n SdkAudioAttendeeState.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/SdkAudioAttendeeState\";\n };\n\n return SdkAudioAttendeeState;\n})();\n\n$root.SdkAudioStreamIdInfoFrame = (function() {\n\n /**\n * Properties of a SdkAudioStreamIdInfoFrame.\n * @name ISdkAudioStreamIdInfoFrame\n * @interface ISdkAudioStreamIdInfoFrame\n * @property {Array.|null} [streams] SdkAudioStreamIdInfoFrame streams\n */\n\n /**\n * Constructs a new SdkAudioStreamIdInfoFrame.\n * @name SdkAudioStreamIdInfoFrame\n * @classdesc Represents a SdkAudioStreamIdInfoFrame.\n * @implements ISdkAudioStreamIdInfoFrame\n * @constructor\n * @param {ISdkAudioStreamIdInfoFrame=} [properties] Properties to set\n */\n function SdkAudioStreamIdInfoFrame(properties) {\n this.streams = [];\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * SdkAudioStreamIdInfoFrame streams.\n * @member {Array.} streams\n * @memberof SdkAudioStreamIdInfoFrame\n * @instance\n */\n SdkAudioStreamIdInfoFrame.prototype.streams = $util.emptyArray;\n\n /**\n * Creates a new SdkAudioStreamIdInfoFrame instance using the specified properties.\n * @function create\n * @memberof SdkAudioStreamIdInfoFrame\n * @static\n * @param {ISdkAudioStreamIdInfoFrame=} [properties] Properties to set\n * @returns {SdkAudioStreamIdInfoFrame} SdkAudioStreamIdInfoFrame instance\n */\n SdkAudioStreamIdInfoFrame.create = function create(properties) {\n return new SdkAudioStreamIdInfoFrame(properties);\n };\n\n /**\n * Encodes the specified SdkAudioStreamIdInfoFrame message. Does not implicitly {@link SdkAudioStreamIdInfoFrame.verify|verify} messages.\n * @function encode\n * @memberof SdkAudioStreamIdInfoFrame\n * @static\n * @param {ISdkAudioStreamIdInfoFrame} message SdkAudioStreamIdInfoFrame message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n SdkAudioStreamIdInfoFrame.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.streams != null && message.streams.length)\n for (var i = 0; i < message.streams.length; ++i)\n $root.SdkAudioStreamIdInfo.encode(message.streams[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();\n return writer;\n };\n\n /**\n * Encodes the specified SdkAudioStreamIdInfoFrame message, length delimited. Does not implicitly {@link SdkAudioStreamIdInfoFrame.verify|verify} messages.\n * @function encodeDelimited\n * @memberof SdkAudioStreamIdInfoFrame\n * @static\n * @param {ISdkAudioStreamIdInfoFrame} message SdkAudioStreamIdInfoFrame message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n SdkAudioStreamIdInfoFrame.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a SdkAudioStreamIdInfoFrame message from the specified reader or buffer.\n * @function decode\n * @memberof SdkAudioStreamIdInfoFrame\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {SdkAudioStreamIdInfoFrame} SdkAudioStreamIdInfoFrame\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n SdkAudioStreamIdInfoFrame.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.SdkAudioStreamIdInfoFrame();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (!(message.streams && message.streams.length))\n message.streams = [];\n message.streams.push($root.SdkAudioStreamIdInfo.decode(reader, reader.uint32()));\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a SdkAudioStreamIdInfoFrame message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof SdkAudioStreamIdInfoFrame\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {SdkAudioStreamIdInfoFrame} SdkAudioStreamIdInfoFrame\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n SdkAudioStreamIdInfoFrame.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a SdkAudioStreamIdInfoFrame message.\n * @function verify\n * @memberof SdkAudioStreamIdInfoFrame\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n SdkAudioStreamIdInfoFrame.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.streams != null && message.hasOwnProperty(\"streams\")) {\n if (!Array.isArray(message.streams))\n return \"streams: array expected\";\n for (var i = 0; i < message.streams.length; ++i) {\n var error = $root.SdkAudioStreamIdInfo.verify(message.streams[i]);\n if (error)\n return \"streams.\" + error;\n }\n }\n return null;\n };\n\n /**\n * Creates a SdkAudioStreamIdInfoFrame message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof SdkAudioStreamIdInfoFrame\n * @static\n * @param {Object.} object Plain object\n * @returns {SdkAudioStreamIdInfoFrame} SdkAudioStreamIdInfoFrame\n */\n SdkAudioStreamIdInfoFrame.fromObject = function fromObject(object) {\n if (object instanceof $root.SdkAudioStreamIdInfoFrame)\n return object;\n var message = new $root.SdkAudioStreamIdInfoFrame();\n if (object.streams) {\n if (!Array.isArray(object.streams))\n throw TypeError(\".SdkAudioStreamIdInfoFrame.streams: array expected\");\n message.streams = [];\n for (var i = 0; i < object.streams.length; ++i) {\n if (typeof object.streams[i] !== \"object\")\n throw TypeError(\".SdkAudioStreamIdInfoFrame.streams: object expected\");\n message.streams[i] = $root.SdkAudioStreamIdInfo.fromObject(object.streams[i]);\n }\n }\n return message;\n };\n\n /**\n * Creates a plain object from a SdkAudioStreamIdInfoFrame message. Also converts values to other types if specified.\n * @function toObject\n * @memberof SdkAudioStreamIdInfoFrame\n * @static\n * @param {SdkAudioStreamIdInfoFrame} message SdkAudioStreamIdInfoFrame\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n SdkAudioStreamIdInfoFrame.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.arrays || options.defaults)\n object.streams = [];\n if (message.streams && message.streams.length) {\n object.streams = [];\n for (var j = 0; j < message.streams.length; ++j)\n object.streams[j] = $root.SdkAudioStreamIdInfo.toObject(message.streams[j], options);\n }\n return object;\n };\n\n /**\n * Converts this SdkAudioStreamIdInfoFrame to JSON.\n * @function toJSON\n * @memberof SdkAudioStreamIdInfoFrame\n * @instance\n * @returns {Object.} JSON object\n */\n SdkAudioStreamIdInfoFrame.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n /**\n * Gets the default type url for SdkAudioStreamIdInfoFrame\n * @function getTypeUrl\n * @memberof SdkAudioStreamIdInfoFrame\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n SdkAudioStreamIdInfoFrame.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/SdkAudioStreamIdInfoFrame\";\n };\n\n return SdkAudioStreamIdInfoFrame;\n})();\n\n$root.SdkAudioStreamIdInfo = (function() {\n\n /**\n * Properties of a SdkAudioStreamIdInfo.\n * @name ISdkAudioStreamIdInfo\n * @interface ISdkAudioStreamIdInfo\n * @property {number|null} [audioStreamId] SdkAudioStreamIdInfo audioStreamId\n * @property {string|null} [attendeeId] SdkAudioStreamIdInfo attendeeId\n * @property {boolean|null} [muted] SdkAudioStreamIdInfo muted\n * @property {string|null} [externalUserId] SdkAudioStreamIdInfo externalUserId\n * @property {boolean|null} [dropped] SdkAudioStreamIdInfo dropped\n */\n\n /**\n * Constructs a new SdkAudioStreamIdInfo.\n * @name SdkAudioStreamIdInfo\n * @classdesc Represents a SdkAudioStreamIdInfo.\n * @implements ISdkAudioStreamIdInfo\n * @constructor\n * @param {ISdkAudioStreamIdInfo=} [properties] Properties to set\n */\n function SdkAudioStreamIdInfo(properties) {\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * SdkAudioStreamIdInfo audioStreamId.\n * @member {number} audioStreamId\n * @memberof SdkAudioStreamIdInfo\n * @instance\n */\n SdkAudioStreamIdInfo.prototype.audioStreamId = 0;\n\n /**\n * SdkAudioStreamIdInfo attendeeId.\n * @member {string} attendeeId\n * @memberof SdkAudioStreamIdInfo\n * @instance\n */\n SdkAudioStreamIdInfo.prototype.attendeeId = \"\";\n\n /**\n * SdkAudioStreamIdInfo muted.\n * @member {boolean} muted\n * @memberof SdkAudioStreamIdInfo\n * @instance\n */\n SdkAudioStreamIdInfo.prototype.muted = false;\n\n /**\n * SdkAudioStreamIdInfo externalUserId.\n * @member {string} externalUserId\n * @memberof SdkAudioStreamIdInfo\n * @instance\n */\n SdkAudioStreamIdInfo.prototype.externalUserId = \"\";\n\n /**\n * SdkAudioStreamIdInfo dropped.\n * @member {boolean} dropped\n * @memberof SdkAudioStreamIdInfo\n * @instance\n */\n SdkAudioStreamIdInfo.prototype.dropped = false;\n\n /**\n * Creates a new SdkAudioStreamIdInfo instance using the specified properties.\n * @function create\n * @memberof SdkAudioStreamIdInfo\n * @static\n * @param {ISdkAudioStreamIdInfo=} [properties] Properties to set\n * @returns {SdkAudioStreamIdInfo} SdkAudioStreamIdInfo instance\n */\n SdkAudioStreamIdInfo.create = function create(properties) {\n return new SdkAudioStreamIdInfo(properties);\n };\n\n /**\n * Encodes the specified SdkAudioStreamIdInfo message. Does not implicitly {@link SdkAudioStreamIdInfo.verify|verify} messages.\n * @function encode\n * @memberof SdkAudioStreamIdInfo\n * @static\n * @param {ISdkAudioStreamIdInfo} message SdkAudioStreamIdInfo message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n SdkAudioStreamIdInfo.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.audioStreamId != null && Object.hasOwnProperty.call(message, \"audioStreamId\"))\n writer.uint32(/* id 1, wireType 0 =*/8).uint32(message.audioStreamId);\n if (message.attendeeId != null && Object.hasOwnProperty.call(message, \"attendeeId\"))\n writer.uint32(/* id 2, wireType 2 =*/18).string(message.attendeeId);\n if (message.muted != null && Object.hasOwnProperty.call(message, \"muted\"))\n writer.uint32(/* id 3, wireType 0 =*/24).bool(message.muted);\n if (message.externalUserId != null && Object.hasOwnProperty.call(message, \"externalUserId\"))\n writer.uint32(/* id 4, wireType 2 =*/34).string(message.externalUserId);\n if (message.dropped != null && Object.hasOwnProperty.call(message, \"dropped\"))\n writer.uint32(/* id 5, wireType 0 =*/40).bool(message.dropped);\n return writer;\n };\n\n /**\n * Encodes the specified SdkAudioStreamIdInfo message, length delimited. Does not implicitly {@link SdkAudioStreamIdInfo.verify|verify} messages.\n * @function encodeDelimited\n * @memberof SdkAudioStreamIdInfo\n * @static\n * @param {ISdkAudioStreamIdInfo} message SdkAudioStreamIdInfo message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n SdkAudioStreamIdInfo.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a SdkAudioStreamIdInfo message from the specified reader or buffer.\n * @function decode\n * @memberof SdkAudioStreamIdInfo\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {SdkAudioStreamIdInfo} SdkAudioStreamIdInfo\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n SdkAudioStreamIdInfo.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.SdkAudioStreamIdInfo();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n message.audioStreamId = reader.uint32();\n break;\n }\n case 2: {\n message.attendeeId = reader.string();\n break;\n }\n case 3: {\n message.muted = reader.bool();\n break;\n }\n case 4: {\n message.externalUserId = reader.string();\n break;\n }\n case 5: {\n message.dropped = reader.bool();\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a SdkAudioStreamIdInfo message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof SdkAudioStreamIdInfo\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {SdkAudioStreamIdInfo} SdkAudioStreamIdInfo\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n SdkAudioStreamIdInfo.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a SdkAudioStreamIdInfo message.\n * @function verify\n * @memberof SdkAudioStreamIdInfo\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n SdkAudioStreamIdInfo.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.audioStreamId != null && message.hasOwnProperty(\"audioStreamId\"))\n if (!$util.isInteger(message.audioStreamId))\n return \"audioStreamId: integer expected\";\n if (message.attendeeId != null && message.hasOwnProperty(\"attendeeId\"))\n if (!$util.isString(message.attendeeId))\n return \"attendeeId: string expected\";\n if (message.muted != null && message.hasOwnProperty(\"muted\"))\n if (typeof message.muted !== \"boolean\")\n return \"muted: boolean expected\";\n if (message.externalUserId != null && message.hasOwnProperty(\"externalUserId\"))\n if (!$util.isString(message.externalUserId))\n return \"externalUserId: string expected\";\n if (message.dropped != null && message.hasOwnProperty(\"dropped\"))\n if (typeof message.dropped !== \"boolean\")\n return \"dropped: boolean expected\";\n return null;\n };\n\n /**\n * Creates a SdkAudioStreamIdInfo message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof SdkAudioStreamIdInfo\n * @static\n * @param {Object.} object Plain object\n * @returns {SdkAudioStreamIdInfo} SdkAudioStreamIdInfo\n */\n SdkAudioStreamIdInfo.fromObject = function fromObject(object) {\n if (object instanceof $root.SdkAudioStreamIdInfo)\n return object;\n var message = new $root.SdkAudioStreamIdInfo();\n if (object.audioStreamId != null)\n message.audioStreamId = object.audioStreamId >>> 0;\n if (object.attendeeId != null)\n message.attendeeId = String(object.attendeeId);\n if (object.muted != null)\n message.muted = Boolean(object.muted);\n if (object.externalUserId != null)\n message.externalUserId = String(object.externalUserId);\n if (object.dropped != null)\n message.dropped = Boolean(object.dropped);\n return message;\n };\n\n /**\n * Creates a plain object from a SdkAudioStreamIdInfo message. Also converts values to other types if specified.\n * @function toObject\n * @memberof SdkAudioStreamIdInfo\n * @static\n * @param {SdkAudioStreamIdInfo} message SdkAudioStreamIdInfo\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n SdkAudioStreamIdInfo.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.defaults) {\n object.audioStreamId = 0;\n object.attendeeId = \"\";\n object.muted = false;\n object.externalUserId = \"\";\n object.dropped = false;\n }\n if (message.audioStreamId != null && message.hasOwnProperty(\"audioStreamId\"))\n object.audioStreamId = message.audioStreamId;\n if (message.attendeeId != null && message.hasOwnProperty(\"attendeeId\"))\n object.attendeeId = message.attendeeId;\n if (message.muted != null && message.hasOwnProperty(\"muted\"))\n object.muted = message.muted;\n if (message.externalUserId != null && message.hasOwnProperty(\"externalUserId\"))\n object.externalUserId = message.externalUserId;\n if (message.dropped != null && message.hasOwnProperty(\"dropped\"))\n object.dropped = message.dropped;\n return object;\n };\n\n /**\n * Converts this SdkAudioStreamIdInfo to JSON.\n * @function toJSON\n * @memberof SdkAudioStreamIdInfo\n * @instance\n * @returns {Object.} JSON object\n */\n SdkAudioStreamIdInfo.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n /**\n * Gets the default type url for SdkAudioStreamIdInfo\n * @function getTypeUrl\n * @memberof SdkAudioStreamIdInfo\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n SdkAudioStreamIdInfo.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/SdkAudioStreamIdInfo\";\n };\n\n return SdkAudioStreamIdInfo;\n})();\n\n/**\n * SdkPingPongType enum.\n * @name SdkPingPongType\n * @enum {number}\n * @property {number} PING=1 PING value\n * @property {number} PONG=2 PONG value\n */\n$root.SdkPingPongType = (function() {\n var valuesById = {}, values = Object.create(valuesById);\n values[valuesById[1] = \"PING\"] = 1;\n values[valuesById[2] = \"PONG\"] = 2;\n return values;\n})();\n\n$root.SdkPingPongFrame = (function() {\n\n /**\n * Properties of a SdkPingPongFrame.\n * @name ISdkPingPongFrame\n * @interface ISdkPingPongFrame\n * @property {SdkPingPongType} type SdkPingPongFrame type\n * @property {number} pingId SdkPingPongFrame pingId\n */\n\n /**\n * Constructs a new SdkPingPongFrame.\n * @name SdkPingPongFrame\n * @classdesc Represents a SdkPingPongFrame.\n * @implements ISdkPingPongFrame\n * @constructor\n * @param {ISdkPingPongFrame=} [properties] Properties to set\n */\n function SdkPingPongFrame(properties) {\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * SdkPingPongFrame type.\n * @member {SdkPingPongType} type\n * @memberof SdkPingPongFrame\n * @instance\n */\n SdkPingPongFrame.prototype.type = 1;\n\n /**\n * SdkPingPongFrame pingId.\n * @member {number} pingId\n * @memberof SdkPingPongFrame\n * @instance\n */\n SdkPingPongFrame.prototype.pingId = 0;\n\n /**\n * Creates a new SdkPingPongFrame instance using the specified properties.\n * @function create\n * @memberof SdkPingPongFrame\n * @static\n * @param {ISdkPingPongFrame=} [properties] Properties to set\n * @returns {SdkPingPongFrame} SdkPingPongFrame instance\n */\n SdkPingPongFrame.create = function create(properties) {\n return new SdkPingPongFrame(properties);\n };\n\n /**\n * Encodes the specified SdkPingPongFrame message. Does not implicitly {@link SdkPingPongFrame.verify|verify} messages.\n * @function encode\n * @memberof SdkPingPongFrame\n * @static\n * @param {ISdkPingPongFrame} message SdkPingPongFrame message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n SdkPingPongFrame.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n writer.uint32(/* id 1, wireType 0 =*/8).int32(message.type);\n writer.uint32(/* id 2, wireType 0 =*/16).uint32(message.pingId);\n return writer;\n };\n\n /**\n * Encodes the specified SdkPingPongFrame message, length delimited. Does not implicitly {@link SdkPingPongFrame.verify|verify} messages.\n * @function encodeDelimited\n * @memberof SdkPingPongFrame\n * @static\n * @param {ISdkPingPongFrame} message SdkPingPongFrame message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n SdkPingPongFrame.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a SdkPingPongFrame message from the specified reader or buffer.\n * @function decode\n * @memberof SdkPingPongFrame\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {SdkPingPongFrame} SdkPingPongFrame\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n SdkPingPongFrame.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.SdkPingPongFrame();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n message.type = reader.int32();\n break;\n }\n case 2: {\n message.pingId = reader.uint32();\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n if (!message.hasOwnProperty(\"type\"))\n throw $util.ProtocolError(\"missing required 'type'\", { instance: message });\n if (!message.hasOwnProperty(\"pingId\"))\n throw $util.ProtocolError(\"missing required 'pingId'\", { instance: message });\n return message;\n };\n\n /**\n * Decodes a SdkPingPongFrame message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof SdkPingPongFrame\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {SdkPingPongFrame} SdkPingPongFrame\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n SdkPingPongFrame.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a SdkPingPongFrame message.\n * @function verify\n * @memberof SdkPingPongFrame\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n SdkPingPongFrame.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n switch (message.type) {\n default:\n return \"type: enum value expected\";\n case 1:\n case 2:\n break;\n }\n if (!$util.isInteger(message.pingId))\n return \"pingId: integer expected\";\n return null;\n };\n\n /**\n * Creates a SdkPingPongFrame message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof SdkPingPongFrame\n * @static\n * @param {Object.} object Plain object\n * @returns {SdkPingPongFrame} SdkPingPongFrame\n */\n SdkPingPongFrame.fromObject = function fromObject(object) {\n if (object instanceof $root.SdkPingPongFrame)\n return object;\n var message = new $root.SdkPingPongFrame();\n switch (object.type) {\n default:\n if (typeof object.type === \"number\") {\n message.type = object.type;\n break;\n }\n break;\n case \"PING\":\n case 1:\n message.type = 1;\n break;\n case \"PONG\":\n case 2:\n message.type = 2;\n break;\n }\n if (object.pingId != null)\n message.pingId = object.pingId >>> 0;\n return message;\n };\n\n /**\n * Creates a plain object from a SdkPingPongFrame message. Also converts values to other types if specified.\n * @function toObject\n * @memberof SdkPingPongFrame\n * @static\n * @param {SdkPingPongFrame} message SdkPingPongFrame\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n SdkPingPongFrame.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.defaults) {\n object.type = options.enums === String ? \"PING\" : 1;\n object.pingId = 0;\n }\n if (message.type != null && message.hasOwnProperty(\"type\"))\n object.type = options.enums === String ? $root.SdkPingPongType[message.type] === undefined ? message.type : $root.SdkPingPongType[message.type] : message.type;\n if (message.pingId != null && message.hasOwnProperty(\"pingId\"))\n object.pingId = message.pingId;\n return object;\n };\n\n /**\n * Converts this SdkPingPongFrame to JSON.\n * @function toJSON\n * @memberof SdkPingPongFrame\n * @instance\n * @returns {Object.} JSON object\n */\n SdkPingPongFrame.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n /**\n * Gets the default type url for SdkPingPongFrame\n * @function getTypeUrl\n * @memberof SdkPingPongFrame\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n SdkPingPongFrame.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/SdkPingPongFrame\";\n };\n\n return SdkPingPongFrame;\n})();\n\n$root.SdkAudioStatusFrame = (function() {\n\n /**\n * Properties of a SdkAudioStatusFrame.\n * @name ISdkAudioStatusFrame\n * @interface ISdkAudioStatusFrame\n * @property {number|null} [audioStatus] SdkAudioStatusFrame audioStatus\n */\n\n /**\n * Constructs a new SdkAudioStatusFrame.\n * @name SdkAudioStatusFrame\n * @classdesc Represents a SdkAudioStatusFrame.\n * @implements ISdkAudioStatusFrame\n * @constructor\n * @param {ISdkAudioStatusFrame=} [properties] Properties to set\n */\n function SdkAudioStatusFrame(properties) {\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * SdkAudioStatusFrame audioStatus.\n * @member {number} audioStatus\n * @memberof SdkAudioStatusFrame\n * @instance\n */\n SdkAudioStatusFrame.prototype.audioStatus = 0;\n\n /**\n * Creates a new SdkAudioStatusFrame instance using the specified properties.\n * @function create\n * @memberof SdkAudioStatusFrame\n * @static\n * @param {ISdkAudioStatusFrame=} [properties] Properties to set\n * @returns {SdkAudioStatusFrame} SdkAudioStatusFrame instance\n */\n SdkAudioStatusFrame.create = function create(properties) {\n return new SdkAudioStatusFrame(properties);\n };\n\n /**\n * Encodes the specified SdkAudioStatusFrame message. Does not implicitly {@link SdkAudioStatusFrame.verify|verify} messages.\n * @function encode\n * @memberof SdkAudioStatusFrame\n * @static\n * @param {ISdkAudioStatusFrame} message SdkAudioStatusFrame message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n SdkAudioStatusFrame.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.audioStatus != null && Object.hasOwnProperty.call(message, \"audioStatus\"))\n writer.uint32(/* id 1, wireType 0 =*/8).uint32(message.audioStatus);\n return writer;\n };\n\n /**\n * Encodes the specified SdkAudioStatusFrame message, length delimited. Does not implicitly {@link SdkAudioStatusFrame.verify|verify} messages.\n * @function encodeDelimited\n * @memberof SdkAudioStatusFrame\n * @static\n * @param {ISdkAudioStatusFrame} message SdkAudioStatusFrame message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n SdkAudioStatusFrame.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a SdkAudioStatusFrame message from the specified reader or buffer.\n * @function decode\n * @memberof SdkAudioStatusFrame\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {SdkAudioStatusFrame} SdkAudioStatusFrame\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n SdkAudioStatusFrame.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.SdkAudioStatusFrame();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n message.audioStatus = reader.uint32();\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a SdkAudioStatusFrame message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof SdkAudioStatusFrame\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {SdkAudioStatusFrame} SdkAudioStatusFrame\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n SdkAudioStatusFrame.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a SdkAudioStatusFrame message.\n * @function verify\n * @memberof SdkAudioStatusFrame\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n SdkAudioStatusFrame.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.audioStatus != null && message.hasOwnProperty(\"audioStatus\"))\n if (!$util.isInteger(message.audioStatus))\n return \"audioStatus: integer expected\";\n return null;\n };\n\n /**\n * Creates a SdkAudioStatusFrame message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof SdkAudioStatusFrame\n * @static\n * @param {Object.} object Plain object\n * @returns {SdkAudioStatusFrame} SdkAudioStatusFrame\n */\n SdkAudioStatusFrame.fromObject = function fromObject(object) {\n if (object instanceof $root.SdkAudioStatusFrame)\n return object;\n var message = new $root.SdkAudioStatusFrame();\n if (object.audioStatus != null)\n message.audioStatus = object.audioStatus >>> 0;\n return message;\n };\n\n /**\n * Creates a plain object from a SdkAudioStatusFrame message. Also converts values to other types if specified.\n * @function toObject\n * @memberof SdkAudioStatusFrame\n * @static\n * @param {SdkAudioStatusFrame} message SdkAudioStatusFrame\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n SdkAudioStatusFrame.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.defaults)\n object.audioStatus = 0;\n if (message.audioStatus != null && message.hasOwnProperty(\"audioStatus\"))\n object.audioStatus = message.audioStatus;\n return object;\n };\n\n /**\n * Converts this SdkAudioStatusFrame to JSON.\n * @function toJSON\n * @memberof SdkAudioStatusFrame\n * @instance\n * @returns {Object.} JSON object\n */\n SdkAudioStatusFrame.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n /**\n * Gets the default type url for SdkAudioStatusFrame\n * @function getTypeUrl\n * @memberof SdkAudioStatusFrame\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n SdkAudioStatusFrame.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/SdkAudioStatusFrame\";\n };\n\n return SdkAudioStatusFrame;\n})();\n\n$root.SdkMetric = (function() {\n\n /**\n * Properties of a SdkMetric.\n * @name ISdkMetric\n * @interface ISdkMetric\n * @property {SdkMetric.Type|null} [type] SdkMetric type\n * @property {number|null} [value] SdkMetric value\n */\n\n /**\n * Constructs a new SdkMetric.\n * @name SdkMetric\n * @classdesc Represents a SdkMetric.\n * @implements ISdkMetric\n * @constructor\n * @param {ISdkMetric=} [properties] Properties to set\n */\n function SdkMetric(properties) {\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * SdkMetric type.\n * @member {SdkMetric.Type} type\n * @memberof SdkMetric\n * @instance\n */\n SdkMetric.prototype.type = 1;\n\n /**\n * SdkMetric value.\n * @member {number} value\n * @memberof SdkMetric\n * @instance\n */\n SdkMetric.prototype.value = 0;\n\n /**\n * Creates a new SdkMetric instance using the specified properties.\n * @function create\n * @memberof SdkMetric\n * @static\n * @param {ISdkMetric=} [properties] Properties to set\n * @returns {SdkMetric} SdkMetric instance\n */\n SdkMetric.create = function create(properties) {\n return new SdkMetric(properties);\n };\n\n /**\n * Encodes the specified SdkMetric message. Does not implicitly {@link SdkMetric.verify|verify} messages.\n * @function encode\n * @memberof SdkMetric\n * @static\n * @param {ISdkMetric} message SdkMetric message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n SdkMetric.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.type != null && Object.hasOwnProperty.call(message, \"type\"))\n writer.uint32(/* id 1, wireType 0 =*/8).int32(message.type);\n if (message.value != null && Object.hasOwnProperty.call(message, \"value\"))\n writer.uint32(/* id 2, wireType 1 =*/17).double(message.value);\n return writer;\n };\n\n /**\n * Encodes the specified SdkMetric message, length delimited. Does not implicitly {@link SdkMetric.verify|verify} messages.\n * @function encodeDelimited\n * @memberof SdkMetric\n * @static\n * @param {ISdkMetric} message SdkMetric message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n SdkMetric.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a SdkMetric message from the specified reader or buffer.\n * @function decode\n * @memberof SdkMetric\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {SdkMetric} SdkMetric\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n SdkMetric.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.SdkMetric();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n message.type = reader.int32();\n break;\n }\n case 2: {\n message.value = reader.double();\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a SdkMetric message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof SdkMetric\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {SdkMetric} SdkMetric\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n SdkMetric.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a SdkMetric message.\n * @function verify\n * @memberof SdkMetric\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n SdkMetric.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.type != null && message.hasOwnProperty(\"type\"))\n switch (message.type) {\n default:\n return \"type: enum value expected\";\n case 1:\n case 2:\n case 3:\n case 4:\n case 5:\n case 6:\n case 7:\n case 8:\n case 9:\n case 10:\n case 11:\n case 12:\n case 13:\n case 14:\n case 15:\n case 16:\n case 17:\n case 18:\n case 19:\n case 20:\n case 21:\n case 22:\n case 23:\n case 24:\n case 25:\n case 26:\n case 27:\n case 28:\n case 29:\n case 30:\n case 31:\n case 32:\n case 33:\n case 34:\n case 35:\n case 36:\n case 37:\n case 38:\n case 39:\n case 40:\n case 41:\n case 42:\n case 43:\n case 44:\n case 45:\n case 46:\n case 47:\n case 48:\n case 49:\n case 60:\n case 64:\n case 66:\n case 69:\n case 72:\n case 86:\n case 87:\n case 88:\n case 89:\n case 90:\n case 91:\n case 92:\n case 93:\n case 94:\n case 95:\n case 96:\n case 97:\n case 98:\n case 99:\n case 100:\n case 101:\n case 102:\n case 103:\n case 104:\n case 105:\n case 106:\n case 107:\n case 108:\n break;\n }\n if (message.value != null && message.hasOwnProperty(\"value\"))\n if (typeof message.value !== \"number\")\n return \"value: number expected\";\n return null;\n };\n\n /**\n * Creates a SdkMetric message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof SdkMetric\n * @static\n * @param {Object.} object Plain object\n * @returns {SdkMetric} SdkMetric\n */\n SdkMetric.fromObject = function fromObject(object) {\n if (object instanceof $root.SdkMetric)\n return object;\n var message = new $root.SdkMetric();\n switch (object.type) {\n default:\n if (typeof object.type === \"number\") {\n message.type = object.type;\n break;\n }\n break;\n case \"VIDEO_ACTUAL_ENCODER_BITRATE\":\n case 1:\n message.type = 1;\n break;\n case \"VIDEO_AVAILABLE_SEND_BANDWIDTH\":\n case 2:\n message.type = 2;\n break;\n case \"VIDEO_RETRANSMIT_BITRATE\":\n case 3:\n message.type = 3;\n break;\n case \"VIDEO_AVAILABLE_RECEIVE_BANDWIDTH\":\n case 4:\n message.type = 4;\n break;\n case \"VIDEO_TARGET_ENCODER_BITRATE\":\n case 5:\n message.type = 5;\n break;\n case \"VIDEO_BUCKET_DELAY_MS\":\n case 6:\n message.type = 6;\n break;\n case \"STUN_RTT_MS\":\n case 7:\n message.type = 7;\n break;\n case \"SOCKET_DISCARDED_PPS\":\n case 8:\n message.type = 8;\n break;\n case \"RTC_MIC_JITTER_MS\":\n case 9:\n message.type = 9;\n break;\n case \"RTC_MIC_PPS\":\n case 10:\n message.type = 10;\n break;\n case \"RTC_MIC_FRACTION_PACKET_LOST_PERCENT\":\n case 11:\n message.type = 11;\n break;\n case \"RTC_MIC_BITRATE\":\n case 12:\n message.type = 12;\n break;\n case \"RTC_MIC_RTT_MS\":\n case 13:\n message.type = 13;\n break;\n case \"RTC_SPK_PPS\":\n case 14:\n message.type = 14;\n break;\n case \"RTC_SPK_FRACTION_PACKET_LOST_PERCENT\":\n case 15:\n message.type = 15;\n break;\n case \"RTC_SPK_JITTER_MS\":\n case 16:\n message.type = 16;\n break;\n case \"RTC_SPK_FRACTION_DECODER_LOSS_PERCENT\":\n case 17:\n message.type = 17;\n break;\n case \"RTC_SPK_BITRATE\":\n case 18:\n message.type = 18;\n break;\n case \"RTC_SPK_CURRENT_DELAY_MS\":\n case 19:\n message.type = 19;\n break;\n case \"RTC_SPK_JITTER_BUFFER_MS\":\n case 20:\n message.type = 20;\n break;\n case \"VIDEO_SENT_RTT_MS\":\n case 21:\n message.type = 21;\n break;\n case \"VIDEO_ENCODE_USAGE_PERCENT\":\n case 22:\n message.type = 22;\n break;\n case \"VIDEO_NACKS_RECEIVED\":\n case 23:\n message.type = 23;\n break;\n case \"VIDEO_PLIS_RECEIVED\":\n case 24:\n message.type = 24;\n break;\n case \"VIDEO_ENCODE_MS\":\n case 25:\n message.type = 25;\n break;\n case \"VIDEO_INPUT_FPS\":\n case 26:\n message.type = 26;\n break;\n case \"VIDEO_ENCODE_FPS\":\n case 27:\n message.type = 27;\n break;\n case \"VIDEO_SENT_FPS\":\n case 28:\n message.type = 28;\n break;\n case \"VIDEO_FIRS_RECEIVED\":\n case 29:\n message.type = 29;\n break;\n case \"VIDEO_SENT_PPS\":\n case 30:\n message.type = 30;\n break;\n case \"VIDEO_SENT_FRACTION_PACKET_LOST_PERCENT\":\n case 31:\n message.type = 31;\n break;\n case \"VIDEO_SENT_BITRATE\":\n case 32:\n message.type = 32;\n break;\n case \"VIDEO_DROPPED_FPS\":\n case 33:\n message.type = 33;\n break;\n case \"VIDEO_TARGET_DELAY_MS\":\n case 34:\n message.type = 34;\n break;\n case \"VIDEO_DECODE_MS\":\n case 35:\n message.type = 35;\n break;\n case \"VIDEO_OUTPUT_FPS\":\n case 36:\n message.type = 36;\n break;\n case \"VIDEO_RECEIVED_PPS\":\n case 37:\n message.type = 37;\n break;\n case \"VIDEO_RECEIVED_FRACTION_PACKET_LOST_PERCENT\":\n case 38:\n message.type = 38;\n break;\n case \"VIDEO_RENDER_DELAY_MS\":\n case 39:\n message.type = 39;\n break;\n case \"VIDEO_RECEIVED_FPS\":\n case 40:\n message.type = 40;\n break;\n case \"VIDEO_DECODE_FPS\":\n case 41:\n message.type = 41;\n break;\n case \"VIDEO_NACKS_SENT\":\n case 42:\n message.type = 42;\n break;\n case \"VIDEO_FIRS_SENT\":\n case 43:\n message.type = 43;\n break;\n case \"VIDEO_RECEIVED_BITRATE\":\n case 44:\n message.type = 44;\n break;\n case \"VIDEO_CURRENT_DELAY_MS\":\n case 45:\n message.type = 45;\n break;\n case \"VIDEO_JITTER_BUFFER_MS\":\n case 46:\n message.type = 46;\n break;\n case \"VIDEO_DISCARDED_PPS\":\n case 47:\n message.type = 47;\n break;\n case \"VIDEO_PLIS_SENT\":\n case 48:\n message.type = 48;\n break;\n case \"VIDEO_RECEIVED_JITTER_MS\":\n case 49:\n message.type = 49;\n break;\n case \"VIDEO_INPUT_HEIGHT\":\n case 60:\n message.type = 60;\n break;\n case \"VIDEO_ENCODE_HEIGHT\":\n case 64:\n message.type = 64;\n break;\n case \"VIDEO_SENT_QP_SUM\":\n case 66:\n message.type = 66;\n break;\n case \"VIDEO_DECODE_HEIGHT\":\n case 69:\n message.type = 69;\n break;\n case \"VIDEO_RECEIVED_QP_SUM\":\n case 72:\n message.type = 72;\n break;\n case \"VIDEO_ENCODE_WIDTH\":\n case 86:\n message.type = 86;\n break;\n case \"VIDEO_DECODE_WIDTH\":\n case 87:\n message.type = 87;\n break;\n case \"VIDEO_ENCODER_IS_HARDWARE\":\n case 88:\n message.type = 88;\n break;\n case \"VIDEO_DECODER_IS_HARDWARE\":\n case 89:\n message.type = 89;\n break;\n case \"VIDEO_FREEZE_COUNT\":\n case 90:\n message.type = 90;\n break;\n case \"VIDEO_FREEZE_DURATION\":\n case 91:\n message.type = 91;\n break;\n case \"VIDEO_PAUSE_COUNT\":\n case 92:\n message.type = 92;\n break;\n case \"VIDEO_PAUSE_DURATION\":\n case 93:\n message.type = 93;\n break;\n case \"VIDEO_QUALITY_REASON\":\n case 94:\n message.type = 94;\n break;\n case \"VIDEO_PROCESSING_TIME\":\n case 95:\n message.type = 95;\n break;\n case \"RTC_SPK_AUDIO_LEVEL\":\n case 96:\n message.type = 96;\n break;\n case \"RTC_MIC_AUDIO_LEVEL\":\n case 97:\n message.type = 97;\n break;\n case \"RTC_SPK_TOTAL_LOST\":\n case 98:\n message.type = 98;\n break;\n case \"RTC_SPK_TOTAL_EXPECTED\":\n case 99:\n message.type = 99;\n break;\n case \"RTC_SPK_TOTAL_RECOVERED_RED\":\n case 100:\n message.type = 100;\n break;\n case \"RTC_SPK_TOTAL_RECOVERED_FEC\":\n case 101:\n message.type = 101;\n break;\n case \"VIDEO_QUALITY_LIMITATION_DURATION_CPU\":\n case 102:\n message.type = 102;\n break;\n case \"VIDEO_CODEC_DEGRADATION_HIGH_ENCODE_CPU\":\n case 103:\n message.type = 103;\n break;\n case \"VIDEO_CODEC_DEGRADATION_ENCODE_FAILURE\":\n case 104:\n message.type = 104;\n break;\n case \"VIDEO_RENDER_HEIGHT\":\n case 105:\n message.type = 105;\n break;\n case \"VIDEO_RENDER_WIDTH\":\n case 106:\n message.type = 106;\n break;\n case \"VIDEO_INPUT_WIDTH\":\n case 107:\n message.type = 107;\n break;\n case \"VIDEO_SENT_JITTER_MS\":\n case 108:\n message.type = 108;\n break;\n }\n if (object.value != null)\n message.value = Number(object.value);\n return message;\n };\n\n /**\n * Creates a plain object from a SdkMetric message. Also converts values to other types if specified.\n * @function toObject\n * @memberof SdkMetric\n * @static\n * @param {SdkMetric} message SdkMetric\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n SdkMetric.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.defaults) {\n object.type = options.enums === String ? \"VIDEO_ACTUAL_ENCODER_BITRATE\" : 1;\n object.value = 0;\n }\n if (message.type != null && message.hasOwnProperty(\"type\"))\n object.type = options.enums === String ? $root.SdkMetric.Type[message.type] === undefined ? message.type : $root.SdkMetric.Type[message.type] : message.type;\n if (message.value != null && message.hasOwnProperty(\"value\"))\n object.value = options.json && !isFinite(message.value) ? String(message.value) : message.value;\n return object;\n };\n\n /**\n * Converts this SdkMetric to JSON.\n * @function toJSON\n * @memberof SdkMetric\n * @instance\n * @returns {Object.} JSON object\n */\n SdkMetric.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n /**\n * Gets the default type url for SdkMetric\n * @function getTypeUrl\n * @memberof SdkMetric\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n SdkMetric.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/SdkMetric\";\n };\n\n /**\n * Type enum.\n * @name SdkMetric.Type\n * @enum {number}\n * @property {number} VIDEO_ACTUAL_ENCODER_BITRATE=1 VIDEO_ACTUAL_ENCODER_BITRATE value\n * @property {number} VIDEO_AVAILABLE_SEND_BANDWIDTH=2 VIDEO_AVAILABLE_SEND_BANDWIDTH value\n * @property {number} VIDEO_RETRANSMIT_BITRATE=3 VIDEO_RETRANSMIT_BITRATE value\n * @property {number} VIDEO_AVAILABLE_RECEIVE_BANDWIDTH=4 VIDEO_AVAILABLE_RECEIVE_BANDWIDTH value\n * @property {number} VIDEO_TARGET_ENCODER_BITRATE=5 VIDEO_TARGET_ENCODER_BITRATE value\n * @property {number} VIDEO_BUCKET_DELAY_MS=6 VIDEO_BUCKET_DELAY_MS value\n * @property {number} STUN_RTT_MS=7 STUN_RTT_MS value\n * @property {number} SOCKET_DISCARDED_PPS=8 SOCKET_DISCARDED_PPS value\n * @property {number} RTC_MIC_JITTER_MS=9 RTC_MIC_JITTER_MS value\n * @property {number} RTC_MIC_PPS=10 RTC_MIC_PPS value\n * @property {number} RTC_MIC_FRACTION_PACKET_LOST_PERCENT=11 RTC_MIC_FRACTION_PACKET_LOST_PERCENT value\n * @property {number} RTC_MIC_BITRATE=12 RTC_MIC_BITRATE value\n * @property {number} RTC_MIC_RTT_MS=13 RTC_MIC_RTT_MS value\n * @property {number} RTC_SPK_PPS=14 RTC_SPK_PPS value\n * @property {number} RTC_SPK_FRACTION_PACKET_LOST_PERCENT=15 RTC_SPK_FRACTION_PACKET_LOST_PERCENT value\n * @property {number} RTC_SPK_JITTER_MS=16 RTC_SPK_JITTER_MS value\n * @property {number} RTC_SPK_FRACTION_DECODER_LOSS_PERCENT=17 RTC_SPK_FRACTION_DECODER_LOSS_PERCENT value\n * @property {number} RTC_SPK_BITRATE=18 RTC_SPK_BITRATE value\n * @property {number} RTC_SPK_CURRENT_DELAY_MS=19 RTC_SPK_CURRENT_DELAY_MS value\n * @property {number} RTC_SPK_JITTER_BUFFER_MS=20 RTC_SPK_JITTER_BUFFER_MS value\n * @property {number} VIDEO_SENT_RTT_MS=21 VIDEO_SENT_RTT_MS value\n * @property {number} VIDEO_ENCODE_USAGE_PERCENT=22 VIDEO_ENCODE_USAGE_PERCENT value\n * @property {number} VIDEO_NACKS_RECEIVED=23 VIDEO_NACKS_RECEIVED value\n * @property {number} VIDEO_PLIS_RECEIVED=24 VIDEO_PLIS_RECEIVED value\n * @property {number} VIDEO_ENCODE_MS=25 VIDEO_ENCODE_MS value\n * @property {number} VIDEO_INPUT_FPS=26 VIDEO_INPUT_FPS value\n * @property {number} VIDEO_ENCODE_FPS=27 VIDEO_ENCODE_FPS value\n * @property {number} VIDEO_SENT_FPS=28 VIDEO_SENT_FPS value\n * @property {number} VIDEO_FIRS_RECEIVED=29 VIDEO_FIRS_RECEIVED value\n * @property {number} VIDEO_SENT_PPS=30 VIDEO_SENT_PPS value\n * @property {number} VIDEO_SENT_FRACTION_PACKET_LOST_PERCENT=31 VIDEO_SENT_FRACTION_PACKET_LOST_PERCENT value\n * @property {number} VIDEO_SENT_BITRATE=32 VIDEO_SENT_BITRATE value\n * @property {number} VIDEO_DROPPED_FPS=33 VIDEO_DROPPED_FPS value\n * @property {number} VIDEO_TARGET_DELAY_MS=34 VIDEO_TARGET_DELAY_MS value\n * @property {number} VIDEO_DECODE_MS=35 VIDEO_DECODE_MS value\n * @property {number} VIDEO_OUTPUT_FPS=36 VIDEO_OUTPUT_FPS value\n * @property {number} VIDEO_RECEIVED_PPS=37 VIDEO_RECEIVED_PPS value\n * @property {number} VIDEO_RECEIVED_FRACTION_PACKET_LOST_PERCENT=38 VIDEO_RECEIVED_FRACTION_PACKET_LOST_PERCENT value\n * @property {number} VIDEO_RENDER_DELAY_MS=39 VIDEO_RENDER_DELAY_MS value\n * @property {number} VIDEO_RECEIVED_FPS=40 VIDEO_RECEIVED_FPS value\n * @property {number} VIDEO_DECODE_FPS=41 VIDEO_DECODE_FPS value\n * @property {number} VIDEO_NACKS_SENT=42 VIDEO_NACKS_SENT value\n * @property {number} VIDEO_FIRS_SENT=43 VIDEO_FIRS_SENT value\n * @property {number} VIDEO_RECEIVED_BITRATE=44 VIDEO_RECEIVED_BITRATE value\n * @property {number} VIDEO_CURRENT_DELAY_MS=45 VIDEO_CURRENT_DELAY_MS value\n * @property {number} VIDEO_JITTER_BUFFER_MS=46 VIDEO_JITTER_BUFFER_MS value\n * @property {number} VIDEO_DISCARDED_PPS=47 VIDEO_DISCARDED_PPS value\n * @property {number} VIDEO_PLIS_SENT=48 VIDEO_PLIS_SENT value\n * @property {number} VIDEO_RECEIVED_JITTER_MS=49 VIDEO_RECEIVED_JITTER_MS value\n * @property {number} VIDEO_INPUT_HEIGHT=60 VIDEO_INPUT_HEIGHT value\n * @property {number} VIDEO_ENCODE_HEIGHT=64 VIDEO_ENCODE_HEIGHT value\n * @property {number} VIDEO_SENT_QP_SUM=66 VIDEO_SENT_QP_SUM value\n * @property {number} VIDEO_DECODE_HEIGHT=69 VIDEO_DECODE_HEIGHT value\n * @property {number} VIDEO_RECEIVED_QP_SUM=72 VIDEO_RECEIVED_QP_SUM value\n * @property {number} VIDEO_ENCODE_WIDTH=86 VIDEO_ENCODE_WIDTH value\n * @property {number} VIDEO_DECODE_WIDTH=87 VIDEO_DECODE_WIDTH value\n * @property {number} VIDEO_ENCODER_IS_HARDWARE=88 VIDEO_ENCODER_IS_HARDWARE value\n * @property {number} VIDEO_DECODER_IS_HARDWARE=89 VIDEO_DECODER_IS_HARDWARE value\n * @property {number} VIDEO_FREEZE_COUNT=90 VIDEO_FREEZE_COUNT value\n * @property {number} VIDEO_FREEZE_DURATION=91 VIDEO_FREEZE_DURATION value\n * @property {number} VIDEO_PAUSE_COUNT=92 VIDEO_PAUSE_COUNT value\n * @property {number} VIDEO_PAUSE_DURATION=93 VIDEO_PAUSE_DURATION value\n * @property {number} VIDEO_QUALITY_REASON=94 VIDEO_QUALITY_REASON value\n * @property {number} VIDEO_PROCESSING_TIME=95 VIDEO_PROCESSING_TIME value\n * @property {number} RTC_SPK_AUDIO_LEVEL=96 RTC_SPK_AUDIO_LEVEL value\n * @property {number} RTC_MIC_AUDIO_LEVEL=97 RTC_MIC_AUDIO_LEVEL value\n * @property {number} RTC_SPK_TOTAL_LOST=98 RTC_SPK_TOTAL_LOST value\n * @property {number} RTC_SPK_TOTAL_EXPECTED=99 RTC_SPK_TOTAL_EXPECTED value\n * @property {number} RTC_SPK_TOTAL_RECOVERED_RED=100 RTC_SPK_TOTAL_RECOVERED_RED value\n * @property {number} RTC_SPK_TOTAL_RECOVERED_FEC=101 RTC_SPK_TOTAL_RECOVERED_FEC value\n * @property {number} VIDEO_QUALITY_LIMITATION_DURATION_CPU=102 VIDEO_QUALITY_LIMITATION_DURATION_CPU value\n * @property {number} VIDEO_CODEC_DEGRADATION_HIGH_ENCODE_CPU=103 VIDEO_CODEC_DEGRADATION_HIGH_ENCODE_CPU value\n * @property {number} VIDEO_CODEC_DEGRADATION_ENCODE_FAILURE=104 VIDEO_CODEC_DEGRADATION_ENCODE_FAILURE value\n * @property {number} VIDEO_RENDER_HEIGHT=105 VIDEO_RENDER_HEIGHT value\n * @property {number} VIDEO_RENDER_WIDTH=106 VIDEO_RENDER_WIDTH value\n * @property {number} VIDEO_INPUT_WIDTH=107 VIDEO_INPUT_WIDTH value\n * @property {number} VIDEO_SENT_JITTER_MS=108 VIDEO_SENT_JITTER_MS value\n */\n SdkMetric.Type = (function() {\n var valuesById = {}, values = Object.create(valuesById);\n values[valuesById[1] = \"VIDEO_ACTUAL_ENCODER_BITRATE\"] = 1;\n values[valuesById[2] = \"VIDEO_AVAILABLE_SEND_BANDWIDTH\"] = 2;\n values[valuesById[3] = \"VIDEO_RETRANSMIT_BITRATE\"] = 3;\n values[valuesById[4] = \"VIDEO_AVAILABLE_RECEIVE_BANDWIDTH\"] = 4;\n values[valuesById[5] = \"VIDEO_TARGET_ENCODER_BITRATE\"] = 5;\n values[valuesById[6] = \"VIDEO_BUCKET_DELAY_MS\"] = 6;\n values[valuesById[7] = \"STUN_RTT_MS\"] = 7;\n values[valuesById[8] = \"SOCKET_DISCARDED_PPS\"] = 8;\n values[valuesById[9] = \"RTC_MIC_JITTER_MS\"] = 9;\n values[valuesById[10] = \"RTC_MIC_PPS\"] = 10;\n values[valuesById[11] = \"RTC_MIC_FRACTION_PACKET_LOST_PERCENT\"] = 11;\n values[valuesById[12] = \"RTC_MIC_BITRATE\"] = 12;\n values[valuesById[13] = \"RTC_MIC_RTT_MS\"] = 13;\n values[valuesById[14] = \"RTC_SPK_PPS\"] = 14;\n values[valuesById[15] = \"RTC_SPK_FRACTION_PACKET_LOST_PERCENT\"] = 15;\n values[valuesById[16] = \"RTC_SPK_JITTER_MS\"] = 16;\n values[valuesById[17] = \"RTC_SPK_FRACTION_DECODER_LOSS_PERCENT\"] = 17;\n values[valuesById[18] = \"RTC_SPK_BITRATE\"] = 18;\n values[valuesById[19] = \"RTC_SPK_CURRENT_DELAY_MS\"] = 19;\n values[valuesById[20] = \"RTC_SPK_JITTER_BUFFER_MS\"] = 20;\n values[valuesById[21] = \"VIDEO_SENT_RTT_MS\"] = 21;\n values[valuesById[22] = \"VIDEO_ENCODE_USAGE_PERCENT\"] = 22;\n values[valuesById[23] = \"VIDEO_NACKS_RECEIVED\"] = 23;\n values[valuesById[24] = \"VIDEO_PLIS_RECEIVED\"] = 24;\n values[valuesById[25] = \"VIDEO_ENCODE_MS\"] = 25;\n values[valuesById[26] = \"VIDEO_INPUT_FPS\"] = 26;\n values[valuesById[27] = \"VIDEO_ENCODE_FPS\"] = 27;\n values[valuesById[28] = \"VIDEO_SENT_FPS\"] = 28;\n values[valuesById[29] = \"VIDEO_FIRS_RECEIVED\"] = 29;\n values[valuesById[30] = \"VIDEO_SENT_PPS\"] = 30;\n values[valuesById[31] = \"VIDEO_SENT_FRACTION_PACKET_LOST_PERCENT\"] = 31;\n values[valuesById[32] = \"VIDEO_SENT_BITRATE\"] = 32;\n values[valuesById[33] = \"VIDEO_DROPPED_FPS\"] = 33;\n values[valuesById[34] = \"VIDEO_TARGET_DELAY_MS\"] = 34;\n values[valuesById[35] = \"VIDEO_DECODE_MS\"] = 35;\n values[valuesById[36] = \"VIDEO_OUTPUT_FPS\"] = 36;\n values[valuesById[37] = \"VIDEO_RECEIVED_PPS\"] = 37;\n values[valuesById[38] = \"VIDEO_RECEIVED_FRACTION_PACKET_LOST_PERCENT\"] = 38;\n values[valuesById[39] = \"VIDEO_RENDER_DELAY_MS\"] = 39;\n values[valuesById[40] = \"VIDEO_RECEIVED_FPS\"] = 40;\n values[valuesById[41] = \"VIDEO_DECODE_FPS\"] = 41;\n values[valuesById[42] = \"VIDEO_NACKS_SENT\"] = 42;\n values[valuesById[43] = \"VIDEO_FIRS_SENT\"] = 43;\n values[valuesById[44] = \"VIDEO_RECEIVED_BITRATE\"] = 44;\n values[valuesById[45] = \"VIDEO_CURRENT_DELAY_MS\"] = 45;\n values[valuesById[46] = \"VIDEO_JITTER_BUFFER_MS\"] = 46;\n values[valuesById[47] = \"VIDEO_DISCARDED_PPS\"] = 47;\n values[valuesById[48] = \"VIDEO_PLIS_SENT\"] = 48;\n values[valuesById[49] = \"VIDEO_RECEIVED_JITTER_MS\"] = 49;\n values[valuesById[60] = \"VIDEO_INPUT_HEIGHT\"] = 60;\n values[valuesById[64] = \"VIDEO_ENCODE_HEIGHT\"] = 64;\n values[valuesById[66] = \"VIDEO_SENT_QP_SUM\"] = 66;\n values[valuesById[69] = \"VIDEO_DECODE_HEIGHT\"] = 69;\n values[valuesById[72] = \"VIDEO_RECEIVED_QP_SUM\"] = 72;\n values[valuesById[86] = \"VIDEO_ENCODE_WIDTH\"] = 86;\n values[valuesById[87] = \"VIDEO_DECODE_WIDTH\"] = 87;\n values[valuesById[88] = \"VIDEO_ENCODER_IS_HARDWARE\"] = 88;\n values[valuesById[89] = \"VIDEO_DECODER_IS_HARDWARE\"] = 89;\n values[valuesById[90] = \"VIDEO_FREEZE_COUNT\"] = 90;\n values[valuesById[91] = \"VIDEO_FREEZE_DURATION\"] = 91;\n values[valuesById[92] = \"VIDEO_PAUSE_COUNT\"] = 92;\n values[valuesById[93] = \"VIDEO_PAUSE_DURATION\"] = 93;\n values[valuesById[94] = \"VIDEO_QUALITY_REASON\"] = 94;\n values[valuesById[95] = \"VIDEO_PROCESSING_TIME\"] = 95;\n values[valuesById[96] = \"RTC_SPK_AUDIO_LEVEL\"] = 96;\n values[valuesById[97] = \"RTC_MIC_AUDIO_LEVEL\"] = 97;\n values[valuesById[98] = \"RTC_SPK_TOTAL_LOST\"] = 98;\n values[valuesById[99] = \"RTC_SPK_TOTAL_EXPECTED\"] = 99;\n values[valuesById[100] = \"RTC_SPK_TOTAL_RECOVERED_RED\"] = 100;\n values[valuesById[101] = \"RTC_SPK_TOTAL_RECOVERED_FEC\"] = 101;\n values[valuesById[102] = \"VIDEO_QUALITY_LIMITATION_DURATION_CPU\"] = 102;\n values[valuesById[103] = \"VIDEO_CODEC_DEGRADATION_HIGH_ENCODE_CPU\"] = 103;\n values[valuesById[104] = \"VIDEO_CODEC_DEGRADATION_ENCODE_FAILURE\"] = 104;\n values[valuesById[105] = \"VIDEO_RENDER_HEIGHT\"] = 105;\n values[valuesById[106] = \"VIDEO_RENDER_WIDTH\"] = 106;\n values[valuesById[107] = \"VIDEO_INPUT_WIDTH\"] = 107;\n values[valuesById[108] = \"VIDEO_SENT_JITTER_MS\"] = 108;\n return values;\n })();\n\n return SdkMetric;\n})();\n\n$root.SdkStreamMetricFrame = (function() {\n\n /**\n * Properties of a SdkStreamMetricFrame.\n * @name ISdkStreamMetricFrame\n * @interface ISdkStreamMetricFrame\n * @property {number|null} [streamId] SdkStreamMetricFrame streamId\n * @property {number|null} [groupId] SdkStreamMetricFrame groupId\n * @property {Array.|null} [metrics] SdkStreamMetricFrame metrics\n * @property {Array.|null} [dimensions] SdkStreamMetricFrame dimensions\n * @property {SdkStreamMediaType|null} [mediaType] SdkStreamMetricFrame mediaType\n */\n\n /**\n * Constructs a new SdkStreamMetricFrame.\n * @name SdkStreamMetricFrame\n * @classdesc Represents a SdkStreamMetricFrame.\n * @implements ISdkStreamMetricFrame\n * @constructor\n * @param {ISdkStreamMetricFrame=} [properties] Properties to set\n */\n function SdkStreamMetricFrame(properties) {\n this.metrics = [];\n this.dimensions = [];\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * SdkStreamMetricFrame streamId.\n * @member {number} streamId\n * @memberof SdkStreamMetricFrame\n * @instance\n */\n SdkStreamMetricFrame.prototype.streamId = 0;\n\n /**\n * SdkStreamMetricFrame groupId.\n * @member {number} groupId\n * @memberof SdkStreamMetricFrame\n * @instance\n */\n SdkStreamMetricFrame.prototype.groupId = 0;\n\n /**\n * SdkStreamMetricFrame metrics.\n * @member {Array.} metrics\n * @memberof SdkStreamMetricFrame\n * @instance\n */\n SdkStreamMetricFrame.prototype.metrics = $util.emptyArray;\n\n /**\n * SdkStreamMetricFrame dimensions.\n * @member {Array.} dimensions\n * @memberof SdkStreamMetricFrame\n * @instance\n */\n SdkStreamMetricFrame.prototype.dimensions = $util.emptyArray;\n\n /**\n * SdkStreamMetricFrame mediaType.\n * @member {SdkStreamMediaType} mediaType\n * @memberof SdkStreamMetricFrame\n * @instance\n */\n SdkStreamMetricFrame.prototype.mediaType = 1;\n\n /**\n * Creates a new SdkStreamMetricFrame instance using the specified properties.\n * @function create\n * @memberof SdkStreamMetricFrame\n * @static\n * @param {ISdkStreamMetricFrame=} [properties] Properties to set\n * @returns {SdkStreamMetricFrame} SdkStreamMetricFrame instance\n */\n SdkStreamMetricFrame.create = function create(properties) {\n return new SdkStreamMetricFrame(properties);\n };\n\n /**\n * Encodes the specified SdkStreamMetricFrame message. Does not implicitly {@link SdkStreamMetricFrame.verify|verify} messages.\n * @function encode\n * @memberof SdkStreamMetricFrame\n * @static\n * @param {ISdkStreamMetricFrame} message SdkStreamMetricFrame message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n SdkStreamMetricFrame.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.streamId != null && Object.hasOwnProperty.call(message, \"streamId\"))\n writer.uint32(/* id 3, wireType 0 =*/24).uint32(message.streamId);\n if (message.groupId != null && Object.hasOwnProperty.call(message, \"groupId\"))\n writer.uint32(/* id 4, wireType 0 =*/32).uint32(message.groupId);\n if (message.metrics != null && message.metrics.length)\n for (var i = 0; i < message.metrics.length; ++i)\n $root.SdkMetric.encode(message.metrics[i], writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim();\n if (message.dimensions != null && message.dimensions.length)\n for (var i = 0; i < message.dimensions.length; ++i)\n $root.SdkStreamDimension.encode(message.dimensions[i], writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim();\n if (message.mediaType != null && Object.hasOwnProperty.call(message, \"mediaType\"))\n writer.uint32(/* id 7, wireType 0 =*/56).int32(message.mediaType);\n return writer;\n };\n\n /**\n * Encodes the specified SdkStreamMetricFrame message, length delimited. Does not implicitly {@link SdkStreamMetricFrame.verify|verify} messages.\n * @function encodeDelimited\n * @memberof SdkStreamMetricFrame\n * @static\n * @param {ISdkStreamMetricFrame} message SdkStreamMetricFrame message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n SdkStreamMetricFrame.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a SdkStreamMetricFrame message from the specified reader or buffer.\n * @function decode\n * @memberof SdkStreamMetricFrame\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {SdkStreamMetricFrame} SdkStreamMetricFrame\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n SdkStreamMetricFrame.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.SdkStreamMetricFrame();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 3: {\n message.streamId = reader.uint32();\n break;\n }\n case 4: {\n message.groupId = reader.uint32();\n break;\n }\n case 5: {\n if (!(message.metrics && message.metrics.length))\n message.metrics = [];\n message.metrics.push($root.SdkMetric.decode(reader, reader.uint32()));\n break;\n }\n case 6: {\n if (!(message.dimensions && message.dimensions.length))\n message.dimensions = [];\n message.dimensions.push($root.SdkStreamDimension.decode(reader, reader.uint32()));\n break;\n }\n case 7: {\n message.mediaType = reader.int32();\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a SdkStreamMetricFrame message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof SdkStreamMetricFrame\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {SdkStreamMetricFrame} SdkStreamMetricFrame\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n SdkStreamMetricFrame.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a SdkStreamMetricFrame message.\n * @function verify\n * @memberof SdkStreamMetricFrame\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n SdkStreamMetricFrame.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.streamId != null && message.hasOwnProperty(\"streamId\"))\n if (!$util.isInteger(message.streamId))\n return \"streamId: integer expected\";\n if (message.groupId != null && message.hasOwnProperty(\"groupId\"))\n if (!$util.isInteger(message.groupId))\n return \"groupId: integer expected\";\n if (message.metrics != null && message.hasOwnProperty(\"metrics\")) {\n if (!Array.isArray(message.metrics))\n return \"metrics: array expected\";\n for (var i = 0; i < message.metrics.length; ++i) {\n var error = $root.SdkMetric.verify(message.metrics[i]);\n if (error)\n return \"metrics.\" + error;\n }\n }\n if (message.dimensions != null && message.hasOwnProperty(\"dimensions\")) {\n if (!Array.isArray(message.dimensions))\n return \"dimensions: array expected\";\n for (var i = 0; i < message.dimensions.length; ++i) {\n var error = $root.SdkStreamDimension.verify(message.dimensions[i]);\n if (error)\n return \"dimensions.\" + error;\n }\n }\n if (message.mediaType != null && message.hasOwnProperty(\"mediaType\"))\n switch (message.mediaType) {\n default:\n return \"mediaType: enum value expected\";\n case 1:\n case 2:\n break;\n }\n return null;\n };\n\n /**\n * Creates a SdkStreamMetricFrame message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof SdkStreamMetricFrame\n * @static\n * @param {Object.} object Plain object\n * @returns {SdkStreamMetricFrame} SdkStreamMetricFrame\n */\n SdkStreamMetricFrame.fromObject = function fromObject(object) {\n if (object instanceof $root.SdkStreamMetricFrame)\n return object;\n var message = new $root.SdkStreamMetricFrame();\n if (object.streamId != null)\n message.streamId = object.streamId >>> 0;\n if (object.groupId != null)\n message.groupId = object.groupId >>> 0;\n if (object.metrics) {\n if (!Array.isArray(object.metrics))\n throw TypeError(\".SdkStreamMetricFrame.metrics: array expected\");\n message.metrics = [];\n for (var i = 0; i < object.metrics.length; ++i) {\n if (typeof object.metrics[i] !== \"object\")\n throw TypeError(\".SdkStreamMetricFrame.metrics: object expected\");\n message.metrics[i] = $root.SdkMetric.fromObject(object.metrics[i]);\n }\n }\n if (object.dimensions) {\n if (!Array.isArray(object.dimensions))\n throw TypeError(\".SdkStreamMetricFrame.dimensions: array expected\");\n message.dimensions = [];\n for (var i = 0; i < object.dimensions.length; ++i) {\n if (typeof object.dimensions[i] !== \"object\")\n throw TypeError(\".SdkStreamMetricFrame.dimensions: object expected\");\n message.dimensions[i] = $root.SdkStreamDimension.fromObject(object.dimensions[i]);\n }\n }\n switch (object.mediaType) {\n default:\n if (typeof object.mediaType === \"number\") {\n message.mediaType = object.mediaType;\n break;\n }\n break;\n case \"AUDIO\":\n case 1:\n message.mediaType = 1;\n break;\n case \"VIDEO\":\n case 2:\n message.mediaType = 2;\n break;\n }\n return message;\n };\n\n /**\n * Creates a plain object from a SdkStreamMetricFrame message. Also converts values to other types if specified.\n * @function toObject\n * @memberof SdkStreamMetricFrame\n * @static\n * @param {SdkStreamMetricFrame} message SdkStreamMetricFrame\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n SdkStreamMetricFrame.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.arrays || options.defaults) {\n object.metrics = [];\n object.dimensions = [];\n }\n if (options.defaults) {\n object.streamId = 0;\n object.groupId = 0;\n object.mediaType = options.enums === String ? \"AUDIO\" : 1;\n }\n if (message.streamId != null && message.hasOwnProperty(\"streamId\"))\n object.streamId = message.streamId;\n if (message.groupId != null && message.hasOwnProperty(\"groupId\"))\n object.groupId = message.groupId;\n if (message.metrics && message.metrics.length) {\n object.metrics = [];\n for (var j = 0; j < message.metrics.length; ++j)\n object.metrics[j] = $root.SdkMetric.toObject(message.metrics[j], options);\n }\n if (message.dimensions && message.dimensions.length) {\n object.dimensions = [];\n for (var j = 0; j < message.dimensions.length; ++j)\n object.dimensions[j] = $root.SdkStreamDimension.toObject(message.dimensions[j], options);\n }\n if (message.mediaType != null && message.hasOwnProperty(\"mediaType\"))\n object.mediaType = options.enums === String ? $root.SdkStreamMediaType[message.mediaType] === undefined ? message.mediaType : $root.SdkStreamMediaType[message.mediaType] : message.mediaType;\n return object;\n };\n\n /**\n * Converts this SdkStreamMetricFrame to JSON.\n * @function toJSON\n * @memberof SdkStreamMetricFrame\n * @instance\n * @returns {Object.} JSON object\n */\n SdkStreamMetricFrame.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n /**\n * Gets the default type url for SdkStreamMetricFrame\n * @function getTypeUrl\n * @memberof SdkStreamMetricFrame\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n SdkStreamMetricFrame.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/SdkStreamMetricFrame\";\n };\n\n return SdkStreamMetricFrame;\n})();\n\n$root.SdkClientMetricFrame = (function() {\n\n /**\n * Properties of a SdkClientMetricFrame.\n * @name ISdkClientMetricFrame\n * @interface ISdkClientMetricFrame\n * @property {Array.|null} [globalMetrics] SdkClientMetricFrame globalMetrics\n * @property {Array.|null} [streamMetricFrames] SdkClientMetricFrame streamMetricFrames\n */\n\n /**\n * Constructs a new SdkClientMetricFrame.\n * @name SdkClientMetricFrame\n * @classdesc Represents a SdkClientMetricFrame.\n * @implements ISdkClientMetricFrame\n * @constructor\n * @param {ISdkClientMetricFrame=} [properties] Properties to set\n */\n function SdkClientMetricFrame(properties) {\n this.globalMetrics = [];\n this.streamMetricFrames = [];\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * SdkClientMetricFrame globalMetrics.\n * @member {Array.} globalMetrics\n * @memberof SdkClientMetricFrame\n * @instance\n */\n SdkClientMetricFrame.prototype.globalMetrics = $util.emptyArray;\n\n /**\n * SdkClientMetricFrame streamMetricFrames.\n * @member {Array.} streamMetricFrames\n * @memberof SdkClientMetricFrame\n * @instance\n */\n SdkClientMetricFrame.prototype.streamMetricFrames = $util.emptyArray;\n\n /**\n * Creates a new SdkClientMetricFrame instance using the specified properties.\n * @function create\n * @memberof SdkClientMetricFrame\n * @static\n * @param {ISdkClientMetricFrame=} [properties] Properties to set\n * @returns {SdkClientMetricFrame} SdkClientMetricFrame instance\n */\n SdkClientMetricFrame.create = function create(properties) {\n return new SdkClientMetricFrame(properties);\n };\n\n /**\n * Encodes the specified SdkClientMetricFrame message. Does not implicitly {@link SdkClientMetricFrame.verify|verify} messages.\n * @function encode\n * @memberof SdkClientMetricFrame\n * @static\n * @param {ISdkClientMetricFrame} message SdkClientMetricFrame message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n SdkClientMetricFrame.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.globalMetrics != null && message.globalMetrics.length)\n for (var i = 0; i < message.globalMetrics.length; ++i)\n $root.SdkMetric.encode(message.globalMetrics[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();\n if (message.streamMetricFrames != null && message.streamMetricFrames.length)\n for (var i = 0; i < message.streamMetricFrames.length; ++i)\n $root.SdkStreamMetricFrame.encode(message.streamMetricFrames[i], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();\n return writer;\n };\n\n /**\n * Encodes the specified SdkClientMetricFrame message, length delimited. Does not implicitly {@link SdkClientMetricFrame.verify|verify} messages.\n * @function encodeDelimited\n * @memberof SdkClientMetricFrame\n * @static\n * @param {ISdkClientMetricFrame} message SdkClientMetricFrame message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n SdkClientMetricFrame.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a SdkClientMetricFrame message from the specified reader or buffer.\n * @function decode\n * @memberof SdkClientMetricFrame\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {SdkClientMetricFrame} SdkClientMetricFrame\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n SdkClientMetricFrame.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.SdkClientMetricFrame();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (!(message.globalMetrics && message.globalMetrics.length))\n message.globalMetrics = [];\n message.globalMetrics.push($root.SdkMetric.decode(reader, reader.uint32()));\n break;\n }\n case 2: {\n if (!(message.streamMetricFrames && message.streamMetricFrames.length))\n message.streamMetricFrames = [];\n message.streamMetricFrames.push($root.SdkStreamMetricFrame.decode(reader, reader.uint32()));\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a SdkClientMetricFrame message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof SdkClientMetricFrame\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {SdkClientMetricFrame} SdkClientMetricFrame\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n SdkClientMetricFrame.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a SdkClientMetricFrame message.\n * @function verify\n * @memberof SdkClientMetricFrame\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n SdkClientMetricFrame.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.globalMetrics != null && message.hasOwnProperty(\"globalMetrics\")) {\n if (!Array.isArray(message.globalMetrics))\n return \"globalMetrics: array expected\";\n for (var i = 0; i < message.globalMetrics.length; ++i) {\n var error = $root.SdkMetric.verify(message.globalMetrics[i]);\n if (error)\n return \"globalMetrics.\" + error;\n }\n }\n if (message.streamMetricFrames != null && message.hasOwnProperty(\"streamMetricFrames\")) {\n if (!Array.isArray(message.streamMetricFrames))\n return \"streamMetricFrames: array expected\";\n for (var i = 0; i < message.streamMetricFrames.length; ++i) {\n var error = $root.SdkStreamMetricFrame.verify(message.streamMetricFrames[i]);\n if (error)\n return \"streamMetricFrames.\" + error;\n }\n }\n return null;\n };\n\n /**\n * Creates a SdkClientMetricFrame message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof SdkClientMetricFrame\n * @static\n * @param {Object.} object Plain object\n * @returns {SdkClientMetricFrame} SdkClientMetricFrame\n */\n SdkClientMetricFrame.fromObject = function fromObject(object) {\n if (object instanceof $root.SdkClientMetricFrame)\n return object;\n var message = new $root.SdkClientMetricFrame();\n if (object.globalMetrics) {\n if (!Array.isArray(object.globalMetrics))\n throw TypeError(\".SdkClientMetricFrame.globalMetrics: array expected\");\n message.globalMetrics = [];\n for (var i = 0; i < object.globalMetrics.length; ++i) {\n if (typeof object.globalMetrics[i] !== \"object\")\n throw TypeError(\".SdkClientMetricFrame.globalMetrics: object expected\");\n message.globalMetrics[i] = $root.SdkMetric.fromObject(object.globalMetrics[i]);\n }\n }\n if (object.streamMetricFrames) {\n if (!Array.isArray(object.streamMetricFrames))\n throw TypeError(\".SdkClientMetricFrame.streamMetricFrames: array expected\");\n message.streamMetricFrames = [];\n for (var i = 0; i < object.streamMetricFrames.length; ++i) {\n if (typeof object.streamMetricFrames[i] !== \"object\")\n throw TypeError(\".SdkClientMetricFrame.streamMetricFrames: object expected\");\n message.streamMetricFrames[i] = $root.SdkStreamMetricFrame.fromObject(object.streamMetricFrames[i]);\n }\n }\n return message;\n };\n\n /**\n * Creates a plain object from a SdkClientMetricFrame message. Also converts values to other types if specified.\n * @function toObject\n * @memberof SdkClientMetricFrame\n * @static\n * @param {SdkClientMetricFrame} message SdkClientMetricFrame\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n SdkClientMetricFrame.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.arrays || options.defaults) {\n object.globalMetrics = [];\n object.streamMetricFrames = [];\n }\n if (message.globalMetrics && message.globalMetrics.length) {\n object.globalMetrics = [];\n for (var j = 0; j < message.globalMetrics.length; ++j)\n object.globalMetrics[j] = $root.SdkMetric.toObject(message.globalMetrics[j], options);\n }\n if (message.streamMetricFrames && message.streamMetricFrames.length) {\n object.streamMetricFrames = [];\n for (var j = 0; j < message.streamMetricFrames.length; ++j)\n object.streamMetricFrames[j] = $root.SdkStreamMetricFrame.toObject(message.streamMetricFrames[j], options);\n }\n return object;\n };\n\n /**\n * Converts this SdkClientMetricFrame to JSON.\n * @function toJSON\n * @memberof SdkClientMetricFrame\n * @instance\n * @returns {Object.} JSON object\n */\n SdkClientMetricFrame.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n /**\n * Gets the default type url for SdkClientMetricFrame\n * @function getTypeUrl\n * @memberof SdkClientMetricFrame\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n SdkClientMetricFrame.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/SdkClientMetricFrame\";\n };\n\n return SdkClientMetricFrame;\n})();\n\n$root.SdkStreamDimension = (function() {\n\n /**\n * Properties of a SdkStreamDimension.\n * @name ISdkStreamDimension\n * @interface ISdkStreamDimension\n * @property {SdkStreamDimension.Type|null} [type] SdkStreamDimension type\n * @property {ISdkDimensionValue|null} [value] SdkStreamDimension value\n */\n\n /**\n * Constructs a new SdkStreamDimension.\n * @name SdkStreamDimension\n * @classdesc Represents a SdkStreamDimension.\n * @implements ISdkStreamDimension\n * @constructor\n * @param {ISdkStreamDimension=} [properties] Properties to set\n */\n function SdkStreamDimension(properties) {\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * SdkStreamDimension type.\n * @member {SdkStreamDimension.Type} type\n * @memberof SdkStreamDimension\n * @instance\n */\n SdkStreamDimension.prototype.type = 1;\n\n /**\n * SdkStreamDimension value.\n * @member {ISdkDimensionValue|null|undefined} value\n * @memberof SdkStreamDimension\n * @instance\n */\n SdkStreamDimension.prototype.value = null;\n\n /**\n * Creates a new SdkStreamDimension instance using the specified properties.\n * @function create\n * @memberof SdkStreamDimension\n * @static\n * @param {ISdkStreamDimension=} [properties] Properties to set\n * @returns {SdkStreamDimension} SdkStreamDimension instance\n */\n SdkStreamDimension.create = function create(properties) {\n return new SdkStreamDimension(properties);\n };\n\n /**\n * Encodes the specified SdkStreamDimension message. Does not implicitly {@link SdkStreamDimension.verify|verify} messages.\n * @function encode\n * @memberof SdkStreamDimension\n * @static\n * @param {ISdkStreamDimension} message SdkStreamDimension message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n SdkStreamDimension.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.type != null && Object.hasOwnProperty.call(message, \"type\"))\n writer.uint32(/* id 1, wireType 0 =*/8).int32(message.type);\n if (message.value != null && Object.hasOwnProperty.call(message, \"value\"))\n $root.SdkDimensionValue.encode(message.value, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();\n return writer;\n };\n\n /**\n * Encodes the specified SdkStreamDimension message, length delimited. Does not implicitly {@link SdkStreamDimension.verify|verify} messages.\n * @function encodeDelimited\n * @memberof SdkStreamDimension\n * @static\n * @param {ISdkStreamDimension} message SdkStreamDimension message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n SdkStreamDimension.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a SdkStreamDimension message from the specified reader or buffer.\n * @function decode\n * @memberof SdkStreamDimension\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {SdkStreamDimension} SdkStreamDimension\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n SdkStreamDimension.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.SdkStreamDimension();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n message.type = reader.int32();\n break;\n }\n case 2: {\n message.value = $root.SdkDimensionValue.decode(reader, reader.uint32());\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a SdkStreamDimension message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof SdkStreamDimension\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {SdkStreamDimension} SdkStreamDimension\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n SdkStreamDimension.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a SdkStreamDimension message.\n * @function verify\n * @memberof SdkStreamDimension\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n SdkStreamDimension.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.type != null && message.hasOwnProperty(\"type\"))\n switch (message.type) {\n default:\n return \"type: enum value expected\";\n case 1:\n case 2:\n break;\n }\n if (message.value != null && message.hasOwnProperty(\"value\")) {\n var error = $root.SdkDimensionValue.verify(message.value);\n if (error)\n return \"value.\" + error;\n }\n return null;\n };\n\n /**\n * Creates a SdkStreamDimension message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof SdkStreamDimension\n * @static\n * @param {Object.} object Plain object\n * @returns {SdkStreamDimension} SdkStreamDimension\n */\n SdkStreamDimension.fromObject = function fromObject(object) {\n if (object instanceof $root.SdkStreamDimension)\n return object;\n var message = new $root.SdkStreamDimension();\n switch (object.type) {\n default:\n if (typeof object.type === \"number\") {\n message.type = object.type;\n break;\n }\n break;\n case \"VIDEO_ENCODER_NAME\":\n case 1:\n message.type = 1;\n break;\n case \"VIDEO_DECODER_NAME\":\n case 2:\n message.type = 2;\n break;\n }\n if (object.value != null) {\n if (typeof object.value !== \"object\")\n throw TypeError(\".SdkStreamDimension.value: object expected\");\n message.value = $root.SdkDimensionValue.fromObject(object.value);\n }\n return message;\n };\n\n /**\n * Creates a plain object from a SdkStreamDimension message. Also converts values to other types if specified.\n * @function toObject\n * @memberof SdkStreamDimension\n * @static\n * @param {SdkStreamDimension} message SdkStreamDimension\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n SdkStreamDimension.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.defaults) {\n object.type = options.enums === String ? \"VIDEO_ENCODER_NAME\" : 1;\n object.value = null;\n }\n if (message.type != null && message.hasOwnProperty(\"type\"))\n object.type = options.enums === String ? $root.SdkStreamDimension.Type[message.type] === undefined ? message.type : $root.SdkStreamDimension.Type[message.type] : message.type;\n if (message.value != null && message.hasOwnProperty(\"value\"))\n object.value = $root.SdkDimensionValue.toObject(message.value, options);\n return object;\n };\n\n /**\n * Converts this SdkStreamDimension to JSON.\n * @function toJSON\n * @memberof SdkStreamDimension\n * @instance\n * @returns {Object.} JSON object\n */\n SdkStreamDimension.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n /**\n * Gets the default type url for SdkStreamDimension\n * @function getTypeUrl\n * @memberof SdkStreamDimension\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n SdkStreamDimension.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/SdkStreamDimension\";\n };\n\n /**\n * Type enum.\n * @name SdkStreamDimension.Type\n * @enum {number}\n * @property {number} VIDEO_ENCODER_NAME=1 VIDEO_ENCODER_NAME value\n * @property {number} VIDEO_DECODER_NAME=2 VIDEO_DECODER_NAME value\n */\n SdkStreamDimension.Type = (function() {\n var valuesById = {}, values = Object.create(valuesById);\n values[valuesById[1] = \"VIDEO_ENCODER_NAME\"] = 1;\n values[valuesById[2] = \"VIDEO_DECODER_NAME\"] = 2;\n return values;\n })();\n\n return SdkStreamDimension;\n})();\n\n$root.SdkDimensionValue = (function() {\n\n /**\n * Properties of a SdkDimensionValue.\n * @name ISdkDimensionValue\n * @interface ISdkDimensionValue\n * @property {string|null} [stringValue] SdkDimensionValue stringValue\n * @property {boolean|null} [boolValue] SdkDimensionValue boolValue\n * @property {number|Long|null} [uintValue] SdkDimensionValue uintValue\n */\n\n /**\n * Constructs a new SdkDimensionValue.\n * @name SdkDimensionValue\n * @classdesc Represents a SdkDimensionValue.\n * @implements ISdkDimensionValue\n * @constructor\n * @param {ISdkDimensionValue=} [properties] Properties to set\n */\n function SdkDimensionValue(properties) {\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * SdkDimensionValue stringValue.\n * @member {string} stringValue\n * @memberof SdkDimensionValue\n * @instance\n */\n SdkDimensionValue.prototype.stringValue = \"\";\n\n /**\n * SdkDimensionValue boolValue.\n * @member {boolean} boolValue\n * @memberof SdkDimensionValue\n * @instance\n */\n SdkDimensionValue.prototype.boolValue = false;\n\n /**\n * SdkDimensionValue uintValue.\n * @member {number|Long} uintValue\n * @memberof SdkDimensionValue\n * @instance\n */\n SdkDimensionValue.prototype.uintValue = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * Creates a new SdkDimensionValue instance using the specified properties.\n * @function create\n * @memberof SdkDimensionValue\n * @static\n * @param {ISdkDimensionValue=} [properties] Properties to set\n * @returns {SdkDimensionValue} SdkDimensionValue instance\n */\n SdkDimensionValue.create = function create(properties) {\n return new SdkDimensionValue(properties);\n };\n\n /**\n * Encodes the specified SdkDimensionValue message. Does not implicitly {@link SdkDimensionValue.verify|verify} messages.\n * @function encode\n * @memberof SdkDimensionValue\n * @static\n * @param {ISdkDimensionValue} message SdkDimensionValue message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n SdkDimensionValue.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.stringValue != null && Object.hasOwnProperty.call(message, \"stringValue\"))\n writer.uint32(/* id 1, wireType 2 =*/10).string(message.stringValue);\n if (message.boolValue != null && Object.hasOwnProperty.call(message, \"boolValue\"))\n writer.uint32(/* id 2, wireType 0 =*/16).bool(message.boolValue);\n if (message.uintValue != null && Object.hasOwnProperty.call(message, \"uintValue\"))\n writer.uint32(/* id 3, wireType 0 =*/24).uint64(message.uintValue);\n return writer;\n };\n\n /**\n * Encodes the specified SdkDimensionValue message, length delimited. Does not implicitly {@link SdkDimensionValue.verify|verify} messages.\n * @function encodeDelimited\n * @memberof SdkDimensionValue\n * @static\n * @param {ISdkDimensionValue} message SdkDimensionValue message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n SdkDimensionValue.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a SdkDimensionValue message from the specified reader or buffer.\n * @function decode\n * @memberof SdkDimensionValue\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {SdkDimensionValue} SdkDimensionValue\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n SdkDimensionValue.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.SdkDimensionValue();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n message.stringValue = reader.string();\n break;\n }\n case 2: {\n message.boolValue = reader.bool();\n break;\n }\n case 3: {\n message.uintValue = reader.uint64();\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a SdkDimensionValue message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof SdkDimensionValue\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {SdkDimensionValue} SdkDimensionValue\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n SdkDimensionValue.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a SdkDimensionValue message.\n * @function verify\n * @memberof SdkDimensionValue\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n SdkDimensionValue.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.stringValue != null && message.hasOwnProperty(\"stringValue\"))\n if (!$util.isString(message.stringValue))\n return \"stringValue: string expected\";\n if (message.boolValue != null && message.hasOwnProperty(\"boolValue\"))\n if (typeof message.boolValue !== \"boolean\")\n return \"boolValue: boolean expected\";\n if (message.uintValue != null && message.hasOwnProperty(\"uintValue\"))\n if (!$util.isInteger(message.uintValue) && !(message.uintValue && $util.isInteger(message.uintValue.low) && $util.isInteger(message.uintValue.high)))\n return \"uintValue: integer|Long expected\";\n return null;\n };\n\n /**\n * Creates a SdkDimensionValue message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof SdkDimensionValue\n * @static\n * @param {Object.} object Plain object\n * @returns {SdkDimensionValue} SdkDimensionValue\n */\n SdkDimensionValue.fromObject = function fromObject(object) {\n if (object instanceof $root.SdkDimensionValue)\n return object;\n var message = new $root.SdkDimensionValue();\n if (object.stringValue != null)\n message.stringValue = String(object.stringValue);\n if (object.boolValue != null)\n message.boolValue = Boolean(object.boolValue);\n if (object.uintValue != null)\n if ($util.Long)\n (message.uintValue = $util.Long.fromValue(object.uintValue)).unsigned = true;\n else if (typeof object.uintValue === \"string\")\n message.uintValue = parseInt(object.uintValue, 10);\n else if (typeof object.uintValue === \"number\")\n message.uintValue = object.uintValue;\n else if (typeof object.uintValue === \"object\")\n message.uintValue = new $util.LongBits(object.uintValue.low >>> 0, object.uintValue.high >>> 0).toNumber(true);\n return message;\n };\n\n /**\n * Creates a plain object from a SdkDimensionValue message. Also converts values to other types if specified.\n * @function toObject\n * @memberof SdkDimensionValue\n * @static\n * @param {SdkDimensionValue} message SdkDimensionValue\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n SdkDimensionValue.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.defaults) {\n object.stringValue = \"\";\n object.boolValue = false;\n if ($util.Long) {\n var long = new $util.Long(0, 0, true);\n object.uintValue = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.uintValue = options.longs === String ? \"0\" : 0;\n }\n if (message.stringValue != null && message.hasOwnProperty(\"stringValue\"))\n object.stringValue = message.stringValue;\n if (message.boolValue != null && message.hasOwnProperty(\"boolValue\"))\n object.boolValue = message.boolValue;\n if (message.uintValue != null && message.hasOwnProperty(\"uintValue\"))\n if (typeof message.uintValue === \"number\")\n object.uintValue = options.longs === String ? String(message.uintValue) : message.uintValue;\n else\n object.uintValue = options.longs === String ? $util.Long.prototype.toString.call(message.uintValue) : options.longs === Number ? new $util.LongBits(message.uintValue.low >>> 0, message.uintValue.high >>> 0).toNumber(true) : message.uintValue;\n return object;\n };\n\n /**\n * Converts this SdkDimensionValue to JSON.\n * @function toJSON\n * @memberof SdkDimensionValue\n * @instance\n * @returns {Object.} JSON object\n */\n SdkDimensionValue.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n /**\n * Gets the default type url for SdkDimensionValue\n * @function getTypeUrl\n * @memberof SdkDimensionValue\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n SdkDimensionValue.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/SdkDimensionValue\";\n };\n\n return SdkDimensionValue;\n})();\n\n$root.SdkDataMessageFrame = (function() {\n\n /**\n * Properties of a SdkDataMessageFrame.\n * @name ISdkDataMessageFrame\n * @interface ISdkDataMessageFrame\n * @property {Array.|null} [messages] SdkDataMessageFrame messages\n */\n\n /**\n * Constructs a new SdkDataMessageFrame.\n * @name SdkDataMessageFrame\n * @classdesc Represents a SdkDataMessageFrame.\n * @implements ISdkDataMessageFrame\n * @constructor\n * @param {ISdkDataMessageFrame=} [properties] Properties to set\n */\n function SdkDataMessageFrame(properties) {\n this.messages = [];\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * SdkDataMessageFrame messages.\n * @member {Array.} messages\n * @memberof SdkDataMessageFrame\n * @instance\n */\n SdkDataMessageFrame.prototype.messages = $util.emptyArray;\n\n /**\n * Creates a new SdkDataMessageFrame instance using the specified properties.\n * @function create\n * @memberof SdkDataMessageFrame\n * @static\n * @param {ISdkDataMessageFrame=} [properties] Properties to set\n * @returns {SdkDataMessageFrame} SdkDataMessageFrame instance\n */\n SdkDataMessageFrame.create = function create(properties) {\n return new SdkDataMessageFrame(properties);\n };\n\n /**\n * Encodes the specified SdkDataMessageFrame message. Does not implicitly {@link SdkDataMessageFrame.verify|verify} messages.\n * @function encode\n * @memberof SdkDataMessageFrame\n * @static\n * @param {ISdkDataMessageFrame} message SdkDataMessageFrame message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n SdkDataMessageFrame.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.messages != null && message.messages.length)\n for (var i = 0; i < message.messages.length; ++i)\n $root.SdkDataMessagePayload.encode(message.messages[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();\n return writer;\n };\n\n /**\n * Encodes the specified SdkDataMessageFrame message, length delimited. Does not implicitly {@link SdkDataMessageFrame.verify|verify} messages.\n * @function encodeDelimited\n * @memberof SdkDataMessageFrame\n * @static\n * @param {ISdkDataMessageFrame} message SdkDataMessageFrame message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n SdkDataMessageFrame.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a SdkDataMessageFrame message from the specified reader or buffer.\n * @function decode\n * @memberof SdkDataMessageFrame\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {SdkDataMessageFrame} SdkDataMessageFrame\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n SdkDataMessageFrame.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.SdkDataMessageFrame();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (!(message.messages && message.messages.length))\n message.messages = [];\n message.messages.push($root.SdkDataMessagePayload.decode(reader, reader.uint32()));\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a SdkDataMessageFrame message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof SdkDataMessageFrame\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {SdkDataMessageFrame} SdkDataMessageFrame\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n SdkDataMessageFrame.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a SdkDataMessageFrame message.\n * @function verify\n * @memberof SdkDataMessageFrame\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n SdkDataMessageFrame.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.messages != null && message.hasOwnProperty(\"messages\")) {\n if (!Array.isArray(message.messages))\n return \"messages: array expected\";\n for (var i = 0; i < message.messages.length; ++i) {\n var error = $root.SdkDataMessagePayload.verify(message.messages[i]);\n if (error)\n return \"messages.\" + error;\n }\n }\n return null;\n };\n\n /**\n * Creates a SdkDataMessageFrame message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof SdkDataMessageFrame\n * @static\n * @param {Object.} object Plain object\n * @returns {SdkDataMessageFrame} SdkDataMessageFrame\n */\n SdkDataMessageFrame.fromObject = function fromObject(object) {\n if (object instanceof $root.SdkDataMessageFrame)\n return object;\n var message = new $root.SdkDataMessageFrame();\n if (object.messages) {\n if (!Array.isArray(object.messages))\n throw TypeError(\".SdkDataMessageFrame.messages: array expected\");\n message.messages = [];\n for (var i = 0; i < object.messages.length; ++i) {\n if (typeof object.messages[i] !== \"object\")\n throw TypeError(\".SdkDataMessageFrame.messages: object expected\");\n message.messages[i] = $root.SdkDataMessagePayload.fromObject(object.messages[i]);\n }\n }\n return message;\n };\n\n /**\n * Creates a plain object from a SdkDataMessageFrame message. Also converts values to other types if specified.\n * @function toObject\n * @memberof SdkDataMessageFrame\n * @static\n * @param {SdkDataMessageFrame} message SdkDataMessageFrame\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n SdkDataMessageFrame.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.arrays || options.defaults)\n object.messages = [];\n if (message.messages && message.messages.length) {\n object.messages = [];\n for (var j = 0; j < message.messages.length; ++j)\n object.messages[j] = $root.SdkDataMessagePayload.toObject(message.messages[j], options);\n }\n return object;\n };\n\n /**\n * Converts this SdkDataMessageFrame to JSON.\n * @function toJSON\n * @memberof SdkDataMessageFrame\n * @instance\n * @returns {Object.} JSON object\n */\n SdkDataMessageFrame.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n /**\n * Gets the default type url for SdkDataMessageFrame\n * @function getTypeUrl\n * @memberof SdkDataMessageFrame\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n SdkDataMessageFrame.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/SdkDataMessageFrame\";\n };\n\n return SdkDataMessageFrame;\n})();\n\n$root.SdkDataMessagePayload = (function() {\n\n /**\n * Properties of a SdkDataMessagePayload.\n * @name ISdkDataMessagePayload\n * @interface ISdkDataMessagePayload\n * @property {string|null} [topic] SdkDataMessagePayload topic\n * @property {Uint8Array|null} [data] SdkDataMessagePayload data\n * @property {number|null} [lifetimeMs] SdkDataMessagePayload lifetimeMs\n * @property {string|null} [senderAttendeeId] SdkDataMessagePayload senderAttendeeId\n * @property {number|Long|null} [ingestTimeNs] SdkDataMessagePayload ingestTimeNs\n * @property {string|null} [senderExternalUserId] SdkDataMessagePayload senderExternalUserId\n */\n\n /**\n * Constructs a new SdkDataMessagePayload.\n * @name SdkDataMessagePayload\n * @classdesc Represents a SdkDataMessagePayload.\n * @implements ISdkDataMessagePayload\n * @constructor\n * @param {ISdkDataMessagePayload=} [properties] Properties to set\n */\n function SdkDataMessagePayload(properties) {\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * SdkDataMessagePayload topic.\n * @member {string} topic\n * @memberof SdkDataMessagePayload\n * @instance\n */\n SdkDataMessagePayload.prototype.topic = \"\";\n\n /**\n * SdkDataMessagePayload data.\n * @member {Uint8Array} data\n * @memberof SdkDataMessagePayload\n * @instance\n */\n SdkDataMessagePayload.prototype.data = $util.newBuffer([]);\n\n /**\n * SdkDataMessagePayload lifetimeMs.\n * @member {number} lifetimeMs\n * @memberof SdkDataMessagePayload\n * @instance\n */\n SdkDataMessagePayload.prototype.lifetimeMs = 0;\n\n /**\n * SdkDataMessagePayload senderAttendeeId.\n * @member {string} senderAttendeeId\n * @memberof SdkDataMessagePayload\n * @instance\n */\n SdkDataMessagePayload.prototype.senderAttendeeId = \"\";\n\n /**\n * SdkDataMessagePayload ingestTimeNs.\n * @member {number|Long} ingestTimeNs\n * @memberof SdkDataMessagePayload\n * @instance\n */\n SdkDataMessagePayload.prototype.ingestTimeNs = $util.Long ? $util.Long.fromBits(0,0,false) : 0;\n\n /**\n * SdkDataMessagePayload senderExternalUserId.\n * @member {string} senderExternalUserId\n * @memberof SdkDataMessagePayload\n * @instance\n */\n SdkDataMessagePayload.prototype.senderExternalUserId = \"\";\n\n /**\n * Creates a new SdkDataMessagePayload instance using the specified properties.\n * @function create\n * @memberof SdkDataMessagePayload\n * @static\n * @param {ISdkDataMessagePayload=} [properties] Properties to set\n * @returns {SdkDataMessagePayload} SdkDataMessagePayload instance\n */\n SdkDataMessagePayload.create = function create(properties) {\n return new SdkDataMessagePayload(properties);\n };\n\n /**\n * Encodes the specified SdkDataMessagePayload message. Does not implicitly {@link SdkDataMessagePayload.verify|verify} messages.\n * @function encode\n * @memberof SdkDataMessagePayload\n * @static\n * @param {ISdkDataMessagePayload} message SdkDataMessagePayload message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n SdkDataMessagePayload.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.topic != null && Object.hasOwnProperty.call(message, \"topic\"))\n writer.uint32(/* id 1, wireType 2 =*/10).string(message.topic);\n if (message.data != null && Object.hasOwnProperty.call(message, \"data\"))\n writer.uint32(/* id 2, wireType 2 =*/18).bytes(message.data);\n if (message.lifetimeMs != null && Object.hasOwnProperty.call(message, \"lifetimeMs\"))\n writer.uint32(/* id 3, wireType 0 =*/24).uint32(message.lifetimeMs);\n if (message.senderAttendeeId != null && Object.hasOwnProperty.call(message, \"senderAttendeeId\"))\n writer.uint32(/* id 4, wireType 2 =*/34).string(message.senderAttendeeId);\n if (message.ingestTimeNs != null && Object.hasOwnProperty.call(message, \"ingestTimeNs\"))\n writer.uint32(/* id 5, wireType 0 =*/40).int64(message.ingestTimeNs);\n if (message.senderExternalUserId != null && Object.hasOwnProperty.call(message, \"senderExternalUserId\"))\n writer.uint32(/* id 6, wireType 2 =*/50).string(message.senderExternalUserId);\n return writer;\n };\n\n /**\n * Encodes the specified SdkDataMessagePayload message, length delimited. Does not implicitly {@link SdkDataMessagePayload.verify|verify} messages.\n * @function encodeDelimited\n * @memberof SdkDataMessagePayload\n * @static\n * @param {ISdkDataMessagePayload} message SdkDataMessagePayload message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n SdkDataMessagePayload.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a SdkDataMessagePayload message from the specified reader or buffer.\n * @function decode\n * @memberof SdkDataMessagePayload\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {SdkDataMessagePayload} SdkDataMessagePayload\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n SdkDataMessagePayload.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.SdkDataMessagePayload();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n message.topic = reader.string();\n break;\n }\n case 2: {\n message.data = reader.bytes();\n break;\n }\n case 3: {\n message.lifetimeMs = reader.uint32();\n break;\n }\n case 4: {\n message.senderAttendeeId = reader.string();\n break;\n }\n case 5: {\n message.ingestTimeNs = reader.int64();\n break;\n }\n case 6: {\n message.senderExternalUserId = reader.string();\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a SdkDataMessagePayload message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof SdkDataMessagePayload\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {SdkDataMessagePayload} SdkDataMessagePayload\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n SdkDataMessagePayload.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a SdkDataMessagePayload message.\n * @function verify\n * @memberof SdkDataMessagePayload\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n SdkDataMessagePayload.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.topic != null && message.hasOwnProperty(\"topic\"))\n if (!$util.isString(message.topic))\n return \"topic: string expected\";\n if (message.data != null && message.hasOwnProperty(\"data\"))\n if (!(message.data && typeof message.data.length === \"number\" || $util.isString(message.data)))\n return \"data: buffer expected\";\n if (message.lifetimeMs != null && message.hasOwnProperty(\"lifetimeMs\"))\n if (!$util.isInteger(message.lifetimeMs))\n return \"lifetimeMs: integer expected\";\n if (message.senderAttendeeId != null && message.hasOwnProperty(\"senderAttendeeId\"))\n if (!$util.isString(message.senderAttendeeId))\n return \"senderAttendeeId: string expected\";\n if (message.ingestTimeNs != null && message.hasOwnProperty(\"ingestTimeNs\"))\n if (!$util.isInteger(message.ingestTimeNs) && !(message.ingestTimeNs && $util.isInteger(message.ingestTimeNs.low) && $util.isInteger(message.ingestTimeNs.high)))\n return \"ingestTimeNs: integer|Long expected\";\n if (message.senderExternalUserId != null && message.hasOwnProperty(\"senderExternalUserId\"))\n if (!$util.isString(message.senderExternalUserId))\n return \"senderExternalUserId: string expected\";\n return null;\n };\n\n /**\n * Creates a SdkDataMessagePayload message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof SdkDataMessagePayload\n * @static\n * @param {Object.} object Plain object\n * @returns {SdkDataMessagePayload} SdkDataMessagePayload\n */\n SdkDataMessagePayload.fromObject = function fromObject(object) {\n if (object instanceof $root.SdkDataMessagePayload)\n return object;\n var message = new $root.SdkDataMessagePayload();\n if (object.topic != null)\n message.topic = String(object.topic);\n if (object.data != null)\n if (typeof object.data === \"string\")\n $util.base64.decode(object.data, message.data = $util.newBuffer($util.base64.length(object.data)), 0);\n else if (object.data.length >= 0)\n message.data = object.data;\n if (object.lifetimeMs != null)\n message.lifetimeMs = object.lifetimeMs >>> 0;\n if (object.senderAttendeeId != null)\n message.senderAttendeeId = String(object.senderAttendeeId);\n if (object.ingestTimeNs != null)\n if ($util.Long)\n (message.ingestTimeNs = $util.Long.fromValue(object.ingestTimeNs)).unsigned = false;\n else if (typeof object.ingestTimeNs === \"string\")\n message.ingestTimeNs = parseInt(object.ingestTimeNs, 10);\n else if (typeof object.ingestTimeNs === \"number\")\n message.ingestTimeNs = object.ingestTimeNs;\n else if (typeof object.ingestTimeNs === \"object\")\n message.ingestTimeNs = new $util.LongBits(object.ingestTimeNs.low >>> 0, object.ingestTimeNs.high >>> 0).toNumber();\n if (object.senderExternalUserId != null)\n message.senderExternalUserId = String(object.senderExternalUserId);\n return message;\n };\n\n /**\n * Creates a plain object from a SdkDataMessagePayload message. Also converts values to other types if specified.\n * @function toObject\n * @memberof SdkDataMessagePayload\n * @static\n * @param {SdkDataMessagePayload} message SdkDataMessagePayload\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n SdkDataMessagePayload.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.defaults) {\n object.topic = \"\";\n if (options.bytes === String)\n object.data = \"\";\n else {\n object.data = [];\n if (options.bytes !== Array)\n object.data = $util.newBuffer(object.data);\n }\n object.lifetimeMs = 0;\n object.senderAttendeeId = \"\";\n if ($util.Long) {\n var long = new $util.Long(0, 0, false);\n object.ingestTimeNs = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.ingestTimeNs = options.longs === String ? \"0\" : 0;\n object.senderExternalUserId = \"\";\n }\n if (message.topic != null && message.hasOwnProperty(\"topic\"))\n object.topic = message.topic;\n if (message.data != null && message.hasOwnProperty(\"data\"))\n object.data = options.bytes === String ? $util.base64.encode(message.data, 0, message.data.length) : options.bytes === Array ? Array.prototype.slice.call(message.data) : message.data;\n if (message.lifetimeMs != null && message.hasOwnProperty(\"lifetimeMs\"))\n object.lifetimeMs = message.lifetimeMs;\n if (message.senderAttendeeId != null && message.hasOwnProperty(\"senderAttendeeId\"))\n object.senderAttendeeId = message.senderAttendeeId;\n if (message.ingestTimeNs != null && message.hasOwnProperty(\"ingestTimeNs\"))\n if (typeof message.ingestTimeNs === \"number\")\n object.ingestTimeNs = options.longs === String ? String(message.ingestTimeNs) : message.ingestTimeNs;\n else\n object.ingestTimeNs = options.longs === String ? $util.Long.prototype.toString.call(message.ingestTimeNs) : options.longs === Number ? new $util.LongBits(message.ingestTimeNs.low >>> 0, message.ingestTimeNs.high >>> 0).toNumber() : message.ingestTimeNs;\n if (message.senderExternalUserId != null && message.hasOwnProperty(\"senderExternalUserId\"))\n object.senderExternalUserId = message.senderExternalUserId;\n return object;\n };\n\n /**\n * Converts this SdkDataMessagePayload to JSON.\n * @function toJSON\n * @memberof SdkDataMessagePayload\n * @instance\n * @returns {Object.} JSON object\n */\n SdkDataMessagePayload.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n /**\n * Gets the default type url for SdkDataMessagePayload\n * @function getTypeUrl\n * @memberof SdkDataMessagePayload\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n SdkDataMessagePayload.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/SdkDataMessagePayload\";\n };\n\n return SdkDataMessagePayload;\n})();\n\n$root.SdkTurnCredentials = (function() {\n\n /**\n * Properties of a SdkTurnCredentials.\n * @name ISdkTurnCredentials\n * @interface ISdkTurnCredentials\n * @property {string|null} [username] SdkTurnCredentials username\n * @property {string|null} [password] SdkTurnCredentials password\n * @property {number|null} [ttl] SdkTurnCredentials ttl\n * @property {Array.|null} [uris] SdkTurnCredentials uris\n */\n\n /**\n * Constructs a new SdkTurnCredentials.\n * @name SdkTurnCredentials\n * @classdesc Represents a SdkTurnCredentials.\n * @implements ISdkTurnCredentials\n * @constructor\n * @param {ISdkTurnCredentials=} [properties] Properties to set\n */\n function SdkTurnCredentials(properties) {\n this.uris = [];\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * SdkTurnCredentials username.\n * @member {string} username\n * @memberof SdkTurnCredentials\n * @instance\n */\n SdkTurnCredentials.prototype.username = \"\";\n\n /**\n * SdkTurnCredentials password.\n * @member {string} password\n * @memberof SdkTurnCredentials\n * @instance\n */\n SdkTurnCredentials.prototype.password = \"\";\n\n /**\n * SdkTurnCredentials ttl.\n * @member {number} ttl\n * @memberof SdkTurnCredentials\n * @instance\n */\n SdkTurnCredentials.prototype.ttl = 0;\n\n /**\n * SdkTurnCredentials uris.\n * @member {Array.} uris\n * @memberof SdkTurnCredentials\n * @instance\n */\n SdkTurnCredentials.prototype.uris = $util.emptyArray;\n\n /**\n * Creates a new SdkTurnCredentials instance using the specified properties.\n * @function create\n * @memberof SdkTurnCredentials\n * @static\n * @param {ISdkTurnCredentials=} [properties] Properties to set\n * @returns {SdkTurnCredentials} SdkTurnCredentials instance\n */\n SdkTurnCredentials.create = function create(properties) {\n return new SdkTurnCredentials(properties);\n };\n\n /**\n * Encodes the specified SdkTurnCredentials message. Does not implicitly {@link SdkTurnCredentials.verify|verify} messages.\n * @function encode\n * @memberof SdkTurnCredentials\n * @static\n * @param {ISdkTurnCredentials} message SdkTurnCredentials message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n SdkTurnCredentials.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.username != null && Object.hasOwnProperty.call(message, \"username\"))\n writer.uint32(/* id 1, wireType 2 =*/10).string(message.username);\n if (message.password != null && Object.hasOwnProperty.call(message, \"password\"))\n writer.uint32(/* id 2, wireType 2 =*/18).string(message.password);\n if (message.ttl != null && Object.hasOwnProperty.call(message, \"ttl\"))\n writer.uint32(/* id 3, wireType 0 =*/24).uint32(message.ttl);\n if (message.uris != null && message.uris.length)\n for (var i = 0; i < message.uris.length; ++i)\n writer.uint32(/* id 4, wireType 2 =*/34).string(message.uris[i]);\n return writer;\n };\n\n /**\n * Encodes the specified SdkTurnCredentials message, length delimited. Does not implicitly {@link SdkTurnCredentials.verify|verify} messages.\n * @function encodeDelimited\n * @memberof SdkTurnCredentials\n * @static\n * @param {ISdkTurnCredentials} message SdkTurnCredentials message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n SdkTurnCredentials.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a SdkTurnCredentials message from the specified reader or buffer.\n * @function decode\n * @memberof SdkTurnCredentials\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {SdkTurnCredentials} SdkTurnCredentials\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n SdkTurnCredentials.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.SdkTurnCredentials();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n message.username = reader.string();\n break;\n }\n case 2: {\n message.password = reader.string();\n break;\n }\n case 3: {\n message.ttl = reader.uint32();\n break;\n }\n case 4: {\n if (!(message.uris && message.uris.length))\n message.uris = [];\n message.uris.push(reader.string());\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a SdkTurnCredentials message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof SdkTurnCredentials\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {SdkTurnCredentials} SdkTurnCredentials\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n SdkTurnCredentials.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a SdkTurnCredentials message.\n * @function verify\n * @memberof SdkTurnCredentials\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n SdkTurnCredentials.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.username != null && message.hasOwnProperty(\"username\"))\n if (!$util.isString(message.username))\n return \"username: string expected\";\n if (message.password != null && message.hasOwnProperty(\"password\"))\n if (!$util.isString(message.password))\n return \"password: string expected\";\n if (message.ttl != null && message.hasOwnProperty(\"ttl\"))\n if (!$util.isInteger(message.ttl))\n return \"ttl: integer expected\";\n if (message.uris != null && message.hasOwnProperty(\"uris\")) {\n if (!Array.isArray(message.uris))\n return \"uris: array expected\";\n for (var i = 0; i < message.uris.length; ++i)\n if (!$util.isString(message.uris[i]))\n return \"uris: string[] expected\";\n }\n return null;\n };\n\n /**\n * Creates a SdkTurnCredentials message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof SdkTurnCredentials\n * @static\n * @param {Object.} object Plain object\n * @returns {SdkTurnCredentials} SdkTurnCredentials\n */\n SdkTurnCredentials.fromObject = function fromObject(object) {\n if (object instanceof $root.SdkTurnCredentials)\n return object;\n var message = new $root.SdkTurnCredentials();\n if (object.username != null)\n message.username = String(object.username);\n if (object.password != null)\n message.password = String(object.password);\n if (object.ttl != null)\n message.ttl = object.ttl >>> 0;\n if (object.uris) {\n if (!Array.isArray(object.uris))\n throw TypeError(\".SdkTurnCredentials.uris: array expected\");\n message.uris = [];\n for (var i = 0; i < object.uris.length; ++i)\n message.uris[i] = String(object.uris[i]);\n }\n return message;\n };\n\n /**\n * Creates a plain object from a SdkTurnCredentials message. Also converts values to other types if specified.\n * @function toObject\n * @memberof SdkTurnCredentials\n * @static\n * @param {SdkTurnCredentials} message SdkTurnCredentials\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n SdkTurnCredentials.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.arrays || options.defaults)\n object.uris = [];\n if (options.defaults) {\n object.username = \"\";\n object.password = \"\";\n object.ttl = 0;\n }\n if (message.username != null && message.hasOwnProperty(\"username\"))\n object.username = message.username;\n if (message.password != null && message.hasOwnProperty(\"password\"))\n object.password = message.password;\n if (message.ttl != null && message.hasOwnProperty(\"ttl\"))\n object.ttl = message.ttl;\n if (message.uris && message.uris.length) {\n object.uris = [];\n for (var j = 0; j < message.uris.length; ++j)\n object.uris[j] = message.uris[j];\n }\n return object;\n };\n\n /**\n * Converts this SdkTurnCredentials to JSON.\n * @function toJSON\n * @memberof SdkTurnCredentials\n * @instance\n * @returns {Object.} JSON object\n */\n SdkTurnCredentials.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n /**\n * Gets the default type url for SdkTurnCredentials\n * @function getTypeUrl\n * @memberof SdkTurnCredentials\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n SdkTurnCredentials.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/SdkTurnCredentials\";\n };\n\n return SdkTurnCredentials;\n})();\n\n$root.SdkTranscriptItem = (function() {\n\n /**\n * Properties of a SdkTranscriptItem.\n * @name ISdkTranscriptItem\n * @interface ISdkTranscriptItem\n * @property {string|null} [content] SdkTranscriptItem content\n * @property {number|Long|null} [endTime] SdkTranscriptItem endTime\n * @property {string|null} [speakerAttendeeId] SdkTranscriptItem speakerAttendeeId\n * @property {string|null} [speakerExternalUserId] SdkTranscriptItem speakerExternalUserId\n * @property {number|Long|null} [startTime] SdkTranscriptItem startTime\n * @property {SdkTranscriptItem.Type|null} [type] SdkTranscriptItem type\n * @property {boolean|null} [vocabularyFilterMatch] SdkTranscriptItem vocabularyFilterMatch\n * @property {number|null} [confidence] SdkTranscriptItem confidence\n * @property {boolean|null} [stable] SdkTranscriptItem stable\n */\n\n /**\n * Constructs a new SdkTranscriptItem.\n * @name SdkTranscriptItem\n * @classdesc Represents a SdkTranscriptItem.\n * @implements ISdkTranscriptItem\n * @constructor\n * @param {ISdkTranscriptItem=} [properties] Properties to set\n */\n function SdkTranscriptItem(properties) {\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * SdkTranscriptItem content.\n * @member {string} content\n * @memberof SdkTranscriptItem\n * @instance\n */\n SdkTranscriptItem.prototype.content = \"\";\n\n /**\n * SdkTranscriptItem endTime.\n * @member {number|Long} endTime\n * @memberof SdkTranscriptItem\n * @instance\n */\n SdkTranscriptItem.prototype.endTime = $util.Long ? $util.Long.fromBits(0,0,false) : 0;\n\n /**\n * SdkTranscriptItem speakerAttendeeId.\n * @member {string} speakerAttendeeId\n * @memberof SdkTranscriptItem\n * @instance\n */\n SdkTranscriptItem.prototype.speakerAttendeeId = \"\";\n\n /**\n * SdkTranscriptItem speakerExternalUserId.\n * @member {string} speakerExternalUserId\n * @memberof SdkTranscriptItem\n * @instance\n */\n SdkTranscriptItem.prototype.speakerExternalUserId = \"\";\n\n /**\n * SdkTranscriptItem startTime.\n * @member {number|Long} startTime\n * @memberof SdkTranscriptItem\n * @instance\n */\n SdkTranscriptItem.prototype.startTime = $util.Long ? $util.Long.fromBits(0,0,false) : 0;\n\n /**\n * SdkTranscriptItem type.\n * @member {SdkTranscriptItem.Type} type\n * @memberof SdkTranscriptItem\n * @instance\n */\n SdkTranscriptItem.prototype.type = 1;\n\n /**\n * SdkTranscriptItem vocabularyFilterMatch.\n * @member {boolean} vocabularyFilterMatch\n * @memberof SdkTranscriptItem\n * @instance\n */\n SdkTranscriptItem.prototype.vocabularyFilterMatch = false;\n\n /**\n * SdkTranscriptItem confidence.\n * @member {number} confidence\n * @memberof SdkTranscriptItem\n * @instance\n */\n SdkTranscriptItem.prototype.confidence = 0;\n\n /**\n * SdkTranscriptItem stable.\n * @member {boolean} stable\n * @memberof SdkTranscriptItem\n * @instance\n */\n SdkTranscriptItem.prototype.stable = false;\n\n /**\n * Creates a new SdkTranscriptItem instance using the specified properties.\n * @function create\n * @memberof SdkTranscriptItem\n * @static\n * @param {ISdkTranscriptItem=} [properties] Properties to set\n * @returns {SdkTranscriptItem} SdkTranscriptItem instance\n */\n SdkTranscriptItem.create = function create(properties) {\n return new SdkTranscriptItem(properties);\n };\n\n /**\n * Encodes the specified SdkTranscriptItem message. Does not implicitly {@link SdkTranscriptItem.verify|verify} messages.\n * @function encode\n * @memberof SdkTranscriptItem\n * @static\n * @param {ISdkTranscriptItem} message SdkTranscriptItem message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n SdkTranscriptItem.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.content != null && Object.hasOwnProperty.call(message, \"content\"))\n writer.uint32(/* id 1, wireType 2 =*/10).string(message.content);\n if (message.endTime != null && Object.hasOwnProperty.call(message, \"endTime\"))\n writer.uint32(/* id 2, wireType 0 =*/16).int64(message.endTime);\n if (message.speakerAttendeeId != null && Object.hasOwnProperty.call(message, \"speakerAttendeeId\"))\n writer.uint32(/* id 3, wireType 2 =*/26).string(message.speakerAttendeeId);\n if (message.speakerExternalUserId != null && Object.hasOwnProperty.call(message, \"speakerExternalUserId\"))\n writer.uint32(/* id 4, wireType 2 =*/34).string(message.speakerExternalUserId);\n if (message.startTime != null && Object.hasOwnProperty.call(message, \"startTime\"))\n writer.uint32(/* id 5, wireType 0 =*/40).int64(message.startTime);\n if (message.type != null && Object.hasOwnProperty.call(message, \"type\"))\n writer.uint32(/* id 6, wireType 0 =*/48).int32(message.type);\n if (message.vocabularyFilterMatch != null && Object.hasOwnProperty.call(message, \"vocabularyFilterMatch\"))\n writer.uint32(/* id 7, wireType 0 =*/56).bool(message.vocabularyFilterMatch);\n if (message.confidence != null && Object.hasOwnProperty.call(message, \"confidence\"))\n writer.uint32(/* id 8, wireType 1 =*/65).double(message.confidence);\n if (message.stable != null && Object.hasOwnProperty.call(message, \"stable\"))\n writer.uint32(/* id 9, wireType 0 =*/72).bool(message.stable);\n return writer;\n };\n\n /**\n * Encodes the specified SdkTranscriptItem message, length delimited. Does not implicitly {@link SdkTranscriptItem.verify|verify} messages.\n * @function encodeDelimited\n * @memberof SdkTranscriptItem\n * @static\n * @param {ISdkTranscriptItem} message SdkTranscriptItem message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n SdkTranscriptItem.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a SdkTranscriptItem message from the specified reader or buffer.\n * @function decode\n * @memberof SdkTranscriptItem\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {SdkTranscriptItem} SdkTranscriptItem\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n SdkTranscriptItem.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.SdkTranscriptItem();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n message.content = reader.string();\n break;\n }\n case 2: {\n message.endTime = reader.int64();\n break;\n }\n case 3: {\n message.speakerAttendeeId = reader.string();\n break;\n }\n case 4: {\n message.speakerExternalUserId = reader.string();\n break;\n }\n case 5: {\n message.startTime = reader.int64();\n break;\n }\n case 6: {\n message.type = reader.int32();\n break;\n }\n case 7: {\n message.vocabularyFilterMatch = reader.bool();\n break;\n }\n case 8: {\n message.confidence = reader.double();\n break;\n }\n case 9: {\n message.stable = reader.bool();\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a SdkTranscriptItem message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof SdkTranscriptItem\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {SdkTranscriptItem} SdkTranscriptItem\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n SdkTranscriptItem.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a SdkTranscriptItem message.\n * @function verify\n * @memberof SdkTranscriptItem\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n SdkTranscriptItem.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.content != null && message.hasOwnProperty(\"content\"))\n if (!$util.isString(message.content))\n return \"content: string expected\";\n if (message.endTime != null && message.hasOwnProperty(\"endTime\"))\n if (!$util.isInteger(message.endTime) && !(message.endTime && $util.isInteger(message.endTime.low) && $util.isInteger(message.endTime.high)))\n return \"endTime: integer|Long expected\";\n if (message.speakerAttendeeId != null && message.hasOwnProperty(\"speakerAttendeeId\"))\n if (!$util.isString(message.speakerAttendeeId))\n return \"speakerAttendeeId: string expected\";\n if (message.speakerExternalUserId != null && message.hasOwnProperty(\"speakerExternalUserId\"))\n if (!$util.isString(message.speakerExternalUserId))\n return \"speakerExternalUserId: string expected\";\n if (message.startTime != null && message.hasOwnProperty(\"startTime\"))\n if (!$util.isInteger(message.startTime) && !(message.startTime && $util.isInteger(message.startTime.low) && $util.isInteger(message.startTime.high)))\n return \"startTime: integer|Long expected\";\n if (message.type != null && message.hasOwnProperty(\"type\"))\n switch (message.type) {\n default:\n return \"type: enum value expected\";\n case 1:\n case 2:\n break;\n }\n if (message.vocabularyFilterMatch != null && message.hasOwnProperty(\"vocabularyFilterMatch\"))\n if (typeof message.vocabularyFilterMatch !== \"boolean\")\n return \"vocabularyFilterMatch: boolean expected\";\n if (message.confidence != null && message.hasOwnProperty(\"confidence\"))\n if (typeof message.confidence !== \"number\")\n return \"confidence: number expected\";\n if (message.stable != null && message.hasOwnProperty(\"stable\"))\n if (typeof message.stable !== \"boolean\")\n return \"stable: boolean expected\";\n return null;\n };\n\n /**\n * Creates a SdkTranscriptItem message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof SdkTranscriptItem\n * @static\n * @param {Object.} object Plain object\n * @returns {SdkTranscriptItem} SdkTranscriptItem\n */\n SdkTranscriptItem.fromObject = function fromObject(object) {\n if (object instanceof $root.SdkTranscriptItem)\n return object;\n var message = new $root.SdkTranscriptItem();\n if (object.content != null)\n message.content = String(object.content);\n if (object.endTime != null)\n if ($util.Long)\n (message.endTime = $util.Long.fromValue(object.endTime)).unsigned = false;\n else if (typeof object.endTime === \"string\")\n message.endTime = parseInt(object.endTime, 10);\n else if (typeof object.endTime === \"number\")\n message.endTime = object.endTime;\n else if (typeof object.endTime === \"object\")\n message.endTime = new $util.LongBits(object.endTime.low >>> 0, object.endTime.high >>> 0).toNumber();\n if (object.speakerAttendeeId != null)\n message.speakerAttendeeId = String(object.speakerAttendeeId);\n if (object.speakerExternalUserId != null)\n message.speakerExternalUserId = String(object.speakerExternalUserId);\n if (object.startTime != null)\n if ($util.Long)\n (message.startTime = $util.Long.fromValue(object.startTime)).unsigned = false;\n else if (typeof object.startTime === \"string\")\n message.startTime = parseInt(object.startTime, 10);\n else if (typeof object.startTime === \"number\")\n message.startTime = object.startTime;\n else if (typeof object.startTime === \"object\")\n message.startTime = new $util.LongBits(object.startTime.low >>> 0, object.startTime.high >>> 0).toNumber();\n switch (object.type) {\n default:\n if (typeof object.type === \"number\") {\n message.type = object.type;\n break;\n }\n break;\n case \"PRONUNCIATION\":\n case 1:\n message.type = 1;\n break;\n case \"PUNCTUATION\":\n case 2:\n message.type = 2;\n break;\n }\n if (object.vocabularyFilterMatch != null)\n message.vocabularyFilterMatch = Boolean(object.vocabularyFilterMatch);\n if (object.confidence != null)\n message.confidence = Number(object.confidence);\n if (object.stable != null)\n message.stable = Boolean(object.stable);\n return message;\n };\n\n /**\n * Creates a plain object from a SdkTranscriptItem message. Also converts values to other types if specified.\n * @function toObject\n * @memberof SdkTranscriptItem\n * @static\n * @param {SdkTranscriptItem} message SdkTranscriptItem\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n SdkTranscriptItem.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.defaults) {\n object.content = \"\";\n if ($util.Long) {\n var long = new $util.Long(0, 0, false);\n object.endTime = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.endTime = options.longs === String ? \"0\" : 0;\n object.speakerAttendeeId = \"\";\n object.speakerExternalUserId = \"\";\n if ($util.Long) {\n var long = new $util.Long(0, 0, false);\n object.startTime = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.startTime = options.longs === String ? \"0\" : 0;\n object.type = options.enums === String ? \"PRONUNCIATION\" : 1;\n object.vocabularyFilterMatch = false;\n object.confidence = 0;\n object.stable = false;\n }\n if (message.content != null && message.hasOwnProperty(\"content\"))\n object.content = message.content;\n if (message.endTime != null && message.hasOwnProperty(\"endTime\"))\n if (typeof message.endTime === \"number\")\n object.endTime = options.longs === String ? String(message.endTime) : message.endTime;\n else\n object.endTime = options.longs === String ? $util.Long.prototype.toString.call(message.endTime) : options.longs === Number ? new $util.LongBits(message.endTime.low >>> 0, message.endTime.high >>> 0).toNumber() : message.endTime;\n if (message.speakerAttendeeId != null && message.hasOwnProperty(\"speakerAttendeeId\"))\n object.speakerAttendeeId = message.speakerAttendeeId;\n if (message.speakerExternalUserId != null && message.hasOwnProperty(\"speakerExternalUserId\"))\n object.speakerExternalUserId = message.speakerExternalUserId;\n if (message.startTime != null && message.hasOwnProperty(\"startTime\"))\n if (typeof message.startTime === \"number\")\n object.startTime = options.longs === String ? String(message.startTime) : message.startTime;\n else\n object.startTime = options.longs === String ? $util.Long.prototype.toString.call(message.startTime) : options.longs === Number ? new $util.LongBits(message.startTime.low >>> 0, message.startTime.high >>> 0).toNumber() : message.startTime;\n if (message.type != null && message.hasOwnProperty(\"type\"))\n object.type = options.enums === String ? $root.SdkTranscriptItem.Type[message.type] === undefined ? message.type : $root.SdkTranscriptItem.Type[message.type] : message.type;\n if (message.vocabularyFilterMatch != null && message.hasOwnProperty(\"vocabularyFilterMatch\"))\n object.vocabularyFilterMatch = message.vocabularyFilterMatch;\n if (message.confidence != null && message.hasOwnProperty(\"confidence\"))\n object.confidence = options.json && !isFinite(message.confidence) ? String(message.confidence) : message.confidence;\n if (message.stable != null && message.hasOwnProperty(\"stable\"))\n object.stable = message.stable;\n return object;\n };\n\n /**\n * Converts this SdkTranscriptItem to JSON.\n * @function toJSON\n * @memberof SdkTranscriptItem\n * @instance\n * @returns {Object.} JSON object\n */\n SdkTranscriptItem.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n /**\n * Gets the default type url for SdkTranscriptItem\n * @function getTypeUrl\n * @memberof SdkTranscriptItem\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n SdkTranscriptItem.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/SdkTranscriptItem\";\n };\n\n /**\n * Type enum.\n * @name SdkTranscriptItem.Type\n * @enum {number}\n * @property {number} PRONUNCIATION=1 PRONUNCIATION value\n * @property {number} PUNCTUATION=2 PUNCTUATION value\n */\n SdkTranscriptItem.Type = (function() {\n var valuesById = {}, values = Object.create(valuesById);\n values[valuesById[1] = \"PRONUNCIATION\"] = 1;\n values[valuesById[2] = \"PUNCTUATION\"] = 2;\n return values;\n })();\n\n return SdkTranscriptItem;\n})();\n\n$root.SdkTranscriptEntity = (function() {\n\n /**\n * Properties of a SdkTranscriptEntity.\n * @name ISdkTranscriptEntity\n * @interface ISdkTranscriptEntity\n * @property {string|null} [category] SdkTranscriptEntity category\n * @property {number|null} [confidence] SdkTranscriptEntity confidence\n * @property {string|null} [content] SdkTranscriptEntity content\n * @property {number|Long|null} [endTime] SdkTranscriptEntity endTime\n * @property {number|Long|null} [startTime] SdkTranscriptEntity startTime\n * @property {string|null} [type] SdkTranscriptEntity type\n */\n\n /**\n * Constructs a new SdkTranscriptEntity.\n * @name SdkTranscriptEntity\n * @classdesc Represents a SdkTranscriptEntity.\n * @implements ISdkTranscriptEntity\n * @constructor\n * @param {ISdkTranscriptEntity=} [properties] Properties to set\n */\n function SdkTranscriptEntity(properties) {\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * SdkTranscriptEntity category.\n * @member {string} category\n * @memberof SdkTranscriptEntity\n * @instance\n */\n SdkTranscriptEntity.prototype.category = \"\";\n\n /**\n * SdkTranscriptEntity confidence.\n * @member {number} confidence\n * @memberof SdkTranscriptEntity\n * @instance\n */\n SdkTranscriptEntity.prototype.confidence = 0;\n\n /**\n * SdkTranscriptEntity content.\n * @member {string} content\n * @memberof SdkTranscriptEntity\n * @instance\n */\n SdkTranscriptEntity.prototype.content = \"\";\n\n /**\n * SdkTranscriptEntity endTime.\n * @member {number|Long} endTime\n * @memberof SdkTranscriptEntity\n * @instance\n */\n SdkTranscriptEntity.prototype.endTime = $util.Long ? $util.Long.fromBits(0,0,false) : 0;\n\n /**\n * SdkTranscriptEntity startTime.\n * @member {number|Long} startTime\n * @memberof SdkTranscriptEntity\n * @instance\n */\n SdkTranscriptEntity.prototype.startTime = $util.Long ? $util.Long.fromBits(0,0,false) : 0;\n\n /**\n * SdkTranscriptEntity type.\n * @member {string} type\n * @memberof SdkTranscriptEntity\n * @instance\n */\n SdkTranscriptEntity.prototype.type = \"\";\n\n /**\n * Creates a new SdkTranscriptEntity instance using the specified properties.\n * @function create\n * @memberof SdkTranscriptEntity\n * @static\n * @param {ISdkTranscriptEntity=} [properties] Properties to set\n * @returns {SdkTranscriptEntity} SdkTranscriptEntity instance\n */\n SdkTranscriptEntity.create = function create(properties) {\n return new SdkTranscriptEntity(properties);\n };\n\n /**\n * Encodes the specified SdkTranscriptEntity message. Does not implicitly {@link SdkTranscriptEntity.verify|verify} messages.\n * @function encode\n * @memberof SdkTranscriptEntity\n * @static\n * @param {ISdkTranscriptEntity} message SdkTranscriptEntity message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n SdkTranscriptEntity.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.category != null && Object.hasOwnProperty.call(message, \"category\"))\n writer.uint32(/* id 1, wireType 2 =*/10).string(message.category);\n if (message.confidence != null && Object.hasOwnProperty.call(message, \"confidence\"))\n writer.uint32(/* id 2, wireType 1 =*/17).double(message.confidence);\n if (message.content != null && Object.hasOwnProperty.call(message, \"content\"))\n writer.uint32(/* id 3, wireType 2 =*/26).string(message.content);\n if (message.endTime != null && Object.hasOwnProperty.call(message, \"endTime\"))\n writer.uint32(/* id 4, wireType 0 =*/32).int64(message.endTime);\n if (message.startTime != null && Object.hasOwnProperty.call(message, \"startTime\"))\n writer.uint32(/* id 5, wireType 0 =*/40).int64(message.startTime);\n if (message.type != null && Object.hasOwnProperty.call(message, \"type\"))\n writer.uint32(/* id 6, wireType 2 =*/50).string(message.type);\n return writer;\n };\n\n /**\n * Encodes the specified SdkTranscriptEntity message, length delimited. Does not implicitly {@link SdkTranscriptEntity.verify|verify} messages.\n * @function encodeDelimited\n * @memberof SdkTranscriptEntity\n * @static\n * @param {ISdkTranscriptEntity} message SdkTranscriptEntity message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n SdkTranscriptEntity.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a SdkTranscriptEntity message from the specified reader or buffer.\n * @function decode\n * @memberof SdkTranscriptEntity\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {SdkTranscriptEntity} SdkTranscriptEntity\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n SdkTranscriptEntity.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.SdkTranscriptEntity();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n message.category = reader.string();\n break;\n }\n case 2: {\n message.confidence = reader.double();\n break;\n }\n case 3: {\n message.content = reader.string();\n break;\n }\n case 4: {\n message.endTime = reader.int64();\n break;\n }\n case 5: {\n message.startTime = reader.int64();\n break;\n }\n case 6: {\n message.type = reader.string();\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a SdkTranscriptEntity message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof SdkTranscriptEntity\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {SdkTranscriptEntity} SdkTranscriptEntity\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n SdkTranscriptEntity.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a SdkTranscriptEntity message.\n * @function verify\n * @memberof SdkTranscriptEntity\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n SdkTranscriptEntity.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.category != null && message.hasOwnProperty(\"category\"))\n if (!$util.isString(message.category))\n return \"category: string expected\";\n if (message.confidence != null && message.hasOwnProperty(\"confidence\"))\n if (typeof message.confidence !== \"number\")\n return \"confidence: number expected\";\n if (message.content != null && message.hasOwnProperty(\"content\"))\n if (!$util.isString(message.content))\n return \"content: string expected\";\n if (message.endTime != null && message.hasOwnProperty(\"endTime\"))\n if (!$util.isInteger(message.endTime) && !(message.endTime && $util.isInteger(message.endTime.low) && $util.isInteger(message.endTime.high)))\n return \"endTime: integer|Long expected\";\n if (message.startTime != null && message.hasOwnProperty(\"startTime\"))\n if (!$util.isInteger(message.startTime) && !(message.startTime && $util.isInteger(message.startTime.low) && $util.isInteger(message.startTime.high)))\n return \"startTime: integer|Long expected\";\n if (message.type != null && message.hasOwnProperty(\"type\"))\n if (!$util.isString(message.type))\n return \"type: string expected\";\n return null;\n };\n\n /**\n * Creates a SdkTranscriptEntity message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof SdkTranscriptEntity\n * @static\n * @param {Object.} object Plain object\n * @returns {SdkTranscriptEntity} SdkTranscriptEntity\n */\n SdkTranscriptEntity.fromObject = function fromObject(object) {\n if (object instanceof $root.SdkTranscriptEntity)\n return object;\n var message = new $root.SdkTranscriptEntity();\n if (object.category != null)\n message.category = String(object.category);\n if (object.confidence != null)\n message.confidence = Number(object.confidence);\n if (object.content != null)\n message.content = String(object.content);\n if (object.endTime != null)\n if ($util.Long)\n (message.endTime = $util.Long.fromValue(object.endTime)).unsigned = false;\n else if (typeof object.endTime === \"string\")\n message.endTime = parseInt(object.endTime, 10);\n else if (typeof object.endTime === \"number\")\n message.endTime = object.endTime;\n else if (typeof object.endTime === \"object\")\n message.endTime = new $util.LongBits(object.endTime.low >>> 0, object.endTime.high >>> 0).toNumber();\n if (object.startTime != null)\n if ($util.Long)\n (message.startTime = $util.Long.fromValue(object.startTime)).unsigned = false;\n else if (typeof object.startTime === \"string\")\n message.startTime = parseInt(object.startTime, 10);\n else if (typeof object.startTime === \"number\")\n message.startTime = object.startTime;\n else if (typeof object.startTime === \"object\")\n message.startTime = new $util.LongBits(object.startTime.low >>> 0, object.startTime.high >>> 0).toNumber();\n if (object.type != null)\n message.type = String(object.type);\n return message;\n };\n\n /**\n * Creates a plain object from a SdkTranscriptEntity message. Also converts values to other types if specified.\n * @function toObject\n * @memberof SdkTranscriptEntity\n * @static\n * @param {SdkTranscriptEntity} message SdkTranscriptEntity\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n SdkTranscriptEntity.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.defaults) {\n object.category = \"\";\n object.confidence = 0;\n object.content = \"\";\n if ($util.Long) {\n var long = new $util.Long(0, 0, false);\n object.endTime = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.endTime = options.longs === String ? \"0\" : 0;\n if ($util.Long) {\n var long = new $util.Long(0, 0, false);\n object.startTime = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.startTime = options.longs === String ? \"0\" : 0;\n object.type = \"\";\n }\n if (message.category != null && message.hasOwnProperty(\"category\"))\n object.category = message.category;\n if (message.confidence != null && message.hasOwnProperty(\"confidence\"))\n object.confidence = options.json && !isFinite(message.confidence) ? String(message.confidence) : message.confidence;\n if (message.content != null && message.hasOwnProperty(\"content\"))\n object.content = message.content;\n if (message.endTime != null && message.hasOwnProperty(\"endTime\"))\n if (typeof message.endTime === \"number\")\n object.endTime = options.longs === String ? String(message.endTime) : message.endTime;\n else\n object.endTime = options.longs === String ? $util.Long.prototype.toString.call(message.endTime) : options.longs === Number ? new $util.LongBits(message.endTime.low >>> 0, message.endTime.high >>> 0).toNumber() : message.endTime;\n if (message.startTime != null && message.hasOwnProperty(\"startTime\"))\n if (typeof message.startTime === \"number\")\n object.startTime = options.longs === String ? String(message.startTime) : message.startTime;\n else\n object.startTime = options.longs === String ? $util.Long.prototype.toString.call(message.startTime) : options.longs === Number ? new $util.LongBits(message.startTime.low >>> 0, message.startTime.high >>> 0).toNumber() : message.startTime;\n if (message.type != null && message.hasOwnProperty(\"type\"))\n object.type = message.type;\n return object;\n };\n\n /**\n * Converts this SdkTranscriptEntity to JSON.\n * @function toJSON\n * @memberof SdkTranscriptEntity\n * @instance\n * @returns {Object.} JSON object\n */\n SdkTranscriptEntity.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n /**\n * Gets the default type url for SdkTranscriptEntity\n * @function getTypeUrl\n * @memberof SdkTranscriptEntity\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n SdkTranscriptEntity.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/SdkTranscriptEntity\";\n };\n\n return SdkTranscriptEntity;\n})();\n\n$root.SdkTranscriptAlternative = (function() {\n\n /**\n * Properties of a SdkTranscriptAlternative.\n * @name ISdkTranscriptAlternative\n * @interface ISdkTranscriptAlternative\n * @property {Array.|null} [items] SdkTranscriptAlternative items\n * @property {string|null} [transcript] SdkTranscriptAlternative transcript\n * @property {Array.|null} [entities] SdkTranscriptAlternative entities\n */\n\n /**\n * Constructs a new SdkTranscriptAlternative.\n * @name SdkTranscriptAlternative\n * @classdesc Represents a SdkTranscriptAlternative.\n * @implements ISdkTranscriptAlternative\n * @constructor\n * @param {ISdkTranscriptAlternative=} [properties] Properties to set\n */\n function SdkTranscriptAlternative(properties) {\n this.items = [];\n this.entities = [];\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * SdkTranscriptAlternative items.\n * @member {Array.} items\n * @memberof SdkTranscriptAlternative\n * @instance\n */\n SdkTranscriptAlternative.prototype.items = $util.emptyArray;\n\n /**\n * SdkTranscriptAlternative transcript.\n * @member {string} transcript\n * @memberof SdkTranscriptAlternative\n * @instance\n */\n SdkTranscriptAlternative.prototype.transcript = \"\";\n\n /**\n * SdkTranscriptAlternative entities.\n * @member {Array.} entities\n * @memberof SdkTranscriptAlternative\n * @instance\n */\n SdkTranscriptAlternative.prototype.entities = $util.emptyArray;\n\n /**\n * Creates a new SdkTranscriptAlternative instance using the specified properties.\n * @function create\n * @memberof SdkTranscriptAlternative\n * @static\n * @param {ISdkTranscriptAlternative=} [properties] Properties to set\n * @returns {SdkTranscriptAlternative} SdkTranscriptAlternative instance\n */\n SdkTranscriptAlternative.create = function create(properties) {\n return new SdkTranscriptAlternative(properties);\n };\n\n /**\n * Encodes the specified SdkTranscriptAlternative message. Does not implicitly {@link SdkTranscriptAlternative.verify|verify} messages.\n * @function encode\n * @memberof SdkTranscriptAlternative\n * @static\n * @param {ISdkTranscriptAlternative} message SdkTranscriptAlternative message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n SdkTranscriptAlternative.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.items != null && message.items.length)\n for (var i = 0; i < message.items.length; ++i)\n $root.SdkTranscriptItem.encode(message.items[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();\n if (message.transcript != null && Object.hasOwnProperty.call(message, \"transcript\"))\n writer.uint32(/* id 2, wireType 2 =*/18).string(message.transcript);\n if (message.entities != null && message.entities.length)\n for (var i = 0; i < message.entities.length; ++i)\n $root.SdkTranscriptEntity.encode(message.entities[i], writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim();\n return writer;\n };\n\n /**\n * Encodes the specified SdkTranscriptAlternative message, length delimited. Does not implicitly {@link SdkTranscriptAlternative.verify|verify} messages.\n * @function encodeDelimited\n * @memberof SdkTranscriptAlternative\n * @static\n * @param {ISdkTranscriptAlternative} message SdkTranscriptAlternative message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n SdkTranscriptAlternative.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a SdkTranscriptAlternative message from the specified reader or buffer.\n * @function decode\n * @memberof SdkTranscriptAlternative\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {SdkTranscriptAlternative} SdkTranscriptAlternative\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n SdkTranscriptAlternative.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.SdkTranscriptAlternative();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (!(message.items && message.items.length))\n message.items = [];\n message.items.push($root.SdkTranscriptItem.decode(reader, reader.uint32()));\n break;\n }\n case 2: {\n message.transcript = reader.string();\n break;\n }\n case 3: {\n if (!(message.entities && message.entities.length))\n message.entities = [];\n message.entities.push($root.SdkTranscriptEntity.decode(reader, reader.uint32()));\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a SdkTranscriptAlternative message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof SdkTranscriptAlternative\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {SdkTranscriptAlternative} SdkTranscriptAlternative\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n SdkTranscriptAlternative.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a SdkTranscriptAlternative message.\n * @function verify\n * @memberof SdkTranscriptAlternative\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n SdkTranscriptAlternative.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.items != null && message.hasOwnProperty(\"items\")) {\n if (!Array.isArray(message.items))\n return \"items: array expected\";\n for (var i = 0; i < message.items.length; ++i) {\n var error = $root.SdkTranscriptItem.verify(message.items[i]);\n if (error)\n return \"items.\" + error;\n }\n }\n if (message.transcript != null && message.hasOwnProperty(\"transcript\"))\n if (!$util.isString(message.transcript))\n return \"transcript: string expected\";\n if (message.entities != null && message.hasOwnProperty(\"entities\")) {\n if (!Array.isArray(message.entities))\n return \"entities: array expected\";\n for (var i = 0; i < message.entities.length; ++i) {\n var error = $root.SdkTranscriptEntity.verify(message.entities[i]);\n if (error)\n return \"entities.\" + error;\n }\n }\n return null;\n };\n\n /**\n * Creates a SdkTranscriptAlternative message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof SdkTranscriptAlternative\n * @static\n * @param {Object.} object Plain object\n * @returns {SdkTranscriptAlternative} SdkTranscriptAlternative\n */\n SdkTranscriptAlternative.fromObject = function fromObject(object) {\n if (object instanceof $root.SdkTranscriptAlternative)\n return object;\n var message = new $root.SdkTranscriptAlternative();\n if (object.items) {\n if (!Array.isArray(object.items))\n throw TypeError(\".SdkTranscriptAlternative.items: array expected\");\n message.items = [];\n for (var i = 0; i < object.items.length; ++i) {\n if (typeof object.items[i] !== \"object\")\n throw TypeError(\".SdkTranscriptAlternative.items: object expected\");\n message.items[i] = $root.SdkTranscriptItem.fromObject(object.items[i]);\n }\n }\n if (object.transcript != null)\n message.transcript = String(object.transcript);\n if (object.entities) {\n if (!Array.isArray(object.entities))\n throw TypeError(\".SdkTranscriptAlternative.entities: array expected\");\n message.entities = [];\n for (var i = 0; i < object.entities.length; ++i) {\n if (typeof object.entities[i] !== \"object\")\n throw TypeError(\".SdkTranscriptAlternative.entities: object expected\");\n message.entities[i] = $root.SdkTranscriptEntity.fromObject(object.entities[i]);\n }\n }\n return message;\n };\n\n /**\n * Creates a plain object from a SdkTranscriptAlternative message. Also converts values to other types if specified.\n * @function toObject\n * @memberof SdkTranscriptAlternative\n * @static\n * @param {SdkTranscriptAlternative} message SdkTranscriptAlternative\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n SdkTranscriptAlternative.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.arrays || options.defaults) {\n object.items = [];\n object.entities = [];\n }\n if (options.defaults)\n object.transcript = \"\";\n if (message.items && message.items.length) {\n object.items = [];\n for (var j = 0; j < message.items.length; ++j)\n object.items[j] = $root.SdkTranscriptItem.toObject(message.items[j], options);\n }\n if (message.transcript != null && message.hasOwnProperty(\"transcript\"))\n object.transcript = message.transcript;\n if (message.entities && message.entities.length) {\n object.entities = [];\n for (var j = 0; j < message.entities.length; ++j)\n object.entities[j] = $root.SdkTranscriptEntity.toObject(message.entities[j], options);\n }\n return object;\n };\n\n /**\n * Converts this SdkTranscriptAlternative to JSON.\n * @function toJSON\n * @memberof SdkTranscriptAlternative\n * @instance\n * @returns {Object.} JSON object\n */\n SdkTranscriptAlternative.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n /**\n * Gets the default type url for SdkTranscriptAlternative\n * @function getTypeUrl\n * @memberof SdkTranscriptAlternative\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n SdkTranscriptAlternative.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/SdkTranscriptAlternative\";\n };\n\n return SdkTranscriptAlternative;\n})();\n\n$root.SdkTranscriptLanguageWithScore = (function() {\n\n /**\n * Properties of a SdkTranscriptLanguageWithScore.\n * @name ISdkTranscriptLanguageWithScore\n * @interface ISdkTranscriptLanguageWithScore\n * @property {string|null} [languageCode] SdkTranscriptLanguageWithScore languageCode\n * @property {number|null} [score] SdkTranscriptLanguageWithScore score\n */\n\n /**\n * Constructs a new SdkTranscriptLanguageWithScore.\n * @name SdkTranscriptLanguageWithScore\n * @classdesc Represents a SdkTranscriptLanguageWithScore.\n * @implements ISdkTranscriptLanguageWithScore\n * @constructor\n * @param {ISdkTranscriptLanguageWithScore=} [properties] Properties to set\n */\n function SdkTranscriptLanguageWithScore(properties) {\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * SdkTranscriptLanguageWithScore languageCode.\n * @member {string} languageCode\n * @memberof SdkTranscriptLanguageWithScore\n * @instance\n */\n SdkTranscriptLanguageWithScore.prototype.languageCode = \"\";\n\n /**\n * SdkTranscriptLanguageWithScore score.\n * @member {number} score\n * @memberof SdkTranscriptLanguageWithScore\n * @instance\n */\n SdkTranscriptLanguageWithScore.prototype.score = 0;\n\n /**\n * Creates a new SdkTranscriptLanguageWithScore instance using the specified properties.\n * @function create\n * @memberof SdkTranscriptLanguageWithScore\n * @static\n * @param {ISdkTranscriptLanguageWithScore=} [properties] Properties to set\n * @returns {SdkTranscriptLanguageWithScore} SdkTranscriptLanguageWithScore instance\n */\n SdkTranscriptLanguageWithScore.create = function create(properties) {\n return new SdkTranscriptLanguageWithScore(properties);\n };\n\n /**\n * Encodes the specified SdkTranscriptLanguageWithScore message. Does not implicitly {@link SdkTranscriptLanguageWithScore.verify|verify} messages.\n * @function encode\n * @memberof SdkTranscriptLanguageWithScore\n * @static\n * @param {ISdkTranscriptLanguageWithScore} message SdkTranscriptLanguageWithScore message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n SdkTranscriptLanguageWithScore.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.languageCode != null && Object.hasOwnProperty.call(message, \"languageCode\"))\n writer.uint32(/* id 1, wireType 2 =*/10).string(message.languageCode);\n if (message.score != null && Object.hasOwnProperty.call(message, \"score\"))\n writer.uint32(/* id 2, wireType 1 =*/17).double(message.score);\n return writer;\n };\n\n /**\n * Encodes the specified SdkTranscriptLanguageWithScore message, length delimited. Does not implicitly {@link SdkTranscriptLanguageWithScore.verify|verify} messages.\n * @function encodeDelimited\n * @memberof SdkTranscriptLanguageWithScore\n * @static\n * @param {ISdkTranscriptLanguageWithScore} message SdkTranscriptLanguageWithScore message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n SdkTranscriptLanguageWithScore.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a SdkTranscriptLanguageWithScore message from the specified reader or buffer.\n * @function decode\n * @memberof SdkTranscriptLanguageWithScore\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {SdkTranscriptLanguageWithScore} SdkTranscriptLanguageWithScore\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n SdkTranscriptLanguageWithScore.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.SdkTranscriptLanguageWithScore();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n message.languageCode = reader.string();\n break;\n }\n case 2: {\n message.score = reader.double();\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a SdkTranscriptLanguageWithScore message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof SdkTranscriptLanguageWithScore\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {SdkTranscriptLanguageWithScore} SdkTranscriptLanguageWithScore\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n SdkTranscriptLanguageWithScore.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a SdkTranscriptLanguageWithScore message.\n * @function verify\n * @memberof SdkTranscriptLanguageWithScore\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n SdkTranscriptLanguageWithScore.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.languageCode != null && message.hasOwnProperty(\"languageCode\"))\n if (!$util.isString(message.languageCode))\n return \"languageCode: string expected\";\n if (message.score != null && message.hasOwnProperty(\"score\"))\n if (typeof message.score !== \"number\")\n return \"score: number expected\";\n return null;\n };\n\n /**\n * Creates a SdkTranscriptLanguageWithScore message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof SdkTranscriptLanguageWithScore\n * @static\n * @param {Object.} object Plain object\n * @returns {SdkTranscriptLanguageWithScore} SdkTranscriptLanguageWithScore\n */\n SdkTranscriptLanguageWithScore.fromObject = function fromObject(object) {\n if (object instanceof $root.SdkTranscriptLanguageWithScore)\n return object;\n var message = new $root.SdkTranscriptLanguageWithScore();\n if (object.languageCode != null)\n message.languageCode = String(object.languageCode);\n if (object.score != null)\n message.score = Number(object.score);\n return message;\n };\n\n /**\n * Creates a plain object from a SdkTranscriptLanguageWithScore message. Also converts values to other types if specified.\n * @function toObject\n * @memberof SdkTranscriptLanguageWithScore\n * @static\n * @param {SdkTranscriptLanguageWithScore} message SdkTranscriptLanguageWithScore\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n SdkTranscriptLanguageWithScore.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.defaults) {\n object.languageCode = \"\";\n object.score = 0;\n }\n if (message.languageCode != null && message.hasOwnProperty(\"languageCode\"))\n object.languageCode = message.languageCode;\n if (message.score != null && message.hasOwnProperty(\"score\"))\n object.score = options.json && !isFinite(message.score) ? String(message.score) : message.score;\n return object;\n };\n\n /**\n * Converts this SdkTranscriptLanguageWithScore to JSON.\n * @function toJSON\n * @memberof SdkTranscriptLanguageWithScore\n * @instance\n * @returns {Object.} JSON object\n */\n SdkTranscriptLanguageWithScore.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n /**\n * Gets the default type url for SdkTranscriptLanguageWithScore\n * @function getTypeUrl\n * @memberof SdkTranscriptLanguageWithScore\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n SdkTranscriptLanguageWithScore.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/SdkTranscriptLanguageWithScore\";\n };\n\n return SdkTranscriptLanguageWithScore;\n})();\n\n$root.SdkTranscriptResult = (function() {\n\n /**\n * Properties of a SdkTranscriptResult.\n * @name ISdkTranscriptResult\n * @interface ISdkTranscriptResult\n * @property {Array.|null} [alternatives] SdkTranscriptResult alternatives\n * @property {string|null} [channelId] SdkTranscriptResult channelId\n * @property {number|Long|null} [endTime] SdkTranscriptResult endTime\n * @property {boolean|null} [isPartial] SdkTranscriptResult isPartial\n * @property {string|null} [resultId] SdkTranscriptResult resultId\n * @property {number|Long|null} [startTime] SdkTranscriptResult startTime\n * @property {string|null} [languageCode] SdkTranscriptResult languageCode\n * @property {Array.|null} [languageIdentification] SdkTranscriptResult languageIdentification\n */\n\n /**\n * Constructs a new SdkTranscriptResult.\n * @name SdkTranscriptResult\n * @classdesc Represents a SdkTranscriptResult.\n * @implements ISdkTranscriptResult\n * @constructor\n * @param {ISdkTranscriptResult=} [properties] Properties to set\n */\n function SdkTranscriptResult(properties) {\n this.alternatives = [];\n this.languageIdentification = [];\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * SdkTranscriptResult alternatives.\n * @member {Array.} alternatives\n * @memberof SdkTranscriptResult\n * @instance\n */\n SdkTranscriptResult.prototype.alternatives = $util.emptyArray;\n\n /**\n * SdkTranscriptResult channelId.\n * @member {string} channelId\n * @memberof SdkTranscriptResult\n * @instance\n */\n SdkTranscriptResult.prototype.channelId = \"\";\n\n /**\n * SdkTranscriptResult endTime.\n * @member {number|Long} endTime\n * @memberof SdkTranscriptResult\n * @instance\n */\n SdkTranscriptResult.prototype.endTime = $util.Long ? $util.Long.fromBits(0,0,false) : 0;\n\n /**\n * SdkTranscriptResult isPartial.\n * @member {boolean} isPartial\n * @memberof SdkTranscriptResult\n * @instance\n */\n SdkTranscriptResult.prototype.isPartial = false;\n\n /**\n * SdkTranscriptResult resultId.\n * @member {string} resultId\n * @memberof SdkTranscriptResult\n * @instance\n */\n SdkTranscriptResult.prototype.resultId = \"\";\n\n /**\n * SdkTranscriptResult startTime.\n * @member {number|Long} startTime\n * @memberof SdkTranscriptResult\n * @instance\n */\n SdkTranscriptResult.prototype.startTime = $util.Long ? $util.Long.fromBits(0,0,false) : 0;\n\n /**\n * SdkTranscriptResult languageCode.\n * @member {string} languageCode\n * @memberof SdkTranscriptResult\n * @instance\n */\n SdkTranscriptResult.prototype.languageCode = \"\";\n\n /**\n * SdkTranscriptResult languageIdentification.\n * @member {Array.} languageIdentification\n * @memberof SdkTranscriptResult\n * @instance\n */\n SdkTranscriptResult.prototype.languageIdentification = $util.emptyArray;\n\n /**\n * Creates a new SdkTranscriptResult instance using the specified properties.\n * @function create\n * @memberof SdkTranscriptResult\n * @static\n * @param {ISdkTranscriptResult=} [properties] Properties to set\n * @returns {SdkTranscriptResult} SdkTranscriptResult instance\n */\n SdkTranscriptResult.create = function create(properties) {\n return new SdkTranscriptResult(properties);\n };\n\n /**\n * Encodes the specified SdkTranscriptResult message. Does not implicitly {@link SdkTranscriptResult.verify|verify} messages.\n * @function encode\n * @memberof SdkTranscriptResult\n * @static\n * @param {ISdkTranscriptResult} message SdkTranscriptResult message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n SdkTranscriptResult.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.alternatives != null && message.alternatives.length)\n for (var i = 0; i < message.alternatives.length; ++i)\n $root.SdkTranscriptAlternative.encode(message.alternatives[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();\n if (message.channelId != null && Object.hasOwnProperty.call(message, \"channelId\"))\n writer.uint32(/* id 2, wireType 2 =*/18).string(message.channelId);\n if (message.endTime != null && Object.hasOwnProperty.call(message, \"endTime\"))\n writer.uint32(/* id 3, wireType 0 =*/24).int64(message.endTime);\n if (message.isPartial != null && Object.hasOwnProperty.call(message, \"isPartial\"))\n writer.uint32(/* id 4, wireType 0 =*/32).bool(message.isPartial);\n if (message.resultId != null && Object.hasOwnProperty.call(message, \"resultId\"))\n writer.uint32(/* id 5, wireType 2 =*/42).string(message.resultId);\n if (message.startTime != null && Object.hasOwnProperty.call(message, \"startTime\"))\n writer.uint32(/* id 6, wireType 0 =*/48).int64(message.startTime);\n if (message.languageCode != null && Object.hasOwnProperty.call(message, \"languageCode\"))\n writer.uint32(/* id 7, wireType 2 =*/58).string(message.languageCode);\n if (message.languageIdentification != null && message.languageIdentification.length)\n for (var i = 0; i < message.languageIdentification.length; ++i)\n $root.SdkTranscriptLanguageWithScore.encode(message.languageIdentification[i], writer.uint32(/* id 8, wireType 2 =*/66).fork()).ldelim();\n return writer;\n };\n\n /**\n * Encodes the specified SdkTranscriptResult message, length delimited. Does not implicitly {@link SdkTranscriptResult.verify|verify} messages.\n * @function encodeDelimited\n * @memberof SdkTranscriptResult\n * @static\n * @param {ISdkTranscriptResult} message SdkTranscriptResult message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n SdkTranscriptResult.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a SdkTranscriptResult message from the specified reader or buffer.\n * @function decode\n * @memberof SdkTranscriptResult\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {SdkTranscriptResult} SdkTranscriptResult\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n SdkTranscriptResult.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.SdkTranscriptResult();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (!(message.alternatives && message.alternatives.length))\n message.alternatives = [];\n message.alternatives.push($root.SdkTranscriptAlternative.decode(reader, reader.uint32()));\n break;\n }\n case 2: {\n message.channelId = reader.string();\n break;\n }\n case 3: {\n message.endTime = reader.int64();\n break;\n }\n case 4: {\n message.isPartial = reader.bool();\n break;\n }\n case 5: {\n message.resultId = reader.string();\n break;\n }\n case 6: {\n message.startTime = reader.int64();\n break;\n }\n case 7: {\n message.languageCode = reader.string();\n break;\n }\n case 8: {\n if (!(message.languageIdentification && message.languageIdentification.length))\n message.languageIdentification = [];\n message.languageIdentification.push($root.SdkTranscriptLanguageWithScore.decode(reader, reader.uint32()));\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a SdkTranscriptResult message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof SdkTranscriptResult\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {SdkTranscriptResult} SdkTranscriptResult\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n SdkTranscriptResult.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a SdkTranscriptResult message.\n * @function verify\n * @memberof SdkTranscriptResult\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n SdkTranscriptResult.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.alternatives != null && message.hasOwnProperty(\"alternatives\")) {\n if (!Array.isArray(message.alternatives))\n return \"alternatives: array expected\";\n for (var i = 0; i < message.alternatives.length; ++i) {\n var error = $root.SdkTranscriptAlternative.verify(message.alternatives[i]);\n if (error)\n return \"alternatives.\" + error;\n }\n }\n if (message.channelId != null && message.hasOwnProperty(\"channelId\"))\n if (!$util.isString(message.channelId))\n return \"channelId: string expected\";\n if (message.endTime != null && message.hasOwnProperty(\"endTime\"))\n if (!$util.isInteger(message.endTime) && !(message.endTime && $util.isInteger(message.endTime.low) && $util.isInteger(message.endTime.high)))\n return \"endTime: integer|Long expected\";\n if (message.isPartial != null && message.hasOwnProperty(\"isPartial\"))\n if (typeof message.isPartial !== \"boolean\")\n return \"isPartial: boolean expected\";\n if (message.resultId != null && message.hasOwnProperty(\"resultId\"))\n if (!$util.isString(message.resultId))\n return \"resultId: string expected\";\n if (message.startTime != null && message.hasOwnProperty(\"startTime\"))\n if (!$util.isInteger(message.startTime) && !(message.startTime && $util.isInteger(message.startTime.low) && $util.isInteger(message.startTime.high)))\n return \"startTime: integer|Long expected\";\n if (message.languageCode != null && message.hasOwnProperty(\"languageCode\"))\n if (!$util.isString(message.languageCode))\n return \"languageCode: string expected\";\n if (message.languageIdentification != null && message.hasOwnProperty(\"languageIdentification\")) {\n if (!Array.isArray(message.languageIdentification))\n return \"languageIdentification: array expected\";\n for (var i = 0; i < message.languageIdentification.length; ++i) {\n var error = $root.SdkTranscriptLanguageWithScore.verify(message.languageIdentification[i]);\n if (error)\n return \"languageIdentification.\" + error;\n }\n }\n return null;\n };\n\n /**\n * Creates a SdkTranscriptResult message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof SdkTranscriptResult\n * @static\n * @param {Object.} object Plain object\n * @returns {SdkTranscriptResult} SdkTranscriptResult\n */\n SdkTranscriptResult.fromObject = function fromObject(object) {\n if (object instanceof $root.SdkTranscriptResult)\n return object;\n var message = new $root.SdkTranscriptResult();\n if (object.alternatives) {\n if (!Array.isArray(object.alternatives))\n throw TypeError(\".SdkTranscriptResult.alternatives: array expected\");\n message.alternatives = [];\n for (var i = 0; i < object.alternatives.length; ++i) {\n if (typeof object.alternatives[i] !== \"object\")\n throw TypeError(\".SdkTranscriptResult.alternatives: object expected\");\n message.alternatives[i] = $root.SdkTranscriptAlternative.fromObject(object.alternatives[i]);\n }\n }\n if (object.channelId != null)\n message.channelId = String(object.channelId);\n if (object.endTime != null)\n if ($util.Long)\n (message.endTime = $util.Long.fromValue(object.endTime)).unsigned = false;\n else if (typeof object.endTime === \"string\")\n message.endTime = parseInt(object.endTime, 10);\n else if (typeof object.endTime === \"number\")\n message.endTime = object.endTime;\n else if (typeof object.endTime === \"object\")\n message.endTime = new $util.LongBits(object.endTime.low >>> 0, object.endTime.high >>> 0).toNumber();\n if (object.isPartial != null)\n message.isPartial = Boolean(object.isPartial);\n if (object.resultId != null)\n message.resultId = String(object.resultId);\n if (object.startTime != null)\n if ($util.Long)\n (message.startTime = $util.Long.fromValue(object.startTime)).unsigned = false;\n else if (typeof object.startTime === \"string\")\n message.startTime = parseInt(object.startTime, 10);\n else if (typeof object.startTime === \"number\")\n message.startTime = object.startTime;\n else if (typeof object.startTime === \"object\")\n message.startTime = new $util.LongBits(object.startTime.low >>> 0, object.startTime.high >>> 0).toNumber();\n if (object.languageCode != null)\n message.languageCode = String(object.languageCode);\n if (object.languageIdentification) {\n if (!Array.isArray(object.languageIdentification))\n throw TypeError(\".SdkTranscriptResult.languageIdentification: array expected\");\n message.languageIdentification = [];\n for (var i = 0; i < object.languageIdentification.length; ++i) {\n if (typeof object.languageIdentification[i] !== \"object\")\n throw TypeError(\".SdkTranscriptResult.languageIdentification: object expected\");\n message.languageIdentification[i] = $root.SdkTranscriptLanguageWithScore.fromObject(object.languageIdentification[i]);\n }\n }\n return message;\n };\n\n /**\n * Creates a plain object from a SdkTranscriptResult message. Also converts values to other types if specified.\n * @function toObject\n * @memberof SdkTranscriptResult\n * @static\n * @param {SdkTranscriptResult} message SdkTranscriptResult\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n SdkTranscriptResult.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.arrays || options.defaults) {\n object.alternatives = [];\n object.languageIdentification = [];\n }\n if (options.defaults) {\n object.channelId = \"\";\n if ($util.Long) {\n var long = new $util.Long(0, 0, false);\n object.endTime = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.endTime = options.longs === String ? \"0\" : 0;\n object.isPartial = false;\n object.resultId = \"\";\n if ($util.Long) {\n var long = new $util.Long(0, 0, false);\n object.startTime = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.startTime = options.longs === String ? \"0\" : 0;\n object.languageCode = \"\";\n }\n if (message.alternatives && message.alternatives.length) {\n object.alternatives = [];\n for (var j = 0; j < message.alternatives.length; ++j)\n object.alternatives[j] = $root.SdkTranscriptAlternative.toObject(message.alternatives[j], options);\n }\n if (message.channelId != null && message.hasOwnProperty(\"channelId\"))\n object.channelId = message.channelId;\n if (message.endTime != null && message.hasOwnProperty(\"endTime\"))\n if (typeof message.endTime === \"number\")\n object.endTime = options.longs === String ? String(message.endTime) : message.endTime;\n else\n object.endTime = options.longs === String ? $util.Long.prototype.toString.call(message.endTime) : options.longs === Number ? new $util.LongBits(message.endTime.low >>> 0, message.endTime.high >>> 0).toNumber() : message.endTime;\n if (message.isPartial != null && message.hasOwnProperty(\"isPartial\"))\n object.isPartial = message.isPartial;\n if (message.resultId != null && message.hasOwnProperty(\"resultId\"))\n object.resultId = message.resultId;\n if (message.startTime != null && message.hasOwnProperty(\"startTime\"))\n if (typeof message.startTime === \"number\")\n object.startTime = options.longs === String ? String(message.startTime) : message.startTime;\n else\n object.startTime = options.longs === String ? $util.Long.prototype.toString.call(message.startTime) : options.longs === Number ? new $util.LongBits(message.startTime.low >>> 0, message.startTime.high >>> 0).toNumber() : message.startTime;\n if (message.languageCode != null && message.hasOwnProperty(\"languageCode\"))\n object.languageCode = message.languageCode;\n if (message.languageIdentification && message.languageIdentification.length) {\n object.languageIdentification = [];\n for (var j = 0; j < message.languageIdentification.length; ++j)\n object.languageIdentification[j] = $root.SdkTranscriptLanguageWithScore.toObject(message.languageIdentification[j], options);\n }\n return object;\n };\n\n /**\n * Converts this SdkTranscriptResult to JSON.\n * @function toJSON\n * @memberof SdkTranscriptResult\n * @instance\n * @returns {Object.} JSON object\n */\n SdkTranscriptResult.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n /**\n * Gets the default type url for SdkTranscriptResult\n * @function getTypeUrl\n * @memberof SdkTranscriptResult\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n SdkTranscriptResult.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/SdkTranscriptResult\";\n };\n\n return SdkTranscriptResult;\n})();\n\n$root.SdkTranscript = (function() {\n\n /**\n * Properties of a SdkTranscript.\n * @name ISdkTranscript\n * @interface ISdkTranscript\n * @property {Array.|null} [results] SdkTranscript results\n */\n\n /**\n * Constructs a new SdkTranscript.\n * @name SdkTranscript\n * @classdesc Represents a SdkTranscript.\n * @implements ISdkTranscript\n * @constructor\n * @param {ISdkTranscript=} [properties] Properties to set\n */\n function SdkTranscript(properties) {\n this.results = [];\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * SdkTranscript results.\n * @member {Array.} results\n * @memberof SdkTranscript\n * @instance\n */\n SdkTranscript.prototype.results = $util.emptyArray;\n\n /**\n * Creates a new SdkTranscript instance using the specified properties.\n * @function create\n * @memberof SdkTranscript\n * @static\n * @param {ISdkTranscript=} [properties] Properties to set\n * @returns {SdkTranscript} SdkTranscript instance\n */\n SdkTranscript.create = function create(properties) {\n return new SdkTranscript(properties);\n };\n\n /**\n * Encodes the specified SdkTranscript message. Does not implicitly {@link SdkTranscript.verify|verify} messages.\n * @function encode\n * @memberof SdkTranscript\n * @static\n * @param {ISdkTranscript} message SdkTranscript message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n SdkTranscript.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.results != null && message.results.length)\n for (var i = 0; i < message.results.length; ++i)\n $root.SdkTranscriptResult.encode(message.results[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();\n return writer;\n };\n\n /**\n * Encodes the specified SdkTranscript message, length delimited. Does not implicitly {@link SdkTranscript.verify|verify} messages.\n * @function encodeDelimited\n * @memberof SdkTranscript\n * @static\n * @param {ISdkTranscript} message SdkTranscript message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n SdkTranscript.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a SdkTranscript message from the specified reader or buffer.\n * @function decode\n * @memberof SdkTranscript\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {SdkTranscript} SdkTranscript\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n SdkTranscript.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.SdkTranscript();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (!(message.results && message.results.length))\n message.results = [];\n message.results.push($root.SdkTranscriptResult.decode(reader, reader.uint32()));\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a SdkTranscript message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof SdkTranscript\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {SdkTranscript} SdkTranscript\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n SdkTranscript.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a SdkTranscript message.\n * @function verify\n * @memberof SdkTranscript\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n SdkTranscript.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.results != null && message.hasOwnProperty(\"results\")) {\n if (!Array.isArray(message.results))\n return \"results: array expected\";\n for (var i = 0; i < message.results.length; ++i) {\n var error = $root.SdkTranscriptResult.verify(message.results[i]);\n if (error)\n return \"results.\" + error;\n }\n }\n return null;\n };\n\n /**\n * Creates a SdkTranscript message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof SdkTranscript\n * @static\n * @param {Object.} object Plain object\n * @returns {SdkTranscript} SdkTranscript\n */\n SdkTranscript.fromObject = function fromObject(object) {\n if (object instanceof $root.SdkTranscript)\n return object;\n var message = new $root.SdkTranscript();\n if (object.results) {\n if (!Array.isArray(object.results))\n throw TypeError(\".SdkTranscript.results: array expected\");\n message.results = [];\n for (var i = 0; i < object.results.length; ++i) {\n if (typeof object.results[i] !== \"object\")\n throw TypeError(\".SdkTranscript.results: object expected\");\n message.results[i] = $root.SdkTranscriptResult.fromObject(object.results[i]);\n }\n }\n return message;\n };\n\n /**\n * Creates a plain object from a SdkTranscript message. Also converts values to other types if specified.\n * @function toObject\n * @memberof SdkTranscript\n * @static\n * @param {SdkTranscript} message SdkTranscript\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n SdkTranscript.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.arrays || options.defaults)\n object.results = [];\n if (message.results && message.results.length) {\n object.results = [];\n for (var j = 0; j < message.results.length; ++j)\n object.results[j] = $root.SdkTranscriptResult.toObject(message.results[j], options);\n }\n return object;\n };\n\n /**\n * Converts this SdkTranscript to JSON.\n * @function toJSON\n * @memberof SdkTranscript\n * @instance\n * @returns {Object.} JSON object\n */\n SdkTranscript.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n /**\n * Gets the default type url for SdkTranscript\n * @function getTypeUrl\n * @memberof SdkTranscript\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n SdkTranscript.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/SdkTranscript\";\n };\n\n return SdkTranscript;\n})();\n\n$root.SdkTranscriptionStatus = (function() {\n\n /**\n * Properties of a SdkTranscriptionStatus.\n * @name ISdkTranscriptionStatus\n * @interface ISdkTranscriptionStatus\n * @property {SdkTranscriptionStatus.Type|null} [type] SdkTranscriptionStatus type\n * @property {number|Long|null} [eventTime] SdkTranscriptionStatus eventTime\n * @property {string|null} [transcriptionRegion] SdkTranscriptionStatus transcriptionRegion\n * @property {string|null} [transcriptionConfiguration] SdkTranscriptionStatus transcriptionConfiguration\n * @property {string|null} [message] SdkTranscriptionStatus message\n */\n\n /**\n * Constructs a new SdkTranscriptionStatus.\n * @name SdkTranscriptionStatus\n * @classdesc Represents a SdkTranscriptionStatus.\n * @implements ISdkTranscriptionStatus\n * @constructor\n * @param {ISdkTranscriptionStatus=} [properties] Properties to set\n */\n function SdkTranscriptionStatus(properties) {\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * SdkTranscriptionStatus type.\n * @member {SdkTranscriptionStatus.Type} type\n * @memberof SdkTranscriptionStatus\n * @instance\n */\n SdkTranscriptionStatus.prototype.type = 1;\n\n /**\n * SdkTranscriptionStatus eventTime.\n * @member {number|Long} eventTime\n * @memberof SdkTranscriptionStatus\n * @instance\n */\n SdkTranscriptionStatus.prototype.eventTime = $util.Long ? $util.Long.fromBits(0,0,false) : 0;\n\n /**\n * SdkTranscriptionStatus transcriptionRegion.\n * @member {string} transcriptionRegion\n * @memberof SdkTranscriptionStatus\n * @instance\n */\n SdkTranscriptionStatus.prototype.transcriptionRegion = \"\";\n\n /**\n * SdkTranscriptionStatus transcriptionConfiguration.\n * @member {string} transcriptionConfiguration\n * @memberof SdkTranscriptionStatus\n * @instance\n */\n SdkTranscriptionStatus.prototype.transcriptionConfiguration = \"\";\n\n /**\n * SdkTranscriptionStatus message.\n * @member {string} message\n * @memberof SdkTranscriptionStatus\n * @instance\n */\n SdkTranscriptionStatus.prototype.message = \"\";\n\n /**\n * Creates a new SdkTranscriptionStatus instance using the specified properties.\n * @function create\n * @memberof SdkTranscriptionStatus\n * @static\n * @param {ISdkTranscriptionStatus=} [properties] Properties to set\n * @returns {SdkTranscriptionStatus} SdkTranscriptionStatus instance\n */\n SdkTranscriptionStatus.create = function create(properties) {\n return new SdkTranscriptionStatus(properties);\n };\n\n /**\n * Encodes the specified SdkTranscriptionStatus message. Does not implicitly {@link SdkTranscriptionStatus.verify|verify} messages.\n * @function encode\n * @memberof SdkTranscriptionStatus\n * @static\n * @param {ISdkTranscriptionStatus} message SdkTranscriptionStatus message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n SdkTranscriptionStatus.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.type != null && Object.hasOwnProperty.call(message, \"type\"))\n writer.uint32(/* id 1, wireType 0 =*/8).int32(message.type);\n if (message.eventTime != null && Object.hasOwnProperty.call(message, \"eventTime\"))\n writer.uint32(/* id 2, wireType 0 =*/16).int64(message.eventTime);\n if (message.transcriptionRegion != null && Object.hasOwnProperty.call(message, \"transcriptionRegion\"))\n writer.uint32(/* id 3, wireType 2 =*/26).string(message.transcriptionRegion);\n if (message.transcriptionConfiguration != null && Object.hasOwnProperty.call(message, \"transcriptionConfiguration\"))\n writer.uint32(/* id 4, wireType 2 =*/34).string(message.transcriptionConfiguration);\n if (message.message != null && Object.hasOwnProperty.call(message, \"message\"))\n writer.uint32(/* id 5, wireType 2 =*/42).string(message.message);\n return writer;\n };\n\n /**\n * Encodes the specified SdkTranscriptionStatus message, length delimited. Does not implicitly {@link SdkTranscriptionStatus.verify|verify} messages.\n * @function encodeDelimited\n * @memberof SdkTranscriptionStatus\n * @static\n * @param {ISdkTranscriptionStatus} message SdkTranscriptionStatus message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n SdkTranscriptionStatus.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a SdkTranscriptionStatus message from the specified reader or buffer.\n * @function decode\n * @memberof SdkTranscriptionStatus\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {SdkTranscriptionStatus} SdkTranscriptionStatus\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n SdkTranscriptionStatus.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.SdkTranscriptionStatus();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n message.type = reader.int32();\n break;\n }\n case 2: {\n message.eventTime = reader.int64();\n break;\n }\n case 3: {\n message.transcriptionRegion = reader.string();\n break;\n }\n case 4: {\n message.transcriptionConfiguration = reader.string();\n break;\n }\n case 5: {\n message.message = reader.string();\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a SdkTranscriptionStatus message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof SdkTranscriptionStatus\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {SdkTranscriptionStatus} SdkTranscriptionStatus\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n SdkTranscriptionStatus.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a SdkTranscriptionStatus message.\n * @function verify\n * @memberof SdkTranscriptionStatus\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n SdkTranscriptionStatus.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.type != null && message.hasOwnProperty(\"type\"))\n switch (message.type) {\n default:\n return \"type: enum value expected\";\n case 1:\n case 2:\n case 3:\n case 4:\n case 5:\n break;\n }\n if (message.eventTime != null && message.hasOwnProperty(\"eventTime\"))\n if (!$util.isInteger(message.eventTime) && !(message.eventTime && $util.isInteger(message.eventTime.low) && $util.isInteger(message.eventTime.high)))\n return \"eventTime: integer|Long expected\";\n if (message.transcriptionRegion != null && message.hasOwnProperty(\"transcriptionRegion\"))\n if (!$util.isString(message.transcriptionRegion))\n return \"transcriptionRegion: string expected\";\n if (message.transcriptionConfiguration != null && message.hasOwnProperty(\"transcriptionConfiguration\"))\n if (!$util.isString(message.transcriptionConfiguration))\n return \"transcriptionConfiguration: string expected\";\n if (message.message != null && message.hasOwnProperty(\"message\"))\n if (!$util.isString(message.message))\n return \"message: string expected\";\n return null;\n };\n\n /**\n * Creates a SdkTranscriptionStatus message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof SdkTranscriptionStatus\n * @static\n * @param {Object.} object Plain object\n * @returns {SdkTranscriptionStatus} SdkTranscriptionStatus\n */\n SdkTranscriptionStatus.fromObject = function fromObject(object) {\n if (object instanceof $root.SdkTranscriptionStatus)\n return object;\n var message = new $root.SdkTranscriptionStatus();\n switch (object.type) {\n default:\n if (typeof object.type === \"number\") {\n message.type = object.type;\n break;\n }\n break;\n case \"STARTED\":\n case 1:\n message.type = 1;\n break;\n case \"INTERRUPTED\":\n case 2:\n message.type = 2;\n break;\n case \"RESUMED\":\n case 3:\n message.type = 3;\n break;\n case \"STOPPED\":\n case 4:\n message.type = 4;\n break;\n case \"FAILED\":\n case 5:\n message.type = 5;\n break;\n }\n if (object.eventTime != null)\n if ($util.Long)\n (message.eventTime = $util.Long.fromValue(object.eventTime)).unsigned = false;\n else if (typeof object.eventTime === \"string\")\n message.eventTime = parseInt(object.eventTime, 10);\n else if (typeof object.eventTime === \"number\")\n message.eventTime = object.eventTime;\n else if (typeof object.eventTime === \"object\")\n message.eventTime = new $util.LongBits(object.eventTime.low >>> 0, object.eventTime.high >>> 0).toNumber();\n if (object.transcriptionRegion != null)\n message.transcriptionRegion = String(object.transcriptionRegion);\n if (object.transcriptionConfiguration != null)\n message.transcriptionConfiguration = String(object.transcriptionConfiguration);\n if (object.message != null)\n message.message = String(object.message);\n return message;\n };\n\n /**\n * Creates a plain object from a SdkTranscriptionStatus message. Also converts values to other types if specified.\n * @function toObject\n * @memberof SdkTranscriptionStatus\n * @static\n * @param {SdkTranscriptionStatus} message SdkTranscriptionStatus\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n SdkTranscriptionStatus.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.defaults) {\n object.type = options.enums === String ? \"STARTED\" : 1;\n if ($util.Long) {\n var long = new $util.Long(0, 0, false);\n object.eventTime = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.eventTime = options.longs === String ? \"0\" : 0;\n object.transcriptionRegion = \"\";\n object.transcriptionConfiguration = \"\";\n object.message = \"\";\n }\n if (message.type != null && message.hasOwnProperty(\"type\"))\n object.type = options.enums === String ? $root.SdkTranscriptionStatus.Type[message.type] === undefined ? message.type : $root.SdkTranscriptionStatus.Type[message.type] : message.type;\n if (message.eventTime != null && message.hasOwnProperty(\"eventTime\"))\n if (typeof message.eventTime === \"number\")\n object.eventTime = options.longs === String ? String(message.eventTime) : message.eventTime;\n else\n object.eventTime = options.longs === String ? $util.Long.prototype.toString.call(message.eventTime) : options.longs === Number ? new $util.LongBits(message.eventTime.low >>> 0, message.eventTime.high >>> 0).toNumber() : message.eventTime;\n if (message.transcriptionRegion != null && message.hasOwnProperty(\"transcriptionRegion\"))\n object.transcriptionRegion = message.transcriptionRegion;\n if (message.transcriptionConfiguration != null && message.hasOwnProperty(\"transcriptionConfiguration\"))\n object.transcriptionConfiguration = message.transcriptionConfiguration;\n if (message.message != null && message.hasOwnProperty(\"message\"))\n object.message = message.message;\n return object;\n };\n\n /**\n * Converts this SdkTranscriptionStatus to JSON.\n * @function toJSON\n * @memberof SdkTranscriptionStatus\n * @instance\n * @returns {Object.} JSON object\n */\n SdkTranscriptionStatus.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n /**\n * Gets the default type url for SdkTranscriptionStatus\n * @function getTypeUrl\n * @memberof SdkTranscriptionStatus\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n SdkTranscriptionStatus.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/SdkTranscriptionStatus\";\n };\n\n /**\n * Type enum.\n * @name SdkTranscriptionStatus.Type\n * @enum {number}\n * @property {number} STARTED=1 STARTED value\n * @property {number} INTERRUPTED=2 INTERRUPTED value\n * @property {number} RESUMED=3 RESUMED value\n * @property {number} STOPPED=4 STOPPED value\n * @property {number} FAILED=5 FAILED value\n */\n SdkTranscriptionStatus.Type = (function() {\n var valuesById = {}, values = Object.create(valuesById);\n values[valuesById[1] = \"STARTED\"] = 1;\n values[valuesById[2] = \"INTERRUPTED\"] = 2;\n values[valuesById[3] = \"RESUMED\"] = 3;\n values[valuesById[4] = \"STOPPED\"] = 4;\n values[valuesById[5] = \"FAILED\"] = 5;\n return values;\n })();\n\n return SdkTranscriptionStatus;\n})();\n\n$root.SdkTranscriptEvent = (function() {\n\n /**\n * Properties of a SdkTranscriptEvent.\n * @name ISdkTranscriptEvent\n * @interface ISdkTranscriptEvent\n * @property {ISdkTranscriptionStatus|null} [status] SdkTranscriptEvent status\n * @property {ISdkTranscript|null} [transcript] SdkTranscriptEvent transcript\n */\n\n /**\n * Constructs a new SdkTranscriptEvent.\n * @name SdkTranscriptEvent\n * @classdesc Represents a SdkTranscriptEvent.\n * @implements ISdkTranscriptEvent\n * @constructor\n * @param {ISdkTranscriptEvent=} [properties] Properties to set\n */\n function SdkTranscriptEvent(properties) {\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * SdkTranscriptEvent status.\n * @member {ISdkTranscriptionStatus|null|undefined} status\n * @memberof SdkTranscriptEvent\n * @instance\n */\n SdkTranscriptEvent.prototype.status = null;\n\n /**\n * SdkTranscriptEvent transcript.\n * @member {ISdkTranscript|null|undefined} transcript\n * @memberof SdkTranscriptEvent\n * @instance\n */\n SdkTranscriptEvent.prototype.transcript = null;\n\n // OneOf field names bound to virtual getters and setters\n var $oneOfFields;\n\n /**\n * SdkTranscriptEvent Event.\n * @member {\"status\"|\"transcript\"|undefined} Event\n * @memberof SdkTranscriptEvent\n * @instance\n */\n Object.defineProperty(SdkTranscriptEvent.prototype, \"Event\", {\n get: $util.oneOfGetter($oneOfFields = [\"status\", \"transcript\"]),\n set: $util.oneOfSetter($oneOfFields)\n });\n\n /**\n * Creates a new SdkTranscriptEvent instance using the specified properties.\n * @function create\n * @memberof SdkTranscriptEvent\n * @static\n * @param {ISdkTranscriptEvent=} [properties] Properties to set\n * @returns {SdkTranscriptEvent} SdkTranscriptEvent instance\n */\n SdkTranscriptEvent.create = function create(properties) {\n return new SdkTranscriptEvent(properties);\n };\n\n /**\n * Encodes the specified SdkTranscriptEvent message. Does not implicitly {@link SdkTranscriptEvent.verify|verify} messages.\n * @function encode\n * @memberof SdkTranscriptEvent\n * @static\n * @param {ISdkTranscriptEvent} message SdkTranscriptEvent message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n SdkTranscriptEvent.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.status != null && Object.hasOwnProperty.call(message, \"status\"))\n $root.SdkTranscriptionStatus.encode(message.status, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();\n if (message.transcript != null && Object.hasOwnProperty.call(message, \"transcript\"))\n $root.SdkTranscript.encode(message.transcript, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();\n return writer;\n };\n\n /**\n * Encodes the specified SdkTranscriptEvent message, length delimited. Does not implicitly {@link SdkTranscriptEvent.verify|verify} messages.\n * @function encodeDelimited\n * @memberof SdkTranscriptEvent\n * @static\n * @param {ISdkTranscriptEvent} message SdkTranscriptEvent message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n SdkTranscriptEvent.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a SdkTranscriptEvent message from the specified reader or buffer.\n * @function decode\n * @memberof SdkTranscriptEvent\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {SdkTranscriptEvent} SdkTranscriptEvent\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n SdkTranscriptEvent.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.SdkTranscriptEvent();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n message.status = $root.SdkTranscriptionStatus.decode(reader, reader.uint32());\n break;\n }\n case 2: {\n message.transcript = $root.SdkTranscript.decode(reader, reader.uint32());\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a SdkTranscriptEvent message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof SdkTranscriptEvent\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {SdkTranscriptEvent} SdkTranscriptEvent\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n SdkTranscriptEvent.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a SdkTranscriptEvent message.\n * @function verify\n * @memberof SdkTranscriptEvent\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n SdkTranscriptEvent.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n var properties = {};\n if (message.status != null && message.hasOwnProperty(\"status\")) {\n properties.Event = 1;\n {\n var error = $root.SdkTranscriptionStatus.verify(message.status);\n if (error)\n return \"status.\" + error;\n }\n }\n if (message.transcript != null && message.hasOwnProperty(\"transcript\")) {\n if (properties.Event === 1)\n return \"Event: multiple values\";\n properties.Event = 1;\n {\n var error = $root.SdkTranscript.verify(message.transcript);\n if (error)\n return \"transcript.\" + error;\n }\n }\n return null;\n };\n\n /**\n * Creates a SdkTranscriptEvent message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof SdkTranscriptEvent\n * @static\n * @param {Object.} object Plain object\n * @returns {SdkTranscriptEvent} SdkTranscriptEvent\n */\n SdkTranscriptEvent.fromObject = function fromObject(object) {\n if (object instanceof $root.SdkTranscriptEvent)\n return object;\n var message = new $root.SdkTranscriptEvent();\n if (object.status != null) {\n if (typeof object.status !== \"object\")\n throw TypeError(\".SdkTranscriptEvent.status: object expected\");\n message.status = $root.SdkTranscriptionStatus.fromObject(object.status);\n }\n if (object.transcript != null) {\n if (typeof object.transcript !== \"object\")\n throw TypeError(\".SdkTranscriptEvent.transcript: object expected\");\n message.transcript = $root.SdkTranscript.fromObject(object.transcript);\n }\n return message;\n };\n\n /**\n * Creates a plain object from a SdkTranscriptEvent message. Also converts values to other types if specified.\n * @function toObject\n * @memberof SdkTranscriptEvent\n * @static\n * @param {SdkTranscriptEvent} message SdkTranscriptEvent\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n SdkTranscriptEvent.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (message.status != null && message.hasOwnProperty(\"status\")) {\n object.status = $root.SdkTranscriptionStatus.toObject(message.status, options);\n if (options.oneofs)\n object.Event = \"status\";\n }\n if (message.transcript != null && message.hasOwnProperty(\"transcript\")) {\n object.transcript = $root.SdkTranscript.toObject(message.transcript, options);\n if (options.oneofs)\n object.Event = \"transcript\";\n }\n return object;\n };\n\n /**\n * Converts this SdkTranscriptEvent to JSON.\n * @function toJSON\n * @memberof SdkTranscriptEvent\n * @instance\n * @returns {Object.} JSON object\n */\n SdkTranscriptEvent.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n /**\n * Gets the default type url for SdkTranscriptEvent\n * @function getTypeUrl\n * @memberof SdkTranscriptEvent\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n SdkTranscriptEvent.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/SdkTranscriptEvent\";\n };\n\n return SdkTranscriptEvent;\n})();\n\n$root.SdkTranscriptFrame = (function() {\n\n /**\n * Properties of a SdkTranscriptFrame.\n * @name ISdkTranscriptFrame\n * @interface ISdkTranscriptFrame\n * @property {Array.|null} [events] SdkTranscriptFrame events\n */\n\n /**\n * Constructs a new SdkTranscriptFrame.\n * @name SdkTranscriptFrame\n * @classdesc Represents a SdkTranscriptFrame.\n * @implements ISdkTranscriptFrame\n * @constructor\n * @param {ISdkTranscriptFrame=} [properties] Properties to set\n */\n function SdkTranscriptFrame(properties) {\n this.events = [];\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * SdkTranscriptFrame events.\n * @member {Array.} events\n * @memberof SdkTranscriptFrame\n * @instance\n */\n SdkTranscriptFrame.prototype.events = $util.emptyArray;\n\n /**\n * Creates a new SdkTranscriptFrame instance using the specified properties.\n * @function create\n * @memberof SdkTranscriptFrame\n * @static\n * @param {ISdkTranscriptFrame=} [properties] Properties to set\n * @returns {SdkTranscriptFrame} SdkTranscriptFrame instance\n */\n SdkTranscriptFrame.create = function create(properties) {\n return new SdkTranscriptFrame(properties);\n };\n\n /**\n * Encodes the specified SdkTranscriptFrame message. Does not implicitly {@link SdkTranscriptFrame.verify|verify} messages.\n * @function encode\n * @memberof SdkTranscriptFrame\n * @static\n * @param {ISdkTranscriptFrame} message SdkTranscriptFrame message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n SdkTranscriptFrame.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.events != null && message.events.length)\n for (var i = 0; i < message.events.length; ++i)\n $root.SdkTranscriptEvent.encode(message.events[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();\n return writer;\n };\n\n /**\n * Encodes the specified SdkTranscriptFrame message, length delimited. Does not implicitly {@link SdkTranscriptFrame.verify|verify} messages.\n * @function encodeDelimited\n * @memberof SdkTranscriptFrame\n * @static\n * @param {ISdkTranscriptFrame} message SdkTranscriptFrame message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n SdkTranscriptFrame.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a SdkTranscriptFrame message from the specified reader or buffer.\n * @function decode\n * @memberof SdkTranscriptFrame\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {SdkTranscriptFrame} SdkTranscriptFrame\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n SdkTranscriptFrame.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.SdkTranscriptFrame();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (!(message.events && message.events.length))\n message.events = [];\n message.events.push($root.SdkTranscriptEvent.decode(reader, reader.uint32()));\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a SdkTranscriptFrame message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof SdkTranscriptFrame\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {SdkTranscriptFrame} SdkTranscriptFrame\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n SdkTranscriptFrame.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a SdkTranscriptFrame message.\n * @function verify\n * @memberof SdkTranscriptFrame\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n SdkTranscriptFrame.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.events != null && message.hasOwnProperty(\"events\")) {\n if (!Array.isArray(message.events))\n return \"events: array expected\";\n for (var i = 0; i < message.events.length; ++i) {\n var error = $root.SdkTranscriptEvent.verify(message.events[i]);\n if (error)\n return \"events.\" + error;\n }\n }\n return null;\n };\n\n /**\n * Creates a SdkTranscriptFrame message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof SdkTranscriptFrame\n * @static\n * @param {Object.} object Plain object\n * @returns {SdkTranscriptFrame} SdkTranscriptFrame\n */\n SdkTranscriptFrame.fromObject = function fromObject(object) {\n if (object instanceof $root.SdkTranscriptFrame)\n return object;\n var message = new $root.SdkTranscriptFrame();\n if (object.events) {\n if (!Array.isArray(object.events))\n throw TypeError(\".SdkTranscriptFrame.events: array expected\");\n message.events = [];\n for (var i = 0; i < object.events.length; ++i) {\n if (typeof object.events[i] !== \"object\")\n throw TypeError(\".SdkTranscriptFrame.events: object expected\");\n message.events[i] = $root.SdkTranscriptEvent.fromObject(object.events[i]);\n }\n }\n return message;\n };\n\n /**\n * Creates a plain object from a SdkTranscriptFrame message. Also converts values to other types if specified.\n * @function toObject\n * @memberof SdkTranscriptFrame\n * @static\n * @param {SdkTranscriptFrame} message SdkTranscriptFrame\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n SdkTranscriptFrame.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.arrays || options.defaults)\n object.events = [];\n if (message.events && message.events.length) {\n object.events = [];\n for (var j = 0; j < message.events.length; ++j)\n object.events[j] = $root.SdkTranscriptEvent.toObject(message.events[j], options);\n }\n return object;\n };\n\n /**\n * Converts this SdkTranscriptFrame to JSON.\n * @function toJSON\n * @memberof SdkTranscriptFrame\n * @instance\n * @returns {Object.} JSON object\n */\n SdkTranscriptFrame.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n /**\n * Gets the default type url for SdkTranscriptFrame\n * @function getTypeUrl\n * @memberof SdkTranscriptFrame\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n SdkTranscriptFrame.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/SdkTranscriptFrame\";\n };\n\n return SdkTranscriptFrame;\n})();\n\n$root.SdkRemoteVideoUpdateFrame = (function() {\n\n /**\n * Properties of a SdkRemoteVideoUpdateFrame.\n * @name ISdkRemoteVideoUpdateFrame\n * @interface ISdkRemoteVideoUpdateFrame\n * @property {Array.|null} [addedOrUpdatedVideoSubscriptions] SdkRemoteVideoUpdateFrame addedOrUpdatedVideoSubscriptions\n * @property {Array.|null} [removedVideoSubscriptionMids] SdkRemoteVideoUpdateFrame removedVideoSubscriptionMids\n */\n\n /**\n * Constructs a new SdkRemoteVideoUpdateFrame.\n * @name SdkRemoteVideoUpdateFrame\n * @classdesc Represents a SdkRemoteVideoUpdateFrame.\n * @implements ISdkRemoteVideoUpdateFrame\n * @constructor\n * @param {ISdkRemoteVideoUpdateFrame=} [properties] Properties to set\n */\n function SdkRemoteVideoUpdateFrame(properties) {\n this.addedOrUpdatedVideoSubscriptions = [];\n this.removedVideoSubscriptionMids = [];\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * SdkRemoteVideoUpdateFrame addedOrUpdatedVideoSubscriptions.\n * @member {Array.} addedOrUpdatedVideoSubscriptions\n * @memberof SdkRemoteVideoUpdateFrame\n * @instance\n */\n SdkRemoteVideoUpdateFrame.prototype.addedOrUpdatedVideoSubscriptions = $util.emptyArray;\n\n /**\n * SdkRemoteVideoUpdateFrame removedVideoSubscriptionMids.\n * @member {Array.} removedVideoSubscriptionMids\n * @memberof SdkRemoteVideoUpdateFrame\n * @instance\n */\n SdkRemoteVideoUpdateFrame.prototype.removedVideoSubscriptionMids = $util.emptyArray;\n\n /**\n * Creates a new SdkRemoteVideoUpdateFrame instance using the specified properties.\n * @function create\n * @memberof SdkRemoteVideoUpdateFrame\n * @static\n * @param {ISdkRemoteVideoUpdateFrame=} [properties] Properties to set\n * @returns {SdkRemoteVideoUpdateFrame} SdkRemoteVideoUpdateFrame instance\n */\n SdkRemoteVideoUpdateFrame.create = function create(properties) {\n return new SdkRemoteVideoUpdateFrame(properties);\n };\n\n /**\n * Encodes the specified SdkRemoteVideoUpdateFrame message. Does not implicitly {@link SdkRemoteVideoUpdateFrame.verify|verify} messages.\n * @function encode\n * @memberof SdkRemoteVideoUpdateFrame\n * @static\n * @param {ISdkRemoteVideoUpdateFrame} message SdkRemoteVideoUpdateFrame message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n SdkRemoteVideoUpdateFrame.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.addedOrUpdatedVideoSubscriptions != null && message.addedOrUpdatedVideoSubscriptions.length)\n for (var i = 0; i < message.addedOrUpdatedVideoSubscriptions.length; ++i)\n $root.SdkVideoSubscriptionConfiguration.encode(message.addedOrUpdatedVideoSubscriptions[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();\n if (message.removedVideoSubscriptionMids != null && message.removedVideoSubscriptionMids.length)\n for (var i = 0; i < message.removedVideoSubscriptionMids.length; ++i)\n writer.uint32(/* id 2, wireType 2 =*/18).string(message.removedVideoSubscriptionMids[i]);\n return writer;\n };\n\n /**\n * Encodes the specified SdkRemoteVideoUpdateFrame message, length delimited. Does not implicitly {@link SdkRemoteVideoUpdateFrame.verify|verify} messages.\n * @function encodeDelimited\n * @memberof SdkRemoteVideoUpdateFrame\n * @static\n * @param {ISdkRemoteVideoUpdateFrame} message SdkRemoteVideoUpdateFrame message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n SdkRemoteVideoUpdateFrame.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a SdkRemoteVideoUpdateFrame message from the specified reader or buffer.\n * @function decode\n * @memberof SdkRemoteVideoUpdateFrame\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {SdkRemoteVideoUpdateFrame} SdkRemoteVideoUpdateFrame\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n SdkRemoteVideoUpdateFrame.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.SdkRemoteVideoUpdateFrame();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (!(message.addedOrUpdatedVideoSubscriptions && message.addedOrUpdatedVideoSubscriptions.length))\n message.addedOrUpdatedVideoSubscriptions = [];\n message.addedOrUpdatedVideoSubscriptions.push($root.SdkVideoSubscriptionConfiguration.decode(reader, reader.uint32()));\n break;\n }\n case 2: {\n if (!(message.removedVideoSubscriptionMids && message.removedVideoSubscriptionMids.length))\n message.removedVideoSubscriptionMids = [];\n message.removedVideoSubscriptionMids.push(reader.string());\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a SdkRemoteVideoUpdateFrame message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof SdkRemoteVideoUpdateFrame\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {SdkRemoteVideoUpdateFrame} SdkRemoteVideoUpdateFrame\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n SdkRemoteVideoUpdateFrame.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a SdkRemoteVideoUpdateFrame message.\n * @function verify\n * @memberof SdkRemoteVideoUpdateFrame\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n SdkRemoteVideoUpdateFrame.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.addedOrUpdatedVideoSubscriptions != null && message.hasOwnProperty(\"addedOrUpdatedVideoSubscriptions\")) {\n if (!Array.isArray(message.addedOrUpdatedVideoSubscriptions))\n return \"addedOrUpdatedVideoSubscriptions: array expected\";\n for (var i = 0; i < message.addedOrUpdatedVideoSubscriptions.length; ++i) {\n var error = $root.SdkVideoSubscriptionConfiguration.verify(message.addedOrUpdatedVideoSubscriptions[i]);\n if (error)\n return \"addedOrUpdatedVideoSubscriptions.\" + error;\n }\n }\n if (message.removedVideoSubscriptionMids != null && message.hasOwnProperty(\"removedVideoSubscriptionMids\")) {\n if (!Array.isArray(message.removedVideoSubscriptionMids))\n return \"removedVideoSubscriptionMids: array expected\";\n for (var i = 0; i < message.removedVideoSubscriptionMids.length; ++i)\n if (!$util.isString(message.removedVideoSubscriptionMids[i]))\n return \"removedVideoSubscriptionMids: string[] expected\";\n }\n return null;\n };\n\n /**\n * Creates a SdkRemoteVideoUpdateFrame message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof SdkRemoteVideoUpdateFrame\n * @static\n * @param {Object.} object Plain object\n * @returns {SdkRemoteVideoUpdateFrame} SdkRemoteVideoUpdateFrame\n */\n SdkRemoteVideoUpdateFrame.fromObject = function fromObject(object) {\n if (object instanceof $root.SdkRemoteVideoUpdateFrame)\n return object;\n var message = new $root.SdkRemoteVideoUpdateFrame();\n if (object.addedOrUpdatedVideoSubscriptions) {\n if (!Array.isArray(object.addedOrUpdatedVideoSubscriptions))\n throw TypeError(\".SdkRemoteVideoUpdateFrame.addedOrUpdatedVideoSubscriptions: array expected\");\n message.addedOrUpdatedVideoSubscriptions = [];\n for (var i = 0; i < object.addedOrUpdatedVideoSubscriptions.length; ++i) {\n if (typeof object.addedOrUpdatedVideoSubscriptions[i] !== \"object\")\n throw TypeError(\".SdkRemoteVideoUpdateFrame.addedOrUpdatedVideoSubscriptions: object expected\");\n message.addedOrUpdatedVideoSubscriptions[i] = $root.SdkVideoSubscriptionConfiguration.fromObject(object.addedOrUpdatedVideoSubscriptions[i]);\n }\n }\n if (object.removedVideoSubscriptionMids) {\n if (!Array.isArray(object.removedVideoSubscriptionMids))\n throw TypeError(\".SdkRemoteVideoUpdateFrame.removedVideoSubscriptionMids: array expected\");\n message.removedVideoSubscriptionMids = [];\n for (var i = 0; i < object.removedVideoSubscriptionMids.length; ++i)\n message.removedVideoSubscriptionMids[i] = String(object.removedVideoSubscriptionMids[i]);\n }\n return message;\n };\n\n /**\n * Creates a plain object from a SdkRemoteVideoUpdateFrame message. Also converts values to other types if specified.\n * @function toObject\n * @memberof SdkRemoteVideoUpdateFrame\n * @static\n * @param {SdkRemoteVideoUpdateFrame} message SdkRemoteVideoUpdateFrame\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n SdkRemoteVideoUpdateFrame.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.arrays || options.defaults) {\n object.addedOrUpdatedVideoSubscriptions = [];\n object.removedVideoSubscriptionMids = [];\n }\n if (message.addedOrUpdatedVideoSubscriptions && message.addedOrUpdatedVideoSubscriptions.length) {\n object.addedOrUpdatedVideoSubscriptions = [];\n for (var j = 0; j < message.addedOrUpdatedVideoSubscriptions.length; ++j)\n object.addedOrUpdatedVideoSubscriptions[j] = $root.SdkVideoSubscriptionConfiguration.toObject(message.addedOrUpdatedVideoSubscriptions[j], options);\n }\n if (message.removedVideoSubscriptionMids && message.removedVideoSubscriptionMids.length) {\n object.removedVideoSubscriptionMids = [];\n for (var j = 0; j < message.removedVideoSubscriptionMids.length; ++j)\n object.removedVideoSubscriptionMids[j] = message.removedVideoSubscriptionMids[j];\n }\n return object;\n };\n\n /**\n * Converts this SdkRemoteVideoUpdateFrame to JSON.\n * @function toJSON\n * @memberof SdkRemoteVideoUpdateFrame\n * @instance\n * @returns {Object.} JSON object\n */\n SdkRemoteVideoUpdateFrame.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n /**\n * Gets the default type url for SdkRemoteVideoUpdateFrame\n * @function getTypeUrl\n * @memberof SdkRemoteVideoUpdateFrame\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n SdkRemoteVideoUpdateFrame.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/SdkRemoteVideoUpdateFrame\";\n };\n\n return SdkRemoteVideoUpdateFrame;\n})();\n\n/**\n * SdkVideoQualityAdaptationPreference enum.\n * @name SdkVideoQualityAdaptationPreference\n * @enum {number}\n * @property {number} BALANCED=1 BALANCED value\n * @property {number} MAINTAIN_FRAMERATE=2 MAINTAIN_FRAMERATE value\n * @property {number} MAINTAIN_RESOLUTION=3 MAINTAIN_RESOLUTION value\n */\n$root.SdkVideoQualityAdaptationPreference = (function() {\n var valuesById = {}, values = Object.create(valuesById);\n values[valuesById[1] = \"BALANCED\"] = 1;\n values[valuesById[2] = \"MAINTAIN_FRAMERATE\"] = 2;\n values[valuesById[3] = \"MAINTAIN_RESOLUTION\"] = 3;\n return values;\n})();\n\n$root.SdkVideoSubscriptionConfiguration = (function() {\n\n /**\n * Properties of a SdkVideoSubscriptionConfiguration.\n * @name ISdkVideoSubscriptionConfiguration\n * @interface ISdkVideoSubscriptionConfiguration\n * @property {string} mid SdkVideoSubscriptionConfiguration mid\n * @property {string|null} [attendeeId] SdkVideoSubscriptionConfiguration attendeeId\n * @property {number|null} [streamId] SdkVideoSubscriptionConfiguration streamId\n * @property {number|null} [priority] SdkVideoSubscriptionConfiguration priority\n * @property {number|null} [targetBitrateKbps] SdkVideoSubscriptionConfiguration targetBitrateKbps\n * @property {number|null} [groupId] SdkVideoSubscriptionConfiguration groupId\n * @property {SdkVideoQualityAdaptationPreference|null} [qualityAdaptationPreference] SdkVideoSubscriptionConfiguration qualityAdaptationPreference\n */\n\n /**\n * Constructs a new SdkVideoSubscriptionConfiguration.\n * @name SdkVideoSubscriptionConfiguration\n * @classdesc Represents a SdkVideoSubscriptionConfiguration.\n * @implements ISdkVideoSubscriptionConfiguration\n * @constructor\n * @param {ISdkVideoSubscriptionConfiguration=} [properties] Properties to set\n */\n function SdkVideoSubscriptionConfiguration(properties) {\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * SdkVideoSubscriptionConfiguration mid.\n * @member {string} mid\n * @memberof SdkVideoSubscriptionConfiguration\n * @instance\n */\n SdkVideoSubscriptionConfiguration.prototype.mid = \"\";\n\n /**\n * SdkVideoSubscriptionConfiguration attendeeId.\n * @member {string} attendeeId\n * @memberof SdkVideoSubscriptionConfiguration\n * @instance\n */\n SdkVideoSubscriptionConfiguration.prototype.attendeeId = \"\";\n\n /**\n * SdkVideoSubscriptionConfiguration streamId.\n * @member {number} streamId\n * @memberof SdkVideoSubscriptionConfiguration\n * @instance\n */\n SdkVideoSubscriptionConfiguration.prototype.streamId = 0;\n\n /**\n * SdkVideoSubscriptionConfiguration priority.\n * @member {number} priority\n * @memberof SdkVideoSubscriptionConfiguration\n * @instance\n */\n SdkVideoSubscriptionConfiguration.prototype.priority = 0;\n\n /**\n * SdkVideoSubscriptionConfiguration targetBitrateKbps.\n * @member {number} targetBitrateKbps\n * @memberof SdkVideoSubscriptionConfiguration\n * @instance\n */\n SdkVideoSubscriptionConfiguration.prototype.targetBitrateKbps = 0;\n\n /**\n * SdkVideoSubscriptionConfiguration groupId.\n * @member {number} groupId\n * @memberof SdkVideoSubscriptionConfiguration\n * @instance\n */\n SdkVideoSubscriptionConfiguration.prototype.groupId = 0;\n\n /**\n * SdkVideoSubscriptionConfiguration qualityAdaptationPreference.\n * @member {SdkVideoQualityAdaptationPreference} qualityAdaptationPreference\n * @memberof SdkVideoSubscriptionConfiguration\n * @instance\n */\n SdkVideoSubscriptionConfiguration.prototype.qualityAdaptationPreference = 1;\n\n /**\n * Creates a new SdkVideoSubscriptionConfiguration instance using the specified properties.\n * @function create\n * @memberof SdkVideoSubscriptionConfiguration\n * @static\n * @param {ISdkVideoSubscriptionConfiguration=} [properties] Properties to set\n * @returns {SdkVideoSubscriptionConfiguration} SdkVideoSubscriptionConfiguration instance\n */\n SdkVideoSubscriptionConfiguration.create = function create(properties) {\n return new SdkVideoSubscriptionConfiguration(properties);\n };\n\n /**\n * Encodes the specified SdkVideoSubscriptionConfiguration message. Does not implicitly {@link SdkVideoSubscriptionConfiguration.verify|verify} messages.\n * @function encode\n * @memberof SdkVideoSubscriptionConfiguration\n * @static\n * @param {ISdkVideoSubscriptionConfiguration} message SdkVideoSubscriptionConfiguration message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n SdkVideoSubscriptionConfiguration.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n writer.uint32(/* id 1, wireType 2 =*/10).string(message.mid);\n if (message.attendeeId != null && Object.hasOwnProperty.call(message, \"attendeeId\"))\n writer.uint32(/* id 2, wireType 2 =*/18).string(message.attendeeId);\n if (message.streamId != null && Object.hasOwnProperty.call(message, \"streamId\"))\n writer.uint32(/* id 3, wireType 0 =*/24).uint32(message.streamId);\n if (message.priority != null && Object.hasOwnProperty.call(message, \"priority\"))\n writer.uint32(/* id 4, wireType 0 =*/32).uint32(message.priority);\n if (message.targetBitrateKbps != null && Object.hasOwnProperty.call(message, \"targetBitrateKbps\"))\n writer.uint32(/* id 5, wireType 0 =*/40).uint32(message.targetBitrateKbps);\n if (message.groupId != null && Object.hasOwnProperty.call(message, \"groupId\"))\n writer.uint32(/* id 6, wireType 0 =*/48).uint32(message.groupId);\n if (message.qualityAdaptationPreference != null && Object.hasOwnProperty.call(message, \"qualityAdaptationPreference\"))\n writer.uint32(/* id 7, wireType 0 =*/56).int32(message.qualityAdaptationPreference);\n return writer;\n };\n\n /**\n * Encodes the specified SdkVideoSubscriptionConfiguration message, length delimited. Does not implicitly {@link SdkVideoSubscriptionConfiguration.verify|verify} messages.\n * @function encodeDelimited\n * @memberof SdkVideoSubscriptionConfiguration\n * @static\n * @param {ISdkVideoSubscriptionConfiguration} message SdkVideoSubscriptionConfiguration message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n SdkVideoSubscriptionConfiguration.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a SdkVideoSubscriptionConfiguration message from the specified reader or buffer.\n * @function decode\n * @memberof SdkVideoSubscriptionConfiguration\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {SdkVideoSubscriptionConfiguration} SdkVideoSubscriptionConfiguration\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n SdkVideoSubscriptionConfiguration.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.SdkVideoSubscriptionConfiguration();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n message.mid = reader.string();\n break;\n }\n case 2: {\n message.attendeeId = reader.string();\n break;\n }\n case 3: {\n message.streamId = reader.uint32();\n break;\n }\n case 4: {\n message.priority = reader.uint32();\n break;\n }\n case 5: {\n message.targetBitrateKbps = reader.uint32();\n break;\n }\n case 6: {\n message.groupId = reader.uint32();\n break;\n }\n case 7: {\n message.qualityAdaptationPreference = reader.int32();\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n if (!message.hasOwnProperty(\"mid\"))\n throw $util.ProtocolError(\"missing required 'mid'\", { instance: message });\n return message;\n };\n\n /**\n * Decodes a SdkVideoSubscriptionConfiguration message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof SdkVideoSubscriptionConfiguration\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {SdkVideoSubscriptionConfiguration} SdkVideoSubscriptionConfiguration\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n SdkVideoSubscriptionConfiguration.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a SdkVideoSubscriptionConfiguration message.\n * @function verify\n * @memberof SdkVideoSubscriptionConfiguration\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n SdkVideoSubscriptionConfiguration.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (!$util.isString(message.mid))\n return \"mid: string expected\";\n if (message.attendeeId != null && message.hasOwnProperty(\"attendeeId\"))\n if (!$util.isString(message.attendeeId))\n return \"attendeeId: string expected\";\n if (message.streamId != null && message.hasOwnProperty(\"streamId\"))\n if (!$util.isInteger(message.streamId))\n return \"streamId: integer expected\";\n if (message.priority != null && message.hasOwnProperty(\"priority\"))\n if (!$util.isInteger(message.priority))\n return \"priority: integer expected\";\n if (message.targetBitrateKbps != null && message.hasOwnProperty(\"targetBitrateKbps\"))\n if (!$util.isInteger(message.targetBitrateKbps))\n return \"targetBitrateKbps: integer expected\";\n if (message.groupId != null && message.hasOwnProperty(\"groupId\"))\n if (!$util.isInteger(message.groupId))\n return \"groupId: integer expected\";\n if (message.qualityAdaptationPreference != null && message.hasOwnProperty(\"qualityAdaptationPreference\"))\n switch (message.qualityAdaptationPreference) {\n default:\n return \"qualityAdaptationPreference: enum value expected\";\n case 1:\n case 2:\n case 3:\n break;\n }\n return null;\n };\n\n /**\n * Creates a SdkVideoSubscriptionConfiguration message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof SdkVideoSubscriptionConfiguration\n * @static\n * @param {Object.} object Plain object\n * @returns {SdkVideoSubscriptionConfiguration} SdkVideoSubscriptionConfiguration\n */\n SdkVideoSubscriptionConfiguration.fromObject = function fromObject(object) {\n if (object instanceof $root.SdkVideoSubscriptionConfiguration)\n return object;\n var message = new $root.SdkVideoSubscriptionConfiguration();\n if (object.mid != null)\n message.mid = String(object.mid);\n if (object.attendeeId != null)\n message.attendeeId = String(object.attendeeId);\n if (object.streamId != null)\n message.streamId = object.streamId >>> 0;\n if (object.priority != null)\n message.priority = object.priority >>> 0;\n if (object.targetBitrateKbps != null)\n message.targetBitrateKbps = object.targetBitrateKbps >>> 0;\n if (object.groupId != null)\n message.groupId = object.groupId >>> 0;\n switch (object.qualityAdaptationPreference) {\n default:\n if (typeof object.qualityAdaptationPreference === \"number\") {\n message.qualityAdaptationPreference = object.qualityAdaptationPreference;\n break;\n }\n break;\n case \"BALANCED\":\n case 1:\n message.qualityAdaptationPreference = 1;\n break;\n case \"MAINTAIN_FRAMERATE\":\n case 2:\n message.qualityAdaptationPreference = 2;\n break;\n case \"MAINTAIN_RESOLUTION\":\n case 3:\n message.qualityAdaptationPreference = 3;\n break;\n }\n return message;\n };\n\n /**\n * Creates a plain object from a SdkVideoSubscriptionConfiguration message. Also converts values to other types if specified.\n * @function toObject\n * @memberof SdkVideoSubscriptionConfiguration\n * @static\n * @param {SdkVideoSubscriptionConfiguration} message SdkVideoSubscriptionConfiguration\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n SdkVideoSubscriptionConfiguration.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.defaults) {\n object.mid = \"\";\n object.attendeeId = \"\";\n object.streamId = 0;\n object.priority = 0;\n object.targetBitrateKbps = 0;\n object.groupId = 0;\n object.qualityAdaptationPreference = options.enums === String ? \"BALANCED\" : 1;\n }\n if (message.mid != null && message.hasOwnProperty(\"mid\"))\n object.mid = message.mid;\n if (message.attendeeId != null && message.hasOwnProperty(\"attendeeId\"))\n object.attendeeId = message.attendeeId;\n if (message.streamId != null && message.hasOwnProperty(\"streamId\"))\n object.streamId = message.streamId;\n if (message.priority != null && message.hasOwnProperty(\"priority\"))\n object.priority = message.priority;\n if (message.targetBitrateKbps != null && message.hasOwnProperty(\"targetBitrateKbps\"))\n object.targetBitrateKbps = message.targetBitrateKbps;\n if (message.groupId != null && message.hasOwnProperty(\"groupId\"))\n object.groupId = message.groupId;\n if (message.qualityAdaptationPreference != null && message.hasOwnProperty(\"qualityAdaptationPreference\"))\n object.qualityAdaptationPreference = options.enums === String ? $root.SdkVideoQualityAdaptationPreference[message.qualityAdaptationPreference] === undefined ? message.qualityAdaptationPreference : $root.SdkVideoQualityAdaptationPreference[message.qualityAdaptationPreference] : message.qualityAdaptationPreference;\n return object;\n };\n\n /**\n * Converts this SdkVideoSubscriptionConfiguration to JSON.\n * @function toJSON\n * @memberof SdkVideoSubscriptionConfiguration\n * @instance\n * @returns {Object.} JSON object\n */\n SdkVideoSubscriptionConfiguration.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n /**\n * Gets the default type url for SdkVideoSubscriptionConfiguration\n * @function getTypeUrl\n * @memberof SdkVideoSubscriptionConfiguration\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n SdkVideoSubscriptionConfiguration.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/SdkVideoSubscriptionConfiguration\";\n };\n\n return SdkVideoSubscriptionConfiguration;\n})();\n\n$root.SdkNotificationFrame = (function() {\n\n /**\n * Properties of a SdkNotificationFrame.\n * @name ISdkNotificationFrame\n * @interface ISdkNotificationFrame\n * @property {SdkNotificationFrame.NotificationLevel|null} [level] SdkNotificationFrame level\n * @property {string|null} [message] SdkNotificationFrame message\n */\n\n /**\n * Constructs a new SdkNotificationFrame.\n * @name SdkNotificationFrame\n * @classdesc Represents a SdkNotificationFrame.\n * @implements ISdkNotificationFrame\n * @constructor\n * @param {ISdkNotificationFrame=} [properties] Properties to set\n */\n function SdkNotificationFrame(properties) {\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * SdkNotificationFrame level.\n * @member {SdkNotificationFrame.NotificationLevel} level\n * @memberof SdkNotificationFrame\n * @instance\n */\n SdkNotificationFrame.prototype.level = 3;\n\n /**\n * SdkNotificationFrame message.\n * @member {string} message\n * @memberof SdkNotificationFrame\n * @instance\n */\n SdkNotificationFrame.prototype.message = \"\";\n\n /**\n * Creates a new SdkNotificationFrame instance using the specified properties.\n * @function create\n * @memberof SdkNotificationFrame\n * @static\n * @param {ISdkNotificationFrame=} [properties] Properties to set\n * @returns {SdkNotificationFrame} SdkNotificationFrame instance\n */\n SdkNotificationFrame.create = function create(properties) {\n return new SdkNotificationFrame(properties);\n };\n\n /**\n * Encodes the specified SdkNotificationFrame message. Does not implicitly {@link SdkNotificationFrame.verify|verify} messages.\n * @function encode\n * @memberof SdkNotificationFrame\n * @static\n * @param {ISdkNotificationFrame} message SdkNotificationFrame message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n SdkNotificationFrame.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.level != null && Object.hasOwnProperty.call(message, \"level\"))\n writer.uint32(/* id 1, wireType 0 =*/8).int32(message.level);\n if (message.message != null && Object.hasOwnProperty.call(message, \"message\"))\n writer.uint32(/* id 2, wireType 2 =*/18).string(message.message);\n return writer;\n };\n\n /**\n * Encodes the specified SdkNotificationFrame message, length delimited. Does not implicitly {@link SdkNotificationFrame.verify|verify} messages.\n * @function encodeDelimited\n * @memberof SdkNotificationFrame\n * @static\n * @param {ISdkNotificationFrame} message SdkNotificationFrame message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n SdkNotificationFrame.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a SdkNotificationFrame message from the specified reader or buffer.\n * @function decode\n * @memberof SdkNotificationFrame\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {SdkNotificationFrame} SdkNotificationFrame\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n SdkNotificationFrame.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.SdkNotificationFrame();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n message.level = reader.int32();\n break;\n }\n case 2: {\n message.message = reader.string();\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a SdkNotificationFrame message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof SdkNotificationFrame\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {SdkNotificationFrame} SdkNotificationFrame\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n SdkNotificationFrame.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a SdkNotificationFrame message.\n * @function verify\n * @memberof SdkNotificationFrame\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n SdkNotificationFrame.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.level != null && message.hasOwnProperty(\"level\"))\n switch (message.level) {\n default:\n return \"level: enum value expected\";\n case 1:\n case 2:\n case 3:\n break;\n }\n if (message.message != null && message.hasOwnProperty(\"message\"))\n if (!$util.isString(message.message))\n return \"message: string expected\";\n return null;\n };\n\n /**\n * Creates a SdkNotificationFrame message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof SdkNotificationFrame\n * @static\n * @param {Object.} object Plain object\n * @returns {SdkNotificationFrame} SdkNotificationFrame\n */\n SdkNotificationFrame.fromObject = function fromObject(object) {\n if (object instanceof $root.SdkNotificationFrame)\n return object;\n var message = new $root.SdkNotificationFrame();\n switch (object.level) {\n case \"INFO\":\n case 1:\n message.level = 1;\n break;\n case \"WARNING\":\n case 2:\n message.level = 2;\n break;\n default:\n if (typeof object.level === \"number\") {\n message.level = object.level;\n break;\n }\n break;\n case \"ERROR\":\n case 3:\n message.level = 3;\n break;\n }\n if (object.message != null)\n message.message = String(object.message);\n return message;\n };\n\n /**\n * Creates a plain object from a SdkNotificationFrame message. Also converts values to other types if specified.\n * @function toObject\n * @memberof SdkNotificationFrame\n * @static\n * @param {SdkNotificationFrame} message SdkNotificationFrame\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n SdkNotificationFrame.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.defaults) {\n object.level = options.enums === String ? \"ERROR\" : 3;\n object.message = \"\";\n }\n if (message.level != null && message.hasOwnProperty(\"level\"))\n object.level = options.enums === String ? $root.SdkNotificationFrame.NotificationLevel[message.level] === undefined ? message.level : $root.SdkNotificationFrame.NotificationLevel[message.level] : message.level;\n if (message.message != null && message.hasOwnProperty(\"message\"))\n object.message = message.message;\n return object;\n };\n\n /**\n * Converts this SdkNotificationFrame to JSON.\n * @function toJSON\n * @memberof SdkNotificationFrame\n * @instance\n * @returns {Object.} JSON object\n */\n SdkNotificationFrame.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n /**\n * Gets the default type url for SdkNotificationFrame\n * @function getTypeUrl\n * @memberof SdkNotificationFrame\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n SdkNotificationFrame.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/SdkNotificationFrame\";\n };\n\n /**\n * NotificationLevel enum.\n * @name SdkNotificationFrame.NotificationLevel\n * @enum {number}\n * @property {number} INFO=1 INFO value\n * @property {number} WARNING=2 WARNING value\n * @property {number} ERROR=3 ERROR value\n */\n SdkNotificationFrame.NotificationLevel = (function() {\n var valuesById = {}, values = Object.create(valuesById);\n values[valuesById[1] = \"INFO\"] = 1;\n values[valuesById[2] = \"WARNING\"] = 2;\n values[valuesById[3] = \"ERROR\"] = 3;\n return values;\n })();\n\n return SdkNotificationFrame;\n})();\n\n$root.SdkPrimaryMeetingJoinFrame = (function() {\n\n /**\n * Properties of a SdkPrimaryMeetingJoinFrame.\n * @name ISdkPrimaryMeetingJoinFrame\n * @interface ISdkPrimaryMeetingJoinFrame\n * @property {ISdkMeetingSessionCredentials|null} [credentials] SdkPrimaryMeetingJoinFrame credentials\n */\n\n /**\n * Constructs a new SdkPrimaryMeetingJoinFrame.\n * @name SdkPrimaryMeetingJoinFrame\n * @classdesc Represents a SdkPrimaryMeetingJoinFrame.\n * @implements ISdkPrimaryMeetingJoinFrame\n * @constructor\n * @param {ISdkPrimaryMeetingJoinFrame=} [properties] Properties to set\n */\n function SdkPrimaryMeetingJoinFrame(properties) {\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * SdkPrimaryMeetingJoinFrame credentials.\n * @member {ISdkMeetingSessionCredentials|null|undefined} credentials\n * @memberof SdkPrimaryMeetingJoinFrame\n * @instance\n */\n SdkPrimaryMeetingJoinFrame.prototype.credentials = null;\n\n /**\n * Creates a new SdkPrimaryMeetingJoinFrame instance using the specified properties.\n * @function create\n * @memberof SdkPrimaryMeetingJoinFrame\n * @static\n * @param {ISdkPrimaryMeetingJoinFrame=} [properties] Properties to set\n * @returns {SdkPrimaryMeetingJoinFrame} SdkPrimaryMeetingJoinFrame instance\n */\n SdkPrimaryMeetingJoinFrame.create = function create(properties) {\n return new SdkPrimaryMeetingJoinFrame(properties);\n };\n\n /**\n * Encodes the specified SdkPrimaryMeetingJoinFrame message. Does not implicitly {@link SdkPrimaryMeetingJoinFrame.verify|verify} messages.\n * @function encode\n * @memberof SdkPrimaryMeetingJoinFrame\n * @static\n * @param {ISdkPrimaryMeetingJoinFrame} message SdkPrimaryMeetingJoinFrame message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n SdkPrimaryMeetingJoinFrame.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.credentials != null && Object.hasOwnProperty.call(message, \"credentials\"))\n $root.SdkMeetingSessionCredentials.encode(message.credentials, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();\n return writer;\n };\n\n /**\n * Encodes the specified SdkPrimaryMeetingJoinFrame message, length delimited. Does not implicitly {@link SdkPrimaryMeetingJoinFrame.verify|verify} messages.\n * @function encodeDelimited\n * @memberof SdkPrimaryMeetingJoinFrame\n * @static\n * @param {ISdkPrimaryMeetingJoinFrame} message SdkPrimaryMeetingJoinFrame message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n SdkPrimaryMeetingJoinFrame.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a SdkPrimaryMeetingJoinFrame message from the specified reader or buffer.\n * @function decode\n * @memberof SdkPrimaryMeetingJoinFrame\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {SdkPrimaryMeetingJoinFrame} SdkPrimaryMeetingJoinFrame\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n SdkPrimaryMeetingJoinFrame.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.SdkPrimaryMeetingJoinFrame();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n message.credentials = $root.SdkMeetingSessionCredentials.decode(reader, reader.uint32());\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a SdkPrimaryMeetingJoinFrame message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof SdkPrimaryMeetingJoinFrame\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {SdkPrimaryMeetingJoinFrame} SdkPrimaryMeetingJoinFrame\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n SdkPrimaryMeetingJoinFrame.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a SdkPrimaryMeetingJoinFrame message.\n * @function verify\n * @memberof SdkPrimaryMeetingJoinFrame\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n SdkPrimaryMeetingJoinFrame.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.credentials != null && message.hasOwnProperty(\"credentials\")) {\n var error = $root.SdkMeetingSessionCredentials.verify(message.credentials);\n if (error)\n return \"credentials.\" + error;\n }\n return null;\n };\n\n /**\n * Creates a SdkPrimaryMeetingJoinFrame message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof SdkPrimaryMeetingJoinFrame\n * @static\n * @param {Object.} object Plain object\n * @returns {SdkPrimaryMeetingJoinFrame} SdkPrimaryMeetingJoinFrame\n */\n SdkPrimaryMeetingJoinFrame.fromObject = function fromObject(object) {\n if (object instanceof $root.SdkPrimaryMeetingJoinFrame)\n return object;\n var message = new $root.SdkPrimaryMeetingJoinFrame();\n if (object.credentials != null) {\n if (typeof object.credentials !== \"object\")\n throw TypeError(\".SdkPrimaryMeetingJoinFrame.credentials: object expected\");\n message.credentials = $root.SdkMeetingSessionCredentials.fromObject(object.credentials);\n }\n return message;\n };\n\n /**\n * Creates a plain object from a SdkPrimaryMeetingJoinFrame message. Also converts values to other types if specified.\n * @function toObject\n * @memberof SdkPrimaryMeetingJoinFrame\n * @static\n * @param {SdkPrimaryMeetingJoinFrame} message SdkPrimaryMeetingJoinFrame\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n SdkPrimaryMeetingJoinFrame.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.defaults)\n object.credentials = null;\n if (message.credentials != null && message.hasOwnProperty(\"credentials\"))\n object.credentials = $root.SdkMeetingSessionCredentials.toObject(message.credentials, options);\n return object;\n };\n\n /**\n * Converts this SdkPrimaryMeetingJoinFrame to JSON.\n * @function toJSON\n * @memberof SdkPrimaryMeetingJoinFrame\n * @instance\n * @returns {Object.} JSON object\n */\n SdkPrimaryMeetingJoinFrame.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n /**\n * Gets the default type url for SdkPrimaryMeetingJoinFrame\n * @function getTypeUrl\n * @memberof SdkPrimaryMeetingJoinFrame\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n SdkPrimaryMeetingJoinFrame.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/SdkPrimaryMeetingJoinFrame\";\n };\n\n return SdkPrimaryMeetingJoinFrame;\n})();\n\n$root.SdkPrimaryMeetingJoinAckFrame = (function() {\n\n /**\n * Properties of a SdkPrimaryMeetingJoinAckFrame.\n * @name ISdkPrimaryMeetingJoinAckFrame\n * @interface ISdkPrimaryMeetingJoinAckFrame\n */\n\n /**\n * Constructs a new SdkPrimaryMeetingJoinAckFrame.\n * @name SdkPrimaryMeetingJoinAckFrame\n * @classdesc Represents a SdkPrimaryMeetingJoinAckFrame.\n * @implements ISdkPrimaryMeetingJoinAckFrame\n * @constructor\n * @param {ISdkPrimaryMeetingJoinAckFrame=} [properties] Properties to set\n */\n function SdkPrimaryMeetingJoinAckFrame(properties) {\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * Creates a new SdkPrimaryMeetingJoinAckFrame instance using the specified properties.\n * @function create\n * @memberof SdkPrimaryMeetingJoinAckFrame\n * @static\n * @param {ISdkPrimaryMeetingJoinAckFrame=} [properties] Properties to set\n * @returns {SdkPrimaryMeetingJoinAckFrame} SdkPrimaryMeetingJoinAckFrame instance\n */\n SdkPrimaryMeetingJoinAckFrame.create = function create(properties) {\n return new SdkPrimaryMeetingJoinAckFrame(properties);\n };\n\n /**\n * Encodes the specified SdkPrimaryMeetingJoinAckFrame message. Does not implicitly {@link SdkPrimaryMeetingJoinAckFrame.verify|verify} messages.\n * @function encode\n * @memberof SdkPrimaryMeetingJoinAckFrame\n * @static\n * @param {ISdkPrimaryMeetingJoinAckFrame} message SdkPrimaryMeetingJoinAckFrame message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n SdkPrimaryMeetingJoinAckFrame.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n return writer;\n };\n\n /**\n * Encodes the specified SdkPrimaryMeetingJoinAckFrame message, length delimited. Does not implicitly {@link SdkPrimaryMeetingJoinAckFrame.verify|verify} messages.\n * @function encodeDelimited\n * @memberof SdkPrimaryMeetingJoinAckFrame\n * @static\n * @param {ISdkPrimaryMeetingJoinAckFrame} message SdkPrimaryMeetingJoinAckFrame message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n SdkPrimaryMeetingJoinAckFrame.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a SdkPrimaryMeetingJoinAckFrame message from the specified reader or buffer.\n * @function decode\n * @memberof SdkPrimaryMeetingJoinAckFrame\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {SdkPrimaryMeetingJoinAckFrame} SdkPrimaryMeetingJoinAckFrame\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n SdkPrimaryMeetingJoinAckFrame.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.SdkPrimaryMeetingJoinAckFrame();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a SdkPrimaryMeetingJoinAckFrame message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof SdkPrimaryMeetingJoinAckFrame\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {SdkPrimaryMeetingJoinAckFrame} SdkPrimaryMeetingJoinAckFrame\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n SdkPrimaryMeetingJoinAckFrame.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a SdkPrimaryMeetingJoinAckFrame message.\n * @function verify\n * @memberof SdkPrimaryMeetingJoinAckFrame\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n SdkPrimaryMeetingJoinAckFrame.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n return null;\n };\n\n /**\n * Creates a SdkPrimaryMeetingJoinAckFrame message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof SdkPrimaryMeetingJoinAckFrame\n * @static\n * @param {Object.} object Plain object\n * @returns {SdkPrimaryMeetingJoinAckFrame} SdkPrimaryMeetingJoinAckFrame\n */\n SdkPrimaryMeetingJoinAckFrame.fromObject = function fromObject(object) {\n if (object instanceof $root.SdkPrimaryMeetingJoinAckFrame)\n return object;\n return new $root.SdkPrimaryMeetingJoinAckFrame();\n };\n\n /**\n * Creates a plain object from a SdkPrimaryMeetingJoinAckFrame message. Also converts values to other types if specified.\n * @function toObject\n * @memberof SdkPrimaryMeetingJoinAckFrame\n * @static\n * @param {SdkPrimaryMeetingJoinAckFrame} message SdkPrimaryMeetingJoinAckFrame\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n SdkPrimaryMeetingJoinAckFrame.toObject = function toObject() {\n return {};\n };\n\n /**\n * Converts this SdkPrimaryMeetingJoinAckFrame to JSON.\n * @function toJSON\n * @memberof SdkPrimaryMeetingJoinAckFrame\n * @instance\n * @returns {Object.} JSON object\n */\n SdkPrimaryMeetingJoinAckFrame.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n /**\n * Gets the default type url for SdkPrimaryMeetingJoinAckFrame\n * @function getTypeUrl\n * @memberof SdkPrimaryMeetingJoinAckFrame\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n SdkPrimaryMeetingJoinAckFrame.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/SdkPrimaryMeetingJoinAckFrame\";\n };\n\n return SdkPrimaryMeetingJoinAckFrame;\n})();\n\n$root.SdkPrimaryMeetingLeaveFrame = (function() {\n\n /**\n * Properties of a SdkPrimaryMeetingLeaveFrame.\n * @name ISdkPrimaryMeetingLeaveFrame\n * @interface ISdkPrimaryMeetingLeaveFrame\n */\n\n /**\n * Constructs a new SdkPrimaryMeetingLeaveFrame.\n * @name SdkPrimaryMeetingLeaveFrame\n * @classdesc Represents a SdkPrimaryMeetingLeaveFrame.\n * @implements ISdkPrimaryMeetingLeaveFrame\n * @constructor\n * @param {ISdkPrimaryMeetingLeaveFrame=} [properties] Properties to set\n */\n function SdkPrimaryMeetingLeaveFrame(properties) {\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * Creates a new SdkPrimaryMeetingLeaveFrame instance using the specified properties.\n * @function create\n * @memberof SdkPrimaryMeetingLeaveFrame\n * @static\n * @param {ISdkPrimaryMeetingLeaveFrame=} [properties] Properties to set\n * @returns {SdkPrimaryMeetingLeaveFrame} SdkPrimaryMeetingLeaveFrame instance\n */\n SdkPrimaryMeetingLeaveFrame.create = function create(properties) {\n return new SdkPrimaryMeetingLeaveFrame(properties);\n };\n\n /**\n * Encodes the specified SdkPrimaryMeetingLeaveFrame message. Does not implicitly {@link SdkPrimaryMeetingLeaveFrame.verify|verify} messages.\n * @function encode\n * @memberof SdkPrimaryMeetingLeaveFrame\n * @static\n * @param {ISdkPrimaryMeetingLeaveFrame} message SdkPrimaryMeetingLeaveFrame message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n SdkPrimaryMeetingLeaveFrame.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n return writer;\n };\n\n /**\n * Encodes the specified SdkPrimaryMeetingLeaveFrame message, length delimited. Does not implicitly {@link SdkPrimaryMeetingLeaveFrame.verify|verify} messages.\n * @function encodeDelimited\n * @memberof SdkPrimaryMeetingLeaveFrame\n * @static\n * @param {ISdkPrimaryMeetingLeaveFrame} message SdkPrimaryMeetingLeaveFrame message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n SdkPrimaryMeetingLeaveFrame.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a SdkPrimaryMeetingLeaveFrame message from the specified reader or buffer.\n * @function decode\n * @memberof SdkPrimaryMeetingLeaveFrame\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {SdkPrimaryMeetingLeaveFrame} SdkPrimaryMeetingLeaveFrame\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n SdkPrimaryMeetingLeaveFrame.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.SdkPrimaryMeetingLeaveFrame();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a SdkPrimaryMeetingLeaveFrame message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof SdkPrimaryMeetingLeaveFrame\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {SdkPrimaryMeetingLeaveFrame} SdkPrimaryMeetingLeaveFrame\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n SdkPrimaryMeetingLeaveFrame.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a SdkPrimaryMeetingLeaveFrame message.\n * @function verify\n * @memberof SdkPrimaryMeetingLeaveFrame\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n SdkPrimaryMeetingLeaveFrame.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n return null;\n };\n\n /**\n * Creates a SdkPrimaryMeetingLeaveFrame message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof SdkPrimaryMeetingLeaveFrame\n * @static\n * @param {Object.} object Plain object\n * @returns {SdkPrimaryMeetingLeaveFrame} SdkPrimaryMeetingLeaveFrame\n */\n SdkPrimaryMeetingLeaveFrame.fromObject = function fromObject(object) {\n if (object instanceof $root.SdkPrimaryMeetingLeaveFrame)\n return object;\n return new $root.SdkPrimaryMeetingLeaveFrame();\n };\n\n /**\n * Creates a plain object from a SdkPrimaryMeetingLeaveFrame message. Also converts values to other types if specified.\n * @function toObject\n * @memberof SdkPrimaryMeetingLeaveFrame\n * @static\n * @param {SdkPrimaryMeetingLeaveFrame} message SdkPrimaryMeetingLeaveFrame\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n SdkPrimaryMeetingLeaveFrame.toObject = function toObject() {\n return {};\n };\n\n /**\n * Converts this SdkPrimaryMeetingLeaveFrame to JSON.\n * @function toJSON\n * @memberof SdkPrimaryMeetingLeaveFrame\n * @instance\n * @returns {Object.} JSON object\n */\n SdkPrimaryMeetingLeaveFrame.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n /**\n * Gets the default type url for SdkPrimaryMeetingLeaveFrame\n * @function getTypeUrl\n * @memberof SdkPrimaryMeetingLeaveFrame\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n SdkPrimaryMeetingLeaveFrame.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/SdkPrimaryMeetingLeaveFrame\";\n };\n\n return SdkPrimaryMeetingLeaveFrame;\n})();\n\n$root.SdkMeetingSessionCredentials = (function() {\n\n /**\n * Properties of a SdkMeetingSessionCredentials.\n * @name ISdkMeetingSessionCredentials\n * @interface ISdkMeetingSessionCredentials\n * @property {string|null} [attendeeId] SdkMeetingSessionCredentials attendeeId\n * @property {string|null} [externalUserId] SdkMeetingSessionCredentials externalUserId\n * @property {string|null} [joinToken] SdkMeetingSessionCredentials joinToken\n */\n\n /**\n * Constructs a new SdkMeetingSessionCredentials.\n * @name SdkMeetingSessionCredentials\n * @classdesc Represents a SdkMeetingSessionCredentials.\n * @implements ISdkMeetingSessionCredentials\n * @constructor\n * @param {ISdkMeetingSessionCredentials=} [properties] Properties to set\n */\n function SdkMeetingSessionCredentials(properties) {\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * SdkMeetingSessionCredentials attendeeId.\n * @member {string} attendeeId\n * @memberof SdkMeetingSessionCredentials\n * @instance\n */\n SdkMeetingSessionCredentials.prototype.attendeeId = \"\";\n\n /**\n * SdkMeetingSessionCredentials externalUserId.\n * @member {string} externalUserId\n * @memberof SdkMeetingSessionCredentials\n * @instance\n */\n SdkMeetingSessionCredentials.prototype.externalUserId = \"\";\n\n /**\n * SdkMeetingSessionCredentials joinToken.\n * @member {string} joinToken\n * @memberof SdkMeetingSessionCredentials\n * @instance\n */\n SdkMeetingSessionCredentials.prototype.joinToken = \"\";\n\n /**\n * Creates a new SdkMeetingSessionCredentials instance using the specified properties.\n * @function create\n * @memberof SdkMeetingSessionCredentials\n * @static\n * @param {ISdkMeetingSessionCredentials=} [properties] Properties to set\n * @returns {SdkMeetingSessionCredentials} SdkMeetingSessionCredentials instance\n */\n SdkMeetingSessionCredentials.create = function create(properties) {\n return new SdkMeetingSessionCredentials(properties);\n };\n\n /**\n * Encodes the specified SdkMeetingSessionCredentials message. Does not implicitly {@link SdkMeetingSessionCredentials.verify|verify} messages.\n * @function encode\n * @memberof SdkMeetingSessionCredentials\n * @static\n * @param {ISdkMeetingSessionCredentials} message SdkMeetingSessionCredentials message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n SdkMeetingSessionCredentials.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.attendeeId != null && Object.hasOwnProperty.call(message, \"attendeeId\"))\n writer.uint32(/* id 1, wireType 2 =*/10).string(message.attendeeId);\n if (message.externalUserId != null && Object.hasOwnProperty.call(message, \"externalUserId\"))\n writer.uint32(/* id 2, wireType 2 =*/18).string(message.externalUserId);\n if (message.joinToken != null && Object.hasOwnProperty.call(message, \"joinToken\"))\n writer.uint32(/* id 3, wireType 2 =*/26).string(message.joinToken);\n return writer;\n };\n\n /**\n * Encodes the specified SdkMeetingSessionCredentials message, length delimited. Does not implicitly {@link SdkMeetingSessionCredentials.verify|verify} messages.\n * @function encodeDelimited\n * @memberof SdkMeetingSessionCredentials\n * @static\n * @param {ISdkMeetingSessionCredentials} message SdkMeetingSessionCredentials message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n SdkMeetingSessionCredentials.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a SdkMeetingSessionCredentials message from the specified reader or buffer.\n * @function decode\n * @memberof SdkMeetingSessionCredentials\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {SdkMeetingSessionCredentials} SdkMeetingSessionCredentials\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n SdkMeetingSessionCredentials.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.SdkMeetingSessionCredentials();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n message.attendeeId = reader.string();\n break;\n }\n case 2: {\n message.externalUserId = reader.string();\n break;\n }\n case 3: {\n message.joinToken = reader.string();\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a SdkMeetingSessionCredentials message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof SdkMeetingSessionCredentials\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {SdkMeetingSessionCredentials} SdkMeetingSessionCredentials\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n SdkMeetingSessionCredentials.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a SdkMeetingSessionCredentials message.\n * @function verify\n * @memberof SdkMeetingSessionCredentials\n * @static\n * @param {Object.} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n SdkMeetingSessionCredentials.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.attendeeId != null && message.hasOwnProperty(\"attendeeId\"))\n if (!$util.isString(message.attendeeId))\n return \"attendeeId: string expected\";\n if (message.externalUserId != null && message.hasOwnProperty(\"externalUserId\"))\n if (!$util.isString(message.externalUserId))\n return \"externalUserId: string expected\";\n if (message.joinToken != null && message.hasOwnProperty(\"joinToken\"))\n if (!$util.isString(message.joinToken))\n return \"joinToken: string expected\";\n return null;\n };\n\n /**\n * Creates a SdkMeetingSessionCredentials message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof SdkMeetingSessionCredentials\n * @static\n * @param {Object.} object Plain object\n * @returns {SdkMeetingSessionCredentials} SdkMeetingSessionCredentials\n */\n SdkMeetingSessionCredentials.fromObject = function fromObject(object) {\n if (object instanceof $root.SdkMeetingSessionCredentials)\n return object;\n var message = new $root.SdkMeetingSessionCredentials();\n if (object.attendeeId != null)\n message.attendeeId = String(object.attendeeId);\n if (object.externalUserId != null)\n message.externalUserId = String(object.externalUserId);\n if (object.joinToken != null)\n message.joinToken = String(object.joinToken);\n return message;\n };\n\n /**\n * Creates a plain object from a SdkMeetingSessionCredentials message. Also converts values to other types if specified.\n * @function toObject\n * @memberof SdkMeetingSessionCredentials\n * @static\n * @param {SdkMeetingSessionCredentials} message SdkMeetingSessionCredentials\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.} Plain object\n */\n SdkMeetingSessionCredentials.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.defaults) {\n object.attendeeId = \"\";\n object.externalUserId = \"\";\n object.joinToken = \"\";\n }\n if (message.attendeeId != null && message.hasOwnProperty(\"attendeeId\"))\n object.attendeeId = message.attendeeId;\n if (message.externalUserId != null && message.hasOwnProperty(\"externalUserId\"))\n object.externalUserId = message.externalUserId;\n if (message.joinToken != null && message.hasOwnProperty(\"joinToken\"))\n object.joinToken = message.joinToken;\n return object;\n };\n\n /**\n * Converts this SdkMeetingSessionCredentials to JSON.\n * @function toJSON\n * @memberof SdkMeetingSessionCredentials\n * @instance\n * @returns {Object.} JSON object\n */\n SdkMeetingSessionCredentials.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n /**\n * Gets the default type url for SdkMeetingSessionCredentials\n * @function getTypeUrl\n * @memberof SdkMeetingSessionCredentials\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n SdkMeetingSessionCredentials.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/SdkMeetingSessionCredentials\";\n };\n\n return SdkMeetingSessionCredentials;\n})();\n\n/**\n * SdkVideoCodecCapability enum.\n * @name SdkVideoCodecCapability\n * @enum {number}\n * @property {number} VP8=1 VP8 value\n * @property {number} H264_BASELINE_PROFILE=2 H264_BASELINE_PROFILE value\n * @property {number} H264_CONSTRAINED_BASELINE_PROFILE=3 H264_CONSTRAINED_BASELINE_PROFILE value\n * @property {number} H264_MAIN_PROFILE=4 H264_MAIN_PROFILE value\n * @property {number} H264_HIGH_PROFILE=5 H264_HIGH_PROFILE value\n * @property {number} H264_CONSTRAINED_HIGH_PROFILE=6 H264_CONSTRAINED_HIGH_PROFILE value\n * @property {number} VP9_PROFILE_0=8 VP9_PROFILE_0 value\n * @property {number} AV1_MAIN_PROFILE=11 AV1_MAIN_PROFILE value\n */\n$root.SdkVideoCodecCapability = (function() {\n var valuesById = {}, values = Object.create(valuesById);\n values[valuesById[1] = \"VP8\"] = 1;\n values[valuesById[2] = \"H264_BASELINE_PROFILE\"] = 2;\n values[valuesById[3] = \"H264_CONSTRAINED_BASELINE_PROFILE\"] = 3;\n values[valuesById[4] = \"H264_MAIN_PROFILE\"] = 4;\n values[valuesById[5] = \"H264_HIGH_PROFILE\"] = 5;\n values[valuesById[6] = \"H264_CONSTRAINED_HIGH_PROFILE\"] = 6;\n values[valuesById[8] = \"VP9_PROFILE_0\"] = 8;\n values[valuesById[11] = \"AV1_MAIN_PROFILE\"] = 11;\n return values;\n})();\n\nmodule.exports = $root;\n$util.Long = undefined;\n$protobuf.configure();","'use strict';\n\nvar $isNaN = require('./isNaN');\n\n/** @type {import('./sign')} */\nmodule.exports = function sign(number) {\n\tif ($isNaN(number) || number === 0) {\n\t\treturn number;\n\t}\n\treturn number < 0 ? -1 : +1;\n};\n","'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.production.min.js');\n} else {\n module.exports = require('./cjs/react-dom.development.js');\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport FullJitterBackoff from './FullJitterBackoff';\n\nexport default class FullJitterLimitedBackoff extends FullJitterBackoff {\n private attempts = 0;\n\n constructor(\n fixedWaitMs: number,\n shortBackoffMs: number,\n longBackoffMs: number,\n private limit: number\n ) {\n super(fixedWaitMs, shortBackoffMs, longBackoffMs);\n }\n\n nextBackoffAmountMs(): number {\n this.attempts++;\n if (this.attempts > this.limit) {\n throw new Error('retry limit exceeded');\n }\n return super.nextBackoffAmountMs();\n }\n}\n","/**\n * Secure Hash Algorithm with a 1024-bit block size implementation.\n *\n * This includes: SHA-512, SHA-384, SHA-512/224, and SHA-512/256. For\n * SHA-256 (block size 512 bits), see sha256.js.\n *\n * See FIPS 180-4 for details.\n *\n * @author Dave Longley\n *\n * Copyright (c) 2014-2015 Digital Bazaar, Inc.\n */\nvar forge = require('./forge');\nrequire('./md');\nrequire('./util');\n\nvar sha512 = module.exports = forge.sha512 = forge.sha512 || {};\n\n// SHA-512\nforge.md.sha512 = forge.md.algorithms.sha512 = sha512;\n\n// SHA-384\nvar sha384 = forge.sha384 = forge.sha512.sha384 = forge.sha512.sha384 || {};\nsha384.create = function() {\n return sha512.create('SHA-384');\n};\nforge.md.sha384 = forge.md.algorithms.sha384 = sha384;\n\n// SHA-512/256\nforge.sha512.sha256 = forge.sha512.sha256 || {\n create: function() {\n return sha512.create('SHA-512/256');\n }\n};\nforge.md['sha512/256'] = forge.md.algorithms['sha512/256'] =\n forge.sha512.sha256;\n\n// SHA-512/224\nforge.sha512.sha224 = forge.sha512.sha224 || {\n create: function() {\n return sha512.create('SHA-512/224');\n }\n};\nforge.md['sha512/224'] = forge.md.algorithms['sha512/224'] =\n forge.sha512.sha224;\n\n/**\n * Creates a SHA-2 message digest object.\n *\n * @param algorithm the algorithm to use (SHA-512, SHA-384, SHA-512/224,\n * SHA-512/256).\n *\n * @return a message digest object.\n */\nsha512.create = function(algorithm) {\n // do initialization as necessary\n if(!_initialized) {\n _init();\n }\n\n if(typeof algorithm === 'undefined') {\n algorithm = 'SHA-512';\n }\n\n if(!(algorithm in _states)) {\n throw new Error('Invalid SHA-512 algorithm: ' + algorithm);\n }\n\n // SHA-512 state contains eight 64-bit integers (each as two 32-bit ints)\n var _state = _states[algorithm];\n var _h = null;\n\n // input buffer\n var _input = forge.util.createBuffer();\n\n // used for 64-bit word storage\n var _w = new Array(80);\n for(var wi = 0; wi < 80; ++wi) {\n _w[wi] = new Array(2);\n }\n\n // determine digest length by algorithm name (default)\n var digestLength = 64;\n switch(algorithm) {\n case 'SHA-384':\n digestLength = 48;\n break;\n case 'SHA-512/256':\n digestLength = 32;\n break;\n case 'SHA-512/224':\n digestLength = 28;\n break;\n }\n\n // message digest object\n var md = {\n // SHA-512 => sha512\n algorithm: algorithm.replace('-', '').toLowerCase(),\n blockLength: 128,\n digestLength: digestLength,\n // 56-bit length of message so far (does not including padding)\n messageLength: 0,\n // true message length\n fullMessageLength: null,\n // size of message length in bytes\n messageLengthSize: 16\n };\n\n /**\n * Starts the digest.\n *\n * @return this digest object.\n */\n md.start = function() {\n // up to 56-bit message length for convenience\n md.messageLength = 0;\n\n // full message length (set md.messageLength128 for backwards-compatibility)\n md.fullMessageLength = md.messageLength128 = [];\n var int32s = md.messageLengthSize / 4;\n for(var i = 0; i < int32s; ++i) {\n md.fullMessageLength.push(0);\n }\n _input = forge.util.createBuffer();\n _h = new Array(_state.length);\n for(var i = 0; i < _state.length; ++i) {\n _h[i] = _state[i].slice(0);\n }\n return md;\n };\n // start digest automatically for first time\n md.start();\n\n /**\n * Updates the digest with the given message input. The given input can\n * treated as raw input (no encoding will be applied) or an encoding of\n * 'utf8' maybe given to encode the input using UTF-8.\n *\n * @param msg the message input to update with.\n * @param encoding the encoding to use (default: 'raw', other: 'utf8').\n *\n * @return this digest object.\n */\n md.update = function(msg, encoding) {\n if(encoding === 'utf8') {\n msg = forge.util.encodeUtf8(msg);\n }\n\n // update message length\n var len = msg.length;\n md.messageLength += len;\n len = [(len / 0x100000000) >>> 0, len >>> 0];\n for(var i = md.fullMessageLength.length - 1; i >= 0; --i) {\n md.fullMessageLength[i] += len[1];\n len[1] = len[0] + ((md.fullMessageLength[i] / 0x100000000) >>> 0);\n md.fullMessageLength[i] = md.fullMessageLength[i] >>> 0;\n len[0] = ((len[1] / 0x100000000) >>> 0);\n }\n\n // add bytes to input buffer\n _input.putBytes(msg);\n\n // process bytes\n _update(_h, _w, _input);\n\n // compact input buffer every 2K or if empty\n if(_input.read > 2048 || _input.length() === 0) {\n _input.compact();\n }\n\n return md;\n };\n\n /**\n * Produces the digest.\n *\n * @return a byte buffer containing the digest value.\n */\n md.digest = function() {\n /* Note: Here we copy the remaining bytes in the input buffer and\n add the appropriate SHA-512 padding. Then we do the final update\n on a copy of the state so that if the user wants to get\n intermediate digests they can do so. */\n\n /* Determine the number of bytes that must be added to the message\n to ensure its length is congruent to 896 mod 1024. In other words,\n the data to be digested must be a multiple of 1024 bits (or 128 bytes).\n This data includes the message, some padding, and the length of the\n message. Since the length of the message will be encoded as 16 bytes (128\n bits), that means that the last segment of the data must have 112 bytes\n (896 bits) of message and padding. Therefore, the length of the message\n plus the padding must be congruent to 896 mod 1024 because\n 1024 - 128 = 896.\n\n In order to fill up the message length it must be filled with\n padding that begins with 1 bit followed by all 0 bits. Padding\n must *always* be present, so if the message length is already\n congruent to 896 mod 1024, then 1024 padding bits must be added. */\n\n var finalBlock = forge.util.createBuffer();\n finalBlock.putBytes(_input.bytes());\n\n // compute remaining size to be digested (include message length size)\n var remaining = (\n md.fullMessageLength[md.fullMessageLength.length - 1] +\n md.messageLengthSize);\n\n // add padding for overflow blockSize - overflow\n // _padding starts with 1 byte with first bit is set (byte value 128), then\n // there may be up to (blockSize - 1) other pad bytes\n var overflow = remaining & (md.blockLength - 1);\n finalBlock.putBytes(_padding.substr(0, md.blockLength - overflow));\n\n // serialize message length in bits in big-endian order; since length\n // is stored in bytes we multiply by 8 and add carry from next int\n var next, carry;\n var bits = md.fullMessageLength[0] * 8;\n for(var i = 0; i < md.fullMessageLength.length - 1; ++i) {\n next = md.fullMessageLength[i + 1] * 8;\n carry = (next / 0x100000000) >>> 0;\n bits += carry;\n finalBlock.putInt32(bits >>> 0);\n bits = next >>> 0;\n }\n finalBlock.putInt32(bits);\n\n var h = new Array(_h.length);\n for(var i = 0; i < _h.length; ++i) {\n h[i] = _h[i].slice(0);\n }\n _update(h, _w, finalBlock);\n var rval = forge.util.createBuffer();\n var hlen;\n if(algorithm === 'SHA-512') {\n hlen = h.length;\n } else if(algorithm === 'SHA-384') {\n hlen = h.length - 2;\n } else {\n hlen = h.length - 4;\n }\n for(var i = 0; i < hlen; ++i) {\n rval.putInt32(h[i][0]);\n if(i !== hlen - 1 || algorithm !== 'SHA-512/224') {\n rval.putInt32(h[i][1]);\n }\n }\n return rval;\n };\n\n return md;\n};\n\n// sha-512 padding bytes not initialized yet\nvar _padding = null;\nvar _initialized = false;\n\n// table of constants\nvar _k = null;\n\n// initial hash states\nvar _states = null;\n\n/**\n * Initializes the constant tables.\n */\nfunction _init() {\n // create padding\n _padding = String.fromCharCode(128);\n _padding += forge.util.fillString(String.fromCharCode(0x00), 128);\n\n // create K table for SHA-512\n _k = [\n [0x428a2f98, 0xd728ae22], [0x71374491, 0x23ef65cd],\n [0xb5c0fbcf, 0xec4d3b2f], [0xe9b5dba5, 0x8189dbbc],\n [0x3956c25b, 0xf348b538], [0x59f111f1, 0xb605d019],\n [0x923f82a4, 0xaf194f9b], [0xab1c5ed5, 0xda6d8118],\n [0xd807aa98, 0xa3030242], [0x12835b01, 0x45706fbe],\n [0x243185be, 0x4ee4b28c], [0x550c7dc3, 0xd5ffb4e2],\n [0x72be5d74, 0xf27b896f], [0x80deb1fe, 0x3b1696b1],\n [0x9bdc06a7, 0x25c71235], [0xc19bf174, 0xcf692694],\n [0xe49b69c1, 0x9ef14ad2], [0xefbe4786, 0x384f25e3],\n [0x0fc19dc6, 0x8b8cd5b5], [0x240ca1cc, 0x77ac9c65],\n [0x2de92c6f, 0x592b0275], [0x4a7484aa, 0x6ea6e483],\n [0x5cb0a9dc, 0xbd41fbd4], [0x76f988da, 0x831153b5],\n [0x983e5152, 0xee66dfab], [0xa831c66d, 0x2db43210],\n [0xb00327c8, 0x98fb213f], [0xbf597fc7, 0xbeef0ee4],\n [0xc6e00bf3, 0x3da88fc2], [0xd5a79147, 0x930aa725],\n [0x06ca6351, 0xe003826f], [0x14292967, 0x0a0e6e70],\n [0x27b70a85, 0x46d22ffc], [0x2e1b2138, 0x5c26c926],\n [0x4d2c6dfc, 0x5ac42aed], [0x53380d13, 0x9d95b3df],\n [0x650a7354, 0x8baf63de], [0x766a0abb, 0x3c77b2a8],\n [0x81c2c92e, 0x47edaee6], [0x92722c85, 0x1482353b],\n [0xa2bfe8a1, 0x4cf10364], [0xa81a664b, 0xbc423001],\n [0xc24b8b70, 0xd0f89791], [0xc76c51a3, 0x0654be30],\n [0xd192e819, 0xd6ef5218], [0xd6990624, 0x5565a910],\n [0xf40e3585, 0x5771202a], [0x106aa070, 0x32bbd1b8],\n [0x19a4c116, 0xb8d2d0c8], [0x1e376c08, 0x5141ab53],\n [0x2748774c, 0xdf8eeb99], [0x34b0bcb5, 0xe19b48a8],\n [0x391c0cb3, 0xc5c95a63], [0x4ed8aa4a, 0xe3418acb],\n [0x5b9cca4f, 0x7763e373], [0x682e6ff3, 0xd6b2b8a3],\n [0x748f82ee, 0x5defb2fc], [0x78a5636f, 0x43172f60],\n [0x84c87814, 0xa1f0ab72], [0x8cc70208, 0x1a6439ec],\n [0x90befffa, 0x23631e28], [0xa4506ceb, 0xde82bde9],\n [0xbef9a3f7, 0xb2c67915], [0xc67178f2, 0xe372532b],\n [0xca273ece, 0xea26619c], [0xd186b8c7, 0x21c0c207],\n [0xeada7dd6, 0xcde0eb1e], [0xf57d4f7f, 0xee6ed178],\n [0x06f067aa, 0x72176fba], [0x0a637dc5, 0xa2c898a6],\n [0x113f9804, 0xbef90dae], [0x1b710b35, 0x131c471b],\n [0x28db77f5, 0x23047d84], [0x32caab7b, 0x40c72493],\n [0x3c9ebe0a, 0x15c9bebc], [0x431d67c4, 0x9c100d4c],\n [0x4cc5d4be, 0xcb3e42b6], [0x597f299c, 0xfc657e2a],\n [0x5fcb6fab, 0x3ad6faec], [0x6c44198c, 0x4a475817]\n ];\n\n // initial hash states\n _states = {};\n _states['SHA-512'] = [\n [0x6a09e667, 0xf3bcc908],\n [0xbb67ae85, 0x84caa73b],\n [0x3c6ef372, 0xfe94f82b],\n [0xa54ff53a, 0x5f1d36f1],\n [0x510e527f, 0xade682d1],\n [0x9b05688c, 0x2b3e6c1f],\n [0x1f83d9ab, 0xfb41bd6b],\n [0x5be0cd19, 0x137e2179]\n ];\n _states['SHA-384'] = [\n [0xcbbb9d5d, 0xc1059ed8],\n [0x629a292a, 0x367cd507],\n [0x9159015a, 0x3070dd17],\n [0x152fecd8, 0xf70e5939],\n [0x67332667, 0xffc00b31],\n [0x8eb44a87, 0x68581511],\n [0xdb0c2e0d, 0x64f98fa7],\n [0x47b5481d, 0xbefa4fa4]\n ];\n _states['SHA-512/256'] = [\n [0x22312194, 0xFC2BF72C],\n [0x9F555FA3, 0xC84C64C2],\n [0x2393B86B, 0x6F53B151],\n [0x96387719, 0x5940EABD],\n [0x96283EE2, 0xA88EFFE3],\n [0xBE5E1E25, 0x53863992],\n [0x2B0199FC, 0x2C85B8AA],\n [0x0EB72DDC, 0x81C52CA2]\n ];\n _states['SHA-512/224'] = [\n [0x8C3D37C8, 0x19544DA2],\n [0x73E19966, 0x89DCD4D6],\n [0x1DFAB7AE, 0x32FF9C82],\n [0x679DD514, 0x582F9FCF],\n [0x0F6D2B69, 0x7BD44DA8],\n [0x77E36F73, 0x04C48942],\n [0x3F9D85A8, 0x6A1D36C8],\n [0x1112E6AD, 0x91D692A1]\n ];\n\n // now initialized\n _initialized = true;\n}\n\n/**\n * Updates a SHA-512 state with the given byte buffer.\n *\n * @param s the SHA-512 state to update.\n * @param w the array to use to store words.\n * @param bytes the byte buffer to update with.\n */\nfunction _update(s, w, bytes) {\n // consume 512 bit (128 byte) chunks\n var t1_hi, t1_lo;\n var t2_hi, t2_lo;\n var s0_hi, s0_lo;\n var s1_hi, s1_lo;\n var ch_hi, ch_lo;\n var maj_hi, maj_lo;\n var a_hi, a_lo;\n var b_hi, b_lo;\n var c_hi, c_lo;\n var d_hi, d_lo;\n var e_hi, e_lo;\n var f_hi, f_lo;\n var g_hi, g_lo;\n var h_hi, h_lo;\n var i, hi, lo, w2, w7, w15, w16;\n var len = bytes.length();\n while(len >= 128) {\n // the w array will be populated with sixteen 64-bit big-endian words\n // and then extended into 64 64-bit words according to SHA-512\n for(i = 0; i < 16; ++i) {\n w[i][0] = bytes.getInt32() >>> 0;\n w[i][1] = bytes.getInt32() >>> 0;\n }\n for(; i < 80; ++i) {\n // for word 2 words ago: ROTR 19(x) ^ ROTR 61(x) ^ SHR 6(x)\n w2 = w[i - 2];\n hi = w2[0];\n lo = w2[1];\n\n // high bits\n t1_hi = (\n ((hi >>> 19) | (lo << 13)) ^ // ROTR 19\n ((lo >>> 29) | (hi << 3)) ^ // ROTR 61/(swap + ROTR 29)\n (hi >>> 6)) >>> 0; // SHR 6\n // low bits\n t1_lo = (\n ((hi << 13) | (lo >>> 19)) ^ // ROTR 19\n ((lo << 3) | (hi >>> 29)) ^ // ROTR 61/(swap + ROTR 29)\n ((hi << 26) | (lo >>> 6))) >>> 0; // SHR 6\n\n // for word 15 words ago: ROTR 1(x) ^ ROTR 8(x) ^ SHR 7(x)\n w15 = w[i - 15];\n hi = w15[0];\n lo = w15[1];\n\n // high bits\n t2_hi = (\n ((hi >>> 1) | (lo << 31)) ^ // ROTR 1\n ((hi >>> 8) | (lo << 24)) ^ // ROTR 8\n (hi >>> 7)) >>> 0; // SHR 7\n // low bits\n t2_lo = (\n ((hi << 31) | (lo >>> 1)) ^ // ROTR 1\n ((hi << 24) | (lo >>> 8)) ^ // ROTR 8\n ((hi << 25) | (lo >>> 7))) >>> 0; // SHR 7\n\n // sum(t1, word 7 ago, t2, word 16 ago) modulo 2^64 (carry lo overflow)\n w7 = w[i - 7];\n w16 = w[i - 16];\n lo = (t1_lo + w7[1] + t2_lo + w16[1]);\n w[i][0] = (t1_hi + w7[0] + t2_hi + w16[0] +\n ((lo / 0x100000000) >>> 0)) >>> 0;\n w[i][1] = lo >>> 0;\n }\n\n // initialize hash value for this chunk\n a_hi = s[0][0];\n a_lo = s[0][1];\n b_hi = s[1][0];\n b_lo = s[1][1];\n c_hi = s[2][0];\n c_lo = s[2][1];\n d_hi = s[3][0];\n d_lo = s[3][1];\n e_hi = s[4][0];\n e_lo = s[4][1];\n f_hi = s[5][0];\n f_lo = s[5][1];\n g_hi = s[6][0];\n g_lo = s[6][1];\n h_hi = s[7][0];\n h_lo = s[7][1];\n\n // round function\n for(i = 0; i < 80; ++i) {\n // Sum1(e) = ROTR 14(e) ^ ROTR 18(e) ^ ROTR 41(e)\n s1_hi = (\n ((e_hi >>> 14) | (e_lo << 18)) ^ // ROTR 14\n ((e_hi >>> 18) | (e_lo << 14)) ^ // ROTR 18\n ((e_lo >>> 9) | (e_hi << 23))) >>> 0; // ROTR 41/(swap + ROTR 9)\n s1_lo = (\n ((e_hi << 18) | (e_lo >>> 14)) ^ // ROTR 14\n ((e_hi << 14) | (e_lo >>> 18)) ^ // ROTR 18\n ((e_lo << 23) | (e_hi >>> 9))) >>> 0; // ROTR 41/(swap + ROTR 9)\n\n // Ch(e, f, g) (optimized the same way as SHA-1)\n ch_hi = (g_hi ^ (e_hi & (f_hi ^ g_hi))) >>> 0;\n ch_lo = (g_lo ^ (e_lo & (f_lo ^ g_lo))) >>> 0;\n\n // Sum0(a) = ROTR 28(a) ^ ROTR 34(a) ^ ROTR 39(a)\n s0_hi = (\n ((a_hi >>> 28) | (a_lo << 4)) ^ // ROTR 28\n ((a_lo >>> 2) | (a_hi << 30)) ^ // ROTR 34/(swap + ROTR 2)\n ((a_lo >>> 7) | (a_hi << 25))) >>> 0; // ROTR 39/(swap + ROTR 7)\n s0_lo = (\n ((a_hi << 4) | (a_lo >>> 28)) ^ // ROTR 28\n ((a_lo << 30) | (a_hi >>> 2)) ^ // ROTR 34/(swap + ROTR 2)\n ((a_lo << 25) | (a_hi >>> 7))) >>> 0; // ROTR 39/(swap + ROTR 7)\n\n // Maj(a, b, c) (optimized the same way as SHA-1)\n maj_hi = ((a_hi & b_hi) | (c_hi & (a_hi ^ b_hi))) >>> 0;\n maj_lo = ((a_lo & b_lo) | (c_lo & (a_lo ^ b_lo))) >>> 0;\n\n // main algorithm\n // t1 = (h + s1 + ch + _k[i] + _w[i]) modulo 2^64 (carry lo overflow)\n lo = (h_lo + s1_lo + ch_lo + _k[i][1] + w[i][1]);\n t1_hi = (h_hi + s1_hi + ch_hi + _k[i][0] + w[i][0] +\n ((lo / 0x100000000) >>> 0)) >>> 0;\n t1_lo = lo >>> 0;\n\n // t2 = s0 + maj modulo 2^64 (carry lo overflow)\n lo = s0_lo + maj_lo;\n t2_hi = (s0_hi + maj_hi + ((lo / 0x100000000) >>> 0)) >>> 0;\n t2_lo = lo >>> 0;\n\n h_hi = g_hi;\n h_lo = g_lo;\n\n g_hi = f_hi;\n g_lo = f_lo;\n\n f_hi = e_hi;\n f_lo = e_lo;\n\n // e = (d + t1) modulo 2^64 (carry lo overflow)\n lo = d_lo + t1_lo;\n e_hi = (d_hi + t1_hi + ((lo / 0x100000000) >>> 0)) >>> 0;\n e_lo = lo >>> 0;\n\n d_hi = c_hi;\n d_lo = c_lo;\n\n c_hi = b_hi;\n c_lo = b_lo;\n\n b_hi = a_hi;\n b_lo = a_lo;\n\n // a = (t1 + t2) modulo 2^64 (carry lo overflow)\n lo = t1_lo + t2_lo;\n a_hi = (t1_hi + t2_hi + ((lo / 0x100000000) >>> 0)) >>> 0;\n a_lo = lo >>> 0;\n }\n\n // update hash state (additional modulo 2^64)\n lo = s[0][1] + a_lo;\n s[0][0] = (s[0][0] + a_hi + ((lo / 0x100000000) >>> 0)) >>> 0;\n s[0][1] = lo >>> 0;\n\n lo = s[1][1] + b_lo;\n s[1][0] = (s[1][0] + b_hi + ((lo / 0x100000000) >>> 0)) >>> 0;\n s[1][1] = lo >>> 0;\n\n lo = s[2][1] + c_lo;\n s[2][0] = (s[2][0] + c_hi + ((lo / 0x100000000) >>> 0)) >>> 0;\n s[2][1] = lo >>> 0;\n\n lo = s[3][1] + d_lo;\n s[3][0] = (s[3][0] + d_hi + ((lo / 0x100000000) >>> 0)) >>> 0;\n s[3][1] = lo >>> 0;\n\n lo = s[4][1] + e_lo;\n s[4][0] = (s[4][0] + e_hi + ((lo / 0x100000000) >>> 0)) >>> 0;\n s[4][1] = lo >>> 0;\n\n lo = s[5][1] + f_lo;\n s[5][0] = (s[5][0] + f_hi + ((lo / 0x100000000) >>> 0)) >>> 0;\n s[5][1] = lo >>> 0;\n\n lo = s[6][1] + g_lo;\n s[6][0] = (s[6][0] + g_hi + ((lo / 0x100000000) >>> 0)) >>> 0;\n s[6][1] = lo >>> 0;\n\n lo = s[7][1] + h_lo;\n s[7][0] = (s[7][0] + h_hi + ((lo / 0x100000000) >>> 0)) >>> 0;\n s[7][1] = lo >>> 0;\n\n len -= 128;\n }\n}\n","var AWS = require('../core');\n\nAWS.util.update(AWS.MachineLearning.prototype, {\n /**\n * @api private\n */\n setupRequestListeners: function setupRequestListeners(request) {\n if (request.operation === 'predict') {\n request.addListener('build', this.buildEndpoint);\n }\n },\n\n /**\n * Updates request endpoint from PredictEndpoint\n * @api private\n */\n buildEndpoint: function buildEndpoint(request) {\n var url = request.params.PredictEndpoint;\n if (url) {\n request.httpRequest.endpoint = new AWS.Endpoint(url);\n }\n }\n\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar SetHelpers = require('../internals/set-helpers');\nvar createCollectionFrom = require('../internals/collection-from');\n\n// `Set.from` method\n// https://tc39.github.io/proposal-setmap-offrom/#sec-set.from\n$({ target: 'Set', stat: true, forced: true }, {\n from: createCollectionFrom(SetHelpers.Set, SetHelpers.add, false)\n});\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport VideoStreamIdSet from './VideoStreamIdSet';\n\n/**\n * [[DefaultVideoStreamIdSet]] implements [[VideoStreamIdSet]].\n */\nexport default class DefaultVideoStreamIdSet implements VideoStreamIdSet {\n private ids: Set;\n\n constructor(ids?: number[]) {\n this.ids = new Set(ids);\n }\n\n add(streamId: number): void {\n this.ids.add(streamId);\n }\n\n array(): number[] {\n const values = Array.from(this.ids.values());\n return values.sort((a, b) => a - b);\n }\n\n contain(streamId: number): boolean {\n return this.ids.has(streamId);\n }\n\n forEach(callbackFn: (streamId: number) => void): void {\n this.ids.forEach(callbackFn);\n }\n\n empty(): boolean {\n return this.ids.size === 0;\n }\n\n size(): number {\n return this.ids.size;\n }\n\n equal(other: DefaultVideoStreamIdSet): boolean {\n if (!other) {\n return this.ids.size === 0;\n }\n const x: number[] = this.array();\n const y: number[] = other.array();\n if (x.length !== y.length) {\n return false;\n }\n for (let i = 0; i < x.length; i++) {\n if (x[i] !== y[i]) {\n return false;\n }\n }\n return true;\n }\n\n clone(): DefaultVideoStreamIdSet {\n return new DefaultVideoStreamIdSet(this.array());\n }\n\n remove(streamId: number): void {\n this.ids.delete(streamId);\n }\n\n toJSON(): number[] {\n return this.array();\n }\n\n truncate(length: number): DefaultVideoStreamIdSet {\n const x: number[] = this.array();\n return new DefaultVideoStreamIdSet(x.splice(0, length));\n }\n}\n","export default {\n \"hash\": \"7f7da4f\",\n \"raw\": \"v3.27.1\",\n \"semverString\": \"3.27.1\"\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\nvar byteToHex = [];\n\nfor (var i = 0; i < 256; ++i) {\n byteToHex[i] = (i + 0x100).toString(16).substr(1);\n}\n\nfunction bytesToUuid(buf, offset) {\n var i = offset || 0;\n var bth = byteToHex; // join used to fix memory issue caused by concatenation: https://bugs.chromium.org/p/v8/issues/detail?id=3175#c4\n\n return [bth[buf[i++]], bth[buf[i++]], bth[buf[i++]], bth[buf[i++]], '-', bth[buf[i++]], bth[buf[i++]], '-', bth[buf[i++]], bth[buf[i++]], '-', bth[buf[i++]], bth[buf[i++]], '-', bth[buf[i++]], bth[buf[i++]], bth[buf[i++]], bth[buf[i++]], bth[buf[i++]], bth[buf[i++]]].join('');\n}\n\nvar _default = bytesToUuid;\nexports.default = _default;","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['sqs'] = {};\nAWS.SQS = Service.defineService('sqs', ['2012-11-05']);\nrequire('../lib/services/sqs');\nObject.defineProperty(apiLoader.services['sqs'], '2012-11-05', {\n get: function get() {\n var model = require('../apis/sqs-2012-11-05.min.json');\n model.paginators = require('../apis/sqs-2012-11-05.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.SQS;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst react_1 = __importDefault(require(\"react\"));\nconst PushNotification = (props) => {\n const { title, subtitle, message, theme, id, closeNotification, styling, closeButton, onClick } = props;\n let topStyling = {};\n let bottomStyling = {};\n if (styling) {\n topStyling.backgroundColor = styling.backgroundTop;\n topStyling.color = styling.colorTop;\n bottomStyling.backgroundColor = styling.backgroundBottom;\n bottomStyling.color = styling.colorBottom;\n }\n return react_1.default.createElement(\"div\", { className: `rpn-notification-card ${theme}`, onClick: onClick },\n react_1.default.createElement(\"div\", { className: `rpn-notification-card-top ${theme}`, style: Object.keys(topStyling).length ? topStyling : undefined },\n react_1.default.createElement(\"span\", null, title),\n react_1.default.createElement(\"span\", { className: `rpn-notification-card-close ${theme}`, onClick: () => closeNotification(id) }, closeButton || 'close')),\n react_1.default.createElement(\"div\", { className: `rpn-notification-card-bottom ${theme}`, style: Object.keys(bottomStyling).length ? bottomStyling : undefined },\n react_1.default.createElement(\"span\", { className: 'subtitle' }, subtitle),\n react_1.default.createElement(\"span\", { className: 'message' }, message)));\n};\nexports.default = PushNotification;\n","'use strict';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nmodule.exports = function isAxiosError(payload) {\n return (typeof payload === 'object') && (payload.isAxiosError === true);\n};\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['autoscaling'] = {};\nAWS.AutoScaling = Service.defineService('autoscaling', ['2011-01-01']);\nObject.defineProperty(apiLoader.services['autoscaling'], '2011-01-01', {\n get: function get() {\n var model = require('../apis/autoscaling-2011-01-01.min.json');\n model.paginators = require('../apis/autoscaling-2011-01-01.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.AutoScaling;\n","'use strict';\nvar aSet = require('../internals/a-set');\nvar SetHelpers = require('../internals/set-helpers');\nvar clone = require('../internals/set-clone');\nvar getSetRecord = require('../internals/get-set-record');\nvar iterateSimple = require('../internals/iterate-simple');\n\nvar add = SetHelpers.add;\nvar has = SetHelpers.has;\nvar remove = SetHelpers.remove;\n\n// `Set.prototype.symmetricDifference` method\n// https://github.com/tc39/proposal-set-methods\nmodule.exports = function symmetricDifference(other) {\n var O = aSet(this);\n var keysIter = getSetRecord(other).getIterator();\n var result = clone(O);\n iterateSimple(keysIter, function (e) {\n if (has(O, e)) remove(result, e);\n else add(result, e);\n });\n return result;\n};\n","'use strict';\nvar call = require('../internals/function-call');\nvar isObject = require('../internals/is-object');\nvar isSymbol = require('../internals/is-symbol');\nvar getMethod = require('../internals/get-method');\nvar ordinaryToPrimitive = require('../internals/ordinary-to-primitive');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar $TypeError = TypeError;\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\n// `ToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-toprimitive\nmodule.exports = function (input, pref) {\n if (!isObject(input) || isSymbol(input)) return input;\n var exoticToPrim = getMethod(input, TO_PRIMITIVE);\n var result;\n if (exoticToPrim) {\n if (pref === undefined) pref = 'default';\n result = call(exoticToPrim, input, pref);\n if (!isObject(result) || isSymbol(result)) return result;\n throw new $TypeError(\"Can't convert object to primitive value\");\n }\n if (pref === undefined) pref = 'number';\n return ordinaryToPrimitive(input, pref);\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { GetMessagingSessionEndpointCommand } from '@aws-sdk/client-chime-sdk-messaging';\n\nimport FullJitterBackoff from '../backoff/FullJitterBackoff';\nimport CSPMonitor from '../cspmonitor/CSPMonitor';\nimport Logger from '../logger/Logger';\nimport Message from '../message/Message';\nimport MessagingSessionObserver from '../messagingsessionobserver/MessagingSessionObserver';\nimport DefaultReconnectController from '../reconnectcontroller/DefaultReconnectController';\nimport ReconnectController from '../reconnectcontroller/ReconnectController';\nimport AsyncScheduler from '../scheduler/AsyncScheduler';\nimport DefaultSigV4 from '../sigv4/DefaultSigV4';\nimport SigV4 from '../sigv4/SigV4';\nimport DefaultWebSocketAdapter from '../websocketadapter/DefaultWebSocketAdapter';\nimport WebSocketAdapter from '../websocketadapter/WebSocketAdapter';\nimport WebSocketReadyState from '../websocketadapter/WebSocketReadyState';\nimport MessagingSession from './MessagingSession';\nimport MessagingSessionConfiguration from './MessagingSessionConfiguration';\nimport PrefetchOn from './PrefetchOn';\n\nexport default class DefaultMessagingSession implements MessagingSession {\n private observerQueue: Set = new Set();\n private isClosing: boolean;\n private isSessionEstablished: boolean;\n private bootstrapResolved: (value: PromiseLike | void) => void; // Variable to determine that a session bootstrap was successful, resolves the StartSession promise\n private bootstrapRejected: (reason?: CloseEvent) => void; // Variable to determine that a session disconnection was before bootstrap, rejects the StartSession promise\n private preBootstrapMessages: Message[];\n\n constructor(\n private configuration: MessagingSessionConfiguration,\n private logger: Logger,\n private readonly webSocket?: WebSocketAdapter,\n private readonly reconnectController?: ReconnectController,\n private readonly sigV4?: SigV4\n ) {\n if (!this.webSocket) {\n this.webSocket = new DefaultWebSocketAdapter(this.logger);\n }\n if (!this.reconnectController) {\n this.reconnectController = new DefaultReconnectController(\n configuration.reconnectTimeoutMs,\n new FullJitterBackoff(\n configuration.reconnectFixedWaitMs,\n configuration.reconnectShortBackoffMs,\n configuration.reconnectLongBackoffMs\n )\n );\n }\n if (!this.sigV4) {\n this.sigV4 = new DefaultSigV4(this.configuration.chimeClient);\n }\n\n CSPMonitor.addLogger(this.logger);\n CSPMonitor.register();\n this.preBootstrapMessages = [];\n }\n\n addObserver(observer: MessagingSessionObserver): void {\n this.logger.info('adding messaging observer');\n this.observerQueue.add(observer);\n }\n\n removeObserver(observer: MessagingSessionObserver): void {\n this.logger.info('removing messaging observer');\n this.observerQueue.delete(observer);\n }\n\n async start(): Promise {\n if (this.isClosed()) {\n await this.startConnecting(false);\n } else {\n this.logger.info('messaging session already started');\n }\n }\n\n stop(): void {\n if (!this.isClosed()) {\n this.isClosing = true;\n this.webSocket.close();\n CSPMonitor.removeLogger(this.logger);\n } else {\n this.logger.info('no existing messaging session needs closing');\n }\n }\n\n forEachObserver(observerFunc: (observer: MessagingSessionObserver) => void): void {\n for (const observer of this.observerQueue) {\n AsyncScheduler.nextTick(() => {\n if (this.observerQueue.has(observer)) {\n observerFunc(observer);\n }\n });\n }\n }\n\n private setUpEventListeners(): void {\n this.webSocket.addEventListener('open', () => {\n this.openEventHandler();\n });\n this.webSocket.addEventListener('message', (event: MessageEvent) => {\n this.receiveMessageHandler(event.data);\n });\n this.webSocket.addEventListener('close', (event: CloseEvent) => {\n this.closeEventHandler(event);\n });\n this.webSocket.addEventListener('error', () => {\n this.logger.error(`WebSocket error`);\n });\n }\n\n private async startConnecting(reconnecting: boolean): Promise {\n await this.startConnectingInternal(reconnecting);\n return await new Promise((resolve, reject) => {\n this.bootstrapResolved = resolve;\n this.bootstrapRejected = reject;\n });\n }\n\n private async startConnectingInternal(reconnecting: boolean): Promise {\n let endpointUrl = this.configuration.endpointUrl;\n\n // Moving this reconnect logic can potentially result into an infinite reconnect loop on errors.\n // Check https://github.com/aws/amazon-chime-sdk-js/issues/2372 for details.\n if (!reconnecting) {\n this.reconnectController.reset();\n }\n if (this.reconnectController.hasStartedConnectionAttempt()) {\n this.reconnectController.startedConnectionAttempt(false);\n } else {\n this.reconnectController.startedConnectionAttempt(true);\n }\n // reconnect needs to re-resolve endpoint url, which will also refresh credentials on client if they are expired\n if (reconnecting || endpointUrl === undefined) {\n try {\n if (this.configuration.chimeClient.getMessagingSessionEndpoint instanceof Function) {\n const response = await this.configuration.chimeClient.getMessagingSessionEndpoint();\n // Check for aws sdk v3 with v2 style compatibility first\n if (response.Endpoint?.Url) {\n endpointUrl = response.Endpoint.Url;\n } else {\n // Make aws sdk v2 call\n const endpoint = await this.configuration.chimeClient\n .getMessagingSessionEndpoint()\n .promise();\n endpointUrl = endpoint.Endpoint.Url;\n }\n } else {\n endpointUrl = (\n await this.configuration.chimeClient.send(new GetMessagingSessionEndpointCommand({}))\n ).Endpoint.Url;\n }\n this.logger.debug(`Messaging endpoint resolved to: ${endpointUrl}`);\n } catch (e) {\n // send artificial close code event so the\n // re-connect logic of underlying websocket client is\n // triggered in the close handler\n this.logger.error(`Messaging Session failed to resolve endpoint: ${e}`);\n const closeEvent = new CloseEvent('close', {\n wasClean: false,\n code: 4999,\n reason: 'Failed to get messaging session endpoint URL',\n bubbles: false,\n });\n this.closeEventHandler(closeEvent);\n return;\n }\n }\n\n const signedUrl = await this.prepareWebSocketUrl(endpointUrl);\n this.logger.info(`opening connection to ${signedUrl}`);\n if (!reconnecting) {\n this.reconnectController.reset();\n }\n if (this.reconnectController.hasStartedConnectionAttempt()) {\n this.reconnectController.startedConnectionAttempt(false);\n } else {\n this.reconnectController.startedConnectionAttempt(true);\n }\n this.webSocket.create(signedUrl, [], true);\n this.forEachObserver(observer => {\n if (observer.messagingSessionDidStartConnecting) {\n observer.messagingSessionDidStartConnecting(reconnecting);\n }\n });\n this.setUpEventListeners();\n }\n\n private async prepareWebSocketUrl(endpointUrl: string): Promise {\n const queryParams = new Map();\n queryParams.set('userArn', [this.configuration.userArn]);\n queryParams.set('sessionId', [this.configuration.messagingSessionId]);\n if (this.configuration.prefetchOn === PrefetchOn.Connect) {\n queryParams.set('prefetch-on', [PrefetchOn.Connect]);\n }\n if (this.configuration.prefetchSortBy) {\n queryParams.set('prefetch-sort-by', [this.configuration.prefetchSortBy]);\n }\n return await this.sigV4.signURL(\n 'GET',\n 'wss',\n 'chime',\n endpointUrl,\n '/connect',\n '',\n queryParams\n );\n }\n\n private isClosed(): boolean {\n return (\n this.webSocket.readyState() === WebSocketReadyState.None ||\n this.webSocket.readyState() === WebSocketReadyState.Closed\n );\n }\n\n private openEventHandler(): void {\n this.reconnectController.reset();\n this.isSessionEstablished = false;\n }\n\n private receiveMessageHandler(data: string): void {\n try {\n const jsonData = JSON.parse(data);\n const messageType = jsonData.Headers['x-amz-chime-event-type'];\n const message = new Message(messageType, jsonData.Headers, jsonData.Payload || null);\n if (!this.isSessionEstablished && messageType === 'SESSION_ESTABLISHED') {\n // Backend connects WebSocket and then either\n // (1) Closes with WebSocket error code to reflect failure to authorize or other connection error OR\n // (2) Sends SESSION_ESTABLISHED. SESSION_ESTABLISHED indicates that all messages and events on a channel\n // the app instance user is a member of is guaranteed to be delivered on this WebSocket as long as the WebSocket\n // connection stays opened.\n this.forEachObserver(observer => {\n if (observer.messagingSessionDidStart) {\n observer.messagingSessionDidStart();\n }\n });\n this.bootstrapResolved();\n this.isSessionEstablished = true;\n\n // Send message and flush the queue.\n const preBootstrapMessageLength = this.preBootstrapMessages.length;\n for (let iter = 0; iter < preBootstrapMessageLength; iter++) {\n const preBootstrapMessage = this.preBootstrapMessages.shift();\n this.forEachObserver(observer => {\n this.sendMessageToObserver(observer, preBootstrapMessage);\n });\n }\n } else if (!this.isSessionEstablished) {\n // SESSION_ESTABLISHED is not guaranteed to be the first message, and in rare conditions a message or event from\n // a channel the member is a member of might arrive prior to SESSION_ESTABLISHED. Because SESSION_ESTABLISHED indicates\n // it is safe to bootstrap the user application without any race conditions in losing events we opt to store messages prior\n // to SESSION_ESTABLISHED being received and send when once SESSION_ESTABLISHED.\n this.preBootstrapMessages.push(message);\n return;\n }\n this.forEachObserver(observer => {\n this.sendMessageToObserver(observer, message);\n });\n } catch (error) {\n this.logger.error(`Messaging parsing failed: ${error}`);\n }\n }\n\n private sendMessageToObserver(observer: MessagingSessionObserver, message: Message): void {\n if (observer.messagingSessionDidReceiveMessage) {\n observer.messagingSessionDidReceiveMessage(message);\n }\n }\n\n private retryConnection(): boolean {\n return this.reconnectController.retryWithBackoff(async () => {\n await this.startConnecting(true);\n }, null);\n }\n\n private closeEventHandler(event: CloseEvent): void {\n this.logger.info(`WebSocket close: ${event.code} ${event.reason}`);\n if (event.code !== 4999) {\n this.webSocket.destroy();\n }\n if (!this.isClosing && this.canReconnect(event.code) && this.retryConnection()) {\n return;\n }\n this.isClosing = false;\n if (this.isSessionEstablished) {\n this.forEachObserver(observer => {\n if (observer.messagingSessionDidStop) {\n observer.messagingSessionDidStop(event);\n }\n });\n } else {\n this.bootstrapRejected(event);\n }\n }\n\n private canReconnect(closeCode: number): boolean {\n // 4003 is Kicked closing event from the back end\n return (\n closeCode === 1001 ||\n closeCode === 1006 ||\n (closeCode >= 1011 && closeCode <= 1014) ||\n (closeCode > 4000 && closeCode !== 4002 && closeCode !== 4003 && closeCode !== 4401)\n );\n }\n}\n","\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:!0}),exports.mapStringToUnicode=exports.keysStartingWith=exports.fromUnicodeToEmoji=exports.emojiMap=exports.checkTextWithAutoSuggestionsAndUnicode=exports.checkTextWithAutoSuggestions=exports.checkText=void 0;var emojiMap={\"o/\":\"\\uD83D\\uDC4B\",\"\":\"\\uD83D\\uDE04\",\">.<\":\"\\uD83D\\uDE21\",\">:(\":\"\\uD83D\\uDE20\",\">:)\":\"\\uD83D\\uDE08\",\">:-)\":\"\\uD83D\\uDE08\",\">:/\":\"\\uD83D\\uDE21\",\">:O\":\"\\uD83D\\uDE32\",\">:P\":\"\\uD83D\\uDE1C\",\">:[\":\"\\uD83D\\uDE12\",\">:\\\\\":\"\\uD83D\\uDE21\",\">;)\":\"\\uD83D\\uDE08\",\">_>^\":\"\\uD83D\\uDE24\",\"^^\":\"\\uD83D\\uDE0A\",\":sweat:\":\"\\uD83D\\uDE05\",\":smile:\":\"\\uD83D\\uDE04\",\":laughing:\":\"\\uD83D\\uDE06\",\":blush:\":\"\\uD83D\\uDE0A\",\":smiley:\":\"\\uD83D\\uDE03\",\":relaxed:\":\"\\u263A\\uFE0F\",\":smirk:\":\"\\uD83D\\uDE0F\",\":heart_eyes:\":\"\\uD83D\\uDE0D\",\":kissing_heart:\":\"\\uD83D\\uDE18\",\":kissing_closed_eyes:\":\"\\uD83D\\uDE1A\",\":flushed:\":\"\\uD83D\\uDE33\",\":relieved:\":\"\\uD83D\\uDE0C\",\":satisfied:\":\"\\uD83D\\uDE06\",\":grin:\":\"\\uD83D\\uDE01\",\":wink:\":\"\\uD83D\\uDE09\",\":stuck_out_tongue_winking_eye:\":\"\\uD83D\\uDE1C\",\":stuck_out_tongue_closed_eyes:\":\"\\uD83D\\uDE1D\",\":grinning:\":\"\\uD83D\\uDE00\",\":kissing:\":\"\\uD83D\\uDE17\",\":kissing_smiling_eyes:\":\"\\uD83D\\uDE19\",\":stuck_out_tongue:\":\"\\uD83D\\uDE1B\",\":sleeping:\":\"\\uD83D\\uDE34\",\":worried:\":\"\\uD83D\\uDE1F\",\":frowning:\":\"\\uD83D\\uDE26\",\":anguished:\":\"\\uD83D\\uDE27\",\":open_mouth:\":\"\\uD83D\\uDE2E\",\":grimacing:\":\"\\uD83D\\uDE2C\",\":confused:\":\"\\uD83D\\uDE15\",\":hushed:\":\"\\uD83D\\uDE2F\",\":expressionless:\":\"\\uD83D\\uDE11\",\":unamused:\":\"\\uD83D\\uDE12\",\":sweat_smile:\":\"\\uD83D\\uDE05\",\":disappointed_relieved:\":\"\\uD83D\\uDE25\",\":weary:\":\"\\uD83D\\uDE29\",\":pensive:\":\"\\uD83D\\uDE14\",\":disappointed:\":\"\\uD83D\\uDE1E\",\":confounded:\":\"\\uD83D\\uDE16\",\":fearful:\":\"\\uD83D\\uDE28\",\":cold_sweat:\":\"\\uD83D\\uDE30\",\":persevere:\":\"\\uD83D\\uDE23\",\":cry:\":\"\\uD83D\\uDE22\",\":sob:\":\"\\uD83D\\uDE2D\",\":joy:\":\"\\uD83D\\uDE02\",\":astonished:\":\"\\uD83D\\uDE32\",\":scream:\":\"\\uD83D\\uDE31\",\":tired_face:\":\"\\uD83D\\uDE2B\",\":angry:\":\"\\uD83D\\uDE20\",\":rage:\":\"\\uD83D\\uDE21\",\":triumph:\":\"\\uD83D\\uDE24\",\":sleepy:\":\"\\uD83D\\uDE2A\",\":yum:\":\"\\uD83D\\uDE0B\",\":mask:\":\"\\uD83D\\uDE37\",\":sunglasses:\":\"\\uD83D\\uDE0E\",\":dizzy_face:\":\"\\uD83D\\uDE35\",\":imp:\":\"\\uD83D\\uDC7F\",\":smiling_imp:\":\"\\uD83D\\uDE08\",\":neutral_face:\":\"\\uD83D\\uDE10\",\":no_mouth:\":\"\\uD83D\\uDE36\",\":innocent:\":\"\\uD83D\\uDE07\",\":alien:\":\"\\uD83D\\uDC7D\",\":yellow_heart:\":\"\\uD83D\\uDC9B\",\":blue_heart:\":\"\\uD83D\\uDC99\",\":purple_heart:\":\"\\uD83D\\uDC9C\",\":heart:\":\"\\u2764\\uFE0F\",\":green_heart:\":\"\\uD83D\\uDC9A\",\":broken_heart:\":\"\\uD83D\\uDC94\",\":heartbeat:\":\"\\uD83D\\uDC93\",\":heartpulse:\":\"\\uD83D\\uDC97\",\":two_hearts:\":\"\\uD83D\\uDC95\",\":revolving_hearts:\":\"\\uD83D\\uDC9E\",\":cupid:\":\"\\uD83D\\uDC98\",\":sparkling_heart:\":\"\\uD83D\\uDC96\",\":sparkles:\":\"\\u2728\",\":star:\":\"\\u2B50\",\":star2:\":\"\\uD83C\\uDF1F\",\":dizzy:\":\"\\uD83D\\uDCAB\",\":boom:\":\"\\uD83D\\uDCA5\",\":collision:\":\"\\uD83D\\uDCA5\",\":anger:\":\"\\uD83D\\uDCA2\",\":exclamation:\":\"\\u2757\",\":question:\":\"\\u2753\",\":grey_exclamation:\":\"\\u2755\",\":grey_question:\":\"\\u2754\",\":zzz:\":\"\\uD83D\\uDCA4\",\":dash:\":\"\\uD83D\\uDCA8\",\":sweat_drops:\":\"\\uD83D\\uDCA6\",\":notes:\":\"\\uD83C\\uDFB6\",\":musical_note:\":\"\\uD83C\\uDFB5\",\":fire:\":\"\\uD83D\\uDD25\",\":hankey:\":\"\\uD83D\\uDCA9\",\":poop:\":\"\\uD83D\\uDCA9\",\":shit:\":\"\\uD83D\\uDCA9\",\":+1:\":\"\\uD83D\\uDC4D\",\":thumbsup:\":\"\\uD83D\\uDC4D\",\":-1:\":\"\\uD83D\\uDC4E\",\":thumbsdown:\":\"\\uD83D\\uDC4E\",\":ok_hand:\":\"\\uD83D\\uDC4C\",\":punch:\":\"\\uD83D\\uDC4A\",\":facepunch:\":\"\\uD83D\\uDC4A\",\":fist:\":\"\\u270A\",\":v:\":\"\\u270C\\uFE0F\",\":wave:\":\"\\uD83D\\uDC4B\",\":hand:\":\"\\u270B\",\":raised_hand:\":\"\\u270B\",\":open_hands:\":\"\\uD83D\\uDC50\",\":point_up:\":\"\\u261D\\uFE0F\",\":point_down:\":\"\\uD83D\\uDC47\",\":point_left:\":\"\\uD83D\\uDC48\",\":point_right:\":\"\\uD83D\\uDC49\",\":raised_hands:\":\"\\uD83D\\uDE4C\",\":pray:\":\"\\uD83D\\uDE4F\",\":point_up_2:\":\"\\uD83D\\uDC46\",\":clap:\":\"\\uD83D\\uDC4F\",\":muscle:\":\"\\uD83D\\uDCAA\",\":metal:\":\"\\uD83E\\uDD18\",\":fu:\":\"\\uD83D\\uDD95\",\":walking:\":\"\\uD83D\\uDEB6\",\":runner:\":\"\\uD83C\\uDFC3\",\":running:\":\"\\uD83C\\uDFC3\",\":couple:\":\"\\uD83D\\uDC6B\",\":family:\":\"\\uD83D\\uDC6A\",\":two_men_holding_hands:\":\"\\uD83D\\uDC6C\",\":two_women_holding_hands:\":\"\\uD83D\\uDC6D\",\":dancer:\":\"\\uD83D\\uDC83\",\":dancers:\":\"\\uD83D\\uDC6F\",\":no_good:\":\"\\uD83D\\uDE45\",\":information_desk_person:\":\"\\uD83D\\uDC81\",\":raising_hand:\":\"\\uD83D\\uDE4B\",\":bride_with_veil:\":\"\\uD83D\\uDC70\",\":bow:\":\"\\uD83D\\uDE47\",\":couplekiss:\":\"\\uD83D\\uDC8F\",\":couple_with_heart:\":\"\\uD83D\\uDC91\",\":massage:\":\"\\uD83D\\uDC86\",\":haircut:\":\"\\uD83D\\uDC87\",\":nail_care:\":\"\\uD83D\\uDC85\",\":boy:\":\"\\uD83D\\uDC66\",\":girl:\":\"\\uD83D\\uDC67\",\":woman:\":\"\\uD83D\\uDC69\",\":man:\":\"\\uD83D\\uDC68\",\":baby:\":\"\\uD83D\\uDC76\",\":older_woman:\":\"\\uD83D\\uDC75\",\":older_man:\":\"\\uD83D\\uDC74\",\":man_with_gua_pi_mao:\":\"\\uD83D\\uDC72\",\":construction_worker:\":\"\\uD83D\\uDC77\",\":cop:\":\"\\uD83D\\uDC6E\",\":angel:\":\"\\uD83D\\uDC7C\",\":princess:\":\"\\uD83D\\uDC78\",\":smiley_cat:\":\"\\uD83D\\uDE3A\",\":smile_cat:\":\"\\uD83D\\uDE38\",\":heart_eyes_cat:\":\"\\uD83D\\uDE3B\",\":kissing_cat:\":\"\\uD83D\\uDE3D\",\":smirk_cat:\":\"\\uD83D\\uDE3C\",\":scream_cat:\":\"\\uD83D\\uDE40\",\":crying_cat_face:\":\"\\uD83D\\uDE3F\",\":joy_cat:\":\"\\uD83D\\uDE39\",\":pouting_cat:\":\"\\uD83D\\uDE3E\",\":japanese_ogre:\":\"\\uD83D\\uDC79\",\":japanese_goblin:\":\"\\uD83D\\uDC7A\",\":see_no_evil:\":\"\\uD83D\\uDE48\",\":hear_no_evil:\":\"\\uD83D\\uDE49\",\":speak_no_evil:\":\"\\uD83D\\uDE4A\",\":skull:\":\"\\uD83D\\uDC80\",\":feet:\":\"\\uD83D\\uDC3E\",\":lips:\":\"\\uD83D\\uDC44\",\":kiss:\":\"\\uD83D\\uDC8B\",\":droplet:\":\"\\uD83D\\uDCA7\",\":ear:\":\"\\uD83D\\uDC42\",\":eyes:\":\"\\uD83D\\uDC40\",\":nose:\":\"\\uD83D\\uDC43\",\":tongue:\":\"\\uD83D\\uDC45\",\":love_letter:\":\"\\uD83D\\uDC8C\",\":bust_in_silhouette:\":\"\\uD83D\\uDC64\",\":busts_in_silhouette:\":\"\\uD83D\\uDC65\",\":speech_balloon:\":\"\\uD83D\\uDCAC\",\":thought_balloon:\":\"\\uD83D\\uDCAD\",\":sunny:\":\"\\u2600\\uFE0F\",\":umbrella:\":\"\\u2614\",\":cloud:\":\"\\u2601\\uFE0F\",\":snowflake:\":\"\\u2744\\uFE0F\",\":snowman:\":\"\\u26C4\",\":zap:\":\"\\u26A1\",\":cyclone:\":\"\\uD83C\\uDF00\",\":foggy:\":\"\\uD83C\\uDF01\",\":ocean:\":\"\\uD83C\\uDF0A\",\":cat:\":\"\\uD83D\\uDC31\",\":dog:\":\"\\uD83D\\uDC36\",\":mouse:\":\"\\uD83D\\uDC2D\",\":hamster:\":\"\\uD83D\\uDC39\",\":rabbit:\":\"\\uD83D\\uDC30\",\":wolf:\":\"\\uD83D\\uDC3A\",\":frog:\":\"\\uD83D\\uDC38\",\":tiger:\":\"\\uD83D\\uDC2F\",\":koala:\":\"\\uD83D\\uDC28\",\":bear:\":\"\\uD83D\\uDC3B\",\":pig:\":\"\\uD83D\\uDC37\",\":pig_nose:\":\"\\uD83D\\uDC3D\",\":cow:\":\"\\uD83D\\uDC2E\",\":boar:\":\"\\uD83D\\uDC17\",\":monkey_face:\":\"\\uD83D\\uDC35\",\":monkey:\":\"\\uD83D\\uDC12\",\":horse:\":\"\\uD83D\\uDC34\",\":racehorse:\":\"\\uD83D\\uDC0E\",\":camel:\":\"\\uD83D\\uDC2B\",\":sheep:\":\"\\uD83D\\uDC11\",\":elephant:\":\"\\uD83D\\uDC18\",\":panda_face:\":\"\\uD83D\\uDC3C\",\":snake:\":\"\\uD83D\\uDC0D\",\":bird:\":\"\\uD83D\\uDC26\",\":baby_chick:\":\"\\uD83D\\uDC24\",\":hatched_chick:\":\"\\uD83D\\uDC25\",\":hatching_chick:\":\"\\uD83D\\uDC23\",\":chicken:\":\"\\uD83D\\uDC14\",\":penguin:\":\"\\uD83D\\uDC27\",\":turtle:\":\"\\uD83D\\uDC22\",\":bug:\":\"\\uD83D\\uDC1B\",\":honeybee:\":\"\\uD83D\\uDC1D\",\":ant:\":\"\\uD83D\\uDC1C\",\":beetle:\":\"\\uD83D\\uDC1E\",\":snail:\":\"\\uD83D\\uDC0C\",\":octopus:\":\"\\uD83D\\uDC19\",\":tropical_fish:\":\"\\uD83D\\uDC20\",\":fish:\":\"\\uD83D\\uDC1F\",\":whale:\":\"\\uD83D\\uDC33\",\":whale2:\":\"\\uD83D\\uDC0B\",\":dolphin:\":\"\\uD83D\\uDC2C\",\":cow2:\":\"\\uD83D\\uDC04\",\":ram:\":\"\\uD83D\\uDC0F\",\":rat:\":\"\\uD83D\\uDC00\",\":water_buffalo:\":\"\\uD83D\\uDC03\",\":tiger2:\":\"\\uD83D\\uDC05\",\":rabbit2:\":\"\\uD83D\\uDC07\",\":dragon:\":\"\\uD83D\\uDC09\",\":goat:\":\"\\uD83D\\uDC10\",\":rooster:\":\"\\uD83D\\uDC13\",\":dog2:\":\"\\uD83D\\uDC15\",\":pig2:\":\"\\uD83D\\uDC16\",\":mouse2:\":\"\\uD83D\\uDC01\",\":ox:\":\"\\uD83D\\uDC02\",\":dragon_face:\":\"\\uD83D\\uDC32\",\":blowfish:\":\"\\uD83D\\uDC21\",\":crocodile:\":\"\\uD83D\\uDC0A\",\":dromedary_camel:\":\"\\uD83D\\uDC2A\",\":leopard:\":\"\\uD83D\\uDC06\",\":cat2:\":\"\\uD83D\\uDC08\",\":poodle:\":\"\\uD83D\\uDC29\",\":paw_prints:\":\"\\uD83D\\uDC3E\",\":bouquet:\":\"\\uD83D\\uDC90\",\":cherry_blossom:\":\"\\uD83C\\uDF38\",\":tulip:\":\"\\uD83C\\uDF37\",\":four_leaf_clover:\":\"\\uD83C\\uDF40\",\":rose:\":\"\\uD83C\\uDF39\",\":sunflower:\":\"\\uD83C\\uDF3B\",\":hibiscus:\":\"\\uD83C\\uDF3A\",\":maple_leaf:\":\"\\uD83C\\uDF41\",\":leaves:\":\"\\uD83C\\uDF43\",\":fallen_leaf:\":\"\\uD83C\\uDF42\",\":herb:\":\"\\uD83C\\uDF3F\",\":mushroom:\":\"\\uD83C\\uDF44\",\":cactus:\":\"\\uD83C\\uDF35\",\":palm_tree:\":\"\\uD83C\\uDF34\",\":evergreen_tree:\":\"\\uD83C\\uDF32\",\":deciduous_tree:\":\"\\uD83C\\uDF33\",\":chestnut:\":\"\\uD83C\\uDF30\",\":seedling:\":\"\\uD83C\\uDF31\",\":blossom:\":\"\\uD83C\\uDF3C\",\":ear_of_rice:\":\"\\uD83C\\uDF3E\",\":shell:\":\"\\uD83D\\uDC1A\",\":globe_with_meridians:\":\"\\uD83C\\uDF10\",\":sun_with_face:\":\"\\uD83C\\uDF1E\",\":full_moon_with_face:\":\"\\uD83C\\uDF1D\",\":new_moon_with_face:\":\"\\uD83C\\uDF1A\",\":new_moon:\":\"\\uD83C\\uDF11\",\":waxing_crescent_moon:\":\"\\uD83C\\uDF12\",\":first_quarter_moon:\":\"\\uD83C\\uDF13\",\":waxing_gibbous_moon:\":\"\\uD83C\\uDF14\",\":full_moon:\":\"\\uD83C\\uDF15\",\":waning_gibbous_moon:\":\"\\uD83C\\uDF16\",\":last_quarter_moon:\":\"\\uD83C\\uDF17\",\":waning_crescent_moon:\":\"\\uD83C\\uDF18\",\":last_quarter_moon_with_face:\":\"\\uD83C\\uDF1C\",\":first_quarter_moon_with_face:\":\"\\uD83C\\uDF1B\",\":moon:\":\"\\uD83C\\uDF14\",\":earth_africa:\":\"\\uD83C\\uDF0D\",\":earth_americas:\":\"\\uD83C\\uDF0E\",\":earth_asia:\":\"\\uD83C\\uDF0F\",\":volcano:\":\"\\uD83C\\uDF0B\",\":milky_way:\":\"\\uD83C\\uDF0C\",\":partly_sunny:\":\"\\u26C5\",\":bamboo:\":\"\\uD83C\\uDF8D\",\":gift_heart:\":\"\\uD83D\\uDC9D\",\":dolls:\":\"\\uD83C\\uDF8E\",\":school_satchel:\":\"\\uD83C\\uDF92\",\":mortar_board:\":\"\\uD83C\\uDF93\",\":flags:\":\"\\uD83C\\uDF8F\",\":fireworks:\":\"\\uD83C\\uDF86\",\":sparkler:\":\"\\uD83C\\uDF87\",\":wind_chime:\":\"\\uD83C\\uDF90\",\":rice_scene:\":\"\\uD83C\\uDF91\",\":jack_o_lantern:\":\"\\uD83C\\uDF83\",\":ghost:\":\"\\uD83D\\uDC7B\",\":santa:\":\"\\uD83C\\uDF85\",\":christmas_tree:\":\"\\uD83C\\uDF84\",\":gift:\":\"\\uD83C\\uDF81\",\":bell:\":\"\\uD83D\\uDD14\",\":no_bell:\":\"\\uD83D\\uDD15\",\":tanabata_tree:\":\"\\uD83C\\uDF8B\",\":tada:\":\"\\uD83C\\uDF89\",\":confetti_ball:\":\"\\uD83C\\uDF8A\",\":balloon:\":\"\\uD83C\\uDF88\",\":crystal_ball:\":\"\\uD83D\\uDD2E\",\":cd:\":\"\\uD83D\\uDCBF\",\":dvd:\":\"\\uD83D\\uDCC0\",\":floppy_disk:\":\"\\uD83D\\uDCBE\",\":camera:\":\"\\uD83D\\uDCF7\",\":video_camera:\":\"\\uD83D\\uDCF9\",\":movie_camera:\":\"\\uD83C\\uDFA5\",\":computer:\":\"\\uD83D\\uDCBB\",\":tv:\":\"\\uD83D\\uDCFA\",\":iphone:\":\"\\uD83D\\uDCF1\",\":phone:\":\"\\u260E\\uFE0F\",\":telephone:\":\"\\u260E\\uFE0F\",\":telephone_receiver:\":\"\\uD83D\\uDCDE\",\":pager:\":\"\\uD83D\\uDCDF\",\":fax:\":\"\\uD83D\\uDCE0\",\":minidisc:\":\"\\uD83D\\uDCBD\",\":vhs:\":\"\\uD83D\\uDCFC\",\":sound:\":\"\\uD83D\\uDD09\",\":speaker:\":\"\\uD83D\\uDD08\",\":mute:\":\"\\uD83D\\uDD07\",\":loudspeaker:\":\"\\uD83D\\uDCE2\",\":mega:\":\"\\uD83D\\uDCE3\",\":hourglass:\":\"\\u231B\",\":hourglass_flowing_sand:\":\"\\u23F3\",\":alarm_clock:\":\"\\u23F0\",\":watch:\":\"\\u231A\",\":radio:\":\"\\uD83D\\uDCFB\",\":satellite:\":\"\\uD83D\\uDCE1\",\":loop:\":\"\\u27BF\",\":mag:\":\"\\uD83D\\uDD0D\",\":mag_right:\":\"\\uD83D\\uDD0E\",\":unlock:\":\"\\uD83D\\uDD13\",\":lock:\":\"\\uD83D\\uDD12\",\":lock_with_ink_pen:\":\"\\uD83D\\uDD0F\",\":closed_lock_with_key:\":\"\\uD83D\\uDD10\",\":key:\":\"\\uD83D\\uDD11\",\":bulb:\":\"\\uD83D\\uDCA1\",\":flashlight:\":\"\\uD83D\\uDD26\",\":high_brightness:\":\"\\uD83D\\uDD06\",\":low_brightness:\":\"\\uD83D\\uDD05\",\":electric_plug:\":\"\\uD83D\\uDD0C\",\":battery:\":\"\\uD83D\\uDD0B\",\":calling:\":\"\\uD83D\\uDCF2\",\":email:\":\"\\u2709\\uFE0F\",\":mailbox:\":\"\\uD83D\\uDCEB\",\":postbox:\":\"\\uD83D\\uDCEE\",\":bath:\":\"\\uD83D\\uDEC0\",\":bathtub:\":\"\\uD83D\\uDEC1\",\":shower:\":\"\\uD83D\\uDEBF\",\":toilet:\":\"\\uD83D\\uDEBD\",\":wrench:\":\"\\uD83D\\uDD27\",\":nut_and_bolt:\":\"\\uD83D\\uDD29\",\":hammer:\":\"\\uD83D\\uDD28\",\":seat:\":\"\\uD83D\\uDCBA\",\":moneybag:\":\"\\uD83D\\uDCB0\",\":yen:\":\"\\uD83D\\uDCB4\",\":dollar:\":\"\\uD83D\\uDCB5\",\":pound:\":\"\\uD83D\\uDCB7\",\":euro:\":\"\\uD83D\\uDCB6\",\":credit_card:\":\"\\uD83D\\uDCB3\",\":money_with_wings:\":\"\\uD83D\\uDCB8\",\":e-mail:\":\"\\uD83D\\uDCE7\",\":inbox_tray:\":\"\\uD83D\\uDCE5\",\":outbox_tray:\":\"\\uD83D\\uDCE4\",\":envelope:\":\"\\u2709\\uFE0F\",\":incoming_envelope:\":\"\\uD83D\\uDCE8\",\":postal_horn:\":\"\\uD83D\\uDCEF\",\":mailbox_closed:\":\"\\uD83D\\uDCEA\",\":mailbox_with_mail:\":\"\\uD83D\\uDCEC\",\":mailbox_with_no_mail:\":\"\\uD83D\\uDCED\",\":package:\":\"\\uD83D\\uDCE6\",\":door:\":\"\\uD83D\\uDEAA\",\":smoking:\":\"\\uD83D\\uDEAC\",\":bomb:\":\"\\uD83D\\uDCA3\",\":gun:\":\"\\uD83D\\uDD2B\",\":hocho:\":\"\\uD83D\\uDD2A\",\":pill:\":\"\\uD83D\\uDC8A\",\":syringe:\":\"\\uD83D\\uDC89\",\":page_facing_up:\":\"\\uD83D\\uDCC4\",\":page_with_curl:\":\"\\uD83D\\uDCC3\",\":bookmark_tabs:\":\"\\uD83D\\uDCD1\",\":bar_chart:\":\"\\uD83D\\uDCCA\",\":chart_with_upwards_trend:\":\"\\uD83D\\uDCC8\",\":chart_with_downwards_trend:\":\"\\uD83D\\uDCC9\",\":scroll:\":\"\\uD83D\\uDCDC\",\":clipboard:\":\"\\uD83D\\uDCCB\",\":calendar:\":\"\\uD83D\\uDCC6\",\":date:\":\"\\uD83D\\uDCC5\",\":card_index:\":\"\\uD83D\\uDCC7\",\":file_folder:\":\"\\uD83D\\uDCC1\",\":open_file_folder:\":\"\\uD83D\\uDCC2\",\":scissors:\":\"\\u2702\\uFE0F\",\":pushpin:\":\"\\uD83D\\uDCCC\",\":paperclip:\":\"\\uD83D\\uDCCE\",\":black_nib:\":\"\\u2712\\uFE0F\",\":pencil2:\":\"\\u270F\\uFE0F\",\":straight_ruler:\":\"\\uD83D\\uDCCF\",\":triangular_ruler:\":\"\\uD83D\\uDCD0\",\":closed_book:\":\"\\uD83D\\uDCD5\",\":green_book:\":\"\\uD83D\\uDCD7\",\":blue_book:\":\"\\uD83D\\uDCD8\",\":orange_book:\":\"\\uD83D\\uDCD9\",\":notebook:\":\"\\uD83D\\uDCD3\",\":notebook_with_decorative_cover:\":\"\\uD83D\\uDCD4\",\":ledger:\":\"\\uD83D\\uDCD2\",\":books:\":\"\\uD83D\\uDCDA\",\":bookmark:\":\"\\uD83D\\uDD16\",\":name_badge:\":\"\\uD83D\\uDCDB\",\":microscope:\":\"\\uD83D\\uDD2C\",\":telescope:\":\"\\uD83D\\uDD2D\",\":newspaper:\":\"\\uD83D\\uDCF0\",\":football:\":\"\\uD83C\\uDFC8\",\":basketball:\":\"\\uD83C\\uDFC0\",\":soccer:\":\"\\u26BD\",\":baseball:\":\"\\u26BE\",\":tennis:\":\"\\uD83C\\uDFBE\",\":8ball:\":\"\\uD83C\\uDFB1\",\":rugby_football:\":\"\\uD83C\\uDFC9\",\":bowling:\":\"\\uD83C\\uDFB3\",\":golf:\":\"\\u26F3\",\":mountain_bicyclist:\":\"\\uD83D\\uDEB5\",\":bicyclist:\":\"\\uD83D\\uDEB4\",\":horse_racing:\":\"\\uD83C\\uDFC7\",\":snowboarder:\":\"\\uD83C\\uDFC2\",\":swimmer:\":\"\\uD83C\\uDFCA\",\":surfer:\":\"\\uD83C\\uDFC4\",\":ski:\":\"\\uD83C\\uDFBF\",\":spades:\":\"\\u2660\\uFE0F\",\":hearts:\":\"\\u2665\\uFE0F\",\":clubs:\":\"\\u2663\\uFE0F\",\":diamonds:\":\"\\u2666\\uFE0F\",\":gem:\":\"\\uD83D\\uDC8E\",\":ring:\":\"\\uD83D\\uDC8D\",\":trophy:\":\"\\uD83C\\uDFC6\",\":musical_score:\":\"\\uD83C\\uDFBC\",\":musical_keyboard:\":\"\\uD83C\\uDFB9\",\":violin:\":\"\\uD83C\\uDFBB\",\":space_invader:\":\"\\uD83D\\uDC7E\",\":video_game:\":\"\\uD83C\\uDFAE\",\":black_joker:\":\"\\uD83C\\uDCCF\",\":flower_playing_cards:\":\"\\uD83C\\uDFB4\",\":game_die:\":\"\\uD83C\\uDFB2\",\":dart:\":\"\\uD83C\\uDFAF\",\":mahjong:\":\"\\uD83C\\uDC04\",\":clapper:\":\"\\uD83C\\uDFAC\",\":memo:\":\"\\uD83D\\uDCDD\",\":pencil:\":\"\\uD83D\\uDCDD\",\":book:\":\"\\uD83D\\uDCD6\",\":art:\":\"\\uD83C\\uDFA8\",\":microphone:\":\"\\uD83C\\uDFA4\",\":headphones:\":\"\\uD83C\\uDFA7\",\":trumpet:\":\"\\uD83C\\uDFBA\",\":saxophone:\":\"\\uD83C\\uDFB7\",\":guitar:\":\"\\uD83C\\uDFB8\",\":shoe:\":\"\\uD83D\\uDC5E\",\":sandal:\":\"\\uD83D\\uDC61\",\":high_heel:\":\"\\uD83D\\uDC60\",\":lipstick:\":\"\\uD83D\\uDC84\",\":boot:\":\"\\uD83D\\uDC62\",\":shirt:\":\"\\uD83D\\uDC55\",\":tshirt:\":\"\\uD83D\\uDC55\",\":necktie:\":\"\\uD83D\\uDC54\",\":womans_clothes:\":\"\\uD83D\\uDC5A\",\":dress:\":\"\\uD83D\\uDC57\",\":running_shirt_with_sash:\":\"\\uD83C\\uDFBD\",\":jeans:\":\"\\uD83D\\uDC56\",\":kimono:\":\"\\uD83D\\uDC58\",\":bikini:\":\"\\uD83D\\uDC59\",\":ribbon:\":\"\\uD83C\\uDF80\",\":tophat:\":\"\\uD83C\\uDFA9\",\":crown:\":\"\\uD83D\\uDC51\",\":womans_hat:\":\"\\uD83D\\uDC52\",\":mans_shoe:\":\"\\uD83D\\uDC5E\",\":closed_umbrella:\":\"\\uD83C\\uDF02\",\":briefcase:\":\"\\uD83D\\uDCBC\",\":handbag:\":\"\\uD83D\\uDC5C\",\":pouch:\":\"\\uD83D\\uDC5D\",\":purse:\":\"\\uD83D\\uDC5B\",\":eyeglasses:\":\"\\uD83D\\uDC53\",\":fishing_pole_and_fish:\":\"\\uD83C\\uDFA3\",\":coffee:\":\"\\u2615\",\":tea:\":\"\\uD83C\\uDF75\",\":sake:\":\"\\uD83C\\uDF76\",\":baby_bottle:\":\"\\uD83C\\uDF7C\",\":beer:\":\"\\uD83C\\uDF7A\",\":beers:\":\"\\uD83C\\uDF7B\",\":cocktail:\":\"\\uD83C\\uDF78\",\":tropical_drink:\":\"\\uD83C\\uDF79\",\":wine_glass:\":\"\\uD83C\\uDF77\",\":fork_and_knife:\":\"\\uD83C\\uDF74\",\":pizza:\":\"\\uD83C\\uDF55\",\":hamburger:\":\"\\uD83C\\uDF54\",\":fries:\":\"\\uD83C\\uDF5F\",\":poultry_leg:\":\"\\uD83C\\uDF57\",\":meat_on_bone:\":\"\\uD83C\\uDF56\",\":spaghetti:\":\"\\uD83C\\uDF5D\",\":curry:\":\"\\uD83C\\uDF5B\",\":fried_shrimp:\":\"\\uD83C\\uDF64\",\":bento:\":\"\\uD83C\\uDF71\",\":sushi:\":\"\\uD83C\\uDF63\",\":fish_cake:\":\"\\uD83C\\uDF65\",\":rice_ball:\":\"\\uD83C\\uDF59\",\":rice_cracker:\":\"\\uD83C\\uDF58\",\":rice:\":\"\\uD83C\\uDF5A\",\":ramen:\":\"\\uD83C\\uDF5C\",\":stew:\":\"\\uD83C\\uDF72\",\":oden:\":\"\\uD83C\\uDF62\",\":dango:\":\"\\uD83C\\uDF61\",\":egg:\":\"\\uD83E\\uDD5A\",\":bread:\":\"\\uD83C\\uDF5E\",\":doughnut:\":\"\\uD83C\\uDF69\",\":custard:\":\"\\uD83C\\uDF6E\",\":icecream:\":\"\\uD83C\\uDF66\",\":ice_cream:\":\"\\uD83C\\uDF68\",\":shaved_ice:\":\"\\uD83C\\uDF67\",\":birthday:\":\"\\uD83C\\uDF82\",\":cake:\":\"\\uD83C\\uDF70\",\":cookie:\":\"\\uD83C\\uDF6A\",\":chocolate_bar:\":\"\\uD83C\\uDF6B\",\":candy:\":\"\\uD83C\\uDF6C\",\":lollipop:\":\"\\uD83C\\uDF6D\",\":honey_pot:\":\"\\uD83C\\uDF6F\",\":apple:\":\"\\uD83C\\uDF4E\",\":green_apple:\":\"\\uD83C\\uDF4F\",\":tangerine:\":\"\\uD83C\\uDF4A\",\":lemon:\":\"\\uD83C\\uDF4B\",\":cherries:\":\"\\uD83C\\uDF52\",\":grapes:\":\"\\uD83C\\uDF47\",\":watermelon:\":\"\\uD83C\\uDF49\",\":strawberry:\":\"\\uD83C\\uDF53\",\":peach:\":\"\\uD83C\\uDF51\",\":melon:\":\"\\uD83C\\uDF48\",\":banana:\":\"\\uD83C\\uDF4C\",\":pear:\":\"\\uD83C\\uDF50\",\":pineapple:\":\"\\uD83C\\uDF4D\",\":sweet_potato:\":\"\\uD83C\\uDF60\",\":eggplant:\":\"\\uD83C\\uDF46\",\":tomato:\":\"\\uD83C\\uDF45\",\":corn:\":\"\\uD83C\\uDF3D\",\":house:\":\"\\uD83C\\uDFE0\",\":house_with_garden:\":\"\\uD83C\\uDFE1\",\":school:\":\"\\uD83C\\uDFEB\",\":office:\":\"\\uD83C\\uDFE2\",\":post_office:\":\"\\uD83C\\uDFE3\",\":hospital:\":\"\\uD83C\\uDFE5\",\":bank:\":\"\\uD83C\\uDFE6\",\":convenience_store:\":\"\\uD83C\\uDFEA\",\":love_hotel:\":\"\\uD83C\\uDFE9\",\":hotel:\":\"\\uD83C\\uDFE8\",\":wedding:\":\"\\uD83D\\uDC92\",\":church:\":\"\\u26EA\",\":department_store:\":\"\\uD83C\\uDFEC\",\":european_post_office:\":\"\\uD83C\\uDFE4\",\":city_sunrise:\":\"\\uD83C\\uDF07\",\":city_sunset:\":\"\\uD83C\\uDF06\",\":japanese_castle:\":\"\\uD83C\\uDFEF\",\":european_castle:\":\"\\uD83C\\uDFF0\",\":tent:\":\"\\u26FA\",\":factory:\":\"\\uD83C\\uDFED\",\":tokyo_tower:\":\"\\uD83D\\uDDFC\",\":japan:\":\"\\uD83D\\uDDFE\",\":mount_fuji:\":\"\\uD83D\\uDDFB\",\":sunrise_over_mountains:\":\"\\uD83C\\uDF04\",\":sunrise:\":\"\\uD83C\\uDF05\",\":stars:\":\"\\uD83C\\uDF20\",\":statue_of_liberty:\":\"\\uD83D\\uDDFD\",\":bridge_at_night:\":\"\\uD83C\\uDF09\",\":carousel_horse:\":\"\\uD83C\\uDFA0\",\":rainbow:\":\"\\uD83C\\uDF08\",\":ferris_wheel:\":\"\\uD83C\\uDFA1\",\":fountain:\":\"\\u26F2\",\":roller_coaster:\":\"\\uD83C\\uDFA2\",\":ship:\":\"\\uD83D\\uDEA2\",\":speedboat:\":\"\\uD83D\\uDEA4\",\":boat:\":\"\\u26F5\",\":sailboat:\":\"\\u26F5\",\":rowboat:\":\"\\uD83D\\uDEA3\",\":anchor:\":\"\\u2693\",\":rocket:\":\"\\uD83D\\uDE80\",\":airplane:\":\"\\u2708\\uFE0F\",\":helicopter:\":\"\\uD83D\\uDE81\",\":steam_locomotive:\":\"\\uD83D\\uDE82\",\":tram:\":\"\\uD83D\\uDE8A\",\":mountain_railway:\":\"\\uD83D\\uDE9E\",\":bike:\":\"\\uD83D\\uDEB2\",\":aerial_tramway:\":\"\\uD83D\\uDEA1\",\":suspension_railway:\":\"\\uD83D\\uDE9F\",\":mountain_cableway:\":\"\\uD83D\\uDEA0\",\":tractor:\":\"\\uD83D\\uDE9C\",\":blue_car:\":\"\\uD83D\\uDE99\",\":oncoming_automobile:\":\"\\uD83D\\uDE98\",\":car:\":\"\\uD83D\\uDE97\",\":red_car:\":\"\\uD83D\\uDE97\",\":taxi:\":\"\\uD83D\\uDE95\",\":oncoming_taxi:\":\"\\uD83D\\uDE96\",\":articulated_lorry:\":\"\\uD83D\\uDE9B\",\":bus:\":\"\\uD83D\\uDE8C\",\":oncoming_bus:\":\"\\uD83D\\uDE8D\",\":rotating_light:\":\"\\uD83D\\uDEA8\",\":police_car:\":\"\\uD83D\\uDE93\",\":oncoming_police_car:\":\"\\uD83D\\uDE94\",\":fire_engine:\":\"\\uD83D\\uDE92\",\":ambulance:\":\"\\uD83D\\uDE91\",\":minibus:\":\"\\uD83D\\uDE90\",\":truck:\":\"\\uD83D\\uDE9A\",\":train:\":\"\\uD83D\\uDE8B\",\":station:\":\"\\uD83D\\uDE89\",\":train2:\":\"\\uD83D\\uDE86\",\":bullettrain_front:\":\"\\uD83D\\uDE85\",\":bullettrain_side:\":\"\\uD83D\\uDE84\",\":light_rail:\":\"\\uD83D\\uDE88\",\":monorail:\":\"\\uD83D\\uDE9D\",\":railway_car:\":\"\\uD83D\\uDE83\",\":trolleybus:\":\"\\uD83D\\uDE8E\",\":ticket:\":\"\\uD83C\\uDFAB\",\":fuelpump:\":\"\\u26FD\",\":vertical_traffic_light:\":\"\\uD83D\\uDEA6\",\":traffic_light:\":\"\\uD83D\\uDEA5\",\":warning:\":\"\\u26A0\\uFE0F\",\":construction:\":\"\\uD83D\\uDEA7\",\":beginner:\":\"\\uD83D\\uDD30\",\":atm:\":\"\\uD83C\\uDFE7\",\":slot_machine:\":\"\\uD83C\\uDFB0\",\":busstop:\":\"\\uD83D\\uDE8F\",\":barber:\":\"\\uD83D\\uDC88\",\":hotsprings:\":\"\\u2668\\uFE0F\",\":checkered_flag:\":\"\\uD83C\\uDFC1\",\":crossed_flags:\":\"\\uD83C\\uDF8C\",\":izakaya_lantern:\":\"\\uD83C\\uDFEE\",\":moyai:\":\"\\uD83D\\uDDFF\",\":circus_tent:\":\"\\uD83C\\uDFAA\",\":performing_arts:\":\"\\uD83C\\uDFAD\",\":round_pushpin:\":\"\\uD83D\\uDCCD\",\":triangular_flag_on_post:\":\"\\uD83D\\uDEA9\",\":jp:\":\"\\uD83C\\uDDEF\\uD83C\\uDDF5\",\":kr:\":\"\\uD83C\\uDDF0\\uD83C\\uDDF7\",\":cn:\":\"\\uD83C\\uDDE8\\uD83C\\uDDF3\",\":us:\":\"\\uD83C\\uDDFA\\uD83C\\uDDF8\",\":fr:\":\"\\uD83C\\uDDEB\\uD83C\\uDDF7\",\":es:\":\"\\uD83C\\uDDEA\\uD83C\\uDDF8\",\":it:\":\"\\uD83C\\uDDEE\\uD83C\\uDDF9\",\":ru:\":\"\\uD83C\\uDDF7\\uD83C\\uDDFA\",\":gb:\":\"\\uD83C\\uDDEC\\uD83C\\uDDE7\",\":uk:\":\"\\uD83C\\uDDEC\\uD83C\\uDDE7\",\":de:\":\"\\uD83C\\uDDE9\\uD83C\\uDDEA\",\":one:\":\"1\\uFE0F\\u20E3\",\":two:\":\"2\\uFE0F\\u20E3\",\":three:\":\"3\\uFE0F\\u20E3\",\":four:\":\"4\\uFE0F\\u20E3\",\":five:\":\"5\\uFE0F\\u20E3\",\":six:\":\"6\\uFE0F\\u20E3\",\":seven:\":\"7\\uFE0F\\u20E3\",\":eight:\":\"8\\uFE0F\\u20E3\",\":nine:\":\"9\\uFE0F\\u20E3\",\":keycap_ten:\":\"\\uD83D\\uDD1F\",\":1234:\":\"\\uD83D\\uDD22\",\":zero:\":\"0\\uFE0F\\u20E3\",\":hash:\":\"#\\uFE0F\\u20E3\",\":symbols:\":\"\\uD83D\\uDD23\",\":arrow_backward:\":\"\\u25C0\\uFE0F\",\":arrow_down:\":\"\\u2B07\\uFE0F\",\":arrow_forward:\":\"\\u25B6\\uFE0F\",\":arrow_left:\":\"\\u2B05\\uFE0F\",\":capital_abcd:\":\"\\uD83D\\uDD20\",\":abcd:\":\"\\uD83D\\uDD21\",\":abc:\":\"\\uD83D\\uDD24\",\":arrow_lower_left:\":\"\\u2199\\uFE0F\",\":arrow_lower_right:\":\"\\u2198\\uFE0F\",\":arrow_right:\":\"\\u27A1\\uFE0F\",\":arrow_up:\":\"\\u2B06\\uFE0F\",\":arrow_upper_left:\":\"\\u2196\\uFE0F\",\":arrow_upper_right:\":\"\\u2197\\uFE0F\",\":arrow_double_down:\":\"\\u23EC\",\":arrow_double_up:\":\"\\u23EB\",\":arrow_down_small:\":\"\\uD83D\\uDD3D\",\":arrow_heading_down:\":\"\\u2935\\uFE0F\",\":arrow_heading_up:\":\"\\u2934\\uFE0F\",\":leftwards_arrow_with_hook:\":\"\\u21A9\\uFE0F\",\":arrow_right_hook:\":\"\\u21AA\\uFE0F\",\":left_right_arrow:\":\"\\u2194\\uFE0F\",\":arrow_up_down:\":\"\\u2195\\uFE0F\",\":arrow_up_small:\":\"\\uD83D\\uDD3C\",\":arrows_clockwise:\":\"\\uD83D\\uDD03\",\":arrows_counterclockwise:\":\"\\uD83D\\uDD04\",\":rewind:\":\"\\u23EA\",\":fast_forward:\":\"\\u23E9\",\":information_source:\":\"\\u2139\\uFE0F\",\":ok:\":\"\\uD83C\\uDD97\",\":twisted_rightwards_arrows:\":\"\\uD83D\\uDD00\",\":repeat:\":\"\\uD83D\\uDD01\",\":repeat_one:\":\"\\uD83D\\uDD02\",\":new:\":\"\\uD83C\\uDD95\",\":top:\":\"\\uD83D\\uDD1D\",\":up:\":\"\\uD83C\\uDD99\",\":cool:\":\"\\uD83C\\uDD92\",\":free:\":\"\\uD83C\\uDD93\",\":ng:\":\"\\uD83C\\uDD96\",\":cinema:\":\"\\uD83C\\uDFA6\",\":koko:\":\"\\uD83C\\uDE01\",\":signal_strength:\":\"\\uD83D\\uDCF6\",\":u5272:\":\"\\uD83C\\uDE39\",\":u5408:\":\"\\uD83C\\uDE34\",\":u55b6:\":\"\\uD83C\\uDE3A\",\":u6307:\":\"\\uD83C\\uDE2F\",\":u6708:\":\"\\uD83C\\uDE37\\uFE0F\",\":u6709:\":\"\\uD83C\\uDE36\",\":u6e80:\":\"\\uD83C\\uDE35\",\":u7121:\":\"\\uD83C\\uDE1A\",\":u7533:\":\"\\uD83C\\uDE38\",\":u7a7a:\":\"\\uD83C\\uDE33\",\":u7981:\":\"\\uD83C\\uDE32\",\":sa:\":\"\\uD83C\\uDE02\\uFE0F\",\":restroom:\":\"\\uD83D\\uDEBB\",\":mens:\":\"\\uD83D\\uDEB9\",\":womens:\":\"\\uD83D\\uDEBA\",\":baby_symbol:\":\"\\uD83D\\uDEBC\",\":no_smoking:\":\"\\uD83D\\uDEAD\",\":parking:\":\"\\uD83C\\uDD7F\\uFE0F\",\":wheelchair:\":\"\\u267F\",\":metro:\":\"\\uD83D\\uDE87\",\":baggage_claim:\":\"\\uD83D\\uDEC4\",\":accept:\":\"\\uD83C\\uDE51\",\":wc:\":\"\\uD83D\\uDEBE\",\":potable_water:\":\"\\uD83D\\uDEB0\",\":put_litter_in_its_place:\":\"\\uD83D\\uDEAE\",\":secret:\":\"\\u3299\\uFE0F\",\":congratulations:\":\"\\u3297\\uFE0F\",\":m:\":\"\\u24C2\\uFE0F\",\":passport_control:\":\"\\uD83D\\uDEC2\",\":left_luggage:\":\"\\uD83D\\uDEC5\",\":customs:\":\"\\uD83D\\uDEC3\",\":ideograph_advantage:\":\"\\uD83C\\uDE50\",\":cl:\":\"\\uD83C\\uDD91\",\":sos:\":\"\\uD83C\\uDD98\",\":id:\":\"\\uD83C\\uDD94\",\":no_entry_sign:\":\"\\uD83D\\uDEAB\",\":underage:\":\"\\uD83D\\uDD1E\",\":no_mobile_phones:\":\"\\uD83D\\uDCF5\",\":do_not_litter:\":\"\\uD83D\\uDEAF\",\":non-potable_water:\":\"\\uD83D\\uDEB1\",\":no_bicycles:\":\"\\uD83D\\uDEB3\",\":no_pedestrians:\":\"\\uD83D\\uDEB7\",\":children_crossing:\":\"\\uD83D\\uDEB8\",\":no_entry:\":\"\\u26D4\",\":eight_spoked_asterisk:\":\"\\u2733\\uFE0F\",\":sparkle:\":\"\\u2747\\uFE0F\",\":eight_pointed_black_star:\":\"\\u2734\\uFE0F\",\":heart_decoration:\":\"\\uD83D\\uDC9F\",\":vs:\":\"\\uD83C\\uDD9A\",\":vibration_mode:\":\"\\uD83D\\uDCF3\",\":mobile_phone_off:\":\"\\uD83D\\uDCF4\",\":chart:\":\"\\uD83D\\uDCB9\",\":currency_exchange:\":\"\\uD83D\\uDCB1\",\":aries:\":\"\\u2648\",\":taurus:\":\"\\u2649\",\":gemini:\":\"\\u264A\",\":cancer:\":\"\\u264B\",\":leo:\":\"\\u264C\",\":virgo:\":\"\\u264D\",\":libra:\":\"\\u264E\",\":scorpius:\":\"\\u264F\",\":sagittarius:\":\"\\u2650\",\":capricorn:\":\"\\u2651\",\":aquarius:\":\"\\u2652\",\":pisces:\":\"\\u2653\",\":ophiuchus:\":\"\\u26CE\",\":six_pointed_star:\":\"\\uD83D\\uDD2F\",\":negative_squared_cross_mark:\":\"\\u274E\",\":a:\":\"\\uD83C\\uDD70\\uFE0F\",\":b:\":\"\\uD83C\\uDD71\\uFE0F\",\":ab:\":\"\\uD83C\\uDD8E\",\":o2:\":\"\\uD83C\\uDD7E\\uFE0F\",\":diamond_shape_with_a_dot_inside:\":\"\\uD83D\\uDCA0\",\":recycle:\":\"\\u267B\\uFE0F\",\":end:\":\"\\uD83D\\uDD1A\",\":back:\":\"\\uD83D\\uDD19\",\":on:\":\"\\uD83D\\uDD1B\",\":soon:\":\"\\uD83D\\uDD1C\",\":clock1:\":\"\\uD83D\\uDD50\",\":clock130:\":\"\\uD83D\\uDD5C\",\":clock10:\":\"\\uD83D\\uDD59\",\":clock1030:\":\"\\uD83D\\uDD65\",\":clock11:\":\"\\uD83D\\uDD5A\",\":clock1130:\":\"\\uD83D\\uDD66\",\":clock12:\":\"\\uD83D\\uDD5B\",\":clock1230:\":\"\\uD83D\\uDD67\",\":clock2:\":\"\\uD83D\\uDD51\",\":clock230:\":\"\\uD83D\\uDD5D\",\":clock3:\":\"\\uD83D\\uDD52\",\":clock330:\":\"\\uD83D\\uDD5E\",\":clock4:\":\"\\uD83D\\uDD53\",\":clock430:\":\"\\uD83D\\uDD5F\",\":clock5:\":\"\\uD83D\\uDD54\",\":clock530:\":\"\\uD83D\\uDD60\",\":clock6:\":\"\\uD83D\\uDD55\",\":clock630:\":\"\\uD83D\\uDD61\",\":clock7:\":\"\\uD83D\\uDD56\",\":clock730:\":\"\\uD83D\\uDD62\",\":clock8:\":\"\\uD83D\\uDD57\",\":clock830:\":\"\\uD83D\\uDD63\",\":clock9:\":\"\\uD83D\\uDD58\",\":clock930:\":\"\\uD83D\\uDD64\",\":heavy_dollar_sign:\":\"\\uD83D\\uDCB2\",\":copyright:\":\"\\xA9\\uFE0F\",\":registered:\":\"\\xAE\\uFE0F\",\":tm:\":\"\\u2122\\uFE0F\",\":x:\":\"\\u274C\",\":heavy_exclamation_mark:\":\"\\u2757\",\":bangbang:\":\"\\u203C\\uFE0F\",\":interrobang:\":\"\\u2049\\uFE0F\",\":o:\":\"\\u2B55\",\":heavy_multiplication_x:\":\"\\u2716\\uFE0F\",\":heavy_plus_sign:\":\"\\u2795\",\":heavy_minus_sign:\":\"\\u2796\",\":heavy_division_sign:\":\"\\u2797\",\":white_flower:\":\"\\uD83D\\uDCAE\",\":100:\":\"\\uD83D\\uDCAF\",\":heavy_check_mark:\":\"\\u2714\\uFE0F\",\":ballot_box_with_check:\":\"\\u2611\\uFE0F\",\":radio_button:\":\"\\uD83D\\uDD18\",\":link:\":\"\\uD83D\\uDD17\",\":curly_loop:\":\"\\u27B0\",\":wavy_dash:\":\"\\u3030\\uFE0F\",\":part_alternation_mark:\":\"\\u303D\\uFE0F\"};exports.emojiMap=emojiMap;var mapStringToUnicode={\":100:\":\"1f4af\",\":1234:\":\"1f522\",\":interrobang:\":\"2049\",\":tm:\":\"2122\",\":information_source:\":\"2139\",\":left_right_arrow:\":\"2194\",\":arrow_up_down:\":\"2195\",\":arrow_upper_left:\":\"2196\",\":arrow_upper_right:\":\"2197\",\":arrow_lower_right:\":\"2198\",\":arrow_lower_left:\":\"2199\",\":keyboard:\":\"2328\",\":sunny:\":\"2600\",\":cloud:\":\"2601\",\":umbrella:\":\"2602\",\":snowman:\":\"2603\",\":comet:\":\"2604\",\":ballot_box_with_check:\":\"2611\",\":umbrella_with_rain_drops:\":\"2614\",\":coffee:\":\"2615\",\":shamrock:\":\"2618\",\":skull_and_crossbones:\":\"2620\",\":radioactive_sign:\":\"2622\",\":biohazard_sign:\":\"2623\",\":orthodox_cross:\":\"2626\",\":wheel_of_dharma:\":\"2638\",\":white_frowning_face:\":\"2639\",\":aries:\":\"2648\",\":taurus:\":\"2649\",\":sagittarius:\":\"2650\",\":capricorn:\":\"2651\",\":aquarius:\":\"2652\",\":pisces:\":\"2653\",\":spades:\":\"2660\",\":clubs:\":\"2663\",\":hearts:\":\"2665\",\":diamonds:\":\"2666\",\":hotsprings:\":\"2668\",\":hammer_and_pick:\":\"2692\",\":anchor:\":\"2693\",\":crossed_swords:\":\"2694\",\":scales:\":\"2696\",\":alembic:\":\"2697\",\":gear:\":\"2699\",\":scissors:\":\"2702\",\":white_check_mark:\":\"2705\",\":airplane:\":\"2708\",\":email:\":\"2709\",\":envelope:\":\"2709\",\":black_nib:\":\"2712\",\":heavy_check_mark:\":\"2714\",\":heavy_multiplication_x:\":\"2716\",\":star_of_david:\":\"2721\",\":sparkles:\":\"2728\",\":eight_spoked_asterisk:\":\"2733\",\":eight_pointed_black_star:\":\"2734\",\":snowflake:\":\"2744\",\":sparkle:\":\"2747\",\":question:\":\"2753\",\":grey_question:\":\"2754\",\":grey_exclamation:\":\"2755\",\":exclamation:\":\"2757\",\":heavy_exclamation_mark:\":\"2757\",\":heavy_heart_exclamation_mark_ornament:\":\"2763\",\":heart:\":\"2764\",\":heavy_plus_sign:\":\"2795\",\":heavy_minus_sign:\":\"2796\",\":heavy_division_sign:\":\"2797\",\":arrow_heading_up:\":\"2934\",\":arrow_heading_down:\":\"2935\",\":wavy_dash:\":\"3030\",\":congratulations:\":\"3297\",\":secret:\":\"3299\",\":copyright:\":\"00a9\",\":registered:\":\"00ae\",\":bangbang:\":\"203c\",\":leftwards_arrow_with_hook:\":\"21a9\",\":arrow_right_hook:\":\"21aa\",\":watch:\":\"231a\",\":hourglass:\":\"231b\",\":eject:\":\"23cf\",\":fast_forward:\":\"23e9\",\":rewind:\":\"23ea\",\":arrow_double_up:\":\"23eb\",\":arrow_double_down:\":\"23ec\",\":black_right_pointing_double_triangle_with_vertical_bar:\":\"23ed\",\":black_left_pointing_double_triangle_with_vertical_bar:\":\"23ee\",\":black_right_pointing_triangle_with_double_vertical_bar:\":\"23ef\",\":alarm_clock:\":\"23f0\",\":stopwatch:\":\"23f1\",\":timer_clock:\":\"23f2\",\":hourglass_flowing_sand:\":\"23f3\",\":double_vertical_bar:\":\"23f8\",\":black_square_for_stop:\":\"23f9\",\":black_circle_for_record:\":\"23fa\",\":m:\":\"24c2\",\":black_small_square:\":\"25aa\",\":white_small_square:\":\"25ab\",\":arrow_forward:\":\"25b6\",\":arrow_backward:\":\"25c0\",\":white_medium_square:\":\"25fb\",\":black_medium_square:\":\"25fc\",\":white_medium_small_square:\":\"25fd\",\":black_medium_small_square:\":\"25fe\",\":phone:\":\"260e\",\":telephone:\":\"260e\",\":point_up:\":\"261d\",\":star_and_crescent:\":\"262a\",\":peace_symbol:\":\"262e\",\":yin_yang:\":\"262f\",\":relaxed:\":\"263a\",\":gemini:\":\"264a\",\":cancer:\":\"264b\",\":leo:\":\"264c\",\":virgo:\":\"264d\",\":libra:\":\"264e\",\":scorpius:\":\"264f\",\":recycle:\":\"267b\",\":wheelchair:\":\"267f\",\":atom_symbol:\":\"269b\",\":fleur_de_lis:\":\"269c\",\":warning:\":\"26a0\",\":zap:\":\"26a1\",\":white_circle:\":\"26aa\",\":black_circle:\":\"26ab\",\":coffin:\":\"26b0\",\":funeral_urn:\":\"26b1\",\":soccer:\":\"26bd\",\":baseball:\":\"26be\",\":snowman_without_snow:\":\"26c4\",\":partly_sunny:\":\"26c5\",\":thunder_cloud_and_rain:\":\"26c8\",\":ophiuchus:\":\"26ce\",\":pick:\":\"26cf\",\":helmet_with_white_cross:\":\"26d1\",\":chains:\":\"26d3\",\":no_entry:\":\"26d4\",\":shinto_shrine:\":\"26e9\",\":church:\":\"26ea\",\":mountain:\":\"26f0\",\":umbrella_on_ground:\":\"26f1\",\":fountain:\":\"26f2\",\":golf:\":\"26f3\",\":ferry:\":\"26f4\",\":boat:\":\"26f5\",\":sailboat:\":\"26f5\",\":skier:\":\"26f7\",\":ice_skate:\":\"26f8\",\":person_with_ball:\":\"26f9\",\":tent:\":\"26fa\",\":fuelpump:\":\"26fd\",\":fist:\":\"270a\",\":hand:\":\"270b\",\":raised_hand:\":\"270b\",\":v:\":\"270c\",\":writing_hand:\":\"270d\",\":pencil2:\":\"270f\",\":latin_cross:\":\"271d\",\":x:\":\"274c\",\":negative_squared_cross_mark:\":\"274e\",\":arrow_right:\":\"27a1\",\":curly_loop:\":\"27b0\",\":loop:\":\"27bf\",\":arrow_left:\":\"2b05\",\":arrow_up:\":\"2b06\",\":arrow_down:\":\"2b07\",\":black_large_square:\":\"2b1b\",\":white_large_square:\":\"2b1c\",\":star:\":\"2b50\",\":o:\":\"2b55\",\":part_alternation_mark:\":\"303d\",\":mahjong:\":\"1f004\",\":black_joker:\":\"1f0cf\",\":a:\":\"1f170\",\":b:\":\"1f171\",\":o2:\":\"1f17e\",\":parking:\":\"1f17f\",\":ab:\":\"1f18e\",\":cl:\":\"1f191\",\":cool:\":\"1f192\",\":free:\":\"1f193\",\":id:\":\"1f194\",\":new:\":\"1f195\",\":ng:\":\"1f196\",\":ok:\":\"1f197\",\":sos:\":\"1f198\",\":up:\":\"1f199\",\":vs:\":\"1f19a\",\":koko:\":\"1f201\",\":sa:\":\"1f202\",\":u7121:\":\"1f21a\",\":u6307:\":\"1f22f\",\":u7981:\":\"1f232\",\":u7a7a:\":\"1f233\",\":u5408:\":\"1f234\",\":u6e80:\":\"1f235\",\":u6709:\":\"1f236\",\":u6708:\":\"1f237\",\":u7533:\":\"1f238\",\":u5272:\":\"1f239\",\":u55b6:\":\"1f23a\",\":ideograph_advantage:\":\"1f250\",\":accept:\":\"1f251\",\":cyclone:\":\"1f300\",\":foggy:\":\"1f301\",\":closed_umbrella:\":\"1f302\",\":night_with_stars:\":\"1f303\",\":sunrise_over_mountains:\":\"1f304\",\":sunrise:\":\"1f305\",\":city_sunset:\":\"1f306\",\":city_sunrise:\":\"1f307\",\":rainbow:\":\"1f308\",\":bridge_at_night:\":\"1f309\",\":ocean:\":\"1f30a\",\":volcano:\":\"1f30b\",\":milky_way:\":\"1f30c\",\":earth_africa:\":\"1f30d\",\":earth_americas:\":\"1f30e\",\":earth_asia:\":\"1f30f\",\":globe_with_meridians:\":\"1f310\",\":new_moon:\":\"1f311\",\":waxing_crescent_moon:\":\"1f312\",\":first_quarter_moon:\":\"1f313\",\":moon:\":\"1f314\",\":waxing_gibbous_moon:\":\"1f314\",\":full_moon:\":\"1f315\",\":waning_gibbous_moon:\":\"1f316\",\":last_quarter_moon:\":\"1f317\",\":waning_crescent_moon:\":\"1f318\",\":crescent_moon:\":\"1f319\",\":new_moon_with_face:\":\"1f31a\",\":first_quarter_moon_with_face:\":\"1f31b\",\":last_quarter_moon_with_face:\":\"1f31c\",\":full_moon_with_face:\":\"1f31d\",\":sun_with_face:\":\"1f31e\",\":star2:\":\"1f31f\",\":stars:\":\"1f320\",\":thermometer:\":\"1f321\",\":mostly_sunny:\":\"1f324\",\":sun_small_cloud:\":\"1f324\",\":barely_sunny:\":\"1f325\",\":sun_behind_cloud:\":\"1f325\",\":partly_sunny_rain:\":\"1f326\",\":sun_behind_rain_cloud:\":\"1f326\",\":rain_cloud:\":\"1f327\",\":snow_cloud:\":\"1f328\",\":lightning:\":\"1f329\",\":lightning_cloud:\":\"1f329\",\":tornado:\":\"1f32a\",\":tornado_cloud:\":\"1f32a\",\":fog:\":\"1f32b\",\":wind_blowing_face:\":\"1f32c\",\":hotdog:\":\"1f32d\",\":taco:\":\"1f32e\",\":burrito:\":\"1f32f\",\":chestnut:\":\"1f330\",\":seedling:\":\"1f331\",\":evergreen_tree:\":\"1f332\",\":deciduous_tree:\":\"1f333\",\":palm_tree:\":\"1f334\",\":cactus:\":\"1f335\",\":hot_pepper:\":\"1f336\",\":tulip:\":\"1f337\",\":cherry_blossom:\":\"1f338\",\":rose:\":\"1f339\",\":hibiscus:\":\"1f33a\",\":sunflower:\":\"1f33b\",\":blossom:\":\"1f33c\",\":corn:\":\"1f33d\",\":ear_of_rice:\":\"1f33e\",\":herb:\":\"1f33f\",\":four_leaf_clover:\":\"1f340\",\":maple_leaf:\":\"1f341\",\":fallen_leaf:\":\"1f342\",\":leaves:\":\"1f343\",\":mushroom:\":\"1f344\",\":tomato:\":\"1f345\",\":eggplant:\":\"1f346\",\":grapes:\":\"1f347\",\":melon:\":\"1f348\",\":watermelon:\":\"1f349\",\":tangerine:\":\"1f34a\",\":lemon:\":\"1f34b\",\":banana:\":\"1f34c\",\":pineapple:\":\"1f34d\",\":apple:\":\"1f34e\",\":green_apple:\":\"1f34f\",\":pear:\":\"1f350\",\":peach:\":\"1f351\",\":cherries:\":\"1f352\",\":strawberry:\":\"1f353\",\":hamburger:\":\"1f354\",\":pizza:\":\"1f355\",\":meat_on_bone:\":\"1f356\",\":poultry_leg:\":\"1f357\",\":rice_cracker:\":\"1f358\",\":rice_ball:\":\"1f359\",\":rice:\":\"1f35a\",\":curry:\":\"1f35b\",\":ramen:\":\"1f35c\",\":spaghetti:\":\"1f35d\",\":bread:\":\"1f35e\",\":fries:\":\"1f35f\",\":sweet_potato:\":\"1f360\",\":dango:\":\"1f361\",\":oden:\":\"1f362\",\":sushi:\":\"1f363\",\":fried_shrimp:\":\"1f364\",\":fish_cake:\":\"1f365\",\":icecream:\":\"1f366\",\":shaved_ice:\":\"1f367\",\":ice_cream:\":\"1f368\",\":doughnut:\":\"1f369\",\":cookie:\":\"1f36a\",\":chocolate_bar:\":\"1f36b\",\":candy:\":\"1f36c\",\":lollipop:\":\"1f36d\",\":custard:\":\"1f36e\",\":honey_pot:\":\"1f36f\",\":cake:\":\"1f370\",\":bento:\":\"1f371\",\":stew:\":\"1f372\",\":egg:\":\"1f373\",\":fork_and_knife:\":\"1f374\",\":tea:\":\"1f375\",\":sake:\":\"1f376\",\":wine_glass:\":\"1f377\",\":cocktail:\":\"1f378\",\":tropical_drink:\":\"1f379\",\":beer:\":\"1f37a\",\":beers:\":\"1f37b\",\":baby_bottle:\":\"1f37c\",\":knife_fork_plate:\":\"1f37d\",\":champagne:\":\"1f37e\",\":popcorn:\":\"1f37f\",\":ribbon:\":\"1f380\",\":gift:\":\"1f381\",\":birthday:\":\"1f382\",\":jack_o_lantern:\":\"1f383\",\":christmas_tree:\":\"1f384\",\":santa:\":\"1f385\",\":fireworks:\":\"1f386\",\":sparkler:\":\"1f387\",\":balloon:\":\"1f388\",\":tada:\":\"1f389\",\":confetti_ball:\":\"1f38a\",\":tanabata_tree:\":\"1f38b\",\":crossed_flags:\":\"1f38c\",\":bamboo:\":\"1f38d\",\":dolls:\":\"1f38e\",\":flags:\":\"1f38f\",\":wind_chime:\":\"1f390\",\":rice_scene:\":\"1f391\",\":school_satchel:\":\"1f392\",\":mortar_board:\":\"1f393\",\":medal:\":\"1f396\",\":reminder_ribbon:\":\"1f397\",\":studio_microphone:\":\"1f399\",\":level_slider:\":\"1f39a\",\":control_knobs:\":\"1f39b\",\":film_frames:\":\"1f39e\",\":admission_tickets:\":\"1f39f\",\":carousel_horse:\":\"1f3a0\",\":ferris_wheel:\":\"1f3a1\",\":roller_coaster:\":\"1f3a2\",\":fishing_pole_and_fish:\":\"1f3a3\",\":microphone:\":\"1f3a4\",\":movie_camera:\":\"1f3a5\",\":cinema:\":\"1f3a6\",\":headphones:\":\"1f3a7\",\":art:\":\"1f3a8\",\":tophat:\":\"1f3a9\",\":circus_tent:\":\"1f3aa\",\":ticket:\":\"1f3ab\",\":clapper:\":\"1f3ac\",\":performing_arts:\":\"1f3ad\",\":video_game:\":\"1f3ae\",\":dart:\":\"1f3af\",\":slot_machine:\":\"1f3b0\",\":8ball:\":\"1f3b1\",\":game_die:\":\"1f3b2\",\":bowling:\":\"1f3b3\",\":flower_playing_cards:\":\"1f3b4\",\":musical_note:\":\"1f3b5\",\":notes:\":\"1f3b6\",\":saxophone:\":\"1f3b7\",\":guitar:\":\"1f3b8\",\":musical_keyboard:\":\"1f3b9\",\":trumpet:\":\"1f3ba\",\":violin:\":\"1f3bb\",\":musical_score:\":\"1f3bc\",\":running_shirt_with_sash:\":\"1f3bd\",\":tennis:\":\"1f3be\",\":ski:\":\"1f3bf\",\":basketball:\":\"1f3c0\",\":checkered_flag:\":\"1f3c1\",\":snowboarder:\":\"1f3c2\",\":runner:\":\"1f3c3\",\":running:\":\"1f3c3\",\":surfer:\":\"1f3c4\",\":sports_medal:\":\"1f3c5\",\":trophy:\":\"1f3c6\",\":horse_racing:\":\"1f3c7\",\":football:\":\"1f3c8\",\":rugby_football:\":\"1f3c9\",\":swimmer:\":\"1f3ca\",\":weight_lifter:\":\"1f3cb\",\":golfer:\":\"1f3cc\",\":racing_motorcycle:\":\"1f3cd\",\":racing_car:\":\"1f3ce\",\":cricket_bat_and_ball:\":\"1f3cf\",\":volleyball:\":\"1f3d0\",\":field_hockey_stick_and_ball:\":\"1f3d1\",\":ice_hockey_stick_and_puck:\":\"1f3d2\",\":table_tennis_paddle_and_ball:\":\"1f3d3\",\":snow_capped_mountain:\":\"1f3d4\",\":camping:\":\"1f3d5\",\":beach_with_umbrella:\":\"1f3d6\",\":building_construction:\":\"1f3d7\",\":house_buildings:\":\"1f3d8\",\":cityscape:\":\"1f3d9\",\":derelict_house_building:\":\"1f3da\",\":classical_building:\":\"1f3db\",\":desert:\":\"1f3dc\",\":desert_island:\":\"1f3dd\",\":national_park:\":\"1f3de\",\":stadium:\":\"1f3df\",\":house:\":\"1f3e0\",\":house_with_garden:\":\"1f3e1\",\":office:\":\"1f3e2\",\":post_office:\":\"1f3e3\",\":european_post_office:\":\"1f3e4\",\":hospital:\":\"1f3e5\",\":bank:\":\"1f3e6\",\":atm:\":\"1f3e7\",\":hotel:\":\"1f3e8\",\":love_hotel:\":\"1f3e9\",\":convenience_store:\":\"1f3ea\",\":school:\":\"1f3eb\",\":department_store:\":\"1f3ec\",\":factory:\":\"1f3ed\",\":izakaya_lantern:\":\"1f3ee\",\":lantern:\":\"1f3ee\",\":japanese_castle:\":\"1f3ef\",\":european_castle:\":\"1f3f0\",\":waving_white_flag:\":\"1f3f3\",\":waving_black_flag:\":\"1f3f4\",\":rosette:\":\"1f3f5\",\":label:\":\"1f3f7\",\":badminton_racquet_and_shuttlecock:\":\"1f3f8\",\":bow_and_arrow:\":\"1f3f9\",\":amphora:\":\"1f3fa\",\":skin-tone-2:\":\"1f3fb\",\":skin-tone-3:\":\"1f3fc\",\":skin-tone-4:\":\"1f3fd\",\":skin-tone-5:\":\"1f3fe\",\":skin-tone-6:\":\"1f3ff\",\":rat:\":\"1f400\",\":mouse2:\":\"1f401\",\":ox:\":\"1f402\",\":water_buffalo:\":\"1f403\",\":cow2:\":\"1f404\",\":tiger2:\":\"1f405\",\":leopard:\":\"1f406\",\":rabbit2:\":\"1f407\",\":cat2:\":\"1f408\",\":dragon:\":\"1f409\",\":crocodile:\":\"1f40a\",\":whale2:\":\"1f40b\",\":snail:\":\"1f40c\",\":snake:\":\"1f40d\",\":racehorse:\":\"1f40e\",\":ram:\":\"1f40f\",\":goat:\":\"1f410\",\":sheep:\":\"1f411\",\":monkey:\":\"1f412\",\":rooster:\":\"1f413\",\":chicken:\":\"1f414\",\":dog2:\":\"1f415\",\":pig2:\":\"1f416\",\":boar:\":\"1f417\",\":elephant:\":\"1f418\",\":octopus:\":\"1f419\",\":shell:\":\"1f41a\",\":bug:\":\"1f41b\",\":ant:\":\"1f41c\",\":bee:\":\"1f41d\",\":honeybee:\":\"1f41d\",\":beetle:\":\"1f41e\",\":fish:\":\"1f41f\",\":tropical_fish:\":\"1f420\",\":blowfish:\":\"1f421\",\":turtle:\":\"1f422\",\":hatching_chick:\":\"1f423\",\":baby_chick:\":\"1f424\",\":hatched_chick:\":\"1f425\",\":bird:\":\"1f426\",\":penguin:\":\"1f427\",\":koala:\":\"1f428\",\":poodle:\":\"1f429\",\":dromedary_camel:\":\"1f42a\",\":camel:\":\"1f42b\",\":dolphin:\":\"1f42c\",\":flipper:\":\"1f42c\",\":mouse:\":\"1f42d\",\":cow:\":\"1f42e\",\":tiger:\":\"1f42f\",\":rabbit:\":\"1f430\",\":cat:\":\"1f431\",\":dragon_face:\":\"1f432\",\":whale:\":\"1f433\",\":horse:\":\"1f434\",\":monkey_face:\":\"1f435\",\":dog:\":\"1f436\",\":pig:\":\"1f437\",\":frog:\":\"1f438\",\":hamster:\":\"1f439\",\":wolf:\":\"1f43a\",\":bear:\":\"1f43b\",\":panda_face:\":\"1f43c\",\":pig_nose:\":\"1f43d\",\":feet:\":\"1f43e\",\":paw_prints:\":\"1f43e\",\":chipmunk:\":\"1f43f\",\":eyes:\":\"1f440\",\":eye:\":\"1f441\",\":ear:\":\"1f442\",\":nose:\":\"1f443\",\":lips:\":\"1f444\",\":tongue:\":\"1f445\",\":point_up_2:\":\"1f446\",\":point_down:\":\"1f447\",\":point_left:\":\"1f448\",\":point_right:\":\"1f449\",\":facepunch:\":\"1f44a\",\":punch:\":\"1f44a\",\":wave:\":\"1f44b\",\":ok_hand:\":\"1f44c\",\":+1:\":\"1f44d\",\":thumbsup:\":\"1f44d\",\":-1:\":\"1f44e\",\":thumbsdown:\":\"1f44e\",\":clap:\":\"1f44f\",\":open_hands:\":\"1f450\",\":crown:\":\"1f451\",\":womans_hat:\":\"1f452\",\":eyeglasses:\":\"1f453\",\":necktie:\":\"1f454\",\":shirt:\":\"1f455\",\":tshirt:\":\"1f455\",\":jeans:\":\"1f456\",\":dress:\":\"1f457\",\":kimono:\":\"1f458\",\":bikini:\":\"1f459\",\":womans_clothes:\":\"1f45a\",\":purse:\":\"1f45b\",\":handbag:\":\"1f45c\",\":pouch:\":\"1f45d\",\":mans_shoe:\":\"1f45e\",\":shoe:\":\"1f45e\",\":athletic_shoe:\":\"1f45f\",\":high_heel:\":\"1f460\",\":sandal:\":\"1f461\",\":boot:\":\"1f462\",\":footprints:\":\"1f463\",\":bust_in_silhouette:\":\"1f464\",\":busts_in_silhouette:\":\"1f465\",\":boy:\":\"1f466\",\":girl:\":\"1f467\",\":man:\":\"1f468\",\":woman:\":\"1f469\",\":family:\":\"1f46a\",\":man-woman-boy:\":\"1f46a\",\":couple:\":\"1f46b\",\":man_and_woman_holding_hands:\":\"1f46b\",\":two_men_holding_hands:\":\"1f46c\",\":two_women_holding_hands:\":\"1f46d\",\":cop:\":\"1f46e\",\":dancers:\":\"1f46f\",\":bride_with_veil:\":\"1f470\",\":person_with_blond_hair:\":\"1f471\",\":man_with_gua_pi_mao:\":\"1f472\",\":man_with_turban:\":\"1f473\",\":older_man:\":\"1f474\",\":older_woman:\":\"1f475\",\":baby:\":\"1f476\",\":construction_worker:\":\"1f477\",\":princess:\":\"1f478\",\":japanese_ogre:\":\"1f479\",\":japanese_goblin:\":\"1f47a\",\":ghost:\":\"1f47b\",\":angel:\":\"1f47c\",\":alien:\":\"1f47d\",\":space_invader:\":\"1f47e\",\":imp:\":\"1f47f\",\":skull:\":\"1f480\",\":information_desk_person:\":\"1f481\",\":guardsman:\":\"1f482\",\":dancer:\":\"1f483\",\":lipstick:\":\"1f484\",\":nail_care:\":\"1f485\",\":massage:\":\"1f486\",\":haircut:\":\"1f487\",\":barber:\":\"1f488\",\":syringe:\":\"1f489\",\":pill:\":\"1f48a\",\":kiss:\":\"1f48b\",\":love_letter:\":\"1f48c\",\":ring:\":\"1f48d\",\":gem:\":\"1f48e\",\":couplekiss:\":\"1f48f\",\":bouquet:\":\"1f490\",\":couple_with_heart:\":\"1f491\",\":wedding:\":\"1f492\",\":heartbeat:\":\"1f493\",\":broken_heart:\":\"1f494\",\":two_hearts:\":\"1f495\",\":sparkling_heart:\":\"1f496\",\":heartpulse:\":\"1f497\",\":cupid:\":\"1f498\",\":blue_heart:\":\"1f499\",\":green_heart:\":\"1f49a\",\":yellow_heart:\":\"1f49b\",\":purple_heart:\":\"1f49c\",\":gift_heart:\":\"1f49d\",\":revolving_hearts:\":\"1f49e\",\":heart_decoration:\":\"1f49f\",\":diamond_shape_with_a_dot_inside:\":\"1f4a0\",\":bulb:\":\"1f4a1\",\":anger:\":\"1f4a2\",\":bomb:\":\"1f4a3\",\":zzz:\":\"1f4a4\",\":boom:\":\"1f4a5\",\":collision:\":\"1f4a5\",\":sweat_drops:\":\"1f4a6\",\":droplet:\":\"1f4a7\",\":dash:\":\"1f4a8\",\":hankey:\":\"1f4a9\",\":poop:\":\"1f4a9\",\":shit:\":\"1f4a9\",\":muscle:\":\"1f4aa\",\":dizzy:\":\"1f4ab\",\":speech_balloon:\":\"1f4ac\",\":thought_balloon:\":\"1f4ad\",\":white_flower:\":\"1f4ae\",\":moneybag:\":\"1f4b0\",\":currency_exchange:\":\"1f4b1\",\":heavy_dollar_sign:\":\"1f4b2\",\":credit_card:\":\"1f4b3\",\":yen:\":\"1f4b4\",\":dollar:\":\"1f4b5\",\":euro:\":\"1f4b6\",\":pound:\":\"1f4b7\",\":money_with_wings:\":\"1f4b8\",\":chart:\":\"1f4b9\",\":seat:\":\"1f4ba\",\":computer:\":\"1f4bb\",\":briefcase:\":\"1f4bc\",\":minidisc:\":\"1f4bd\",\":floppy_disk:\":\"1f4be\",\":cd:\":\"1f4bf\",\":dvd:\":\"1f4c0\",\":file_folder:\":\"1f4c1\",\":open_file_folder:\":\"1f4c2\",\":page_with_curl:\":\"1f4c3\",\":page_facing_up:\":\"1f4c4\",\":date:\":\"1f4c5\",\":calendar:\":\"1f4c6\",\":card_index:\":\"1f4c7\",\":chart_with_upwards_trend:\":\"1f4c8\",\":chart_with_downwards_trend:\":\"1f4c9\",\":bar_chart:\":\"1f4ca\",\":clipboard:\":\"1f4cb\",\":pushpin:\":\"1f4cc\",\":round_pushpin:\":\"1f4cd\",\":paperclip:\":\"1f4ce\",\":straight_ruler:\":\"1f4cf\",\":triangular_ruler:\":\"1f4d0\",\":bookmark_tabs:\":\"1f4d1\",\":ledger:\":\"1f4d2\",\":notebook:\":\"1f4d3\",\":notebook_with_decorative_cover:\":\"1f4d4\",\":closed_book:\":\"1f4d5\",\":book:\":\"1f4d6\",\":open_book:\":\"1f4d6\",\":green_book:\":\"1f4d7\",\":blue_book:\":\"1f4d8\",\":orange_book:\":\"1f4d9\",\":books:\":\"1f4da\",\":name_badge:\":\"1f4db\",\":scroll:\":\"1f4dc\",\":memo:\":\"1f4dd\",\":pencil:\":\"1f4dd\",\":telephone_receiver:\":\"1f4de\",\":pager:\":\"1f4df\",\":fax:\":\"1f4e0\",\":satellite_antenna:\":\"1f4e1\",\":loudspeaker:\":\"1f4e2\",\":mega:\":\"1f4e3\",\":outbox_tray:\":\"1f4e4\",\":inbox_tray:\":\"1f4e5\",\":package:\":\"1f4e6\",\":e-mail:\":\"1f4e7\",\":incoming_envelope:\":\"1f4e8\",\":envelope_with_arrow:\":\"1f4e9\",\":mailbox_closed:\":\"1f4ea\",\":mailbox:\":\"1f4eb\",\":mailbox_with_mail:\":\"1f4ec\",\":mailbox_with_no_mail:\":\"1f4ed\",\":postbox:\":\"1f4ee\",\":postal_horn:\":\"1f4ef\",\":newspaper:\":\"1f4f0\",\":iphone:\":\"1f4f1\",\":calling:\":\"1f4f2\",\":vibration_mode:\":\"1f4f3\",\":mobile_phone_off:\":\"1f4f4\",\":no_mobile_phones:\":\"1f4f5\",\":signal_strength:\":\"1f4f6\",\":camera:\":\"1f4f7\",\":camera_with_flash:\":\"1f4f8\",\":video_camera:\":\"1f4f9\",\":tv:\":\"1f4fa\",\":radio:\":\"1f4fb\",\":vhs:\":\"1f4fc\",\":film_projector:\":\"1f4fd\",\":prayer_beads:\":\"1f4ff\",\":twisted_rightwards_arrows:\":\"1f500\",\":repeat:\":\"1f501\",\":repeat_one:\":\"1f502\",\":arrows_clockwise:\":\"1f503\",\":arrows_counterclockwise:\":\"1f504\",\":low_brightness:\":\"1f505\",\":high_brightness:\":\"1f506\",\":mute:\":\"1f507\",\":speaker:\":\"1f508\",\":sound:\":\"1f509\",\":loud_sound:\":\"1f50a\",\":battery:\":\"1f50b\",\":electric_plug:\":\"1f50c\",\":mag:\":\"1f50d\",\":mag_right:\":\"1f50e\",\":lock_with_ink_pen:\":\"1f50f\",\":closed_lock_with_key:\":\"1f510\",\":key:\":\"1f511\",\":lock:\":\"1f512\",\":unlock:\":\"1f513\",\":bell:\":\"1f514\",\":no_bell:\":\"1f515\",\":bookmark:\":\"1f516\",\":link:\":\"1f517\",\":radio_button:\":\"1f518\",\":back:\":\"1f519\",\":end:\":\"1f51a\",\":on:\":\"1f51b\",\":soon:\":\"1f51c\",\":top:\":\"1f51d\",\":underage:\":\"1f51e\",\":keycap_ten:\":\"1f51f\",\":capital_abcd:\":\"1f520\",\":abcd:\":\"1f521\",\":symbols:\":\"1f523\",\":abc:\":\"1f524\",\":fire:\":\"1f525\",\":flashlight:\":\"1f526\",\":wrench:\":\"1f527\",\":hammer:\":\"1f528\",\":nut_and_bolt:\":\"1f529\",\":hocho:\":\"1f52a\",\":knife:\":\"1f52a\",\":gun:\":\"1f52b\",\":microscope:\":\"1f52c\",\":telescope:\":\"1f52d\",\":crystal_ball:\":\"1f52e\",\":six_pointed_star:\":\"1f52f\",\":beginner:\":\"1f530\",\":trident:\":\"1f531\",\":black_square_button:\":\"1f532\",\":white_square_button:\":\"1f533\",\":red_circle:\":\"1f534\",\":large_blue_circle:\":\"1f535\",\":large_orange_diamond:\":\"1f536\",\":large_blue_diamond:\":\"1f537\",\":small_orange_diamond:\":\"1f538\",\":small_blue_diamond:\":\"1f539\",\":small_red_triangle:\":\"1f53a\",\":small_red_triangle_down:\":\"1f53b\",\":arrow_up_small:\":\"1f53c\",\":arrow_down_small:\":\"1f53d\",\":om_symbol:\":\"1f549\",\":dove_of_peace:\":\"1f54a\",\":kaaba:\":\"1f54b\",\":mosque:\":\"1f54c\",\":synagogue:\":\"1f54d\",\":menorah_with_nine_branches:\":\"1f54e\",\":clock1:\":\"1f550\",\":clock2:\":\"1f551\",\":clock3:\":\"1f552\",\":clock4:\":\"1f553\",\":clock5:\":\"1f554\",\":clock6:\":\"1f555\",\":clock7:\":\"1f556\",\":clock8:\":\"1f557\",\":clock9:\":\"1f558\",\":clock10:\":\"1f559\",\":clock11:\":\"1f55a\",\":clock12:\":\"1f55b\",\":clock130:\":\"1f55c\",\":clock230:\":\"1f55d\",\":clock330:\":\"1f55e\",\":clock430:\":\"1f55f\",\":clock530:\":\"1f560\",\":clock630:\":\"1f561\",\":clock730:\":\"1f562\",\":clock830:\":\"1f563\",\":clock930:\":\"1f564\",\":clock1030:\":\"1f565\",\":clock1130:\":\"1f566\",\":clock1230:\":\"1f567\",\":candle:\":\"1f56f\",\":mantelpiece_clock:\":\"1f570\",\":hole:\":\"1f573\",\":man_in_business_suit_levitating:\":\"1f574\",\":sleuth_or_spy:\":\"1f575\",\":dark_sunglasses:\":\"1f576\",\":spider:\":\"1f577\",\":spider_web:\":\"1f578\",\":joystick:\":\"1f579\",\":linked_paperclips:\":\"1f587\",\":lower_left_ballpoint_pen:\":\"1f58a\",\":lower_left_fountain_pen:\":\"1f58b\",\":lower_left_paintbrush:\":\"1f58c\",\":lower_left_crayon:\":\"1f58d\",\":raised_hand_with_fingers_splayed:\":\"1f590\",\":middle_finger:\":\"1f595\",\":reversed_hand_with_middle_finger_extended:\":\"1f595\",\":spock-hand:\":\"1f596\",\":desktop_computer:\":\"1f5a5\",\":printer:\":\"1f5a8\",\":three_button_mouse:\":\"1f5b1\",\":trackball:\":\"1f5b2\",\":frame_with_picture:\":\"1f5bc\",\":card_index_dividers:\":\"1f5c2\",\":card_file_box:\":\"1f5c3\",\":file_cabinet:\":\"1f5c4\",\":wastebasket:\":\"1f5d1\",\":spiral_note_pad:\":\"1f5d2\",\":spiral_calendar_pad:\":\"1f5d3\",\":compression:\":\"1f5dc\",\":old_key:\":\"1f5dd\",\":rolled_up_newspaper:\":\"1f5de\",\":dagger_knife:\":\"1f5e1\",\":speaking_head_in_silhouette:\":\"1f5e3\",\":left_speech_bubble:\":\"1f5e8\",\":right_anger_bubble:\":\"1f5ef\",\":ballot_box_with_ballot:\":\"1f5f3\",\":world_map:\":\"1f5fa\",\":mount_fuji:\":\"1f5fb\",\":tokyo_tower:\":\"1f5fc\",\":statue_of_liberty:\":\"1f5fd\",\":japan:\":\"1f5fe\",\":moyai:\":\"1f5ff\",\":grinning:\":\"1f600\",\":grin:\":\"1f601\",\":joy:\":\"1f602\",\":smiley:\":\"1f603\",\":smile:\":\"1f604\",\":sweat_smile:\":\"1f605\",\":laughing:\":\"1f606\",\":satisfied:\":\"1f606\",\":innocent:\":\"1f607\",\":smiling_imp:\":\"1f608\",\":wink:\":\"1f609\",\":blush:\":\"1f60a\",\":yum:\":\"1f60b\",\":relieved:\":\"1f60c\",\":heart_eyes:\":\"1f60d\",\":sunglasses:\":\"1f60e\",\":smirk:\":\"1f60f\",\":neutral_face:\":\"1f610\",\":expressionless:\":\"1f611\",\":unamused:\":\"1f612\",\":sweat:\":\"1f613\",\":pensive:\":\"1f614\",\":confused:\":\"1f615\",\":confounded:\":\"1f616\",\":kissing:\":\"1f617\",\":kissing_heart:\":\"1f618\",\":kissing_smiling_eyes:\":\"1f619\",\":kissing_closed_eyes:\":\"1f61a\",\":stuck_out_tongue:\":\"1f61b\",\":stuck_out_tongue_winking_eye:\":\"1f61c\",\":stuck_out_tongue_closed_eyes:\":\"1f61d\",\":disappointed:\":\"1f61e\",\":worried:\":\"1f61f\",\":angry:\":\"1f620\",\":rage:\":\"1f621\",\":cry:\":\"1f622\",\":persevere:\":\"1f623\",\":triumph:\":\"1f624\",\":disappointed_relieved:\":\"1f625\",\":frowning:\":\"1f626\",\":anguished:\":\"1f627\",\":fearful:\":\"1f628\",\":weary:\":\"1f629\",\":sleepy:\":\"1f62a\",\":tired_face:\":\"1f62b\",\":grimacing:\":\"1f62c\",\":sob:\":\"1f62d\",\":open_mouth:\":\"1f62e\",\":hushed:\":\"1f62f\",\":cold_sweat:\":\"1f630\",\":scream:\":\"1f631\",\":astonished:\":\"1f632\",\":flushed:\":\"1f633\",\":sleeping:\":\"1f634\",\":dizzy_face:\":\"1f635\",\":no_mouth:\":\"1f636\",\":mask:\":\"1f637\",\":smile_cat:\":\"1f638\",\":joy_cat:\":\"1f639\",\":smiley_cat:\":\"1f63a\",\":heart_eyes_cat:\":\"1f63b\",\":smirk_cat:\":\"1f63c\",\":kissing_cat:\":\"1f63d\",\":pouting_cat:\":\"1f63e\",\":crying_cat_face:\":\"1f63f\",\":scream_cat:\":\"1f640\",\":slightly_frowning_face:\":\"1f641\",\":slightly_smiling_face:\":\"1f642\",\":upside_down_face:\":\"1f643\",\":face_with_rolling_eyes:\":\"1f644\",\":no_good:\":\"1f645\",\":ok_woman:\":\"1f646\",\":bow:\":\"1f647\",\":see_no_evil:\":\"1f648\",\":hear_no_evil:\":\"1f649\",\":speak_no_evil:\":\"1f64a\",\":raising_hand:\":\"1f64b\",\":raised_hands:\":\"1f64c\",\":person_frowning:\":\"1f64d\",\":person_with_pouting_face:\":\"1f64e\",\":pray:\":\"1f64f\",\":rocket:\":\"1f680\",\":helicopter:\":\"1f681\",\":steam_locomotive:\":\"1f682\",\":railway_car:\":\"1f683\",\":bullettrain_side:\":\"1f684\",\":bullettrain_front:\":\"1f685\",\":train2:\":\"1f686\",\":metro:\":\"1f687\",\":light_rail:\":\"1f688\",\":station:\":\"1f689\",\":tram:\":\"1f68a\",\":train:\":\"1f68b\",\":bus:\":\"1f68c\",\":oncoming_bus:\":\"1f68d\",\":trolleybus:\":\"1f68e\",\":busstop:\":\"1f68f\",\":minibus:\":\"1f690\",\":ambulance:\":\"1f691\",\":fire_engine:\":\"1f692\",\":police_car:\":\"1f693\",\":oncoming_police_car:\":\"1f694\",\":taxi:\":\"1f695\",\":oncoming_taxi:\":\"1f696\",\":car:\":\"1f697\",\":red_car:\":\"1f697\",\":oncoming_automobile:\":\"1f698\",\":blue_car:\":\"1f699\",\":truck:\":\"1f69a\",\":articulated_lorry:\":\"1f69b\",\":tractor:\":\"1f69c\",\":monorail:\":\"1f69d\",\":mountain_railway:\":\"1f69e\",\":suspension_railway:\":\"1f69f\",\":mountain_cableway:\":\"1f6a0\",\":aerial_tramway:\":\"1f6a1\",\":ship:\":\"1f6a2\",\":rowboat:\":\"1f6a3\",\":speedboat:\":\"1f6a4\",\":traffic_light:\":\"1f6a5\",\":vertical_traffic_light:\":\"1f6a6\",\":construction:\":\"1f6a7\",\":rotating_light:\":\"1f6a8\",\":triangular_flag_on_post:\":\"1f6a9\",\":door:\":\"1f6aa\",\":no_entry_sign:\":\"1f6ab\",\":smoking:\":\"1f6ac\",\":no_smoking:\":\"1f6ad\",\":put_litter_in_its_place:\":\"1f6ae\",\":do_not_litter:\":\"1f6af\",\":potable_water:\":\"1f6b0\",\":non-potable_water:\":\"1f6b1\",\":bike:\":\"1f6b2\",\":no_bicycles:\":\"1f6b3\",\":bicyclist:\":\"1f6b4\",\":mountain_bicyclist:\":\"1f6b5\",\":walking:\":\"1f6b6\",\":no_pedestrians:\":\"1f6b7\",\":children_crossing:\":\"1f6b8\",\":mens:\":\"1f6b9\",\":womens:\":\"1f6ba\",\":restroom:\":\"1f6bb\",\":baby_symbol:\":\"1f6bc\",\":toilet:\":\"1f6bd\",\":wc:\":\"1f6be\",\":shower:\":\"1f6bf\",\":bath:\":\"1f6c0\",\":bathtub:\":\"1f6c1\",\":passport_control:\":\"1f6c2\",\":customs:\":\"1f6c3\",\":baggage_claim:\":\"1f6c4\",\":left_luggage:\":\"1f6c5\",\":couch_and_lamp:\":\"1f6cb\",\":sleeping_accommodation:\":\"1f6cc\",\":shopping_bags:\":\"1f6cd\",\":bellhop_bell:\":\"1f6ce\",\":bed:\":\"1f6cf\",\":place_of_worship:\":\"1f6d0\",\":hammer_and_wrench:\":\"1f6e0\",\":shield:\":\"1f6e1\",\":oil_drum:\":\"1f6e2\",\":motorway:\":\"1f6e3\",\":railway_track:\":\"1f6e4\",\":motor_boat:\":\"1f6e5\",\":small_airplane:\":\"1f6e9\",\":airplane_departure:\":\"1f6eb\",\":airplane_arriving:\":\"1f6ec\",\":satellite:\":\"1f6f0\",\":passenger_ship:\":\"1f6f3\",\":zipper_mouth_face:\":\"1f910\",\":money_mouth_face:\":\"1f911\",\":face_with_thermometer:\":\"1f912\",\":nerd_face:\":\"1f913\",\":thinking_face:\":\"1f914\",\":face_with_head_bandage:\":\"1f915\",\":robot_face:\":\"1f916\",\":hugging_face:\":\"1f917\",\":the_horns:\":\"1f918\",\":sign_of_the_horns:\":\"1f918\",\":crab:\":\"1f980\",\":lion_face:\":\"1f981\",\":scorpion:\":\"1f982\",\":turkey:\":\"1f983\",\":unicorn_face:\":\"1f984\",\":cheese_wedge:\":\"1f9c0\",\":hash:\":\"0023-20e3\",\":keycap_star:\":\"002a-20e3\",\":zero:\":\"0030-20e3\",\":one:\":\"0031-20e3\",\":two:\":\"0032-20e3\",\":three:\":\"0033-20e3\",\":four:\":\"0034-20e3\",\":five:\":\"0035-20e3\",\":six:\":\"0036-20e3\",\":seven:\":\"0037-20e3\",\":eight:\":\"0038-20e3\",\":nine:\":\"0039-20e3\",\":man-man-boy:\":\"1f468-200d-1f468-200d-1f466\",\":man-man-boy-boy:\":\"1f468-200d-1f468-200d-1f466-200d-1f466\",\":man-man-girl:\":\"1f468-200d-1f468-200d-1f467\",\":man-man-girl-boy:\":\"1f468-200d-1f468-200d-1f467-200d-1f466\",\":man-man-girl-girl:\":\"1f468-200d-1f468-200d-1f467-200d-1f467\",\":man-woman-boy-boy:\":\"1f468-200d-1f469-200d-1f466-200d-1f466\",\":man-woman-girl:\":\"1f468-200d-1f469-200d-1f467\",\":man-woman-girl-boy:\":\"1f468-200d-1f469-200d-1f467-200d-1f466\",\":man-woman-girl-girl:\":\"1f468-200d-1f469-200d-1f467-200d-1f467\",\":man-heart-man:\":\"1f468-200d-2764-fe0f-200d-1f468\",\":man-kiss-man:\":\"1f468-200d-2764-fe0f-200d-1f48b-200d-1f468\",\":woman-woman-boy:\":\"1f469-200d-1f469-200d-1f466\",\":woman-woman-boy-boy:\":\"1f469-200d-1f469-200d-1f466-200d-1f466\",\":woman-woman-girl:\":\"1f469-200d-1f469-200d-1f467\",\":woman-woman-girl-boy:\":\"1f469-200d-1f469-200d-1f467-200d-1f466\",\":woman-woman-girl-girl:\":\"1f469-200d-1f469-200d-1f467-200d-1f467\",\":woman-heart-woman:\":\"1f469-200d-2764-fe0f-200d-1f469\",\":woman-kiss-woman:\":\"1f469-200d-2764-fe0f-200d-1f48b-200d-1f469\"};exports.mapStringToUnicode=mapStringToUnicode;var checkText=function(a){var b=a&&a.split(\" \"),c=[];return b&&b.forEach(function(a){var b=a;a in emojiMap&&(b=emojiMap[a]),c.push(b)}),c.join(\" \")};exports.checkText=checkText;var keysStartingWith=function(a,b){return Object.keys(a).filter(function(a){return a.startsWith(b)})};exports.keysStartingWith=keysStartingWith;var checkTextWithAutoSuggestions=function(a){var b=a&&a.split(\" \"),c=[];return b&&b.forEach(function(a){var b=a;if(a in emojiMap)b=emojiMap[a];else{var d=keysStartingWith(emojiMap,a);1===d.length&&(b=emojiMap[d[0]])}c.push(b)}),c.join(\" \")};exports.checkTextWithAutoSuggestions=checkTextWithAutoSuggestions;var fromUnicodeToEmoji=function(a){return String.fromCodePoint(parseInt(a,16))};exports.fromUnicodeToEmoji=fromUnicodeToEmoji;var checkTextWithAutoSuggestionsAndUnicode=function(a){var b=a&&a.split(\" \"),c=[];return b&&b.forEach(function(a){var b=a;if(a in mapStringToUnicode)b=fromUnicodeToEmoji(mapStringToUnicode[a]);else{var d=keysStartingWith(mapStringToUnicode,a);1===d.length&&(b=fromUnicodeToEmoji(mapStringToUnicode[d[0]]))}c.push(b)}),c.join(\" \")};exports.checkTextWithAutoSuggestionsAndUnicode=checkTextWithAutoSuggestionsAndUnicode;","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport AsyncScheduler from '../scheduler/AsyncScheduler';\nimport IntervalScheduler from '../scheduler/IntervalScheduler';\n\ntype ListenerFunction = (\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | AddEventListenerOptions\n) => // eslint-disable-next-line @typescript-eslint/no-explicit-any\nany;\n\nexport default class MediaDeviceProxyHandler implements ProxyHandler {\n private static INTERVAL_MS: number = 1000;\n\n private scheduler: IntervalScheduler | null = null;\n private devices: MediaDeviceInfo[] | null = null;\n private deviceChangeListeners: Set = new Set();\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any,@typescript-eslint/explicit-module-boundary-types\n get = (target: MediaDevices, property: PropertyKey, receiver: any): any => {\n if (!Reflect.has(target, property)) {\n return undefined;\n }\n if (!('ondevicechange' in navigator.mediaDevices)) {\n if (property === 'addEventListener') {\n return this.patchAddEventListener(target, property, receiver);\n } else if (property === 'removeEventListener') {\n return this.patchRemoveEventListener(target, property, receiver);\n }\n }\n const value = Reflect.get(target, property, receiver);\n return typeof value === 'function' ? value.bind(target) : value;\n };\n\n private patchAddEventListener = (\n target: MediaDevices,\n property: PropertyKey,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n receiver: any\n ): ListenerFunction => {\n const value = Reflect.get(target, property, receiver);\n return (\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | AddEventListenerOptions\n ) => {\n if (type === 'devicechange') {\n this.deviceChangeListeners.add(listener);\n if (!this.scheduler) {\n this.scheduler = new IntervalScheduler(MediaDeviceProxyHandler.INTERVAL_MS);\n this.scheduler.start(this.pollDeviceLists);\n }\n } else {\n return Reflect.apply(value, target, [type, listener, options]);\n }\n };\n };\n\n private patchRemoveEventListener = (\n target: MediaDevices,\n property: PropertyKey,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n receiver: any\n ): ListenerFunction => {\n const value = Reflect.get(target, property, receiver);\n return (\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | EventListenerOptions\n ) => {\n if (type === 'devicechange') {\n this.deviceChangeListeners.delete(listener);\n if (this.deviceChangeListeners.size === 0 && this.scheduler) {\n this.scheduler.stop();\n this.scheduler = null;\n }\n } else {\n return Reflect.apply(value, target, [type, listener, options]);\n }\n };\n };\n\n private pollDeviceLists = async (): Promise => {\n const newDevices = await this.sortedDeviceList();\n if (this.devices) {\n const changed =\n newDevices.length !== this.devices.length ||\n newDevices.some((device: MediaDeviceInfo, index: number) => {\n return device.deviceId !== this.devices[index].deviceId;\n });\n if (changed) {\n this.handleDeviceChangeEvent();\n }\n }\n this.devices = newDevices;\n };\n\n private async sortedDeviceList(): Promise {\n // @ts-ignore\n const newDevices = await navigator.mediaDevices.enumerateDevices();\n return newDevices.sort((device1: MediaDeviceInfo, device2: MediaDeviceInfo) => {\n if (device1.deviceId < device2.deviceId) {\n return 1;\n }\n if (device1.deviceId > device2.deviceId) {\n return -1;\n }\n return 0;\n });\n }\n\n private handleDeviceChangeEvent(): void {\n for (const listener of this.deviceChangeListeners) {\n AsyncScheduler.nextTick(() => {\n /* istanbul ignore else */\n if (this.deviceChangeListeners.has(listener)) {\n const event = new Event('devicechange');\n if (typeof listener === 'function') {\n listener(event);\n } else {\n listener.handleEvent(event);\n }\n }\n });\n }\n }\n}\n","var util = require('../core').util;\nvar toBuffer = util.buffer.toBuffer;\n\n// All prelude components are unsigned, 32-bit integers\nvar PRELUDE_MEMBER_LENGTH = 4;\n// The prelude consists of two components\nvar PRELUDE_LENGTH = PRELUDE_MEMBER_LENGTH * 2;\n// Checksums are always CRC32 hashes.\nvar CHECKSUM_LENGTH = 4;\n// Messages must include a full prelude, a prelude checksum, and a message checksum\nvar MINIMUM_MESSAGE_LENGTH = PRELUDE_LENGTH + CHECKSUM_LENGTH * 2;\n\n/**\n * @api private\n *\n * @param {Buffer} message\n */\nfunction splitMessage(message) {\n if (!util.Buffer.isBuffer(message)) message = toBuffer(message);\n\n if (message.length < MINIMUM_MESSAGE_LENGTH) {\n throw new Error('Provided message too short to accommodate event stream message overhead');\n }\n\n if (message.length !== message.readUInt32BE(0)) {\n throw new Error('Reported message length does not match received message length');\n }\n\n var expectedPreludeChecksum = message.readUInt32BE(PRELUDE_LENGTH);\n\n if (\n expectedPreludeChecksum !== util.crypto.crc32(\n message.slice(0, PRELUDE_LENGTH)\n )\n ) {\n throw new Error(\n 'The prelude checksum specified in the message (' +\n expectedPreludeChecksum +\n ') does not match the calculated CRC32 checksum.'\n );\n }\n\n var expectedMessageChecksum = message.readUInt32BE(message.length - CHECKSUM_LENGTH);\n\n if (\n expectedMessageChecksum !== util.crypto.crc32(\n message.slice(0, message.length - CHECKSUM_LENGTH)\n )\n ) {\n throw new Error(\n 'The message checksum did not match the expected value of ' +\n expectedMessageChecksum\n );\n }\n\n var headersStart = PRELUDE_LENGTH + CHECKSUM_LENGTH;\n var headersEnd = headersStart + message.readUInt32BE(PRELUDE_MEMBER_LENGTH);\n\n return {\n headers: message.slice(headersStart, headersEnd),\n body: message.slice(headersEnd, message.length - CHECKSUM_LENGTH),\n };\n}\n\n/**\n * @api private\n */\nmodule.exports = {\n splitMessage: splitMessage\n};\n","'use strict';\n\n/** @type {import('./shams')} */\n/* eslint complexity: [2, 18], max-statements: [2, 33] */\nmodule.exports = function hasSymbols() {\n\tif (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; }\n\tif (typeof Symbol.iterator === 'symbol') { return true; }\n\n\t/** @type {{ [k in symbol]?: unknown }} */\n\tvar obj = {};\n\tvar sym = Symbol('test');\n\tvar symObj = Object(sym);\n\tif (typeof sym === 'string') { return false; }\n\n\tif (Object.prototype.toString.call(sym) !== '[object Symbol]') { return false; }\n\tif (Object.prototype.toString.call(symObj) !== '[object Symbol]') { return false; }\n\n\t// temp disabled per https://github.com/ljharb/object.assign/issues/17\n\t// if (sym instanceof Symbol) { return false; }\n\t// temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4\n\t// if (!(symObj instanceof Symbol)) { return false; }\n\n\t// if (typeof Symbol.prototype.toString !== 'function') { return false; }\n\t// if (String(sym) !== Symbol.prototype.toString.call(sym)) { return false; }\n\n\tvar symVal = 42;\n\tobj[sym] = symVal;\n\tfor (var _ in obj) { return false; } // eslint-disable-line no-restricted-syntax, no-unreachable-loop\n\tif (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; }\n\n\tif (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; }\n\n\tvar syms = Object.getOwnPropertySymbols(obj);\n\tif (syms.length !== 1 || syms[0] !== sym) { return false; }\n\n\tif (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; }\n\n\tif (typeof Object.getOwnPropertyDescriptor === 'function') {\n\t\t// eslint-disable-next-line no-extra-parens\n\t\tvar descriptor = /** @type {PropertyDescriptor} */ (Object.getOwnPropertyDescriptor(obj, sym));\n\t\tif (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; }\n\t}\n\n\treturn true;\n};\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\n/**\n * [[RealtimeAttendeePositionInFrame]] information about the attendee's place in the frame.\n */\nexport default class RealtimeAttendeePositionInFrame {\n /**\n * Index of attendee update in the frame starting at zero\n */\n attendeeIndex: number | null = null;\n\n /**\n * Number of total attendee updates in the frame\n */\n attendeesInFrame: number | null = null;\n}\n","// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nconst pako = require('pako');\nimport Logger from '../logger/Logger';\n\n/**\n * [[ZLIBTextCompressor]] Performs the text compression and decompression using zlib\n */\nexport default class ZLIBTextCompressor {\n // The memory Level parameter specifies how much memory to use for the internal state.\n // Smaller values use less memory but are slower, while higher values use more memory\n // to gain compression speed.\n // Range is between 1 to 9\n private static Z_MEM_LEVEL: number = 9;\n\n // 32kB is the maximum dictionary size supported by the zlib format.\n private static MAX_DICTIONARY_SIZE: number = 31744; // 31 KB\n\n /**\n * Constructs an instance of [[ZLIBTextCompressor]]\n * @param logger\n */\n constructor(private logger: Logger) {}\n\n /**\n * Compresses the given text.\n *\n * Note: The dictionary used during compression should be the same as\n * that being used during decompression.\n *\n * @param text - the text that needs to be compressed\n * @param dictionary - that will be used to seed the compression\n * library to improve compression's performance\n * @returns a compressed text\n */\n compress(text: string, dictionary: string): Uint8Array {\n if (dictionary.length > 0) {\n const dictionarySize = Math.min(dictionary.length, ZLIBTextCompressor.MAX_DICTIONARY_SIZE);\n dictionary = dictionary.slice(0, dictionarySize);\n }\n\n const options = {\n memLevel: ZLIBTextCompressor.Z_MEM_LEVEL,\n dictionary: dictionary,\n };\n\n const compressedText = pako.deflateRaw(text, options);\n return compressedText;\n }\n\n /**\n * Decompresses the given text and returns the original text.\n *\n * Note: The dictionary used during compression should be the same as\n * that being used during decompression.\n *\n * @param compressedText that will be decompressed\n * @param dictionary that will be used to seed the compression library to improve\n * decompression's performance\n * @returns decompressed string\n */\n decompress(compressedText: Uint8Array, dictionary: string): string {\n if (dictionary.length > 0) {\n const dictionarySize = Math.min(dictionary.length, ZLIBTextCompressor.MAX_DICTIONARY_SIZE);\n dictionary = dictionary.slice(0, dictionarySize);\n }\n\n const options = {\n to: 'string',\n dictionary: dictionary,\n chunkSize: 4096,\n };\n\n let decompressedText = '';\n try {\n decompressedText = pako.inflateRaw(compressedText, options);\n } catch (ex) {\n this.logger.error(`failed to decompress the string with error: [${ex}]`);\n }\n return decompressedText;\n }\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","__webpack_require__.amdO = {};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","var getProto = Object.getPrototypeOf ? (obj) => (Object.getPrototypeOf(obj)) : (obj) => (obj.__proto__);\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach((key) => (def[key] = () => (value[key])));\n\t}\n\tdef['default'] = () => (value);\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"static/js/\" + chunkId + \".\" + {\"17\":\"361ff06e\",\"247\":\"64eec72d\",\"259\":\"b858018e\",\"283\":\"c19ac8f3\",\"363\":\"413dca93\",\"1048\":\"a1c92b26\",\"1157\":\"a1a02157\",\"1250\":\"34cf84f9\",\"1338\":\"9c020938\",\"1343\":\"67eb0747\",\"1550\":\"ed71b975\",\"1765\":\"49ba4441\",\"1825\":\"e8b546e4\",\"1883\":\"b385cf3a\",\"1951\":\"d2dd6c6b\",\"2081\":\"f40a0c73\",\"2176\":\"2b91932e\",\"2196\":\"da8fb66c\",\"2306\":\"8e27bde0\",\"2332\":\"4df776ab\",\"2509\":\"2b6b13cd\",\"2831\":\"55bc54d9\",\"2866\":\"fa18850b\",\"2979\":\"9aca9f00\",\"3431\":\"c710fd57\",\"3432\":\"54f84352\",\"3832\":\"9ecd19d4\",\"3857\":\"1410f08c\",\"3930\":\"aa20c398\",\"4578\":\"36f5e72a\",\"4829\":\"7aea7e27\",\"4877\":\"17f6dd3d\",\"4915\":\"a9f81911\",\"5098\":\"44bf6c01\",\"5131\":\"fc09758c\",\"5322\":\"2017b37e\",\"5490\":\"2d7c4a22\",\"5709\":\"706294b5\",\"5811\":\"e3b96aa1\",\"5852\":\"d358dacb\",\"5947\":\"2fe5c48e\",\"6106\":\"d62d8685\",\"6118\":\"e97c2341\",\"6606\":\"2effe02f\",\"6963\":\"edda1b7b\",\"7062\":\"e77b66a3\",\"7100\":\"e8fab293\",\"7118\":\"27824370\",\"7346\":\"e9bda488\",\"7927\":\"6b59a0b8\",\"8058\":\"acd06369\",\"8289\":\"1f8b1173\",\"8387\":\"a86b1771\",\"8919\":\"3867f2dd\",\"9012\":\"381efd27\",\"9200\":\"2c03243b\",\"9226\":\"9dc280cd\",\"9416\":\"78ea0c00\",\"9475\":\"39994089\",\"9539\":\"a5199c65\",\"9609\":\"0b375727\"}[chunkId] + \".chunk.js\";\n};","// This function allow to reference async chunks\n__webpack_require__.miniCssF = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"static/css/\" + chunkId + \".\" + {\"283\":\"cc6ab34c\",\"363\":\"d578c415\",\"1157\":\"1161519e\",\"2176\":\"e5428ca2\",\"2306\":\"dc35b2a8\",\"2831\":\"a64429c6\",\"2979\":\"c5c9c061\",\"3432\":\"5a645eff\",\"4578\":\"a7317a89\",\"4877\":\"7a8d25d3\",\"4915\":\"0beec5bb\",\"5947\":\"7631ee79\",\"6106\":\"a4d2eec2\",\"6118\":\"09fc1efc\",\"7118\":\"f84bc579\",\"8058\":\"01186cdd\",\"8387\":\"b983a9bc\",\"8919\":\"11755b22\"}[chunkId] + \".chunk.css\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","var inProgress = {};\nvar dataWebpackPrefix = \"private-channel-portal:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.p = \"/\";","if (typeof document === \"undefined\") return;\nvar createStylesheet = (chunkId, fullhref, oldTag, resolve, reject) => {\n\tvar linkTag = document.createElement(\"link\");\n\n\tlinkTag.rel = \"stylesheet\";\n\tlinkTag.type = \"text/css\";\n\tif (__webpack_require__.nc) {\n\t\tlinkTag.nonce = __webpack_require__.nc;\n\t}\n\tvar onLinkComplete = (event) => {\n\t\t// avoid mem leaks.\n\t\tlinkTag.onerror = linkTag.onload = null;\n\t\tif (event.type === 'load') {\n\t\t\tresolve();\n\t\t} else {\n\t\t\tvar errorType = event && event.type;\n\t\t\tvar realHref = event && event.target && event.target.href || fullhref;\n\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + errorType + \": \" + realHref + \")\");\n\t\t\terr.name = \"ChunkLoadError\";\n\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n\t\t\terr.type = errorType;\n\t\t\terr.request = realHref;\n\t\t\tif (linkTag.parentNode) linkTag.parentNode.removeChild(linkTag)\n\t\t\treject(err);\n\t\t}\n\t}\n\tlinkTag.onerror = linkTag.onload = onLinkComplete;\n\tlinkTag.href = fullhref;\n\n\n\tif (oldTag) {\n\t\toldTag.parentNode.insertBefore(linkTag, oldTag.nextSibling);\n\t} else {\n\t\tdocument.head.appendChild(linkTag);\n\t}\n\treturn linkTag;\n};\nvar findStylesheet = (href, fullhref) => {\n\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n\tfor(var i = 0; i < existingLinkTags.length; i++) {\n\t\tvar tag = existingLinkTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return tag;\n\t}\n\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n\tfor(var i = 0; i < existingStyleTags.length; i++) {\n\t\tvar tag = existingStyleTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\");\n\t\tif(dataHref === href || dataHref === fullhref) return tag;\n\t}\n};\nvar loadStylesheet = (chunkId) => {\n\treturn new Promise((resolve, reject) => {\n\t\tvar href = __webpack_require__.miniCssF(chunkId);\n\t\tvar fullhref = __webpack_require__.p + href;\n\t\tif(findStylesheet(href, fullhref)) return resolve();\n\t\tcreateStylesheet(chunkId, fullhref, null, resolve, reject);\n\t});\n}\n// object to store loaded CSS chunks\nvar installedCssChunks = {\n\t8792: 0\n};\n\n__webpack_require__.f.miniCss = (chunkId, promises) => {\n\tvar cssChunks = {\"283\":1,\"363\":1,\"1157\":1,\"2176\":1,\"2306\":1,\"2831\":1,\"2979\":1,\"3432\":1,\"4578\":1,\"4877\":1,\"4915\":1,\"5947\":1,\"6106\":1,\"6118\":1,\"7118\":1,\"8058\":1,\"8387\":1,\"8919\":1};\n\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n\t\tpromises.push(installedCssChunks[chunkId] = loadStylesheet(chunkId).then(() => {\n\t\t\tinstalledCssChunks[chunkId] = 0;\n\t\t}, (e) => {\n\t\t\tdelete installedCssChunks[chunkId];\n\t\t\tthrow e;\n\t\t}));\n\t}\n};\n\n// no hmr\n\n// no prefetching\n\n// no preloaded","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t8792: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n// no on chunks loaded\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkprivate_channel_portal\"] = self[\"webpackChunkprivate_channel_portal\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","import React from 'react';\nexport var ReactReduxContext = /*#__PURE__*/React.createContext(null);\n\nif (process.env.NODE_ENV !== 'production') {\n ReactReduxContext.displayName = 'ReactRedux';\n}\n\nexport default ReactReduxContext;","// Default to a dummy \"batch\" implementation that just runs the callback\nfunction defaultNoopBatch(callback) {\n callback();\n}\n\nvar batch = defaultNoopBatch; // Allow injecting another batching function later\n\nexport var setBatch = function setBatch(newBatch) {\n return batch = newBatch;\n}; // Supply a getter just to skip dealing with ESM bindings\n\nexport var getBatch = function getBatch() {\n return batch;\n};","import { getBatch } from './batch'; // encapsulates the subscription logic for connecting a component to the redux store, as\n// well as nesting subscriptions of descendant components, so that we can ensure the\n// ancestor components re-render before descendants\n\nfunction createListenerCollection() {\n var batch = getBatch();\n var first = null;\n var last = null;\n return {\n clear: function clear() {\n first = null;\n last = null;\n },\n notify: function notify() {\n batch(function () {\n var listener = first;\n\n while (listener) {\n listener.callback();\n listener = listener.next;\n }\n });\n },\n get: function get() {\n var listeners = [];\n var listener = first;\n\n while (listener) {\n listeners.push(listener);\n listener = listener.next;\n }\n\n return listeners;\n },\n subscribe: function subscribe(callback) {\n var isSubscribed = true;\n var listener = last = {\n callback: callback,\n next: null,\n prev: last\n };\n\n if (listener.prev) {\n listener.prev.next = listener;\n } else {\n first = listener;\n }\n\n return function unsubscribe() {\n if (!isSubscribed || first === null) return;\n isSubscribed = false;\n\n if (listener.next) {\n listener.next.prev = listener.prev;\n } else {\n last = listener.prev;\n }\n\n if (listener.prev) {\n listener.prev.next = listener.next;\n } else {\n first = listener.next;\n }\n };\n }\n };\n}\n\nvar nullListeners = {\n notify: function notify() {},\n get: function get() {\n return [];\n }\n};\nexport function createSubscription(store, parentSub) {\n var unsubscribe;\n var listeners = nullListeners;\n\n function addNestedSub(listener) {\n trySubscribe();\n return listeners.subscribe(listener);\n }\n\n function notifyNestedSubs() {\n listeners.notify();\n }\n\n function handleChangeWrapper() {\n if (subscription.onStateChange) {\n subscription.onStateChange();\n }\n }\n\n function isSubscribed() {\n return Boolean(unsubscribe);\n }\n\n function trySubscribe() {\n if (!unsubscribe) {\n unsubscribe = parentSub ? parentSub.addNestedSub(handleChangeWrapper) : store.subscribe(handleChangeWrapper);\n listeners = createListenerCollection();\n }\n }\n\n function tryUnsubscribe() {\n if (unsubscribe) {\n unsubscribe();\n unsubscribe = undefined;\n listeners.clear();\n listeners = nullListeners;\n }\n }\n\n var subscription = {\n addNestedSub: addNestedSub,\n notifyNestedSubs: notifyNestedSubs,\n handleChangeWrapper: handleChangeWrapper,\n isSubscribed: isSubscribed,\n trySubscribe: trySubscribe,\n tryUnsubscribe: tryUnsubscribe,\n getListeners: function getListeners() {\n return listeners;\n }\n };\n return subscription;\n}","import { useEffect, useLayoutEffect } from 'react'; // React currently throws a warning when using useLayoutEffect on the server.\n// To get around it, we can conditionally useEffect on the server (no-op) and\n// useLayoutEffect in the browser. We need useLayoutEffect to ensure the store\n// subscription callback always has the selector from the latest render commit\n// available, otherwise a store update may happen between render and the effect,\n// which may cause missed updates; we also must ensure the store subscription\n// is created synchronously, otherwise a store update may occur before the\n// subscription is created and an inconsistent state may be observed\n\nexport var useIsomorphicLayoutEffect = typeof window !== 'undefined' && typeof window.document !== 'undefined' && typeof window.document.createElement !== 'undefined' ? useLayoutEffect : useEffect;","import React, { useMemo } from 'react';\nimport PropTypes from 'prop-types';\nimport { ReactReduxContext } from './Context';\nimport { createSubscription } from '../utils/Subscription';\nimport { useIsomorphicLayoutEffect } from '../utils/useIsomorphicLayoutEffect';\n\nfunction Provider(_ref) {\n var store = _ref.store,\n context = _ref.context,\n children = _ref.children;\n var contextValue = useMemo(function () {\n var subscription = createSubscription(store);\n return {\n store: store,\n subscription: subscription\n };\n }, [store]);\n var previousState = useMemo(function () {\n return store.getState();\n }, [store]);\n useIsomorphicLayoutEffect(function () {\n var subscription = contextValue.subscription;\n subscription.onStateChange = subscription.notifyNestedSubs;\n subscription.trySubscribe();\n\n if (previousState !== store.getState()) {\n subscription.notifyNestedSubs();\n }\n\n return function () {\n subscription.tryUnsubscribe();\n subscription.onStateChange = null;\n };\n }, [contextValue, previousState]);\n var Context = context || ReactReduxContext;\n return /*#__PURE__*/React.createElement(Context.Provider, {\n value: contextValue\n }, children);\n}\n\nif (process.env.NODE_ENV !== 'production') {\n Provider.propTypes = {\n store: PropTypes.shape({\n subscribe: PropTypes.func.isRequired,\n dispatch: PropTypes.func.isRequired,\n getState: PropTypes.func.isRequired\n }),\n context: PropTypes.object,\n children: PropTypes.any\n };\n}\n\nexport default Provider;","function _extends() {\n return _extends = Object.assign ? Object.assign.bind() : function (n) {\n for (var e = 1; e < arguments.length; e++) {\n var t = arguments[e];\n for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);\n }\n return n;\n }, _extends.apply(null, arguments);\n}\nexport { _extends as default };","import { useContext } from 'react';\nimport { ReactReduxContext } from '../components/Context';\n/**\r\n * A hook to access the value of the `ReactReduxContext`. This is a low-level\r\n * hook that you should usually not need to call directly.\r\n *\r\n * @returns {any} the value of the `ReactReduxContext`\r\n *\r\n * @example\r\n *\r\n * import React from 'react'\r\n * import { useReduxContext } from 'react-redux'\r\n *\r\n * export const CounterComponent = ({ value }) => {\r\n * const { store } = useReduxContext()\r\n * return
{store.getState()}
\r\n * }\r\n */\n\nexport function useReduxContext() {\n var contextValue = useContext(ReactReduxContext);\n\n if (process.env.NODE_ENV !== 'production' && !contextValue) {\n throw new Error('could not find react-redux context value; please ensure the component is wrapped in a ');\n }\n\n return contextValue;\n}","import { useContext } from 'react';\nimport { ReactReduxContext } from '../components/Context';\nimport { useReduxContext as useDefaultReduxContext } from './useReduxContext';\n/**\r\n * Hook factory, which creates a `useStore` hook bound to a given context.\r\n *\r\n * @param {React.Context} [context=ReactReduxContext] Context passed to your ``.\r\n * @returns {Function} A `useStore` hook bound to the specified context.\r\n */\n\nexport function createStoreHook(context) {\n if (context === void 0) {\n context = ReactReduxContext;\n }\n\n var useReduxContext = context === ReactReduxContext ? useDefaultReduxContext : function () {\n return useContext(context);\n };\n return function useStore() {\n var _useReduxContext = useReduxContext(),\n store = _useReduxContext.store;\n\n return store;\n };\n}\n/**\r\n * A hook to access the redux store.\r\n *\r\n * @returns {any} the redux store\r\n *\r\n * @example\r\n *\r\n * import React from 'react'\r\n * import { useStore } from 'react-redux'\r\n *\r\n * export const ExampleComponent = () => {\r\n * const store = useStore()\r\n * return
{store.getState()}
\r\n * }\r\n */\n\nexport var useStore = /*#__PURE__*/createStoreHook();","import { ReactReduxContext } from '../components/Context';\nimport { useStore as useDefaultStore, createStoreHook } from './useStore';\n/**\r\n * Hook factory, which creates a `useDispatch` hook bound to a given context.\r\n *\r\n * @param {React.Context} [context=ReactReduxContext] Context passed to your ``.\r\n * @returns {Function} A `useDispatch` hook bound to the specified context.\r\n */\n\nexport function createDispatchHook(context) {\n if (context === void 0) {\n context = ReactReduxContext;\n }\n\n var useStore = context === ReactReduxContext ? useDefaultStore : createStoreHook(context);\n return function useDispatch() {\n var store = useStore();\n return store.dispatch;\n };\n}\n/**\r\n * A hook to access the redux `dispatch` function.\r\n *\r\n * @returns {any|function} redux store's `dispatch` function\r\n *\r\n * @example\r\n *\r\n * import React, { useCallback } from 'react'\r\n * import { useDispatch } from 'react-redux'\r\n *\r\n * export const CounterComponent = ({ value }) => {\r\n * const dispatch = useDispatch()\r\n * const increaseCounter = useCallback(() => dispatch({ type: 'increase-counter' }), [])\r\n * return (\r\n *
\r\n * {value}\r\n * \r\n *
\r\n * )\r\n * }\r\n */\n\nexport var useDispatch = /*#__PURE__*/createDispatchHook();","import { useReducer, useRef, useMemo, useContext, useDebugValue } from 'react';\nimport { useReduxContext as useDefaultReduxContext } from './useReduxContext';\nimport { createSubscription } from '../utils/Subscription';\nimport { useIsomorphicLayoutEffect } from '../utils/useIsomorphicLayoutEffect';\nimport { ReactReduxContext } from '../components/Context';\n\nvar refEquality = function refEquality(a, b) {\n return a === b;\n};\n\nfunction useSelectorWithStoreAndSubscription(selector, equalityFn, store, contextSub) {\n var _useReducer = useReducer(function (s) {\n return s + 1;\n }, 0),\n forceRender = _useReducer[1];\n\n var subscription = useMemo(function () {\n return createSubscription(store, contextSub);\n }, [store, contextSub]);\n var latestSubscriptionCallbackError = useRef();\n var latestSelector = useRef();\n var latestStoreState = useRef();\n var latestSelectedState = useRef();\n var storeState = store.getState();\n var selectedState;\n\n try {\n if (selector !== latestSelector.current || storeState !== latestStoreState.current || latestSubscriptionCallbackError.current) {\n var newSelectedState = selector(storeState); // ensure latest selected state is reused so that a custom equality function can result in identical references\n\n if (latestSelectedState.current === undefined || !equalityFn(newSelectedState, latestSelectedState.current)) {\n selectedState = newSelectedState;\n } else {\n selectedState = latestSelectedState.current;\n }\n } else {\n selectedState = latestSelectedState.current;\n }\n } catch (err) {\n if (latestSubscriptionCallbackError.current) {\n err.message += \"\\nThe error may be correlated with this previous error:\\n\" + latestSubscriptionCallbackError.current.stack + \"\\n\\n\";\n }\n\n throw err;\n }\n\n useIsomorphicLayoutEffect(function () {\n latestSelector.current = selector;\n latestStoreState.current = storeState;\n latestSelectedState.current = selectedState;\n latestSubscriptionCallbackError.current = undefined;\n });\n useIsomorphicLayoutEffect(function () {\n function checkForUpdates() {\n try {\n var newStoreState = store.getState(); // Avoid calling selector multiple times if the store's state has not changed\n\n if (newStoreState === latestStoreState.current) {\n return;\n }\n\n var _newSelectedState = latestSelector.current(newStoreState);\n\n if (equalityFn(_newSelectedState, latestSelectedState.current)) {\n return;\n }\n\n latestSelectedState.current = _newSelectedState;\n latestStoreState.current = newStoreState;\n } catch (err) {\n // we ignore all errors here, since when the component\n // is re-rendered, the selectors are called again, and\n // will throw again, if neither props nor store state\n // changed\n latestSubscriptionCallbackError.current = err;\n }\n\n forceRender();\n }\n\n subscription.onStateChange = checkForUpdates;\n subscription.trySubscribe();\n checkForUpdates();\n return function () {\n return subscription.tryUnsubscribe();\n };\n }, [store, subscription]);\n return selectedState;\n}\n/**\r\n * Hook factory, which creates a `useSelector` hook bound to a given context.\r\n *\r\n * @param {React.Context} [context=ReactReduxContext] Context passed to your ``.\r\n * @returns {Function} A `useSelector` hook bound to the specified context.\r\n */\n\n\nexport function createSelectorHook(context) {\n if (context === void 0) {\n context = ReactReduxContext;\n }\n\n var useReduxContext = context === ReactReduxContext ? useDefaultReduxContext : function () {\n return useContext(context);\n };\n return function useSelector(selector, equalityFn) {\n if (equalityFn === void 0) {\n equalityFn = refEquality;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n if (!selector) {\n throw new Error(\"You must pass a selector to useSelector\");\n }\n\n if (typeof selector !== 'function') {\n throw new Error(\"You must pass a function as a selector to useSelector\");\n }\n\n if (typeof equalityFn !== 'function') {\n throw new Error(\"You must pass a function as an equality function to useSelector\");\n }\n }\n\n var _useReduxContext = useReduxContext(),\n store = _useReduxContext.store,\n contextSub = _useReduxContext.subscription;\n\n var selectedState = useSelectorWithStoreAndSubscription(selector, equalityFn, store, contextSub);\n useDebugValue(selectedState);\n return selectedState;\n };\n}\n/**\r\n * A hook to access the redux store's state. This hook takes a selector function\r\n * as an argument. The selector is called with the store state.\r\n *\r\n * This hook takes an optional equality comparison function as the second parameter\r\n * that allows you to customize the way the selected state is compared to determine\r\n * whether the component needs to be re-rendered.\r\n *\r\n * @param {Function} selector the selector function\r\n * @param {Function=} equalityFn the function that will be used to determine equality\r\n *\r\n * @returns {any} the selected state\r\n *\r\n * @example\r\n *\r\n * import React from 'react'\r\n * import { useSelector } from 'react-redux'\r\n *\r\n * export const CounterComponent = () => {\r\n * const counter = useSelector(state => state.counter)\r\n * return
{counter}
\r\n * }\r\n */\n\nexport var useSelector = /*#__PURE__*/createSelectorHook();","function _setPrototypeOf(t, e) {\n return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) {\n return t.__proto__ = e, t;\n }, _setPrototypeOf(t, e);\n}\nexport { _setPrototypeOf as default };","import setPrototypeOf from \"./setPrototypeOf.js\";\nfunction _inheritsLoose(t, o) {\n t.prototype = Object.create(o.prototype), t.prototype.constructor = t, setPrototypeOf(t, o);\n}\nexport { _inheritsLoose as default };","export * from './exports';\nimport { unstable_batchedUpdates as batch } from './utils/reactBatchedUpdates';\nimport { setBatch } from './utils/batch'; // Enable batched updates in our subscriptions for use\n// with standard React renderers (ReactDOM, React Native)\n\nsetBatch(batch);\nexport { batch };","function isAbsolute(pathname) {\n return pathname.charAt(0) === '/';\n}\n\n// About 1.5x faster than the two-arg version of Array#splice()\nfunction spliceOne(list, index) {\n for (var i = index, k = i + 1, n = list.length; k < n; i += 1, k += 1) {\n list[i] = list[k];\n }\n\n list.pop();\n}\n\n// This implementation is based heavily on node's url.parse\nfunction resolvePathname(to, from) {\n if (from === undefined) from = '';\n\n var toParts = (to && to.split('/')) || [];\n var fromParts = (from && from.split('/')) || [];\n\n var isToAbs = to && isAbsolute(to);\n var isFromAbs = from && isAbsolute(from);\n var mustEndAbs = isToAbs || isFromAbs;\n\n if (to && isAbsolute(to)) {\n // to is absolute\n fromParts = toParts;\n } else if (toParts.length) {\n // to is relative, drop the filename\n fromParts.pop();\n fromParts = fromParts.concat(toParts);\n }\n\n if (!fromParts.length) return '/';\n\n var hasTrailingSlash;\n if (fromParts.length) {\n var last = fromParts[fromParts.length - 1];\n hasTrailingSlash = last === '.' || last === '..' || last === '';\n } else {\n hasTrailingSlash = false;\n }\n\n var up = 0;\n for (var i = fromParts.length; i >= 0; i--) {\n var part = fromParts[i];\n\n if (part === '.') {\n spliceOne(fromParts, i);\n } else if (part === '..') {\n spliceOne(fromParts, i);\n up++;\n } else if (up) {\n spliceOne(fromParts, i);\n up--;\n }\n }\n\n if (!mustEndAbs) for (; up--; up) fromParts.unshift('..');\n\n if (\n mustEndAbs &&\n fromParts[0] !== '' &&\n (!fromParts[0] || !isAbsolute(fromParts[0]))\n )\n fromParts.unshift('');\n\n var result = fromParts.join('/');\n\n if (hasTrailingSlash && result.substr(-1) !== '/') result += '/';\n\n return result;\n}\n\nexport default resolvePathname;\n","var isProduction = process.env.NODE_ENV === 'production';\nvar prefix = 'Invariant failed';\nfunction invariant(condition, message) {\n if (condition) {\n return;\n }\n if (isProduction) {\n throw new Error(prefix);\n }\n var provided = typeof message === 'function' ? message() : message;\n var value = provided ? \"\".concat(prefix, \": \").concat(provided) : prefix;\n throw new Error(value);\n}\n\nexport { invariant as default };\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport resolvePathname from 'resolve-pathname';\nimport valueEqual from 'value-equal';\nimport warning from 'tiny-warning';\nimport invariant from 'tiny-invariant';\n\nfunction addLeadingSlash(path) {\n return path.charAt(0) === '/' ? path : '/' + path;\n}\nfunction stripLeadingSlash(path) {\n return path.charAt(0) === '/' ? path.substr(1) : path;\n}\nfunction hasBasename(path, prefix) {\n return path.toLowerCase().indexOf(prefix.toLowerCase()) === 0 && '/?#'.indexOf(path.charAt(prefix.length)) !== -1;\n}\nfunction stripBasename(path, prefix) {\n return hasBasename(path, prefix) ? path.substr(prefix.length) : path;\n}\nfunction stripTrailingSlash(path) {\n return path.charAt(path.length - 1) === '/' ? path.slice(0, -1) : path;\n}\nfunction parsePath(path) {\n var pathname = path || '/';\n var search = '';\n var hash = '';\n var hashIndex = pathname.indexOf('#');\n\n if (hashIndex !== -1) {\n hash = pathname.substr(hashIndex);\n pathname = pathname.substr(0, hashIndex);\n }\n\n var searchIndex = pathname.indexOf('?');\n\n if (searchIndex !== -1) {\n search = pathname.substr(searchIndex);\n pathname = pathname.substr(0, searchIndex);\n }\n\n return {\n pathname: pathname,\n search: search === '?' ? '' : search,\n hash: hash === '#' ? '' : hash\n };\n}\nfunction createPath(location) {\n var pathname = location.pathname,\n search = location.search,\n hash = location.hash;\n var path = pathname || '/';\n if (search && search !== '?') path += search.charAt(0) === '?' ? search : \"?\" + search;\n if (hash && hash !== '#') path += hash.charAt(0) === '#' ? hash : \"#\" + hash;\n return path;\n}\n\nfunction createLocation(path, state, key, currentLocation) {\n var location;\n\n if (typeof path === 'string') {\n // Two-arg form: push(path, state)\n location = parsePath(path);\n location.state = state;\n } else {\n // One-arg form: push(location)\n location = _extends({}, path);\n if (location.pathname === undefined) location.pathname = '';\n\n if (location.search) {\n if (location.search.charAt(0) !== '?') location.search = '?' + location.search;\n } else {\n location.search = '';\n }\n\n if (location.hash) {\n if (location.hash.charAt(0) !== '#') location.hash = '#' + location.hash;\n } else {\n location.hash = '';\n }\n\n if (state !== undefined && location.state === undefined) location.state = state;\n }\n\n try {\n location.pathname = decodeURI(location.pathname);\n } catch (e) {\n if (e instanceof URIError) {\n throw new URIError('Pathname \"' + location.pathname + '\" could not be decoded. ' + 'This is likely caused by an invalid percent-encoding.');\n } else {\n throw e;\n }\n }\n\n if (key) location.key = key;\n\n if (currentLocation) {\n // Resolve incomplete/relative pathname relative to current location.\n if (!location.pathname) {\n location.pathname = currentLocation.pathname;\n } else if (location.pathname.charAt(0) !== '/') {\n location.pathname = resolvePathname(location.pathname, currentLocation.pathname);\n }\n } else {\n // When there is no prior location and pathname is empty, set it to /\n if (!location.pathname) {\n location.pathname = '/';\n }\n }\n\n return location;\n}\nfunction locationsAreEqual(a, b) {\n return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash && a.key === b.key && valueEqual(a.state, b.state);\n}\n\nfunction createTransitionManager() {\n var prompt = null;\n\n function setPrompt(nextPrompt) {\n process.env.NODE_ENV !== \"production\" ? warning(prompt == null, 'A history supports only one prompt at a time') : void 0;\n prompt = nextPrompt;\n return function () {\n if (prompt === nextPrompt) prompt = null;\n };\n }\n\n function confirmTransitionTo(location, action, getUserConfirmation, callback) {\n // TODO: If another transition starts while we're still confirming\n // the previous one, we may end up in a weird state. Figure out the\n // best way to handle this.\n if (prompt != null) {\n var result = typeof prompt === 'function' ? prompt(location, action) : prompt;\n\n if (typeof result === 'string') {\n if (typeof getUserConfirmation === 'function') {\n getUserConfirmation(result, callback);\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'A history needs a getUserConfirmation function in order to use a prompt message') : void 0;\n callback(true);\n }\n } else {\n // Return false from a transition hook to cancel the transition.\n callback(result !== false);\n }\n } else {\n callback(true);\n }\n }\n\n var listeners = [];\n\n function appendListener(fn) {\n var isActive = true;\n\n function listener() {\n if (isActive) fn.apply(void 0, arguments);\n }\n\n listeners.push(listener);\n return function () {\n isActive = false;\n listeners = listeners.filter(function (item) {\n return item !== listener;\n });\n };\n }\n\n function notifyListeners() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n listeners.forEach(function (listener) {\n return listener.apply(void 0, args);\n });\n }\n\n return {\n setPrompt: setPrompt,\n confirmTransitionTo: confirmTransitionTo,\n appendListener: appendListener,\n notifyListeners: notifyListeners\n };\n}\n\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\nfunction getConfirmation(message, callback) {\n callback(window.confirm(message)); // eslint-disable-line no-alert\n}\n/**\n * Returns true if the HTML5 history API is supported. Taken from Modernizr.\n *\n * https://github.com/Modernizr/Modernizr/blob/master/LICENSE\n * https://github.com/Modernizr/Modernizr/blob/master/feature-detects/history.js\n * changed to avoid false negatives for Windows Phones: https://github.com/reactjs/react-router/issues/586\n */\n\nfunction supportsHistory() {\n var ua = window.navigator.userAgent;\n if ((ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) && ua.indexOf('Mobile Safari') !== -1 && ua.indexOf('Chrome') === -1 && ua.indexOf('Windows Phone') === -1) return false;\n return window.history && 'pushState' in window.history;\n}\n/**\n * Returns true if browser fires popstate on hash change.\n * IE10 and IE11 do not.\n */\n\nfunction supportsPopStateOnHashChange() {\n return window.navigator.userAgent.indexOf('Trident') === -1;\n}\n/**\n * Returns false if using go(n) with hash history causes a full page reload.\n */\n\nfunction supportsGoWithoutReloadUsingHash() {\n return window.navigator.userAgent.indexOf('Firefox') === -1;\n}\n/**\n * Returns true if a given popstate event is an extraneous WebKit event.\n * Accounts for the fact that Chrome on iOS fires real popstate events\n * containing undefined state when pressing the back button.\n */\n\nfunction isExtraneousPopstateEvent(event) {\n return event.state === undefined && navigator.userAgent.indexOf('CriOS') === -1;\n}\n\nvar PopStateEvent = 'popstate';\nvar HashChangeEvent = 'hashchange';\n\nfunction getHistoryState() {\n try {\n return window.history.state || {};\n } catch (e) {\n // IE 11 sometimes throws when accessing window.history.state\n // See https://github.com/ReactTraining/history/pull/289\n return {};\n }\n}\n/**\n * Creates a history object that uses the HTML5 history API including\n * pushState, replaceState, and the popstate event.\n */\n\n\nfunction createBrowserHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n !canUseDOM ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Browser history needs a DOM') : invariant(false) : void 0;\n var globalHistory = window.history;\n var canUseHistory = supportsHistory();\n var needsHashChangeListener = !supportsPopStateOnHashChange();\n var _props = props,\n _props$forceRefresh = _props.forceRefresh,\n forceRefresh = _props$forceRefresh === void 0 ? false : _props$forceRefresh,\n _props$getUserConfirm = _props.getUserConfirmation,\n getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm,\n _props$keyLength = _props.keyLength,\n keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;\n var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n\n function getDOMLocation(historyState) {\n var _ref = historyState || {},\n key = _ref.key,\n state = _ref.state;\n\n var _window$location = window.location,\n pathname = _window$location.pathname,\n search = _window$location.search,\n hash = _window$location.hash;\n var path = pathname + search + hash;\n process.env.NODE_ENV !== \"production\" ? warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".') : void 0;\n if (basename) path = stripBasename(path, basename);\n return createLocation(path, state, key);\n }\n\n function createKey() {\n return Math.random().toString(36).substr(2, keyLength);\n }\n\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = globalHistory.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n function handlePopState(event) {\n // Ignore extraneous popstate events in WebKit.\n if (isExtraneousPopstateEvent(event)) return;\n handlePop(getDOMLocation(event.state));\n }\n\n function handleHashChange() {\n handlePop(getDOMLocation(getHistoryState()));\n }\n\n var forceNextPop = false;\n\n function handlePop(location) {\n if (forceNextPop) {\n forceNextPop = false;\n setState();\n } else {\n var action = 'POP';\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location\n });\n } else {\n revertPop(location);\n }\n });\n }\n }\n\n function revertPop(fromLocation) {\n var toLocation = history.location; // TODO: We could probably make this more reliable by\n // keeping a list of keys we've seen in sessionStorage.\n // Instead, we just default to 0 for keys we don't know.\n\n var toIndex = allKeys.indexOf(toLocation.key);\n if (toIndex === -1) toIndex = 0;\n var fromIndex = allKeys.indexOf(fromLocation.key);\n if (fromIndex === -1) fromIndex = 0;\n var delta = toIndex - fromIndex;\n\n if (delta) {\n forceNextPop = true;\n go(delta);\n }\n }\n\n var initialLocation = getDOMLocation(getHistoryState());\n var allKeys = [initialLocation.key]; // Public interface\n\n function createHref(location) {\n return basename + createPath(location);\n }\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var href = createHref(location);\n var key = location.key,\n state = location.state;\n\n if (canUseHistory) {\n globalHistory.pushState({\n key: key,\n state: state\n }, null, href);\n\n if (forceRefresh) {\n window.location.href = href;\n } else {\n var prevIndex = allKeys.indexOf(history.location.key);\n var nextKeys = allKeys.slice(0, prevIndex + 1);\n nextKeys.push(location.key);\n allKeys = nextKeys;\n setState({\n action: action,\n location: location\n });\n }\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Browser history cannot push state in browsers that do not support HTML5 history') : void 0;\n window.location.href = href;\n }\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var href = createHref(location);\n var key = location.key,\n state = location.state;\n\n if (canUseHistory) {\n globalHistory.replaceState({\n key: key,\n state: state\n }, null, href);\n\n if (forceRefresh) {\n window.location.replace(href);\n } else {\n var prevIndex = allKeys.indexOf(history.location.key);\n if (prevIndex !== -1) allKeys[prevIndex] = location.key;\n setState({\n action: action,\n location: location\n });\n }\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Browser history cannot replace state in browsers that do not support HTML5 history') : void 0;\n window.location.replace(href);\n }\n });\n }\n\n function go(n) {\n globalHistory.go(n);\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n var listenerCount = 0;\n\n function checkDOMListeners(delta) {\n listenerCount += delta;\n\n if (listenerCount === 1 && delta === 1) {\n window.addEventListener(PopStateEvent, handlePopState);\n if (needsHashChangeListener) window.addEventListener(HashChangeEvent, handleHashChange);\n } else if (listenerCount === 0) {\n window.removeEventListener(PopStateEvent, handlePopState);\n if (needsHashChangeListener) window.removeEventListener(HashChangeEvent, handleHashChange);\n }\n }\n\n var isBlocked = false;\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n var unblock = transitionManager.setPrompt(prompt);\n\n if (!isBlocked) {\n checkDOMListeners(1);\n isBlocked = true;\n }\n\n return function () {\n if (isBlocked) {\n isBlocked = false;\n checkDOMListeners(-1);\n }\n\n return unblock();\n };\n }\n\n function listen(listener) {\n var unlisten = transitionManager.appendListener(listener);\n checkDOMListeners(1);\n return function () {\n checkDOMListeners(-1);\n unlisten();\n };\n }\n\n var history = {\n length: globalHistory.length,\n action: 'POP',\n location: initialLocation,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n block: block,\n listen: listen\n };\n return history;\n}\n\nvar HashChangeEvent$1 = 'hashchange';\nvar HashPathCoders = {\n hashbang: {\n encodePath: function encodePath(path) {\n return path.charAt(0) === '!' ? path : '!/' + stripLeadingSlash(path);\n },\n decodePath: function decodePath(path) {\n return path.charAt(0) === '!' ? path.substr(1) : path;\n }\n },\n noslash: {\n encodePath: stripLeadingSlash,\n decodePath: addLeadingSlash\n },\n slash: {\n encodePath: addLeadingSlash,\n decodePath: addLeadingSlash\n }\n};\n\nfunction stripHash(url) {\n var hashIndex = url.indexOf('#');\n return hashIndex === -1 ? url : url.slice(0, hashIndex);\n}\n\nfunction getHashPath() {\n // We can't use window.location.hash here because it's not\n // consistent across browsers - Firefox will pre-decode it!\n var href = window.location.href;\n var hashIndex = href.indexOf('#');\n return hashIndex === -1 ? '' : href.substring(hashIndex + 1);\n}\n\nfunction pushHashPath(path) {\n window.location.hash = path;\n}\n\nfunction replaceHashPath(path) {\n window.location.replace(stripHash(window.location.href) + '#' + path);\n}\n\nfunction createHashHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n !canUseDOM ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Hash history needs a DOM') : invariant(false) : void 0;\n var globalHistory = window.history;\n var canGoWithoutReload = supportsGoWithoutReloadUsingHash();\n var _props = props,\n _props$getUserConfirm = _props.getUserConfirmation,\n getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm,\n _props$hashType = _props.hashType,\n hashType = _props$hashType === void 0 ? 'slash' : _props$hashType;\n var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n var _HashPathCoders$hashT = HashPathCoders[hashType],\n encodePath = _HashPathCoders$hashT.encodePath,\n decodePath = _HashPathCoders$hashT.decodePath;\n\n function getDOMLocation() {\n var path = decodePath(getHashPath());\n process.env.NODE_ENV !== \"production\" ? warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".') : void 0;\n if (basename) path = stripBasename(path, basename);\n return createLocation(path);\n }\n\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = globalHistory.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n var forceNextPop = false;\n var ignorePath = null;\n\n function locationsAreEqual$$1(a, b) {\n return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash;\n }\n\n function handleHashChange() {\n var path = getHashPath();\n var encodedPath = encodePath(path);\n\n if (path !== encodedPath) {\n // Ensure we always have a properly-encoded hash.\n replaceHashPath(encodedPath);\n } else {\n var location = getDOMLocation();\n var prevLocation = history.location;\n if (!forceNextPop && locationsAreEqual$$1(prevLocation, location)) return; // A hashchange doesn't always == location change.\n\n if (ignorePath === createPath(location)) return; // Ignore this change; we already setState in push/replace.\n\n ignorePath = null;\n handlePop(location);\n }\n }\n\n function handlePop(location) {\n if (forceNextPop) {\n forceNextPop = false;\n setState();\n } else {\n var action = 'POP';\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location\n });\n } else {\n revertPop(location);\n }\n });\n }\n }\n\n function revertPop(fromLocation) {\n var toLocation = history.location; // TODO: We could probably make this more reliable by\n // keeping a list of paths we've seen in sessionStorage.\n // Instead, we just default to 0 for paths we don't know.\n\n var toIndex = allPaths.lastIndexOf(createPath(toLocation));\n if (toIndex === -1) toIndex = 0;\n var fromIndex = allPaths.lastIndexOf(createPath(fromLocation));\n if (fromIndex === -1) fromIndex = 0;\n var delta = toIndex - fromIndex;\n\n if (delta) {\n forceNextPop = true;\n go(delta);\n }\n } // Ensure the hash is encoded properly before doing anything else.\n\n\n var path = getHashPath();\n var encodedPath = encodePath(path);\n if (path !== encodedPath) replaceHashPath(encodedPath);\n var initialLocation = getDOMLocation();\n var allPaths = [createPath(initialLocation)]; // Public interface\n\n function createHref(location) {\n var baseTag = document.querySelector('base');\n var href = '';\n\n if (baseTag && baseTag.getAttribute('href')) {\n href = stripHash(window.location.href);\n }\n\n return href + '#' + encodePath(basename + createPath(location));\n }\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Hash history cannot push state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, undefined, undefined, history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var path = createPath(location);\n var encodedPath = encodePath(basename + path);\n var hashChanged = getHashPath() !== encodedPath;\n\n if (hashChanged) {\n // We cannot tell if a hashchange was caused by a PUSH, so we'd\n // rather setState here and ignore the hashchange. The caveat here\n // is that other hash histories in the page will consider it a POP.\n ignorePath = path;\n pushHashPath(encodedPath);\n var prevIndex = allPaths.lastIndexOf(createPath(history.location));\n var nextPaths = allPaths.slice(0, prevIndex + 1);\n nextPaths.push(path);\n allPaths = nextPaths;\n setState({\n action: action,\n location: location\n });\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'Hash history cannot PUSH the same path; a new entry will not be added to the history stack') : void 0;\n setState();\n }\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Hash history cannot replace state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, undefined, undefined, history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var path = createPath(location);\n var encodedPath = encodePath(basename + path);\n var hashChanged = getHashPath() !== encodedPath;\n\n if (hashChanged) {\n // We cannot tell if a hashchange was caused by a REPLACE, so we'd\n // rather setState here and ignore the hashchange. The caveat here\n // is that other hash histories in the page will consider it a POP.\n ignorePath = path;\n replaceHashPath(encodedPath);\n }\n\n var prevIndex = allPaths.indexOf(createPath(history.location));\n if (prevIndex !== -1) allPaths[prevIndex] = path;\n setState({\n action: action,\n location: location\n });\n });\n }\n\n function go(n) {\n process.env.NODE_ENV !== \"production\" ? warning(canGoWithoutReload, 'Hash history go(n) causes a full page reload in this browser') : void 0;\n globalHistory.go(n);\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n var listenerCount = 0;\n\n function checkDOMListeners(delta) {\n listenerCount += delta;\n\n if (listenerCount === 1 && delta === 1) {\n window.addEventListener(HashChangeEvent$1, handleHashChange);\n } else if (listenerCount === 0) {\n window.removeEventListener(HashChangeEvent$1, handleHashChange);\n }\n }\n\n var isBlocked = false;\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n var unblock = transitionManager.setPrompt(prompt);\n\n if (!isBlocked) {\n checkDOMListeners(1);\n isBlocked = true;\n }\n\n return function () {\n if (isBlocked) {\n isBlocked = false;\n checkDOMListeners(-1);\n }\n\n return unblock();\n };\n }\n\n function listen(listener) {\n var unlisten = transitionManager.appendListener(listener);\n checkDOMListeners(1);\n return function () {\n checkDOMListeners(-1);\n unlisten();\n };\n }\n\n var history = {\n length: globalHistory.length,\n action: 'POP',\n location: initialLocation,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n block: block,\n listen: listen\n };\n return history;\n}\n\nfunction clamp(n, lowerBound, upperBound) {\n return Math.min(Math.max(n, lowerBound), upperBound);\n}\n/**\n * Creates a history object that stores locations in memory.\n */\n\n\nfunction createMemoryHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n var _props = props,\n getUserConfirmation = _props.getUserConfirmation,\n _props$initialEntries = _props.initialEntries,\n initialEntries = _props$initialEntries === void 0 ? ['/'] : _props$initialEntries,\n _props$initialIndex = _props.initialIndex,\n initialIndex = _props$initialIndex === void 0 ? 0 : _props$initialIndex,\n _props$keyLength = _props.keyLength,\n keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = history.entries.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n function createKey() {\n return Math.random().toString(36).substr(2, keyLength);\n }\n\n var index = clamp(initialIndex, 0, initialEntries.length - 1);\n var entries = initialEntries.map(function (entry) {\n return typeof entry === 'string' ? createLocation(entry, undefined, createKey()) : createLocation(entry, undefined, entry.key || createKey());\n }); // Public interface\n\n var createHref = createPath;\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var prevIndex = history.index;\n var nextIndex = prevIndex + 1;\n var nextEntries = history.entries.slice(0);\n\n if (nextEntries.length > nextIndex) {\n nextEntries.splice(nextIndex, nextEntries.length - nextIndex, location);\n } else {\n nextEntries.push(location);\n }\n\n setState({\n action: action,\n location: location,\n index: nextIndex,\n entries: nextEntries\n });\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n history.entries[history.index] = location;\n setState({\n action: action,\n location: location\n });\n });\n }\n\n function go(n) {\n var nextIndex = clamp(history.index + n, 0, history.entries.length - 1);\n var action = 'POP';\n var location = history.entries[nextIndex];\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location,\n index: nextIndex\n });\n } else {\n // Mimic the behavior of DOM histories by\n // causing a render after a cancelled POP.\n setState();\n }\n });\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n function canGo(n) {\n var nextIndex = history.index + n;\n return nextIndex >= 0 && nextIndex < history.entries.length;\n }\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n return transitionManager.setPrompt(prompt);\n }\n\n function listen(listener) {\n return transitionManager.appendListener(listener);\n }\n\n var history = {\n length: entries.length,\n action: 'POP',\n location: entries[index],\n index: index,\n entries: entries,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n canGo: canGo,\n block: block,\n listen: listen\n };\n return history;\n}\n\nexport { createBrowserHistory, createHashHistory, createMemoryHistory, createLocation, locationsAreEqual, parsePath, createPath };\n","function _objectWithoutPropertiesLoose(r, e) {\n if (null == r) return {};\n var t = {};\n for (var n in r) if ({}.hasOwnProperty.call(r, n)) {\n if (-1 !== e.indexOf(n)) continue;\n t[n] = r[n];\n }\n return t;\n}\nexport { _objectWithoutPropertiesLoose as default };","// MIT License\n// Copyright (c) 2019-present StringEpsilon \n// Copyright (c) 2017-2019 James Kyle \n// https://github.com/StringEpsilon/mini-create-react-context\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport warning from \"tiny-warning\";\n\nconst MAX_SIGNED_31_BIT_INT = 1073741823;\n\nconst commonjsGlobal =\n typeof globalThis !== \"undefined\" // 'global proper'\n ? // eslint-disable-next-line no-undef\n globalThis\n : typeof window !== \"undefined\"\n ? window // Browser\n : typeof global !== \"undefined\"\n ? global // node.js\n : {};\n\nfunction getUniqueId() {\n let key = \"__global_unique_id__\";\n return (commonjsGlobal[key] = (commonjsGlobal[key] || 0) + 1);\n}\n\n// Inlined Object.is polyfill.\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\nfunction objectIs(x, y) {\n if (x === y) {\n return x !== 0 || 1 / x === 1 / y;\n } else {\n // eslint-disable-next-line no-self-compare\n return x !== x && y !== y;\n }\n}\n\nfunction createEventEmitter(value) {\n let handlers = [];\n return {\n on(handler) {\n handlers.push(handler);\n },\n\n off(handler) {\n handlers = handlers.filter(h => h !== handler);\n },\n\n get() {\n return value;\n },\n\n set(newValue, changedBits) {\n value = newValue;\n handlers.forEach(handler => handler(value, changedBits));\n }\n };\n}\n\nfunction onlyChild(children) {\n return Array.isArray(children) ? children[0] : children;\n}\n\nexport default function createReactContext(defaultValue, calculateChangedBits) {\n const contextProp = \"__create-react-context-\" + getUniqueId() + \"__\";\n\n class Provider extends React.Component {\n emitter = createEventEmitter(this.props.value);\n\n static childContextTypes = {\n [contextProp]: PropTypes.object.isRequired\n };\n\n getChildContext() {\n return {\n [contextProp]: this.emitter\n };\n }\n\n componentWillReceiveProps(nextProps) {\n if (this.props.value !== nextProps.value) {\n let oldValue = this.props.value;\n let newValue = nextProps.value;\n let changedBits;\n\n if (objectIs(oldValue, newValue)) {\n changedBits = 0; // No change\n } else {\n changedBits =\n typeof calculateChangedBits === \"function\"\n ? calculateChangedBits(oldValue, newValue)\n : MAX_SIGNED_31_BIT_INT;\n if (process.env.NODE_ENV !== \"production\") {\n warning(\n (changedBits & MAX_SIGNED_31_BIT_INT) === changedBits,\n \"calculateChangedBits: Expected the return value to be a \" +\n \"31-bit integer. Instead received: \" +\n changedBits\n );\n }\n\n changedBits |= 0;\n\n if (changedBits !== 0) {\n this.emitter.set(nextProps.value, changedBits);\n }\n }\n }\n }\n\n render() {\n return this.props.children;\n }\n }\n\n class Consumer extends React.Component {\n static contextTypes = {\n [contextProp]: PropTypes.object\n };\n\n observedBits;\n\n state = {\n value: this.getValue()\n };\n\n componentWillReceiveProps(nextProps) {\n let { observedBits } = nextProps;\n this.observedBits =\n observedBits === undefined || observedBits === null\n ? MAX_SIGNED_31_BIT_INT // Subscribe to all changes by default\n : observedBits;\n }\n\n componentDidMount() {\n if (this.context[contextProp]) {\n this.context[contextProp].on(this.onUpdate);\n }\n let { observedBits } = this.props;\n this.observedBits =\n observedBits === undefined || observedBits === null\n ? MAX_SIGNED_31_BIT_INT // Subscribe to all changes by default\n : observedBits;\n }\n\n componentWillUnmount() {\n if (this.context[contextProp]) {\n this.context[contextProp].off(this.onUpdate);\n }\n }\n\n getValue() {\n if (this.context[contextProp]) {\n return this.context[contextProp].get();\n } else {\n return defaultValue;\n }\n }\n\n onUpdate = (newValue, changedBits) => {\n const observedBits = this.observedBits | 0;\n if ((observedBits & changedBits) !== 0) {\n this.setState({ value: this.getValue() });\n }\n };\n\n render() {\n return onlyChild(this.props.children)(this.state.value);\n }\n }\n\n return {\n Provider,\n Consumer\n };\n}\n","// MIT License\n// Copyright (c) 2019-present StringEpsilon \n// Copyright (c) 2017-2019 James Kyle \n// https://github.com/StringEpsilon/mini-create-react-context\nimport React from \"react\";\nimport createReactContext from \"./miniCreateReactContext\";\n\nexport default React.createContext || createReactContext;\n","// TODO: Replace with React.createContext once we can assume React 16+\nimport createContext from \"./createContext\";\n\nconst createNamedContext = name => {\n const context = createContext();\n context.displayName = name;\n\n return context;\n};\n\nexport default createNamedContext;\n","import createNamedContext from \"./createNamedContext\";\n\nconst historyContext = /*#__PURE__*/ createNamedContext(\"Router-History\");\nexport default historyContext;\n","import createNamedContext from \"./createNamedContext\";\n\nconst context = /*#__PURE__*/ createNamedContext(\"Router\");\nexport default context;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport warning from \"tiny-warning\";\n\nimport HistoryContext from \"./HistoryContext.js\";\nimport RouterContext from \"./RouterContext.js\";\n\n/**\n * The public API for putting history on context.\n */\nclass Router extends React.Component {\n static computeRootMatch(pathname) {\n return { path: \"/\", url: \"/\", params: {}, isExact: pathname === \"/\" };\n }\n\n constructor(props) {\n super(props);\n\n this.state = {\n location: props.history.location\n };\n\n // This is a bit of a hack. We have to start listening for location\n // changes here in the constructor in case there are any s\n // on the initial render. If there are, they will replace/push when\n // they mount and since cDM fires in children before parents, we may\n // get a new location before the is mounted.\n this._isMounted = false;\n this._pendingLocation = null;\n\n if (!props.staticContext) {\n this.unlisten = props.history.listen(location => {\n this._pendingLocation = location;\n });\n }\n }\n\n componentDidMount() {\n this._isMounted = true;\n\n if (this.unlisten) {\n // Any pre-mount location changes have been captured at\n // this point, so unregister the listener.\n this.unlisten();\n }\n if (!this.props.staticContext) {\n this.unlisten = this.props.history.listen(location => {\n if (this._isMounted) {\n this.setState({ location });\n }\n });\n }\n if (this._pendingLocation) {\n this.setState({ location: this._pendingLocation });\n }\n }\n\n componentWillUnmount() {\n if (this.unlisten) {\n this.unlisten();\n this._isMounted = false;\n this._pendingLocation = null;\n }\n }\n\n render() {\n return (\n \n \n \n );\n }\n}\n\nif (__DEV__) {\n Router.propTypes = {\n children: PropTypes.node,\n history: PropTypes.object.isRequired,\n staticContext: PropTypes.object\n };\n\n Router.prototype.componentDidUpdate = function(prevProps) {\n warning(\n prevProps.history === this.props.history,\n \"You cannot change \"\n );\n };\n}\n\nexport default Router;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { createMemoryHistory as createHistory } from \"history\";\nimport warning from \"tiny-warning\";\n\nimport Router from \"./Router.js\";\n\n/**\n * The public API for a that stores location in memory.\n */\nclass MemoryRouter extends React.Component {\n history = createHistory(this.props);\n\n render() {\n return ;\n }\n}\n\nif (__DEV__) {\n MemoryRouter.propTypes = {\n initialEntries: PropTypes.array,\n initialIndex: PropTypes.number,\n getUserConfirmation: PropTypes.func,\n keyLength: PropTypes.number,\n children: PropTypes.node\n };\n\n MemoryRouter.prototype.componentDidMount = function() {\n warning(\n !this.props.history,\n \" ignores the history prop. To use a custom history, \" +\n \"use `import { Router }` instead of `import { MemoryRouter as Router }`.\"\n );\n };\n}\n\nexport default MemoryRouter;\n","import React from \"react\";\n\nclass Lifecycle extends React.Component {\n componentDidMount() {\n if (this.props.onMount) this.props.onMount.call(this, this);\n }\n\n componentDidUpdate(prevProps) {\n if (this.props.onUpdate) this.props.onUpdate.call(this, this, prevProps);\n }\n\n componentWillUnmount() {\n if (this.props.onUnmount) this.props.onUnmount.call(this, this);\n }\n\n render() {\n return null;\n }\n}\n\nexport default Lifecycle;\n","import pathToRegexp from \"path-to-regexp\";\n\nconst cache = {};\nconst cacheLimit = 10000;\nlet cacheCount = 0;\n\nfunction compilePath(path, options) {\n const cacheKey = `${options.end}${options.strict}${options.sensitive}`;\n const pathCache = cache[cacheKey] || (cache[cacheKey] = {});\n\n if (pathCache[path]) return pathCache[path];\n\n const keys = [];\n const regexp = pathToRegexp(path, keys, options);\n const result = { regexp, keys };\n\n if (cacheCount < cacheLimit) {\n pathCache[path] = result;\n cacheCount++;\n }\n\n return result;\n}\n\n/**\n * Public API for matching a URL pathname to a path.\n */\nfunction matchPath(pathname, options = {}) {\n if (typeof options === \"string\" || Array.isArray(options)) {\n options = { path: options };\n }\n\n const { path, exact = false, strict = false, sensitive = false } = options;\n\n const paths = [].concat(path);\n\n return paths.reduce((matched, path) => {\n if (!path && path !== \"\") return null;\n if (matched) return matched;\n\n const { regexp, keys } = compilePath(path, {\n end: exact,\n strict,\n sensitive\n });\n const match = regexp.exec(pathname);\n\n if (!match) return null;\n\n const [url, ...values] = match;\n const isExact = pathname === url;\n\n if (exact && !isExact) return null;\n\n return {\n path, // the path used to match\n url: path === \"/\" && url === \"\" ? \"/\" : url, // the matched portion of the URL\n isExact, // whether or not we matched exactly\n params: keys.reduce((memo, key, index) => {\n memo[key.name] = values[index];\n return memo;\n }, {})\n };\n }, null);\n}\n\nexport default matchPath;\n","import React from \"react\";\nimport { isValidElementType } from \"react-is\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport warning from \"tiny-warning\";\n\nimport RouterContext from \"./RouterContext.js\";\nimport matchPath from \"./matchPath.js\";\n\nfunction isEmptyChildren(children) {\n return React.Children.count(children) === 0;\n}\n\nfunction evalChildrenDev(children, props, path) {\n const value = children(props);\n\n warning(\n value !== undefined,\n \"You returned `undefined` from the `children` function of \" +\n `, but you ` +\n \"should have returned a React element or `null`\"\n );\n\n return value || null;\n}\n\n/**\n * The public API for matching a single path and rendering.\n */\nclass Route extends React.Component {\n render() {\n return (\n \n {context => {\n invariant(context, \"You should not use outside a \");\n\n const location = this.props.location || context.location;\n const match = this.props.computedMatch\n ? this.props.computedMatch // already computed the match for us\n : this.props.path\n ? matchPath(location.pathname, this.props)\n : context.match;\n\n const props = { ...context, location, match };\n\n let { children, component, render } = this.props;\n\n // Preact uses an empty array as children by\n // default, so use null if that's the case.\n if (Array.isArray(children) && isEmptyChildren(children)) {\n children = null;\n }\n\n return (\n \n {props.match\n ? children\n ? typeof children === \"function\"\n ? __DEV__\n ? evalChildrenDev(children, props, this.props.path)\n : children(props)\n : children\n : component\n ? React.createElement(component, props)\n : render\n ? render(props)\n : null\n : typeof children === \"function\"\n ? __DEV__\n ? evalChildrenDev(children, props, this.props.path)\n : children(props)\n : null}\n \n );\n }}\n \n );\n }\n}\n\nif (__DEV__) {\n Route.propTypes = {\n children: PropTypes.oneOfType([PropTypes.func, PropTypes.node]),\n component: (props, propName) => {\n if (props[propName] && !isValidElementType(props[propName])) {\n return new Error(\n `Invalid prop 'component' supplied to 'Route': the prop is not a valid React component`\n );\n }\n },\n exact: PropTypes.bool,\n location: PropTypes.object,\n path: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string)\n ]),\n render: PropTypes.func,\n sensitive: PropTypes.bool,\n strict: PropTypes.bool\n };\n\n Route.prototype.componentDidMount = function() {\n warning(\n !(\n this.props.children &&\n !isEmptyChildren(this.props.children) &&\n this.props.component\n ),\n \"You should not use and in the same route; will be ignored\"\n );\n\n warning(\n !(\n this.props.children &&\n !isEmptyChildren(this.props.children) &&\n this.props.render\n ),\n \"You should not use and in the same route; will be ignored\"\n );\n\n warning(\n !(this.props.component && this.props.render),\n \"You should not use and in the same route; will be ignored\"\n );\n };\n\n Route.prototype.componentDidUpdate = function(prevProps) {\n warning(\n !(this.props.location && !prevProps.location),\n ' elements should not change from uncontrolled to controlled (or vice versa). You initially used no \"location\" prop and then provided one on a subsequent render.'\n );\n\n warning(\n !(!this.props.location && prevProps.location),\n ' elements should not change from controlled to uncontrolled (or vice versa). You provided a \"location\" prop initially but omitted it on a subsequent render.'\n );\n };\n}\n\nexport default Route;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { createLocation, createPath } from \"history\";\nimport invariant from \"tiny-invariant\";\nimport warning from \"tiny-warning\";\n\nimport Router from \"./Router.js\";\n\nfunction addLeadingSlash(path) {\n return path.charAt(0) === \"/\" ? path : \"/\" + path;\n}\n\nfunction addBasename(basename, location) {\n if (!basename) return location;\n\n return {\n ...location,\n pathname: addLeadingSlash(basename) + location.pathname\n };\n}\n\nfunction stripBasename(basename, location) {\n if (!basename) return location;\n\n const base = addLeadingSlash(basename);\n\n if (location.pathname.indexOf(base) !== 0) return location;\n\n return {\n ...location,\n pathname: location.pathname.substr(base.length)\n };\n}\n\nfunction createURL(location) {\n return typeof location === \"string\" ? location : createPath(location);\n}\n\nfunction staticHandler(methodName) {\n return () => {\n invariant(false, \"You cannot %s with \", methodName);\n };\n}\n\nfunction noop() {}\n\n/**\n * The public top-level API for a \"static\" , so-called because it\n * can't actually change the current location. Instead, it just records\n * location changes in a context object. Useful mainly in testing and\n * server-rendering scenarios.\n */\nclass StaticRouter extends React.Component {\n navigateTo(location, action) {\n const { basename = \"\", context = {} } = this.props;\n context.action = action;\n context.location = addBasename(basename, createLocation(location));\n context.url = createURL(context.location);\n }\n\n handlePush = location => this.navigateTo(location, \"PUSH\");\n handleReplace = location => this.navigateTo(location, \"REPLACE\");\n handleListen = () => noop;\n handleBlock = () => noop;\n\n render() {\n const { basename = \"\", context = {}, location = \"/\", ...rest } = this.props;\n\n const history = {\n createHref: path => addLeadingSlash(basename + createURL(path)),\n action: \"POP\",\n location: stripBasename(basename, createLocation(location)),\n push: this.handlePush,\n replace: this.handleReplace,\n go: staticHandler(\"go\"),\n goBack: staticHandler(\"goBack\"),\n goForward: staticHandler(\"goForward\"),\n listen: this.handleListen,\n block: this.handleBlock\n };\n\n return ;\n }\n}\n\nif (__DEV__) {\n StaticRouter.propTypes = {\n basename: PropTypes.string,\n context: PropTypes.object,\n location: PropTypes.oneOfType([PropTypes.string, PropTypes.object])\n };\n\n StaticRouter.prototype.componentDidMount = function() {\n warning(\n !this.props.history,\n \" ignores the history prop. To use a custom history, \" +\n \"use `import { Router }` instead of `import { StaticRouter as Router }`.\"\n );\n };\n}\n\nexport default StaticRouter;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport warning from \"tiny-warning\";\n\nimport RouterContext from \"./RouterContext.js\";\nimport matchPath from \"./matchPath.js\";\n\n/**\n * The public API for rendering the first that matches.\n */\nclass Switch extends React.Component {\n render() {\n return (\n \n {context => {\n invariant(context, \"You should not use outside a \");\n\n const location = this.props.location || context.location;\n\n let element, match;\n\n // We use React.Children.forEach instead of React.Children.toArray().find()\n // here because toArray adds keys to all child elements and we do not want\n // to trigger an unmount/remount for two s that render the same\n // component at different URLs.\n React.Children.forEach(this.props.children, child => {\n if (match == null && React.isValidElement(child)) {\n element = child;\n\n const path = child.props.path || child.props.from;\n\n match = path\n ? matchPath(location.pathname, { ...child.props, path })\n : context.match;\n }\n });\n\n return match\n ? React.cloneElement(element, { location, computedMatch: match })\n : null;\n }}\n \n );\n }\n}\n\nif (__DEV__) {\n Switch.propTypes = {\n children: PropTypes.node,\n location: PropTypes.object\n };\n\n Switch.prototype.componentDidUpdate = function(prevProps) {\n warning(\n !(this.props.location && !prevProps.location),\n ' elements should not change from uncontrolled to controlled (or vice versa). You initially used no \"location\" prop and then provided one on a subsequent render.'\n );\n\n warning(\n !(!this.props.location && prevProps.location),\n ' elements should not change from controlled to uncontrolled (or vice versa). You provided a \"location\" prop initially but omitted it on a subsequent render.'\n );\n };\n}\n\nexport default Switch;\n","import React from \"react\";\nimport invariant from \"tiny-invariant\";\n\nimport RouterContext from \"./RouterContext.js\";\nimport HistoryContext from \"./HistoryContext.js\";\nimport matchPath from \"./matchPath.js\";\n\nconst useContext = React.useContext;\n\nexport function useHistory() {\n if (__DEV__) {\n invariant(\n typeof useContext === \"function\",\n \"You must use React >= 16.8 in order to use useHistory()\"\n );\n }\n\n return useContext(HistoryContext);\n}\n\nexport function useLocation() {\n if (__DEV__) {\n invariant(\n typeof useContext === \"function\",\n \"You must use React >= 16.8 in order to use useLocation()\"\n );\n }\n\n return useContext(RouterContext).location;\n}\n\nexport function useParams() {\n if (__DEV__) {\n invariant(\n typeof useContext === \"function\",\n \"You must use React >= 16.8 in order to use useParams()\"\n );\n }\n\n const match = useContext(RouterContext).match;\n return match ? match.params : {};\n}\n\nexport function useRouteMatch(path) {\n if (__DEV__) {\n invariant(\n typeof useContext === \"function\",\n \"You must use React >= 16.8 in order to use useRouteMatch()\"\n );\n }\n\n const location = useLocation();\n const match = useContext(RouterContext).match;\n return path ? matchPath(location.pathname, path) : match;\n}\n","import React from \"react\";\nimport { Router } from \"react-router\";\nimport { createBrowserHistory as createHistory } from \"history\";\nimport PropTypes from \"prop-types\";\nimport warning from \"tiny-warning\";\n\n/**\n * The public API for a that uses HTML5 history.\n */\nclass BrowserRouter extends React.Component {\n history = createHistory(this.props);\n\n render() {\n return ;\n }\n}\n\nif (__DEV__) {\n BrowserRouter.propTypes = {\n basename: PropTypes.string,\n children: PropTypes.node,\n forceRefresh: PropTypes.bool,\n getUserConfirmation: PropTypes.func,\n keyLength: PropTypes.number\n };\n\n BrowserRouter.prototype.componentDidMount = function() {\n warning(\n !this.props.history,\n \" ignores the history prop. To use a custom history, \" +\n \"use `import { Router }` instead of `import { BrowserRouter as Router }`.\"\n );\n };\n}\n\nexport default BrowserRouter;\n","import React from \"react\";\nimport { Router } from \"react-router\";\nimport { createHashHistory as createHistory } from \"history\";\nimport PropTypes from \"prop-types\";\nimport warning from \"tiny-warning\";\n\n/**\n * The public API for a that uses window.location.hash.\n */\nclass HashRouter extends React.Component {\n history = createHistory(this.props);\n\n render() {\n return ;\n }\n}\n\nif (__DEV__) {\n HashRouter.propTypes = {\n basename: PropTypes.string,\n children: PropTypes.node,\n getUserConfirmation: PropTypes.func,\n hashType: PropTypes.oneOf([\"hashbang\", \"noslash\", \"slash\"])\n };\n\n HashRouter.prototype.componentDidMount = function() {\n warning(\n !this.props.history,\n \" ignores the history prop. To use a custom history, \" +\n \"use `import { Router }` instead of `import { HashRouter as Router }`.\"\n );\n };\n}\n\nexport default HashRouter;\n","import { createLocation } from \"history\";\n\nexport const resolveToLocation = (to, currentLocation) =>\n typeof to === \"function\" ? to(currentLocation) : to;\n\nexport const normalizeToLocation = (to, currentLocation) => {\n return typeof to === \"string\"\n ? createLocation(to, null, null, currentLocation)\n : to;\n};\n","import React from \"react\";\nimport { __RouterContext as RouterContext } from \"react-router\";\nimport { createPath } from 'history';\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport {\n resolveToLocation,\n normalizeToLocation\n} from \"./utils/locationUtils.js\";\n\n// React 15 compat\nconst forwardRefShim = C => C;\nlet { forwardRef } = React;\nif (typeof forwardRef === \"undefined\") {\n forwardRef = forwardRefShim;\n}\n\nfunction isModifiedEvent(event) {\n return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n}\n\nconst LinkAnchor = forwardRef(\n (\n {\n innerRef, // TODO: deprecate\n navigate,\n onClick,\n ...rest\n },\n forwardedRef\n ) => {\n const { target } = rest;\n\n let props = {\n ...rest,\n onClick: event => {\n try {\n if (onClick) onClick(event);\n } catch (ex) {\n event.preventDefault();\n throw ex;\n }\n\n if (\n !event.defaultPrevented && // onClick prevented default\n event.button === 0 && // ignore everything but left clicks\n (!target || target === \"_self\") && // let browser handle \"target=_blank\" etc.\n !isModifiedEvent(event) // ignore clicks with modifier keys\n ) {\n event.preventDefault();\n navigate();\n }\n }\n };\n\n // React 15 compat\n if (forwardRefShim !== forwardRef) {\n props.ref = forwardedRef || innerRef;\n } else {\n props.ref = innerRef;\n }\n\n /* eslint-disable-next-line jsx-a11y/anchor-has-content */\n return ;\n }\n);\n\nif (__DEV__) {\n LinkAnchor.displayName = \"LinkAnchor\";\n}\n\n/**\n * The public API for rendering a history-aware .\n */\nconst Link = forwardRef(\n (\n {\n component = LinkAnchor,\n replace,\n to,\n innerRef, // TODO: deprecate\n ...rest\n },\n forwardedRef\n ) => {\n return (\n \n {context => {\n invariant(context, \"You should not use outside a \");\n\n const { history } = context;\n\n const location = normalizeToLocation(\n resolveToLocation(to, context.location),\n context.location\n );\n\n const href = location ? history.createHref(location) : \"\";\n const props = {\n ...rest,\n href,\n navigate() {\n const location = resolveToLocation(to, context.location);\n const isDuplicateNavigation = createPath(context.location) === createPath(normalizeToLocation(location));\n const method = (replace || isDuplicateNavigation) ? history.replace : history.push;\n\n method(location);\n }\n };\n\n // React 15 compat\n if (forwardRefShim !== forwardRef) {\n props.ref = forwardedRef || innerRef;\n } else {\n props.innerRef = innerRef;\n }\n\n return React.createElement(component, props);\n }}\n \n );\n }\n);\n\nif (__DEV__) {\n const toType = PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.object,\n PropTypes.func\n ]);\n const refType = PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.func,\n PropTypes.shape({ current: PropTypes.any })\n ]);\n\n Link.displayName = \"Link\";\n\n Link.propTypes = {\n innerRef: refType,\n onClick: PropTypes.func,\n replace: PropTypes.bool,\n target: PropTypes.string,\n to: toType.isRequired\n };\n}\n\nexport default Link;\n","import React from \"react\";\nimport { __RouterContext as RouterContext, matchPath } from \"react-router\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport Link from \"./Link.js\";\nimport {\n resolveToLocation,\n normalizeToLocation\n} from \"./utils/locationUtils.js\";\n\n// React 15 compat\nconst forwardRefShim = C => C;\nlet { forwardRef } = React;\nif (typeof forwardRef === \"undefined\") {\n forwardRef = forwardRefShim;\n}\n\nfunction joinClassnames(...classnames) {\n return classnames.filter(i => i).join(\" \");\n}\n\n/**\n * A wrapper that knows if it's \"active\" or not.\n */\nconst NavLink = forwardRef(\n (\n {\n \"aria-current\": ariaCurrent = \"page\",\n activeClassName = \"active\", // TODO: deprecate\n activeStyle, // TODO: deprecate\n className: classNameProp,\n exact,\n isActive: isActiveProp,\n location: locationProp,\n sensitive,\n strict,\n style: styleProp,\n to,\n innerRef, // TODO: deprecate\n ...rest\n },\n forwardedRef\n ) => {\n return (\n \n {context => {\n invariant(context, \"You should not use outside a \");\n\n const currentLocation = locationProp || context.location;\n const toLocation = normalizeToLocation(\n resolveToLocation(to, currentLocation),\n currentLocation\n );\n const { pathname: path } = toLocation;\n // Regex taken from: https://github.com/pillarjs/path-to-regexp/blob/master/index.js#L202\n const escapedPath =\n path && path.replace(/([.+*?=^!:${}()[\\]|/\\\\])/g, \"\\\\$1\");\n\n const match = escapedPath\n ? matchPath(currentLocation.pathname, {\n path: escapedPath,\n exact,\n sensitive,\n strict\n })\n : null;\n const isActive = !!(isActiveProp\n ? isActiveProp(match, currentLocation)\n : match);\n\n let className =\n typeof classNameProp === \"function\"\n ? classNameProp(isActive)\n : classNameProp;\n\n let style =\n typeof styleProp === \"function\" ? styleProp(isActive) : styleProp;\n\n if (isActive) {\n className = joinClassnames(className, activeClassName);\n style = { ...style, ...activeStyle };\n }\n\n const props = {\n \"aria-current\": (isActive && ariaCurrent) || null,\n className,\n style,\n to: toLocation,\n ...rest\n };\n\n // React 15 compat\n if (forwardRefShim !== forwardRef) {\n props.ref = forwardedRef || innerRef;\n } else {\n props.innerRef = innerRef;\n }\n\n return ;\n }}\n \n );\n }\n);\n\nif (__DEV__) {\n NavLink.displayName = \"NavLink\";\n\n const ariaCurrentType = PropTypes.oneOf([\n \"page\",\n \"step\",\n \"location\",\n \"date\",\n \"time\",\n \"true\",\n \"false\"\n ]);\n\n NavLink.propTypes = {\n ...Link.propTypes,\n \"aria-current\": ariaCurrentType,\n activeClassName: PropTypes.string,\n activeStyle: PropTypes.object,\n className: PropTypes.oneOfType([PropTypes.string, PropTypes.func]),\n exact: PropTypes.bool,\n isActive: PropTypes.func,\n location: PropTypes.object,\n sensitive: PropTypes.bool,\n strict: PropTypes.bool,\n style: PropTypes.oneOfType([PropTypes.object, PropTypes.func])\n };\n}\n\nexport default NavLink;\n","function stylis_min (W) {\n function M(d, c, e, h, a) {\n for (var m = 0, b = 0, v = 0, n = 0, q, g, x = 0, K = 0, k, u = k = q = 0, l = 0, r = 0, I = 0, t = 0, B = e.length, J = B - 1, y, f = '', p = '', F = '', G = '', C; l < B;) {\n g = e.charCodeAt(l);\n l === J && 0 !== b + n + v + m && (0 !== b && (g = 47 === b ? 10 : 47), n = v = m = 0, B++, J++);\n\n if (0 === b + n + v + m) {\n if (l === J && (0 < r && (f = f.replace(N, '')), 0 < f.trim().length)) {\n switch (g) {\n case 32:\n case 9:\n case 59:\n case 13:\n case 10:\n break;\n\n default:\n f += e.charAt(l);\n }\n\n g = 59;\n }\n\n switch (g) {\n case 123:\n f = f.trim();\n q = f.charCodeAt(0);\n k = 1;\n\n for (t = ++l; l < B;) {\n switch (g = e.charCodeAt(l)) {\n case 123:\n k++;\n break;\n\n case 125:\n k--;\n break;\n\n case 47:\n switch (g = e.charCodeAt(l + 1)) {\n case 42:\n case 47:\n a: {\n for (u = l + 1; u < J; ++u) {\n switch (e.charCodeAt(u)) {\n case 47:\n if (42 === g && 42 === e.charCodeAt(u - 1) && l + 2 !== u) {\n l = u + 1;\n break a;\n }\n\n break;\n\n case 10:\n if (47 === g) {\n l = u + 1;\n break a;\n }\n\n }\n }\n\n l = u;\n }\n\n }\n\n break;\n\n case 91:\n g++;\n\n case 40:\n g++;\n\n case 34:\n case 39:\n for (; l++ < J && e.charCodeAt(l) !== g;) {\n }\n\n }\n\n if (0 === k) break;\n l++;\n }\n\n k = e.substring(t, l);\n 0 === q && (q = (f = f.replace(ca, '').trim()).charCodeAt(0));\n\n switch (q) {\n case 64:\n 0 < r && (f = f.replace(N, ''));\n g = f.charCodeAt(1);\n\n switch (g) {\n case 100:\n case 109:\n case 115:\n case 45:\n r = c;\n break;\n\n default:\n r = O;\n }\n\n k = M(c, r, k, g, a + 1);\n t = k.length;\n 0 < A && (r = X(O, f, I), C = H(3, k, r, c, D, z, t, g, a, h), f = r.join(''), void 0 !== C && 0 === (t = (k = C.trim()).length) && (g = 0, k = ''));\n if (0 < t) switch (g) {\n case 115:\n f = f.replace(da, ea);\n\n case 100:\n case 109:\n case 45:\n k = f + '{' + k + '}';\n break;\n\n case 107:\n f = f.replace(fa, '$1 $2');\n k = f + '{' + k + '}';\n k = 1 === w || 2 === w && L('@' + k, 3) ? '@-webkit-' + k + '@' + k : '@' + k;\n break;\n\n default:\n k = f + k, 112 === h && (k = (p += k, ''));\n } else k = '';\n break;\n\n default:\n k = M(c, X(c, f, I), k, h, a + 1);\n }\n\n F += k;\n k = I = r = u = q = 0;\n f = '';\n g = e.charCodeAt(++l);\n break;\n\n case 125:\n case 59:\n f = (0 < r ? f.replace(N, '') : f).trim();\n if (1 < (t = f.length)) switch (0 === u && (q = f.charCodeAt(0), 45 === q || 96 < q && 123 > q) && (t = (f = f.replace(' ', ':')).length), 0 < A && void 0 !== (C = H(1, f, c, d, D, z, p.length, h, a, h)) && 0 === (t = (f = C.trim()).length) && (f = '\\x00\\x00'), q = f.charCodeAt(0), g = f.charCodeAt(1), q) {\n case 0:\n break;\n\n case 64:\n if (105 === g || 99 === g) {\n G += f + e.charAt(l);\n break;\n }\n\n default:\n 58 !== f.charCodeAt(t - 1) && (p += P(f, q, g, f.charCodeAt(2)));\n }\n I = r = u = q = 0;\n f = '';\n g = e.charCodeAt(++l);\n }\n }\n\n switch (g) {\n case 13:\n case 10:\n 47 === b ? b = 0 : 0 === 1 + q && 107 !== h && 0 < f.length && (r = 1, f += '\\x00');\n 0 < A * Y && H(0, f, c, d, D, z, p.length, h, a, h);\n z = 1;\n D++;\n break;\n\n case 59:\n case 125:\n if (0 === b + n + v + m) {\n z++;\n break;\n }\n\n default:\n z++;\n y = e.charAt(l);\n\n switch (g) {\n case 9:\n case 32:\n if (0 === n + m + b) switch (x) {\n case 44:\n case 58:\n case 9:\n case 32:\n y = '';\n break;\n\n default:\n 32 !== g && (y = ' ');\n }\n break;\n\n case 0:\n y = '\\\\0';\n break;\n\n case 12:\n y = '\\\\f';\n break;\n\n case 11:\n y = '\\\\v';\n break;\n\n case 38:\n 0 === n + b + m && (r = I = 1, y = '\\f' + y);\n break;\n\n case 108:\n if (0 === n + b + m + E && 0 < u) switch (l - u) {\n case 2:\n 112 === x && 58 === e.charCodeAt(l - 3) && (E = x);\n\n case 8:\n 111 === K && (E = K);\n }\n break;\n\n case 58:\n 0 === n + b + m && (u = l);\n break;\n\n case 44:\n 0 === b + v + n + m && (r = 1, y += '\\r');\n break;\n\n case 34:\n case 39:\n 0 === b && (n = n === g ? 0 : 0 === n ? g : n);\n break;\n\n case 91:\n 0 === n + b + v && m++;\n break;\n\n case 93:\n 0 === n + b + v && m--;\n break;\n\n case 41:\n 0 === n + b + m && v--;\n break;\n\n case 40:\n if (0 === n + b + m) {\n if (0 === q) switch (2 * x + 3 * K) {\n case 533:\n break;\n\n default:\n q = 1;\n }\n v++;\n }\n\n break;\n\n case 64:\n 0 === b + v + n + m + u + k && (k = 1);\n break;\n\n case 42:\n case 47:\n if (!(0 < n + m + v)) switch (b) {\n case 0:\n switch (2 * g + 3 * e.charCodeAt(l + 1)) {\n case 235:\n b = 47;\n break;\n\n case 220:\n t = l, b = 42;\n }\n\n break;\n\n case 42:\n 47 === g && 42 === x && t + 2 !== l && (33 === e.charCodeAt(t + 2) && (p += e.substring(t, l + 1)), y = '', b = 0);\n }\n }\n\n 0 === b && (f += y);\n }\n\n K = x;\n x = g;\n l++;\n }\n\n t = p.length;\n\n if (0 < t) {\n r = c;\n if (0 < A && (C = H(2, p, r, d, D, z, t, h, a, h), void 0 !== C && 0 === (p = C).length)) return G + p + F;\n p = r.join(',') + '{' + p + '}';\n\n if (0 !== w * E) {\n 2 !== w || L(p, 2) || (E = 0);\n\n switch (E) {\n case 111:\n p = p.replace(ha, ':-moz-$1') + p;\n break;\n\n case 112:\n p = p.replace(Q, '::-webkit-input-$1') + p.replace(Q, '::-moz-$1') + p.replace(Q, ':-ms-input-$1') + p;\n }\n\n E = 0;\n }\n }\n\n return G + p + F;\n }\n\n function X(d, c, e) {\n var h = c.trim().split(ia);\n c = h;\n var a = h.length,\n m = d.length;\n\n switch (m) {\n case 0:\n case 1:\n var b = 0;\n\n for (d = 0 === m ? '' : d[0] + ' '; b < a; ++b) {\n c[b] = Z(d, c[b], e).trim();\n }\n\n break;\n\n default:\n var v = b = 0;\n\n for (c = []; b < a; ++b) {\n for (var n = 0; n < m; ++n) {\n c[v++] = Z(d[n] + ' ', h[b], e).trim();\n }\n }\n\n }\n\n return c;\n }\n\n function Z(d, c, e) {\n var h = c.charCodeAt(0);\n 33 > h && (h = (c = c.trim()).charCodeAt(0));\n\n switch (h) {\n case 38:\n return c.replace(F, '$1' + d.trim());\n\n case 58:\n return d.trim() + c.replace(F, '$1' + d.trim());\n\n default:\n if (0 < 1 * e && 0 < c.indexOf('\\f')) return c.replace(F, (58 === d.charCodeAt(0) ? '' : '$1') + d.trim());\n }\n\n return d + c;\n }\n\n function P(d, c, e, h) {\n var a = d + ';',\n m = 2 * c + 3 * e + 4 * h;\n\n if (944 === m) {\n d = a.indexOf(':', 9) + 1;\n var b = a.substring(d, a.length - 1).trim();\n b = a.substring(0, d).trim() + b + ';';\n return 1 === w || 2 === w && L(b, 1) ? '-webkit-' + b + b : b;\n }\n\n if (0 === w || 2 === w && !L(a, 1)) return a;\n\n switch (m) {\n case 1015:\n return 97 === a.charCodeAt(10) ? '-webkit-' + a + a : a;\n\n case 951:\n return 116 === a.charCodeAt(3) ? '-webkit-' + a + a : a;\n\n case 963:\n return 110 === a.charCodeAt(5) ? '-webkit-' + a + a : a;\n\n case 1009:\n if (100 !== a.charCodeAt(4)) break;\n\n case 969:\n case 942:\n return '-webkit-' + a + a;\n\n case 978:\n return '-webkit-' + a + '-moz-' + a + a;\n\n case 1019:\n case 983:\n return '-webkit-' + a + '-moz-' + a + '-ms-' + a + a;\n\n case 883:\n if (45 === a.charCodeAt(8)) return '-webkit-' + a + a;\n if (0 < a.indexOf('image-set(', 11)) return a.replace(ja, '$1-webkit-$2') + a;\n break;\n\n case 932:\n if (45 === a.charCodeAt(4)) switch (a.charCodeAt(5)) {\n case 103:\n return '-webkit-box-' + a.replace('-grow', '') + '-webkit-' + a + '-ms-' + a.replace('grow', 'positive') + a;\n\n case 115:\n return '-webkit-' + a + '-ms-' + a.replace('shrink', 'negative') + a;\n\n case 98:\n return '-webkit-' + a + '-ms-' + a.replace('basis', 'preferred-size') + a;\n }\n return '-webkit-' + a + '-ms-' + a + a;\n\n case 964:\n return '-webkit-' + a + '-ms-flex-' + a + a;\n\n case 1023:\n if (99 !== a.charCodeAt(8)) break;\n b = a.substring(a.indexOf(':', 15)).replace('flex-', '').replace('space-between', 'justify');\n return '-webkit-box-pack' + b + '-webkit-' + a + '-ms-flex-pack' + b + a;\n\n case 1005:\n return ka.test(a) ? a.replace(aa, ':-webkit-') + a.replace(aa, ':-moz-') + a : a;\n\n case 1e3:\n b = a.substring(13).trim();\n c = b.indexOf('-') + 1;\n\n switch (b.charCodeAt(0) + b.charCodeAt(c)) {\n case 226:\n b = a.replace(G, 'tb');\n break;\n\n case 232:\n b = a.replace(G, 'tb-rl');\n break;\n\n case 220:\n b = a.replace(G, 'lr');\n break;\n\n default:\n return a;\n }\n\n return '-webkit-' + a + '-ms-' + b + a;\n\n case 1017:\n if (-1 === a.indexOf('sticky', 9)) break;\n\n case 975:\n c = (a = d).length - 10;\n b = (33 === a.charCodeAt(c) ? a.substring(0, c) : a).substring(d.indexOf(':', 7) + 1).trim();\n\n switch (m = b.charCodeAt(0) + (b.charCodeAt(7) | 0)) {\n case 203:\n if (111 > b.charCodeAt(8)) break;\n\n case 115:\n a = a.replace(b, '-webkit-' + b) + ';' + a;\n break;\n\n case 207:\n case 102:\n a = a.replace(b, '-webkit-' + (102 < m ? 'inline-' : '') + 'box') + ';' + a.replace(b, '-webkit-' + b) + ';' + a.replace(b, '-ms-' + b + 'box') + ';' + a;\n }\n\n return a + ';';\n\n case 938:\n if (45 === a.charCodeAt(5)) switch (a.charCodeAt(6)) {\n case 105:\n return b = a.replace('-items', ''), '-webkit-' + a + '-webkit-box-' + b + '-ms-flex-' + b + a;\n\n case 115:\n return '-webkit-' + a + '-ms-flex-item-' + a.replace(ba, '') + a;\n\n default:\n return '-webkit-' + a + '-ms-flex-line-pack' + a.replace('align-content', '').replace(ba, '') + a;\n }\n break;\n\n case 973:\n case 989:\n if (45 !== a.charCodeAt(3) || 122 === a.charCodeAt(4)) break;\n\n case 931:\n case 953:\n if (!0 === la.test(d)) return 115 === (b = d.substring(d.indexOf(':') + 1)).charCodeAt(0) ? P(d.replace('stretch', 'fill-available'), c, e, h).replace(':fill-available', ':stretch') : a.replace(b, '-webkit-' + b) + a.replace(b, '-moz-' + b.replace('fill-', '')) + a;\n break;\n\n case 962:\n if (a = '-webkit-' + a + (102 === a.charCodeAt(5) ? '-ms-' + a : '') + a, 211 === e + h && 105 === a.charCodeAt(13) && 0 < a.indexOf('transform', 10)) return a.substring(0, a.indexOf(';', 27) + 1).replace(ma, '$1-webkit-$2') + a;\n }\n\n return a;\n }\n\n function L(d, c) {\n var e = d.indexOf(1 === c ? ':' : '{'),\n h = d.substring(0, 3 !== c ? e : 10);\n e = d.substring(e + 1, d.length - 1);\n return R(2 !== c ? h : h.replace(na, '$1'), e, c);\n }\n\n function ea(d, c) {\n var e = P(c, c.charCodeAt(0), c.charCodeAt(1), c.charCodeAt(2));\n return e !== c + ';' ? e.replace(oa, ' or ($1)').substring(4) : '(' + c + ')';\n }\n\n function H(d, c, e, h, a, m, b, v, n, q) {\n for (var g = 0, x = c, w; g < A; ++g) {\n switch (w = S[g].call(B, d, x, e, h, a, m, b, v, n, q)) {\n case void 0:\n case !1:\n case !0:\n case null:\n break;\n\n default:\n x = w;\n }\n }\n\n if (x !== c) return x;\n }\n\n function T(d) {\n switch (d) {\n case void 0:\n case null:\n A = S.length = 0;\n break;\n\n default:\n if ('function' === typeof d) S[A++] = d;else if ('object' === typeof d) for (var c = 0, e = d.length; c < e; ++c) {\n T(d[c]);\n } else Y = !!d | 0;\n }\n\n return T;\n }\n\n function U(d) {\n d = d.prefix;\n void 0 !== d && (R = null, d ? 'function' !== typeof d ? w = 1 : (w = 2, R = d) : w = 0);\n return U;\n }\n\n function B(d, c) {\n var e = d;\n 33 > e.charCodeAt(0) && (e = e.trim());\n V = e;\n e = [V];\n\n if (0 < A) {\n var h = H(-1, c, e, e, D, z, 0, 0, 0, 0);\n void 0 !== h && 'string' === typeof h && (c = h);\n }\n\n var a = M(O, e, c, 0, 0);\n 0 < A && (h = H(-2, a, e, e, D, z, a.length, 0, 0, 0), void 0 !== h && (a = h));\n V = '';\n E = 0;\n z = D = 1;\n return a;\n }\n\n var ca = /^\\0+/g,\n N = /[\\0\\r\\f]/g,\n aa = /: */g,\n ka = /zoo|gra/,\n ma = /([,: ])(transform)/g,\n ia = /,\\r+?/g,\n F = /([\\t\\r\\n ])*\\f?&/g,\n fa = /@(k\\w+)\\s*(\\S*)\\s*/,\n Q = /::(place)/g,\n ha = /:(read-only)/g,\n G = /[svh]\\w+-[tblr]{2}/,\n da = /\\(\\s*(.*)\\s*\\)/g,\n oa = /([\\s\\S]*?);/g,\n ba = /-self|flex-/g,\n na = /[^]*?(:[rp][el]a[\\w-]+)[^]*/,\n la = /stretch|:\\s*\\w+\\-(?:conte|avail)/,\n ja = /([^-])(image-set\\()/,\n z = 1,\n D = 1,\n E = 0,\n w = 1,\n O = [],\n S = [],\n A = 0,\n R = null,\n Y = 0,\n V = '';\n B.use = T;\n B.set = U;\n void 0 !== W && U(W);\n return B;\n}\n\nexport default stylis_min;\n","var unitlessKeys = {\n animationIterationCount: 1,\n borderImageOutset: 1,\n borderImageSlice: 1,\n borderImageWidth: 1,\n boxFlex: 1,\n boxFlexGroup: 1,\n boxOrdinalGroup: 1,\n columnCount: 1,\n columns: 1,\n flex: 1,\n flexGrow: 1,\n flexPositive: 1,\n flexShrink: 1,\n flexNegative: 1,\n flexOrder: 1,\n gridRow: 1,\n gridRowEnd: 1,\n gridRowSpan: 1,\n gridRowStart: 1,\n gridColumn: 1,\n gridColumnEnd: 1,\n gridColumnSpan: 1,\n gridColumnStart: 1,\n msGridRow: 1,\n msGridRowSpan: 1,\n msGridColumn: 1,\n msGridColumnSpan: 1,\n fontWeight: 1,\n lineHeight: 1,\n opacity: 1,\n order: 1,\n orphans: 1,\n tabSize: 1,\n widows: 1,\n zIndex: 1,\n zoom: 1,\n WebkitLineClamp: 1,\n // SVG-related properties\n fillOpacity: 1,\n floodOpacity: 1,\n stopOpacity: 1,\n strokeDasharray: 1,\n strokeDashoffset: 1,\n strokeMiterlimit: 1,\n strokeOpacity: 1,\n strokeWidth: 1\n};\n\nexport default unitlessKeys;\n","function memoize(fn) {\n var cache = Object.create(null);\n return function (arg) {\n if (cache[arg] === undefined) cache[arg] = fn(arg);\n return cache[arg];\n };\n}\n\nexport { memoize as default };\n","import memoize from '@emotion/memoize';\n\n// eslint-disable-next-line no-undef\nvar reactPropsRegex = /^((children|dangerouslySetInnerHTML|key|ref|autoFocus|defaultValue|defaultChecked|innerHTML|suppressContentEditableWarning|suppressHydrationWarning|valueLink|abbr|accept|acceptCharset|accessKey|action|allow|allowUserMedia|allowPaymentRequest|allowFullScreen|allowTransparency|alt|async|autoComplete|autoPlay|capture|cellPadding|cellSpacing|challenge|charSet|checked|cite|classID|className|cols|colSpan|content|contentEditable|contextMenu|controls|controlsList|coords|crossOrigin|data|dateTime|decoding|default|defer|dir|disabled|disablePictureInPicture|disableRemotePlayback|download|draggable|encType|enterKeyHint|fetchpriority|fetchPriority|form|formAction|formEncType|formMethod|formNoValidate|formTarget|frameBorder|headers|height|hidden|high|href|hrefLang|htmlFor|httpEquiv|id|inputMode|integrity|is|keyParams|keyType|kind|label|lang|list|loading|loop|low|marginHeight|marginWidth|max|maxLength|media|mediaGroup|method|min|minLength|multiple|muted|name|nonce|noValidate|open|optimum|pattern|placeholder|playsInline|poster|preload|profile|radioGroup|readOnly|referrerPolicy|rel|required|reversed|role|rows|rowSpan|sandbox|scope|scoped|scrolling|seamless|selected|shape|size|sizes|slot|span|spellCheck|src|srcDoc|srcLang|srcSet|start|step|style|summary|tabIndex|target|title|translate|type|useMap|value|width|wmode|wrap|about|datatype|inlist|prefix|property|resource|typeof|vocab|autoCapitalize|autoCorrect|autoSave|color|incremental|fallback|inert|itemProp|itemScope|itemType|itemID|itemRef|on|option|results|security|unselectable|accentHeight|accumulate|additive|alignmentBaseline|allowReorder|alphabetic|amplitude|arabicForm|ascent|attributeName|attributeType|autoReverse|azimuth|baseFrequency|baselineShift|baseProfile|bbox|begin|bias|by|calcMode|capHeight|clip|clipPathUnits|clipPath|clipRule|colorInterpolation|colorInterpolationFilters|colorProfile|colorRendering|contentScriptType|contentStyleType|cursor|cx|cy|d|decelerate|descent|diffuseConstant|direction|display|divisor|dominantBaseline|dur|dx|dy|edgeMode|elevation|enableBackground|end|exponent|externalResourcesRequired|fill|fillOpacity|fillRule|filter|filterRes|filterUnits|floodColor|floodOpacity|focusable|fontFamily|fontSize|fontSizeAdjust|fontStretch|fontStyle|fontVariant|fontWeight|format|from|fr|fx|fy|g1|g2|glyphName|glyphOrientationHorizontal|glyphOrientationVertical|glyphRef|gradientTransform|gradientUnits|hanging|horizAdvX|horizOriginX|ideographic|imageRendering|in|in2|intercept|k|k1|k2|k3|k4|kernelMatrix|kernelUnitLength|kerning|keyPoints|keySplines|keyTimes|lengthAdjust|letterSpacing|lightingColor|limitingConeAngle|local|markerEnd|markerMid|markerStart|markerHeight|markerUnits|markerWidth|mask|maskContentUnits|maskUnits|mathematical|mode|numOctaves|offset|opacity|operator|order|orient|orientation|origin|overflow|overlinePosition|overlineThickness|panose1|paintOrder|pathLength|patternContentUnits|patternTransform|patternUnits|pointerEvents|points|pointsAtX|pointsAtY|pointsAtZ|preserveAlpha|preserveAspectRatio|primitiveUnits|r|radius|refX|refY|renderingIntent|repeatCount|repeatDur|requiredExtensions|requiredFeatures|restart|result|rotate|rx|ry|scale|seed|shapeRendering|slope|spacing|specularConstant|specularExponent|speed|spreadMethod|startOffset|stdDeviation|stemh|stemv|stitchTiles|stopColor|stopOpacity|strikethroughPosition|strikethroughThickness|string|stroke|strokeDasharray|strokeDashoffset|strokeLinecap|strokeLinejoin|strokeMiterlimit|strokeOpacity|strokeWidth|surfaceScale|systemLanguage|tableValues|targetX|targetY|textAnchor|textDecoration|textRendering|textLength|to|transform|u1|u2|underlinePosition|underlineThickness|unicode|unicodeBidi|unicodeRange|unitsPerEm|vAlphabetic|vHanging|vIdeographic|vMathematical|values|vectorEffect|version|vertAdvY|vertOriginX|vertOriginY|viewBox|viewTarget|visibility|widths|wordSpacing|writingMode|x|xHeight|x1|x2|xChannelSelector|xlinkActuate|xlinkArcrole|xlinkHref|xlinkRole|xlinkShow|xlinkTitle|xlinkType|xmlBase|xmlns|xmlnsXlink|xmlLang|xmlSpace|y|y1|y2|yChannelSelector|z|zoomAndPan|for|class|autofocus)|(([Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*))$/; // https://esbench.com/bench/5bfee68a4cd7e6009ef61d23\n\nvar isPropValid = /* #__PURE__ */memoize(function (prop) {\n return reactPropsRegex.test(prop) || prop.charCodeAt(0) === 111\n /* o */\n && prop.charCodeAt(1) === 110\n /* n */\n && prop.charCodeAt(2) < 91;\n}\n/* Z+1 */\n);\n\nexport { isPropValid as default };\n","// @flow\nimport type { Interpolation } from '../types';\n\nexport default (\n strings: Array,\n interpolations: Array\n): Array => {\n const result = [strings[0]];\n\n for (let i = 0, len = interpolations.length; i < len; i += 1) {\n result.push(interpolations[i], strings[i + 1]);\n }\n\n return result;\n};\n","// @flow\nimport { typeOf } from 'react-is';\n\nexport default (x: any): boolean =>\n x !== null &&\n typeof x === 'object' &&\n (x.toString ? x.toString() : Object.prototype.toString.call(x)) === '[object Object]' &&\n !typeOf(x);\n","// @flow\nexport const EMPTY_ARRAY = Object.freeze([]);\nexport const EMPTY_OBJECT = Object.freeze({});\n","// @flow\nexport default function isFunction(test: any): boolean %checks {\n return typeof test === 'function';\n}\n","// @flow\nimport type { IStyledComponent } from '../types';\n\nexport default function getComponentName(\n target: $PropertyType\n): string {\n return (\n (process.env.NODE_ENV !== 'production' ? typeof target === 'string' && target : false) ||\n // $FlowFixMe\n target.displayName ||\n // $FlowFixMe\n target.name ||\n 'Component'\n );\n}\n","// @flow\nexport default function isStyledComponent(target: any): boolean %checks {\n return target && typeof target.styledComponentId === 'string';\n}\n","// @flow\n\ndeclare var SC_DISABLE_SPEEDY: ?boolean;\ndeclare var __VERSION__: string;\n\nexport const SC_ATTR: string =\n (typeof process !== 'undefined' &&\n typeof process.env !== 'undefined' &&\n (process.env.REACT_APP_SC_ATTR || process.env.SC_ATTR)) ||\n 'data-styled';\n\nexport const SC_ATTR_ACTIVE = 'active';\nexport const SC_ATTR_VERSION = 'data-styled-version';\nexport const SC_VERSION = __VERSION__;\nexport const SPLITTER = '/*!sc*/\\n';\n\nexport const IS_BROWSER = typeof window !== 'undefined' && 'HTMLElement' in window;\n\nexport const DISABLE_SPEEDY = Boolean(\n typeof SC_DISABLE_SPEEDY === 'boolean'\n ? SC_DISABLE_SPEEDY\n : typeof process !== 'undefined' && typeof process.env !== 'undefined'\n ? typeof process.env.REACT_APP_SC_DISABLE_SPEEDY !== 'undefined' &&\n process.env.REACT_APP_SC_DISABLE_SPEEDY !== ''\n ? process.env.REACT_APP_SC_DISABLE_SPEEDY === 'false'\n ? false\n : process.env.REACT_APP_SC_DISABLE_SPEEDY\n : typeof process.env.SC_DISABLE_SPEEDY !== 'undefined' && process.env.SC_DISABLE_SPEEDY !== ''\n ? process.env.SC_DISABLE_SPEEDY === 'false'\n ? false\n : process.env.SC_DISABLE_SPEEDY\n : process.env.NODE_ENV !== 'production'\n : false\n);\n\n// Shared empty execution context when generating static styles\nexport const STATIC_EXECUTION_CONTEXT = {};\n","// @flow\nimport errorMap from './errors';\n\nconst ERRORS = process.env.NODE_ENV !== 'production' ? errorMap : {};\n\n/**\n * super basic version of sprintf\n */\nfunction format(...args) {\n let a = args[0];\n const b = [];\n\n for (let c = 1, len = args.length; c < len; c += 1) {\n b.push(args[c]);\n }\n\n b.forEach(d => {\n a = a.replace(/%[a-z]/, d);\n });\n\n return a;\n}\n\n/**\n * Create an error file out of errors.md for development and a simple web link to the full errors\n * in production mode.\n */\nexport default function throwStyledComponentsError(\n code: string | number,\n ...interpolations: Array\n) {\n if (process.env.NODE_ENV === 'production') {\n throw new Error(\n `An error occurred. See https://git.io/JUIaE#${code} for more information.${\n interpolations.length > 0 ? ` Args: ${interpolations.join(', ')}` : ''\n }`\n );\n } else {\n throw new Error(format(ERRORS[code], ...interpolations).trim());\n }\n}\n","// @flow\n/* eslint-disable no-use-before-define */\n\nimport type { GroupedTag, Tag } from './types';\nimport { SPLITTER } from '../constants';\nimport throwStyledError from '../utils/error';\n\n/** Create a GroupedTag with an underlying Tag implementation */\nexport const makeGroupedTag = (tag: Tag): GroupedTag => {\n return new DefaultGroupedTag(tag);\n};\n\nconst BASE_SIZE = 1 << 9;\n\nclass DefaultGroupedTag implements GroupedTag {\n groupSizes: Uint32Array;\n\n length: number;\n\n tag: Tag;\n\n constructor(tag: Tag) {\n this.groupSizes = new Uint32Array(BASE_SIZE);\n this.length = BASE_SIZE;\n this.tag = tag;\n }\n\n indexOfGroup(group: number): number {\n let index = 0;\n for (let i = 0; i < group; i++) {\n index += this.groupSizes[i];\n }\n\n return index;\n }\n\n insertRules(group: number, rules: string[]): void {\n if (group >= this.groupSizes.length) {\n const oldBuffer = this.groupSizes;\n const oldSize = oldBuffer.length;\n\n let newSize = oldSize;\n while (group >= newSize) {\n newSize <<= 1;\n if (newSize < 0) {\n throwStyledError(16, `${group}`);\n }\n }\n\n this.groupSizes = new Uint32Array(newSize);\n this.groupSizes.set(oldBuffer);\n this.length = newSize;\n\n for (let i = oldSize; i < newSize; i++) {\n this.groupSizes[i] = 0;\n }\n }\n\n let ruleIndex = this.indexOfGroup(group + 1);\n for (let i = 0, l = rules.length; i < l; i++) {\n if (this.tag.insertRule(ruleIndex, rules[i])) {\n this.groupSizes[group]++;\n ruleIndex++;\n }\n }\n }\n\n clearGroup(group: number): void {\n if (group < this.length) {\n const length = this.groupSizes[group];\n const startIndex = this.indexOfGroup(group);\n const endIndex = startIndex + length;\n\n this.groupSizes[group] = 0;\n\n for (let i = startIndex; i < endIndex; i++) {\n this.tag.deleteRule(startIndex);\n }\n }\n }\n\n getGroup(group: number): string {\n let css = '';\n if (group >= this.length || this.groupSizes[group] === 0) {\n return css;\n }\n\n const length = this.groupSizes[group];\n const startIndex = this.indexOfGroup(group);\n const endIndex = startIndex + length;\n\n for (let i = startIndex; i < endIndex; i++) {\n css += `${this.tag.getRule(i)}${SPLITTER}`;\n }\n\n return css;\n }\n}\n","// @flow\n\nimport throwStyledError from '../utils/error';\n\nconst MAX_SMI = 1 << 31 - 1;\n\nlet groupIDRegister: Map = new Map();\nlet reverseRegister: Map = new Map();\nlet nextFreeGroup = 1;\n\nexport const resetGroupIds = () => {\n groupIDRegister = new Map();\n reverseRegister = new Map();\n nextFreeGroup = 1;\n};\n\nexport const getGroupForId = (id: string): number => {\n if (groupIDRegister.has(id)) {\n return (groupIDRegister.get(id): any);\n }\n\n while (reverseRegister.has(nextFreeGroup)) {\n nextFreeGroup++;\n }\n\n const group = nextFreeGroup++;\n\n if (\n process.env.NODE_ENV !== 'production' &&\n ((group | 0) < 0 || group > MAX_SMI)\n ) {\n throwStyledError(16, `${group}`);\n }\n\n groupIDRegister.set(id, group);\n reverseRegister.set(group, id);\n return group;\n};\n\nexport const getIdForGroup = (group: number): void | string => {\n return reverseRegister.get(group);\n};\n\nexport const setGroupForId = (id: string, group: number) => {\n if (group >= nextFreeGroup) {\n nextFreeGroup = group + 1;\n }\n\n groupIDRegister.set(id, group);\n reverseRegister.set(group, id);\n};\n","// @flow\n\nimport { SPLITTER, SC_ATTR, SC_ATTR_ACTIVE, SC_ATTR_VERSION, SC_VERSION } from '../constants';\nimport { getIdForGroup, setGroupForId } from './GroupIDAllocator';\nimport type { Sheet } from './types';\n\nconst SELECTOR = `style[${SC_ATTR}][${SC_ATTR_VERSION}=\"${SC_VERSION}\"]`;\nconst MARKER_RE = new RegExp(`^${SC_ATTR}\\\\.g(\\\\d+)\\\\[id=\"([\\\\w\\\\d-]+)\"\\\\].*?\"([^\"]*)`);\n\nexport const outputSheet = (sheet: Sheet) => {\n const tag = sheet.getTag();\n const { length } = tag;\n\n let css = '';\n for (let group = 0; group < length; group++) {\n const id = getIdForGroup(group);\n if (id === undefined) continue;\n\n const names = sheet.names.get(id);\n const rules = tag.getGroup(group);\n if (!names || !rules || !names.size) continue;\n\n const selector = `${SC_ATTR}.g${group}[id=\"${id}\"]`;\n\n let content = '';\n if (names !== undefined) {\n names.forEach(name => {\n if (name.length > 0) {\n content += `${name},`;\n }\n });\n }\n\n // NOTE: It's easier to collect rules and have the marker\n // after the actual rules to simplify the rehydration\n css += `${rules}${selector}{content:\"${content}\"}${SPLITTER}`;\n }\n\n return css;\n};\n\nconst rehydrateNamesFromContent = (sheet: Sheet, id: string, content: string) => {\n const names = content.split(',');\n let name;\n\n for (let i = 0, l = names.length; i < l; i++) {\n // eslint-disable-next-line\n if ((name = names[i])) {\n sheet.registerName(id, name);\n }\n }\n};\n\nconst rehydrateSheetFromTag = (sheet: Sheet, style: HTMLStyleElement) => {\n const parts = (style.textContent || '').split(SPLITTER);\n const rules: string[] = [];\n\n for (let i = 0, l = parts.length; i < l; i++) {\n const part = parts[i].trim();\n if (!part) continue;\n\n const marker = part.match(MARKER_RE);\n\n if (marker) {\n const group = parseInt(marker[1], 10) | 0;\n const id = marker[2];\n\n if (group !== 0) {\n // Rehydrate componentId to group index mapping\n setGroupForId(id, group);\n // Rehydrate names and rules\n // looks like: data-styled.g11[id=\"idA\"]{content:\"nameA,\"}\n rehydrateNamesFromContent(sheet, id, marker[3]);\n sheet.getTag().insertRules(group, rules);\n }\n\n rules.length = 0;\n } else {\n rules.push(part);\n }\n }\n};\n\nexport const rehydrateSheet = (sheet: Sheet) => {\n const nodes = document.querySelectorAll(SELECTOR);\n\n for (let i = 0, l = nodes.length; i < l; i++) {\n const node = ((nodes[i]: any): HTMLStyleElement);\n if (node && node.getAttribute(SC_ATTR) !== SC_ATTR_ACTIVE) {\n rehydrateSheetFromTag(sheet, node);\n\n if (node.parentNode) {\n node.parentNode.removeChild(node);\n }\n }\n }\n};\n","// @flow\n/* eslint-disable camelcase, no-undef */\n\ndeclare var __webpack_nonce__: string;\n\nconst getNonce = () => {\n return typeof __webpack_nonce__ !== 'undefined' ? __webpack_nonce__ : null;\n};\n\nexport default getNonce;\n","// @flow\n\nimport { SC_ATTR, SC_ATTR_ACTIVE, SC_ATTR_VERSION, SC_VERSION } from '../constants';\nimport getNonce from '../utils/nonce';\nimport throwStyledError from '../utils/error';\n\nconst ELEMENT_TYPE = 1; /* Node.ELEMENT_TYPE */\n\n/** Find last style element if any inside target */\nconst findLastStyleTag = (target: HTMLElement): void | HTMLStyleElement => {\n const { childNodes } = target;\n\n for (let i = childNodes.length; i >= 0; i--) {\n const child = ((childNodes[i]: any): ?HTMLElement);\n if (child && child.nodeType === ELEMENT_TYPE && child.hasAttribute(SC_ATTR)) {\n return ((child: any): HTMLStyleElement);\n }\n }\n\n return undefined;\n};\n\n/** Create a style element inside `target` or after the last */\nexport const makeStyleTag = (target?: HTMLElement): HTMLStyleElement => {\n const head = ((document.head: any): HTMLElement);\n const parent = target || head;\n const style = document.createElement('style');\n const prevStyle = findLastStyleTag(parent);\n const nextSibling = prevStyle !== undefined ? prevStyle.nextSibling : null;\n\n style.setAttribute(SC_ATTR, SC_ATTR_ACTIVE);\n style.setAttribute(SC_ATTR_VERSION, SC_VERSION);\n\n const nonce = getNonce();\n\n if (nonce) style.setAttribute('nonce', nonce);\n\n parent.insertBefore(style, nextSibling);\n\n return style;\n};\n\n/** Get the CSSStyleSheet instance for a given style element */\nexport const getSheet = (tag: HTMLStyleElement): CSSStyleSheet => {\n if (tag.sheet) {\n return ((tag.sheet: any): CSSStyleSheet);\n }\n\n // Avoid Firefox quirk where the style element might not have a sheet property\n const { styleSheets } = document;\n for (let i = 0, l = styleSheets.length; i < l; i++) {\n const sheet = styleSheets[i];\n if (sheet.ownerNode === tag) {\n return ((sheet: any): CSSStyleSheet);\n }\n }\n\n throwStyledError(17);\n return (undefined: any);\n};\n","// @flow\n/* eslint-disable no-use-before-define */\n\nimport { makeStyleTag, getSheet } from './dom';\nimport type { SheetOptions, Tag } from './types';\n\n/** Create a CSSStyleSheet-like tag depending on the environment */\nexport const makeTag = ({ isServer, useCSSOMInjection, target }: SheetOptions): Tag => {\n if (isServer) {\n return new VirtualTag(target);\n } else if (useCSSOMInjection) {\n return new CSSOMTag(target);\n } else {\n return new TextTag(target);\n }\n};\n\nexport class CSSOMTag implements Tag {\n element: HTMLStyleElement;\n\n sheet: CSSStyleSheet;\n\n length: number;\n\n constructor(target?: HTMLElement) {\n const element = (this.element = makeStyleTag(target));\n\n // Avoid Edge bug where empty style elements don't create sheets\n element.appendChild(document.createTextNode(''));\n\n this.sheet = getSheet(element);\n this.length = 0;\n }\n\n insertRule(index: number, rule: string): boolean {\n try {\n this.sheet.insertRule(rule, index);\n this.length++;\n return true;\n } catch (_error) {\n return false;\n }\n }\n\n deleteRule(index: number): void {\n this.sheet.deleteRule(index);\n this.length--;\n }\n\n getRule(index: number): string {\n const rule = this.sheet.cssRules[index];\n // Avoid IE11 quirk where cssText is inaccessible on some invalid rules\n if (rule !== undefined && typeof rule.cssText === 'string') {\n return rule.cssText;\n } else {\n return '';\n }\n }\n}\n\n/** A Tag that emulates the CSSStyleSheet API but uses text nodes */\nexport class TextTag implements Tag {\n element: HTMLStyleElement;\n\n nodes: NodeList;\n\n length: number;\n\n constructor(target?: HTMLElement) {\n const element = (this.element = makeStyleTag(target));\n this.nodes = element.childNodes;\n this.length = 0;\n }\n\n insertRule(index: number, rule: string): boolean {\n if (index <= this.length && index >= 0) {\n const node = document.createTextNode(rule);\n const refNode = this.nodes[index];\n this.element.insertBefore(node, refNode || null);\n this.length++;\n return true;\n } else {\n return false;\n }\n }\n\n deleteRule(index: number): void {\n this.element.removeChild(this.nodes[index]);\n this.length--;\n }\n\n getRule(index: number): string {\n if (index < this.length) {\n return this.nodes[index].textContent;\n } else {\n return '';\n }\n }\n}\n\n/** A completely virtual (server-side) Tag that doesn't manipulate the DOM */\nexport class VirtualTag implements Tag {\n rules: string[];\n\n length: number;\n\n constructor(_target?: HTMLElement) {\n this.rules = [];\n this.length = 0;\n }\n\n insertRule(index: number, rule: string): boolean {\n if (index <= this.length) {\n this.rules.splice(index, 0, rule);\n this.length++;\n return true;\n } else {\n return false;\n }\n }\n\n deleteRule(index: number): void {\n this.rules.splice(index, 1);\n this.length--;\n }\n\n getRule(index: number): string {\n if (index < this.length) {\n return this.rules[index];\n } else {\n return '';\n }\n }\n}\n","// @flow\nimport { DISABLE_SPEEDY, IS_BROWSER } from '../constants';\nimport { EMPTY_OBJECT } from '../utils/empties';\nimport { makeGroupedTag } from './GroupedTag';\nimport { getGroupForId } from './GroupIDAllocator';\nimport { outputSheet, rehydrateSheet } from './Rehydration';\nimport { makeTag } from './Tag';\nimport type { GroupedTag, Sheet, SheetOptions } from './types';\n\nlet SHOULD_REHYDRATE = IS_BROWSER;\n\ntype SheetConstructorArgs = {\n isServer?: boolean,\n useCSSOMInjection?: boolean,\n target?: HTMLElement,\n};\n\ntype GlobalStylesAllocationMap = { [key: string]: number };\ntype NamesAllocationMap = Map>;\n\nconst defaultOptions: SheetOptions = {\n isServer: !IS_BROWSER,\n useCSSOMInjection: !DISABLE_SPEEDY,\n};\n\n/** Contains the main stylesheet logic for stringification and caching */\nexport default class StyleSheet implements Sheet {\n gs: GlobalStylesAllocationMap;\n\n names: NamesAllocationMap;\n\n options: SheetOptions;\n\n server: boolean;\n\n tag: void | GroupedTag;\n\n /** Register a group ID to give it an index */\n static registerId(id: string): number {\n return getGroupForId(id);\n }\n\n constructor(\n options: SheetConstructorArgs = EMPTY_OBJECT,\n globalStyles?: GlobalStylesAllocationMap = {},\n names?: NamesAllocationMap\n ) {\n this.options = {\n ...defaultOptions,\n ...options,\n };\n\n this.gs = globalStyles;\n this.names = new Map(names);\n this.server = !!options.isServer;\n\n // We rehydrate only once and use the sheet that is created first\n if (!this.server && IS_BROWSER && SHOULD_REHYDRATE) {\n SHOULD_REHYDRATE = false;\n rehydrateSheet(this);\n }\n }\n\n reconstructWithOptions(options: SheetConstructorArgs, withNames?: boolean = true) {\n return new StyleSheet(\n { ...this.options, ...options },\n this.gs,\n (withNames && this.names) || undefined\n );\n }\n\n allocateGSInstance(id: string) {\n return (this.gs[id] = (this.gs[id] || 0) + 1);\n }\n\n /** Lazily initialises a GroupedTag for when it's actually needed */\n getTag(): GroupedTag {\n return this.tag || (this.tag = makeGroupedTag(makeTag(this.options)));\n }\n\n /** Check whether a name is known for caching */\n hasNameForId(id: string, name: string): boolean {\n return this.names.has(id) && (this.names.get(id): any).has(name);\n }\n\n /** Mark a group's name as known for caching */\n registerName(id: string, name: string) {\n getGroupForId(id);\n\n if (!this.names.has(id)) {\n const groupNames = new Set();\n groupNames.add(name);\n this.names.set(id, groupNames);\n } else {\n (this.names.get(id): any).add(name);\n }\n }\n\n /** Insert new rules which also marks the name as known */\n insertRules(id: string, name: string, rules: string[]) {\n this.registerName(id, name);\n this.getTag().insertRules(getGroupForId(id), rules);\n }\n\n /** Clears all cached names for a given group ID */\n clearNames(id: string) {\n if (this.names.has(id)) {\n (this.names.get(id): any).clear();\n }\n }\n\n /** Clears all rules for a given group ID */\n clearRules(id: string) {\n this.getTag().clearGroup(getGroupForId(id));\n this.clearNames(id);\n }\n\n /** Clears the entire tag which deletes all rules but not its names */\n clearTag() {\n // NOTE: This does not clear the names, since it's only used during SSR\n // so that we can continuously output only new rules\n this.tag = undefined;\n }\n\n /** Outputs the current sheet as a CSS string with markers for SSR */\n toString(): string {\n return outputSheet(this);\n }\n}\n","// @flow\n/* eslint-disable no-bitwise */\n\nconst AD_REPLACER_R = /(a)(d)/gi;\n\n/* This is the \"capacity\" of our alphabet i.e. 2x26 for all letters plus their capitalised\n * counterparts */\nconst charsLength = 52;\n\n/* start at 75 for 'a' until 'z' (25) and then start at 65 for capitalised letters */\nconst getAlphabeticChar = (code: number): string =>\n String.fromCharCode(code + (code > 25 ? 39 : 97));\n\n/* input a number, usually a hash and convert it to base-52 */\nexport default function generateAlphabeticName(code: number): string {\n let name = '';\n let x;\n\n /* get a char and divide by alphabet-length */\n for (x = Math.abs(code); x > charsLength; x = (x / charsLength) | 0) {\n name = getAlphabeticChar(x % charsLength) + name;\n }\n\n return (getAlphabeticChar(x % charsLength) + name).replace(AD_REPLACER_R, '$1-$2');\n}\n","// @flow\n/* eslint-disable */\n\nexport const SEED = 5381;\n\n// When we have separate strings it's useful to run a progressive\n// version of djb2 where we pretend that we're still looping over\n// the same string\nexport const phash = (h: number, x: string): number => {\n let i = x.length;\n\n while (i) {\n h = (h * 33) ^ x.charCodeAt(--i);\n }\n\n return h;\n};\n\n// This is a djb2 hashing function\nexport const hash = (x: string): number => {\n return phash(SEED, x);\n};\n","// @flow\nimport isFunction from './isFunction';\nimport isStyledComponent from './isStyledComponent';\nimport type { RuleSet } from '../types';\n\nexport default function isStaticRules(rules: RuleSet): boolean {\n for (let i = 0; i < rules.length; i += 1) {\n const rule = rules[i];\n\n if (isFunction(rule) && !isStyledComponent(rule)) {\n // functions are allowed to be static if they're just being\n // used to get the classname of a nested styled component\n return false;\n }\n }\n\n return true;\n}\n","// @flow\nimport { SC_VERSION } from '../constants';\nimport StyleSheet from '../sheet';\nimport type { RuleSet, Stringifier } from '../types';\nimport flatten from '../utils/flatten';\nimport generateName from '../utils/generateAlphabeticName';\nimport { hash, phash } from '../utils/hash';\nimport isStaticRules from '../utils/isStaticRules';\n\nconst SEED = hash(SC_VERSION);\n\n/**\n * ComponentStyle is all the CSS-specific stuff, not the React-specific stuff.\n */\nexport default class ComponentStyle {\n baseHash: number;\n\n baseStyle: ?ComponentStyle;\n\n componentId: string;\n\n isStatic: boolean;\n\n rules: RuleSet;\n\n staticRulesId: string;\n\n constructor(rules: RuleSet, componentId: string, baseStyle?: ComponentStyle) {\n this.rules = rules;\n this.staticRulesId = '';\n this.isStatic = process.env.NODE_ENV === 'production' &&\n (baseStyle === undefined || baseStyle.isStatic) &&\n isStaticRules(rules);\n this.componentId = componentId;\n\n // SC_VERSION gives us isolation between multiple runtimes on the page at once\n // this is improved further with use of the babel plugin \"namespace\" feature\n this.baseHash = phash(SEED, componentId);\n\n this.baseStyle = baseStyle;\n\n // NOTE: This registers the componentId, which ensures a consistent order\n // for this component's styles compared to others\n StyleSheet.registerId(componentId);\n }\n\n /*\n * Flattens a rule set into valid CSS\n * Hashes it, wraps the whole chunk in a .hash1234 {}\n * Returns the hash to be injected on render()\n * */\n generateAndInjectStyles(executionContext: Object, styleSheet: StyleSheet, stylis: Stringifier) {\n const { componentId } = this;\n\n const names = [];\n\n if (this.baseStyle) {\n names.push(this.baseStyle.generateAndInjectStyles(executionContext, styleSheet, stylis));\n }\n\n // force dynamic classnames if user-supplied stylis plugins are in use\n if (this.isStatic && !stylis.hash) {\n if (this.staticRulesId && styleSheet.hasNameForId(componentId, this.staticRulesId)) {\n names.push(this.staticRulesId);\n } else {\n const cssStatic = flatten(this.rules, executionContext, styleSheet, stylis).join('');\n const name = generateName(phash(this.baseHash, cssStatic) >>> 0);\n\n if (!styleSheet.hasNameForId(componentId, name)) {\n const cssStaticFormatted = stylis(cssStatic, `.${name}`, undefined, componentId);\n\n styleSheet.insertRules(componentId, name, cssStaticFormatted);\n }\n\n names.push(name);\n this.staticRulesId = name;\n }\n } else {\n const { length } = this.rules;\n let dynamicHash = phash(this.baseHash, stylis.hash);\n let css = '';\n\n for (let i = 0; i < length; i++) {\n const partRule = this.rules[i];\n\n if (typeof partRule === 'string') {\n css += partRule;\n\n if (process.env.NODE_ENV !== 'production') dynamicHash = phash(dynamicHash, partRule + i);\n } else if (partRule) {\n const partChunk = flatten(partRule, executionContext, styleSheet, stylis);\n const partString = Array.isArray(partChunk) ? partChunk.join('') : partChunk;\n dynamicHash = phash(dynamicHash, partString + i);\n css += partString;\n }\n }\n\n if (css) {\n const name = generateName(dynamicHash >>> 0);\n\n if (!styleSheet.hasNameForId(componentId, name)) {\n const cssFormatted = stylis(css, `.${name}`, undefined, componentId);\n styleSheet.insertRules(componentId, name, cssFormatted);\n }\n\n names.push(name);\n }\n }\n\n return names.join(' ');\n }\n}\n","import Stylis from '@emotion/stylis';\nimport { type Stringifier } from '../types';\nimport { EMPTY_ARRAY, EMPTY_OBJECT } from './empties';\nimport throwStyledError from './error';\nimport { phash, SEED } from './hash';\nimport insertRulePlugin from './stylisPluginInsertRule';\n\nconst COMMENT_REGEX = /^\\s*\\/\\/.*$/gm;\nconst COMPLEX_SELECTOR_PREFIX = [':', '[', '.', '#'];\n\ntype StylisInstanceConstructorArgs = {\n options?: Object,\n plugins?: Array,\n};\n\nexport default function createStylisInstance({\n options = EMPTY_OBJECT,\n plugins = EMPTY_ARRAY,\n}: StylisInstanceConstructorArgs = EMPTY_OBJECT) {\n const stylis = new Stylis(options);\n\n // Wrap `insertRulePlugin to build a list of rules,\n // and then make our own plugin to return the rules. This\n // makes it easier to hook into the existing SSR architecture\n\n let parsingRules = [];\n\n // eslint-disable-next-line consistent-return\n const returnRulesPlugin = context => {\n if (context === -2) {\n const parsedRules = parsingRules;\n parsingRules = [];\n return parsedRules;\n }\n };\n\n const parseRulesPlugin = insertRulePlugin(rule => {\n parsingRules.push(rule);\n });\n\n let _componentId: string;\n let _selector: string;\n let _selectorRegexp: RegExp;\n let _consecutiveSelfRefRegExp: RegExp;\n\n const selfReferenceReplacer = (match, offset, string) => {\n if (\n // do not replace the first occurrence if it is complex (has a modifier)\n (offset === 0 ? COMPLEX_SELECTOR_PREFIX.indexOf(string[_selector.length]) === -1 : true) &&\n // no consecutive self refs (.b.b); that is a precedence boost and treated differently\n !string.match(_consecutiveSelfRefRegExp)\n ) {\n return `.${_componentId}`;\n }\n\n return match;\n };\n\n /**\n * When writing a style like\n *\n * & + & {\n * color: red;\n * }\n *\n * The second ampersand should be a reference to the static component class. stylis\n * has no knowledge of static class so we have to intelligently replace the base selector.\n *\n * https://github.com/thysultan/stylis.js/tree/v3.5.4#plugins <- more info about the context phase values\n * \"2\" means this plugin is taking effect at the very end after all other processing is complete\n */\n const selfReferenceReplacementPlugin = (context, _, selectors) => {\n if (context === 2 && selectors.length && selectors[0].lastIndexOf(_selector) > 0) {\n // eslint-disable-next-line no-param-reassign\n selectors[0] = selectors[0].replace(_selectorRegexp, selfReferenceReplacer);\n }\n };\n\n stylis.use([...plugins, selfReferenceReplacementPlugin, parseRulesPlugin, returnRulesPlugin]);\n\n function stringifyRules(css, selector, prefix, componentId = '&'): Stringifier {\n const flatCSS = css.replace(COMMENT_REGEX, '');\n const cssStr = selector && prefix ? `${prefix} ${selector} { ${flatCSS} }` : flatCSS;\n\n // stylis has no concept of state to be passed to plugins\n // but since JS is single-threaded, we can rely on that to ensure\n // these properties stay in sync with the current stylis run\n _componentId = componentId;\n _selector = selector;\n _selectorRegexp = new RegExp(`\\\\${_selector}\\\\b`, 'g');\n _consecutiveSelfRefRegExp = new RegExp(`(\\\\${_selector}\\\\b){2,}`);\n\n return stylis(prefix || !selector ? '' : selector, cssStr);\n }\n\n stringifyRules.hash = plugins.length\n ? plugins\n .reduce((acc, plugin) => {\n if (!plugin.name) {\n throwStyledError(15);\n }\n\n return phash(acc, plugin.name);\n }, SEED)\n .toString()\n : '';\n\n return stringifyRules;\n}\n","/**\n * MIT License\n *\n * Copyright (c) 2016 Sultan Tarimo\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy of\n * this software and associated documentation files (the \"Software\"),\n * to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n * OR IMPLIED INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR\n * IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n */\n/* eslint-disable */\n\nexport default function(insertRule) {\n const delimiter = '/*|*/';\n const needle = `${delimiter}}`;\n\n function toSheet(block) {\n if (block) {\n try {\n insertRule(`${block}}`);\n } catch (e) {}\n }\n }\n\n return function ruleSheet(\n context,\n content,\n selectors,\n parents,\n line,\n column,\n length,\n ns,\n depth,\n at\n ) {\n switch (context) {\n // property\n case 1:\n // @import\n if (depth === 0 && content.charCodeAt(0) === 64) return insertRule(`${content};`), '';\n break;\n // selector\n case 2:\n if (ns === 0) return content + delimiter;\n break;\n // at-rule\n case 3:\n switch (ns) {\n // @font-face, @page\n case 102:\n case 112:\n return insertRule(selectors[0] + content), '';\n default:\n return content + (at === 0 ? delimiter : '');\n }\n case -2:\n content.split(needle).forEach(toSheet);\n }\n };\n}\n","// @flow\nimport React, { type Context, type Node, useContext, useEffect, useMemo, useState } from 'react';\nimport shallowequal from 'shallowequal';\nimport StyleSheet from '../sheet';\nimport type { Stringifier } from '../types';\nimport createStylisInstance from '../utils/stylis';\n\ntype Props = {\n children?: Node,\n disableCSSOMInjection?: boolean,\n disableVendorPrefixes?: boolean,\n sheet?: StyleSheet,\n stylisPlugins?: Array,\n target?: HTMLElement,\n};\n\nexport const StyleSheetContext: Context = React.createContext();\nexport const StyleSheetConsumer = StyleSheetContext.Consumer;\nexport const StylisContext: Context = React.createContext();\nexport const StylisConsumer = StylisContext.Consumer;\n\nexport const masterSheet: StyleSheet = new StyleSheet();\nexport const masterStylis: Stringifier = createStylisInstance();\n\nexport function useStyleSheet(): StyleSheet {\n return useContext(StyleSheetContext) || masterSheet;\n}\n\nexport function useStylis(): Stringifier {\n return useContext(StylisContext) || masterStylis;\n}\n\nexport default function StyleSheetManager(props: Props) {\n const [plugins, setPlugins] = useState(props.stylisPlugins);\n const contextStyleSheet = useStyleSheet();\n\n const styleSheet = useMemo(() => {\n let sheet = contextStyleSheet;\n\n if (props.sheet) {\n // eslint-disable-next-line prefer-destructuring\n sheet = props.sheet;\n } else if (props.target) {\n sheet = sheet.reconstructWithOptions({ target: props.target }, false);\n }\n\n if (props.disableCSSOMInjection) {\n sheet = sheet.reconstructWithOptions({ useCSSOMInjection: false });\n }\n\n return sheet;\n }, [props.disableCSSOMInjection, props.sheet, props.target]);\n\n const stylis = useMemo(\n () =>\n createStylisInstance({\n options: { prefix: !props.disableVendorPrefixes },\n plugins,\n }),\n [props.disableVendorPrefixes, plugins]\n );\n\n useEffect(() => {\n if (!shallowequal(plugins, props.stylisPlugins)) setPlugins(props.stylisPlugins);\n }, [props.stylisPlugins]);\n\n return (\n \n \n {process.env.NODE_ENV !== 'production'\n ? React.Children.only(props.children)\n : props.children}\n \n \n );\n}\n","// @flow\nimport StyleSheet from '../sheet';\nimport { type Stringifier } from '../types';\nimport throwStyledError from '../utils/error';\nimport { masterStylis } from './StyleSheetManager';\n\nexport default class Keyframes {\n id: string;\n\n name: string;\n\n rules: string;\n\n constructor(name: string, rules: string) {\n this.name = name;\n this.id = `sc-keyframes-${name}`;\n this.rules = rules;\n }\n\n inject = (styleSheet: StyleSheet, stylisInstance: Stringifier = masterStylis) => {\n const resolvedName = this.name + stylisInstance.hash;\n\n if (!styleSheet.hasNameForId(this.id, resolvedName)) {\n styleSheet.insertRules(\n this.id,\n resolvedName,\n stylisInstance(this.rules, resolvedName, '@keyframes')\n );\n }\n };\n\n toString = () => {\n return throwStyledError(12, String(this.name));\n };\n\n getName(stylisInstance: Stringifier = masterStylis) {\n return this.name + stylisInstance.hash;\n }\n}\n","// @flow\n\n/**\n * inlined version of\n * https://github.com/facebook/fbjs/blob/master/packages/fbjs/src/core/hyphenateStyleName.js\n */\n\nconst uppercaseCheck = /([A-Z])/;\nconst uppercasePattern = /([A-Z])/g;\nconst msPattern = /^ms-/;\nconst prefixAndLowerCase = (char: string): string => `-${char.toLowerCase()}`;\n\n/**\n * Hyphenates a camelcased CSS property name, for example:\n *\n * > hyphenateStyleName('backgroundColor')\n * < \"background-color\"\n * > hyphenateStyleName('MozTransition')\n * < \"-moz-transition\"\n * > hyphenateStyleName('msTransition')\n * < \"-ms-transition\"\n *\n * As Modernizr suggests (http://modernizr.com/docs/#prefixed), an `ms` prefix\n * is converted to `-ms-`.\n *\n * @param {string} string\n * @return {string}\n */\nexport default function hyphenateStyleName(string: string): string {\n return uppercaseCheck.test(string)\n ? string\n .replace(uppercasePattern, prefixAndLowerCase)\n .replace(msPattern, '-ms-')\n : string;\n}\n","// @flow\nimport { isElement } from 'react-is';\nimport getComponentName from './getComponentName';\nimport isFunction from './isFunction';\nimport isStatelessFunction from './isStatelessFunction';\nimport isPlainObject from './isPlainObject';\nimport isStyledComponent from './isStyledComponent';\nimport Keyframes from '../models/Keyframes';\nimport hyphenate from './hyphenateStyleName';\nimport addUnitIfNeeded from './addUnitIfNeeded';\nimport { type Stringifier } from '../types';\n\n/**\n * It's falsish not falsy because 0 is allowed.\n */\nconst isFalsish = chunk => chunk === undefined || chunk === null || chunk === false || chunk === '';\n\nexport const objToCssArray = (obj: Object, prevKey?: string): Array => {\n const rules = [];\n\n for (const key in obj) {\n if (!obj.hasOwnProperty(key) || isFalsish(obj[key])) continue;\n\n if ((Array.isArray(obj[key]) && obj[key].isCss) || isFunction(obj[key])) {\n rules.push(`${hyphenate(key)}:`, obj[key], ';');\n } else if (isPlainObject(obj[key])) {\n rules.push(...objToCssArray(obj[key], key));\n } else {\n rules.push(`${hyphenate(key)}: ${addUnitIfNeeded(key, obj[key])};`);\n }\n }\n\n return prevKey ? [`${prevKey} {`, ...rules, '}'] : rules;\n};\n\nexport default function flatten(\n chunk: any,\n executionContext: ?Object,\n styleSheet: ?Object,\n stylisInstance: ?Stringifier\n): any {\n if (Array.isArray(chunk)) {\n const ruleSet = [];\n\n for (let i = 0, len = chunk.length, result; i < len; i += 1) {\n result = flatten(chunk[i], executionContext, styleSheet, stylisInstance);\n\n if (result === '') continue;\n else if (Array.isArray(result)) ruleSet.push(...result);\n else ruleSet.push(result);\n }\n\n return ruleSet;\n }\n\n if (isFalsish(chunk)) {\n return '';\n }\n\n /* Handle other components */\n if (isStyledComponent(chunk)) {\n return `.${chunk.styledComponentId}`;\n }\n\n /* Either execute or defer the function */\n if (isFunction(chunk)) {\n if (isStatelessFunction(chunk) && executionContext) {\n const result = chunk(executionContext);\n\n if (process.env.NODE_ENV !== 'production' && isElement(result)) {\n // eslint-disable-next-line no-console\n console.warn(\n `${getComponentName(\n chunk\n )} is not a styled component and cannot be referred to via component selector. See https://www.styled-components.com/docs/advanced#referring-to-other-components for more details.`\n );\n }\n\n return flatten(result, executionContext, styleSheet, stylisInstance);\n } else return chunk;\n }\n\n if (chunk instanceof Keyframes) {\n if (styleSheet) {\n chunk.inject(styleSheet, stylisInstance);\n return chunk.getName(stylisInstance);\n } else return chunk;\n }\n\n /* Handle objects */\n return isPlainObject(chunk) ? objToCssArray(chunk) : chunk.toString();\n}\n","// @flow\nexport default function isStatelessFunction(test: any): boolean {\n return (\n typeof test === 'function'\n && !(\n test.prototype\n && test.prototype.isReactComponent\n )\n );\n}\n","// @flow\nimport unitless from '@emotion/unitless';\n\n// Taken from https://github.com/facebook/react/blob/b87aabdfe1b7461e7331abb3601d9e6bb27544bc/packages/react-dom/src/shared/dangerousStyleValue.js\nexport default function addUnitIfNeeded(name: string, value: any): any {\n // https://github.com/amilajack/eslint-plugin-flowtype-errors/issues/133\n // $FlowFixMe\n if (value == null || typeof value === 'boolean' || value === '') {\n return '';\n }\n\n if (typeof value === 'number' && value !== 0 && !(name in unitless) && !name.startsWith('--')) {\n return `${value}px`; // Presumes implicit 'px' suffix for unitless numbers except for CSS variables\n }\n\n return String(value).trim();\n}\n","// @flow\nimport interleave from '../utils/interleave';\nimport isPlainObject from '../utils/isPlainObject';\nimport { EMPTY_ARRAY } from '../utils/empties';\nimport isFunction from '../utils/isFunction';\nimport flatten from '../utils/flatten';\nimport type { Interpolation, RuleSet, Styles } from '../types';\n\n/**\n * Used when flattening object styles to determine if we should\n * expand an array of styles.\n */\nconst addTag = arg => {\n if (Array.isArray(arg)) {\n // eslint-disable-next-line no-param-reassign\n arg.isCss = true;\n }\n return arg;\n};\n\nexport default function css(styles: Styles, ...interpolations: Array): RuleSet {\n if (isFunction(styles) || isPlainObject(styles)) {\n // $FlowFixMe\n return addTag(flatten(interleave(EMPTY_ARRAY, [styles, ...interpolations])));\n }\n\n if (interpolations.length === 0 && styles.length === 1 && typeof styles[0] === 'string') {\n // $FlowFixMe\n return styles;\n }\n\n // $FlowFixMe\n return addTag(flatten(interleave(styles, interpolations)));\n}\n","// @flow\n\nimport { useRef } from 'react';\n\nconst invalidHookCallRe = /invalid hook call/i;\nconst seen = new Set();\n\nexport const checkDynamicCreation = (displayName: string, componentId?: string) => {\n if (process.env.NODE_ENV !== 'production') {\n const parsedIdString = componentId ? ` with the id of \"${componentId}\"` : '';\n const message =\n `The component ${displayName}${parsedIdString} has been created dynamically.\\n` +\n \"You may see this warning because you've called styled inside another component.\\n\" +\n 'To resolve this only create new StyledComponents outside of any render method and function component.';\n\n // If a hook is called outside of a component:\n // React 17 and earlier throw an error\n // React 18 and above use console.error\n\n const originalConsoleError = console.error // eslint-disable-line no-console\n try {\n let didNotCallInvalidHook = true\n /* $FlowIgnore[cannot-write] */\n console.error = (consoleErrorMessage, ...consoleErrorArgs) => { // eslint-disable-line no-console\n // The error here is expected, since we're expecting anything that uses `checkDynamicCreation` to\n // be called outside of a React component.\n if (invalidHookCallRe.test(consoleErrorMessage)) {\n didNotCallInvalidHook = false\n // This shouldn't happen, but resets `warningSeen` if we had this error happen intermittently\n seen.delete(message);\n } else {\n originalConsoleError(consoleErrorMessage, ...consoleErrorArgs);\n }\n }\n // We purposefully call `useRef` outside of a component and expect it to throw\n // If it doesn't, then we're inside another component.\n // eslint-disable-next-line react-hooks/rules-of-hooks\n useRef();\n\n if (didNotCallInvalidHook && !seen.has(message)) {\n // eslint-disable-next-line no-console\n console.warn(message);\n seen.add(message);\n }\n } catch (error) {\n // The error here is expected, since we're expecting anything that uses `checkDynamicCreation` to\n // be called outside of a React component.\n if (invalidHookCallRe.test(error.message)) {\n // This shouldn't happen, but resets `warningSeen` if we had this error happen intermittently\n seen.delete(message);\n }\n } finally {\n /* $FlowIgnore[cannot-write] */\n console.error = originalConsoleError; // eslint-disable-line no-console\n }\n }\n};\n","// @flow\nimport { EMPTY_OBJECT } from './empties';\n\ntype Props = {\n theme?: any,\n};\n\nexport default (props: Props, providedTheme: any, defaultProps: any = EMPTY_OBJECT) => {\n return (props.theme !== defaultProps.theme && props.theme) || providedTheme || defaultProps.theme;\n};\n","// @flow\n\n// Source: https://www.w3.org/TR/cssom-1/#serialize-an-identifier\n// Control characters and non-letter first symbols are not supported\nconst escapeRegex = /[!\"#$%&'()*+,./:;<=>?@[\\\\\\]^`{|}~-]+/g;\n\nconst dashesAtEnds = /(^-|-$)/g;\n\n/**\n * TODO: Explore using CSS.escape when it becomes more available\n * in evergreen browsers.\n */\nexport default function escape(str: string): string {\n return (\n str\n // Replace all possible CSS selectors\n .replace(escapeRegex, '-')\n\n // Remove extraneous hyphens at the start and end\n .replace(dashesAtEnds, '')\n );\n}\n","// @flow\n/* eslint-disable */\nimport generateAlphabeticName from './generateAlphabeticName';\nimport { hash } from './hash';\n\nexport default (str: string): string => {\n return generateAlphabeticName(hash(str) >>> 0);\n};\n","// @flow\nimport type { IStyledComponent } from '../types';\n\nexport default function isTag(target: $PropertyType): boolean %checks {\n return (\n typeof target === 'string' &&\n (process.env.NODE_ENV !== 'production'\n ? target.charAt(0) === target.charAt(0).toLowerCase()\n : true)\n );\n}\n","/* eslint-disable */\n/**\n mixin-deep; https://github.com/jonschlinkert/mixin-deep\n Inlined such that it will be consistently transpiled to an IE-compatible syntax.\n\n The MIT License (MIT)\n\n Copyright (c) 2014-present, Jon Schlinkert.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in\n all copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n THE SOFTWARE.\n*/\n\nconst isObject = val => {\n return (\n typeof val === 'function' || (typeof val === 'object' && val !== null && !Array.isArray(val))\n );\n};\n\nconst isValidKey = key => {\n return key !== '__proto__' && key !== 'constructor' && key !== 'prototype';\n};\n\nfunction mixin(target, val, key) {\n const obj = target[key];\n if (isObject(val) && isObject(obj)) {\n mixinDeep(obj, val);\n } else {\n target[key] = val;\n }\n}\n\nexport default function mixinDeep(target, ...rest) {\n for (const obj of rest) {\n if (isObject(obj)) {\n for (const key in obj) {\n if (isValidKey(key)) {\n mixin(target, obj[key], key);\n }\n }\n }\n }\n\n return target;\n}\n","// @flow\nimport React, { useContext, useMemo, type Element, type Context } from 'react';\nimport throwStyledError from '../utils/error';\nimport isFunction from '../utils/isFunction';\n\nexport type Theme = { [key: string]: mixed };\n\ntype ThemeArgument = Theme | ((outerTheme?: Theme) => Theme);\n\ntype Props = {\n children?: Element,\n theme: ThemeArgument,\n};\n\nexport const ThemeContext: Context = React.createContext();\n\nexport const ThemeConsumer = ThemeContext.Consumer;\n\nfunction mergeTheme(theme: ThemeArgument, outerTheme?: Theme): Theme {\n if (!theme) {\n return throwStyledError(14);\n }\n\n if (isFunction(theme)) {\n const mergedTheme = theme(outerTheme);\n\n if (\n process.env.NODE_ENV !== 'production' &&\n (mergedTheme === null || Array.isArray(mergedTheme) || typeof mergedTheme !== 'object')\n ) {\n return throwStyledError(7);\n }\n\n return mergedTheme;\n }\n\n if (Array.isArray(theme) || typeof theme !== 'object') {\n return throwStyledError(8);\n }\n\n return outerTheme ? { ...outerTheme, ...theme } : theme;\n}\n\n/**\n * Provide a theme to an entire react component tree via context\n */\nexport default function ThemeProvider(props: Props) {\n const outerTheme = useContext(ThemeContext);\n const themeContext = useMemo(() => mergeTheme(props.theme, outerTheme), [\n props.theme,\n outerTheme,\n ]);\n\n if (!props.children) {\n return null;\n }\n\n return {props.children};\n}\n","// @flow\nimport validAttr from '@emotion/is-prop-valid';\nimport hoist from 'hoist-non-react-statics';\nimport React, { createElement, type Ref, useContext } from 'react';\nimport { SC_VERSION } from '../constants';\nimport type {\n Attrs,\n IStyledComponent,\n IStyledStatics,\n RuleSet,\n ShouldForwardProp,\n Target,\n} from '../types';\nimport { checkDynamicCreation } from '../utils/checkDynamicCreation';\nimport createWarnTooManyClasses from '../utils/createWarnTooManyClasses';\nimport determineTheme from '../utils/determineTheme';\nimport { EMPTY_ARRAY, EMPTY_OBJECT } from '../utils/empties';\nimport escape from '../utils/escape';\nimport generateComponentId from '../utils/generateComponentId';\nimport generateDisplayName from '../utils/generateDisplayName';\nimport getComponentName from '../utils/getComponentName';\nimport isFunction from '../utils/isFunction';\nimport isStyledComponent from '../utils/isStyledComponent';\nimport isTag from '../utils/isTag';\nimport joinStrings from '../utils/joinStrings';\nimport merge from '../utils/mixinDeep';\nimport ComponentStyle from './ComponentStyle';\nimport { useStyleSheet, useStylis } from './StyleSheetManager';\nimport { ThemeContext } from './ThemeProvider';\n\nconst identifiers = {};\n\n/* We depend on components having unique IDs */\nfunction generateId(displayName?: string, parentComponentId?: string) {\n const name = typeof displayName !== 'string' ? 'sc' : escape(displayName);\n // Ensure that no displayName can lead to duplicate componentIds\n identifiers[name] = (identifiers[name] || 0) + 1;\n\n const componentId = `${name}-${generateComponentId(\n // SC_VERSION gives us isolation between multiple runtimes on the page at once\n // this is improved further with use of the babel plugin \"namespace\" feature\n SC_VERSION + name + identifiers[name]\n )}`;\n\n return parentComponentId ? `${parentComponentId}-${componentId}` : componentId;\n}\n\nfunction useResolvedAttrs(theme: any = EMPTY_OBJECT, props: Config, attrs: Attrs) {\n // NOTE: can't memoize this\n // returns [context, resolvedAttrs]\n // where resolvedAttrs is only the things injected by the attrs themselves\n const context = { ...props, theme };\n const resolvedAttrs = {};\n\n attrs.forEach(attrDef => {\n let resolvedAttrDef = attrDef;\n let key;\n\n if (isFunction(resolvedAttrDef)) {\n resolvedAttrDef = resolvedAttrDef(context);\n }\n\n /* eslint-disable guard-for-in */\n for (key in resolvedAttrDef) {\n context[key] = resolvedAttrs[key] =\n key === 'className'\n ? joinStrings(resolvedAttrs[key], resolvedAttrDef[key])\n : resolvedAttrDef[key];\n }\n /* eslint-enable guard-for-in */\n });\n\n return [context, resolvedAttrs];\n}\n\nfunction useInjectedStyle(\n componentStyle: ComponentStyle,\n isStatic: boolean,\n resolvedAttrs: T,\n warnTooManyClasses?: $Call\n) {\n const styleSheet = useStyleSheet();\n const stylis = useStylis();\n\n const className = isStatic\n ? componentStyle.generateAndInjectStyles(EMPTY_OBJECT, styleSheet, stylis)\n : componentStyle.generateAndInjectStyles(resolvedAttrs, styleSheet, stylis);\n\n if (process.env.NODE_ENV !== 'production' && !isStatic && warnTooManyClasses) {\n warnTooManyClasses(className);\n }\n\n return className;\n}\n\nfunction useStyledComponentImpl(\n forwardedComponent: IStyledComponent,\n props: Object,\n forwardedRef: Ref,\n isStatic: boolean\n) {\n const {\n attrs: componentAttrs,\n componentStyle,\n defaultProps,\n foldedComponentIds,\n shouldForwardProp,\n styledComponentId,\n target,\n } = forwardedComponent;\n\n // NOTE: the non-hooks version only subscribes to this when !componentStyle.isStatic,\n // but that'd be against the rules-of-hooks. We could be naughty and do it anyway as it\n // should be an immutable value, but behave for now.\n const theme = determineTheme(props, useContext(ThemeContext), defaultProps);\n\n const [context, attrs] = useResolvedAttrs(theme || EMPTY_OBJECT, props, componentAttrs);\n\n const generatedClassName = useInjectedStyle(\n componentStyle,\n isStatic,\n context,\n process.env.NODE_ENV !== 'production' ? forwardedComponent.warnTooManyClasses : undefined\n );\n\n const refToForward = forwardedRef;\n\n const elementToBeCreated: Target = attrs.$as || props.$as || attrs.as || props.as || target;\n\n const isTargetTag = isTag(elementToBeCreated);\n const computedProps = attrs !== props ? { ...props, ...attrs } : props;\n const propsForElement = {};\n\n // eslint-disable-next-line guard-for-in\n for (const key in computedProps) {\n if (key[0] === '$' || key === 'as') continue;\n else if (key === 'forwardedAs') {\n propsForElement.as = computedProps[key];\n } else if (\n shouldForwardProp\n ? shouldForwardProp(key, validAttr, elementToBeCreated)\n : isTargetTag\n ? validAttr(key)\n : true\n ) {\n // Don't pass through non HTML tags through to HTML elements\n propsForElement[key] = computedProps[key];\n }\n }\n\n if (props.style && attrs.style !== props.style) {\n propsForElement.style = { ...props.style, ...attrs.style };\n }\n\n propsForElement.className = Array.prototype\n .concat(\n foldedComponentIds,\n styledComponentId,\n generatedClassName !== styledComponentId ? generatedClassName : null,\n props.className,\n attrs.className\n )\n .filter(Boolean)\n .join(' ');\n\n propsForElement.ref = refToForward;\n\n return createElement(elementToBeCreated, propsForElement);\n}\n\nexport default function createStyledComponent(\n target: $PropertyType,\n options: {\n attrs?: Attrs,\n componentId: string,\n displayName?: string,\n parentComponentId?: string,\n shouldForwardProp?: ShouldForwardProp,\n },\n rules: RuleSet\n) {\n const isTargetStyledComp = isStyledComponent(target);\n const isCompositeComponent = !isTag(target);\n\n const {\n attrs = EMPTY_ARRAY,\n componentId = generateId(options.displayName, options.parentComponentId),\n displayName = generateDisplayName(target),\n } = options;\n\n const styledComponentId =\n options.displayName && options.componentId\n ? `${escape(options.displayName)}-${options.componentId}`\n : options.componentId || componentId;\n\n // fold the underlying StyledComponent attrs up (implicit extend)\n const finalAttrs =\n isTargetStyledComp && ((target: any): IStyledComponent).attrs\n ? Array.prototype.concat(((target: any): IStyledComponent).attrs, attrs).filter(Boolean)\n : attrs;\n\n // eslint-disable-next-line prefer-destructuring\n let shouldForwardProp = options.shouldForwardProp;\n\n if (isTargetStyledComp && target.shouldForwardProp) {\n if (options.shouldForwardProp) {\n // compose nested shouldForwardProp calls\n shouldForwardProp = (prop, filterFn, elementToBeCreated) =>\n ((((target: any): IStyledComponent).shouldForwardProp: any): ShouldForwardProp)(\n prop,\n filterFn,\n elementToBeCreated\n ) &&\n ((options.shouldForwardProp: any): ShouldForwardProp)(prop, filterFn, elementToBeCreated);\n } else {\n // eslint-disable-next-line prefer-destructuring\n shouldForwardProp = ((target: any): IStyledComponent).shouldForwardProp;\n }\n }\n\n const componentStyle = new ComponentStyle(\n rules,\n styledComponentId,\n isTargetStyledComp ? ((target: Object).componentStyle: ComponentStyle) : undefined\n );\n\n // statically styled-components don't need to build an execution context object,\n // and shouldn't be increasing the number of class names\n const isStatic = componentStyle.isStatic && attrs.length === 0;\n\n /**\n * forwardRef creates a new interim component, which we'll take advantage of\n * instead of extending ParentComponent to create _another_ interim class\n */\n let WrappedStyledComponent: IStyledComponent;\n\n const forwardRef = (props, ref) =>\n // eslint-disable-next-line\n useStyledComponentImpl(WrappedStyledComponent, props, ref, isStatic);\n\n forwardRef.displayName = displayName;\n\n WrappedStyledComponent = ((React.forwardRef(forwardRef): any): IStyledComponent);\n WrappedStyledComponent.attrs = finalAttrs;\n WrappedStyledComponent.componentStyle = componentStyle;\n WrappedStyledComponent.displayName = displayName;\n WrappedStyledComponent.shouldForwardProp = shouldForwardProp;\n\n // this static is used to preserve the cascade of static classes for component selector\n // purposes; this is especially important with usage of the css prop\n WrappedStyledComponent.foldedComponentIds = isTargetStyledComp\n ? Array.prototype.concat(\n ((target: any): IStyledComponent).foldedComponentIds,\n ((target: any): IStyledComponent).styledComponentId\n )\n : EMPTY_ARRAY;\n\n WrappedStyledComponent.styledComponentId = styledComponentId;\n\n // fold the underlying StyledComponent target up since we folded the styles\n WrappedStyledComponent.target = isTargetStyledComp\n ? ((target: any): IStyledComponent).target\n : target;\n\n WrappedStyledComponent.withComponent = function withComponent(tag: Target) {\n const { componentId: previousComponentId, ...optionsToCopy } = options;\n\n const newComponentId =\n previousComponentId &&\n `${previousComponentId}-${isTag(tag) ? tag : escape(getComponentName(tag))}`;\n\n const newOptions = {\n ...optionsToCopy,\n attrs: finalAttrs,\n componentId: newComponentId,\n };\n\n return createStyledComponent(tag, newOptions, rules);\n };\n\n Object.defineProperty(WrappedStyledComponent, 'defaultProps', {\n get() {\n return this._foldedDefaultProps;\n },\n\n set(obj) {\n this._foldedDefaultProps = isTargetStyledComp\n ? merge({}, ((target: any): IStyledComponent).defaultProps, obj)\n : obj;\n },\n });\n\n if (process.env.NODE_ENV !== 'production') {\n checkDynamicCreation(displayName, styledComponentId);\n\n WrappedStyledComponent.warnTooManyClasses = createWarnTooManyClasses(\n displayName,\n styledComponentId\n );\n }\n\n // If the Object prototype is frozen, the \"toString\" property is non-writable. This means that any objects which inherit this property\n // cannot have the property changed using an assignment. If using strict mode, attempting that will cause an error. If not using strict\n // mode, attempting that will be silently ignored.\n // However, we can still explicitly shadow the prototype's \"toString\" property by defining a new \"toString\" property on this object.\n Object.defineProperty(WrappedStyledComponent, 'toString', { value: () => `.${WrappedStyledComponent.styledComponentId}` });\n\n if (isCompositeComponent) {\n hoist<\n IStyledStatics,\n $PropertyType,\n { [key: $Keys]: true }\n >(WrappedStyledComponent, ((target: any): $PropertyType), {\n // all SC-specific things should not be hoisted\n attrs: true,\n componentStyle: true,\n displayName: true,\n foldedComponentIds: true,\n shouldForwardProp: true,\n styledComponentId: true,\n target: true,\n withComponent: true,\n });\n }\n\n return WrappedStyledComponent;\n}\n","// @flow\nimport type { IStyledComponent } from '../types';\nimport getComponentName from './getComponentName';\nimport isTag from './isTag';\n\nexport default function generateDisplayName(\n target: $PropertyType\n): string {\n return isTag(target) ? `styled.${target}` : `Styled(${getComponentName(target)})`;\n}\n","/**\n * Convenience function for joining strings to form className chains\n */\nexport default function joinStrings(a: ?String, b: ?String): ?String {\n return a && b ? `${a} ${b}` : a || b;\n}\n","// @flow\n// Thanks to ReactDOMFactories for this handy list!\n\nexport default [\n 'a',\n 'abbr',\n 'address',\n 'area',\n 'article',\n 'aside',\n 'audio',\n 'b',\n 'base',\n 'bdi',\n 'bdo',\n 'big',\n 'blockquote',\n 'body',\n 'br',\n 'button',\n 'canvas',\n 'caption',\n 'cite',\n 'code',\n 'col',\n 'colgroup',\n 'data',\n 'datalist',\n 'dd',\n 'del',\n 'details',\n 'dfn',\n 'dialog',\n 'div',\n 'dl',\n 'dt',\n 'em',\n 'embed',\n 'fieldset',\n 'figcaption',\n 'figure',\n 'footer',\n 'form',\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'head',\n 'header',\n 'hgroup',\n 'hr',\n 'html',\n 'i',\n 'iframe',\n 'img',\n 'input',\n 'ins',\n 'kbd',\n 'keygen',\n 'label',\n 'legend',\n 'li',\n 'link',\n 'main',\n 'map',\n 'mark',\n 'marquee',\n 'menu',\n 'menuitem',\n 'meta',\n 'meter',\n 'nav',\n 'noscript',\n 'object',\n 'ol',\n 'optgroup',\n 'option',\n 'output',\n 'p',\n 'param',\n 'picture',\n 'pre',\n 'progress',\n 'q',\n 'rp',\n 'rt',\n 'ruby',\n 's',\n 'samp',\n 'script',\n 'section',\n 'select',\n 'small',\n 'source',\n 'span',\n 'strong',\n 'style',\n 'sub',\n 'summary',\n 'sup',\n 'table',\n 'tbody',\n 'td',\n 'textarea',\n 'tfoot',\n 'th',\n 'thead',\n 'time',\n 'title',\n 'tr',\n 'track',\n 'u',\n 'ul',\n 'var',\n 'video',\n 'wbr',\n\n // SVG\n 'circle',\n 'clipPath',\n 'defs',\n 'ellipse',\n 'foreignObject',\n 'g',\n 'image',\n 'line',\n 'linearGradient',\n 'marker',\n 'mask',\n 'path',\n 'pattern',\n 'polygon',\n 'polyline',\n 'radialGradient',\n 'rect',\n 'stop',\n 'svg',\n 'text',\n 'textPath',\n 'tspan',\n];\n","// @flow\nimport constructWithOptions from './constructWithOptions';\nimport StyledComponent from '../models/StyledComponent';\nimport domElements from '../utils/domElements';\n\nimport type { Target } from '../types';\n\nconst styled = (tag: Target) => constructWithOptions(StyledComponent, tag);\n\n// Shorthands for all valid HTML Elements\ndomElements.forEach(domElement => {\n styled[domElement] = styled(domElement);\n});\n\nexport default styled;\n","// @flow\nimport { isValidElementType } from 'react-is';\nimport css from './css';\nimport throwStyledError from '../utils/error';\nimport { EMPTY_OBJECT } from '../utils/empties';\n\nimport type { Target } from '../types';\n\nexport default function constructWithOptions(\n componentConstructor: Function,\n tag: Target,\n options: Object = EMPTY_OBJECT\n) {\n if (!isValidElementType(tag)) {\n return throwStyledError(1, String(tag));\n }\n\n /* This is callable directly as a template function */\n // $FlowFixMe: Not typed to avoid destructuring arguments\n const templateFunction = (...args) => componentConstructor(tag, options, css(...args));\n\n /* If config methods are called, wrap up a new template function and merge options */\n templateFunction.withConfig = config =>\n constructWithOptions(componentConstructor, tag, { ...options, ...config });\n\n /* Modify/inject new props at runtime */\n templateFunction.attrs = attrs =>\n constructWithOptions(componentConstructor, tag, {\n ...options,\n attrs: Array.prototype.concat(options.attrs, attrs).filter(Boolean),\n });\n\n return templateFunction;\n}\n","// @flow\nimport StyleSheet from '../sheet';\nimport type { RuleSet, Stringifier } from '../types';\nimport flatten from '../utils/flatten';\nimport isStaticRules from '../utils/isStaticRules';\n\nexport default class GlobalStyle {\n componentId: string;\n\n isStatic: boolean;\n\n rules: RuleSet;\n\n constructor(rules: RuleSet, componentId: string) {\n this.rules = rules;\n this.componentId = componentId;\n this.isStatic = isStaticRules(rules);\n\n // pre-register the first instance to ensure global styles\n // load before component ones\n StyleSheet.registerId(this.componentId + 1);\n }\n\n createStyles(\n instance: number,\n executionContext: Object,\n styleSheet: StyleSheet,\n stylis: Stringifier\n ) {\n const flatCSS = flatten(this.rules, executionContext, styleSheet, stylis);\n const css = stylis(flatCSS.join(''), '');\n const id = this.componentId + instance;\n\n // NOTE: We use the id as a name as well, since these rules never change\n styleSheet.insertRules(id, id, css);\n }\n\n removeStyles(instance: number, styleSheet: StyleSheet) {\n styleSheet.clearRules(this.componentId + instance);\n }\n\n renderStyles(\n instance: number,\n executionContext: Object,\n styleSheet: StyleSheet,\n stylis: Stringifier\n ) {\n if (instance > 2) StyleSheet.registerId(this.componentId + instance);\n\n // NOTE: Remove old styles, then inject the new ones\n this.removeStyles(instance, styleSheet);\n this.createStyles(instance, executionContext, styleSheet, stylis);\n }\n}\n","// @flow\n\nimport css from './css';\nimport generateComponentId from '../utils/generateComponentId';\nimport Keyframes from '../models/Keyframes';\n\nimport type { Interpolation, Styles } from '../types';\n\nexport default function keyframes(\n strings: Styles,\n ...interpolations: Array\n): Keyframes {\n /* Warning if you've used keyframes on React Native */\n if (\n process.env.NODE_ENV !== 'production' &&\n typeof navigator !== 'undefined' &&\n navigator.product === 'ReactNative'\n ) {\n // eslint-disable-next-line no-console\n console.warn(\n '`keyframes` cannot be used on ReactNative, only on the web. To do animation in ReactNative please use Animated.'\n );\n }\n\n const rules = css(strings, ...interpolations).join('');\n const name = generateComponentId(rules);\n return new Keyframes(name, rules);\n}\n","// @flow\n/* eslint-disable no-underscore-dangle */\nimport React from 'react';\nimport { IS_BROWSER, SC_ATTR, SC_ATTR_VERSION, SC_VERSION } from '../constants';\nimport throwStyledError from '../utils/error';\nimport getNonce from '../utils/nonce';\nimport StyleSheet from '../sheet';\nimport StyleSheetManager from './StyleSheetManager';\n\ndeclare var __SERVER__: boolean;\n\nconst CLOSING_TAG_R = /^\\s*<\\/[a-z]/i;\n\nexport default class ServerStyleSheet {\n isStreaming: boolean;\n\n instance: StyleSheet;\n\n sealed: boolean;\n\n constructor() {\n this.instance = new StyleSheet({ isServer: true });\n this.sealed = false;\n }\n\n _emitSheetCSS = (): string => {\n const css = this.instance.toString();\n if (!css) return '';\n\n const nonce = getNonce();\n const attrs = [nonce && `nonce=\"${nonce}\"`, `${SC_ATTR}=\"true\"`, `${SC_ATTR_VERSION}=\"${SC_VERSION}\"`];\n const htmlAttr = attrs.filter(Boolean).join(' ');\n\n return ``;\n };\n\n collectStyles(children: any) {\n if (this.sealed) {\n return throwStyledError(2);\n }\n\n return {children};\n }\n\n getStyleTags = (): string => {\n if (this.sealed) {\n return throwStyledError(2);\n }\n\n return this._emitSheetCSS();\n };\n\n getStyleElement = () => {\n if (this.sealed) {\n return throwStyledError(2);\n }\n\n const props = {\n [SC_ATTR]: '',\n [SC_ATTR_VERSION]: SC_VERSION,\n dangerouslySetInnerHTML: {\n __html: this.instance.toString(),\n },\n };\n\n const nonce = getNonce();\n if (nonce) {\n (props: any).nonce = nonce;\n }\n\n // v4 returned an array for this fn, so we'll do the same for v5 for backward compat\n return [\n );\n}\n\nfunction genQuery(value: string): string {\n return [\n EMOJI_BUTTON,\n '[data-full-name*=\"',\n getNormalizedSearchTerm(value),\n '\"]'\n ].join('');\n}\n","import { cx } from 'flairup';\nimport * as React from 'react';\n\nimport { darkMode, stylesheet } from '../../../Stylesheet/stylesheet';\n\nimport SVGMagnifier from './svg/magnifier.svg';\n\nexport function IcnSearch() {\n return
;\n}\n\nconst styles = stylesheet.create({\n icnSearch: {\n '.': 'epr-icn-search',\n content: '',\n position: 'absolute',\n top: '50%',\n left: 'var(--epr-search-bar-inner-padding)',\n transform: 'translateY(-50%)',\n width: '20px',\n height: '20px',\n backgroundRepeat: 'no-repeat',\n backgroundPosition: '0 0',\n backgroundSize: '20px',\n backgroundImage: `url(${SVGMagnifier})`\n },\n ...darkMode('icnSearch', {\n backgroundPositionY: '-20px'\n })\n});\n","import { cx } from 'flairup';\nimport * as React from 'react';\nimport { useState } from 'react';\n\nimport { darkMode, stylesheet } from '../../../Stylesheet/stylesheet';\nimport {\n useAutoFocusSearchConfig,\n useSearchDisabledConfig,\n useSearchPlaceHolderConfig\n} from '../../../config/useConfig';\nimport { useCloseAllOpenToggles } from '../../../hooks/useCloseAllOpenToggles';\nimport { useFilter } from '../../../hooks/useFilter';\nimport { useIsSkinToneInSearch } from '../../../hooks/useShouldShowSkinTonePicker';\nimport Flex from '../../Layout/Flex';\nimport Relative from '../../Layout/Relative';\nimport { useSearchInputRef } from '../../context/ElementRefContext';\nimport { SkinTonePicker } from '../SkinTonePicker/SkinTonePicker';\n\nimport { BtnClearSearch } from './BtnClearSearch';\nimport { CssSearch } from './CssSearch';\nimport { IcnSearch } from './IcnSearch';\nimport SVGTimes from './svg/times.svg';\n\nexport function SearchContainer() {\n const searchDisabled = useSearchDisabledConfig();\n\n const isSkinToneInSearch = useIsSkinToneInSearch();\n\n if (searchDisabled) {\n return null;\n }\n\n return (\n \n \n\n {isSkinToneInSearch ? : null}\n \n );\n}\n\nexport function Search() {\n const [inc, setInc] = useState(0);\n const closeAllOpenToggles = useCloseAllOpenToggles();\n const SearchInputRef = useSearchInputRef();\n const placeholder = useSearchPlaceHolderConfig();\n const autoFocus = useAutoFocusSearchConfig();\n const { statusSearchResults, searchTerm, onChange } = useFilter();\n\n const input = SearchInputRef?.current;\n const value = input?.value;\n\n return (\n \n \n {\n setInc(inc + 1);\n setTimeout(() => {\n onChange(event?.target?.value ?? value);\n });\n }}\n ref={SearchInputRef}\n />\n {searchTerm ? (\n \n {statusSearchResults}\n
\n ) : null}\n \n \n \n );\n}\n\nconst styles = stylesheet.create({\n overlay: {\n padding: 'var(--epr-header-padding)',\n zIndex: 'var(--epr-header-overlay-z-index)'\n },\n searchContainer: {\n '.': 'epr-search-container',\n flex: '1',\n display: 'block',\n minWidth: '0'\n },\n visuallyHidden: {\n clip: 'rect(0 0 0 0)',\n clipPath: 'inset(50%)',\n height: '1px',\n overflow: 'hidden',\n position: 'absolute',\n whiteSpace: 'nowrap',\n width: '1px'\n },\n search: {\n outline: 'none',\n transition: 'all 0.2s ease-in-out',\n color: 'var(--epr-search-input-text-color)',\n borderRadius: 'var(--epr-search-input-border-radius)',\n padding: 'var(--epr-search-input-padding)',\n height: 'var(--epr-search-input-height)',\n backgroundColor: 'var(--epr-search-input-bg-color)',\n border: '1px solid var(--epr-search-input-bg-color)',\n width: '100%',\n ':focus': {\n backgroundColor: 'var(--epr-search-input-bg-color-active)',\n border: '1px solid var(--epr-search-border-color)'\n },\n '::placeholder': {\n color: 'var(--epr-search-input-placeholder-color)'\n }\n },\n\n btnClearSearch: {\n '.': 'epr-btn-clear-search',\n position: 'absolute',\n right: 'var(--epr-search-bar-inner-padding)',\n height: '30px',\n width: '30px',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n top: '50%',\n transform: 'translateY(-50%)',\n padding: '0',\n borderRadius: '50%',\n ':hover': {\n background: 'var(--epr-hover-bg-color)'\n },\n ':focus': {\n background: 'var(--epr-hover-bg-color)'\n }\n },\n icnClearnSearch: {\n '.': 'epr-icn-clear-search',\n backgroundColor: 'transparent',\n backgroundRepeat: 'no-repeat',\n backgroundSize: '20px',\n height: '20px',\n width: '20px',\n backgroundImage: `url(${SVGTimes})`,\n ':hover': {\n backgroundPositionY: '-20px'\n },\n ':focus': {\n backgroundPositionY: '-20px'\n }\n },\n ...darkMode('icnClearnSearch', {\n backgroundPositionY: '-40px'\n }),\n ...darkMode('btnClearSearch', {\n ':hover > .epr-icn-clear-search': {\n backgroundPositionY: '-60px'\n }\n })\n});\n","import { cx } from 'flairup';\nimport * as React from 'react';\n\nimport { commonInteractionStyles } from '../../Stylesheet/stylesheet';\nimport Relative from '../Layout/Relative';\nimport { CategoryNavigation } from '../navigation/CategoryNavigation';\n\nimport { SearchContainer } from './Search/Search';\n\nexport function Header() {\n return (\n \n \n \n \n );\n}\n","import * as React from 'react';\n\nimport { PickerStyleTag } from './Stylesheet/stylesheet';\nimport { Reactions } from './components/Reactions/Reactions';\nimport { Body } from './components/body/Body';\nimport { ElementRefContextProvider } from './components/context/ElementRefContext';\nimport { PickerConfigProvider } from './components/context/PickerConfigContext';\nimport { useReactionsModeState } from './components/context/PickerContext';\nimport { Preview } from './components/footer/Preview';\nimport { Header } from './components/header/Header';\nimport PickerMain from './components/main/PickerMain';\nimport { compareConfig } from './config/compareConfig';\nimport { useAllowExpandReactions, useOpenConfig } from './config/useConfig';\n\nimport { PickerProps } from './index';\n\nfunction EmojiPicker(props: PickerProps) {\n return (\n \n \n \n \n \n \n );\n}\n\nfunction ContentControl() {\n const [reactionsDefaultOpen] = useReactionsModeState();\n const allowExpandReactions = useAllowExpandReactions();\n\n const [renderAll, setRenderAll] = React.useState(!reactionsDefaultOpen);\n const isOpen = useOpenConfig();\n\n React.useEffect(() => {\n if (reactionsDefaultOpen && !allowExpandReactions) {\n return;\n }\n\n if (!renderAll) {\n setRenderAll(true);\n }\n }, [renderAll, allowExpandReactions, reactionsDefaultOpen]);\n\n if (!isOpen) {\n return null;\n }\n\n return (\n \n \n \n \n );\n}\n\nfunction ExpandedPickerContent({ renderAll }: { renderAll: boolean }) {\n if (!renderAll) {\n return null;\n }\n\n return (\n <>\n
\n \n \n \n );\n}\n\n// eslint-disable-next-line complexity\nexport default React.memo(EmojiPicker, compareConfig);\n","import * as React from 'react';\n\nexport default class ErrorBoundary extends React.Component<\n { children: React.ReactNode },\n { hasError: boolean }\n> {\n constructor(props: { children: React.ReactNode }) {\n super(props);\n this.state = { hasError: false };\n }\n\n static getDerivedStateFromError() {\n return { hasError: true };\n }\n\n componentDidCatch(error: Error, errorInfo: any) {\n // eslint-disable-next-line no-console\n console.error('Emoji Picker React failed to render:', error, errorInfo);\n }\n\n render() {\n if (this.state.hasError) {\n return null;\n }\n\n return this.props.children;\n }\n}\n","import * as React from 'react';\n\nimport EmojiPickerReact from './EmojiPickerReact';\nimport ErrorBoundary from './components/ErrorBoundary';\nimport { PickerConfig } from './config/config';\nimport {\n MutableConfigContext,\n useDefineMutableConfig\n} from './config/mutableConfig';\n\nexport { ExportedEmoji as Emoji } from './components/emoji/ExportedEmoji';\n\nexport {\n EmojiStyle,\n SkinTones,\n Theme,\n Categories,\n EmojiClickData,\n SuggestionMode,\n SkinTonePickerLocation\n} from './types/exposedTypes';\n\nexport interface PickerProps extends PickerConfig {}\n\nexport default function EmojiPicker(props: PickerProps) {\n const MutableConfigRef = useDefineMutableConfig({\n onEmojiClick: props.onEmojiClick,\n onReactionClick: props.onReactionClick,\n onSkinToneChange: props.onSkinToneChange,\n });\n\n return (\n \n \n \n \n \n );\n}\n","import React, { Fragment } from 'react';\r\nimport { Modal } from \"semantic-ui-react\";\r\nimport EmojiPicker, { EmojiClickData } from 'emoji-picker-react';\r\n\r\ninterface ModalGetEmojiProps {\r\n isOpen: boolean,\r\n onClose: Function,\r\n getEmoji: Function\r\n}\r\n\r\nconst ModalGetEmoji = ({ isOpen, onClose, getEmoji }: ModalGetEmojiProps) => {\r\n return (\r\n \r\n onClose()}\r\n open={isOpen}\r\n dimmer={{ className: \"test-dimmer\" }}\r\n size={\"tiny\"}\r\n closeIcon\r\n closeOnDimmerClick={false}\r\n >\r\n getEmoji(emojiData)} width=\"100%\" searchDisabled={true} lazyLoadEmojis={true} autoFocusSearch={false}>\r\n \r\n \r\n\r\n );\r\n};\r\n\r\nexport default ModalGetEmoji;\r\n","import React, { Fragment } from 'react';\r\nimport { Button, Grid, Modal } from \"semantic-ui-react\";\r\n\r\ninterface ConfirmCancelDialogProps {\r\n isOpen: boolean,\r\n onDiscard: () => void;\r\n onCancel: () => void;\r\n}\r\n\r\nconst ConfirmCancelDialog = ({ isOpen, onCancel, onDiscard }: ConfirmCancelDialogProps) => {\r\n return (\r\n \r\n onCancel()}\r\n open={isOpen}\r\n dimmer={{ className: \"test-dimmer\" }}\r\n size={\"tiny\"}\r\n closeOnDimmerClick={false}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n Do you want to discard this draft?\r\n \r\n\r\n \r\n onDiscard()}\r\n primary\r\n >\r\n Discard\r\n \r\n onCancel()}>\r\n Cancel\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n );\r\n};\r\n\r\nexport default ConfirmCancelDialog;\r\n","import React, { useEffect, useRef, useState } from \"react\";\r\nimport Styles from \"./EditMessageArea.module.scss\"\r\nimport { EmojiClickData } from \"emoji-picker-react\";\r\nimport Boschicon from \"../boschIcon/Boschicon\";\r\nimport ModalGetEmoji from \"../../components/modals/ModalGetEmoji\";\r\nimport ConfirmCancelDialog from \"../../components/modals/ConfirmCancelDialog\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport Attachment from \"../../containers/InputChat/Attachment\";\r\n\r\ninterface EditMessageAreaProps {\r\n message: any;\r\n hasAttachment: boolean;\r\n attachmentIsImage: boolean;\r\n metadata: any;\r\n userId: string;\r\n createdTimestamp: string | null;\r\n onSave: (m: any, userInput: string) => void;\r\n onDeleteMessage: (m: any) => void;\r\n}\r\n\r\nconst EditMessageArea: React.FC = React.memo(\r\n ({ message, hasAttachment, metadata, attachmentIsImage, userId, createdTimestamp, onSave, onDeleteMessage }) => {\r\n const { t } = useTranslation();\r\n const [userInput, setUserInput] = useState(message ? message.content : \"\");\r\n const inputRef = useRef(null);\r\n const maxSizeMessageInWord = 4000;\r\n const [countWordMesssage, setCountWordMesssage] = useState(0);\r\n const [openEdit, setOpenEdit] = useState(false);\r\n const [openCancelConfirmModal, setOpenCancelConfirmModal] = useState(false);\r\n const [openEmojiModal, setOpenEmojiModal] = useState(false);\r\n\r\n\r\n const updateInputHeight = () => {\r\n if (inputRef.current) {\r\n let textarea = inputRef.current;\r\n textarea.style.height = 'auto'; // Reset the height to auto to measure scrollHeight\r\n textarea.style.height = `${textarea.scrollHeight}px`; // Set the height based on content\r\n }\r\n }\r\n\r\n const userInputChangeHandler = (e: any) => {\r\n let text = e.target.value || \"\";\r\n let countWord = text.length;\r\n if (countWord <= maxSizeMessageInWord) {\r\n setUserInput(text);\r\n setCountWordMesssage(countWord)\r\n }\r\n\r\n if (countWord > maxSizeMessageInWord) {\r\n let maxSizeMessageInWordInText = text.substring(0, maxSizeMessageInWord);\r\n setUserInput(maxSizeMessageInWordInText);\r\n setCountWordMesssage(maxSizeMessageInWordInText.length)\r\n }\r\n\r\n updateInputHeight();\r\n };\r\n\r\n const insertLineBreak = () => {\r\n const textarea = inputRef.current;\r\n if (!textarea) {\r\n return;\r\n }\r\n const { selectionStart, selectionEnd } = textarea;\r\n const value = textarea.value;\r\n const newText = `${value.substring(0, selectionStart)}\\n${value.substring(selectionEnd)}`;\r\n\r\n setUserInput(newText);\r\n\r\n const newPosition = selectionStart + 1;\r\n textarea.setSelectionRange(newPosition, newPosition);\r\n textarea.style.height = 'auto'; // Reset the height to auto to measure scrollHeight\r\n textarea.style.height = `${textarea.scrollHeight}px`; // Set the height based on content\r\n };\r\n\r\n const resize = (size: string) => {\r\n let size_num = Number(size);\r\n\r\n if (size_num < 1024) return `${size} bytes`;\r\n\r\n return size_num < 1024 * 1024\r\n ? `${String((size_num / 1024).toFixed(2))} KB`\r\n : `${String((size_num / 1024 / 1024).toFixed(2))} MB`;\r\n };\r\n const onHandleSave = (message: any) => {\r\n if (userInput && userInput.trim() != \"\") {\r\n onSave(message, userInput);\r\n setUserInput(\"\");\r\n setOpenEdit(false);\r\n }\r\n };\r\n\r\n const onCancelChange = () => {\r\n setOpenCancelConfirmModal(true)\r\n };\r\n\r\n const handleOnDiscard = () => {\r\n setUserInput(message.content);\r\n setOpenEdit(false)\r\n setOpenCancelConfirmModal(false)\r\n };\r\n\r\n const getEmoji = (data: EmojiClickData) => {\r\n setUserInput(userInput + data.emoji)\r\n setOpenEmojiModal(false)\r\n }\r\n\r\n\r\n useEffect(() => {\r\n updateInputHeight();\r\n }, [inputRef.current, message])\r\n\r\n useEffect(() => {\r\n setCountWordMesssage(message.content.length || 0);\r\n setUserInput(message.content);\r\n }, [message])\r\n\r\n return (\r\n <>\r\n
\r\n
\r\n {\r\n !openEdit && (\r\n \r\n )\r\n }\r\n {\r\n openEdit && (\r\n
\r\n ) => {\r\n if (e.key === 'Enter') {\r\n e.preventDefault();\r\n insertLineBreak();\r\n }\r\n }}\r\n ref={inputRef}\r\n />\r\n
\r\n\r\n
= maxSizeMessageInWord) ? `${Styles[\"input-text-count\"]} ${Styles[\"limited\"]}` : `${Styles[\"input-text-count\"]}`}>\r\n

{`${countWordMesssage}/${maxSizeMessageInWord}`}

\r\n
\r\n\r\n
\r\n
\r\n\r\n
\r\n
\r\n\r\n
\r\n setOpenEmojiModal(true)} />\r\n
\r\n\r\n
\r\n
\r\n\r\n
\r\n
\r\n\r\n
\r\n onCancelChange()} />\r\n
\r\n
\r\n { onHandleSave(message) }} />\r\n
\r\n
\r\n
\r\n\r\n )\r\n }\r\n
\r\n
\r\n {openCancelConfirmModal && (\r\n handleOnDiscard()} onCancel={() => setOpenCancelConfirmModal(false)} />\r\n )}\r\n {openEmojiModal && (\r\n
\r\n getEmoji(e)}\r\n onClose={() => setOpenEmojiModal(false)}\r\n isOpen={openEmojiModal} />\r\n
\r\n\r\n )}\r\n\r\n \r\n\r\n );\r\n }\r\n);\r\n\r\nexport default EditMessageArea;\r\n","import React, { Fragment, useEffect, useState } from 'react';\r\nimport {\r\n ChatBubble,\r\n ChatBubbleContainer,\r\n formatDate,\r\n InfiniteList,\r\n MessageAttachment\r\n} from 'amazon-chime-sdk-component-library-react';\r\n\r\nimport {\r\n listChannelMessages,\r\n createMemberArn,\r\n MessageType,\r\n updateChannelMessage,\r\n deleteChannelMessage\r\n} from '../../api/ChimeAPI';\r\nimport insertDateHeaders from '../../utilities/insertDateHeaders';\r\n\r\nimport './Messages.css';\r\nimport { useAppDispatch } from '../../redux/store';\r\nimport { ChannelMessagesState, ChannelSetMessage, MessageState, SetIsTranslate, selectIsTranslate } from '../../redux/chimeSlide';\r\nimport { AttachmentService } from '../../services/AttachmentService';\r\nimport Attachment from '../../containers/InputChat/Attachment';\r\nimport { liveTranslateMessage } from '../../helpers/api';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useSelector } from 'react-redux';\r\nimport { CommonService } from '../../services/Common';\r\nimport i18n from '../../translations/i18n';\r\nimport { Modal } from 'semantic-ui-react';\r\nimport { messageListModal, senderENUM } from '../../redux/assistantBot';\r\nimport formatTime from '../../services/FormatTime';\r\nimport EditMessageArea from '../../common-components/EditMessageArea/EditMessageArea';\r\ninterface MessagesProps {\r\n messages: MessageState,\r\n channelArn: string,\r\n userId: string,\r\n translateModeData: any\r\n}\r\n\r\nconst Messages = ({ messages, channelArn, userId, translateModeData }: MessagesProps) => {\r\n const { t } = useTranslation()\r\n const [isLoading, setIsLoading] = useState(false);\r\n const [triggerShowHistoryModal, setTriggerShowHistoryModal] = useState(false);\r\n const [listOnHideHistoryMessage, setListOnHideHistoryMessage] = useState([]);\r\n const [historyChatData, setHistoryChatData] = useState([]);\r\n const [messageHistoryListState, setMessageHistoryListState] = useState(null);\r\n const isTranslate = useSelector(selectIsTranslate);\r\n const dispatchReduxToolkit = useAppDispatch();\r\n var isLoadImg = false;\r\n const browserLanguage = i18n.language;\r\n const resize = (size: string) => {\r\n let size_num = Number(size)\r\n return size_num < 1024 ? `${size} bytes` : size_num < 1024 * 1024 ? `${String((size_num / 1024).toFixed(2))} KB` : `${String((size_num / 1024 / 1024).toFixed(2))} MB`\r\n }\r\n\r\n const onTranslate = async (message: string) => {\r\n if (isTranslate.status) {\r\n dispatchReduxToolkit(SetIsTranslate({\r\n status: false,\r\n langSource: \"auto\",\r\n langTarget: \"auto\",\r\n languagebox: false\r\n }));\r\n } else {\r\n let messageDetectLanguage = await CommonService.detectLanguage({ text: message });\r\n dispatchReduxToolkit(SetIsTranslate({\r\n status: true,\r\n langSource: messageDetectLanguage,\r\n langTarget: browserLanguage,\r\n languagebox: true\r\n }));\r\n }\r\n\r\n }\r\n\r\n const handleScrollTop = async () => {\r\n\r\n if (isLoadImg) {\r\n isLoadImg = false;\r\n return;\r\n }\r\n\r\n setIsLoading(true);\r\n if (!messages?.NextToken) {\r\n console.log('No new messages');\r\n setIsLoading(false);\r\n return;\r\n }\r\n\r\n const oldMessages = await listChannelMessages(\r\n channelArn,\r\n userId,\r\n messages.NextToken\r\n );\r\n\r\n const message_translate = await Promise.all(oldMessages.Messages.map(async (message: any) => {\r\n if (createMemberArn(userId) !== message.Sender.Arn && translateModeData.isTranslate) {\r\n // const sourceLanguageCode = JSON.parse(message.Metadata)?.language || \"\";\r\n const translateMessage = await liveTranslateMessage(message.Content, translateModeData.langSource, translateModeData.langTarget);\r\n return { ...message, Content: translateMessage }\r\n }\r\n return message;\r\n }));\r\n\r\n const newMessages = [...message_translate, ...messages?.ChannelMessages ? messages.ChannelMessages : []];\r\n\r\n dispatchReduxToolkit(ChannelSetMessage({ ChannelMessages: newMessages, NextToken: oldMessages.NextToken }));\r\n // setChannelMessageToken(oldMessages.NextToken);\r\n setIsLoading(false);\r\n };\r\n\r\n let lastSeen = -1;\r\n let lastSent = -1;\r\n\r\n const messageListHistory = (flattenedMessages: messageListModal[], senderName: string) => {\r\n return flattenedMessages.map((m, i, self) => {\r\n if (!m.message) {\r\n return m;\r\n }\r\n\r\n let metadata: {\r\n isMeetingInfo: boolean,\r\n attachment: {\r\n fileKey: string,\r\n type: string,\r\n size: string,\r\n name: string\r\n },\r\n status: string,\r\n meeting: {\r\n meetingId: string,\r\n pathRoute: string\r\n },\r\n onStartVoiceCall: boolean\r\n } = {\r\n isMeetingInfo: false,\r\n attachment: {\r\n fileKey: '',\r\n type: '',\r\n size: '',\r\n name: ''\r\n },\r\n status: '',\r\n meeting: {\r\n meetingId: '',\r\n pathRoute: ''\r\n },\r\n onStartVoiceCall: false\r\n };\r\n\r\n if (m.metaData) {\r\n metadata = JSON.parse(m.metaData);\r\n if (metadata.isMeetingInfo) {\r\n return m;\r\n };\r\n }\r\n\r\n //check sender name\r\n let senderNameDetect = \"\";\r\n switch (m.sender) {\r\n case senderENUM.boschExpert:\r\n senderNameDetect = t(\"BoschExpert_Label_Sender\");\r\n break;\r\n case senderENUM.assistant:\r\n senderNameDetect = t(\"Assistant_Label_Bot\");\r\n break;\r\n case senderENUM.member:\r\n senderNameDetect = senderName || \"\";\r\n break;\r\n case senderENUM.user:\r\n senderNameDetect = senderName || \"\";\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n
\r\n {m.message}\r\n
\r\n \r\n
{m.datetime}
\r\n \r\n
\r\n );\r\n });\r\n }\r\n\r\n const handleShowHideHistoryMessage = (massage: any, senderName: string) => {\r\n let messageId = massage.messageId;\r\n let checkIncluded = listOnHideHistoryMessage.includes(messageId);\r\n\r\n\r\n\r\n if (checkIncluded) {\r\n let messageInMetaData = JSON.parse(massage.metadata).botHistory;\r\n return (<>\r\n {\r\n messageListHistory(messageInMetaData, senderName)\r\n }\r\n \r\n )\r\n } else {\r\n const senderName = massage.senderName;\r\n const messageReturn = t(\"Channel_noti_joined_message\").replace(\"[name]\", senderName || \"\");\r\n return (<>\r\n \r\n )\r\n }\r\n }\r\n\r\n const handleShowHideAction = (messageId: string, onShow: boolean) => {\r\n if (onShow) {\r\n let newListMessageId = listOnHideHistoryMessage.concat(messageId);\r\n setListOnHideHistoryMessage(newListMessageId);\r\n } else {\r\n let newListMessageId = listOnHideHistoryMessage.filter(item => item !== messageId);\r\n setListOnHideHistoryMessage(newListMessageId);\r\n }\r\n }\r\n\r\n\r\n\r\n const removeDuplicatesMessageFunc = (messageList: ChannelMessagesState[]) => {\r\n\r\n const uniqueMessages: { [key: string]: boolean } = {};\r\n const result: ChannelMessagesState[] = [];\r\n\r\n for (const message of messageList) {\r\n let metaData = JSON.parse(message.Metadata)?.type;\r\n if (metaData && metaData === 'history') {\r\n const key = `${message.Sender.Name}_${metaData}`;\r\n if (!uniqueMessages[key]) {\r\n result.push(message);\r\n uniqueMessages[key] = true;\r\n }\r\n } else {\r\n result.push(message);\r\n }\r\n\r\n }\r\n\r\n return result;\r\n };\r\n const fillerDuplicateMessages = removeDuplicatesMessageFunc(messages.ChannelMessages);\r\n const flattenedMessages = fillerDuplicateMessages.filter((m: ChannelMessagesState, index: number) => {\r\n const messageWithDeleted = JSON.parse(m.Metadata)?.deleted ? true : false;\r\n const messageWithTypeControl = m.Type !== MessageType.CONTROL ? true : false;\r\n return !messageWithDeleted && messageWithTypeControl;\r\n }).map((m: ChannelMessagesState, index: number) => {\r\n\r\n const content = !m.Content || m.Redacted ? '(Deleted)' : m.Content;\r\n let editedNote;\r\n if (m.LastEditedTimestamp && !m.Redacted) {\r\n const time = formatTime(m.LastEditedTimestamp);\r\n const date = formatDate(\r\n m.LastEditedTimestamp,\r\n undefined,\r\n undefined,\r\n 'today',\r\n 'yesterday'\r\n );\r\n editedNote = (\r\n {` (edited ${date} at ${time})`}\r\n );\r\n }\r\n\r\n const messageStatus = m.Status.Value == null ? 'SENT' : m.Status.Value;\r\n let statusNote;\r\n if (messageStatus !== 'SENT') {\r\n statusNote = (\r\n {` (${messageStatus})`}\r\n );\r\n } else {\r\n lastSent = index;\r\n }\r\n\r\n if (m.Metadata && m.Sender.Arn === createMemberArn(userId)) {\r\n lastSeen = JSON.parse(m.Metadata)?.status === \"Read\" ? index : lastSeen;\r\n }\r\n\r\n return {\r\n content: content,\r\n editedNote: editedNote,\r\n messageId: m.MessageId,\r\n createdTimestamp: m.CreatedTimestamp,\r\n redacted: m.Redacted,\r\n senderName: m.Sender.Name,\r\n senderId: m.Sender.Arn,\r\n metadata: m.Metadata,\r\n status: m.Status.Value,\r\n statusNote: statusNote\r\n };\r\n });\r\n\r\n const attachmentService = AttachmentService.getInstance();\r\n\r\n const onloadimg = () => {\r\n isLoadImg = true;\r\n }\r\n\r\n const handleDeleteMessage = async (m: any) => {\r\n await deleteChannelMessage(\r\n channelArn,\r\n userId,\r\n m.messageId\r\n );\r\n };\r\n\r\n const handleUpdateMessage = async (m: any, userInput: string) => {\r\n await updateChannelMessage(\r\n channelArn,\r\n m.messageId,\r\n userInput,\r\n m.metadata,\r\n userId,\r\n );\r\n };\r\n\r\n const listItems = insertDateHeaders(flattenedMessages);\r\n\r\n const messageList = listItems.map((m, i, self) => {\r\n\r\n if (!m.content) {\r\n return m;\r\n }\r\n\r\n let hasAttachment = -1;\r\n\r\n let metadata: {\r\n isMeetingInfo: boolean,\r\n attachment: {\r\n fileKey: string,\r\n type: string,\r\n size: string,\r\n name: string,\r\n requestType?: string;\r\n },\r\n status: string,\r\n meeting: {\r\n meetingId: string,\r\n pathRoute: string\r\n },\r\n onStartVoiceCall: boolean,\r\n botHistory: any,\r\n type: string\r\n } = {\r\n isMeetingInfo: false,\r\n attachment: {\r\n fileKey: '',\r\n type: '',\r\n size: '',\r\n name: ''\r\n },\r\n status: '',\r\n meeting: {\r\n meetingId: '',\r\n pathRoute: ''\r\n },\r\n onStartVoiceCall: false,\r\n botHistory: null,\r\n type: ''\r\n };\r\n\r\n let preSignURL;\r\n let isHistoryMessage = false\r\n\r\n if (m.metadata) {\r\n metadata = JSON.parse(m.metadata);\r\n\r\n if (metadata.type === \"history\") {\r\n isHistoryMessage = true\r\n }\r\n\r\n if (metadata.isMeetingInfo) {\r\n return m;\r\n };\r\n\r\n if (metadata?.attachment?.fileKey) {\r\n preSignURL = attachmentService.getPresignURL(metadata.attachment.fileKey);\r\n if (metadata.attachment?.type.includes('image')) {\r\n hasAttachment = 0;\r\n } else {\r\n hasAttachment = 1;\r\n }\r\n }\r\n }\r\n\r\n const variant = createMemberArn(userId) === m.senderId ? 'outgoing' : 'incoming';\r\n\r\n const prevMessage = self[i - 1];\r\n const nextMessage = self[i + 1];\r\n // if (!m.content) {\r\n // nextMessage = self[i + 2];\r\n // }\r\n\r\n let statusMessageShow = true;\r\n let showName = true;\r\n let createdTimestamp = null;\r\n\r\n if (m.senderId && prevMessage) {\r\n let prevMessageMetadata = prevMessage.metadata ? JSON.parse(prevMessage.metadata) : null;\r\n let isPrevHistoryMessage = prevMessageMetadata ? (prevMessageMetadata.type === 'history' ? true : false) : false;\r\n if (prevMessage?.senderId && m.senderId === prevMessage?.senderId && !isPrevHistoryMessage) {\r\n showName = false;\r\n }\r\n }\r\n\r\n createdTimestamp = formatTime(m.createdTimestamp);\r\n\r\n if (m.senderId && nextMessage?.senderId && m.senderId === nextMessage?.senderId) {\r\n try {\r\n\r\n if (nextMessage.status === m.status) {\r\n statusMessageShow = false;\r\n }\r\n //TODO:\r\n // if (nextMessage.metadata != m.metadata) {\r\n // statusMessageShow = true;\r\n // }\r\n\r\n if (JSON.parse(nextMessage.metadata || { status: \"\" }).status != metadata.status) {\r\n statusMessageShow = true;\r\n }\r\n\r\n if ((Math.abs(nextMessage.createdTimestamp.getTime() - m.createdTimestamp.getTime()) / 1000 / 60) > 1) {\r\n createdTimestamp = formatTime(m.createdTimestamp);\r\n } else {\r\n createdTimestamp = null;\r\n }\r\n } catch {\r\n createdTimestamp = null;\r\n }\r\n }\r\n\r\n if (metadata.status !== \"\" && i < (lastSeen + (self.length - flattenedMessages.length) - 1)) {\r\n statusMessageShow = false;\r\n }\r\n if (metadata.status == \"\" && (i <= (lastSent + (self.length - flattenedMessages.length) - 1) || i <= (lastSeen + (self.length - flattenedMessages.length) - 1))) {\r\n statusMessageShow = false;\r\n }\r\n if (nextMessage) {\r\n statusMessageShow = false;\r\n }\r\n if (variant === 'outgoing' && statusMessageShow)\r\n\r\n if (metadata.status) {\r\n createdTimestamp = createdTimestamp ? createdTimestamp + \" (Read)\" : \"(Read)\";\r\n } else {\r\n createdTimestamp = createdTimestamp ? createdTimestamp + \" (Sent)\" : \"(Sent)\";\r\n }\r\n\r\n return (\r\n
\r\n {\r\n !isHistoryMessage ? (\r\n <>\r\n {variant === 'outgoing' ? <>\r\n { handleUpdateMessage(message, userInput) }}\r\n onDeleteMessage={(message: any) => {\r\n handleDeleteMessage(message);\r\n }} />\r\n {/* \r\n\r\n \r\n {hasAttachment !== -1 &&\r\n
\r\n {hasAttachment === 0 &&\r\n \r\n }\r\n {hasAttachment === 1 &&\r\n \r\n }\r\n
\r\n }\r\n {m.content}\r\n {metadata?.meeting?.meetingId && Link}\r\n\r\n \r\n */}\r\n :\r\n \r\n {showName ?\r\n <>\r\n \r\n {hasAttachment !== -1 &&\r\n
\r\n {hasAttachment === 0 &&\r\n \r\n }\r\n {hasAttachment === 1 &&\r\n \r\n }\r\n
\r\n }\r\n
\r\n {m.content}\r\n {metadata?.meeting?.meetingId && Link}\r\n {metadata?.botHistory && hanldeOpenShowHistoryModal(metadata.botHistory)}> View}\r\n {\r\n ((m.content.trim() !== \"\")) && (<>\r\n

\r\n onTranslate(m.content)}>{isTranslate.status ? t('Dis_translation') : t('En_translation')}\r\n )\r\n\r\n }\r\n
\r\n \r\n
{createdTimestamp}
\r\n \r\n\r\n :\r\n <>\r\n \r\n
\r\n {hasAttachment !== -1 &&\r\n
\r\n {hasAttachment === 0 &&\r\n \r\n }\r\n {hasAttachment === 1 &&\r\n \r\n }\r\n
\r\n }\r\n {m.content}\r\n {metadata?.meeting?.meetingId && Link}\r\n {metadata?.botHistory && hanldeOpenShowHistoryModal(metadata.botHistory)}>View}\r\n {\r\n ((m.content.trim() !== \"\")) && (<>\r\n

\r\n onTranslate(m.content)}>{isTranslate.status ? t('Dis_translation') : t('En_translation')}\r\n )\r\n\r\n }\r\n\r\n
\r\n \r\n
{createdTimestamp}
\r\n \r\n\r\n }\r\n \r\n }\r\n \r\n ) : (\r\n <>\r\n {handleShowHideHistoryMessage(m, m.senderName)}\r\n \r\n )\r\n }\r\n
\r\n );\r\n });\r\n\r\n\r\n useEffect(() => {\r\n if (historyChatData && historyChatData.length > 0) {\r\n const messageHistoryList = historyChatData.map((m: any, i: any) => {\r\n if (!m.message || m.sender === senderENUM.system) {\r\n return <>;\r\n }\r\n\r\n const variant = m.sender === senderENUM.user ? \"outgoing\" : \"incoming\";\r\n\r\n return (\r\n
\r\n {variant === \"outgoing\" ? (\r\n <>\r\n \r\n \r\n
\r\n {m.message}\r\n
\r\n \r\n \r\n \r\n ) : (\r\n \r\n {m.sender === senderENUM.system ? (\r\n
\r\n

{m.message}

\r\n
\r\n ) :\r\n
\r\n \r\n \r\n
\r\n {m.message}\r\n
\r\n \r\n
{m.datetime}
\r\n \r\n
\r\n }\r\n
\r\n )}\r\n
\r\n );\r\n });\r\n setMessageHistoryListState(messageHistoryList)\r\n }\r\n }, [historyChatData])\r\n\r\n\r\n const hanldeOpenShowHistoryModal = (massage: any) => {\r\n setTriggerShowHistoryModal(true)\r\n setHistoryChatData(massage);\r\n }\r\n\r\n return (\r\n
\r\n {(messages) &&\r\n \r\n }\r\n {\r\n messageList.length == 0 && (\r\n
\r\n

{t(\"Write_something\")}

\r\n
\r\n )\r\n }\r\n {\r\n (triggerShowHistoryModal && messageHistoryListState) &&\r\n (\r\n setTriggerShowHistoryModal(false)}\r\n >\r\n
\r\n
\r\n
\r\n
\r\n
\r\n

\r\n \r\n

\r\n
\r\n
\r\n\r\n
\r\n \r\n )\r\n }\r\n
\r\n );\r\n};\r\nexport default Messages;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport cx from 'clsx';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport { childrenUtils, customPropTypes, getElementType, getUnhandledProps } from '../../lib';\n/**\n * A message can contain a content.\n */\n\nfunction MessageContent(props) {\n var children = props.children,\n className = props.className,\n content = props.content;\n var classes = cx('content', className);\n var rest = getUnhandledProps(MessageContent, props);\n var ElementType = getElementType(MessageContent, props);\n return /*#__PURE__*/React.createElement(ElementType, _extends({}, rest, {\n className: classes\n }), childrenUtils.isNil(children) ? content : children);\n}\n\nMessageContent.handledProps = [\"as\", \"children\", \"className\", \"content\"];\nMessageContent.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /** An element type to render as (string or function). */\n as: PropTypes.elementType,\n\n /** Primary content. */\n children: PropTypes.node,\n\n /** Additional classes. */\n className: PropTypes.string,\n\n /** Shorthand for primary content. */\n content: customPropTypes.contentShorthand\n} : {};\nexport default MessageContent;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport cx from 'clsx';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport { childrenUtils, createShorthandFactory, customPropTypes, getElementType, getUnhandledProps } from '../../lib';\n/**\n * A message can contain a header.\n */\n\nfunction MessageHeader(props) {\n var children = props.children,\n className = props.className,\n content = props.content;\n var classes = cx('header', className);\n var rest = getUnhandledProps(MessageHeader, props);\n var ElementType = getElementType(MessageHeader, props);\n return /*#__PURE__*/React.createElement(ElementType, _extends({}, rest, {\n className: classes\n }), childrenUtils.isNil(children) ? content : children);\n}\n\nMessageHeader.handledProps = [\"as\", \"children\", \"className\", \"content\"];\nMessageHeader.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /** An element type to render as (string or function). */\n as: PropTypes.elementType,\n\n /** Primary content. */\n children: PropTypes.node,\n\n /** Additional classes. */\n className: PropTypes.string,\n\n /** Shorthand for primary content. */\n content: customPropTypes.contentShorthand\n} : {};\nMessageHeader.create = createShorthandFactory(MessageHeader, function (val) {\n return {\n content: val\n };\n});\nexport default MessageHeader;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport cx from 'clsx';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport { childrenUtils, createShorthandFactory, customPropTypes, getElementType, getUnhandledProps } from '../../lib';\n/**\n * A message list can contain an item.\n */\n\nfunction MessageItem(props) {\n var children = props.children,\n className = props.className,\n content = props.content;\n var classes = cx('content', className);\n var rest = getUnhandledProps(MessageItem, props);\n var ElementType = getElementType(MessageItem, props);\n return /*#__PURE__*/React.createElement(ElementType, _extends({}, rest, {\n className: classes\n }), childrenUtils.isNil(children) ? content : children);\n}\n\nMessageItem.handledProps = [\"as\", \"children\", \"className\", \"content\"];\nMessageItem.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /** An element type to render as (string or function). */\n as: PropTypes.elementType,\n\n /** Primary content. */\n children: PropTypes.node,\n\n /** Additional classes. */\n className: PropTypes.string,\n\n /** Shorthand for primary content. */\n content: customPropTypes.contentShorthand\n} : {};\nMessageItem.defaultProps = {\n as: 'li'\n};\nMessageItem.create = createShorthandFactory(MessageItem, function (content) {\n return {\n content: content\n };\n});\nexport default MessageItem;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _map from \"lodash-es/map\";\nimport cx from 'clsx';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport { childrenUtils, createShorthandFactory, customPropTypes, getElementType, getUnhandledProps } from '../../lib';\nimport MessageItem from './MessageItem';\n/**\n * A message can contain a list of items.\n */\n\nfunction MessageList(props) {\n var children = props.children,\n className = props.className,\n items = props.items;\n var classes = cx('list', className);\n var rest = getUnhandledProps(MessageList, props);\n var ElementType = getElementType(MessageList, props);\n return /*#__PURE__*/React.createElement(ElementType, _extends({}, rest, {\n className: classes\n }), childrenUtils.isNil(children) ? _map(items, MessageItem.create) : children);\n}\n\nMessageList.handledProps = [\"as\", \"children\", \"className\", \"items\"];\nMessageList.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /** An element type to render as (string or function). */\n as: PropTypes.elementType,\n\n /** Primary content. */\n children: PropTypes.node,\n\n /** Additional classes. */\n className: PropTypes.string,\n\n /** Shorthand Message.Items. */\n items: customPropTypes.collectionShorthand\n} : {};\nMessageList.defaultProps = {\n as: 'ul'\n};\nMessageList.create = createShorthandFactory(MessageList, function (val) {\n return {\n items: val\n };\n});\nexport default MessageList;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport _without from \"lodash-es/without\";\nimport _isNil from \"lodash-es/isNil\";\nimport cx from 'clsx';\nimport PropTypes from 'prop-types';\nimport React, { Component } from 'react';\nimport { childrenUtils, createHTMLParagraph, customPropTypes, getElementType, getUnhandledProps, SUI, useKeyOnly, useKeyOrValueAndKey } from '../../lib';\nimport Icon from '../../elements/Icon';\nimport MessageContent from './MessageContent';\nimport MessageHeader from './MessageHeader';\nimport MessageList from './MessageList';\nimport MessageItem from './MessageItem';\n/**\n * A message displays information that explains nearby content.\n * @see Form\n */\n\nvar Message = /*#__PURE__*/function (_Component) {\n _inheritsLoose(Message, _Component);\n\n function Message() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _Component.call.apply(_Component, [this].concat(args)) || this;\n\n _this.handleDismiss = function (e) {\n var onDismiss = _this.props.onDismiss;\n if (onDismiss) onDismiss(e, _this.props);\n };\n\n return _this;\n }\n\n var _proto = Message.prototype;\n\n _proto.render = function render() {\n var _this$props = this.props,\n attached = _this$props.attached,\n children = _this$props.children,\n className = _this$props.className,\n color = _this$props.color,\n compact = _this$props.compact,\n content = _this$props.content,\n error = _this$props.error,\n floating = _this$props.floating,\n header = _this$props.header,\n hidden = _this$props.hidden,\n icon = _this$props.icon,\n info = _this$props.info,\n list = _this$props.list,\n negative = _this$props.negative,\n onDismiss = _this$props.onDismiss,\n positive = _this$props.positive,\n size = _this$props.size,\n success = _this$props.success,\n visible = _this$props.visible,\n warning = _this$props.warning;\n var classes = cx('ui', color, size, useKeyOnly(compact, 'compact'), useKeyOnly(error, 'error'), useKeyOnly(floating, 'floating'), useKeyOnly(hidden, 'hidden'), useKeyOnly(icon, 'icon'), useKeyOnly(info, 'info'), useKeyOnly(negative, 'negative'), useKeyOnly(positive, 'positive'), useKeyOnly(success, 'success'), useKeyOnly(visible, 'visible'), useKeyOnly(warning, 'warning'), useKeyOrValueAndKey(attached, 'attached'), 'message', className);\n var dismissIcon = onDismiss && /*#__PURE__*/React.createElement(Icon, {\n name: \"close\",\n onClick: this.handleDismiss\n });\n var rest = getUnhandledProps(Message, this.props);\n var ElementType = getElementType(Message, this.props);\n\n if (!childrenUtils.isNil(children)) {\n return /*#__PURE__*/React.createElement(ElementType, _extends({}, rest, {\n className: classes\n }), dismissIcon, children);\n }\n\n return /*#__PURE__*/React.createElement(ElementType, _extends({}, rest, {\n className: classes\n }), dismissIcon, Icon.create(icon, {\n autoGenerateKey: false\n }), (!_isNil(header) || !_isNil(content) || !_isNil(list)) && /*#__PURE__*/React.createElement(MessageContent, null, MessageHeader.create(header, {\n autoGenerateKey: false\n }), MessageList.create(list, {\n autoGenerateKey: false\n }), createHTMLParagraph(content, {\n autoGenerateKey: false\n })));\n };\n\n return Message;\n}(Component);\n\nMessage.handledProps = [\"as\", \"attached\", \"children\", \"className\", \"color\", \"compact\", \"content\", \"error\", \"floating\", \"header\", \"hidden\", \"icon\", \"info\", \"list\", \"negative\", \"onDismiss\", \"positive\", \"size\", \"success\", \"visible\", \"warning\"];\nexport { Message as default };\nMessage.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /** An element type to render as (string or function). */\n as: PropTypes.elementType,\n\n /** A message can be formatted to attach itself to other content. */\n attached: PropTypes.oneOfType([PropTypes.bool, PropTypes.oneOf(['bottom', 'top'])]),\n\n /** Primary content. */\n children: PropTypes.node,\n\n /** Additional classes. */\n className: PropTypes.string,\n\n /** A message can be formatted to be different colors. */\n color: PropTypes.oneOf(SUI.COLORS),\n\n /** A message can only take up the width of its content. */\n compact: PropTypes.bool,\n\n /** Shorthand for primary content. */\n content: customPropTypes.contentShorthand,\n\n /** A message may be formatted to display a negative message. Same as `negative`. */\n error: PropTypes.bool,\n\n /** A message can float above content that it is related to. */\n floating: PropTypes.bool,\n\n /** Shorthand for MessageHeader. */\n header: customPropTypes.itemShorthand,\n\n /** A message can be hidden. */\n hidden: PropTypes.bool,\n\n /** A message can contain an icon. */\n icon: PropTypes.oneOfType([customPropTypes.itemShorthand, PropTypes.bool]),\n\n /** A message may be formatted to display information. */\n info: PropTypes.bool,\n\n /** Array shorthand items for the MessageList. Mutually exclusive with children. */\n list: customPropTypes.collectionShorthand,\n\n /** A message may be formatted to display a negative message. Same as `error`. */\n negative: PropTypes.bool,\n\n /**\n * A message that the user can choose to hide.\n * Called when the user clicks the \"x\" icon. This also adds the \"x\" icon.\n *\n * @param {SyntheticEvent} event - React's original SyntheticEvent.\n * @param {object} data - All props.\n */\n onDismiss: PropTypes.func,\n\n /** A message may be formatted to display a positive message. Same as `success`. */\n positive: PropTypes.bool,\n\n /** A message can have different sizes. */\n size: PropTypes.oneOf(_without(SUI.SIZES, 'medium')),\n\n /** A message may be formatted to display a positive message. Same as `positive`. */\n success: PropTypes.bool,\n\n /** A message can be set to visible to force itself to be shown. */\n visible: PropTypes.bool,\n\n /** A message may be formatted to display warning messages. */\n warning: PropTypes.bool\n} : {};\nMessage.Content = MessageContent;\nMessage.Header = MessageHeader;\nMessage.List = MessageList;\nMessage.Item = MessageItem;","import root from './_root.js';\nimport toInteger from './toInteger.js';\nimport toNumber from './toNumber.js';\nimport toString from './toString.js';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsFinite = root.isFinite,\n nativeMin = Math.min;\n\n/**\n * Creates a function like `_.round`.\n *\n * @private\n * @param {string} methodName The name of the `Math` method to use when rounding.\n * @returns {Function} Returns the new round function.\n */\nfunction createRound(methodName) {\n var func = Math[methodName];\n return function(number, precision) {\n number = toNumber(number);\n precision = precision == null ? 0 : nativeMin(toInteger(precision), 292);\n if (precision && nativeIsFinite(number)) {\n // Shift with exponential notation to avoid floating-point issues.\n // See [MDN](https://mdn.io/round#Examples) for more details.\n var pair = (toString(number) + 'e').split('e'),\n value = func(pair[0] + 'e' + (+pair[1] + precision));\n\n pair = (toString(value) + 'e').split('e');\n return +(pair[0] + 'e' + (+pair[1] - precision));\n }\n return func(number);\n };\n}\n\nexport default createRound;\n","import createRound from './_createRound.js';\n\n/**\n * Computes `number` rounded to `precision`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Math\n * @param {number} number The number to round.\n * @param {number} [precision=0] The precision to round to.\n * @returns {number} Returns the rounded number.\n * @example\n *\n * _.round(4.006);\n * // => 4\n *\n * _.round(4.006, 2);\n * // => 4.01\n *\n * _.round(4060, -2);\n * // => 4100\n */\nvar round = createRound('round');\n\nexport default round;\n","/**\n * The base implementation of `_.clamp` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n */\nfunction baseClamp(number, lower, upper) {\n if (number === number) {\n if (upper !== undefined) {\n number = number <= upper ? number : upper;\n }\n if (lower !== undefined) {\n number = number >= lower ? number : lower;\n }\n }\n return number;\n}\n\nexport default baseClamp;\n","import baseClamp from './_baseClamp.js';\nimport toNumber from './toNumber.js';\n\n/**\n * Clamps `number` within the inclusive `lower` and `upper` bounds.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Number\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n * @example\n *\n * _.clamp(-10, -5, 5);\n * // => -5\n *\n * _.clamp(10, -5, 5);\n * // => 5\n */\nfunction clamp(number, lower, upper) {\n if (upper === undefined) {\n upper = lower;\n lower = undefined;\n }\n if (upper !== undefined) {\n upper = toNumber(upper);\n upper = upper === upper ? upper : 0;\n }\n if (lower !== undefined) {\n lower = toNumber(lower);\n lower = lower === lower ? lower : 0;\n }\n return baseClamp(toNumber(number), lower, upper);\n}\n\nexport default clamp;\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport _without from \"lodash-es/without\";\nimport _round from \"lodash-es/round\";\nimport _clamp from \"lodash-es/clamp\";\nimport _isUndefined from \"lodash-es/isUndefined\";\nimport cx from 'clsx';\nimport PropTypes from 'prop-types';\nimport React, { Component } from 'react';\nimport { childrenUtils, createHTMLDivision, customPropTypes, getElementType, getUnhandledProps, SUI, useKeyOnly, useValueAndKey } from '../../lib';\n/**\n * A progress bar shows the progression of a task.\n */\n\nvar Progress = /*#__PURE__*/function (_Component) {\n _inheritsLoose(Progress, _Component);\n\n function Progress() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _Component.call.apply(_Component, [this].concat(args)) || this;\n\n _this.calculatePercent = function () {\n var _this$props = _this.props,\n percent = _this$props.percent,\n total = _this$props.total,\n value = _this$props.value;\n if (!_isUndefined(percent)) return percent;\n if (!_isUndefined(total) && !_isUndefined(value)) return value / total * 100;\n };\n\n _this.computeValueText = function (percent) {\n var _this$props2 = _this.props,\n progress = _this$props2.progress,\n total = _this$props2.total,\n value = _this$props2.value;\n if (progress === 'value') return value;\n if (progress === 'ratio') return value + \"/\" + total;\n return percent + \"%\";\n };\n\n _this.getPercent = function () {\n var _this$props3 = _this.props,\n precision = _this$props3.precision,\n progress = _this$props3.progress,\n total = _this$props3.total,\n value = _this$props3.value;\n\n var percent = _clamp(_this.calculatePercent(), 0, 100);\n\n if (!_isUndefined(total) && !_isUndefined(value) && progress === 'value') {\n return value / total * 100;\n }\n\n if (progress === 'value') return value;\n if (_isUndefined(precision)) return percent;\n return _round(percent, precision);\n };\n\n _this.isAutoSuccess = function () {\n var _this$props4 = _this.props,\n autoSuccess = _this$props4.autoSuccess,\n percent = _this$props4.percent,\n total = _this$props4.total,\n value = _this$props4.value;\n return autoSuccess && (percent >= 100 || value >= total);\n };\n\n _this.renderLabel = function () {\n var _this$props5 = _this.props,\n children = _this$props5.children,\n content = _this$props5.content,\n label = _this$props5.label;\n if (!childrenUtils.isNil(children)) return /*#__PURE__*/React.createElement(\"div\", {\n className: \"label\"\n }, children);\n if (!childrenUtils.isNil(content)) return /*#__PURE__*/React.createElement(\"div\", {\n className: \"label\"\n }, content);\n return createHTMLDivision(label, {\n autoGenerateKey: false,\n defaultProps: {\n className: 'label'\n }\n });\n };\n\n _this.renderProgress = function (percent) {\n var _this$props6 = _this.props,\n precision = _this$props6.precision,\n progress = _this$props6.progress;\n if (!progress && _isUndefined(precision)) return;\n return /*#__PURE__*/React.createElement(\"div\", {\n className: \"progress\"\n }, _this.computeValueText(percent));\n };\n\n return _this;\n }\n\n var _proto = Progress.prototype;\n\n _proto.render = function render() {\n var _this$props7 = this.props,\n active = _this$props7.active,\n attached = _this$props7.attached,\n className = _this$props7.className,\n color = _this$props7.color,\n disabled = _this$props7.disabled,\n error = _this$props7.error,\n indicating = _this$props7.indicating,\n inverted = _this$props7.inverted,\n size = _this$props7.size,\n success = _this$props7.success,\n warning = _this$props7.warning;\n var classes = cx('ui', color, size, useKeyOnly(active || indicating, 'active'), useKeyOnly(disabled, 'disabled'), useKeyOnly(error, 'error'), useKeyOnly(indicating, 'indicating'), useKeyOnly(inverted, 'inverted'), useKeyOnly(success || this.isAutoSuccess(), 'success'), useKeyOnly(warning, 'warning'), useValueAndKey(attached, 'attached'), 'progress', className);\n var rest = getUnhandledProps(Progress, this.props);\n var ElementType = getElementType(Progress, this.props);\n var percent = this.getPercent() || 0;\n return /*#__PURE__*/React.createElement(ElementType, _extends({}, rest, {\n className: classes,\n \"data-percent\": Math.floor(percent)\n }), /*#__PURE__*/React.createElement(\"div\", {\n className: \"bar\",\n style: {\n width: percent + \"%\"\n }\n }, this.renderProgress(percent)), this.renderLabel());\n };\n\n return Progress;\n}(Component);\n\nProgress.handledProps = [\"active\", \"as\", \"attached\", \"autoSuccess\", \"children\", \"className\", \"color\", \"content\", \"disabled\", \"error\", \"indicating\", \"inverted\", \"label\", \"percent\", \"precision\", \"progress\", \"size\", \"success\", \"total\", \"value\", \"warning\"];\nProgress.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /** An element type to render as (string or function). */\n as: PropTypes.elementType,\n\n /** A progress bar can show activity. */\n active: PropTypes.bool,\n\n /** A progress bar can attach to and show the progress of an element (i.e. Card or Segment). */\n attached: PropTypes.oneOf(['top', 'bottom']),\n\n /** Whether success state should automatically trigger when progress completes. */\n autoSuccess: PropTypes.bool,\n\n /** Primary content. */\n children: PropTypes.node,\n\n /** Additional classes. */\n className: PropTypes.string,\n\n /** A progress bar can have different colors. */\n color: PropTypes.oneOf(SUI.COLORS),\n\n /** Shorthand for primary content. */\n content: customPropTypes.contentShorthand,\n\n /** A progress bar be disabled. */\n disabled: PropTypes.bool,\n\n /** A progress bar can show a error state. */\n error: PropTypes.bool,\n\n /** An indicating progress bar visually indicates the current level of progress of a task. */\n indicating: PropTypes.bool,\n\n /** A progress bar can have its colors inverted. */\n inverted: PropTypes.bool,\n\n /** Can be set to either to display progress as percent or ratio. */\n label: customPropTypes.itemShorthand,\n\n /** Current percent complete. */\n percent: customPropTypes.every([customPropTypes.disallow(['total', 'value']), PropTypes.oneOfType([PropTypes.number, PropTypes.string])]),\n\n /** Decimal point precision for calculated progress. */\n precision: PropTypes.number,\n\n /** A progress bar can contain a text value indicating current progress. */\n progress: PropTypes.oneOfType([PropTypes.bool, PropTypes.oneOf(['percent', 'ratio', 'value'])]),\n\n /** A progress bar can vary in size. */\n size: PropTypes.oneOf(_without(SUI.SIZES, 'mini', 'huge', 'massive')),\n\n /** A progress bar can show a success state. */\n success: PropTypes.bool,\n\n /** For use with value. Together, these will calculate the percent. Mutually excludes percent. */\n total: customPropTypes.every([customPropTypes.demand(['value']), customPropTypes.disallow(['percent']), PropTypes.oneOfType([PropTypes.number, PropTypes.string])]),\n\n /** For use with total. Together, these will calculate the percent. Mutually excludes percent. */\n value: customPropTypes.every([customPropTypes.disallow(['percent']), PropTypes.oneOfType([PropTypes.number, PropTypes.string])]),\n\n /** A progress bar can show a warning state. */\n warning: PropTypes.bool\n} : {};\nexport default Progress;","import isObjectLike from './isObjectLike.js';\nimport isPlainObject from './isPlainObject.js';\n\n/**\n * Checks if `value` is likely a DOM element.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a DOM element, else `false`.\n * @example\n *\n * _.isElement(document.body);\n * // => true\n *\n * _.isElement('');\n * // => false\n */\nfunction isElement(value) {\n return isObjectLike(value) && value.nodeType === 1 && !isPlainObject(value);\n}\n\nexport default isElement;\n","import * as React from 'react';\nexport var ManagerReferenceNodeContext = React.createContext();\nexport var ManagerReferenceNodeSetterContext = React.createContext();\nexport function Manager(_ref) {\n var children = _ref.children;\n\n var _React$useState = React.useState(null),\n referenceNode = _React$useState[0],\n setReferenceNode = _React$useState[1];\n\n var hasUnmounted = React.useRef(false);\n React.useEffect(function () {\n return function () {\n hasUnmounted.current = true;\n };\n }, []);\n var handleSetReferenceNode = React.useCallback(function (node) {\n if (!hasUnmounted.current) {\n setReferenceNode(node);\n }\n }, []);\n return /*#__PURE__*/React.createElement(ManagerReferenceNodeContext.Provider, {\n value: referenceNode\n }, /*#__PURE__*/React.createElement(ManagerReferenceNodeSetterContext.Provider, {\n value: handleSetReferenceNode\n }, children));\n}","import * as React from 'react';\n\n/**\n * Takes an argument and if it's an array, returns the first item in the array,\n * otherwise returns the argument. Used for Preact compatibility.\n */\nexport var unwrapArray = function unwrapArray(arg) {\n return Array.isArray(arg) ? arg[0] : arg;\n};\n/**\n * Takes a maybe-undefined function and arbitrary args and invokes the function\n * only if it is defined.\n */\n\nexport var safeInvoke = function safeInvoke(fn) {\n if (typeof fn === 'function') {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return fn.apply(void 0, args);\n }\n};\n/**\n * Sets a ref using either a ref callback or a ref object\n */\n\nexport var setRef = function setRef(ref, node) {\n // if its a function call it\n if (typeof ref === 'function') {\n return safeInvoke(ref, node);\n } // otherwise we should treat it as a ref object\n else if (ref != null) {\n ref.current = node;\n }\n};\n/**\n * Simple ponyfill for Object.fromEntries\n */\n\nexport var fromEntries = function fromEntries(entries) {\n return entries.reduce(function (acc, _ref) {\n var key = _ref[0],\n value = _ref[1];\n acc[key] = value;\n return acc;\n }, {});\n};\n/**\n * Small wrapper around `useLayoutEffect` to get rid of the warning on SSR envs\n */\n\nexport var useIsomorphicLayoutEffect = typeof window !== 'undefined' && window.document && window.document.createElement ? React.useLayoutEffect : React.useEffect;","export default function getWindow(node) {\n if (node == null) {\n return window;\n }\n\n if (node.toString() !== '[object Window]') {\n var ownerDocument = node.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView || window : window;\n }\n\n return node;\n}","import getWindow from \"./getWindow.js\";\n\nfunction isElement(node) {\n var OwnElement = getWindow(node).Element;\n return node instanceof OwnElement || node instanceof Element;\n}\n\nfunction isHTMLElement(node) {\n var OwnElement = getWindow(node).HTMLElement;\n return node instanceof OwnElement || node instanceof HTMLElement;\n}\n\nfunction isShadowRoot(node) {\n // IE 11 has no ShadowRoot\n if (typeof ShadowRoot === 'undefined') {\n return false;\n }\n\n var OwnElement = getWindow(node).ShadowRoot;\n return node instanceof OwnElement || node instanceof ShadowRoot;\n}\n\nexport { isElement, isHTMLElement, isShadowRoot };","export var max = Math.max;\nexport var min = Math.min;\nexport var round = Math.round;","export default function getUAString() {\n var uaData = navigator.userAgentData;\n\n if (uaData != null && uaData.brands && Array.isArray(uaData.brands)) {\n return uaData.brands.map(function (item) {\n return item.brand + \"/\" + item.version;\n }).join(' ');\n }\n\n return navigator.userAgent;\n}","import getUAString from \"../utils/userAgent.js\";\nexport default function isLayoutViewport() {\n return !/^((?!chrome|android).)*safari/i.test(getUAString());\n}","import { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport { round } from \"../utils/math.js\";\nimport getWindow from \"./getWindow.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getBoundingClientRect(element, includeScale, isFixedStrategy) {\n if (includeScale === void 0) {\n includeScale = false;\n }\n\n if (isFixedStrategy === void 0) {\n isFixedStrategy = false;\n }\n\n var clientRect = element.getBoundingClientRect();\n var scaleX = 1;\n var scaleY = 1;\n\n if (includeScale && isHTMLElement(element)) {\n scaleX = element.offsetWidth > 0 ? round(clientRect.width) / element.offsetWidth || 1 : 1;\n scaleY = element.offsetHeight > 0 ? round(clientRect.height) / element.offsetHeight || 1 : 1;\n }\n\n var _ref = isElement(element) ? getWindow(element) : window,\n visualViewport = _ref.visualViewport;\n\n var addVisualOffsets = !isLayoutViewport() && isFixedStrategy;\n var x = (clientRect.left + (addVisualOffsets && visualViewport ? visualViewport.offsetLeft : 0)) / scaleX;\n var y = (clientRect.top + (addVisualOffsets && visualViewport ? visualViewport.offsetTop : 0)) / scaleY;\n var width = clientRect.width / scaleX;\n var height = clientRect.height / scaleY;\n return {\n width: width,\n height: height,\n top: y,\n right: x + width,\n bottom: y + height,\n left: x,\n x: x,\n y: y\n };\n}","import getWindow from \"./getWindow.js\";\nexport default function getWindowScroll(node) {\n var win = getWindow(node);\n var scrollLeft = win.pageXOffset;\n var scrollTop = win.pageYOffset;\n return {\n scrollLeft: scrollLeft,\n scrollTop: scrollTop\n };\n}","export default function getNodeName(element) {\n return element ? (element.nodeName || '').toLowerCase() : null;\n}","import { isElement } from \"./instanceOf.js\";\nexport default function getDocumentElement(element) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return ((isElement(element) ? element.ownerDocument : // $FlowFixMe[prop-missing]\n element.document) || window.document).documentElement;\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nexport default function getWindowScrollBarX(element) {\n // If has a CSS width greater than the viewport, then this will be\n // incorrect for RTL.\n // Popper 1 is broken in this case and never had a bug report so let's assume\n // it's not an issue. I don't think anyone ever specifies width on \n // anyway.\n // Browsers where the left scrollbar doesn't cause an issue report `0` for\n // this (e.g. Edge 2019, IE11, Safari)\n return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;\n}","import getWindow from \"./getWindow.js\";\nexport default function getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}","import getComputedStyle from \"./getComputedStyle.js\";\nexport default function isScrollParent(element) {\n // Firefox wants us to check `-x` and `-y` variations as well\n var _getComputedStyle = getComputedStyle(element),\n overflow = _getComputedStyle.overflow,\n overflowX = _getComputedStyle.overflowX,\n overflowY = _getComputedStyle.overflowY;\n\n return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getNodeScroll from \"./getNodeScroll.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport { round } from \"../utils/math.js\";\n\nfunction isElementScaled(element) {\n var rect = element.getBoundingClientRect();\n var scaleX = round(rect.width) / element.offsetWidth || 1;\n var scaleY = round(rect.height) / element.offsetHeight || 1;\n return scaleX !== 1 || scaleY !== 1;\n} // Returns the composite rect of an element relative to its offsetParent.\n// Composite means it takes into account transforms as well as layout.\n\n\nexport default function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n\n var isOffsetParentAnElement = isHTMLElement(offsetParent);\n var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent);\n var documentElement = getDocumentElement(offsetParent);\n var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled, isFixed);\n var scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n var offsets = {\n x: 0,\n y: 0\n };\n\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078\n isScrollParent(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n\n if (isHTMLElement(offsetParent)) {\n offsets = getBoundingClientRect(offsetParent, true);\n offsets.x += offsetParent.clientLeft;\n offsets.y += offsetParent.clientTop;\n } else if (documentElement) {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n }\n\n return {\n x: rect.left + scroll.scrollLeft - offsets.x,\n y: rect.top + scroll.scrollTop - offsets.y,\n width: rect.width,\n height: rect.height\n };\n}","import getWindowScroll from \"./getWindowScroll.js\";\nimport getWindow from \"./getWindow.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getHTMLElementScroll from \"./getHTMLElementScroll.js\";\nexport default function getNodeScroll(node) {\n if (node === getWindow(node) || !isHTMLElement(node)) {\n return getWindowScroll(node);\n } else {\n return getHTMLElementScroll(node);\n }\n}","export default function getHTMLElementScroll(element) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\"; // Returns the layout rect of an element relative to its offsetParent. Layout\n// means it doesn't take into account transforms.\n\nexport default function getLayoutRect(element) {\n var clientRect = getBoundingClientRect(element); // Use the clientRect sizes if it's not been transformed.\n // Fixes https://github.com/popperjs/popper-core/issues/1223\n\n var width = element.offsetWidth;\n var height = element.offsetHeight;\n\n if (Math.abs(clientRect.width - width) <= 1) {\n width = clientRect.width;\n }\n\n if (Math.abs(clientRect.height - height) <= 1) {\n height = clientRect.height;\n }\n\n return {\n x: element.offsetLeft,\n y: element.offsetTop,\n width: width,\n height: height\n };\n}","import getNodeName from \"./getNodeName.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport { isShadowRoot } from \"./instanceOf.js\";\nexport default function getParentNode(element) {\n if (getNodeName(element) === 'html') {\n return element;\n }\n\n return (// this is a quicker (but less type safe) way to save quite some bytes from the bundle\n // $FlowFixMe[incompatible-return]\n // $FlowFixMe[prop-missing]\n element.assignedSlot || // step into the shadow DOM of the parent of a slotted node\n element.parentNode || ( // DOM Element detected\n isShadowRoot(element) ? element.host : null) || // ShadowRoot detected\n // $FlowFixMe[incompatible-call]: HTMLElement is a Node\n getDocumentElement(element) // fallback\n\n );\n}","import getParentNode from \"./getParentNode.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nexport default function getScrollParent(node) {\n if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return node.ownerDocument.body;\n }\n\n if (isHTMLElement(node) && isScrollParent(node)) {\n return node;\n }\n\n return getScrollParent(getParentNode(node));\n}","import getScrollParent from \"./getScrollParent.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getWindow from \"./getWindow.js\";\nimport isScrollParent from \"./isScrollParent.js\";\n/*\ngiven a DOM element, return the list of all scroll parents, up the list of ancesors\nuntil we get to the top window object. This list is what we attach scroll listeners\nto, because if any of these parent elements scroll, we'll need to re-calculate the\nreference element's position.\n*/\n\nexport default function listScrollParents(element, list) {\n var _element$ownerDocumen;\n\n if (list === void 0) {\n list = [];\n }\n\n var scrollParent = getScrollParent(element);\n var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body);\n var win = getWindow(scrollParent);\n var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;\n var updatedList = list.concat(target);\n return isBody ? updatedList : // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here\n updatedList.concat(listScrollParents(getParentNode(target)));\n}","import getNodeName from \"./getNodeName.js\";\nexport default function isTableElement(element) {\n return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0;\n}","import getWindow from \"./getWindow.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isHTMLElement, isShadowRoot } from \"./instanceOf.js\";\nimport isTableElement from \"./isTableElement.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getUAString from \"../utils/userAgent.js\";\n\nfunction getTrueOffsetParent(element) {\n if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837\n getComputedStyle(element).position === 'fixed') {\n return null;\n }\n\n return element.offsetParent;\n} // `.offsetParent` reports `null` for fixed elements, while absolute elements\n// return the containing block\n\n\nfunction getContainingBlock(element) {\n var isFirefox = /firefox/i.test(getUAString());\n var isIE = /Trident/i.test(getUAString());\n\n if (isIE && isHTMLElement(element)) {\n // In IE 9, 10 and 11 fixed elements containing block is always established by the viewport\n var elementCss = getComputedStyle(element);\n\n if (elementCss.position === 'fixed') {\n return null;\n }\n }\n\n var currentNode = getParentNode(element);\n\n if (isShadowRoot(currentNode)) {\n currentNode = currentNode.host;\n }\n\n while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) {\n var css = getComputedStyle(currentNode); // This is non-exhaustive but covers the most common CSS properties that\n // create a containing block.\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n\n if (css.transform !== 'none' || css.perspective !== 'none' || css.contain === 'paint' || ['transform', 'perspective'].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === 'filter' || isFirefox && css.filter && css.filter !== 'none') {\n return currentNode;\n } else {\n currentNode = currentNode.parentNode;\n }\n }\n\n return null;\n} // Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\n\n\nexport default function getOffsetParent(element) {\n var window = getWindow(element);\n var offsetParent = getTrueOffsetParent(element);\n\n while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {\n offsetParent = getTrueOffsetParent(offsetParent);\n }\n\n if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static')) {\n return window;\n }\n\n return offsetParent || getContainingBlock(element) || window;\n}","export var top = 'top';\nexport var bottom = 'bottom';\nexport var right = 'right';\nexport var left = 'left';\nexport var auto = 'auto';\nexport var basePlacements = [top, bottom, right, left];\nexport var start = 'start';\nexport var end = 'end';\nexport var clippingParents = 'clippingParents';\nexport var viewport = 'viewport';\nexport var popper = 'popper';\nexport var reference = 'reference';\nexport var variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) {\n return acc.concat([placement + \"-\" + start, placement + \"-\" + end]);\n}, []);\nexport var placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) {\n return acc.concat([placement, placement + \"-\" + start, placement + \"-\" + end]);\n}, []); // modifiers that need to read the DOM\n\nexport var beforeRead = 'beforeRead';\nexport var read = 'read';\nexport var afterRead = 'afterRead'; // pure-logic modifiers\n\nexport var beforeMain = 'beforeMain';\nexport var main = 'main';\nexport var afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state)\n\nexport var beforeWrite = 'beforeWrite';\nexport var write = 'write';\nexport var afterWrite = 'afterWrite';\nexport var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];","import { modifierPhases } from \"../enums.js\"; // source: https://stackoverflow.com/questions/49875255\n\nfunction order(modifiers) {\n var map = new Map();\n var visited = new Set();\n var result = [];\n modifiers.forEach(function (modifier) {\n map.set(modifier.name, modifier);\n }); // On visiting object, check for its dependencies and visit them recursively\n\n function sort(modifier) {\n visited.add(modifier.name);\n var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);\n requires.forEach(function (dep) {\n if (!visited.has(dep)) {\n var depModifier = map.get(dep);\n\n if (depModifier) {\n sort(depModifier);\n }\n }\n });\n result.push(modifier);\n }\n\n modifiers.forEach(function (modifier) {\n if (!visited.has(modifier.name)) {\n // check for visited object\n sort(modifier);\n }\n });\n return result;\n}\n\nexport default function orderModifiers(modifiers) {\n // order based on dependencies\n var orderedModifiers = order(modifiers); // order based on phase\n\n return modifierPhases.reduce(function (acc, phase) {\n return acc.concat(orderedModifiers.filter(function (modifier) {\n return modifier.phase === phase;\n }));\n }, []);\n}","export default function debounce(fn) {\n var pending;\n return function () {\n if (!pending) {\n pending = new Promise(function (resolve) {\n Promise.resolve().then(function () {\n pending = undefined;\n resolve(fn());\n });\n });\n }\n\n return pending;\n };\n}","import getCompositeRect from \"./dom-utils/getCompositeRect.js\";\nimport getLayoutRect from \"./dom-utils/getLayoutRect.js\";\nimport listScrollParents from \"./dom-utils/listScrollParents.js\";\nimport getOffsetParent from \"./dom-utils/getOffsetParent.js\";\nimport orderModifiers from \"./utils/orderModifiers.js\";\nimport debounce from \"./utils/debounce.js\";\nimport mergeByName from \"./utils/mergeByName.js\";\nimport detectOverflow from \"./utils/detectOverflow.js\";\nimport { isElement } from \"./dom-utils/instanceOf.js\";\nvar DEFAULT_OPTIONS = {\n placement: 'bottom',\n modifiers: [],\n strategy: 'absolute'\n};\n\nfunction areValidElements() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return !args.some(function (element) {\n return !(element && typeof element.getBoundingClientRect === 'function');\n });\n}\n\nexport function popperGenerator(generatorOptions) {\n if (generatorOptions === void 0) {\n generatorOptions = {};\n }\n\n var _generatorOptions = generatorOptions,\n _generatorOptions$def = _generatorOptions.defaultModifiers,\n defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def,\n _generatorOptions$def2 = _generatorOptions.defaultOptions,\n defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;\n return function createPopper(reference, popper, options) {\n if (options === void 0) {\n options = defaultOptions;\n }\n\n var state = {\n placement: 'bottom',\n orderedModifiers: [],\n options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions),\n modifiersData: {},\n elements: {\n reference: reference,\n popper: popper\n },\n attributes: {},\n styles: {}\n };\n var effectCleanupFns = [];\n var isDestroyed = false;\n var instance = {\n state: state,\n setOptions: function setOptions(setOptionsAction) {\n var options = typeof setOptionsAction === 'function' ? setOptionsAction(state.options) : setOptionsAction;\n cleanupModifierEffects();\n state.options = Object.assign({}, defaultOptions, state.options, options);\n state.scrollParents = {\n reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [],\n popper: listScrollParents(popper)\n }; // Orders the modifiers based on their dependencies and `phase`\n // properties\n\n var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers\n\n state.orderedModifiers = orderedModifiers.filter(function (m) {\n return m.enabled;\n });\n runModifierEffects();\n return instance.update();\n },\n // Sync update – it will always be executed, even if not necessary. This\n // is useful for low frequency updates where sync behavior simplifies the\n // logic.\n // For high frequency updates (e.g. `resize` and `scroll` events), always\n // prefer the async Popper#update method\n forceUpdate: function forceUpdate() {\n if (isDestroyed) {\n return;\n }\n\n var _state$elements = state.elements,\n reference = _state$elements.reference,\n popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements\n // anymore\n\n if (!areValidElements(reference, popper)) {\n return;\n } // Store the reference and popper rects to be read by modifiers\n\n\n state.rects = {\n reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy === 'fixed'),\n popper: getLayoutRect(popper)\n }; // Modifiers have the ability to reset the current update cycle. The\n // most common use case for this is the `flip` modifier changing the\n // placement, which then needs to re-run all the modifiers, because the\n // logic was previously ran for the previous placement and is therefore\n // stale/incorrect\n\n state.reset = false;\n state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier\n // is filled with the initial data specified by the modifier. This means\n // it doesn't persist and is fresh on each update.\n // To ensure persistent data, use `${name}#persistent`\n\n state.orderedModifiers.forEach(function (modifier) {\n return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);\n });\n\n for (var index = 0; index < state.orderedModifiers.length; index++) {\n if (state.reset === true) {\n state.reset = false;\n index = -1;\n continue;\n }\n\n var _state$orderedModifie = state.orderedModifiers[index],\n fn = _state$orderedModifie.fn,\n _state$orderedModifie2 = _state$orderedModifie.options,\n _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2,\n name = _state$orderedModifie.name;\n\n if (typeof fn === 'function') {\n state = fn({\n state: state,\n options: _options,\n name: name,\n instance: instance\n }) || state;\n }\n }\n },\n // Async and optimistically optimized update – it will not be executed if\n // not necessary (debounced to run at most once-per-tick)\n update: debounce(function () {\n return new Promise(function (resolve) {\n instance.forceUpdate();\n resolve(state);\n });\n }),\n destroy: function destroy() {\n cleanupModifierEffects();\n isDestroyed = true;\n }\n };\n\n if (!areValidElements(reference, popper)) {\n return instance;\n }\n\n instance.setOptions(options).then(function (state) {\n if (!isDestroyed && options.onFirstUpdate) {\n options.onFirstUpdate(state);\n }\n }); // Modifiers have the ability to execute arbitrary code before the first\n // update cycle runs. They will be executed in the same order as the update\n // cycle. This is useful when a modifier adds some persistent data that\n // other modifiers need to use, but the modifier is run after the dependent\n // one.\n\n function runModifierEffects() {\n state.orderedModifiers.forEach(function (_ref) {\n var name = _ref.name,\n _ref$options = _ref.options,\n options = _ref$options === void 0 ? {} : _ref$options,\n effect = _ref.effect;\n\n if (typeof effect === 'function') {\n var cleanupFn = effect({\n state: state,\n name: name,\n instance: instance,\n options: options\n });\n\n var noopFn = function noopFn() {};\n\n effectCleanupFns.push(cleanupFn || noopFn);\n }\n });\n }\n\n function cleanupModifierEffects() {\n effectCleanupFns.forEach(function (fn) {\n return fn();\n });\n effectCleanupFns = [];\n }\n\n return instance;\n };\n}\nexport var createPopper = /*#__PURE__*/popperGenerator(); // eslint-disable-next-line import/no-unused-modules\n\nexport { detectOverflow };","export default function mergeByName(modifiers) {\n var merged = modifiers.reduce(function (merged, current) {\n var existing = merged[current.name];\n merged[current.name] = existing ? Object.assign({}, existing, current, {\n options: Object.assign({}, existing.options, current.options),\n data: Object.assign({}, existing.data, current.data)\n }) : current;\n return merged;\n }, {}); // IE11 does not support Object.values\n\n return Object.keys(merged).map(function (key) {\n return merged[key];\n });\n}","import getWindow from \"../dom-utils/getWindow.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar passive = {\n passive: true\n};\n\nfunction effect(_ref) {\n var state = _ref.state,\n instance = _ref.instance,\n options = _ref.options;\n var _options$scroll = options.scroll,\n scroll = _options$scroll === void 0 ? true : _options$scroll,\n _options$resize = options.resize,\n resize = _options$resize === void 0 ? true : _options$resize;\n var window = getWindow(state.elements.popper);\n var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);\n\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.addEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.addEventListener('resize', instance.update, passive);\n }\n\n return function () {\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.removeEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.removeEventListener('resize', instance.update, passive);\n }\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'eventListeners',\n enabled: true,\n phase: 'write',\n fn: function fn() {},\n effect: effect,\n data: {}\n};","import { auto } from \"../enums.js\";\nexport default function getBasePlacement(placement) {\n return placement.split('-')[0];\n}","export default function getVariation(placement) {\n return placement.split('-')[1];\n}","export default function getMainAxisFromPlacement(placement) {\n return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';\n}","import getBasePlacement from \"./getBasePlacement.js\";\nimport getVariation from \"./getVariation.js\";\nimport getMainAxisFromPlacement from \"./getMainAxisFromPlacement.js\";\nimport { top, right, bottom, left, start, end } from \"../enums.js\";\nexport default function computeOffsets(_ref) {\n var reference = _ref.reference,\n element = _ref.element,\n placement = _ref.placement;\n var basePlacement = placement ? getBasePlacement(placement) : null;\n var variation = placement ? getVariation(placement) : null;\n var commonX = reference.x + reference.width / 2 - element.width / 2;\n var commonY = reference.y + reference.height / 2 - element.height / 2;\n var offsets;\n\n switch (basePlacement) {\n case top:\n offsets = {\n x: commonX,\n y: reference.y - element.height\n };\n break;\n\n case bottom:\n offsets = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n\n case right:\n offsets = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n\n case left:\n offsets = {\n x: reference.x - element.width,\n y: commonY\n };\n break;\n\n default:\n offsets = {\n x: reference.x,\n y: reference.y\n };\n }\n\n var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;\n\n if (mainAxis != null) {\n var len = mainAxis === 'y' ? 'height' : 'width';\n\n switch (variation) {\n case start:\n offsets[mainAxis] = offsets[mainAxis] - (reference[len] / 2 - element[len] / 2);\n break;\n\n case end:\n offsets[mainAxis] = offsets[mainAxis] + (reference[len] / 2 - element[len] / 2);\n break;\n\n default:\n }\n }\n\n return offsets;\n}","import { top, left, right, bottom, end } from \"../enums.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getWindow from \"../dom-utils/getWindow.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getComputedStyle from \"../dom-utils/getComputedStyle.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport { round } from \"../utils/math.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar unsetSides = {\n top: 'auto',\n right: 'auto',\n bottom: 'auto',\n left: 'auto'\n}; // Round the offsets to the nearest suitable subpixel based on the DPR.\n// Zooming can change the DPR, but it seems to report a value that will\n// cleanly divide the values into the appropriate subpixels.\n\nfunction roundOffsetsByDPR(_ref, win) {\n var x = _ref.x,\n y = _ref.y;\n var dpr = win.devicePixelRatio || 1;\n return {\n x: round(x * dpr) / dpr || 0,\n y: round(y * dpr) / dpr || 0\n };\n}\n\nexport function mapToStyles(_ref2) {\n var _Object$assign2;\n\n var popper = _ref2.popper,\n popperRect = _ref2.popperRect,\n placement = _ref2.placement,\n variation = _ref2.variation,\n offsets = _ref2.offsets,\n position = _ref2.position,\n gpuAcceleration = _ref2.gpuAcceleration,\n adaptive = _ref2.adaptive,\n roundOffsets = _ref2.roundOffsets,\n isFixed = _ref2.isFixed;\n var _offsets$x = offsets.x,\n x = _offsets$x === void 0 ? 0 : _offsets$x,\n _offsets$y = offsets.y,\n y = _offsets$y === void 0 ? 0 : _offsets$y;\n\n var _ref3 = typeof roundOffsets === 'function' ? roundOffsets({\n x: x,\n y: y\n }) : {\n x: x,\n y: y\n };\n\n x = _ref3.x;\n y = _ref3.y;\n var hasX = offsets.hasOwnProperty('x');\n var hasY = offsets.hasOwnProperty('y');\n var sideX = left;\n var sideY = top;\n var win = window;\n\n if (adaptive) {\n var offsetParent = getOffsetParent(popper);\n var heightProp = 'clientHeight';\n var widthProp = 'clientWidth';\n\n if (offsetParent === getWindow(popper)) {\n offsetParent = getDocumentElement(popper);\n\n if (getComputedStyle(offsetParent).position !== 'static' && position === 'absolute') {\n heightProp = 'scrollHeight';\n widthProp = 'scrollWidth';\n }\n } // $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it\n\n\n offsetParent = offsetParent;\n\n if (placement === top || (placement === left || placement === right) && variation === end) {\n sideY = bottom;\n var offsetY = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.height : // $FlowFixMe[prop-missing]\n offsetParent[heightProp];\n y -= offsetY - popperRect.height;\n y *= gpuAcceleration ? 1 : -1;\n }\n\n if (placement === left || (placement === top || placement === bottom) && variation === end) {\n sideX = right;\n var offsetX = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.width : // $FlowFixMe[prop-missing]\n offsetParent[widthProp];\n x -= offsetX - popperRect.width;\n x *= gpuAcceleration ? 1 : -1;\n }\n }\n\n var commonStyles = Object.assign({\n position: position\n }, adaptive && unsetSides);\n\n var _ref4 = roundOffsets === true ? roundOffsetsByDPR({\n x: x,\n y: y\n }, getWindow(popper)) : {\n x: x,\n y: y\n };\n\n x = _ref4.x;\n y = _ref4.y;\n\n if (gpuAcceleration) {\n var _Object$assign;\n\n return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? \"translate(\" + x + \"px, \" + y + \"px)\" : \"translate3d(\" + x + \"px, \" + y + \"px, 0)\", _Object$assign));\n }\n\n return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + \"px\" : '', _Object$assign2[sideX] = hasX ? x + \"px\" : '', _Object$assign2.transform = '', _Object$assign2));\n}\n\nfunction computeStyles(_ref5) {\n var state = _ref5.state,\n options = _ref5.options;\n var _options$gpuAccelerat = options.gpuAcceleration,\n gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat,\n _options$adaptive = options.adaptive,\n adaptive = _options$adaptive === void 0 ? true : _options$adaptive,\n _options$roundOffsets = options.roundOffsets,\n roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets;\n var commonStyles = {\n placement: getBasePlacement(state.placement),\n variation: getVariation(state.placement),\n popper: state.elements.popper,\n popperRect: state.rects.popper,\n gpuAcceleration: gpuAcceleration,\n isFixed: state.options.strategy === 'fixed'\n };\n\n if (state.modifiersData.popperOffsets != null) {\n state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.popperOffsets,\n position: state.options.strategy,\n adaptive: adaptive,\n roundOffsets: roundOffsets\n })));\n }\n\n if (state.modifiersData.arrow != null) {\n state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.arrow,\n position: 'absolute',\n adaptive: false,\n roundOffsets: roundOffsets\n })));\n }\n\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-placement': state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'computeStyles',\n enabled: true,\n phase: 'beforeWrite',\n fn: computeStyles,\n data: {}\n};","var hash = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nexport default function getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, function (matched) {\n return hash[matched];\n });\n}","var hash = {\n start: 'end',\n end: 'start'\n};\nexport default function getOppositeVariationPlacement(placement) {\n return placement.replace(/start|end/g, function (matched) {\n return hash[matched];\n });\n}","import { isShadowRoot } from \"./instanceOf.js\";\nexport default function contains(parent, child) {\n var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method\n\n if (parent.contains(child)) {\n return true;\n } // then fallback to custom implementation with Shadow DOM support\n else if (rootNode && isShadowRoot(rootNode)) {\n var next = child;\n\n do {\n if (next && parent.isSameNode(next)) {\n return true;\n } // $FlowFixMe[prop-missing]: need a better way to handle this...\n\n\n next = next.parentNode || next.host;\n } while (next);\n } // Give up, the result is false\n\n\n return false;\n}","export default function rectToClientRect(rect) {\n return Object.assign({}, rect, {\n left: rect.x,\n top: rect.y,\n right: rect.x + rect.width,\n bottom: rect.y + rect.height\n });\n}","import { viewport } from \"../enums.js\";\nimport getViewportRect from \"./getViewportRect.js\";\nimport getDocumentRect from \"./getDocumentRect.js\";\nimport listScrollParents from \"./listScrollParents.js\";\nimport getOffsetParent from \"./getOffsetParent.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport contains from \"./contains.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport rectToClientRect from \"../utils/rectToClientRect.js\";\nimport { max, min } from \"../utils/math.js\";\n\nfunction getInnerBoundingClientRect(element, strategy) {\n var rect = getBoundingClientRect(element, false, strategy === 'fixed');\n rect.top = rect.top + element.clientTop;\n rect.left = rect.left + element.clientLeft;\n rect.bottom = rect.top + element.clientHeight;\n rect.right = rect.left + element.clientWidth;\n rect.width = element.clientWidth;\n rect.height = element.clientHeight;\n rect.x = rect.left;\n rect.y = rect.top;\n return rect;\n}\n\nfunction getClientRectFromMixedType(element, clippingParent, strategy) {\n return clippingParent === viewport ? rectToClientRect(getViewportRect(element, strategy)) : isElement(clippingParent) ? getInnerBoundingClientRect(clippingParent, strategy) : rectToClientRect(getDocumentRect(getDocumentElement(element)));\n} // A \"clipping parent\" is an overflowable container with the characteristic of\n// clipping (or hiding) overflowing elements with a position different from\n// `initial`\n\n\nfunction getClippingParents(element) {\n var clippingParents = listScrollParents(getParentNode(element));\n var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle(element).position) >= 0;\n var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;\n\n if (!isElement(clipperElement)) {\n return [];\n } // $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414\n\n\n return clippingParents.filter(function (clippingParent) {\n return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body';\n });\n} // Gets the maximum area that the element is visible in due to any number of\n// clipping parents\n\n\nexport default function getClippingRect(element, boundary, rootBoundary, strategy) {\n var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary);\n var clippingParents = [].concat(mainClippingParents, [rootBoundary]);\n var firstClippingParent = clippingParents[0];\n var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {\n var rect = getClientRectFromMixedType(element, clippingParent, strategy);\n accRect.top = max(rect.top, accRect.top);\n accRect.right = min(rect.right, accRect.right);\n accRect.bottom = min(rect.bottom, accRect.bottom);\n accRect.left = max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromMixedType(element, firstClippingParent, strategy));\n clippingRect.width = clippingRect.right - clippingRect.left;\n clippingRect.height = clippingRect.bottom - clippingRect.top;\n clippingRect.x = clippingRect.left;\n clippingRect.y = clippingRect.top;\n return clippingRect;\n}","import getWindow from \"./getWindow.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getViewportRect(element, strategy) {\n var win = getWindow(element);\n var html = getDocumentElement(element);\n var visualViewport = win.visualViewport;\n var width = html.clientWidth;\n var height = html.clientHeight;\n var x = 0;\n var y = 0;\n\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height;\n var layoutViewport = isLayoutViewport();\n\n if (layoutViewport || !layoutViewport && strategy === 'fixed') {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n\n return {\n width: width,\n height: height,\n x: x + getWindowScrollBarX(element),\n y: y\n };\n}","import getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nimport { max } from \"../utils/math.js\"; // Gets the entire size of the scrollable document area, even extending outside\n// of the `` and `` rect bounds if horizontally scrollable\n\nexport default function getDocumentRect(element) {\n var _element$ownerDocumen;\n\n var html = getDocumentElement(element);\n var winScroll = getWindowScroll(element);\n var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;\n var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);\n var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);\n var x = -winScroll.scrollLeft + getWindowScrollBarX(element);\n var y = -winScroll.scrollTop;\n\n if (getComputedStyle(body || html).direction === 'rtl') {\n x += max(html.clientWidth, body ? body.clientWidth : 0) - width;\n }\n\n return {\n width: width,\n height: height,\n x: x,\n y: y\n };\n}","import getFreshSideObject from \"./getFreshSideObject.js\";\nexport default function mergePaddingObject(paddingObject) {\n return Object.assign({}, getFreshSideObject(), paddingObject);\n}","export default function getFreshSideObject() {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n };\n}","export default function expandToHashMap(value, keys) {\n return keys.reduce(function (hashMap, key) {\n hashMap[key] = value;\n return hashMap;\n }, {});\n}","import getClippingRect from \"../dom-utils/getClippingRect.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getBoundingClientRect from \"../dom-utils/getBoundingClientRect.js\";\nimport computeOffsets from \"./computeOffsets.js\";\nimport rectToClientRect from \"./rectToClientRect.js\";\nimport { clippingParents, reference, popper, bottom, top, right, basePlacements, viewport } from \"../enums.js\";\nimport { isElement } from \"../dom-utils/instanceOf.js\";\nimport mergePaddingObject from \"./mergePaddingObject.js\";\nimport expandToHashMap from \"./expandToHashMap.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport default function detectOverflow(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n _options$placement = _options.placement,\n placement = _options$placement === void 0 ? state.placement : _options$placement,\n _options$strategy = _options.strategy,\n strategy = _options$strategy === void 0 ? state.strategy : _options$strategy,\n _options$boundary = _options.boundary,\n boundary = _options$boundary === void 0 ? clippingParents : _options$boundary,\n _options$rootBoundary = _options.rootBoundary,\n rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary,\n _options$elementConte = _options.elementContext,\n elementContext = _options$elementConte === void 0 ? popper : _options$elementConte,\n _options$altBoundary = _options.altBoundary,\n altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary,\n _options$padding = _options.padding,\n padding = _options$padding === void 0 ? 0 : _options$padding;\n var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n var altContext = elementContext === popper ? reference : popper;\n var popperRect = state.rects.popper;\n var element = state.elements[altBoundary ? altContext : elementContext];\n var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary, strategy);\n var referenceClientRect = getBoundingClientRect(state.elements.reference);\n var popperOffsets = computeOffsets({\n reference: referenceClientRect,\n element: popperRect,\n strategy: 'absolute',\n placement: placement\n });\n var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets));\n var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect\n // 0 or negative = within the clipping rect\n\n var overflowOffsets = {\n top: clippingClientRect.top - elementClientRect.top + paddingObject.top,\n bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,\n left: clippingClientRect.left - elementClientRect.left + paddingObject.left,\n right: elementClientRect.right - clippingClientRect.right + paddingObject.right\n };\n var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element\n\n if (elementContext === popper && offsetData) {\n var offset = offsetData[placement];\n Object.keys(overflowOffsets).forEach(function (key) {\n var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;\n var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x';\n overflowOffsets[key] += offset[axis] * multiply;\n });\n }\n\n return overflowOffsets;\n}","import { max as mathMax, min as mathMin } from \"./math.js\";\nexport function within(min, value, max) {\n return mathMax(min, mathMin(value, max));\n}\nexport function withinMaxClamp(min, value, max) {\n var v = within(min, value, max);\n return v > max ? max : v;\n}","import { top, bottom, left, right } from \"../enums.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\n\nfunction getSideOffsets(overflow, rect, preventedOffsets) {\n if (preventedOffsets === void 0) {\n preventedOffsets = {\n x: 0,\n y: 0\n };\n }\n\n return {\n top: overflow.top - rect.height - preventedOffsets.y,\n right: overflow.right - rect.width + preventedOffsets.x,\n bottom: overflow.bottom - rect.height + preventedOffsets.y,\n left: overflow.left - rect.width - preventedOffsets.x\n };\n}\n\nfunction isAnySideFullyClipped(overflow) {\n return [top, right, bottom, left].some(function (side) {\n return overflow[side] >= 0;\n });\n}\n\nfunction hide(_ref) {\n var state = _ref.state,\n name = _ref.name;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var preventedOffsets = state.modifiersData.preventOverflow;\n var referenceOverflow = detectOverflow(state, {\n elementContext: 'reference'\n });\n var popperAltOverflow = detectOverflow(state, {\n altBoundary: true\n });\n var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);\n var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);\n var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);\n var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);\n state.modifiersData[name] = {\n referenceClippingOffsets: referenceClippingOffsets,\n popperEscapeOffsets: popperEscapeOffsets,\n isReferenceHidden: isReferenceHidden,\n hasPopperEscaped: hasPopperEscaped\n };\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-reference-hidden': isReferenceHidden,\n 'data-popper-escaped': hasPopperEscaped\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'hide',\n enabled: true,\n phase: 'main',\n requiresIfExists: ['preventOverflow'],\n fn: hide\n};","import { popperGenerator, detectOverflow } from \"./createPopper.js\";\nimport eventListeners from \"./modifiers/eventListeners.js\";\nimport popperOffsets from \"./modifiers/popperOffsets.js\";\nimport computeStyles from \"./modifiers/computeStyles.js\";\nimport applyStyles from \"./modifiers/applyStyles.js\";\nimport offset from \"./modifiers/offset.js\";\nimport flip from \"./modifiers/flip.js\";\nimport preventOverflow from \"./modifiers/preventOverflow.js\";\nimport arrow from \"./modifiers/arrow.js\";\nimport hide from \"./modifiers/hide.js\";\nvar defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles, offset, flip, preventOverflow, arrow, hide];\nvar createPopper = /*#__PURE__*/popperGenerator({\n defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow }; // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper as createPopperLite } from \"./popper-lite.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport * from \"./modifiers/index.js\";","import computeOffsets from \"../utils/computeOffsets.js\";\n\nfunction popperOffsets(_ref) {\n var state = _ref.state,\n name = _ref.name;\n // Offsets are the actual position the popper needs to have to be\n // properly positioned near its reference element\n // This is the most basic placement, and will be adjusted by\n // the modifiers in the next step\n state.modifiersData[name] = computeOffsets({\n reference: state.rects.reference,\n element: state.rects.popper,\n strategy: 'absolute',\n placement: state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'popperOffsets',\n enabled: true,\n phase: 'read',\n fn: popperOffsets,\n data: {}\n};","import getNodeName from \"../dom-utils/getNodeName.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // This modifier takes the styles prepared by the `computeStyles` modifier\n// and applies them to the HTMLElements such as popper and arrow\n\nfunction applyStyles(_ref) {\n var state = _ref.state;\n Object.keys(state.elements).forEach(function (name) {\n var style = state.styles[name] || {};\n var attributes = state.attributes[name] || {};\n var element = state.elements[name]; // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n } // Flow doesn't support to extend this property, but it's the most\n // effective way to apply styles to an HTMLElement\n // $FlowFixMe[cannot-write]\n\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (name) {\n var value = attributes[name];\n\n if (value === false) {\n element.removeAttribute(name);\n } else {\n element.setAttribute(name, value === true ? '' : value);\n }\n });\n });\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state;\n var initialStyles = {\n popper: {\n position: state.options.strategy,\n left: '0',\n top: '0',\n margin: '0'\n },\n arrow: {\n position: 'absolute'\n },\n reference: {}\n };\n Object.assign(state.elements.popper.style, initialStyles.popper);\n state.styles = initialStyles;\n\n if (state.elements.arrow) {\n Object.assign(state.elements.arrow.style, initialStyles.arrow);\n }\n\n return function () {\n Object.keys(state.elements).forEach(function (name) {\n var element = state.elements[name];\n var attributes = state.attributes[name] || {};\n var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); // Set all values to an empty string to unset them\n\n var style = styleProperties.reduce(function (style, property) {\n style[property] = '';\n return style;\n }, {}); // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n }\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (attribute) {\n element.removeAttribute(attribute);\n });\n });\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'applyStyles',\n enabled: true,\n phase: 'write',\n fn: applyStyles,\n effect: effect,\n requires: ['computeStyles']\n};","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport { top, left, right, placements } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport function distanceAndSkiddingToXY(placement, rects, offset) {\n var basePlacement = getBasePlacement(placement);\n var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;\n\n var _ref = typeof offset === 'function' ? offset(Object.assign({}, rects, {\n placement: placement\n })) : offset,\n skidding = _ref[0],\n distance = _ref[1];\n\n skidding = skidding || 0;\n distance = (distance || 0) * invertDistance;\n return [left, right].indexOf(basePlacement) >= 0 ? {\n x: distance,\n y: skidding\n } : {\n x: skidding,\n y: distance\n };\n}\n\nfunction offset(_ref2) {\n var state = _ref2.state,\n options = _ref2.options,\n name = _ref2.name;\n var _options$offset = options.offset,\n offset = _options$offset === void 0 ? [0, 0] : _options$offset;\n var data = placements.reduce(function (acc, placement) {\n acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset);\n return acc;\n }, {});\n var _data$state$placement = data[state.placement],\n x = _data$state$placement.x,\n y = _data$state$placement.y;\n\n if (state.modifiersData.popperOffsets != null) {\n state.modifiersData.popperOffsets.x += x;\n state.modifiersData.popperOffsets.y += y;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'offset',\n enabled: true,\n phase: 'main',\n requires: ['popperOffsets'],\n fn: offset\n};","import getOppositePlacement from \"../utils/getOppositePlacement.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getOppositeVariationPlacement from \"../utils/getOppositeVariationPlacement.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport computeAutoPlacement from \"../utils/computeAutoPlacement.js\";\nimport { bottom, top, start, right, left, auto } from \"../enums.js\";\nimport getVariation from \"../utils/getVariation.js\"; // eslint-disable-next-line import/no-unused-modules\n\nfunction getExpandedFallbackPlacements(placement) {\n if (getBasePlacement(placement) === auto) {\n return [];\n }\n\n var oppositePlacement = getOppositePlacement(placement);\n return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)];\n}\n\nfunction flip(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n\n if (state.modifiersData[name]._skip) {\n return;\n }\n\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis,\n specifiedFallbackPlacements = options.fallbackPlacements,\n padding = options.padding,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n _options$flipVariatio = options.flipVariations,\n flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio,\n allowedAutoPlacements = options.allowedAutoPlacements;\n var preferredPlacement = state.options.placement;\n var basePlacement = getBasePlacement(preferredPlacement);\n var isBasePlacement = basePlacement === preferredPlacement;\n var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));\n var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) {\n return acc.concat(getBasePlacement(placement) === auto ? computeAutoPlacement(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n flipVariations: flipVariations,\n allowedAutoPlacements: allowedAutoPlacements\n }) : placement);\n }, []);\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var checksMap = new Map();\n var makeFallbackChecks = true;\n var firstFittingPlacement = placements[0];\n\n for (var i = 0; i < placements.length; i++) {\n var placement = placements[i];\n\n var _basePlacement = getBasePlacement(placement);\n\n var isStartVariation = getVariation(placement) === start;\n var isVertical = [top, bottom].indexOf(_basePlacement) >= 0;\n var len = isVertical ? 'width' : 'height';\n var overflow = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n altBoundary: altBoundary,\n padding: padding\n });\n var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top;\n\n if (referenceRect[len] > popperRect[len]) {\n mainVariationSide = getOppositePlacement(mainVariationSide);\n }\n\n var altVariationSide = getOppositePlacement(mainVariationSide);\n var checks = [];\n\n if (checkMainAxis) {\n checks.push(overflow[_basePlacement] <= 0);\n }\n\n if (checkAltAxis) {\n checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);\n }\n\n if (checks.every(function (check) {\n return check;\n })) {\n firstFittingPlacement = placement;\n makeFallbackChecks = false;\n break;\n }\n\n checksMap.set(placement, checks);\n }\n\n if (makeFallbackChecks) {\n // `2` may be desired in some cases – research later\n var numberOfChecks = flipVariations ? 3 : 1;\n\n var _loop = function _loop(_i) {\n var fittingPlacement = placements.find(function (placement) {\n var checks = checksMap.get(placement);\n\n if (checks) {\n return checks.slice(0, _i).every(function (check) {\n return check;\n });\n }\n });\n\n if (fittingPlacement) {\n firstFittingPlacement = fittingPlacement;\n return \"break\";\n }\n };\n\n for (var _i = numberOfChecks; _i > 0; _i--) {\n var _ret = _loop(_i);\n\n if (_ret === \"break\") break;\n }\n }\n\n if (state.placement !== firstFittingPlacement) {\n state.modifiersData[name]._skip = true;\n state.placement = firstFittingPlacement;\n state.reset = true;\n }\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'flip',\n enabled: true,\n phase: 'main',\n fn: flip,\n requiresIfExists: ['offset'],\n data: {\n _skip: false\n }\n};","import getVariation from \"./getVariation.js\";\nimport { variationPlacements, basePlacements, placements as allPlacements } from \"../enums.js\";\nimport detectOverflow from \"./detectOverflow.js\";\nimport getBasePlacement from \"./getBasePlacement.js\";\nexport default function computeAutoPlacement(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n placement = _options.placement,\n boundary = _options.boundary,\n rootBoundary = _options.rootBoundary,\n padding = _options.padding,\n flipVariations = _options.flipVariations,\n _options$allowedAutoP = _options.allowedAutoPlacements,\n allowedAutoPlacements = _options$allowedAutoP === void 0 ? allPlacements : _options$allowedAutoP;\n var variation = getVariation(placement);\n var placements = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) {\n return getVariation(placement) === variation;\n }) : basePlacements;\n var allowedPlacements = placements.filter(function (placement) {\n return allowedAutoPlacements.indexOf(placement) >= 0;\n });\n\n if (allowedPlacements.length === 0) {\n allowedPlacements = placements;\n } // $FlowFixMe[incompatible-type]: Flow seems to have problems with two array unions...\n\n\n var overflows = allowedPlacements.reduce(function (acc, placement) {\n acc[placement] = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding\n })[getBasePlacement(placement)];\n return acc;\n }, {});\n return Object.keys(overflows).sort(function (a, b) {\n return overflows[a] - overflows[b];\n });\n}","import { top, left, right, bottom, start } from \"../enums.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport getAltAxis from \"../utils/getAltAxis.js\";\nimport { within, withinMaxClamp } from \"../utils/within.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport getFreshSideObject from \"../utils/getFreshSideObject.js\";\nimport { min as mathMin, max as mathMax } from \"../utils/math.js\";\n\nfunction preventOverflow(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n padding = options.padding,\n _options$tether = options.tether,\n tether = _options$tether === void 0 ? true : _options$tether,\n _options$tetherOffset = options.tetherOffset,\n tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;\n var overflow = detectOverflow(state, {\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n altBoundary: altBoundary\n });\n var basePlacement = getBasePlacement(state.placement);\n var variation = getVariation(state.placement);\n var isBasePlacement = !variation;\n var mainAxis = getMainAxisFromPlacement(basePlacement);\n var altAxis = getAltAxis(mainAxis);\n var popperOffsets = state.modifiersData.popperOffsets;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign({}, state.rects, {\n placement: state.placement\n })) : tetherOffset;\n var normalizedTetherOffsetValue = typeof tetherOffsetValue === 'number' ? {\n mainAxis: tetherOffsetValue,\n altAxis: tetherOffsetValue\n } : Object.assign({\n mainAxis: 0,\n altAxis: 0\n }, tetherOffsetValue);\n var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null;\n var data = {\n x: 0,\n y: 0\n };\n\n if (!popperOffsets) {\n return;\n }\n\n if (checkMainAxis) {\n var _offsetModifierState$;\n\n var mainSide = mainAxis === 'y' ? top : left;\n var altSide = mainAxis === 'y' ? bottom : right;\n var len = mainAxis === 'y' ? 'height' : 'width';\n var offset = popperOffsets[mainAxis];\n var min = offset + overflow[mainSide];\n var max = offset - overflow[altSide];\n var additive = tether ? -popperRect[len] / 2 : 0;\n var minLen = variation === start ? referenceRect[len] : popperRect[len];\n var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go\n // outside the reference bounds\n\n var arrowElement = state.elements.arrow;\n var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : {\n width: 0,\n height: 0\n };\n var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : getFreshSideObject();\n var arrowPaddingMin = arrowPaddingObject[mainSide];\n var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want\n // to include its full size in the calculation. If the reference is small\n // and near the edge of a boundary, the popper can overflow even if the\n // reference is not overflowing as well (e.g. virtual elements with no\n // width or height)\n\n var arrowLen = within(0, referenceRect[len], arrowRect[len]);\n var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis;\n var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis;\n var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);\n var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;\n var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0;\n var tetherMin = offset + minOffset - offsetModifierValue - clientOffset;\n var tetherMax = offset + maxOffset - offsetModifierValue;\n var preventedOffset = within(tether ? mathMin(min, tetherMin) : min, offset, tether ? mathMax(max, tetherMax) : max);\n popperOffsets[mainAxis] = preventedOffset;\n data[mainAxis] = preventedOffset - offset;\n }\n\n if (checkAltAxis) {\n var _offsetModifierState$2;\n\n var _mainSide = mainAxis === 'x' ? top : left;\n\n var _altSide = mainAxis === 'x' ? bottom : right;\n\n var _offset = popperOffsets[altAxis];\n\n var _len = altAxis === 'y' ? 'height' : 'width';\n\n var _min = _offset + overflow[_mainSide];\n\n var _max = _offset - overflow[_altSide];\n\n var isOriginSide = [top, left].indexOf(basePlacement) !== -1;\n\n var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0;\n\n var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis;\n\n var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max;\n\n var _preventedOffset = tether && isOriginSide ? withinMaxClamp(_tetherMin, _offset, _tetherMax) : within(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max);\n\n popperOffsets[altAxis] = _preventedOffset;\n data[altAxis] = _preventedOffset - _offset;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'preventOverflow',\n enabled: true,\n phase: 'main',\n fn: preventOverflow,\n requiresIfExists: ['offset']\n};","export default function getAltAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport contains from \"../dom-utils/contains.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport { within } from \"../utils/within.js\";\nimport mergePaddingObject from \"../utils/mergePaddingObject.js\";\nimport expandToHashMap from \"../utils/expandToHashMap.js\";\nimport { left, right, basePlacements, top, bottom } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar toPaddingObject = function toPaddingObject(padding, state) {\n padding = typeof padding === 'function' ? padding(Object.assign({}, state.rects, {\n placement: state.placement\n })) : padding;\n return mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n};\n\nfunction arrow(_ref) {\n var _state$modifiersData$;\n\n var state = _ref.state,\n name = _ref.name,\n options = _ref.options;\n var arrowElement = state.elements.arrow;\n var popperOffsets = state.modifiersData.popperOffsets;\n var basePlacement = getBasePlacement(state.placement);\n var axis = getMainAxisFromPlacement(basePlacement);\n var isVertical = [left, right].indexOf(basePlacement) >= 0;\n var len = isVertical ? 'height' : 'width';\n\n if (!arrowElement || !popperOffsets) {\n return;\n }\n\n var paddingObject = toPaddingObject(options.padding, state);\n var arrowRect = getLayoutRect(arrowElement);\n var minProp = axis === 'y' ? top : left;\n var maxProp = axis === 'y' ? bottom : right;\n var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len];\n var startDiff = popperOffsets[axis] - state.rects.reference[axis];\n var arrowOffsetParent = getOffsetParent(arrowElement);\n var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;\n var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is\n // outside of the popper bounds\n\n var min = paddingObject[minProp];\n var max = clientSize - arrowRect[len] - paddingObject[maxProp];\n var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;\n var offset = within(min, center, max); // Prevents breaking syntax highlighting...\n\n var axisProp = axis;\n state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$);\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state,\n options = _ref2.options;\n var _options$element = options.element,\n arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element;\n\n if (arrowElement == null) {\n return;\n } // CSS selector\n\n\n if (typeof arrowElement === 'string') {\n arrowElement = state.elements.popper.querySelector(arrowElement);\n\n if (!arrowElement) {\n return;\n }\n }\n\n if (!contains(state.elements.popper, arrowElement)) {\n return;\n }\n\n state.elements.arrow = arrowElement;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'arrow',\n enabled: true,\n phase: 'main',\n fn: arrow,\n effect: effect,\n requires: ['popperOffsets'],\n requiresIfExists: ['preventOverflow']\n};","import * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport { createPopper as defaultCreatePopper } from '@popperjs/core';\nimport isEqual from 'react-fast-compare';\nimport { fromEntries, useIsomorphicLayoutEffect } from './utils';\nvar EMPTY_MODIFIERS = [];\nexport var usePopper = function usePopper(referenceElement, popperElement, options) {\n if (options === void 0) {\n options = {};\n }\n\n var prevOptions = React.useRef(null);\n var optionsWithDefaults = {\n onFirstUpdate: options.onFirstUpdate,\n placement: options.placement || 'bottom',\n strategy: options.strategy || 'absolute',\n modifiers: options.modifiers || EMPTY_MODIFIERS\n };\n\n var _React$useState = React.useState({\n styles: {\n popper: {\n position: optionsWithDefaults.strategy,\n left: '0',\n top: '0'\n },\n arrow: {\n position: 'absolute'\n }\n },\n attributes: {}\n }),\n state = _React$useState[0],\n setState = _React$useState[1];\n\n var updateStateModifier = React.useMemo(function () {\n return {\n name: 'updateState',\n enabled: true,\n phase: 'write',\n fn: function fn(_ref) {\n var state = _ref.state;\n var elements = Object.keys(state.elements);\n ReactDOM.flushSync(function () {\n setState({\n styles: fromEntries(elements.map(function (element) {\n return [element, state.styles[element] || {}];\n })),\n attributes: fromEntries(elements.map(function (element) {\n return [element, state.attributes[element]];\n }))\n });\n });\n },\n requires: ['computeStyles']\n };\n }, []);\n var popperOptions = React.useMemo(function () {\n var newOptions = {\n onFirstUpdate: optionsWithDefaults.onFirstUpdate,\n placement: optionsWithDefaults.placement,\n strategy: optionsWithDefaults.strategy,\n modifiers: [].concat(optionsWithDefaults.modifiers, [updateStateModifier, {\n name: 'applyStyles',\n enabled: false\n }])\n };\n\n if (isEqual(prevOptions.current, newOptions)) {\n return prevOptions.current || newOptions;\n } else {\n prevOptions.current = newOptions;\n return newOptions;\n }\n }, [optionsWithDefaults.onFirstUpdate, optionsWithDefaults.placement, optionsWithDefaults.strategy, optionsWithDefaults.modifiers, updateStateModifier]);\n var popperInstanceRef = React.useRef();\n useIsomorphicLayoutEffect(function () {\n if (popperInstanceRef.current) {\n popperInstanceRef.current.setOptions(popperOptions);\n }\n }, [popperOptions]);\n useIsomorphicLayoutEffect(function () {\n if (referenceElement == null || popperElement == null) {\n return;\n }\n\n var createPopper = options.createPopper || defaultCreatePopper;\n var popperInstance = createPopper(referenceElement, popperElement, popperOptions);\n popperInstanceRef.current = popperInstance;\n return function () {\n popperInstance.destroy();\n popperInstanceRef.current = null;\n };\n }, [referenceElement, popperElement, options.createPopper]);\n return {\n state: popperInstanceRef.current ? popperInstanceRef.current.state : null,\n styles: state.styles,\n attributes: state.attributes,\n update: popperInstanceRef.current ? popperInstanceRef.current.update : null,\n forceUpdate: popperInstanceRef.current ? popperInstanceRef.current.forceUpdate : null\n };\n};","import * as React from 'react';\nimport { ManagerReferenceNodeContext } from './Manager';\nimport { unwrapArray, setRef } from './utils';\nimport { usePopper } from './usePopper';\n\nvar NOOP = function NOOP() {\n return void 0;\n};\n\nvar NOOP_PROMISE = function NOOP_PROMISE() {\n return Promise.resolve(null);\n};\n\nvar EMPTY_MODIFIERS = [];\nexport function Popper(_ref) {\n var _ref$placement = _ref.placement,\n placement = _ref$placement === void 0 ? 'bottom' : _ref$placement,\n _ref$strategy = _ref.strategy,\n strategy = _ref$strategy === void 0 ? 'absolute' : _ref$strategy,\n _ref$modifiers = _ref.modifiers,\n modifiers = _ref$modifiers === void 0 ? EMPTY_MODIFIERS : _ref$modifiers,\n referenceElement = _ref.referenceElement,\n onFirstUpdate = _ref.onFirstUpdate,\n innerRef = _ref.innerRef,\n children = _ref.children;\n var referenceNode = React.useContext(ManagerReferenceNodeContext);\n\n var _React$useState = React.useState(null),\n popperElement = _React$useState[0],\n setPopperElement = _React$useState[1];\n\n var _React$useState2 = React.useState(null),\n arrowElement = _React$useState2[0],\n setArrowElement = _React$useState2[1];\n\n React.useEffect(function () {\n setRef(innerRef, popperElement);\n }, [innerRef, popperElement]);\n var options = React.useMemo(function () {\n return {\n placement: placement,\n strategy: strategy,\n onFirstUpdate: onFirstUpdate,\n modifiers: [].concat(modifiers, [{\n name: 'arrow',\n enabled: arrowElement != null,\n options: {\n element: arrowElement\n }\n }])\n };\n }, [placement, strategy, onFirstUpdate, modifiers, arrowElement]);\n\n var _usePopper = usePopper(referenceElement || referenceNode, popperElement, options),\n state = _usePopper.state,\n styles = _usePopper.styles,\n forceUpdate = _usePopper.forceUpdate,\n update = _usePopper.update;\n\n var childrenProps = React.useMemo(function () {\n return {\n ref: setPopperElement,\n style: styles.popper,\n placement: state ? state.placement : placement,\n hasPopperEscaped: state && state.modifiersData.hide ? state.modifiersData.hide.hasPopperEscaped : null,\n isReferenceHidden: state && state.modifiersData.hide ? state.modifiersData.hide.isReferenceHidden : null,\n arrowProps: {\n style: styles.arrow,\n ref: setArrowElement\n },\n forceUpdate: forceUpdate || NOOP,\n update: update || NOOP_PROMISE\n };\n }, [setPopperElement, setArrowElement, placement, state, styles, update, forceUpdate]);\n return unwrapArray(children)(childrenProps);\n}","import baseForOwn from './_baseForOwn.js';\n\n/**\n * The base implementation of `_.invert` and `_.invertBy` which inverts\n * `object` with values transformed by `iteratee` and set by `setter`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform values.\n * @param {Object} accumulator The initial inverted object.\n * @returns {Function} Returns `accumulator`.\n */\nfunction baseInverter(object, setter, iteratee, accumulator) {\n baseForOwn(object, function(value, key, object) {\n setter(accumulator, iteratee(value), key, object);\n });\n return accumulator;\n}\n\nexport default baseInverter;\n","import baseInverter from './_baseInverter.js';\n\n/**\n * Creates a function like `_.invertBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} toIteratee The function to resolve iteratees.\n * @returns {Function} Returns the new inverter function.\n */\nfunction createInverter(setter, toIteratee) {\n return function(object, iteratee) {\n return baseInverter(object, setter, toIteratee(iteratee), {});\n };\n}\n\nexport default createInverter;\n","import constant from './constant.js';\nimport createInverter from './_createInverter.js';\nimport identity from './identity.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Creates an object composed of the inverted keys and values of `object`.\n * If `object` contains duplicate values, subsequent values overwrite\n * property assignments of previous values.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Object\n * @param {Object} object The object to invert.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invert(object);\n * // => { '1': 'c', '2': 'b' }\n */\nvar invert = createInverter(function(result, value, key) {\n if (value != null &&\n typeof value.toString != 'function') {\n value = nativeObjectToString.call(value);\n }\n\n result[value] = key;\n}, constant(identity));\n\nexport default invert;\n","import _invert from \"lodash-es/invert\";\nimport _keys from \"lodash-es/keys\";\nexport var positionsMapping = {\n 'top center': 'top',\n 'top left': 'top-start',\n 'top right': 'top-end',\n 'bottom center': 'bottom',\n 'bottom left': 'bottom-start',\n 'bottom right': 'bottom-end',\n 'right center': 'right',\n 'left center': 'left'\n};\nexport var positions = _keys(positionsMapping);\nexport var placementMapping = _invert(positionsMapping);","import _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _memoize from \"lodash-es/memoize\";\nimport _invoke from \"lodash-es/invoke\";\nimport { isRefObject } from '@fluentui/react-component-ref';\n\nvar ReferenceProxy = /*#__PURE__*/function () {\n function ReferenceProxy(refObject) {\n this.ref = refObject;\n }\n\n var _proto = ReferenceProxy.prototype;\n\n _proto.getBoundingClientRect = function getBoundingClientRect() {\n return _invoke(this.ref.current, 'getBoundingClientRect') || {};\n };\n\n _createClass(ReferenceProxy, [{\n key: \"clientWidth\",\n get: function get() {\n return this.getBoundingClientRect().width;\n }\n }, {\n key: \"clientHeight\",\n get: function get() {\n return this.getBoundingClientRect().height;\n }\n }, {\n key: \"parentNode\",\n get: function get() {\n return this.ref.current ? this.ref.current.parentNode : undefined;\n }\n }, {\n key: \"contextElement\",\n get: function get() {\n return this.ref.current;\n }\n }]);\n\n return ReferenceProxy;\n}();\n/**\n * Popper.js does not support ref objects from `createRef()` as referenceElement. If we will pass\n * directly `ref`, `ref.current` will be `null` at the render process. We use memoize to keep the\n * same reference between renders.\n *\n * @see https://popper.js.org/popper-documentation.html#referenceObject\n */\n\n\nvar createReferenceProxy = _memoize(function (reference) {\n return new ReferenceProxy(isRefObject(reference) ? reference : {\n current: reference\n });\n});\n\nexport default createReferenceProxy;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport cx from 'clsx';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport { childrenUtils, createShorthandFactory, customPropTypes, getElementType, getUnhandledProps } from '../../lib';\n/**\n * A PopupContent displays the content body of a Popover.\n */\n\nexport default function PopupContent(props) {\n var children = props.children,\n className = props.className,\n content = props.content;\n var classes = cx('content', className);\n var rest = getUnhandledProps(PopupContent, props);\n var ElementType = getElementType(PopupContent, props);\n return /*#__PURE__*/React.createElement(ElementType, _extends({}, rest, {\n className: classes\n }), childrenUtils.isNil(children) ? content : children);\n}\nPopupContent.handledProps = [\"as\", \"children\", \"className\", \"content\"];\nPopupContent.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /** An element type to render as (string or function). */\n as: PropTypes.elementType,\n\n /** The content of the Popup */\n children: PropTypes.node,\n\n /** Classes to add to the Popup content className. */\n className: PropTypes.string,\n\n /** Shorthand for primary content. */\n content: customPropTypes.contentShorthand\n} : {};\nPopupContent.create = createShorthandFactory(PopupContent, function (children) {\n return {\n children: children\n };\n});","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport cx from 'clsx';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport { childrenUtils, createShorthandFactory, customPropTypes, getElementType, getUnhandledProps } from '../../lib';\n/**\n * A PopupHeader displays a header in a Popover.\n */\n\nexport default function PopupHeader(props) {\n var children = props.children,\n className = props.className,\n content = props.content;\n var classes = cx('header', className);\n var rest = getUnhandledProps(PopupHeader, props);\n var ElementType = getElementType(PopupHeader, props);\n return /*#__PURE__*/React.createElement(ElementType, _extends({}, rest, {\n className: classes\n }), childrenUtils.isNil(children) ? content : children);\n}\nPopupHeader.handledProps = [\"as\", \"children\", \"className\", \"content\"];\nPopupHeader.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /** An element type to render as (string or function). */\n as: PropTypes.elementType,\n\n /** Primary content. */\n children: PropTypes.node,\n\n /** Additional classes. */\n className: PropTypes.string,\n\n /** Shorthand for primary content. */\n content: customPropTypes.contentShorthand\n} : {};\nPopupHeader.create = createShorthandFactory(PopupHeader, function (children) {\n return {\n children: children\n };\n});","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport _without from \"lodash-es/without\";\nimport _isNil from \"lodash-es/isNil\";\nimport _isUndefined from \"lodash-es/isUndefined\";\nimport _invoke from \"lodash-es/invoke\";\nimport _isElement from \"lodash-es/isElement\";\nimport _isArray from \"lodash-es/isArray\";\nimport _pick from \"lodash-es/pick\";\nimport _includes from \"lodash-es/includes\";\nimport _reduce from \"lodash-es/reduce\";\nimport EventStack from '@semantic-ui-react/event-stack';\nimport cx from 'clsx';\nimport PropTypes from 'prop-types';\nimport React, { Component } from 'react';\nimport { Popper } from 'react-popper';\nimport shallowEqual from 'shallowequal';\nimport { eventStack, childrenUtils, createHTMLDivision, customPropTypes, getElementType, getUnhandledProps, SUI, useKeyOnly, useKeyOrValueAndKey } from '../../lib';\nimport Portal from '../../addons/Portal';\nimport { placementMapping, positions, positionsMapping } from './lib/positions';\nimport createReferenceProxy from './lib/createReferenceProxy';\nimport PopupContent from './PopupContent';\nimport PopupHeader from './PopupHeader';\n\n/**\n * A Popup displays additional information on top of a page.\n */\nvar Popup = /*#__PURE__*/function (_Component) {\n _inheritsLoose(Popup, _Component);\n\n function Popup() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _Component.call.apply(_Component, [this].concat(args)) || this;\n _this.state = {};\n _this.open = false;\n _this.zIndexWasSynced = false;\n _this.triggerRef = /*#__PURE__*/React.createRef();\n _this.elementRef = /*#__PURE__*/React.createRef();\n\n _this.getPortalProps = function () {\n var portalProps = {};\n var _this$props = _this.props,\n on = _this$props.on,\n hoverable = _this$props.hoverable;\n var normalizedOn = _isArray(on) ? on : [on];\n\n if (hoverable) {\n portalProps.closeOnPortalMouseLeave = true;\n portalProps.mouseLeaveDelay = 300;\n }\n\n if (_includes(normalizedOn, 'hover')) {\n portalProps.openOnTriggerClick = false;\n portalProps.closeOnTriggerClick = false;\n portalProps.openOnTriggerMouseEnter = true;\n portalProps.closeOnTriggerMouseLeave = true; // Taken from SUI: https://git.io/vPmCm\n\n portalProps.mouseLeaveDelay = 70;\n portalProps.mouseEnterDelay = 50;\n }\n\n if (_includes(normalizedOn, 'click')) {\n portalProps.openOnTriggerClick = true;\n portalProps.closeOnTriggerClick = true;\n portalProps.closeOnDocumentClick = true;\n }\n\n if (_includes(normalizedOn, 'focus')) {\n portalProps.openOnTriggerFocus = true;\n portalProps.closeOnTriggerBlur = true;\n }\n\n return portalProps;\n };\n\n _this.hideOnScroll = function (e) {\n // Do not hide the popup when scroll comes from inside the popup\n // https://github.com/Semantic-Org/Semantic-UI-React/issues/4305\n if (_isElement(e.target) && _this.elementRef.current.contains(e.target)) {\n return;\n }\n\n _this.setState({\n closed: true\n });\n\n eventStack.unsub('scroll', _this.hideOnScroll, {\n target: window\n });\n _this.timeoutId = setTimeout(function () {\n _this.setState({\n closed: false\n });\n }, 50);\n\n _this.handleClose(e);\n };\n\n _this.handleClose = function (e) {\n _invoke(_this.props, 'onClose', e, _extends({}, _this.props, {\n open: false\n }));\n };\n\n _this.handleOpen = function (e) {\n _invoke(_this.props, 'onOpen', e, _extends({}, _this.props, {\n open: true\n }));\n };\n\n _this.handlePortalMount = function (e) {\n _invoke(_this.props, 'onMount', e, _this.props);\n };\n\n _this.handlePortalUnmount = function (e) {\n _this.positionUpdate = null;\n\n _invoke(_this.props, 'onUnmount', e, _this.props);\n };\n\n _this.renderContent = function (_ref) {\n var popperPlacement = _ref.placement,\n popperRef = _ref.ref,\n update = _ref.update,\n popperStyle = _ref.style;\n var _this$props2 = _this.props,\n basic = _this$props2.basic,\n children = _this$props2.children,\n className = _this$props2.className,\n content = _this$props2.content,\n hideOnScroll = _this$props2.hideOnScroll,\n flowing = _this$props2.flowing,\n header = _this$props2.header,\n inverted = _this$props2.inverted,\n popper = _this$props2.popper,\n size = _this$props2.size,\n style = _this$props2.style,\n wide = _this$props2.wide;\n var contentRestProps = _this.state.contentRestProps;\n _this.positionUpdate = update;\n var classes = cx('ui', placementMapping[popperPlacement], size, useKeyOrValueAndKey(wide, 'wide'), useKeyOnly(basic, 'basic'), useKeyOnly(flowing, 'flowing'), useKeyOnly(inverted, 'inverted'), 'popup transition visible', className);\n var ElementType = getElementType(Popup, _this.props);\n\n var styles = _extends({\n // Heads up! We need default styles to get working correctly `flowing`\n left: 'auto',\n right: 'auto',\n // This is required to be properly positioned inside wrapping `div`\n position: 'initial'\n }, style);\n\n var innerElement = /*#__PURE__*/React.createElement(ElementType, _extends({}, contentRestProps, {\n className: classes,\n style: styles,\n ref: _this.elementRef\n }), childrenUtils.isNil(children) ? /*#__PURE__*/React.createElement(React.Fragment, null, PopupHeader.create(header, {\n autoGenerateKey: false\n }), PopupContent.create(content, {\n autoGenerateKey: false\n })) : children, hideOnScroll && /*#__PURE__*/React.createElement(EventStack, {\n on: _this.hideOnScroll,\n name: \"scroll\",\n target: \"window\"\n })); // https://github.com/popperjs/popper-core/blob/f1f9d1ab75b6b0e962f90a5b2a50f6cfd307d794/src/createPopper.js#L136-L137\n // Heads up!\n // A wrapping `div` there is a pure magic, it's required as Popper warns on margins that are\n // defined by SUI CSS. It also means that this `div` will be positioned instead of `content`.\n\n return createHTMLDivision(popper || {}, {\n overrideProps: {\n children: innerElement,\n ref: popperRef,\n style: _extends({\n // Fixes layout for floated elements\n // https://github.com/Semantic-Org/Semantic-UI-React/issues/4092\n display: 'flex'\n }, popperStyle)\n }\n });\n };\n\n return _this;\n }\n\n Popup.getDerivedStateFromProps = function getDerivedStateFromProps(props, state) {\n if (state.closed || state.disabled) return {};\n var unhandledProps = getUnhandledProps(Popup, props);\n\n var contentRestProps = _reduce(unhandledProps, function (acc, val, key) {\n if (!_includes(Portal.handledProps, key)) acc[key] = val;\n return acc;\n }, {});\n\n var portalRestProps = _pick(unhandledProps, Portal.handledProps);\n\n return {\n contentRestProps: contentRestProps,\n portalRestProps: portalRestProps\n };\n };\n\n var _proto = Popup.prototype;\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n var depsEqual = shallowEqual(this.props.popperDependencies, prevProps.popperDependencies);\n\n if (!depsEqual) {\n this.handleUpdate();\n }\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n clearTimeout(this.timeoutId);\n };\n\n _proto.handleUpdate = function handleUpdate() {\n if (this.positionUpdate) this.positionUpdate();\n };\n\n _proto.render = function render() {\n var _this2 = this;\n\n var _this$props3 = this.props,\n context = _this$props3.context,\n disabled = _this$props3.disabled,\n eventsEnabled = _this$props3.eventsEnabled,\n offset = _this$props3.offset,\n pinned = _this$props3.pinned,\n popper = _this$props3.popper,\n popperModifiers = _this$props3.popperModifiers,\n position = _this$props3.position,\n positionFixed = _this$props3.positionFixed,\n trigger = _this$props3.trigger;\n var _this$state = this.state,\n closed = _this$state.closed,\n portalRestProps = _this$state.portalRestProps;\n\n if (closed || disabled) {\n return trigger;\n }\n\n var modifiers = [{\n name: 'arrow',\n enabled: false\n }, {\n name: 'eventListeners',\n options: {\n scroll: !!eventsEnabled,\n resize: !!eventsEnabled\n }\n }, {\n name: 'flip',\n enabled: !pinned\n }, {\n name: 'preventOverflow',\n enabled: !!offset\n }, {\n name: 'offset',\n enabled: !!offset,\n options: {\n offset: offset\n }\n }].concat(popperModifiers, [// We are syncing zIndex from `.ui.popup.content` to avoid layering issues as in SUIR we are using an additional\n // `div` for Popper.js\n // https://github.com/Semantic-Org/Semantic-UI-React/issues/4083\n {\n name: 'syncZIndex',\n enabled: true,\n phase: 'beforeRead',\n fn: function fn(_ref2) {\n var _popper$style;\n\n var state = _ref2.state;\n\n if (_this2.zIndexWasSynced) {\n return;\n } // if zIndex defined in there is no sense to override it\n\n\n var definedZIndex = popper == null ? void 0 : (_popper$style = popper.style) == null ? void 0 : _popper$style.zIndex;\n\n if (_isUndefined(definedZIndex)) {\n // eslint-disable-next-line no-param-reassign\n state.elements.popper.style.zIndex = window.getComputedStyle(state.elements.popper.firstChild).zIndex;\n }\n\n _this2.zIndexWasSynced = true;\n },\n effect: function effect() {\n return function () {\n _this2.zIndexWasSynced = false;\n };\n }\n }]);\n var referenceElement = createReferenceProxy(_isNil(context) ? this.triggerRef : context);\n\n var mergedPortalProps = _extends({}, this.getPortalProps(), portalRestProps);\n\n return /*#__PURE__*/React.createElement(Portal, _extends({}, mergedPortalProps, {\n onClose: this.handleClose,\n onMount: this.handlePortalMount,\n onOpen: this.handleOpen,\n onUnmount: this.handlePortalUnmount,\n trigger: trigger,\n triggerRef: this.triggerRef\n }), /*#__PURE__*/React.createElement(Popper, {\n modifiers: modifiers,\n placement: positionsMapping[position],\n strategy: positionFixed ? 'fixed' : null,\n referenceElement: referenceElement\n }, this.renderContent));\n };\n\n return Popup;\n}(Component);\n\nPopup.handledProps = [\"as\", \"basic\", \"children\", \"className\", \"content\", \"context\", \"disabled\", \"eventsEnabled\", \"flowing\", \"header\", \"hideOnScroll\", \"hoverable\", \"inverted\", \"offset\", \"on\", \"onClose\", \"onMount\", \"onOpen\", \"onUnmount\", \"pinned\", \"popper\", \"popperDependencies\", \"popperModifiers\", \"position\", \"positionFixed\", \"size\", \"style\", \"trigger\", \"wide\"];\nexport { Popup as default };\nPopup.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /** An element type to render as (string or function). */\n as: PropTypes.elementType,\n\n /** Display the popup without the pointing arrow. */\n basic: PropTypes.bool,\n\n /** Primary content. */\n children: PropTypes.node,\n\n /** Additional classes. */\n className: PropTypes.string,\n\n /** Simple text content for the popover. */\n content: customPropTypes.itemShorthand,\n\n /** Existing element the pop-up should be bound to. */\n context: PropTypes.oneOfType([PropTypes.object, customPropTypes.refObject]),\n\n /** A disabled popup only renders its trigger. */\n disabled: PropTypes.bool,\n\n /** Enables the Popper.js event listeners. */\n eventsEnabled: PropTypes.bool,\n\n /** A flowing Popup has no maximum width and continues to flow to fit its content. */\n flowing: PropTypes.bool,\n\n /** Takes up the entire width of its offset container. */\n // TODO: implement the Popup fluid layout\n // fluid: PropTypes.bool,\n\n /** Header displayed above the content in bold. */\n header: customPropTypes.itemShorthand,\n\n /** Hide the Popup when scrolling the window. */\n hideOnScroll: PropTypes.bool,\n\n /** Whether the popup should not close on hover. */\n hoverable: PropTypes.bool,\n\n /** Invert the colors of the Popup. */\n inverted: PropTypes.bool,\n\n /**\n * Offset values in px unit to apply to rendered popup. The basic offset accepts an\n * array with two numbers in the form [skidding, distance]:\n * - `skidding` displaces the Popup along the reference element\n * - `distance` displaces the Popup away from, or toward, the reference element in the direction of its placement. A positive number displaces it further away, while a negative number lets it overlap the reference.\n *\n * @see https://popper.js.org/docs/v2/modifiers/offset/\n */\n offset: PropTypes.oneOfType([PropTypes.func, PropTypes.arrayOf(PropTypes.number)]),\n\n /** Events triggering the popup. */\n on: PropTypes.oneOfType([PropTypes.oneOf(['hover', 'click', 'focus']), PropTypes.arrayOf(PropTypes.oneOf(['hover', 'click', 'focus']))]),\n\n /**\n * Called when a close event happens.\n *\n * @param {SyntheticEvent} event - React's original SyntheticEvent.\n * @param {object} data - All props.\n */\n onClose: PropTypes.func,\n\n /**\n * Called when the portal is mounted on the DOM.\n *\n * @param {null}\n * @param {object} data - All props.\n */\n onMount: PropTypes.func,\n\n /**\n * Called when an open event happens.\n *\n * @param {SyntheticEvent} event - React's original SyntheticEvent.\n * @param {object} data - All props.\n */\n onOpen: PropTypes.func,\n\n /**\n * Called when the portal is unmounted from the DOM.\n *\n * @param {null}\n * @param {object} data - All props.\n */\n onUnmount: PropTypes.func,\n\n /** Disables automatic repositioning of the component, it will always be placed according to the position value. */\n pinned: PropTypes.bool,\n\n /** Position for the popover. */\n position: PropTypes.oneOf(positions),\n\n /** Tells `Popper.js` to use the `position: fixed` strategy to position the popover. */\n positionFixed: PropTypes.bool,\n\n /** A wrapping element for an actual content that will be used for positioning. */\n popper: customPropTypes.itemShorthand,\n\n /** An array containing custom settings for the Popper.js modifiers. */\n popperModifiers: PropTypes.array,\n\n /** A popup can have dependencies which update will schedule a position update. */\n popperDependencies: PropTypes.array,\n\n /** Popup size. */\n size: PropTypes.oneOf(_without(SUI.SIZES, 'medium', 'big', 'massive')),\n\n /** Custom Popup style. */\n style: PropTypes.object,\n\n /** Element to be rendered in-place where the popup is defined. */\n trigger: PropTypes.node,\n\n /** Popup width. */\n wide: PropTypes.oneOfType([PropTypes.bool, PropTypes.oneOf(['very'])])\n} : {};\nPopup.defaultProps = {\n disabled: false,\n eventsEnabled: true,\n on: ['click', 'hover'],\n pinned: false,\n popperModifiers: [],\n position: 'top left'\n};\nPopup.Content = PopupContent;\nPopup.Header = PopupHeader;","function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgDocumentPlain(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 192 192\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M121.8 16H40v160h112V50.5L121.8 16zm2.2 14.6L139.2 48H124V30.6zM48 168V24h68v32h28v112H48z\",\n style: {\n fill: \"#71767c\"\n }\n }));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgDocumentPlain);\nexport default __webpack_public_path__ + \"static/media/document-plain.5d4924617874bc32e570245615a09ef2.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgEmojiHappy(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 192 192\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M96 16c-44.112 0-80 35.888-80 80s35.888 80 80 80 80-35.888 80-80-35.888-80-80-80zm0 152c-39.701 0-72-32.299-72-72s32.299-72 72-72 72 32.299 72 72-32.299 72-72 72zM64 80a8 8 0 1 1 16 0 8 8 0 0 1-16 0zm48 0a8 8 0 1 1 16 0 8 8 0 0 1-16 0zm21.171 33.171l5.658 5.658C138.127 119.529 121.365 136 96 136s-42.127-16.47-42.829-17.171l5.651-5.663C58.972 113.314 74.038 128 96 128c22.087 0 37.023-14.68 37.171-14.829z\"\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgEmojiHappy);\nexport default __webpack_public_path__ + \"static/media/emoji-happy.0179b8d4e507fab1c4d25b86384ebfa7.svg\";\nexport { ForwardRef as ReactComponent };","var e=new Map;function t(t){var o=e.get(t);o&&o.destroy()}function o(t){var o=e.get(t);o&&o.update()}var r=null;\"undefined\"==typeof window?((r=function(e){return e}).destroy=function(e){return e},r.update=function(e){return e}):((r=function(t,o){return t&&Array.prototype.forEach.call(t.length?t:[t],function(t){return function(t){if(t&&t.nodeName&&\"TEXTAREA\"===t.nodeName&&!e.has(t)){var o,r=null,n=window.getComputedStyle(t),i=(o=t.value,function(){a({testForHeightReduction:\"\"===o||!t.value.startsWith(o),restoreTextAlign:null}),o=t.value}),l=function(o){t.removeEventListener(\"autosize:destroy\",l),t.removeEventListener(\"autosize:update\",s),t.removeEventListener(\"input\",i),window.removeEventListener(\"resize\",s),Object.keys(o).forEach(function(e){return t.style[e]=o[e]}),e.delete(t)}.bind(t,{height:t.style.height,resize:t.style.resize,textAlign:t.style.textAlign,overflowY:t.style.overflowY,overflowX:t.style.overflowX,wordWrap:t.style.wordWrap});t.addEventListener(\"autosize:destroy\",l),t.addEventListener(\"autosize:update\",s),t.addEventListener(\"input\",i),window.addEventListener(\"resize\",s),t.style.overflowX=\"hidden\",t.style.wordWrap=\"break-word\",e.set(t,{destroy:l,update:s}),s()}function a(e){var o,i,l=e.restoreTextAlign,s=void 0===l?null:l,d=e.testForHeightReduction,u=void 0===d||d,c=n.overflowY;if(0!==t.scrollHeight&&(\"vertical\"===n.resize?t.style.resize=\"none\":\"both\"===n.resize&&(t.style.resize=\"horizontal\"),u&&(o=function(e){for(var t=[];e&&e.parentNode&&e.parentNode instanceof Element;)e.parentNode.scrollTop&&t.push([e.parentNode,e.parentNode.scrollTop]),e=e.parentNode;return function(){return t.forEach(function(e){var t=e[0],o=e[1];t.style.scrollBehavior=\"auto\",t.scrollTop=o,t.style.scrollBehavior=null})}}(t),t.style.height=\"\"),i=\"content-box\"===n.boxSizing?t.scrollHeight-(parseFloat(n.paddingTop)+parseFloat(n.paddingBottom)):t.scrollHeight+parseFloat(n.borderTopWidth)+parseFloat(n.borderBottomWidth),\"none\"!==n.maxHeight&&i>parseFloat(n.maxHeight)?(\"hidden\"===n.overflowY&&(t.style.overflow=\"scroll\"),i=parseFloat(n.maxHeight)):\"hidden\"!==n.overflowY&&(t.style.overflow=\"hidden\"),t.style.height=i+\"px\",s&&(t.style.textAlign=s),o&&o(),r!==i&&(t.dispatchEvent(new Event(\"autosize:resized\",{bubbles:!0})),r=i),c!==n.overflow&&!s)){var v=n.textAlign;\"hidden\"===n.overflow&&(t.style.textAlign=\"start\"===v?\"end\":\"start\"),a({restoreTextAlign:v,testForHeightReduction:!0})}}function s(){a({testForHeightReduction:!0,restoreTextAlign:null})}}(t)}),t}).destroy=function(e){return e&&Array.prototype.forEach.call(e.length?e:[e],t),e},r.update=function(e){return e&&Array.prototype.forEach.call(e.length?e:[e],o),e});var n=r;export default n;\n","import React, { useState, useRef, Fragment, useEffect } from 'react'\r\nimport {\r\n Persistence,\r\n MessageType,\r\n sendChannelMessage,\r\n updateChannelReadMarker,\r\n} from '../../api/ChimeAPI'\r\nimport './Input.css'\r\nimport {\r\n Button,\r\n Image,\r\n Icon,\r\n Input as InputAV,\r\n Popup,\r\n Message,\r\n Progress,\r\n} from 'semantic-ui-react'\r\nimport { EmojiClickData } from 'emoji-picker-react'\r\nimport { ReactComponent as File } from '../../assets/svg/document-plain.svg'\r\nimport { ReactComponent as Emoji } from '../../assets/svg/emoji-happy.svg'\r\nimport { AttachmentService } from '../../services/AttachmentService'\r\nimport { v4 as uuidv4 } from 'uuid'\r\nimport ErrorModal from '../../components/modals/ErrorModal'\r\nimport ModalGetEmoji from '../../components/modals/ModalGetEmoji'\r\nimport { useTranslation } from 'react-i18next'\r\nimport { checkText } from 'smile2emoji'\r\nimport autosize from 'autosize';\r\ninterface InputProps {\r\n activeChannelArn: string\r\n member: string\r\n browserLanguage: string\r\n}\r\n\r\nconst InputMessage = ({\r\n activeChannelArn,\r\n member,\r\n browserLanguage\r\n}: InputProps) => {\r\n const [text, setText] = useState('')\r\n const [file, setFile] = useState(null)\r\n const [progressCurrent, setProgressCurrent] = useState(0)\r\n const [isUploadFail, changeUploadFail] = useState(false)\r\n const [fileSizeWarn, setFileSizeWarn] = useState({\r\n popup: false,\r\n message: '',\r\n })\r\n const [networkError, setNetworkError] = useState(false)\r\n const [openEmoji, setOpenEmoji] = useState(false)\r\n const fileInputRef = useRef()\r\n const inputRef = useRef()\r\n const { t } = useTranslation()\r\n const memberSender = { userId: member }\r\n const maxSize = parseInt(`${process.env.REACT_APP_AWS_S3_MAX_SIZE}`)\r\n const maxSizeInMB = Math.round(maxSize / 1024 / 1024)\r\n const maxSizeMessageInWord = 4000;\r\n const [countWordMesssage, setCountWordMesssage] = useState(0)\r\n\r\n const resetState = () => {\r\n setText('')\r\n setFile(null)\r\n setProgressCurrent(0)\r\n setCountWordMesssage(0)\r\n }\r\n\r\n const onChange = (e: any) => {\r\n let text = e.target.value\r\n //convert text to emoji\r\n let result = checkText(text)\r\n let countWord = result.length;\r\n if (countWord <= maxSizeMessageInWord) {\r\n setText(result);\r\n setCountWordMesssage(countWord)\r\n }\r\n\r\n if (countWord > maxSizeMessageInWord) {\r\n let maxSizeMessageInWordInText = result.substring(0, maxSizeMessageInWord);\r\n setText(maxSizeMessageInWordInText);\r\n setCountWordMesssage(maxSizeMessageInWordInText.length)\r\n }\r\n\r\n\r\n }\r\n\r\n var flagOnUpload = false\r\n\r\n const onSubmit = async (e: any) => {\r\n e.preventDefault()\r\n let textMessage = text;\r\n const options = {\r\n language: browserLanguage,\r\n isBoschExpert: true\r\n }\r\n if (file && !flagOnUpload) {\r\n flagOnUpload = true\r\n const fileName = uuidv4()\r\n const attachmentService = AttachmentService.getInstance()\r\n await attachmentService\r\n .uploadObject(\r\n file,\r\n activeChannelArn.substring(activeChannelArn.lastIndexOf('/') + 1),\r\n fileName,\r\n )\r\n .on('httpUploadProgress', (evt) => {\r\n setProgressCurrent(Math.round((evt.loaded / evt.total) * 100))\r\n })\r\n .send(async (err: any, data: any) => {\r\n flagOnUpload = false\r\n if (err) {\r\n if (err.code == 'NetworkingError') {\r\n setNetworkError(true)\r\n }\r\n changeUploadFail(true)\r\n } else {\r\n const optionAttach = JSON.stringify({\r\n ...options,\r\n attachment: {\r\n fileKey: data.Key,\r\n location: data.Location,\r\n name: file.name,\r\n size: file.size,\r\n type: file.type,\r\n },\r\n })\r\n\r\n await sendChannelMessage(\r\n activeChannelArn,\r\n text || ' ',\r\n Persistence.PERSISTENT,\r\n MessageType.STANDARD,\r\n memberSender,\r\n optionAttach,\r\n )\r\n updateChannelReadMarker(activeChannelArn, memberSender.userId)\r\n resetState()\r\n }\r\n })\r\n } else {\r\n if ((textMessage.trim() !== \"\") && (countWordMesssage < maxSizeMessageInWord)) {\r\n await sendChannelMessage(\r\n activeChannelArn,\r\n textMessage,\r\n Persistence.PERSISTENT,\r\n MessageType.STANDARD,\r\n memberSender,\r\n JSON.stringify(options),\r\n )\r\n updateChannelReadMarker(activeChannelArn, memberSender.userId)\r\n resetState()\r\n }\r\n }\r\n }\r\n\r\n const handleChange = (e: any) => {\r\n changeUploadFail(false)\r\n const file = e.target.files[0]\r\n\r\n if (file) {\r\n if (file.size <= maxSize) {\r\n setFile(file)\r\n } else {\r\n setFileSizeWarn({\r\n popup: true,\r\n message: `Cannot upload file. File size is larger than ${maxSizeInMB} MB`,\r\n })\r\n }\r\n inputRef.current.focus()\r\n e.target.value = null\r\n }\r\n }\r\n\r\n const handleOnPaste = (e: any) => {\r\n changeUploadFail(false)\r\n const file = e.files[0]\r\n if (file) {\r\n if (file.size <= maxSize) {\r\n setFile(file)\r\n } else {\r\n setFileSizeWarn({\r\n popup: true,\r\n message: `Cannot upload file. File size is larger than ${maxSizeInMB} MB`,\r\n })\r\n }\r\n }\r\n }\r\n\r\n const setPopFileSizeWarnFalse = () => {\r\n setFileSizeWarn({\r\n popup: false,\r\n message: '',\r\n })\r\n }\r\n\r\n const setNetworkErrorFalse = () => {\r\n setNetworkError(false)\r\n }\r\n const getEmoji = (data: EmojiClickData) => {\r\n setText(text + data.emoji)\r\n setOpenEmoji(false)\r\n }\r\n\r\n const resize = (size: string) => {\r\n let size_num = Number(size)\r\n return size_num < 1024\r\n ? `${size} bytes`\r\n : size_num < 1024 * 1024\r\n ? `${String((size_num / 1024).toFixed(2))} KB`\r\n : `${String((size_num / 1024 / 1024).toFixed(2))} MB`\r\n }\r\n\r\n\r\n useEffect(() => {\r\n if (inputRef.current) {\r\n autosize(inputRef.current);\r\n\r\n return () => {\r\n autosize.destroy(inputRef.current!);\r\n };\r\n }\r\n }, [text, inputRef.current]);\r\n\r\n\r\n const insertLineBreak = () => {\r\n const textarea = inputRef.current;\r\n\r\n if (!textarea) {\r\n return;\r\n }\r\n\r\n const { selectionStart, selectionEnd, value } = textarea;\r\n const newText = `${value.substring(0, selectionStart)}\\n${value.substring(selectionEnd)}`;\r\n\r\n setText(newText);\r\n\r\n // Move the cursor to the position after the inserted line break\r\n const newPosition = selectionStart + 1;\r\n textarea.setSelectionRange(newPosition, newPosition);\r\n };\r\n\r\n return (\r\n
\r\n
\r\n \r\n {file && (\r\n \r\n
\r\n {file.type.includes('image') ? (\r\n \r\n ) : (\r\n \r\n \r\n \r\n )}\r\n
\r\n {file.name}\r\n
\r\n {resize(file.size)}\r\n
\r\n setFile(null)}\r\n >\r\n \r\n
\r\n
\r\n {progressCurrent !== 0 && (\r\n \r\n )}\r\n \r\n )}\r\n
\r\n ) => {\r\n if (e.key === 'Enter' && e.altKey) {\r\n e.preventDefault();\r\n insertLineBreak();\r\n } else if (e.key === 'Enter') {\r\n onSubmit(e);\r\n }\r\n }}\r\n onPaste={(e: React.ClipboardEvent) => {\r\n handleOnPaste(e.clipboardData);\r\n }}\r\n ref={inputRef}\r\n />\r\n
\r\n
= maxSizeMessageInWord) ? 'input-text-count limited' : 'input-text-count'}>\r\n

{`${countWordMesssage}/${maxSizeMessageInWord}`}

\r\n
\r\n
\r\n
\r\n setOpenEmoji(!openEmoji)}\r\n type=\"button\"\r\n >\r\n \r\n \r\n \r\n }\r\n />\r\n \r\n\r\n {\r\n fileInputRef.current.value = null\r\n fileInputRef.current.click()\r\n }}\r\n >\r\n }\r\n />\r\n \r\n
\r\n\r\n \r\n {\r\n onSubmit(e)\r\n }}\r\n >\r\n }\r\n />\r\n \r\n
\r\n \r\n \r\n\r\n {openEmoji && (\r\n setOpenEmoji(false)}\r\n getEmoji={(e: EmojiClickData) => getEmoji(e)}\r\n >\r\n )}\r\n\r\n \r\n\r\n \r\n \r\n )\r\n}\r\n\r\nexport default InputMessage\r\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport cx from 'clsx';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport { childrenUtils, createShorthandFactory, customPropTypes, getElementType, getUnhandledProps } from '../../lib';\n/**\n * A list item can contain a description.\n */\n\nfunction ListDescription(props) {\n var children = props.children,\n className = props.className,\n content = props.content;\n var classes = cx(className, 'description');\n var rest = getUnhandledProps(ListDescription, props);\n var ElementType = getElementType(ListDescription, props);\n return /*#__PURE__*/React.createElement(ElementType, _extends({}, rest, {\n className: classes\n }), childrenUtils.isNil(children) ? content : children);\n}\n\nListDescription.handledProps = [\"as\", \"children\", \"className\", \"content\"];\nListDescription.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /** An element type to render as (string or function). */\n as: PropTypes.elementType,\n\n /** Primary content. */\n children: PropTypes.node,\n\n /** Additional classes. */\n className: PropTypes.string,\n\n /** Shorthand for primary content. */\n content: customPropTypes.contentShorthand\n} : {};\nListDescription.create = createShorthandFactory(ListDescription, function (content) {\n return {\n content: content\n };\n});\nexport default ListDescription;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport cx from 'clsx';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport { childrenUtils, createShorthandFactory, customPropTypes, getElementType, getUnhandledProps } from '../../lib';\n/**\n * A list item can contain a header.\n */\n\nfunction ListHeader(props) {\n var children = props.children,\n className = props.className,\n content = props.content;\n var classes = cx('header', className);\n var rest = getUnhandledProps(ListHeader, props);\n var ElementType = getElementType(ListHeader, props);\n return /*#__PURE__*/React.createElement(ElementType, _extends({}, rest, {\n className: classes\n }), childrenUtils.isNil(children) ? content : children);\n}\n\nListHeader.handledProps = [\"as\", \"children\", \"className\", \"content\"];\nListHeader.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /** An element type to render as (string or function). */\n as: PropTypes.elementType,\n\n /** Primary content. */\n children: PropTypes.node,\n\n /** Additional classes. */\n className: PropTypes.string,\n\n /** Shorthand for primary content. */\n content: customPropTypes.contentShorthand\n} : {};\nListHeader.create = createShorthandFactory(ListHeader, function (content) {\n return {\n content: content\n };\n});\nexport default ListHeader;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport cx from 'clsx';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport { childrenUtils, createShorthandFactory, customPropTypes, getElementType, getUnhandledProps, SUI, useValueAndKey, useVerticalAlignProp } from '../../lib';\nimport ListDescription from './ListDescription';\nimport ListHeader from './ListHeader';\n/**\n * A list item can contain a content.\n */\n\nfunction ListContent(props) {\n var children = props.children,\n className = props.className,\n content = props.content,\n description = props.description,\n floated = props.floated,\n header = props.header,\n verticalAlign = props.verticalAlign;\n var classes = cx(useValueAndKey(floated, 'floated'), useVerticalAlignProp(verticalAlign), 'content', className);\n var rest = getUnhandledProps(ListContent, props);\n var ElementType = getElementType(ListContent, props);\n\n if (!childrenUtils.isNil(children)) {\n return /*#__PURE__*/React.createElement(ElementType, _extends({}, rest, {\n className: classes\n }), children);\n }\n\n return /*#__PURE__*/React.createElement(ElementType, _extends({}, rest, {\n className: classes\n }), ListHeader.create(header), ListDescription.create(description), content);\n}\n\nListContent.handledProps = [\"as\", \"children\", \"className\", \"content\", \"description\", \"floated\", \"header\", \"verticalAlign\"];\nListContent.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /** An element type to render as (string or function). */\n as: PropTypes.elementType,\n\n /** Primary content. */\n children: PropTypes.node,\n\n /** Additional classes. */\n className: PropTypes.string,\n\n /** Shorthand for primary content. */\n content: customPropTypes.contentShorthand,\n\n /** Shorthand for ListDescription. */\n description: customPropTypes.itemShorthand,\n\n /** An list content can be floated left or right. */\n floated: PropTypes.oneOf(SUI.FLOATS),\n\n /** Shorthand for ListHeader. */\n header: customPropTypes.itemShorthand,\n\n /** An element inside a list can be vertically aligned. */\n verticalAlign: PropTypes.oneOf(SUI.VERTICAL_ALIGNMENTS)\n} : {};\nListContent.create = createShorthandFactory(ListContent, function (content) {\n return {\n content: content\n };\n});\nexport default ListContent;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport cx from 'clsx';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport { createShorthandFactory, getUnhandledProps, SUI, useVerticalAlignProp } from '../../lib';\nimport Icon from '../Icon/Icon';\n/**\n * A list item can contain an icon.\n */\n\nfunction ListIcon(props) {\n var className = props.className,\n verticalAlign = props.verticalAlign;\n var classes = cx(useVerticalAlignProp(verticalAlign), className);\n var rest = getUnhandledProps(ListIcon, props);\n return /*#__PURE__*/React.createElement(Icon, _extends({}, rest, {\n className: classes\n }));\n}\n\nListIcon.handledProps = [\"className\", \"verticalAlign\"];\nListIcon.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /** Additional classes. */\n className: PropTypes.string,\n\n /** An element inside a list can be vertically aligned. */\n verticalAlign: PropTypes.oneOf(SUI.VERTICAL_ALIGNMENTS)\n} : {};\nListIcon.create = createShorthandFactory(ListIcon, function (name) {\n return {\n name: name\n };\n});\nexport default ListIcon;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport _isPlainObject from \"lodash-es/isPlainObject\";\nimport _invoke from \"lodash-es/invoke\";\nimport cx from 'clsx';\nimport PropTypes from 'prop-types';\nimport React, { Component, isValidElement } from 'react';\nimport { childrenUtils, createShorthandFactory, customPropTypes, getElementType, getUnhandledProps, useKeyOnly } from '../../lib';\nimport Image from '../Image';\nimport ListContent from './ListContent';\nimport ListDescription from './ListDescription';\nimport ListHeader from './ListHeader';\nimport ListIcon from './ListIcon';\n/**\n * A list item can contain a set of items.\n */\n\nvar ListItem = /*#__PURE__*/function (_Component) {\n _inheritsLoose(ListItem, _Component);\n\n function ListItem() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _Component.call.apply(_Component, [this].concat(args)) || this;\n\n _this.handleClick = function (e) {\n var disabled = _this.props.disabled;\n if (!disabled) _invoke(_this.props, 'onClick', e, _this.props);\n };\n\n return _this;\n }\n\n var _proto = ListItem.prototype;\n\n _proto.render = function render() {\n var _this$props = this.props,\n active = _this$props.active,\n children = _this$props.children,\n className = _this$props.className,\n content = _this$props.content,\n description = _this$props.description,\n disabled = _this$props.disabled,\n header = _this$props.header,\n icon = _this$props.icon,\n image = _this$props.image,\n value = _this$props.value;\n var ElementType = getElementType(ListItem, this.props);\n var classes = cx(useKeyOnly(active, 'active'), useKeyOnly(disabled, 'disabled'), useKeyOnly(ElementType !== 'li', 'item'), className);\n var rest = getUnhandledProps(ListItem, this.props);\n var valueProp = ElementType === 'li' ? {\n value: value\n } : {\n 'data-value': value\n };\n\n if (!childrenUtils.isNil(children)) {\n return /*#__PURE__*/React.createElement(ElementType, _extends({}, valueProp, {\n role: \"listitem\",\n className: classes,\n onClick: this.handleClick\n }, rest), children);\n }\n\n var iconElement = ListIcon.create(icon, {\n autoGenerateKey: false\n });\n var imageElement = Image.create(image, {\n autoGenerateKey: false\n }); // See description of `content` prop for explanation about why this is necessary.\n\n if (! /*#__PURE__*/isValidElement(content) && _isPlainObject(content)) {\n return /*#__PURE__*/React.createElement(ElementType, _extends({}, valueProp, {\n role: \"listitem\",\n className: classes,\n onClick: this.handleClick\n }, rest), iconElement || imageElement, ListContent.create(content, {\n autoGenerateKey: false,\n defaultProps: {\n header: header,\n description: description\n }\n }));\n }\n\n var headerElement = ListHeader.create(header, {\n autoGenerateKey: false\n });\n var descriptionElement = ListDescription.create(description, {\n autoGenerateKey: false\n });\n\n if (iconElement || imageElement) {\n return /*#__PURE__*/React.createElement(ElementType, _extends({}, valueProp, {\n role: \"listitem\",\n className: classes,\n onClick: this.handleClick\n }, rest), iconElement || imageElement, (content || headerElement || descriptionElement) && /*#__PURE__*/React.createElement(ListContent, null, headerElement, descriptionElement, content));\n }\n\n return /*#__PURE__*/React.createElement(ElementType, _extends({}, valueProp, {\n role: \"listitem\",\n className: classes,\n onClick: this.handleClick\n }, rest), headerElement, descriptionElement, content);\n };\n\n return ListItem;\n}(Component);\n\nListItem.handledProps = [\"active\", \"as\", \"children\", \"className\", \"content\", \"description\", \"disabled\", \"header\", \"icon\", \"image\", \"onClick\", \"value\"];\nListItem.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /** An element type to render as (string or function). */\n as: PropTypes.elementType,\n\n /** A list item can active. */\n active: PropTypes.bool,\n\n /** Primary content. */\n children: PropTypes.node,\n\n /** Additional classes. */\n className: PropTypes.string,\n\n /**\n * Shorthand for primary content.\n *\n * Heads up!\n *\n * This is handled slightly differently than the typical `content` prop since\n * the wrapping ListContent is not used when there's no icon or image.\n *\n * If you pass content as:\n * - an element/literal, it's treated as the sibling node to\n * header/description (whether wrapped in Item.Content or not).\n * - a props object, it forces the presence of Item.Content and passes those\n * props to it. If you pass a content prop within that props object, it\n * will be treated as the sibling node to header/description.\n */\n content: customPropTypes.itemShorthand,\n\n /** Shorthand for ListDescription. */\n description: customPropTypes.itemShorthand,\n\n /** A list item can disabled. */\n disabled: PropTypes.bool,\n\n /** Shorthand for ListHeader. */\n header: customPropTypes.itemShorthand,\n\n /** Shorthand for ListIcon. */\n icon: customPropTypes.every([customPropTypes.disallow(['image']), customPropTypes.itemShorthand]),\n\n /** Shorthand for Image. */\n image: customPropTypes.every([customPropTypes.disallow(['icon']), customPropTypes.itemShorthand]),\n\n /** A ListItem can be clicked */\n onClick: PropTypes.func,\n\n /** A value for an ordered list. */\n value: PropTypes.string\n} : {};\nListItem.create = createShorthandFactory(ListItem, function (content) {\n return {\n content: content\n };\n});\nexport default ListItem;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport cx from 'clsx';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport { childrenUtils, customPropTypes, getElementType, getUnhandledProps, useKeyOnly } from '../../lib';\n/**\n * A list can contain a sub list.\n */\n\nfunction ListList(props) {\n var children = props.children,\n className = props.className,\n content = props.content;\n var rest = getUnhandledProps(ListList, props);\n var ElementType = getElementType(ListList, props);\n var classes = cx(useKeyOnly(ElementType !== 'ul' && ElementType !== 'ol', 'list'), className);\n return /*#__PURE__*/React.createElement(ElementType, _extends({}, rest, {\n className: classes\n }), childrenUtils.isNil(children) ? content : children);\n}\n\nListList.handledProps = [\"as\", \"children\", \"className\", \"content\"];\nListList.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /** An element type to render as (string or function). */\n as: PropTypes.elementType,\n\n /** Primary content. */\n children: PropTypes.node,\n\n /** Additional classes. */\n className: PropTypes.string,\n\n /** Shorthand for primary content. */\n content: customPropTypes.contentShorthand\n} : {};\nexport default ListList;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport _map from \"lodash-es/map\";\nimport _invoke from \"lodash-es/invoke\";\nimport cx from 'clsx';\nimport PropTypes from 'prop-types';\nimport React, { Component } from 'react';\nimport { childrenUtils, customPropTypes, getElementType, getUnhandledProps, SUI, useKeyOnly, useKeyOrValueAndKey, useValueAndKey, useVerticalAlignProp } from '../../lib';\nimport ListContent from './ListContent';\nimport ListDescription from './ListDescription';\nimport ListHeader from './ListHeader';\nimport ListIcon from './ListIcon';\nimport ListItem from './ListItem';\nimport ListList from './ListList';\n/**\n * A list groups related content.\n */\n\nvar List = /*#__PURE__*/function (_Component) {\n _inheritsLoose(List, _Component);\n\n function List() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _Component.call.apply(_Component, [this].concat(args)) || this;\n\n _this.handleItemOverrides = function (predefinedProps) {\n return {\n onClick: function onClick(e, itemProps) {\n _invoke(predefinedProps, 'onClick', e, itemProps);\n\n _invoke(_this.props, 'onItemClick', e, itemProps);\n }\n };\n };\n\n return _this;\n }\n\n var _proto = List.prototype;\n\n _proto.render = function render() {\n var _this2 = this;\n\n var _this$props = this.props,\n animated = _this$props.animated,\n bulleted = _this$props.bulleted,\n celled = _this$props.celled,\n children = _this$props.children,\n className = _this$props.className,\n content = _this$props.content,\n divided = _this$props.divided,\n floated = _this$props.floated,\n horizontal = _this$props.horizontal,\n inverted = _this$props.inverted,\n items = _this$props.items,\n link = _this$props.link,\n ordered = _this$props.ordered,\n relaxed = _this$props.relaxed,\n selection = _this$props.selection,\n size = _this$props.size,\n verticalAlign = _this$props.verticalAlign;\n var classes = cx('ui', size, useKeyOnly(animated, 'animated'), useKeyOnly(bulleted, 'bulleted'), useKeyOnly(celled, 'celled'), useKeyOnly(divided, 'divided'), useKeyOnly(horizontal, 'horizontal'), useKeyOnly(inverted, 'inverted'), useKeyOnly(link, 'link'), useKeyOnly(ordered, 'ordered'), useKeyOnly(selection, 'selection'), useKeyOrValueAndKey(relaxed, 'relaxed'), useValueAndKey(floated, 'floated'), useVerticalAlignProp(verticalAlign), 'list', className);\n var rest = getUnhandledProps(List, this.props);\n var ElementType = getElementType(List, this.props);\n\n if (!childrenUtils.isNil(children)) {\n return /*#__PURE__*/React.createElement(ElementType, _extends({\n role: \"list\",\n className: classes\n }, rest), children);\n }\n\n if (!childrenUtils.isNil(content)) {\n return /*#__PURE__*/React.createElement(ElementType, _extends({\n role: \"list\",\n className: classes\n }, rest), content);\n }\n\n return /*#__PURE__*/React.createElement(ElementType, _extends({\n role: \"list\",\n className: classes\n }, rest), _map(items, function (item) {\n return ListItem.create(item, {\n overrideProps: _this2.handleItemOverrides\n });\n }));\n };\n\n return List;\n}(Component);\n\nList.handledProps = [\"animated\", \"as\", \"bulleted\", \"celled\", \"children\", \"className\", \"content\", \"divided\", \"floated\", \"horizontal\", \"inverted\", \"items\", \"link\", \"onItemClick\", \"ordered\", \"relaxed\", \"selection\", \"size\", \"verticalAlign\"];\nList.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /** An element type to render as (string or function). */\n as: PropTypes.elementType,\n\n /** A list can animate to set the current item apart from the list. */\n animated: PropTypes.bool,\n\n /** A list can mark items with a bullet. */\n bulleted: PropTypes.bool,\n\n /** A list can divide its items into cells. */\n celled: PropTypes.bool,\n\n /** Primary content. */\n children: PropTypes.node,\n\n /** Additional classes. */\n className: PropTypes.string,\n\n /** Shorthand for primary content. */\n content: customPropTypes.contentShorthand,\n\n /** A list can show divisions between content. */\n divided: PropTypes.bool,\n\n /** An list can be floated left or right. */\n floated: PropTypes.oneOf(SUI.FLOATS),\n\n /** A list can be formatted to have items appear horizontally. */\n horizontal: PropTypes.bool,\n\n /** A list can be inverted to appear on a dark background. */\n inverted: PropTypes.bool,\n\n /** Shorthand array of props for ListItem. */\n items: customPropTypes.collectionShorthand,\n\n /** A list can be specially formatted for navigation links. */\n link: PropTypes.bool,\n\n /**\n * onClick handler for ListItem. Mutually exclusive with children.\n *\n * @param {SyntheticEvent} event - React's original SyntheticEvent.\n * @param {object} data - All item props.\n */\n onItemClick: customPropTypes.every([customPropTypes.disallow(['children']), PropTypes.func]),\n\n /** A list can be ordered numerically. */\n ordered: PropTypes.bool,\n\n /** A list can relax its padding to provide more negative space. */\n relaxed: PropTypes.oneOfType([PropTypes.bool, PropTypes.oneOf(['very'])]),\n\n /** A selection list formats list items as possible choices. */\n selection: PropTypes.bool,\n\n /** A list can vary in size. */\n size: PropTypes.oneOf(SUI.SIZES),\n\n /** An element inside a list can be vertically aligned. */\n verticalAlign: PropTypes.oneOf(SUI.VERTICAL_ALIGNMENTS)\n} : {};\nList.Content = ListContent;\nList.Description = ListDescription;\nList.Header = ListHeader;\nList.Icon = ListIcon;\nList.Item = ListItem;\nList.List = ListList;\nexport default List;","function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgShieldStop(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 192 192\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M134.829 62.829L101.657 96l33.172 33.171-5.658 5.658L96 101.657 62.829 134.83l-5.658-5.658L90.343 96 57.17 62.829l5.658-5.658L96 90.343l33.171-33.172 5.658 5.658zM176 96c0 44.112-35.888 80-80 80s-80-35.888-80-80 35.888-80 80-80 80 35.888 80 80zm-8 0c0-39.701-32.299-72-72-72S24 56.299 24 96s32.299 72 72 72 72-32.299 72-72z\",\n style: {\n fill: \"#ff0000\"\n }\n }));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgShieldStop);\nexport default __webpack_public_path__ + \"static/media/shield-stop.a4355f12b27926c5d555593d52c55b5a.svg\";\nexport { ForwardRef as ReactComponent };","import { LogLevel } from 'amazon-chime-sdk-js'\r\n\r\nexport const AppConsts = {\r\n appBaseUrl: '',\r\n //remoteServiceBaseUrl: 'https://redi-hub-api.azurewebsites.net',\r\n //remoteServiceBaseUrl: 'https://app-dev-germanywestcentral-rediapi.azurewebsites.net',\r\n //remoteServiceBaseUrl: 'http://localhost:15825',\r\n appLanguages: [\r\n { key: 'English', text: 'English', value: 'en' },\r\n { key: 'Dansk', text: 'Dansk', value: 'da' },\r\n ],\r\n homeSideLink: [\r\n {\r\n countryCode: 'AT',\r\n aboutUs: 'https://www.bosch.at/unser-unternehmen/bosch-in-oesterreich/',\r\n news: 'https://www.bosch.at/news-and-stories/technik-fuers-leben-preis/',\r\n position: 'https://www.bosch.at/karriere/',\r\n },\r\n {\r\n countryCode: 'BE',\r\n aboutUs: 'https://www.bosch.be/our-company/our-history/',\r\n news:\r\n 'https://www.bosch.be/news-and-stories/climatemattersatbosch-papillon-project/',\r\n position: 'https://www.bosch.be/careers/',\r\n },\r\n {\r\n countryCode: 'CH',\r\n aboutUs: 'https://www.bosch.ch/unser-unternehmen/bosch-in-der-schweiz/',\r\n news: 'https://www.bosch.ch/news-and-stories/geschaeftsjahr-2020/',\r\n position: 'https://www.bosch.ch/karriere/starte-deine-karriere/',\r\n },\r\n {\r\n countryCode: 'DK',\r\n aboutUs: '',\r\n news: 'https://www.bosch.dk/nyheder/',\r\n position: 'https://www.bosch.dk/karrierer/',\r\n },\r\n {\r\n countryCode: 'DE',\r\n aboutUs: 'https://www.bosch.de/unser-unternehmen/bosch-gruppe-weltweit/',\r\n news: 'https://www.bosch.com/de/unternehmen/geschaeftsbericht/',\r\n position: 'https://www.bosch.de/karriere/jobs/',\r\n },\r\n {\r\n countryCode: 'ES',\r\n aboutUs: 'https://www.grupo-bosch.es/nuestra-empresa/bosch-en-espana/',\r\n news: 'https://www.grupo-bosch.es/productos-y-servicios/',\r\n position: 'https://www.grupo-bosch.es/trabaja-con-nosotros/',\r\n },\r\n {\r\n countryCode: 'FI',\r\n aboutUs: '',\r\n news:\r\n 'https://www.bosch.fi/uutisia-ja-tarinoita/ces-2021-boschin-aiot-ratkaisuissa-tekoaely-ja-esineiden-internet-valjastetaan-ihmisen-ja-ympaeristoen-hyvaeksi/',\r\n position: '',\r\n },\r\n {\r\n countryCode: 'LU',\r\n aboutUs: 'https://www.bosch.be/our-company/our-history/',\r\n news:\r\n 'https://www.bosch.be/news-and-stories/climatemattersatbosch-papillon-project/',\r\n position: 'https://www.bosch.be/careers/',\r\n },\r\n {\r\n countryCode: 'NL',\r\n aboutUs: 'https://www.bosch.nl/ons-bedrijf/onze-geschiedenis/',\r\n news: 'https://www.bosch.nl/nieuws/climatemattersatbosch-in-tilburg/',\r\n position: 'https://www.bosch.nl/carriere/',\r\n },\r\n {\r\n countryCode: 'NO',\r\n aboutUs: '',\r\n news:\r\n 'https://www.bosch.no/nyheter/ces-2021-bosch-setter-sin-lit-til-kunstig-intelligens-og-tilkoblingsmuligheter/',\r\n position: '',\r\n },\r\n {\r\n countryCode: 'SE',\r\n aboutUs: '',\r\n news:\r\n 'https://www.bosch.se/nyheter/ces-2021-bosch-ai-system-anvaends-foer-att-navigera-minirobotar-pa-manen/',\r\n position: 'https://www.bosch.se/jobba-hos-oss/',\r\n },\r\n ],\r\n\r\n listAppItem: [\r\n {\r\n id: 1,\r\n title: \"Remote Diagnostics\",\r\n image: \"Picture4.png\",\r\n link: process.env.REACT_APP_REDI_PAGE || \"\",\r\n },\r\n {\r\n id: 2,\r\n title: \"Service Training\",\r\n image: \"Picture1.png\",\r\n link: process.env.REACT_APP_BAT_PAGE || \"\",\r\n },\r\n ]\r\n}\r\n\r\nexport const VIDEO_INPUT = {\r\n NONE: 'None',\r\n BLUE: 'Blue',\r\n SMPTE: 'SMPTE Color Bars',\r\n}\r\n\r\nexport const AUDIO_INPUT = {\r\n NONE: 'None',\r\n 440: '440 Hz',\r\n}\r\n\r\nexport const MAX_REMOTE_VIDEOS = 25\r\n\r\nexport const AVAILABLE_AWS_REGIONS = {\r\n 'us-east-1': 'United States (N. Virginia)',\r\n 'af-south-1': 'Africa (Cape Town)',\r\n 'ap-northeast-1': 'Japan (Tokyo)',\r\n 'ap-northeast-2': 'Korea (Seoul)',\r\n 'ap-south-1': 'India (Mumbai)',\r\n 'ap-southeast-1': 'Singapore',\r\n 'ap-southeast-2': 'Australia (Sydney)',\r\n 'ca-central-1': 'Canada',\r\n 'eu-central-1': 'Germany (Frankfurt)',\r\n 'eu-north-1': 'Sweden (Stockholm)',\r\n 'eu-south-1': 'Italy (Milan)',\r\n 'eu-west-1': 'Ireland',\r\n 'eu-west-2': 'United Kingdom (London)',\r\n 'eu-west-3': 'France (Paris)',\r\n 'sa-east-1': 'Brazil (São Paulo)',\r\n 'us-east-2': 'United States (Ohio)',\r\n 'us-west-1': 'United States (N. California)',\r\n 'us-west-2': 'United States (Oregon)',\r\n}\r\n\r\nexport const VIDEO_INPUT_QUALITY = {\r\n '360p': '360p (nHD) @ 15 fps (600 Kbps max)',\r\n '540p': '540p (qHD) @ 15 fps (1.4 Mbps max)',\r\n '720p': '720p (HD) @ 15 fps (1.4 Mbps max)',\r\n}\r\n\r\nexport const SDK_LOG_LEVELS = {\r\n debug: LogLevel.DEBUG,\r\n info: LogLevel.INFO,\r\n warn: LogLevel.WARN,\r\n error: LogLevel.ERROR,\r\n off: LogLevel.OFF,\r\n}\r\n\r\nexport const DATA_MESSAGE_LIFETIME_MS = 300000\r\nexport const DATA_MESSAGE_TOPIC = 'ChimeComponentLibraryDataMessage'\r\n\r\nexport const DATA_MESSAGE_TYPE = {\r\n Chat: 'CHAT',\r\n Command: 'COMMAND',\r\n}\r\n\r\nexport const DATA_MESSAGE_ACTION = {\r\n SendMessage: 'send_message',\r\n TurnOnFlash: 'turn_on_flash',\r\n TurnOffFlash: 'turn_off_flash',\r\n OCR: \"ocr\",\r\n TurnOnAR: \"turn_on_ar\",\r\n TurnOffAR: \"turn_off_ar\",\r\n NewMember: \"new_joiner\",\r\n Pointer: \"pointer\",\r\n UndoAR: \"undo_ar\",\r\n RemoveAR: \"remove_ar\",\r\n ArAvailable: \"ar_is_available\",\r\n ArNoAvailable: \"ar_not_available\",\r\n TurnOnDraw: \"turn_on_draw\",\r\n TurnOffDraw: \"turn_off_draw\",\r\n Draw: \"draw\",\r\n TurnOnMouse: \"turn_on_mouse\",\r\n TurnOffMouse: \"turn_off_mouse\",\r\n MouseMove: \"mouse_move\",\r\n PauseVideo: 'pause_video',\r\n UnPauseVideo: 'un_pause_video',\r\n IsMobile: 'is_mobile',\r\n onVoiceCall: 'voice_call',\r\n onVideoCall: 'video_call',\r\n acceptVideoCall: \"accept_video_call\",\r\n rejectVideoCall: \"reject_video_call\"\r\n}\r\n\r\nexport const countryOptions = [\r\n { key: 'auto', value: 'auto', text: 'Detect Language' },\r\n { key: 'af', value: 'af', flag: 'af', text: 'Afrikaans' },\r\n { key: 'fa', value: 'fa', flag: 'af', text: 'Farsi (Persian)' },\r\n { key: 'fa-AF', value: 'fa-AF', flag: 'af', text: 'Dari' },\r\n { key: 'sq', value: 'sq', flag: 'al', text: 'Albanian' },\r\n { key: 'ar', value: 'ar', flag: 'dz', text: 'Arabic' },\r\n { key: 'hy', value: 'hy', flag: 'am', text: 'Armenian' },\r\n { key: 'nl', value: 'nl', flag: 'aw', text: 'Dutch' },\r\n { key: 'az', value: 'az', flag: 'az', text: 'Azerbaijani' },\r\n { key: 'bn', value: 'bn', flag: 'bd', text: 'Bengali' },\r\n { key: 'bs', value: 'bs', flag: 'ba', text: 'Bosnian' },\r\n { key: 'bg', value: 'bg', flag: 'bg', text: 'Bulgarian' },\r\n { key: 'zh', value: 'zh', flag: 'cn', text: 'Chinese (Simplified)' },\r\n { key: 'zh-TW', value: 'zh-TW', flag: 'cn', text: 'Chinese (Traditional)' },\r\n { key: 'hr', value: 'hr', flag: 'hr', text: 'Croatian' },\r\n { key: 'cs', value: 'cs', flag: 'cz', text: 'Czech' },\r\n { key: 'da', value: 'da', flag: 'dk', text: 'Danish' },\r\n { key: 'en', value: 'en', flag: 'gb eng', text: 'English' },\r\n { key: 'et', value: 'et', flag: 'ee', text: 'Estonian' },\r\n { key: 'am', value: 'am', flag: 'et', text: 'Amharic' },\r\n { key: 'fi', value: 'fi', flag: 'fi', text: 'Finnish' },\r\n { key: 'fr', value: 'fr', flag: 'fr', text: 'French' },\r\n { key: 'ka', value: 'ka', flag: 'ge', text: 'Georgian' },\r\n { key: 'de', value: 'de', flag: 'de', text: 'German' },\r\n { key: 'el', value: 'el', flag: 'gr', text: 'Greek' },\r\n { key: 'ht', value: 'ht', flag: 'ht', text: 'Haitian Creole' },\r\n { key: 'hu', value: 'hu', flag: 'hu', text: 'Hungarian' },\r\n { key: 'ga', value: 'ga', flag: 'is', text: 'Irish' },\r\n { key: 'hi', value: 'hi', flag: 'in', text: 'Hindi' },\r\n { key: 'gu', value: 'gu', flag: 'in', text: 'Gujarati' },\r\n { key: 'kn', value: 'kn', flag: 'in', text: 'Kannada' },\r\n { key: 'mr', value: 'mr', flag: 'in', text: 'Marathi' },\r\n { key: 'ml', value: 'ml', flag: 'in', text: 'Malayalam' },\r\n { key: 'pa', value: 'pa', flag: 'in', text: 'Punjabi' },\r\n { key: 'ur', value: 'ur', flag: 'in', text: 'Urdu' },\r\n { key: 'te', value: 'te', flag: 'in', text: 'Telugu' },\r\n { key: 'id', value: 'id', flag: 'id', text: 'Indonesian' },\r\n { key: 'is', value: 'is', flag: 'ie', text: 'Icelandic' },\r\n { key: 'he', value: 'he', flag: 'il', text: 'Hebrew' },\r\n { key: 'it', value: 'it', flag: 'it', text: 'Italian' },\r\n { key: 'ja', value: 'ja', flag: 'jp', text: 'Japanese' },\r\n { key: 'kk', value: 'kk', flag: 'kz', text: 'Kazakh' },\r\n { key: 'sw', value: 'sw', flag: 'ke', text: 'Swahili' },\r\n { key: 'lv', value: 'lv', flag: 'lv', text: 'Latvian' },\r\n { key: 'lt', value: 'lt', flag: 'lt', text: 'Lithuanian' },\r\n { key: 'mk', value: 'mk', flag: 'mk', text: 'Macedonian' },\r\n { key: 'ms', value: 'ms', flag: 'my', text: 'Malay' },\r\n { key: 'mt', value: 'mt', flag: 'mt', text: 'Maltese' },\r\n { key: 'es-MX', value: 'es-MX', flag: 'mx', text: 'Spanish (Mexico)' },\r\n { key: 'mn', value: 'mn', flag: 'mn', text: 'Mongolian' },\r\n { key: 'ha', value: 'ha', flag: 'ng', text: 'Hausa' },\r\n { key: 'no', value: 'no', flag: 'no', text: 'Norwegian (Bokmål)' },\r\n { key: 'ps', value: 'ps', flag: 'pk', text: 'Pashto' },\r\n { key: 'tl', value: 'tl', flag: 'ph', text: 'Filipino, Tagalog' },\r\n { key: 'pl', value: 'pl', flag: 'pl', text: 'Polish' },\r\n { key: 'pt', value: 'pt', flag: 'pt', text: 'Portuguese (Brazil)' },\r\n { key: 'pt-PT', value: 'pt-PT', flag: 'pt', text: 'Portuguese (Portugal)' },\r\n { key: 'ro', value: 'ro', flag: 'ro', text: 'Romanian' },\r\n { key: 'ru', value: 'ru', flag: 'ru', text: 'Russian' },\r\n { key: 'sr', value: 'sr', flag: 'cs', text: 'Serbian' },\r\n { key: 'sk', value: 'sk', flag: 'sk', text: 'Slovak' },\r\n { key: 'sl', value: 'sl', flag: 'si', text: 'Slovenian' },\r\n { key: 'so', value: 'so', flag: 'so', text: 'Somali' },\r\n { key: 'ko', value: 'ko', flag: 'kr', text: 'Korean' },\r\n { key: 'es', value: 'es', flag: 'es', text: 'Spanish' },\r\n { key: 'si', value: 'si', flag: 'lk', text: 'Sinhala' },\r\n { key: 'sv', value: 'sv', flag: 'se', text: 'Swedish' },\r\n { key: 'th', value: 'th', flag: 'th', text: 'Thai' },\r\n { key: 'tr', value: 'tr', flag: 'tr', text: 'Turkish' },\r\n { key: 'uk', value: 'uk', flag: 'ua', text: 'Ukrainian' },\r\n { key: 'uz', value: 'uz', flag: 'uz', text: 'Uzbek' },\r\n { key: 'vi', value: 'vi', flag: 'vn', text: 'Vietnamese' },\r\n { key: 'cy', value: 'cy', flag: 'gb wls', text: 'Welsh' },\r\n]\r\n\r\nexport const TimeOutOnlineStatus = 30000; //5000ms = 5s\r\nexport const TimeOutOnlineStatusTrigger = 2000; //2000ms = 2s\r\nexport const TimeOutOnlineStatusChange = 60; //60s\r\nexport const TimeOutOnlineStatusTriggerCountDown = 120; //120s\r\nexport const OnlinePresenceStatus = {\r\n online: \"online\",\r\n offline: \"offline\",\r\n busy: \"busy\",\r\n onhold: \"onhold\"\r\n};","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n\r\nimport { IRetryPolicy, RetryContext } from \"./IRetryPolicy\";\r\n\r\n// 0, 2, 10, 30 second delays before reconnect attempts.\r\nconst DEFAULT_RETRY_DELAYS_IN_MILLISECONDS = [0, 2000, 10000, 30000, null];\r\n\r\n/** @private */\r\nexport class DefaultReconnectPolicy implements IRetryPolicy {\r\n private readonly _retryDelays: (number | null)[];\r\n\r\n constructor(retryDelays?: number[]) {\r\n this._retryDelays = retryDelays !== undefined ? [...retryDelays, null] : DEFAULT_RETRY_DELAYS_IN_MILLISECONDS;\r\n }\r\n\r\n public nextRetryDelayInMilliseconds(retryContext: RetryContext): number | null {\r\n return this._retryDelays[retryContext.previousRetryCount];\r\n }\r\n}\r\n","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n\r\nexport abstract class HeaderNames {\r\n static readonly Authorization = \"Authorization\";\r\n static readonly Cookie = \"Cookie\";\r\n}\r\n","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n\r\nimport { AbortSignal } from \"./AbortController\";\r\nimport { MessageHeaders } from \"./IHubProtocol\";\r\n\r\n/** Represents an HTTP request. */\r\nexport interface HttpRequest {\r\n /** The HTTP method to use for the request. */\r\n method?: string;\r\n\r\n /** The URL for the request. */\r\n url?: string;\r\n\r\n /** The body content for the request. May be a string or an ArrayBuffer (for binary data). */\r\n content?: string | ArrayBuffer;\r\n\r\n /** An object describing headers to apply to the request. */\r\n headers?: MessageHeaders;\r\n\r\n /** The XMLHttpRequestResponseType to apply to the request. */\r\n responseType?: XMLHttpRequestResponseType;\r\n\r\n /** An AbortSignal that can be monitored for cancellation. */\r\n abortSignal?: AbortSignal;\r\n\r\n /** The time to wait for the request to complete before throwing a TimeoutError. Measured in milliseconds. */\r\n timeout?: number;\r\n\r\n /** This controls whether credentials such as cookies are sent in cross-site requests. */\r\n withCredentials?: boolean;\r\n}\r\n\r\n/** Represents an HTTP response. */\r\nexport class HttpResponse {\r\n /** Constructs a new instance of {@link @microsoft/signalr.HttpResponse} with the specified status code.\r\n *\r\n * @param {number} statusCode The status code of the response.\r\n */\r\n constructor(statusCode: number);\r\n\r\n /** Constructs a new instance of {@link @microsoft/signalr.HttpResponse} with the specified status code and message.\r\n *\r\n * @param {number} statusCode The status code of the response.\r\n * @param {string} statusText The status message of the response.\r\n */\r\n constructor(statusCode: number, statusText: string);\r\n\r\n /** Constructs a new instance of {@link @microsoft/signalr.HttpResponse} with the specified status code, message and string content.\r\n *\r\n * @param {number} statusCode The status code of the response.\r\n * @param {string} statusText The status message of the response.\r\n * @param {string} content The content of the response.\r\n */\r\n constructor(statusCode: number, statusText: string, content: string);\r\n\r\n /** Constructs a new instance of {@link @microsoft/signalr.HttpResponse} with the specified status code, message and binary content.\r\n *\r\n * @param {number} statusCode The status code of the response.\r\n * @param {string} statusText The status message of the response.\r\n * @param {ArrayBuffer} content The content of the response.\r\n */\r\n constructor(statusCode: number, statusText: string, content: ArrayBuffer);\r\n\r\n /** Constructs a new instance of {@link @microsoft/signalr.HttpResponse} with the specified status code, message and binary content.\r\n *\r\n * @param {number} statusCode The status code of the response.\r\n * @param {string} statusText The status message of the response.\r\n * @param {string | ArrayBuffer} content The content of the response.\r\n */\r\n constructor(statusCode: number, statusText: string, content: string | ArrayBuffer);\r\n constructor(\r\n public readonly statusCode: number,\r\n public readonly statusText?: string,\r\n public readonly content?: string | ArrayBuffer) {\r\n }\r\n}\r\n\r\n/** Abstraction over an HTTP client.\r\n *\r\n * This class provides an abstraction over an HTTP client so that a different implementation can be provided on different platforms.\r\n */\r\nexport abstract class HttpClient {\r\n /** Issues an HTTP GET request to the specified URL, returning a Promise that resolves with an {@link @microsoft/signalr.HttpResponse} representing the result.\r\n *\r\n * @param {string} url The URL for the request.\r\n * @returns {Promise} A Promise that resolves with an {@link @microsoft/signalr.HttpResponse} describing the response, or rejects with an Error indicating a failure.\r\n */\r\n public get(url: string): Promise;\r\n\r\n /** Issues an HTTP GET request to the specified URL, returning a Promise that resolves with an {@link @microsoft/signalr.HttpResponse} representing the result.\r\n *\r\n * @param {string} url The URL for the request.\r\n * @param {HttpRequest} options Additional options to configure the request. The 'url' field in this object will be overridden by the url parameter.\r\n * @returns {Promise} A Promise that resolves with an {@link @microsoft/signalr.HttpResponse} describing the response, or rejects with an Error indicating a failure.\r\n */\r\n public get(url: string, options: HttpRequest): Promise;\r\n public get(url: string, options?: HttpRequest): Promise {\r\n return this.send({\r\n ...options,\r\n method: \"GET\",\r\n url,\r\n });\r\n }\r\n\r\n /** Issues an HTTP POST request to the specified URL, returning a Promise that resolves with an {@link @microsoft/signalr.HttpResponse} representing the result.\r\n *\r\n * @param {string} url The URL for the request.\r\n * @returns {Promise} A Promise that resolves with an {@link @microsoft/signalr.HttpResponse} describing the response, or rejects with an Error indicating a failure.\r\n */\r\n public post(url: string): Promise;\r\n\r\n /** Issues an HTTP POST request to the specified URL, returning a Promise that resolves with an {@link @microsoft/signalr.HttpResponse} representing the result.\r\n *\r\n * @param {string} url The URL for the request.\r\n * @param {HttpRequest} options Additional options to configure the request. The 'url' field in this object will be overridden by the url parameter.\r\n * @returns {Promise} A Promise that resolves with an {@link @microsoft/signalr.HttpResponse} describing the response, or rejects with an Error indicating a failure.\r\n */\r\n public post(url: string, options: HttpRequest): Promise;\r\n public post(url: string, options?: HttpRequest): Promise {\r\n return this.send({\r\n ...options,\r\n method: \"POST\",\r\n url,\r\n });\r\n }\r\n\r\n /** Issues an HTTP DELETE request to the specified URL, returning a Promise that resolves with an {@link @microsoft/signalr.HttpResponse} representing the result.\r\n *\r\n * @param {string} url The URL for the request.\r\n * @returns {Promise} A Promise that resolves with an {@link @microsoft/signalr.HttpResponse} describing the response, or rejects with an Error indicating a failure.\r\n */\r\n public delete(url: string): Promise;\r\n\r\n /** Issues an HTTP DELETE request to the specified URL, returning a Promise that resolves with an {@link @microsoft/signalr.HttpResponse} representing the result.\r\n *\r\n * @param {string} url The URL for the request.\r\n * @param {HttpRequest} options Additional options to configure the request. The 'url' field in this object will be overridden by the url parameter.\r\n * @returns {Promise} A Promise that resolves with an {@link @microsoft/signalr.HttpResponse} describing the response, or rejects with an Error indicating a failure.\r\n */\r\n public delete(url: string, options: HttpRequest): Promise;\r\n public delete(url: string, options?: HttpRequest): Promise {\r\n return this.send({\r\n ...options,\r\n method: \"DELETE\",\r\n url,\r\n });\r\n }\r\n\r\n /** Issues an HTTP request to the specified URL, returning a {@link Promise} that resolves with an {@link @microsoft/signalr.HttpResponse} representing the result.\r\n *\r\n * @param {HttpRequest} request An {@link @microsoft/signalr.HttpRequest} describing the request to send.\r\n * @returns {Promise} A Promise that resolves with an HttpResponse describing the response, or rejects with an Error indicating a failure.\r\n */\r\n public abstract send(request: HttpRequest): Promise;\r\n\r\n /** Gets all cookies that apply to the specified URL.\r\n *\r\n * @param url The URL that the cookies are valid for.\r\n * @returns {string} A string containing all the key-value cookie pairs for the specified URL.\r\n */\r\n // @ts-ignore\r\n public getCookieString(url: string): string {\r\n return \"\";\r\n }\r\n}\r\n","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n\r\nimport { HeaderNames } from \"./HeaderNames\";\r\nimport { HttpClient, HttpRequest, HttpResponse } from \"./HttpClient\";\r\n\r\n/** @private */\r\nexport class AccessTokenHttpClient extends HttpClient {\r\n private _innerClient: HttpClient;\r\n _accessToken: string | undefined;\r\n _accessTokenFactory: (() => string | Promise) | undefined;\r\n\r\n constructor(innerClient: HttpClient, accessTokenFactory: (() => string | Promise) | undefined) {\r\n super();\r\n\r\n this._innerClient = innerClient;\r\n this._accessTokenFactory = accessTokenFactory;\r\n }\r\n\r\n public async send(request: HttpRequest): Promise {\r\n let allowRetry = true;\r\n if (this._accessTokenFactory && (!this._accessToken || (request.url && request.url.indexOf(\"/negotiate?\") > 0))) {\r\n // don't retry if the request is a negotiate or if we just got a potentially new token from the access token factory\r\n allowRetry = false;\r\n this._accessToken = await this._accessTokenFactory();\r\n }\r\n this._setAuthorizationHeader(request);\r\n const response = await this._innerClient.send(request);\r\n\r\n if (allowRetry && response.statusCode === 401 && this._accessTokenFactory) {\r\n this._accessToken = await this._accessTokenFactory();\r\n this._setAuthorizationHeader(request);\r\n return await this._innerClient.send(request);\r\n }\r\n return response;\r\n }\r\n\r\n private _setAuthorizationHeader(request: HttpRequest) {\r\n if (!request.headers) {\r\n request.headers = {};\r\n }\r\n if (this._accessToken) {\r\n request.headers[HeaderNames.Authorization] = `Bearer ${this._accessToken}`\r\n }\r\n // don't remove the header if there isn't an access token factory, the user manually added the header in this case\r\n else if (this._accessTokenFactory) {\r\n if (request.headers[HeaderNames.Authorization]) {\r\n delete request.headers[HeaderNames.Authorization];\r\n }\r\n }\r\n }\r\n\r\n public getCookieString(url: string): string {\r\n return this._innerClient.getCookieString(url);\r\n }\r\n}","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n\r\nimport { HttpTransportType } from \"./ITransport\";\r\n\r\n/** Error thrown when an HTTP request fails. */\r\nexport class HttpError extends Error {\r\n // @ts-ignore: Intentionally unused.\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n private __proto__: Error;\r\n\r\n /** The HTTP status code represented by this error. */\r\n public statusCode: number;\r\n\r\n /** Constructs a new instance of {@link @microsoft/signalr.HttpError}.\r\n *\r\n * @param {string} errorMessage A descriptive error message.\r\n * @param {number} statusCode The HTTP status code represented by this error.\r\n */\r\n constructor(errorMessage: string, statusCode: number) {\r\n const trueProto = new.target.prototype;\r\n super(`${errorMessage}: Status code '${statusCode}'`);\r\n this.statusCode = statusCode;\r\n\r\n // Workaround issue in Typescript compiler\r\n // https://github.com/Microsoft/TypeScript/issues/13965#issuecomment-278570200\r\n this.__proto__ = trueProto;\r\n }\r\n}\r\n\r\n/** Error thrown when a timeout elapses. */\r\nexport class TimeoutError extends Error {\r\n // @ts-ignore: Intentionally unused.\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n private __proto__: Error;\r\n\r\n /** Constructs a new instance of {@link @microsoft/signalr.TimeoutError}.\r\n *\r\n * @param {string} errorMessage A descriptive error message.\r\n */\r\n constructor(errorMessage: string = \"A timeout occurred.\") {\r\n const trueProto = new.target.prototype;\r\n super(errorMessage);\r\n\r\n // Workaround issue in Typescript compiler\r\n // https://github.com/Microsoft/TypeScript/issues/13965#issuecomment-278570200\r\n this.__proto__ = trueProto;\r\n }\r\n}\r\n\r\n/** Error thrown when an action is aborted. */\r\nexport class AbortError extends Error {\r\n // @ts-ignore: Intentionally unused.\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n private __proto__: Error;\r\n\r\n /** Constructs a new instance of {@link AbortError}.\r\n *\r\n * @param {string} errorMessage A descriptive error message.\r\n */\r\n constructor(errorMessage: string = \"An abort occurred.\") {\r\n const trueProto = new.target.prototype;\r\n super(errorMessage);\r\n\r\n // Workaround issue in Typescript compiler\r\n // https://github.com/Microsoft/TypeScript/issues/13965#issuecomment-278570200\r\n this.__proto__ = trueProto;\r\n }\r\n}\r\n\r\n/** Error thrown when the selected transport is unsupported by the browser. */\r\n/** @private */\r\nexport class UnsupportedTransportError extends Error {\r\n // @ts-ignore: Intentionally unused.\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n private __proto__: Error;\r\n\r\n /** The {@link @microsoft/signalr.HttpTransportType} this error occurred on. */\r\n public transport: HttpTransportType;\r\n\r\n /** The type name of this error. */\r\n public errorType: string;\r\n\r\n /** Constructs a new instance of {@link @microsoft/signalr.UnsupportedTransportError}.\r\n *\r\n * @param {string} message A descriptive error message.\r\n * @param {HttpTransportType} transport The {@link @microsoft/signalr.HttpTransportType} this error occurred on.\r\n */\r\n constructor(message: string, transport: HttpTransportType) {\r\n const trueProto = new.target.prototype;\r\n super(message);\r\n this.transport = transport;\r\n this.errorType = 'UnsupportedTransportError';\r\n\r\n // Workaround issue in Typescript compiler\r\n // https://github.com/Microsoft/TypeScript/issues/13965#issuecomment-278570200\r\n this.__proto__ = trueProto;\r\n }\r\n}\r\n\r\n/** Error thrown when the selected transport is disabled by the browser. */\r\n/** @private */\r\nexport class DisabledTransportError extends Error {\r\n // @ts-ignore: Intentionally unused.\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n private __proto__: Error;\r\n\r\n /** The {@link @microsoft/signalr.HttpTransportType} this error occurred on. */\r\n public transport: HttpTransportType;\r\n\r\n /** The type name of this error. */\r\n public errorType: string;\r\n\r\n /** Constructs a new instance of {@link @microsoft/signalr.DisabledTransportError}.\r\n *\r\n * @param {string} message A descriptive error message.\r\n * @param {HttpTransportType} transport The {@link @microsoft/signalr.HttpTransportType} this error occurred on.\r\n */\r\n constructor(message: string, transport: HttpTransportType) {\r\n const trueProto = new.target.prototype;\r\n super(message);\r\n this.transport = transport;\r\n this.errorType = 'DisabledTransportError';\r\n\r\n // Workaround issue in Typescript compiler\r\n // https://github.com/Microsoft/TypeScript/issues/13965#issuecomment-278570200\r\n this.__proto__ = trueProto;\r\n }\r\n}\r\n\r\n/** Error thrown when the selected transport cannot be started. */\r\n/** @private */\r\nexport class FailedToStartTransportError extends Error {\r\n // @ts-ignore: Intentionally unused.\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n private __proto__: Error;\r\n\r\n /** The {@link @microsoft/signalr.HttpTransportType} this error occurred on. */\r\n public transport: HttpTransportType;\r\n\r\n /** The type name of this error. */\r\n public errorType: string;\r\n\r\n /** Constructs a new instance of {@link @microsoft/signalr.FailedToStartTransportError}.\r\n *\r\n * @param {string} message A descriptive error message.\r\n * @param {HttpTransportType} transport The {@link @microsoft/signalr.HttpTransportType} this error occurred on.\r\n */\r\n constructor(message: string, transport: HttpTransportType) {\r\n const trueProto = new.target.prototype;\r\n super(message);\r\n this.transport = transport;\r\n this.errorType = 'FailedToStartTransportError';\r\n\r\n // Workaround issue in Typescript compiler\r\n // https://github.com/Microsoft/TypeScript/issues/13965#issuecomment-278570200\r\n this.__proto__ = trueProto;\r\n }\r\n}\r\n\r\n/** Error thrown when the negotiation with the server failed to complete. */\r\n/** @private */\r\nexport class FailedToNegotiateWithServerError extends Error {\r\n // @ts-ignore: Intentionally unused.\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n private __proto__: Error;\r\n\r\n /** The type name of this error. */\r\n public errorType: string;\r\n\r\n /** Constructs a new instance of {@link @microsoft/signalr.FailedToNegotiateWithServerError}.\r\n *\r\n * @param {string} message A descriptive error message.\r\n */\r\n constructor(message: string) {\r\n const trueProto = new.target.prototype;\r\n super(message);\r\n this.errorType = 'FailedToNegotiateWithServerError';\r\n\r\n // Workaround issue in Typescript compiler\r\n // https://github.com/Microsoft/TypeScript/issues/13965#issuecomment-278570200\r\n this.__proto__ = trueProto;\r\n }\r\n}\r\n\r\n/** Error thrown when multiple errors have occurred. */\r\n/** @private */\r\nexport class AggregateErrors extends Error {\r\n // @ts-ignore: Intentionally unused.\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n private __proto__: Error;\r\n\r\n /** The collection of errors this error is aggregating. */\r\n public innerErrors: Error[];\r\n\r\n /** Constructs a new instance of {@link @microsoft/signalr.AggregateErrors}.\r\n *\r\n * @param {string} message A descriptive error message.\r\n * @param {Error[]} innerErrors The collection of errors this error is aggregating.\r\n */\r\n constructor(message: string, innerErrors: Error[]) {\r\n const trueProto = new.target.prototype;\r\n super(message);\r\n\r\n this.innerErrors = innerErrors;\r\n\r\n // Workaround issue in Typescript compiler\r\n // https://github.com/Microsoft/TypeScript/issues/13965#issuecomment-278570200\r\n this.__proto__ = trueProto;\r\n }\r\n}\r\n","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n\r\n// These values are designed to match the ASP.NET Log Levels since that's the pattern we're emulating here.\r\n/** Indicates the severity of a log message.\r\n *\r\n * Log Levels are ordered in increasing severity. So `Debug` is more severe than `Trace`, etc.\r\n */\r\nexport enum LogLevel {\r\n /** Log level for very low severity diagnostic messages. */\r\n Trace = 0,\r\n /** Log level for low severity diagnostic messages. */\r\n Debug = 1,\r\n /** Log level for informational diagnostic messages. */\r\n Information = 2,\r\n /** Log level for diagnostic messages that indicate a non-fatal problem. */\r\n Warning = 3,\r\n /** Log level for diagnostic messages that indicate a failure in the current operation. */\r\n Error = 4,\r\n /** Log level for diagnostic messages that indicate a failure that will terminate the entire application. */\r\n Critical = 5,\r\n /** The highest possible log level. Used when configuring logging to indicate that no log messages should be emitted. */\r\n None = 6,\r\n}\r\n\r\n/** An abstraction that provides a sink for diagnostic messages. */\r\nexport interface ILogger {\r\n /** Called by the framework to emit a diagnostic message.\r\n *\r\n * @param {LogLevel} logLevel The severity level of the message.\r\n * @param {string} message The message.\r\n */\r\n log(logLevel: LogLevel, message: string): void;\r\n}\r\n","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n\r\nimport { ILogger, LogLevel } from \"./ILogger\";\r\n\r\n/** A logger that does nothing when log messages are sent to it. */\r\nexport class NullLogger implements ILogger {\r\n /** The singleton instance of the {@link @microsoft/signalr.NullLogger}. */\r\n public static instance: ILogger = new NullLogger();\r\n\r\n private constructor() {}\r\n\r\n /** @inheritDoc */\r\n // eslint-disable-next-line\r\n public log(_logLevel: LogLevel, _message: string): void {\r\n }\r\n}\r\n","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n\r\nimport { HttpClient } from \"./HttpClient\";\r\nimport { ILogger, LogLevel } from \"./ILogger\";\r\nimport { NullLogger } from \"./Loggers\";\r\nimport { IStreamSubscriber, ISubscription } from \"./Stream\";\r\nimport { Subject } from \"./Subject\";\r\nimport { IHttpConnectionOptions } from \"./IHttpConnectionOptions\";\r\n\r\n// Version token that will be replaced by the prepack command\r\n/** The version of the SignalR client. */\r\n\r\nexport const VERSION: string = \"0.0.0-DEV_BUILD\";\r\n/** @private */\r\nexport class Arg {\r\n public static isRequired(val: any, name: string): void {\r\n if (val === null || val === undefined) {\r\n throw new Error(`The '${name}' argument is required.`);\r\n }\r\n }\r\n public static isNotEmpty(val: string, name: string): void {\r\n if (!val || val.match(/^\\s*$/)) {\r\n throw new Error(`The '${name}' argument should not be empty.`);\r\n }\r\n }\r\n\r\n public static isIn(val: any, values: any, name: string): void {\r\n // TypeScript enums have keys for **both** the name and the value of each enum member on the type itself.\r\n if (!(val in values)) {\r\n throw new Error(`Unknown ${name} value: ${val}.`);\r\n }\r\n }\r\n}\r\n\r\n/** @private */\r\nexport class Platform {\r\n // react-native has a window but no document so we should check both\r\n public static get isBrowser(): boolean {\r\n return !Platform.isNode && typeof window === \"object\" && typeof window.document === \"object\";\r\n }\r\n\r\n // WebWorkers don't have a window object so the isBrowser check would fail\r\n public static get isWebWorker(): boolean {\r\n return !Platform.isNode && typeof self === \"object\" && \"importScripts\" in self;\r\n }\r\n\r\n // react-native has a window but no document\r\n static get isReactNative(): boolean {\r\n return !Platform.isNode && typeof window === \"object\" && typeof window.document === \"undefined\";\r\n }\r\n\r\n // Node apps shouldn't have a window object, but WebWorkers don't either\r\n // so we need to check for both WebWorker and window\r\n public static get isNode(): boolean {\r\n return typeof process !== \"undefined\" && process.release && process.release.name === \"node\";\r\n }\r\n}\r\n\r\n/** @private */\r\nexport function getDataDetail(data: any, includeContent: boolean): string {\r\n let detail = \"\";\r\n if (isArrayBuffer(data)) {\r\n detail = `Binary data of length ${data.byteLength}`;\r\n if (includeContent) {\r\n detail += `. Content: '${formatArrayBuffer(data)}'`;\r\n }\r\n } else if (typeof data === \"string\") {\r\n detail = `String data of length ${data.length}`;\r\n if (includeContent) {\r\n detail += `. Content: '${data}'`;\r\n }\r\n }\r\n return detail;\r\n}\r\n\r\n/** @private */\r\nexport function formatArrayBuffer(data: ArrayBuffer): string {\r\n const view = new Uint8Array(data);\r\n\r\n // Uint8Array.map only supports returning another Uint8Array?\r\n let str = \"\";\r\n view.forEach((num) => {\r\n const pad = num < 16 ? \"0\" : \"\";\r\n str += `0x${pad}${num.toString(16)} `;\r\n });\r\n\r\n // Trim of trailing space.\r\n return str.substr(0, str.length - 1);\r\n}\r\n\r\n// Also in signalr-protocol-msgpack/Utils.ts\r\n/** @private */\r\nexport function isArrayBuffer(val: any): val is ArrayBuffer {\r\n return val && typeof ArrayBuffer !== \"undefined\" &&\r\n (val instanceof ArrayBuffer ||\r\n // Sometimes we get an ArrayBuffer that doesn't satisfy instanceof\r\n (val.constructor && val.constructor.name === \"ArrayBuffer\"));\r\n}\r\n\r\n/** @private */\r\nexport async function sendMessage(logger: ILogger, transportName: string, httpClient: HttpClient, url: string,\r\n content: string | ArrayBuffer, options: IHttpConnectionOptions): Promise {\r\n const headers: {[k: string]: string} = {};\r\n\r\n const [name, value] = getUserAgentHeader();\r\n headers[name] = value;\r\n\r\n logger.log(LogLevel.Trace, `(${transportName} transport) sending data. ${getDataDetail(content, options.logMessageContent!)}.`);\r\n\r\n const responseType = isArrayBuffer(content) ? \"arraybuffer\" : \"text\";\r\n const response = await httpClient.post(url, {\r\n content,\r\n headers: { ...headers, ...options.headers},\r\n responseType,\r\n timeout: options.timeout,\r\n withCredentials: options.withCredentials,\r\n });\r\n\r\n logger.log(LogLevel.Trace, `(${transportName} transport) request complete. Response status: ${response.statusCode}.`);\r\n}\r\n\r\n/** @private */\r\nexport function createLogger(logger?: ILogger | LogLevel): ILogger {\r\n if (logger === undefined) {\r\n return new ConsoleLogger(LogLevel.Information);\r\n }\r\n\r\n if (logger === null) {\r\n return NullLogger.instance;\r\n }\r\n\r\n if ((logger as ILogger).log !== undefined) {\r\n return logger as ILogger;\r\n }\r\n\r\n return new ConsoleLogger(logger as LogLevel);\r\n}\r\n\r\n/** @private */\r\nexport class SubjectSubscription implements ISubscription {\r\n private _subject: Subject;\r\n private _observer: IStreamSubscriber;\r\n\r\n constructor(subject: Subject, observer: IStreamSubscriber) {\r\n this._subject = subject;\r\n this._observer = observer;\r\n }\r\n\r\n public dispose(): void {\r\n const index: number = this._subject.observers.indexOf(this._observer);\r\n if (index > -1) {\r\n this._subject.observers.splice(index, 1);\r\n }\r\n\r\n if (this._subject.observers.length === 0 && this._subject.cancelCallback) {\r\n this._subject.cancelCallback().catch((_) => { });\r\n }\r\n }\r\n}\r\n\r\n/** @private */\r\nexport class ConsoleLogger implements ILogger {\r\n private readonly _minLevel: LogLevel;\r\n\r\n // Public for testing purposes.\r\n public out: {\r\n error(message: any): void,\r\n warn(message: any): void,\r\n info(message: any): void,\r\n log(message: any): void,\r\n };\r\n\r\n constructor(minimumLogLevel: LogLevel) {\r\n this._minLevel = minimumLogLevel;\r\n this.out = console;\r\n }\r\n\r\n public log(logLevel: LogLevel, message: string): void {\r\n if (logLevel >= this._minLevel) {\r\n const msg = `[${new Date().toISOString()}] ${LogLevel[logLevel]}: ${message}`;\r\n switch (logLevel) {\r\n case LogLevel.Critical:\r\n case LogLevel.Error:\r\n this.out.error(msg);\r\n break;\r\n case LogLevel.Warning:\r\n this.out.warn(msg);\r\n break;\r\n case LogLevel.Information:\r\n this.out.info(msg);\r\n break;\r\n default:\r\n // console.debug only goes to attached debuggers in Node, so we use console.log for Trace and Debug\r\n this.out.log(msg);\r\n break;\r\n }\r\n }\r\n }\r\n}\r\n\r\n/** @private */\r\nexport function getUserAgentHeader(): [string, string] {\r\n let userAgentHeaderName = \"X-SignalR-User-Agent\";\r\n if (Platform.isNode) {\r\n userAgentHeaderName = \"User-Agent\";\r\n }\r\n return [ userAgentHeaderName, constructUserAgent(VERSION, getOsName(), getRuntime(), getRuntimeVersion()) ];\r\n}\r\n\r\n/** @private */\r\nexport function constructUserAgent(version: string, os: string, runtime: string, runtimeVersion: string | undefined): string {\r\n // Microsoft SignalR/[Version] ([Detailed Version]; [Operating System]; [Runtime]; [Runtime Version])\r\n let userAgent: string = \"Microsoft SignalR/\";\r\n\r\n const majorAndMinor = version.split(\".\");\r\n userAgent += `${majorAndMinor[0]}.${majorAndMinor[1]}`;\r\n userAgent += ` (${version}; `;\r\n\r\n if (os && os !== \"\") {\r\n userAgent += `${os}; `;\r\n } else {\r\n userAgent += \"Unknown OS; \";\r\n }\r\n\r\n userAgent += `${runtime}`;\r\n\r\n if (runtimeVersion) {\r\n userAgent += `; ${runtimeVersion}`;\r\n } else {\r\n userAgent += \"; Unknown Runtime Version\";\r\n }\r\n\r\n userAgent += \")\";\r\n return userAgent;\r\n}\r\n\r\n// eslint-disable-next-line spaced-comment\r\n/*#__PURE__*/ function getOsName(): string {\r\n if (Platform.isNode) {\r\n switch (process.platform) {\r\n case \"win32\":\r\n return \"Windows NT\";\r\n case \"darwin\":\r\n return \"macOS\";\r\n case \"linux\":\r\n return \"Linux\";\r\n default:\r\n return process.platform;\r\n }\r\n } else {\r\n return \"\";\r\n }\r\n}\r\n\r\n// eslint-disable-next-line spaced-comment\r\n/*#__PURE__*/ function getRuntimeVersion(): string | undefined {\r\n if (Platform.isNode) {\r\n return process.versions.node;\r\n }\r\n return undefined;\r\n}\r\n\r\nfunction getRuntime(): string {\r\n if (Platform.isNode) {\r\n return \"NodeJS\";\r\n } else {\r\n return \"Browser\";\r\n }\r\n}\r\n\r\n/** @private */\r\nexport function getErrorString(e: any): string {\r\n if (e.stack) {\r\n return e.stack;\r\n } else if (e.message) {\r\n return e.message;\r\n }\r\n return `${e}`;\r\n}\r\n\r\n/** @private */\r\nexport function getGlobalThis(): unknown {\r\n // globalThis is semi-new and not available in Node until v12\r\n if (typeof globalThis !== \"undefined\") {\r\n return globalThis;\r\n }\r\n if (typeof self !== \"undefined\") {\r\n return self;\r\n }\r\n if (typeof window !== \"undefined\") {\r\n return window;\r\n }\r\n if (typeof global !== \"undefined\") {\r\n return global;\r\n }\r\n throw new Error(\"could not find global\");\r\n}\r\n","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n\r\n// @ts-ignore: This will be removed from built files and is here to make the types available during dev work\r\nimport { CookieJar } from \"@types/tough-cookie\";\r\n\r\nimport { AbortError, HttpError, TimeoutError } from \"./Errors\";\r\nimport { HttpClient, HttpRequest, HttpResponse } from \"./HttpClient\";\r\nimport { ILogger, LogLevel } from \"./ILogger\";\r\nimport { Platform, getGlobalThis, isArrayBuffer } from \"./Utils\";\r\n\r\nexport class FetchHttpClient extends HttpClient {\r\n private readonly _abortControllerType: { prototype: AbortController, new(): AbortController };\r\n private readonly _fetchType: (input: RequestInfo, init?: RequestInit) => Promise;\r\n private readonly _jar?: CookieJar;\r\n\r\n private readonly _logger: ILogger;\r\n\r\n public constructor(logger: ILogger) {\r\n super();\r\n this._logger = logger;\r\n\r\n // Node added a fetch implementation to the global scope starting in v18.\r\n // We need to add a cookie jar in node to be able to share cookies with WebSocket\r\n if (typeof fetch === \"undefined\" || Platform.isNode) {\r\n // In order to ignore the dynamic require in webpack builds we need to do this magic\r\n // @ts-ignore: TS doesn't know about these names\r\n const requireFunc = typeof __webpack_require__ === \"function\" ? __non_webpack_require__ : require;\r\n\r\n // Cookies aren't automatically handled in Node so we need to add a CookieJar to preserve cookies across requests\r\n this._jar = new (requireFunc(\"tough-cookie\")).CookieJar();\r\n\r\n if (typeof fetch === \"undefined\") {\r\n this._fetchType = requireFunc(\"node-fetch\");\r\n } else {\r\n // Use fetch from Node if available\r\n this._fetchType = fetch;\r\n }\r\n\r\n // node-fetch doesn't have a nice API for getting and setting cookies\r\n // fetch-cookie will wrap a fetch implementation with a default CookieJar or a provided one\r\n this._fetchType = requireFunc(\"fetch-cookie\")(this._fetchType, this._jar);\r\n } else {\r\n this._fetchType = fetch.bind(getGlobalThis());\r\n }\r\n if (typeof AbortController === \"undefined\") {\r\n // In order to ignore the dynamic require in webpack builds we need to do this magic\r\n // @ts-ignore: TS doesn't know about these names\r\n const requireFunc = typeof __webpack_require__ === \"function\" ? __non_webpack_require__ : require;\r\n\r\n // Node needs EventListener methods on AbortController which our custom polyfill doesn't provide\r\n this._abortControllerType = requireFunc(\"abort-controller\");\r\n } else {\r\n this._abortControllerType = AbortController;\r\n }\r\n }\r\n\r\n /** @inheritDoc */\r\n public async send(request: HttpRequest): Promise {\r\n // Check that abort was not signaled before calling send\r\n if (request.abortSignal && request.abortSignal.aborted) {\r\n throw new AbortError();\r\n }\r\n\r\n if (!request.method) {\r\n throw new Error(\"No method defined.\");\r\n }\r\n if (!request.url) {\r\n throw new Error(\"No url defined.\");\r\n }\r\n\r\n const abortController = new this._abortControllerType();\r\n\r\n let error: any;\r\n // Hook our abortSignal into the abort controller\r\n if (request.abortSignal) {\r\n request.abortSignal.onabort = () => {\r\n abortController.abort();\r\n error = new AbortError();\r\n };\r\n }\r\n\r\n // If a timeout has been passed in, setup a timeout to call abort\r\n // Type needs to be any to fit window.setTimeout and NodeJS.setTimeout\r\n let timeoutId: any = null;\r\n if (request.timeout) {\r\n const msTimeout = request.timeout!;\r\n timeoutId = setTimeout(() => {\r\n abortController.abort();\r\n this._logger.log(LogLevel.Warning, `Timeout from HTTP request.`);\r\n error = new TimeoutError();\r\n }, msTimeout);\r\n }\r\n\r\n if (request.content === \"\") {\r\n request.content = undefined;\r\n }\r\n if (request.content) {\r\n // Explicitly setting the Content-Type header for React Native on Android platform.\r\n request.headers = request.headers || {};\r\n if (isArrayBuffer(request.content)) {\r\n request.headers[\"Content-Type\"] = \"application/octet-stream\";\r\n } else {\r\n request.headers[\"Content-Type\"] = \"text/plain;charset=UTF-8\";\r\n }\r\n }\r\n\r\n let response: Response;\r\n try {\r\n response = await this._fetchType(request.url!, {\r\n body: request.content,\r\n cache: \"no-cache\",\r\n credentials: request.withCredentials === true ? \"include\" : \"same-origin\",\r\n headers: {\r\n \"X-Requested-With\": \"XMLHttpRequest\",\r\n ...request.headers,\r\n },\r\n method: request.method!,\r\n mode: \"cors\",\r\n redirect: \"follow\",\r\n signal: abortController.signal,\r\n });\r\n } catch (e) {\r\n if (error) {\r\n throw error;\r\n }\r\n this._logger.log(\r\n LogLevel.Warning,\r\n `Error from HTTP request. ${e}.`,\r\n );\r\n throw e;\r\n } finally {\r\n if (timeoutId) {\r\n clearTimeout(timeoutId);\r\n }\r\n if (request.abortSignal) {\r\n request.abortSignal.onabort = null;\r\n }\r\n }\r\n\r\n if (!response.ok) {\r\n const errorMessage = await deserializeContent(response, \"text\") as string;\r\n throw new HttpError(errorMessage || response.statusText, response.status);\r\n }\r\n\r\n const content = deserializeContent(response, request.responseType);\r\n const payload = await content;\r\n\r\n return new HttpResponse(\r\n response.status,\r\n response.statusText,\r\n payload,\r\n );\r\n }\r\n\r\n public getCookieString(url: string): string {\r\n let cookies: string = \"\";\r\n if (Platform.isNode && this._jar) {\r\n // @ts-ignore: unused variable\r\n this._jar.getCookies(url, (e, c) => cookies = c.join(\"; \"));\r\n }\r\n return cookies;\r\n }\r\n}\r\n\r\nfunction deserializeContent(response: Response, responseType?: XMLHttpRequestResponseType): Promise {\r\n let content;\r\n switch (responseType) {\r\n case \"arraybuffer\":\r\n content = response.arrayBuffer();\r\n break;\r\n case \"text\":\r\n content = response.text();\r\n break;\r\n case \"blob\":\r\n case \"document\":\r\n case \"json\":\r\n throw new Error(`${responseType} is not supported.`);\r\n default:\r\n content = response.text();\r\n break;\r\n }\r\n\r\n return content;\r\n}\r\n","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n\r\nimport { AbortError, HttpError, TimeoutError } from \"./Errors\";\r\nimport { HttpClient, HttpRequest, HttpResponse } from \"./HttpClient\";\r\nimport { ILogger, LogLevel } from \"./ILogger\";\r\nimport { isArrayBuffer } from \"./Utils\";\r\n\r\nexport class XhrHttpClient extends HttpClient {\r\n private readonly _logger: ILogger;\r\n\r\n public constructor(logger: ILogger) {\r\n super();\r\n this._logger = logger;\r\n }\r\n\r\n /** @inheritDoc */\r\n public send(request: HttpRequest): Promise {\r\n // Check that abort was not signaled before calling send\r\n if (request.abortSignal && request.abortSignal.aborted) {\r\n return Promise.reject(new AbortError());\r\n }\r\n\r\n if (!request.method) {\r\n return Promise.reject(new Error(\"No method defined.\"));\r\n }\r\n if (!request.url) {\r\n return Promise.reject(new Error(\"No url defined.\"));\r\n }\r\n\r\n return new Promise((resolve, reject) => {\r\n const xhr = new XMLHttpRequest();\r\n\r\n xhr.open(request.method!, request.url!, true);\r\n xhr.withCredentials = request.withCredentials === undefined ? true : request.withCredentials;\r\n xhr.setRequestHeader(\"X-Requested-With\", \"XMLHttpRequest\");\r\n if (request.content === \"\") {\r\n request.content = undefined;\r\n }\r\n if (request.content) {\r\n // Explicitly setting the Content-Type header for React Native on Android platform.\r\n if (isArrayBuffer(request.content)) {\r\n xhr.setRequestHeader(\"Content-Type\", \"application/octet-stream\");\r\n } else {\r\n xhr.setRequestHeader(\"Content-Type\", \"text/plain;charset=UTF-8\");\r\n }\r\n }\r\n\r\n const headers = request.headers;\r\n if (headers) {\r\n Object.keys(headers)\r\n .forEach((header) => {\r\n xhr.setRequestHeader(header, headers[header]);\r\n });\r\n }\r\n\r\n if (request.responseType) {\r\n xhr.responseType = request.responseType;\r\n }\r\n\r\n if (request.abortSignal) {\r\n request.abortSignal.onabort = () => {\r\n xhr.abort();\r\n reject(new AbortError());\r\n };\r\n }\r\n\r\n if (request.timeout) {\r\n xhr.timeout = request.timeout;\r\n }\r\n\r\n xhr.onload = () => {\r\n if (request.abortSignal) {\r\n request.abortSignal.onabort = null;\r\n }\r\n\r\n if (xhr.status >= 200 && xhr.status < 300) {\r\n resolve(new HttpResponse(xhr.status, xhr.statusText, xhr.response || xhr.responseText));\r\n } else {\r\n reject(new HttpError(xhr.response || xhr.responseText || xhr.statusText, xhr.status));\r\n }\r\n };\r\n\r\n xhr.onerror = () => {\r\n this._logger.log(LogLevel.Warning, `Error from HTTP request. ${xhr.status}: ${xhr.statusText}.`);\r\n reject(new HttpError(xhr.statusText, xhr.status));\r\n };\r\n\r\n xhr.ontimeout = () => {\r\n this._logger.log(LogLevel.Warning, `Timeout from HTTP request.`);\r\n reject(new TimeoutError());\r\n };\r\n\r\n xhr.send(request.content);\r\n });\r\n }\r\n}\r\n","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n\r\nimport { AbortError } from \"./Errors\";\r\nimport { FetchHttpClient } from \"./FetchHttpClient\";\r\nimport { HttpClient, HttpRequest, HttpResponse } from \"./HttpClient\";\r\nimport { ILogger } from \"./ILogger\";\r\nimport { Platform } from \"./Utils\";\r\nimport { XhrHttpClient } from \"./XhrHttpClient\";\r\n\r\n/** Default implementation of {@link @microsoft/signalr.HttpClient}. */\r\nexport class DefaultHttpClient extends HttpClient {\r\n private readonly _httpClient: HttpClient;\r\n\r\n /** Creates a new instance of the {@link @microsoft/signalr.DefaultHttpClient}, using the provided {@link @microsoft/signalr.ILogger} to log messages. */\r\n public constructor(logger: ILogger) {\r\n super();\r\n\r\n if (typeof fetch !== \"undefined\" || Platform.isNode) {\r\n this._httpClient = new FetchHttpClient(logger);\r\n } else if (typeof XMLHttpRequest !== \"undefined\") {\r\n this._httpClient = new XhrHttpClient(logger);\r\n } else {\r\n throw new Error(\"No usable HttpClient found.\");\r\n }\r\n }\r\n\r\n /** @inheritDoc */\r\n public send(request: HttpRequest): Promise {\r\n // Check that abort was not signaled before calling send\r\n if (request.abortSignal && request.abortSignal.aborted) {\r\n return Promise.reject(new AbortError());\r\n }\r\n\r\n if (!request.method) {\r\n return Promise.reject(new Error(\"No method defined.\"));\r\n }\r\n if (!request.url) {\r\n return Promise.reject(new Error(\"No url defined.\"));\r\n }\r\n\r\n return this._httpClient.send(request);\r\n }\r\n\r\n public getCookieString(url: string): string {\r\n return this._httpClient.getCookieString(url);\r\n }\r\n}\r\n","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n\r\n// This will be treated as a bit flag in the future, so we keep it using power-of-two values.\r\n/** Specifies a specific HTTP transport type. */\r\nexport enum HttpTransportType {\r\n /** Specifies no transport preference. */\r\n None = 0,\r\n /** Specifies the WebSockets transport. */\r\n WebSockets = 1,\r\n /** Specifies the Server-Sent Events transport. */\r\n ServerSentEvents = 2,\r\n /** Specifies the Long Polling transport. */\r\n LongPolling = 4,\r\n}\r\n\r\n/** Specifies the transfer format for a connection. */\r\nexport enum TransferFormat {\r\n /** Specifies that only text data will be transmitted over the connection. */\r\n Text = 1,\r\n /** Specifies that binary data will be transmitted over the connection. */\r\n Binary = 2,\r\n}\r\n\r\n/** An abstraction over the behavior of transports. This is designed to support the framework and not intended for use by applications. */\r\nexport interface ITransport {\r\n connect(url: string, transferFormat: TransferFormat): Promise;\r\n send(data: any): Promise;\r\n stop(): Promise;\r\n onreceive: ((data: string | ArrayBuffer) => void) | null;\r\n onclose: ((error?: Error) => void) | null;\r\n}\r\n","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n\r\n// Rough polyfill of https://developer.mozilla.org/en-US/docs/Web/API/AbortController\r\n// We don't actually ever use the API being polyfilled, we always use the polyfill because\r\n// it's a very new API right now.\r\n\r\n// Not exported from index.\r\n/** @private */\r\nexport class AbortController implements AbortSignal {\r\n private _isAborted: boolean = false;\r\n public onabort: (() => void) | null = null;\r\n\r\n public abort(): void {\r\n if (!this._isAborted) {\r\n this._isAborted = true;\r\n if (this.onabort) {\r\n this.onabort();\r\n }\r\n }\r\n }\r\n\r\n get signal(): AbortSignal {\r\n return this;\r\n }\r\n\r\n get aborted(): boolean {\r\n return this._isAborted;\r\n }\r\n}\r\n\r\n/** Represents a signal that can be monitored to determine if a request has been aborted. */\r\nexport interface AbortSignal {\r\n /** Indicates if the request has been aborted. */\r\n aborted: boolean;\r\n /** Set this to a handler that will be invoked when the request is aborted. */\r\n onabort: (() => void) | null;\r\n}\r\n","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n\r\nimport { AbortController } from \"./AbortController\";\r\nimport { HttpError, TimeoutError } from \"./Errors\";\r\nimport { HttpClient, HttpRequest } from \"./HttpClient\";\r\nimport { ILogger, LogLevel } from \"./ILogger\";\r\nimport { ITransport, TransferFormat } from \"./ITransport\";\r\nimport { Arg, getDataDetail, getUserAgentHeader, sendMessage } from \"./Utils\";\r\nimport { IHttpConnectionOptions } from \"./IHttpConnectionOptions\";\r\n\r\n// Not exported from 'index', this type is internal.\r\n/** @private */\r\nexport class LongPollingTransport implements ITransport {\r\n private readonly _httpClient: HttpClient;\r\n private readonly _logger: ILogger;\r\n private readonly _options: IHttpConnectionOptions;\r\n private readonly _pollAbort: AbortController;\r\n\r\n private _url?: string;\r\n private _running: boolean;\r\n private _receiving?: Promise;\r\n private _closeError?: Error | unknown;\r\n\r\n public onreceive: ((data: string | ArrayBuffer) => void) | null;\r\n public onclose: ((error?: Error | unknown) => void) | null;\r\n\r\n // This is an internal type, not exported from 'index' so this is really just internal.\r\n public get pollAborted(): boolean {\r\n return this._pollAbort.aborted;\r\n }\r\n\r\n constructor(httpClient: HttpClient, logger: ILogger, options: IHttpConnectionOptions) {\r\n this._httpClient = httpClient;\r\n this._logger = logger;\r\n this._pollAbort = new AbortController();\r\n this._options = options;\r\n\r\n this._running = false;\r\n\r\n this.onreceive = null;\r\n this.onclose = null;\r\n }\r\n\r\n public async connect(url: string, transferFormat: TransferFormat): Promise {\r\n Arg.isRequired(url, \"url\");\r\n Arg.isRequired(transferFormat, \"transferFormat\");\r\n Arg.isIn(transferFormat, TransferFormat, \"transferFormat\");\r\n\r\n this._url = url;\r\n\r\n this._logger.log(LogLevel.Trace, \"(LongPolling transport) Connecting.\");\r\n\r\n // Allow binary format on Node and Browsers that support binary content (indicated by the presence of responseType property)\r\n if (transferFormat === TransferFormat.Binary &&\r\n (typeof XMLHttpRequest !== \"undefined\" && typeof new XMLHttpRequest().responseType !== \"string\")) {\r\n throw new Error(\"Binary protocols over XmlHttpRequest not implementing advanced features are not supported.\");\r\n }\r\n\r\n const [name, value] = getUserAgentHeader();\r\n const headers = { [name]: value, ...this._options.headers };\r\n\r\n const pollOptions: HttpRequest = {\r\n abortSignal: this._pollAbort.signal,\r\n headers,\r\n timeout: 100000,\r\n withCredentials: this._options.withCredentials,\r\n };\r\n\r\n if (transferFormat === TransferFormat.Binary) {\r\n pollOptions.responseType = \"arraybuffer\";\r\n }\r\n\r\n // Make initial long polling request\r\n // Server uses first long polling request to finish initializing connection and it returns without data\r\n const pollUrl = `${url}&_=${Date.now()}`;\r\n this._logger.log(LogLevel.Trace, `(LongPolling transport) polling: ${pollUrl}.`);\r\n const response = await this._httpClient.get(pollUrl, pollOptions);\r\n if (response.statusCode !== 200) {\r\n this._logger.log(LogLevel.Error, `(LongPolling transport) Unexpected response code: ${response.statusCode}.`);\r\n\r\n // Mark running as false so that the poll immediately ends and runs the close logic\r\n this._closeError = new HttpError(response.statusText || \"\", response.statusCode);\r\n this._running = false;\r\n } else {\r\n this._running = true;\r\n }\r\n\r\n this._receiving = this._poll(this._url, pollOptions);\r\n }\r\n\r\n private async _poll(url: string, pollOptions: HttpRequest): Promise {\r\n try {\r\n while (this._running) {\r\n try {\r\n const pollUrl = `${url}&_=${Date.now()}`;\r\n this._logger.log(LogLevel.Trace, `(LongPolling transport) polling: ${pollUrl}.`);\r\n const response = await this._httpClient.get(pollUrl, pollOptions);\r\n\r\n if (response.statusCode === 204) {\r\n this._logger.log(LogLevel.Information, \"(LongPolling transport) Poll terminated by server.\");\r\n\r\n this._running = false;\r\n } else if (response.statusCode !== 200) {\r\n this._logger.log(LogLevel.Error, `(LongPolling transport) Unexpected response code: ${response.statusCode}.`);\r\n\r\n // Unexpected status code\r\n this._closeError = new HttpError(response.statusText || \"\", response.statusCode);\r\n this._running = false;\r\n } else {\r\n // Process the response\r\n if (response.content) {\r\n this._logger.log(LogLevel.Trace, `(LongPolling transport) data received. ${getDataDetail(response.content, this._options.logMessageContent!)}.`);\r\n if (this.onreceive) {\r\n this.onreceive(response.content);\r\n }\r\n } else {\r\n // This is another way timeout manifest.\r\n this._logger.log(LogLevel.Trace, \"(LongPolling transport) Poll timed out, reissuing.\");\r\n }\r\n }\r\n } catch (e) {\r\n if (!this._running) {\r\n // Log but disregard errors that occur after stopping\r\n this._logger.log(LogLevel.Trace, `(LongPolling transport) Poll errored after shutdown: ${(e as any).message}`);\r\n } else {\r\n if (e instanceof TimeoutError) {\r\n // Ignore timeouts and reissue the poll.\r\n this._logger.log(LogLevel.Trace, \"(LongPolling transport) Poll timed out, reissuing.\");\r\n } else {\r\n // Close the connection with the error as the result.\r\n this._closeError = e;\r\n this._running = false;\r\n }\r\n }\r\n }\r\n }\r\n } finally {\r\n this._logger.log(LogLevel.Trace, \"(LongPolling transport) Polling complete.\");\r\n\r\n // We will reach here with pollAborted==false when the server returned a response causing the transport to stop.\r\n // If pollAborted==true then client initiated the stop and the stop method will raise the close event after DELETE is sent.\r\n if (!this.pollAborted) {\r\n this._raiseOnClose();\r\n }\r\n }\r\n }\r\n\r\n public async send(data: any): Promise {\r\n if (!this._running) {\r\n return Promise.reject(new Error(\"Cannot send until the transport is connected\"));\r\n }\r\n return sendMessage(this._logger, \"LongPolling\", this._httpClient, this._url!, data, this._options);\r\n }\r\n\r\n public async stop(): Promise {\r\n this._logger.log(LogLevel.Trace, \"(LongPolling transport) Stopping polling.\");\r\n\r\n // Tell receiving loop to stop, abort any current request, and then wait for it to finish\r\n this._running = false;\r\n this._pollAbort.abort();\r\n\r\n try {\r\n await this._receiving;\r\n\r\n // Send DELETE to clean up long polling on the server\r\n this._logger.log(LogLevel.Trace, `(LongPolling transport) sending DELETE request to ${this._url}.`);\r\n\r\n const headers: {[k: string]: string} = {};\r\n const [name, value] = getUserAgentHeader();\r\n headers[name] = value;\r\n\r\n const deleteOptions: HttpRequest = {\r\n headers: { ...headers, ...this._options.headers },\r\n timeout: this._options.timeout,\r\n withCredentials: this._options.withCredentials,\r\n };\r\n\r\n let error;\r\n try {\r\n await this._httpClient.delete(this._url!, deleteOptions);\r\n } catch (err) {\r\n error = err;\r\n }\r\n\r\n if (error) {\r\n if (error instanceof HttpError) {\r\n if (error.statusCode === 404) {\r\n this._logger.log(LogLevel.Trace, \"(LongPolling transport) A 404 response was returned from sending a DELETE request.\");\r\n } else {\r\n this._logger.log(LogLevel.Trace, `(LongPolling transport) Error sending a DELETE request: ${error}`);\r\n }\r\n }\r\n } else {\r\n this._logger.log(LogLevel.Trace, \"(LongPolling transport) DELETE request accepted.\");\r\n }\r\n\r\n } finally {\r\n this._logger.log(LogLevel.Trace, \"(LongPolling transport) Stop finished.\");\r\n\r\n // Raise close event here instead of in polling\r\n // It needs to happen after the DELETE request is sent\r\n this._raiseOnClose();\r\n }\r\n }\r\n\r\n private _raiseOnClose() {\r\n if (this.onclose) {\r\n let logMessage = \"(LongPolling transport) Firing onclose event.\";\r\n if (this._closeError) {\r\n logMessage += \" Error: \" + this._closeError;\r\n }\r\n this._logger.log(LogLevel.Trace, logMessage);\r\n this.onclose(this._closeError);\r\n }\r\n }\r\n}\r\n","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n\r\nimport { HttpClient } from \"./HttpClient\";\r\nimport { MessageHeaders } from \"./IHubProtocol\";\r\nimport { ILogger, LogLevel } from \"./ILogger\";\r\nimport { ITransport, TransferFormat } from \"./ITransport\";\r\nimport { Arg, getDataDetail, getUserAgentHeader, Platform, sendMessage } from \"./Utils\";\r\nimport { IHttpConnectionOptions } from \"./IHttpConnectionOptions\";\r\n\r\n/** @private */\r\nexport class ServerSentEventsTransport implements ITransport {\r\n private readonly _httpClient: HttpClient;\r\n private readonly _accessToken: string | undefined;\r\n private readonly _logger: ILogger;\r\n private readonly _options: IHttpConnectionOptions;\r\n private _eventSource?: EventSource;\r\n private _url?: string;\r\n\r\n public onreceive: ((data: string | ArrayBuffer) => void) | null;\r\n public onclose: ((error?: Error | unknown) => void) | null;\r\n\r\n constructor(httpClient: HttpClient, accessToken: string | undefined, logger: ILogger,\r\n options: IHttpConnectionOptions) {\r\n this._httpClient = httpClient;\r\n this._accessToken = accessToken;\r\n this._logger = logger;\r\n this._options = options;\r\n\r\n this.onreceive = null;\r\n this.onclose = null;\r\n }\r\n\r\n public async connect(url: string, transferFormat: TransferFormat): Promise {\r\n Arg.isRequired(url, \"url\");\r\n Arg.isRequired(transferFormat, \"transferFormat\");\r\n Arg.isIn(transferFormat, TransferFormat, \"transferFormat\");\r\n\r\n this._logger.log(LogLevel.Trace, \"(SSE transport) Connecting.\");\r\n\r\n // set url before accessTokenFactory because this._url is only for send and we set the auth header instead of the query string for send\r\n this._url = url;\r\n\r\n if (this._accessToken) {\r\n url += (url.indexOf(\"?\") < 0 ? \"?\" : \"&\") + `access_token=${encodeURIComponent(this._accessToken)}`;\r\n }\r\n\r\n return new Promise((resolve, reject) => {\r\n let opened = false;\r\n if (transferFormat !== TransferFormat.Text) {\r\n reject(new Error(\"The Server-Sent Events transport only supports the 'Text' transfer format\"));\r\n return;\r\n }\r\n\r\n let eventSource: EventSource;\r\n if (Platform.isBrowser || Platform.isWebWorker) {\r\n eventSource = new this._options.EventSource!(url, { withCredentials: this._options.withCredentials });\r\n } else {\r\n // Non-browser passes cookies via the dictionary\r\n const cookies = this._httpClient.getCookieString(url);\r\n const headers: MessageHeaders = {};\r\n headers.Cookie = cookies;\r\n const [name, value] = getUserAgentHeader();\r\n headers[name] = value;\r\n\r\n eventSource = new this._options.EventSource!(url, { withCredentials: this._options.withCredentials, headers: { ...headers, ...this._options.headers} } as EventSourceInit);\r\n }\r\n\r\n try {\r\n eventSource.onmessage = (e: MessageEvent) => {\r\n if (this.onreceive) {\r\n try {\r\n this._logger.log(LogLevel.Trace, `(SSE transport) data received. ${getDataDetail(e.data, this._options.logMessageContent!)}.`);\r\n this.onreceive(e.data);\r\n } catch (error) {\r\n this._close(error);\r\n return;\r\n }\r\n }\r\n };\r\n\r\n // @ts-ignore: not using event on purpose\r\n eventSource.onerror = (e: Event) => {\r\n // EventSource doesn't give any useful information about server side closes.\r\n if (opened) {\r\n this._close();\r\n } else {\r\n reject(new Error(\"EventSource failed to connect. The connection could not be found on the server,\"\r\n + \" either the connection ID is not present on the server, or a proxy is refusing/buffering the connection.\"\r\n + \" If you have multiple servers check that sticky sessions are enabled.\"));\r\n }\r\n };\r\n\r\n eventSource.onopen = () => {\r\n this._logger.log(LogLevel.Information, `SSE connected to ${this._url}`);\r\n this._eventSource = eventSource;\r\n opened = true;\r\n resolve();\r\n };\r\n } catch (e) {\r\n reject(e);\r\n return;\r\n }\r\n });\r\n }\r\n\r\n public async send(data: any): Promise {\r\n if (!this._eventSource) {\r\n return Promise.reject(new Error(\"Cannot send until the transport is connected\"));\r\n }\r\n return sendMessage(this._logger, \"SSE\", this._httpClient, this._url!, data, this._options);\r\n }\r\n\r\n public stop(): Promise {\r\n this._close();\r\n return Promise.resolve();\r\n }\r\n\r\n private _close(e?: Error | unknown) {\r\n if (this._eventSource) {\r\n this._eventSource.close();\r\n this._eventSource = undefined;\r\n\r\n if (this.onclose) {\r\n this.onclose(e);\r\n }\r\n }\r\n }\r\n}\r\n","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n\r\nimport { HeaderNames } from \"./HeaderNames\";\r\nimport { HttpClient } from \"./HttpClient\";\r\nimport { MessageHeaders } from \"./IHubProtocol\";\r\nimport { ILogger, LogLevel } from \"./ILogger\";\r\nimport { ITransport, TransferFormat } from \"./ITransport\";\r\nimport { WebSocketConstructor } from \"./Polyfills\";\r\nimport { Arg, getDataDetail, getUserAgentHeader, Platform } from \"./Utils\";\r\n\r\n/** @private */\r\nexport class WebSocketTransport implements ITransport {\r\n private readonly _logger: ILogger;\r\n private readonly _accessTokenFactory: (() => string | Promise) | undefined;\r\n private readonly _logMessageContent: boolean;\r\n private readonly _webSocketConstructor: WebSocketConstructor;\r\n private readonly _httpClient: HttpClient;\r\n private _webSocket?: WebSocket;\r\n private _headers: MessageHeaders;\r\n\r\n public onreceive: ((data: string | ArrayBuffer) => void) | null;\r\n public onclose: ((error?: Error) => void) | null;\r\n\r\n constructor(httpClient: HttpClient, accessTokenFactory: (() => string | Promise) | undefined, logger: ILogger,\r\n logMessageContent: boolean, webSocketConstructor: WebSocketConstructor, headers: MessageHeaders) {\r\n this._logger = logger;\r\n this._accessTokenFactory = accessTokenFactory;\r\n this._logMessageContent = logMessageContent;\r\n this._webSocketConstructor = webSocketConstructor;\r\n this._httpClient = httpClient;\r\n\r\n this.onreceive = null;\r\n this.onclose = null;\r\n this._headers = headers;\r\n }\r\n\r\n public async connect(url: string, transferFormat: TransferFormat): Promise {\r\n Arg.isRequired(url, \"url\");\r\n Arg.isRequired(transferFormat, \"transferFormat\");\r\n Arg.isIn(transferFormat, TransferFormat, \"transferFormat\");\r\n this._logger.log(LogLevel.Trace, \"(WebSockets transport) Connecting.\");\r\n\r\n let token: string;\r\n if (this._accessTokenFactory) {\r\n token = await this._accessTokenFactory();\r\n }\r\n\r\n return new Promise((resolve, reject) => {\r\n url = url.replace(/^http/, \"ws\");\r\n let webSocket: WebSocket | undefined;\r\n const cookies = this._httpClient.getCookieString(url);\r\n let opened = false;\r\n\r\n if (Platform.isNode || Platform.isReactNative) {\r\n const headers: {[k: string]: string} = {};\r\n const [name, value] = getUserAgentHeader();\r\n headers[name] = value;\r\n if (token) {\r\n headers[HeaderNames.Authorization] = `Bearer ${token}`;\r\n }\r\n\r\n if (cookies) {\r\n headers[HeaderNames.Cookie] = cookies;\r\n }\r\n\r\n // Only pass headers when in non-browser environments\r\n webSocket = new this._webSocketConstructor(url, undefined, {\r\n headers: { ...headers, ...this._headers },\r\n });\r\n }\r\n else\r\n {\r\n if (token) {\r\n url += (url.indexOf(\"?\") < 0 ? \"?\" : \"&\") + `access_token=${encodeURIComponent(token)}`;\r\n }\r\n }\r\n\r\n if (!webSocket) {\r\n // Chrome is not happy with passing 'undefined' as protocol\r\n webSocket = new this._webSocketConstructor(url);\r\n }\r\n\r\n if (transferFormat === TransferFormat.Binary) {\r\n webSocket.binaryType = \"arraybuffer\";\r\n }\r\n\r\n webSocket.onopen = (_event: Event) => {\r\n this._logger.log(LogLevel.Information, `WebSocket connected to ${url}.`);\r\n this._webSocket = webSocket;\r\n opened = true;\r\n resolve();\r\n };\r\n\r\n webSocket.onerror = (event: Event) => {\r\n let error: any = null;\r\n // ErrorEvent is a browser only type we need to check if the type exists before using it\r\n if (typeof ErrorEvent !== \"undefined\" && event instanceof ErrorEvent) {\r\n error = event.error;\r\n } else {\r\n error = \"There was an error with the transport\";\r\n }\r\n\r\n this._logger.log(LogLevel.Information, `(WebSockets transport) ${error}.`);\r\n };\r\n\r\n webSocket.onmessage = (message: MessageEvent) => {\r\n this._logger.log(LogLevel.Trace, `(WebSockets transport) data received. ${getDataDetail(message.data, this._logMessageContent)}.`);\r\n if (this.onreceive) {\r\n try {\r\n this.onreceive(message.data);\r\n } catch (error) {\r\n this._close(error);\r\n return;\r\n }\r\n }\r\n };\r\n\r\n webSocket.onclose = (event: CloseEvent) => {\r\n // Don't call close handler if connection was never established\r\n // We'll reject the connect call instead\r\n if (opened) {\r\n this._close(event);\r\n } else {\r\n let error: any = null;\r\n // ErrorEvent is a browser only type we need to check if the type exists before using it\r\n if (typeof ErrorEvent !== \"undefined\" && event instanceof ErrorEvent) {\r\n error = event.error;\r\n } else {\r\n error = \"WebSocket failed to connect. The connection could not be found on the server,\"\r\n + \" either the endpoint may not be a SignalR endpoint,\"\r\n + \" the connection ID is not present on the server, or there is a proxy blocking WebSockets.\"\r\n + \" If you have multiple servers check that sticky sessions are enabled.\";\r\n }\r\n\r\n reject(new Error(error));\r\n }\r\n };\r\n });\r\n }\r\n\r\n public send(data: any): Promise {\r\n if (this._webSocket && this._webSocket.readyState === this._webSocketConstructor.OPEN) {\r\n this._logger.log(LogLevel.Trace, `(WebSockets transport) sending data. ${getDataDetail(data, this._logMessageContent)}.`);\r\n this._webSocket.send(data);\r\n return Promise.resolve();\r\n }\r\n\r\n return Promise.reject(\"WebSocket is not in the OPEN state\");\r\n }\r\n\r\n public stop(): Promise {\r\n if (this._webSocket) {\r\n // Manually invoke onclose callback inline so we know the HttpConnection was closed properly before returning\r\n // This also solves an issue where websocket.onclose could take 18+ seconds to trigger during network disconnects\r\n this._close(undefined);\r\n }\r\n\r\n return Promise.resolve();\r\n }\r\n\r\n private _close(event: CloseEvent | Error | unknown): void {\r\n // webSocket will be null if the transport did not start successfully\r\n if (this._webSocket) {\r\n // Clear websocket handlers because we are considering the socket closed now\r\n this._webSocket.onclose = () => {};\r\n this._webSocket.onmessage = () => {};\r\n this._webSocket.onerror = () => {};\r\n this._webSocket.close();\r\n this._webSocket = undefined;\r\n }\r\n\r\n this._logger.log(LogLevel.Trace, \"(WebSockets transport) socket closed.\");\r\n\r\n if (this.onclose) {\r\n if (this._isCloseEvent(event) && (event.wasClean === false || event.code !== 1000)) {\r\n this.onclose(new Error(`WebSocket closed with status code: ${event.code} (${event.reason || \"no reason given\"}).`));\r\n } else if (event instanceof Error) {\r\n this.onclose(event);\r\n } else {\r\n this.onclose();\r\n }\r\n }\r\n }\r\n\r\n private _isCloseEvent(event?: any): event is CloseEvent {\r\n return event && typeof event.wasClean === \"boolean\" && typeof event.code === \"number\";\r\n }\r\n}\r\n","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n\r\nimport { AccessTokenHttpClient } from \"./AccessTokenHttpClient\";\r\nimport { DefaultHttpClient } from \"./DefaultHttpClient\";\r\nimport { AggregateErrors, DisabledTransportError, FailedToNegotiateWithServerError, FailedToStartTransportError, HttpError, UnsupportedTransportError, AbortError } from \"./Errors\";\r\nimport { IConnection } from \"./IConnection\";\r\nimport { IHttpConnectionOptions } from \"./IHttpConnectionOptions\";\r\nimport { ILogger, LogLevel } from \"./ILogger\";\r\nimport { HttpTransportType, ITransport, TransferFormat } from \"./ITransport\";\r\nimport { LongPollingTransport } from \"./LongPollingTransport\";\r\nimport { ServerSentEventsTransport } from \"./ServerSentEventsTransport\";\r\nimport { Arg, createLogger, getUserAgentHeader, Platform } from \"./Utils\";\r\nimport { WebSocketTransport } from \"./WebSocketTransport\";\r\n\r\n/** @private */\r\nconst enum ConnectionState {\r\n Connecting = \"Connecting\",\r\n Connected = \"Connected\",\r\n Disconnected = \"Disconnected\",\r\n Disconnecting = \"Disconnecting\",\r\n}\r\n\r\n/** @private */\r\nexport interface INegotiateResponse {\r\n connectionId?: string;\r\n connectionToken?: string;\r\n negotiateVersion?: number;\r\n availableTransports?: IAvailableTransport[];\r\n url?: string;\r\n accessToken?: string;\r\n error?: string;\r\n useStatefulReconnect?: boolean;\r\n}\r\n\r\n/** @private */\r\nexport interface IAvailableTransport {\r\n transport: keyof typeof HttpTransportType;\r\n transferFormats: (keyof typeof TransferFormat)[];\r\n}\r\n\r\nconst MAX_REDIRECTS = 100;\r\n\r\n/** @private */\r\nexport class HttpConnection implements IConnection {\r\n private _connectionState: ConnectionState;\r\n // connectionStarted is tracked independently from connectionState, so we can check if the\r\n // connection ever did successfully transition from connecting to connected before disconnecting.\r\n private _connectionStarted: boolean;\r\n private readonly _httpClient: AccessTokenHttpClient;\r\n private readonly _logger: ILogger;\r\n private readonly _options: IHttpConnectionOptions;\r\n // Needs to not start with _ to be available for tests\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n private transport?: ITransport;\r\n private _startInternalPromise?: Promise;\r\n private _stopPromise?: Promise;\r\n private _stopPromiseResolver: (value?: PromiseLike) => void = () => {};\r\n private _stopError?: Error;\r\n private _accessTokenFactory?: () => string | Promise;\r\n private _sendQueue?: TransportSendQueue;\r\n\r\n public readonly features: any = {};\r\n public baseUrl: string;\r\n public connectionId?: string;\r\n public onreceive: ((data: string | ArrayBuffer) => void) | null;\r\n public onclose: ((e?: Error) => void) | null;\r\n\r\n private readonly _negotiateVersion: number = 1;\r\n\r\n constructor(url: string, options: IHttpConnectionOptions = {}) {\r\n Arg.isRequired(url, \"url\");\r\n\r\n this._logger = createLogger(options.logger);\r\n this.baseUrl = this._resolveUrl(url);\r\n\r\n options = options || {};\r\n options.logMessageContent = options.logMessageContent === undefined ? false : options.logMessageContent;\r\n if (typeof options.withCredentials === \"boolean\" || options.withCredentials === undefined) {\r\n options.withCredentials = options.withCredentials === undefined ? true : options.withCredentials;\r\n } else {\r\n throw new Error(\"withCredentials option was not a 'boolean' or 'undefined' value\");\r\n }\r\n options.timeout = options.timeout === undefined ? 100 * 1000 : options.timeout;\r\n\r\n let webSocketModule: any = null;\r\n let eventSourceModule: any = null;\r\n\r\n if (Platform.isNode && typeof require !== \"undefined\") {\r\n // In order to ignore the dynamic require in webpack builds we need to do this magic\r\n // @ts-ignore: TS doesn't know about these names\r\n const requireFunc = typeof __webpack_require__ === \"function\" ? __non_webpack_require__ : require;\r\n webSocketModule = requireFunc(\"ws\");\r\n eventSourceModule = requireFunc(\"eventsource\");\r\n }\r\n\r\n if (!Platform.isNode && typeof WebSocket !== \"undefined\" && !options.WebSocket) {\r\n options.WebSocket = WebSocket;\r\n } else if (Platform.isNode && !options.WebSocket) {\r\n if (webSocketModule) {\r\n options.WebSocket = webSocketModule;\r\n }\r\n }\r\n\r\n if (!Platform.isNode && typeof EventSource !== \"undefined\" && !options.EventSource) {\r\n options.EventSource = EventSource;\r\n } else if (Platform.isNode && !options.EventSource) {\r\n if (typeof eventSourceModule !== \"undefined\") {\r\n options.EventSource = eventSourceModule;\r\n }\r\n }\r\n\r\n this._httpClient = new AccessTokenHttpClient(options.httpClient || new DefaultHttpClient(this._logger), options.accessTokenFactory);\r\n this._connectionState = ConnectionState.Disconnected;\r\n this._connectionStarted = false;\r\n this._options = options;\r\n\r\n this.onreceive = null;\r\n this.onclose = null;\r\n }\r\n\r\n public start(): Promise;\r\n public start(transferFormat: TransferFormat): Promise;\r\n public async start(transferFormat?: TransferFormat): Promise {\r\n transferFormat = transferFormat || TransferFormat.Binary;\r\n\r\n Arg.isIn(transferFormat, TransferFormat, \"transferFormat\");\r\n\r\n this._logger.log(LogLevel.Debug, `Starting connection with transfer format '${TransferFormat[transferFormat]}'.`);\r\n\r\n if (this._connectionState !== ConnectionState.Disconnected) {\r\n return Promise.reject(new Error(\"Cannot start an HttpConnection that is not in the 'Disconnected' state.\"));\r\n }\r\n\r\n this._connectionState = ConnectionState.Connecting;\r\n\r\n this._startInternalPromise = this._startInternal(transferFormat);\r\n await this._startInternalPromise;\r\n\r\n // The TypeScript compiler thinks that connectionState must be Connecting here. The TypeScript compiler is wrong.\r\n if (this._connectionState as any === ConnectionState.Disconnecting) {\r\n // stop() was called and transitioned the client into the Disconnecting state.\r\n const message = \"Failed to start the HttpConnection before stop() was called.\";\r\n this._logger.log(LogLevel.Error, message);\r\n\r\n // We cannot await stopPromise inside startInternal since stopInternal awaits the startInternalPromise.\r\n await this._stopPromise;\r\n\r\n return Promise.reject(new AbortError(message));\r\n } else if (this._connectionState as any !== ConnectionState.Connected) {\r\n // stop() was called and transitioned the client into the Disconnecting state.\r\n const message = \"HttpConnection.startInternal completed gracefully but didn't enter the connection into the connected state!\";\r\n this._logger.log(LogLevel.Error, message);\r\n return Promise.reject(new AbortError(message));\r\n }\r\n\r\n this._connectionStarted = true;\r\n }\r\n\r\n public send(data: string | ArrayBuffer): Promise {\r\n if (this._connectionState !== ConnectionState.Connected) {\r\n return Promise.reject(new Error(\"Cannot send data if the connection is not in the 'Connected' State.\"));\r\n }\r\n\r\n if (!this._sendQueue) {\r\n this._sendQueue = new TransportSendQueue(this.transport!);\r\n }\r\n\r\n // Transport will not be null if state is connected\r\n return this._sendQueue.send(data);\r\n }\r\n\r\n public async stop(error?: Error): Promise {\r\n if (this._connectionState === ConnectionState.Disconnected) {\r\n this._logger.log(LogLevel.Debug, `Call to HttpConnection.stop(${error}) ignored because the connection is already in the disconnected state.`);\r\n return Promise.resolve();\r\n }\r\n\r\n if (this._connectionState === ConnectionState.Disconnecting) {\r\n this._logger.log(LogLevel.Debug, `Call to HttpConnection.stop(${error}) ignored because the connection is already in the disconnecting state.`);\r\n return this._stopPromise;\r\n }\r\n\r\n this._connectionState = ConnectionState.Disconnecting;\r\n\r\n this._stopPromise = new Promise((resolve) => {\r\n // Don't complete stop() until stopConnection() completes.\r\n this._stopPromiseResolver = resolve;\r\n });\r\n\r\n // stopInternal should never throw so just observe it.\r\n await this._stopInternal(error);\r\n await this._stopPromise;\r\n }\r\n\r\n private async _stopInternal(error?: Error): Promise {\r\n // Set error as soon as possible otherwise there is a race between\r\n // the transport closing and providing an error and the error from a close message\r\n // We would prefer the close message error.\r\n this._stopError = error;\r\n\r\n try {\r\n await this._startInternalPromise;\r\n } catch (e) {\r\n // This exception is returned to the user as a rejected Promise from the start method.\r\n }\r\n\r\n // The transport's onclose will trigger stopConnection which will run our onclose event.\r\n // The transport should always be set if currently connected. If it wasn't set, it's likely because\r\n // stop was called during start() and start() failed.\r\n if (this.transport) {\r\n try {\r\n await this.transport.stop();\r\n } catch (e) {\r\n this._logger.log(LogLevel.Error, `HttpConnection.transport.stop() threw error '${e}'.`);\r\n this._stopConnection();\r\n }\r\n\r\n this.transport = undefined;\r\n } else {\r\n this._logger.log(LogLevel.Debug, \"HttpConnection.transport is undefined in HttpConnection.stop() because start() failed.\");\r\n }\r\n }\r\n\r\n private async _startInternal(transferFormat: TransferFormat): Promise {\r\n // Store the original base url and the access token factory since they may change\r\n // as part of negotiating\r\n let url = this.baseUrl;\r\n this._accessTokenFactory = this._options.accessTokenFactory;\r\n this._httpClient._accessTokenFactory = this._accessTokenFactory;\r\n\r\n try {\r\n if (this._options.skipNegotiation) {\r\n if (this._options.transport === HttpTransportType.WebSockets) {\r\n // No need to add a connection ID in this case\r\n this.transport = this._constructTransport(HttpTransportType.WebSockets);\r\n // We should just call connect directly in this case.\r\n // No fallback or negotiate in this case.\r\n await this._startTransport(url, transferFormat);\r\n } else {\r\n throw new Error(\"Negotiation can only be skipped when using the WebSocket transport directly.\");\r\n }\r\n } else {\r\n let negotiateResponse: INegotiateResponse | null = null;\r\n let redirects = 0;\r\n\r\n do {\r\n negotiateResponse = await this._getNegotiationResponse(url);\r\n // the user tries to stop the connection when it is being started\r\n if (this._connectionState === ConnectionState.Disconnecting || this._connectionState === ConnectionState.Disconnected) {\r\n throw new AbortError(\"The connection was stopped during negotiation.\");\r\n }\r\n\r\n if (negotiateResponse.error) {\r\n throw new Error(negotiateResponse.error);\r\n }\r\n\r\n if ((negotiateResponse as any).ProtocolVersion) {\r\n throw new Error(\"Detected a connection attempt to an ASP.NET SignalR Server. This client only supports connecting to an ASP.NET Core SignalR Server. See https://aka.ms/signalr-core-differences for details.\");\r\n }\r\n\r\n if (negotiateResponse.url) {\r\n url = negotiateResponse.url;\r\n }\r\n\r\n if (negotiateResponse.accessToken) {\r\n // Replace the current access token factory with one that uses\r\n // the returned access token\r\n const accessToken = negotiateResponse.accessToken;\r\n this._accessTokenFactory = () => accessToken;\r\n // set the factory to undefined so the AccessTokenHttpClient won't retry with the same token, since we know it won't change until a connection restart\r\n this._httpClient._accessToken = accessToken;\r\n this._httpClient._accessTokenFactory = undefined;\r\n }\r\n\r\n redirects++;\r\n }\r\n while (negotiateResponse.url && redirects < MAX_REDIRECTS);\r\n\r\n if (redirects === MAX_REDIRECTS && negotiateResponse.url) {\r\n throw new Error(\"Negotiate redirection limit exceeded.\");\r\n }\r\n\r\n await this._createTransport(url, this._options.transport, negotiateResponse, transferFormat);\r\n }\r\n\r\n if (this.transport instanceof LongPollingTransport) {\r\n this.features.inherentKeepAlive = true;\r\n }\r\n\r\n if (this._connectionState === ConnectionState.Connecting) {\r\n // Ensure the connection transitions to the connected state prior to completing this.startInternalPromise.\r\n // start() will handle the case when stop was called and startInternal exits still in the disconnecting state.\r\n this._logger.log(LogLevel.Debug, \"The HttpConnection connected successfully.\");\r\n this._connectionState = ConnectionState.Connected;\r\n }\r\n\r\n // stop() is waiting on us via this.startInternalPromise so keep this.transport around so it can clean up.\r\n // This is the only case startInternal can exit in neither the connected nor disconnected state because stopConnection()\r\n // will transition to the disconnected state. start() will wait for the transition using the stopPromise.\r\n } catch (e) {\r\n this._logger.log(LogLevel.Error, \"Failed to start the connection: \" + e);\r\n this._connectionState = ConnectionState.Disconnected;\r\n this.transport = undefined;\r\n\r\n // if start fails, any active calls to stop assume that start will complete the stop promise\r\n this._stopPromiseResolver();\r\n return Promise.reject(e);\r\n }\r\n }\r\n\r\n private async _getNegotiationResponse(url: string): Promise {\r\n const headers: {[k: string]: string} = {};\r\n const [name, value] = getUserAgentHeader();\r\n headers[name] = value;\r\n\r\n const negotiateUrl = this._resolveNegotiateUrl(url);\r\n this._logger.log(LogLevel.Debug, `Sending negotiation request: ${negotiateUrl}.`);\r\n try {\r\n const response = await this._httpClient.post(negotiateUrl, {\r\n content: \"\",\r\n headers: { ...headers, ...this._options.headers },\r\n timeout: this._options.timeout,\r\n withCredentials: this._options.withCredentials,\r\n });\r\n\r\n if (response.statusCode !== 200) {\r\n return Promise.reject(new Error(`Unexpected status code returned from negotiate '${response.statusCode}'`));\r\n }\r\n\r\n const negotiateResponse = JSON.parse(response.content as string) as INegotiateResponse;\r\n if (!negotiateResponse.negotiateVersion || negotiateResponse.negotiateVersion < 1) {\r\n // Negotiate version 0 doesn't use connectionToken\r\n // So we set it equal to connectionId so all our logic can use connectionToken without being aware of the negotiate version\r\n negotiateResponse.connectionToken = negotiateResponse.connectionId;\r\n }\r\n\r\n if (negotiateResponse.useStatefulReconnect && this._options._useStatefulReconnect !== true) {\r\n return Promise.reject(new FailedToNegotiateWithServerError(\"Client didn't negotiate Stateful Reconnect but the server did.\"));\r\n }\r\n\r\n return negotiateResponse;\r\n } catch (e) {\r\n let errorMessage = \"Failed to complete negotiation with the server: \" + e;\r\n if (e instanceof HttpError) {\r\n if (e.statusCode === 404) {\r\n errorMessage = errorMessage + \" Either this is not a SignalR endpoint or there is a proxy blocking the connection.\";\r\n }\r\n }\r\n this._logger.log(LogLevel.Error, errorMessage);\r\n\r\n return Promise.reject(new FailedToNegotiateWithServerError(errorMessage));\r\n }\r\n }\r\n\r\n private _createConnectUrl(url: string, connectionToken: string | null | undefined) {\r\n if (!connectionToken) {\r\n return url;\r\n }\r\n\r\n return url + (url.indexOf(\"?\") === -1 ? \"?\" : \"&\") + `id=${connectionToken}`;\r\n }\r\n\r\n private async _createTransport(url: string, requestedTransport: HttpTransportType | ITransport | undefined, negotiateResponse: INegotiateResponse, requestedTransferFormat: TransferFormat): Promise {\r\n let connectUrl = this._createConnectUrl(url, negotiateResponse.connectionToken);\r\n if (this._isITransport(requestedTransport)) {\r\n this._logger.log(LogLevel.Debug, \"Connection was provided an instance of ITransport, using that directly.\");\r\n this.transport = requestedTransport;\r\n await this._startTransport(connectUrl, requestedTransferFormat);\r\n\r\n this.connectionId = negotiateResponse.connectionId;\r\n return;\r\n }\r\n\r\n const transportExceptions: any[] = [];\r\n const transports = negotiateResponse.availableTransports || [];\r\n let negotiate: INegotiateResponse | undefined = negotiateResponse;\r\n for (const endpoint of transports) {\r\n const transportOrError = this._resolveTransportOrError(endpoint, requestedTransport, requestedTransferFormat,\r\n negotiate?.useStatefulReconnect === true);\r\n if (transportOrError instanceof Error) {\r\n // Store the error and continue, we don't want to cause a re-negotiate in these cases\r\n transportExceptions.push(`${endpoint.transport} failed:`);\r\n transportExceptions.push(transportOrError);\r\n } else if (this._isITransport(transportOrError)) {\r\n this.transport = transportOrError;\r\n if (!negotiate) {\r\n try {\r\n negotiate = await this._getNegotiationResponse(url);\r\n } catch (ex) {\r\n return Promise.reject(ex);\r\n }\r\n connectUrl = this._createConnectUrl(url, negotiate.connectionToken);\r\n }\r\n try {\r\n await this._startTransport(connectUrl, requestedTransferFormat);\r\n this.connectionId = negotiate.connectionId;\r\n return;\r\n } catch (ex) {\r\n this._logger.log(LogLevel.Error, `Failed to start the transport '${endpoint.transport}': ${ex}`);\r\n negotiate = undefined;\r\n transportExceptions.push(new FailedToStartTransportError(`${endpoint.transport} failed: ${ex}`, HttpTransportType[endpoint.transport]));\r\n\r\n if (this._connectionState !== ConnectionState.Connecting) {\r\n const message = \"Failed to select transport before stop() was called.\";\r\n this._logger.log(LogLevel.Debug, message);\r\n return Promise.reject(new AbortError(message));\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (transportExceptions.length > 0) {\r\n return Promise.reject(new AggregateErrors(`Unable to connect to the server with any of the available transports. ${transportExceptions.join(\" \")}`, transportExceptions));\r\n }\r\n return Promise.reject(new Error(\"None of the transports supported by the client are supported by the server.\"));\r\n }\r\n\r\n private _constructTransport(transport: HttpTransportType): ITransport {\r\n switch (transport) {\r\n case HttpTransportType.WebSockets:\r\n if (!this._options.WebSocket) {\r\n throw new Error(\"'WebSocket' is not supported in your environment.\");\r\n }\r\n return new WebSocketTransport(this._httpClient, this._accessTokenFactory, this._logger, this._options.logMessageContent!,\r\n this._options.WebSocket, this._options.headers || {});\r\n case HttpTransportType.ServerSentEvents:\r\n if (!this._options.EventSource) {\r\n throw new Error(\"'EventSource' is not supported in your environment.\");\r\n }\r\n return new ServerSentEventsTransport(this._httpClient, this._httpClient._accessToken, this._logger, this._options);\r\n case HttpTransportType.LongPolling:\r\n return new LongPollingTransport(this._httpClient, this._logger, this._options);\r\n default:\r\n throw new Error(`Unknown transport: ${transport}.`);\r\n }\r\n }\r\n\r\n private _startTransport(url: string, transferFormat: TransferFormat): Promise {\r\n this.transport!.onreceive = this.onreceive;\r\n if (this.features.reconnect) {\r\n this.transport!.onclose = async (e) => {\r\n let callStop = false;\r\n if (this.features.reconnect) {\r\n try {\r\n this.features.disconnected();\r\n await this.transport!.connect(url, transferFormat);\r\n await this.features.resend();\r\n } catch {\r\n callStop = true;\r\n }\r\n } else {\r\n this._stopConnection(e);\r\n return;\r\n }\r\n\r\n if (callStop) {\r\n this._stopConnection(e);\r\n }\r\n };\r\n } else {\r\n this.transport!.onclose = (e) => this._stopConnection(e);\r\n }\r\n return this.transport!.connect(url, transferFormat);\r\n }\r\n\r\n private _resolveTransportOrError(endpoint: IAvailableTransport, requestedTransport: HttpTransportType | undefined,\r\n requestedTransferFormat: TransferFormat, useStatefulReconnect: boolean): ITransport | Error | unknown {\r\n const transport = HttpTransportType[endpoint.transport];\r\n if (transport === null || transport === undefined) {\r\n this._logger.log(LogLevel.Debug, `Skipping transport '${endpoint.transport}' because it is not supported by this client.`);\r\n return new Error(`Skipping transport '${endpoint.transport}' because it is not supported by this client.`);\r\n } else {\r\n if (transportMatches(requestedTransport, transport)) {\r\n const transferFormats = endpoint.transferFormats.map((s) => TransferFormat[s]);\r\n if (transferFormats.indexOf(requestedTransferFormat) >= 0) {\r\n if ((transport === HttpTransportType.WebSockets && !this._options.WebSocket) ||\r\n (transport === HttpTransportType.ServerSentEvents && !this._options.EventSource)) {\r\n this._logger.log(LogLevel.Debug, `Skipping transport '${HttpTransportType[transport]}' because it is not supported in your environment.'`);\r\n return new UnsupportedTransportError(`'${HttpTransportType[transport]}' is not supported in your environment.`, transport);\r\n } else {\r\n this._logger.log(LogLevel.Debug, `Selecting transport '${HttpTransportType[transport]}'.`);\r\n try {\r\n this.features.reconnect = transport === HttpTransportType.WebSockets ? useStatefulReconnect : undefined;\r\n return this._constructTransport(transport);\r\n } catch (ex) {\r\n return ex;\r\n }\r\n }\r\n } else {\r\n this._logger.log(LogLevel.Debug, `Skipping transport '${HttpTransportType[transport]}' because it does not support the requested transfer format '${TransferFormat[requestedTransferFormat]}'.`);\r\n return new Error(`'${HttpTransportType[transport]}' does not support ${TransferFormat[requestedTransferFormat]}.`);\r\n }\r\n } else {\r\n this._logger.log(LogLevel.Debug, `Skipping transport '${HttpTransportType[transport]}' because it was disabled by the client.`);\r\n return new DisabledTransportError(`'${HttpTransportType[transport]}' is disabled by the client.`, transport);\r\n }\r\n }\r\n }\r\n\r\n private _isITransport(transport: any): transport is ITransport {\r\n return transport && typeof (transport) === \"object\" && \"connect\" in transport;\r\n }\r\n\r\n private _stopConnection(error?: Error): void {\r\n this._logger.log(LogLevel.Debug, `HttpConnection.stopConnection(${error}) called while in state ${this._connectionState}.`);\r\n\r\n this.transport = undefined;\r\n\r\n // If we have a stopError, it takes precedence over the error from the transport\r\n error = this._stopError || error;\r\n this._stopError = undefined;\r\n\r\n if (this._connectionState === ConnectionState.Disconnected) {\r\n this._logger.log(LogLevel.Debug, `Call to HttpConnection.stopConnection(${error}) was ignored because the connection is already in the disconnected state.`);\r\n return;\r\n }\r\n\r\n if (this._connectionState === ConnectionState.Connecting) {\r\n this._logger.log(LogLevel.Warning, `Call to HttpConnection.stopConnection(${error}) was ignored because the connection is still in the connecting state.`);\r\n throw new Error(`HttpConnection.stopConnection(${error}) was called while the connection is still in the connecting state.`);\r\n }\r\n\r\n if (this._connectionState === ConnectionState.Disconnecting) {\r\n // A call to stop() induced this call to stopConnection and needs to be completed.\r\n // Any stop() awaiters will be scheduled to continue after the onclose callback fires.\r\n this._stopPromiseResolver();\r\n }\r\n\r\n if (error) {\r\n this._logger.log(LogLevel.Error, `Connection disconnected with error '${error}'.`);\r\n } else {\r\n this._logger.log(LogLevel.Information, \"Connection disconnected.\");\r\n }\r\n\r\n if (this._sendQueue) {\r\n this._sendQueue.stop().catch((e) => {\r\n this._logger.log(LogLevel.Error, `TransportSendQueue.stop() threw error '${e}'.`);\r\n });\r\n this._sendQueue = undefined;\r\n }\r\n\r\n this.connectionId = undefined;\r\n this._connectionState = ConnectionState.Disconnected;\r\n\r\n if (this._connectionStarted) {\r\n this._connectionStarted = false;\r\n try {\r\n if (this.onclose) {\r\n this.onclose(error);\r\n }\r\n } catch (e) {\r\n this._logger.log(LogLevel.Error, `HttpConnection.onclose(${error}) threw error '${e}'.`);\r\n }\r\n }\r\n }\r\n\r\n private _resolveUrl(url: string): string {\r\n // startsWith is not supported in IE\r\n if (url.lastIndexOf(\"https://\", 0) === 0 || url.lastIndexOf(\"http://\", 0) === 0) {\r\n return url;\r\n }\r\n\r\n if (!Platform.isBrowser) {\r\n throw new Error(`Cannot resolve '${url}'.`);\r\n }\r\n\r\n // Setting the url to the href propery of an anchor tag handles normalization\r\n // for us. There are 3 main cases.\r\n // 1. Relative path normalization e.g \"b\" -> \"http://localhost:5000/a/b\"\r\n // 2. Absolute path normalization e.g \"/a/b\" -> \"http://localhost:5000/a/b\"\r\n // 3. Networkpath reference normalization e.g \"//localhost:5000/a/b\" -> \"http://localhost:5000/a/b\"\r\n const aTag = window.document.createElement(\"a\");\r\n aTag.href = url;\r\n\r\n this._logger.log(LogLevel.Information, `Normalizing '${url}' to '${aTag.href}'.`);\r\n return aTag.href;\r\n }\r\n\r\n private _resolveNegotiateUrl(url: string): string {\r\n const negotiateUrl = new URL(url);\r\n\r\n if (negotiateUrl.pathname.endsWith('/')) {\r\n negotiateUrl.pathname += \"negotiate\";\r\n } else {\r\n negotiateUrl.pathname += \"/negotiate\";\r\n }\r\n const searchParams = new URLSearchParams(negotiateUrl.searchParams);\r\n\r\n if (!searchParams.has(\"negotiateVersion\")) {\r\n searchParams.append(\"negotiateVersion\", this._negotiateVersion.toString());\r\n }\r\n\r\n if (searchParams.has(\"useStatefulReconnect\")) {\r\n if (searchParams.get(\"useStatefulReconnect\") === \"true\") {\r\n this._options._useStatefulReconnect = true;\r\n }\r\n } else if (this._options._useStatefulReconnect === true) {\r\n searchParams.append(\"useStatefulReconnect\", \"true\");\r\n }\r\n\r\n negotiateUrl.search = searchParams.toString();\r\n\r\n return negotiateUrl.toString();\r\n }\r\n}\r\n\r\nfunction transportMatches(requestedTransport: HttpTransportType | undefined, actualTransport: HttpTransportType) {\r\n return !requestedTransport || ((actualTransport & requestedTransport) !== 0);\r\n}\r\n\r\n/** @private */\r\nexport class TransportSendQueue {\r\n private _buffer: any[] = [];\r\n private _sendBufferedData: PromiseSource;\r\n private _executing: boolean = true;\r\n private _transportResult?: PromiseSource;\r\n private _sendLoopPromise: Promise;\r\n\r\n constructor(private readonly _transport: ITransport) {\r\n this._sendBufferedData = new PromiseSource();\r\n this._transportResult = new PromiseSource();\r\n\r\n this._sendLoopPromise = this._sendLoop();\r\n }\r\n\r\n public send(data: string | ArrayBuffer): Promise {\r\n this._bufferData(data);\r\n if (!this._transportResult) {\r\n this._transportResult = new PromiseSource();\r\n }\r\n return this._transportResult.promise;\r\n }\r\n\r\n public stop(): Promise {\r\n this._executing = false;\r\n this._sendBufferedData.resolve();\r\n return this._sendLoopPromise;\r\n }\r\n\r\n private _bufferData(data: string | ArrayBuffer): void {\r\n if (this._buffer.length && typeof(this._buffer[0]) !== typeof(data)) {\r\n throw new Error(`Expected data to be of type ${typeof(this._buffer)} but was of type ${typeof(data)}`);\r\n }\r\n\r\n this._buffer.push(data);\r\n this._sendBufferedData.resolve();\r\n }\r\n\r\n private async _sendLoop(): Promise {\r\n while (true) {\r\n await this._sendBufferedData.promise;\r\n\r\n if (!this._executing) {\r\n if (this._transportResult) {\r\n this._transportResult.reject(\"Connection stopped.\");\r\n }\r\n\r\n break;\r\n }\r\n\r\n this._sendBufferedData = new PromiseSource();\r\n\r\n const transportResult = this._transportResult!;\r\n this._transportResult = undefined;\r\n\r\n const data = typeof(this._buffer[0]) === \"string\" ?\r\n this._buffer.join(\"\") :\r\n TransportSendQueue._concatBuffers(this._buffer);\r\n\r\n this._buffer.length = 0;\r\n\r\n try {\r\n await this._transport.send(data);\r\n transportResult.resolve();\r\n } catch (error) {\r\n transportResult.reject(error);\r\n }\r\n }\r\n }\r\n\r\n private static _concatBuffers(arrayBuffers: ArrayBuffer[]): ArrayBuffer {\r\n const totalLength = arrayBuffers.map((b) => b.byteLength).reduce((a, b) => a + b);\r\n const result = new Uint8Array(totalLength);\r\n let offset = 0;\r\n for (const item of arrayBuffers) {\r\n result.set(new Uint8Array(item), offset);\r\n offset += item.byteLength;\r\n }\r\n\r\n return result.buffer;\r\n }\r\n}\r\n\r\nclass PromiseSource {\r\n private _resolver?: () => void;\r\n private _rejecter!: (reason?: any) => void;\r\n public promise: Promise;\r\n\r\n constructor() {\r\n this.promise = new Promise((resolve, reject) => [this._resolver, this._rejecter] = [resolve, reject]);\r\n }\r\n\r\n public resolve(): void {\r\n this._resolver!();\r\n }\r\n\r\n public reject(reason?: any): void {\r\n this._rejecter!(reason);\r\n }\r\n}\r\n","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n\r\n// Not exported from index\r\n/** @private */\r\nexport class TextMessageFormat {\r\n public static RecordSeparatorCode = 0x1e;\r\n public static RecordSeparator = String.fromCharCode(TextMessageFormat.RecordSeparatorCode);\r\n\r\n public static write(output: string): string {\r\n return `${output}${TextMessageFormat.RecordSeparator}`;\r\n }\r\n\r\n public static parse(input: string): string[] {\r\n if (input[input.length - 1] !== TextMessageFormat.RecordSeparator) {\r\n throw new Error(\"Message is incomplete.\");\r\n }\r\n\r\n const messages = input.split(TextMessageFormat.RecordSeparator);\r\n messages.pop();\r\n return messages;\r\n }\r\n}\r\n","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n\r\nimport { TextMessageFormat } from \"./TextMessageFormat\";\r\nimport { isArrayBuffer } from \"./Utils\";\r\n\r\n/** @private */\r\nexport interface HandshakeRequestMessage {\r\n readonly protocol: string;\r\n readonly version: number;\r\n}\r\n\r\n/** @private */\r\nexport interface HandshakeResponseMessage {\r\n readonly error: string;\r\n readonly minorVersion: number;\r\n}\r\n\r\n/** @private */\r\nexport class HandshakeProtocol {\r\n // Handshake request is always JSON\r\n public writeHandshakeRequest(handshakeRequest: HandshakeRequestMessage): string {\r\n return TextMessageFormat.write(JSON.stringify(handshakeRequest));\r\n }\r\n\r\n public parseHandshakeResponse(data: any): [any, HandshakeResponseMessage] {\r\n let messageData: string;\r\n let remainingData: any;\r\n\r\n if (isArrayBuffer(data)) {\r\n // Format is binary but still need to read JSON text from handshake response\r\n const binaryData = new Uint8Array(data);\r\n const separatorIndex = binaryData.indexOf(TextMessageFormat.RecordSeparatorCode);\r\n if (separatorIndex === -1) {\r\n throw new Error(\"Message is incomplete.\");\r\n }\r\n\r\n // content before separator is handshake response\r\n // optional content after is additional messages\r\n const responseLength = separatorIndex + 1;\r\n messageData = String.fromCharCode.apply(null, Array.prototype.slice.call(binaryData.slice(0, responseLength)));\r\n remainingData = (binaryData.byteLength > responseLength) ? binaryData.slice(responseLength).buffer : null;\r\n } else {\r\n const textData: string = data;\r\n const separatorIndex = textData.indexOf(TextMessageFormat.RecordSeparator);\r\n if (separatorIndex === -1) {\r\n throw new Error(\"Message is incomplete.\");\r\n }\r\n\r\n // content before separator is handshake response\r\n // optional content after is additional messages\r\n const responseLength = separatorIndex + 1;\r\n messageData = textData.substring(0, responseLength);\r\n remainingData = (textData.length > responseLength) ? textData.substring(responseLength) : null;\r\n }\r\n\r\n // At this point we should have just the single handshake message\r\n const messages = TextMessageFormat.parse(messageData);\r\n const response = JSON.parse(messages[0]);\r\n if (response.type) {\r\n throw new Error(\"Expected a handshake response from the server.\");\r\n }\r\n const responseMessage: HandshakeResponseMessage = response;\r\n\r\n // multiple messages could have arrived with handshake\r\n // return additional data to be parsed as usual, or null if all parsed\r\n return [remainingData, responseMessage];\r\n }\r\n}\r\n","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n\r\nimport { ILogger } from \"./ILogger\";\r\nimport { TransferFormat } from \"./ITransport\";\r\n\r\n/** Defines the type of a Hub Message. */\r\nexport enum MessageType {\r\n /** Indicates the message is an Invocation message and implements the {@link @microsoft/signalr.InvocationMessage} interface. */\r\n Invocation = 1,\r\n /** Indicates the message is a StreamItem message and implements the {@link @microsoft/signalr.StreamItemMessage} interface. */\r\n StreamItem = 2,\r\n /** Indicates the message is a Completion message and implements the {@link @microsoft/signalr.CompletionMessage} interface. */\r\n Completion = 3,\r\n /** Indicates the message is a Stream Invocation message and implements the {@link @microsoft/signalr.StreamInvocationMessage} interface. */\r\n StreamInvocation = 4,\r\n /** Indicates the message is a Cancel Invocation message and implements the {@link @microsoft/signalr.CancelInvocationMessage} interface. */\r\n CancelInvocation = 5,\r\n /** Indicates the message is a Ping message and implements the {@link @microsoft/signalr.PingMessage} interface. */\r\n Ping = 6,\r\n /** Indicates the message is a Close message and implements the {@link @microsoft/signalr.CloseMessage} interface. */\r\n Close = 7,\r\n Ack = 8,\r\n Sequence = 9\r\n}\r\n\r\n/** Defines a dictionary of string keys and string values representing headers attached to a Hub message. */\r\nexport interface MessageHeaders {\r\n /** Gets or sets the header with the specified key. */\r\n [key: string]: string;\r\n}\r\n\r\n/** Union type of all known Hub messages. */\r\nexport type HubMessage =\r\n InvocationMessage |\r\n StreamInvocationMessage |\r\n StreamItemMessage |\r\n CompletionMessage |\r\n CancelInvocationMessage |\r\n PingMessage |\r\n CloseMessage |\r\n AckMessage |\r\n SequenceMessage;\r\n\r\n/** Defines properties common to all Hub messages. */\r\nexport interface HubMessageBase {\r\n /** A {@link @microsoft/signalr.MessageType} value indicating the type of this message. */\r\n readonly type: MessageType;\r\n}\r\n\r\n/** Defines properties common to all Hub messages relating to a specific invocation. */\r\nexport interface HubInvocationMessage extends HubMessageBase {\r\n /** A {@link @microsoft/signalr.MessageHeaders} dictionary containing headers attached to the message. */\r\n readonly headers?: MessageHeaders;\r\n /** The ID of the invocation relating to this message.\r\n *\r\n * This is expected to be present for {@link @microsoft/signalr.StreamInvocationMessage} and {@link @microsoft/signalr.CompletionMessage}. It may\r\n * be 'undefined' for an {@link @microsoft/signalr.InvocationMessage} if the sender does not expect a response.\r\n */\r\n readonly invocationId?: string;\r\n}\r\n\r\n/** A hub message representing a non-streaming invocation. */\r\nexport interface InvocationMessage extends HubInvocationMessage {\r\n /** @inheritDoc */\r\n readonly type: MessageType.Invocation;\r\n /** The target method name. */\r\n readonly target: string;\r\n /** The target method arguments. */\r\n readonly arguments: any[];\r\n /** The target methods stream IDs. */\r\n readonly streamIds?: string[];\r\n}\r\n\r\n/** A hub message representing a streaming invocation. */\r\nexport interface StreamInvocationMessage extends HubInvocationMessage {\r\n /** @inheritDoc */\r\n readonly type: MessageType.StreamInvocation;\r\n\r\n /** The invocation ID. */\r\n readonly invocationId: string;\r\n /** The target method name. */\r\n readonly target: string;\r\n /** The target method arguments. */\r\n readonly arguments: any[];\r\n /** The target methods stream IDs. */\r\n readonly streamIds?: string[];\r\n}\r\n\r\n/** A hub message representing a single item produced as part of a result stream. */\r\nexport interface StreamItemMessage extends HubInvocationMessage {\r\n /** @inheritDoc */\r\n readonly type: MessageType.StreamItem;\r\n\r\n /** The invocation ID. */\r\n readonly invocationId: string;\r\n\r\n /** The item produced by the server. */\r\n readonly item?: any;\r\n}\r\n\r\n/** A hub message representing the result of an invocation. */\r\nexport interface CompletionMessage extends HubInvocationMessage {\r\n /** @inheritDoc */\r\n readonly type: MessageType.Completion;\r\n /** The invocation ID. */\r\n readonly invocationId: string;\r\n /** The error produced by the invocation, if any.\r\n *\r\n * Either {@link @microsoft/signalr.CompletionMessage.error} or {@link @microsoft/signalr.CompletionMessage.result} must be defined, but not both.\r\n */\r\n readonly error?: string;\r\n /** The result produced by the invocation, if any.\r\n *\r\n * Either {@link @microsoft/signalr.CompletionMessage.error} or {@link @microsoft/signalr.CompletionMessage.result} must be defined, but not both.\r\n */\r\n readonly result?: any;\r\n}\r\n\r\n/** A hub message indicating that the sender is still active. */\r\nexport interface PingMessage extends HubMessageBase {\r\n /** @inheritDoc */\r\n readonly type: MessageType.Ping;\r\n}\r\n\r\n/** A hub message indicating that the sender is closing the connection.\r\n *\r\n * If {@link @microsoft/signalr.CloseMessage.error} is defined, the sender is closing the connection due to an error.\r\n */\r\nexport interface CloseMessage extends HubMessageBase {\r\n /** @inheritDoc */\r\n readonly type: MessageType.Close;\r\n /** The error that triggered the close, if any.\r\n *\r\n * If this property is undefined, the connection was closed normally and without error.\r\n */\r\n readonly error?: string;\r\n\r\n /** If true, clients with automatic reconnects enabled should attempt to reconnect after receiving the CloseMessage. Otherwise, they should not. */\r\n readonly allowReconnect?: boolean;\r\n}\r\n\r\n/** A hub message sent to request that a streaming invocation be canceled. */\r\nexport interface CancelInvocationMessage extends HubInvocationMessage {\r\n /** @inheritDoc */\r\n readonly type: MessageType.CancelInvocation;\r\n /** The invocation ID. */\r\n readonly invocationId: string;\r\n}\r\n\r\nexport interface AckMessage extends HubMessageBase\r\n{\r\n readonly type: MessageType.Ack;\r\n\r\n readonly sequenceId: number;\r\n}\r\n\r\nexport interface SequenceMessage extends HubMessageBase\r\n{\r\n readonly type: MessageType.Sequence;\r\n\r\n readonly sequenceId: number;\r\n}\r\n\r\n/** A protocol abstraction for communicating with SignalR Hubs. */\r\nexport interface IHubProtocol {\r\n /** The name of the protocol. This is used by SignalR to resolve the protocol between the client and server. */\r\n readonly name: string;\r\n /** The version of the protocol. */\r\n readonly version: number;\r\n /** The {@link @microsoft/signalr.TransferFormat} of the protocol. */\r\n readonly transferFormat: TransferFormat;\r\n\r\n /** Creates an array of {@link @microsoft/signalr.HubMessage} objects from the specified serialized representation.\r\n *\r\n * If {@link @microsoft/signalr.IHubProtocol.transferFormat} is 'Text', the `input` parameter must be a string, otherwise it must be an ArrayBuffer.\r\n *\r\n * @param {string | ArrayBuffer} input A string or ArrayBuffer containing the serialized representation.\r\n * @param {ILogger} logger A logger that will be used to log messages that occur during parsing.\r\n */\r\n parseMessages(input: string | ArrayBuffer, logger: ILogger): HubMessage[];\r\n\r\n /** Writes the specified {@link @microsoft/signalr.HubMessage} to a string or ArrayBuffer and returns it.\r\n *\r\n * If {@link @microsoft/signalr.IHubProtocol.transferFormat} is 'Text', the result of this method will be a string, otherwise it will be an ArrayBuffer.\r\n *\r\n * @param {HubMessage} message The message to write.\r\n * @returns {string | ArrayBuffer} A string or ArrayBuffer containing the serialized representation of the message.\r\n */\r\n writeMessage(message: HubMessage): string | ArrayBuffer;\r\n}","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n\r\nimport { IStreamResult, IStreamSubscriber, ISubscription } from \"./Stream\";\r\nimport { SubjectSubscription } from \"./Utils\";\r\n\r\n/** Stream implementation to stream items to the server. */\r\nexport class Subject implements IStreamResult {\r\n /** @internal */\r\n public observers: IStreamSubscriber[];\r\n\r\n /** @internal */\r\n public cancelCallback?: () => Promise;\r\n\r\n constructor() {\r\n this.observers = [];\r\n }\r\n\r\n public next(item: T): void {\r\n for (const observer of this.observers) {\r\n observer.next(item);\r\n }\r\n }\r\n\r\n public error(err: any): void {\r\n for (const observer of this.observers) {\r\n if (observer.error) {\r\n observer.error(err);\r\n }\r\n }\r\n }\r\n\r\n public complete(): void {\r\n for (const observer of this.observers) {\r\n if (observer.complete) {\r\n observer.complete();\r\n }\r\n }\r\n }\r\n\r\n public subscribe(observer: IStreamSubscriber): ISubscription {\r\n this.observers.push(observer);\r\n return new SubjectSubscription(this, observer);\r\n }\r\n}\r\n","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n\r\nimport { IConnection } from \"./IConnection\";\r\nimport { AckMessage, HubMessage, IHubProtocol, MessageType, SequenceMessage } from \"./IHubProtocol\";\r\nimport { isArrayBuffer } from \"./Utils\";\r\n\r\n/** @private */\r\nexport class MessageBuffer {\r\n private readonly _protocol: IHubProtocol;\r\n private readonly _connection: IConnection;\r\n\r\n private readonly _bufferSize: number = 100_000;\r\n\r\n private _messages: BufferedItem[] = [];\r\n private _totalMessageCount: number = 0;\r\n private _waitForSequenceMessage: boolean = false;\r\n\r\n // Message IDs start at 1 and always increment by 1\r\n private _nextReceivingSequenceId = 1;\r\n private _latestReceivedSequenceId = 0;\r\n private _bufferedByteCount: number = 0;\r\n private _reconnectInProgress: boolean = false;\r\n\r\n private _ackTimerHandle?: any;\r\n\r\n constructor(protocol: IHubProtocol, connection: IConnection, bufferSize: number) {\r\n this._protocol = protocol;\r\n this._connection = connection;\r\n this._bufferSize = bufferSize;\r\n }\r\n\r\n public async _send(message: HubMessage): Promise {\r\n const serializedMessage = this._protocol.writeMessage(message);\r\n\r\n let backpressurePromise: Promise = Promise.resolve();\r\n\r\n // Only count invocation messages. Acks, pings, etc. don't need to be resent on reconnect\r\n if (this._isInvocationMessage(message)) {\r\n this._totalMessageCount++;\r\n let backpressurePromiseResolver: (value: void) => void = () => {};\r\n let backpressurePromiseRejector: (value?: void) => void = () => {};\r\n\r\n if (isArrayBuffer(serializedMessage)) {\r\n this._bufferedByteCount += serializedMessage.byteLength;\r\n } else {\r\n this._bufferedByteCount += serializedMessage.length;\r\n }\r\n\r\n if (this._bufferedByteCount >= this._bufferSize) {\r\n backpressurePromise = new Promise((resolve, reject) => {\r\n backpressurePromiseResolver = resolve;\r\n backpressurePromiseRejector = reject;\r\n });\r\n }\r\n\r\n this._messages.push(new BufferedItem(serializedMessage, this._totalMessageCount,\r\n backpressurePromiseResolver, backpressurePromiseRejector));\r\n }\r\n\r\n try {\r\n // If this is set it means we are reconnecting or resending\r\n // We don't want to send on a disconnected connection\r\n // And we don't want to send if resend is running since that would mean sending\r\n // this message twice\r\n if (!this._reconnectInProgress) {\r\n await this._connection.send(serializedMessage);\r\n }\r\n } catch {\r\n this._disconnected();\r\n }\r\n await backpressurePromise;\r\n }\r\n\r\n public _ack(ackMessage: AckMessage): void {\r\n let newestAckedMessage = -1;\r\n\r\n // Find index of newest message being acked\r\n for (let index = 0; index < this._messages.length; index++) {\r\n const element = this._messages[index];\r\n if (element._id <= ackMessage.sequenceId) {\r\n newestAckedMessage = index;\r\n if (isArrayBuffer(element._message)) {\r\n this._bufferedByteCount -= element._message.byteLength;\r\n } else {\r\n this._bufferedByteCount -= element._message.length;\r\n }\r\n // resolve items that have already been sent and acked\r\n element._resolver();\r\n } else if (this._bufferedByteCount < this._bufferSize) {\r\n // resolve items that now fall under the buffer limit but haven't been acked\r\n element._resolver();\r\n } else {\r\n break;\r\n }\r\n }\r\n\r\n if (newestAckedMessage !== -1) {\r\n // We're removing everything including the message pointed to, so add 1\r\n this._messages = this._messages.slice(newestAckedMessage + 1);\r\n }\r\n }\r\n\r\n public _shouldProcessMessage(message: HubMessage): boolean {\r\n if (this._waitForSequenceMessage) {\r\n if (message.type !== MessageType.Sequence) {\r\n return false;\r\n } else {\r\n this._waitForSequenceMessage = false;\r\n return true;\r\n }\r\n }\r\n\r\n // No special processing for acks, pings, etc.\r\n if (!this._isInvocationMessage(message)) {\r\n return true;\r\n }\r\n\r\n const currentId = this._nextReceivingSequenceId;\r\n this._nextReceivingSequenceId++;\r\n if (currentId <= this._latestReceivedSequenceId) {\r\n if (currentId === this._latestReceivedSequenceId) {\r\n // Should only hit this if we just reconnected and the server is sending\r\n // Messages it has buffered, which would mean it hasn't seen an Ack for these messages\r\n this._ackTimer();\r\n }\r\n // Ignore, this is a duplicate message\r\n return false;\r\n }\r\n\r\n this._latestReceivedSequenceId = currentId;\r\n\r\n // Only start the timer for sending an Ack message when we have a message to ack. This also conveniently solves\r\n // timer throttling by not having a recursive timer, and by starting the timer via a network call (recv)\r\n this._ackTimer();\r\n return true;\r\n }\r\n\r\n public _resetSequence(message: SequenceMessage): void {\r\n if (message.sequenceId > this._nextReceivingSequenceId) {\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\r\n this._connection.stop(new Error(\"Sequence ID greater than amount of messages we've received.\"));\r\n return;\r\n }\r\n\r\n this._nextReceivingSequenceId = message.sequenceId;\r\n }\r\n\r\n public _disconnected(): void {\r\n this._reconnectInProgress = true;\r\n this._waitForSequenceMessage = true;\r\n }\r\n\r\n public async _resend(): Promise {\r\n const sequenceId = this._messages.length !== 0\r\n ? this._messages[0]._id\r\n : this._totalMessageCount + 1;\r\n await this._connection.send(this._protocol.writeMessage({ type: MessageType.Sequence, sequenceId }));\r\n\r\n // Get a local variable to the _messages, just in case messages are acked while resending\r\n // Which would slice the _messages array (which creates a new copy)\r\n const messages = this._messages;\r\n for (const element of messages) {\r\n await this._connection.send(element._message);\r\n }\r\n\r\n this._reconnectInProgress = false;\r\n }\r\n\r\n public _dispose(error?: Error): void {\r\n error ??= new Error(\"Unable to reconnect to server.\")\r\n\r\n // Unblock backpressure if any\r\n for (const element of this._messages) {\r\n element._rejector(error);\r\n }\r\n }\r\n\r\n private _isInvocationMessage(message: HubMessage): boolean {\r\n // There is no way to check if something implements an interface.\r\n // So we individually check the messages in a switch statement.\r\n // To make sure we don't miss any message types we rely on the compiler\r\n // seeing the function returns a value and it will do the\r\n // exhaustive check for us on the switch statement, since we don't use 'case default'\r\n switch (message.type) {\r\n case MessageType.Invocation:\r\n case MessageType.StreamItem:\r\n case MessageType.Completion:\r\n case MessageType.StreamInvocation:\r\n case MessageType.CancelInvocation:\r\n return true;\r\n case MessageType.Close:\r\n case MessageType.Sequence:\r\n case MessageType.Ping:\r\n case MessageType.Ack:\r\n return false;\r\n }\r\n }\r\n\r\n private _ackTimer(): void {\r\n if (this._ackTimerHandle === undefined) {\r\n this._ackTimerHandle = setTimeout(async () => {\r\n try {\r\n if (!this._reconnectInProgress) {\r\n await this._connection.send(this._protocol.writeMessage({ type: MessageType.Ack, sequenceId: this._latestReceivedSequenceId }))\r\n }\r\n // Ignore errors, that means the connection is closed and we don't care about the Ack message anymore.\r\n } catch { }\r\n\r\n clearTimeout(this._ackTimerHandle);\r\n this._ackTimerHandle = undefined;\r\n // 1 second delay so we don't spam Ack messages if there are many messages being received at once.\r\n }, 1000);\r\n }\r\n }\r\n}\r\n\r\nclass BufferedItem {\r\n constructor(message: string | ArrayBuffer, id: number, resolver: (value: void) => void, rejector: (value?: any) => void) {\r\n this._message = message;\r\n this._id = id;\r\n this._resolver = resolver;\r\n this._rejector = rejector;\r\n }\r\n\r\n _message: string | ArrayBuffer;\r\n _id: number;\r\n _resolver: (value: void) => void;\r\n _rejector: (value?: any) => void;\r\n}\r\n","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n\r\nimport { HandshakeProtocol, HandshakeRequestMessage, HandshakeResponseMessage } from \"./HandshakeProtocol\";\r\nimport { IConnection } from \"./IConnection\";\r\nimport { AbortError } from \"./Errors\";\r\nimport { CancelInvocationMessage, CloseMessage, CompletionMessage, IHubProtocol, InvocationMessage, MessageType, StreamInvocationMessage, StreamItemMessage } from \"./IHubProtocol\";\r\nimport { ILogger, LogLevel } from \"./ILogger\";\r\nimport { IRetryPolicy } from \"./IRetryPolicy\";\r\nimport { IStreamResult } from \"./Stream\";\r\nimport { Subject } from \"./Subject\";\r\nimport { Arg, getErrorString, Platform } from \"./Utils\";\r\nimport { MessageBuffer } from \"./MessageBuffer\";\r\n\r\nconst DEFAULT_TIMEOUT_IN_MS: number = 30 * 1000;\r\nconst DEFAULT_PING_INTERVAL_IN_MS: number = 15 * 1000;\r\nconst DEFAULT_STATEFUL_RECONNECT_BUFFER_SIZE = 100_000;\r\n\r\n/** Describes the current state of the {@link HubConnection} to the server. */\r\nexport enum HubConnectionState {\r\n /** The hub connection is disconnected. */\r\n Disconnected = \"Disconnected\",\r\n /** The hub connection is connecting. */\r\n Connecting = \"Connecting\",\r\n /** The hub connection is connected. */\r\n Connected = \"Connected\",\r\n /** The hub connection is disconnecting. */\r\n Disconnecting = \"Disconnecting\",\r\n /** The hub connection is reconnecting. */\r\n Reconnecting = \"Reconnecting\",\r\n}\r\n\r\n/** Represents a connection to a SignalR Hub. */\r\nexport class HubConnection {\r\n private readonly _cachedPingMessage: string | ArrayBuffer;\r\n // Needs to not start with _ for tests\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n private readonly connection: IConnection;\r\n private readonly _logger: ILogger;\r\n private readonly _reconnectPolicy?: IRetryPolicy;\r\n private readonly _statefulReconnectBufferSize: number;\r\n private _protocol: IHubProtocol;\r\n private _handshakeProtocol: HandshakeProtocol;\r\n private _callbacks: { [invocationId: string]: (invocationEvent: StreamItemMessage | CompletionMessage | null, error?: Error) => void };\r\n private _methods: { [name: string]: (((...args: any[]) => void) | ((...args: any[]) => any))[] };\r\n private _invocationId: number;\r\n private _messageBuffer?: MessageBuffer;\r\n\r\n private _closedCallbacks: ((error?: Error) => void)[];\r\n private _reconnectingCallbacks: ((error?: Error) => void)[];\r\n private _reconnectedCallbacks: ((connectionId?: string) => void)[];\r\n\r\n private _receivedHandshakeResponse: boolean;\r\n private _handshakeResolver!: (value?: PromiseLike<{}>) => void;\r\n private _handshakeRejecter!: (reason?: any) => void;\r\n private _stopDuringStartError?: Error;\r\n\r\n private _connectionState: HubConnectionState;\r\n // connectionStarted is tracked independently from connectionState, so we can check if the\r\n // connection ever did successfully transition from connecting to connected before disconnecting.\r\n private _connectionStarted: boolean;\r\n private _startPromise?: Promise;\r\n private _stopPromise?: Promise;\r\n private _nextKeepAlive: number = 0;\r\n\r\n // The type of these a) doesn't matter and b) varies when building in browser and node contexts\r\n // Since we're building the WebPack bundle directly from the TypeScript, this matters (previously\r\n // we built the bundle from the compiled JavaScript).\r\n private _reconnectDelayHandle?: any;\r\n private _timeoutHandle?: any;\r\n private _pingServerHandle?: any;\r\n\r\n private _freezeEventListener = () =>\r\n {\r\n this._logger.log(LogLevel.Warning, \"The page is being frozen, this will likely lead to the connection being closed and messages being lost. For more information see the docs at https://learn.microsoft.com/aspnet/core/signalr/javascript-client#bsleep\");\r\n };\r\n\r\n /** The server timeout in milliseconds.\r\n *\r\n * If this timeout elapses without receiving any messages from the server, the connection will be terminated with an error.\r\n * The default timeout value is 30,000 milliseconds (30 seconds).\r\n */\r\n public serverTimeoutInMilliseconds: number;\r\n\r\n /** Default interval at which to ping the server.\r\n *\r\n * The default value is 15,000 milliseconds (15 seconds).\r\n * Allows the server to detect hard disconnects (like when a client unplugs their computer).\r\n * The ping will happen at most as often as the server pings.\r\n * If the server pings every 5 seconds, a value lower than 5 will ping every 5 seconds.\r\n */\r\n public keepAliveIntervalInMilliseconds: number;\r\n\r\n /** @internal */\r\n // Using a public static factory method means we can have a private constructor and an _internal_\r\n // create method that can be used by HubConnectionBuilder. An \"internal\" constructor would just\r\n // be stripped away and the '.d.ts' file would have no constructor, which is interpreted as a\r\n // public parameter-less constructor.\r\n public static create(\r\n connection: IConnection,\r\n logger: ILogger,\r\n protocol: IHubProtocol,\r\n reconnectPolicy?: IRetryPolicy,\r\n serverTimeoutInMilliseconds?: number,\r\n keepAliveIntervalInMilliseconds?: number,\r\n statefulReconnectBufferSize?: number): HubConnection {\r\n return new HubConnection(connection, logger, protocol, reconnectPolicy,\r\n serverTimeoutInMilliseconds, keepAliveIntervalInMilliseconds, statefulReconnectBufferSize);\r\n }\r\n\r\n private constructor(\r\n connection: IConnection,\r\n logger: ILogger,\r\n protocol: IHubProtocol,\r\n reconnectPolicy?: IRetryPolicy,\r\n serverTimeoutInMilliseconds?: number,\r\n keepAliveIntervalInMilliseconds?: number,\r\n statefulReconnectBufferSize?: number) {\r\n Arg.isRequired(connection, \"connection\");\r\n Arg.isRequired(logger, \"logger\");\r\n Arg.isRequired(protocol, \"protocol\");\r\n\r\n this.serverTimeoutInMilliseconds = serverTimeoutInMilliseconds ?? DEFAULT_TIMEOUT_IN_MS;\r\n this.keepAliveIntervalInMilliseconds = keepAliveIntervalInMilliseconds ?? DEFAULT_PING_INTERVAL_IN_MS;\r\n\r\n this._statefulReconnectBufferSize = statefulReconnectBufferSize ?? DEFAULT_STATEFUL_RECONNECT_BUFFER_SIZE;\r\n\r\n this._logger = logger;\r\n this._protocol = protocol;\r\n this.connection = connection;\r\n this._reconnectPolicy = reconnectPolicy;\r\n this._handshakeProtocol = new HandshakeProtocol();\r\n\r\n this.connection.onreceive = (data: any) => this._processIncomingData(data);\r\n this.connection.onclose = (error?: Error) => this._connectionClosed(error);\r\n\r\n this._callbacks = {};\r\n this._methods = {};\r\n this._closedCallbacks = [];\r\n this._reconnectingCallbacks = [];\r\n this._reconnectedCallbacks = [];\r\n this._invocationId = 0;\r\n this._receivedHandshakeResponse = false;\r\n this._connectionState = HubConnectionState.Disconnected;\r\n this._connectionStarted = false;\r\n\r\n this._cachedPingMessage = this._protocol.writeMessage({ type: MessageType.Ping });\r\n }\r\n\r\n /** Indicates the state of the {@link HubConnection} to the server. */\r\n get state(): HubConnectionState {\r\n return this._connectionState;\r\n }\r\n\r\n /** Represents the connection id of the {@link HubConnection} on the server. The connection id will be null when the connection is either\r\n * in the disconnected state or if the negotiation step was skipped.\r\n */\r\n get connectionId(): string | null {\r\n return this.connection ? (this.connection.connectionId || null) : null;\r\n }\r\n\r\n /** Indicates the url of the {@link HubConnection} to the server. */\r\n get baseUrl(): string {\r\n return this.connection.baseUrl || \"\";\r\n }\r\n\r\n /**\r\n * Sets a new url for the HubConnection. Note that the url can only be changed when the connection is in either the Disconnected or\r\n * Reconnecting states.\r\n * @param {string} url The url to connect to.\r\n */\r\n set baseUrl(url: string) {\r\n if (this._connectionState !== HubConnectionState.Disconnected && this._connectionState !== HubConnectionState.Reconnecting) {\r\n throw new Error(\"The HubConnection must be in the Disconnected or Reconnecting state to change the url.\");\r\n }\r\n\r\n if (!url) {\r\n throw new Error(\"The HubConnection url must be a valid url.\");\r\n }\r\n\r\n this.connection.baseUrl = url;\r\n }\r\n\r\n /** Starts the connection.\r\n *\r\n * @returns {Promise} A Promise that resolves when the connection has been successfully established, or rejects with an error.\r\n */\r\n public start(): Promise {\r\n this._startPromise = this._startWithStateTransitions();\r\n return this._startPromise;\r\n }\r\n\r\n private async _startWithStateTransitions(): Promise {\r\n if (this._connectionState !== HubConnectionState.Disconnected) {\r\n return Promise.reject(new Error(\"Cannot start a HubConnection that is not in the 'Disconnected' state.\"));\r\n }\r\n\r\n this._connectionState = HubConnectionState.Connecting;\r\n this._logger.log(LogLevel.Debug, \"Starting HubConnection.\");\r\n\r\n try {\r\n await this._startInternal();\r\n\r\n if (Platform.isBrowser) {\r\n // Log when the browser freezes the tab so users know why their connection unexpectedly stopped working\r\n window.document.addEventListener(\"freeze\", this._freezeEventListener);\r\n }\r\n\r\n this._connectionState = HubConnectionState.Connected;\r\n this._connectionStarted = true;\r\n this._logger.log(LogLevel.Debug, \"HubConnection connected successfully.\");\r\n } catch (e) {\r\n this._connectionState = HubConnectionState.Disconnected;\r\n this._logger.log(LogLevel.Debug, `HubConnection failed to start successfully because of error '${e}'.`);\r\n return Promise.reject(e);\r\n }\r\n }\r\n\r\n private async _startInternal() {\r\n this._stopDuringStartError = undefined;\r\n this._receivedHandshakeResponse = false;\r\n // Set up the promise before any connection is (re)started otherwise it could race with received messages\r\n const handshakePromise = new Promise((resolve, reject) => {\r\n this._handshakeResolver = resolve;\r\n this._handshakeRejecter = reject;\r\n });\r\n\r\n await this.connection.start(this._protocol.transferFormat);\r\n\r\n try {\r\n let version = this._protocol.version;\r\n if (!this.connection.features.reconnect) {\r\n // Stateful Reconnect starts with HubProtocol version 2, newer clients connecting to older servers will fail to connect due to\r\n // the handshake only supporting version 1, so we will try to send version 1 during the handshake to keep old servers working.\r\n version = 1;\r\n }\r\n\r\n const handshakeRequest: HandshakeRequestMessage = {\r\n protocol: this._protocol.name,\r\n version,\r\n };\r\n\r\n this._logger.log(LogLevel.Debug, \"Sending handshake request.\");\r\n\r\n await this._sendMessage(this._handshakeProtocol.writeHandshakeRequest(handshakeRequest));\r\n\r\n this._logger.log(LogLevel.Information, `Using HubProtocol '${this._protocol.name}'.`);\r\n\r\n // defensively cleanup timeout in case we receive a message from the server before we finish start\r\n this._cleanupTimeout();\r\n this._resetTimeoutPeriod();\r\n this._resetKeepAliveInterval();\r\n\r\n await handshakePromise;\r\n\r\n // It's important to check the stopDuringStartError instead of just relying on the handshakePromise\r\n // being rejected on close, because this continuation can run after both the handshake completed successfully\r\n // and the connection was closed.\r\n if (this._stopDuringStartError) {\r\n // It's important to throw instead of returning a rejected promise, because we don't want to allow any state\r\n // transitions to occur between now and the calling code observing the exceptions. Returning a rejected promise\r\n // will cause the calling continuation to get scheduled to run later.\r\n // eslint-disable-next-line @typescript-eslint/no-throw-literal\r\n throw this._stopDuringStartError;\r\n }\r\n\r\n const useStatefulReconnect = this.connection.features.reconnect || false;\r\n if (useStatefulReconnect) {\r\n this._messageBuffer = new MessageBuffer(this._protocol, this.connection, this._statefulReconnectBufferSize);\r\n this.connection.features.disconnected = this._messageBuffer._disconnected.bind(this._messageBuffer);\r\n this.connection.features.resend = () => {\r\n if (this._messageBuffer) {\r\n return this._messageBuffer._resend();\r\n }\r\n }\r\n }\r\n\r\n if (!this.connection.features.inherentKeepAlive) {\r\n await this._sendMessage(this._cachedPingMessage);\r\n }\r\n } catch (e) {\r\n this._logger.log(LogLevel.Debug, `Hub handshake failed with error '${e}' during start(). Stopping HubConnection.`);\r\n\r\n this._cleanupTimeout();\r\n this._cleanupPingTimer();\r\n\r\n // HttpConnection.stop() should not complete until after the onclose callback is invoked.\r\n // This will transition the HubConnection to the disconnected state before HttpConnection.stop() completes.\r\n await this.connection.stop(e);\r\n throw e;\r\n }\r\n }\r\n\r\n /** Stops the connection.\r\n *\r\n * @returns {Promise} A Promise that resolves when the connection has been successfully terminated, or rejects with an error.\r\n */\r\n public async stop(): Promise {\r\n // Capture the start promise before the connection might be restarted in an onclose callback.\r\n const startPromise = this._startPromise;\r\n this.connection.features.reconnect = false;\r\n\r\n this._stopPromise = this._stopInternal();\r\n await this._stopPromise;\r\n\r\n try {\r\n // Awaiting undefined continues immediately\r\n await startPromise;\r\n } catch (e) {\r\n // This exception is returned to the user as a rejected Promise from the start method.\r\n }\r\n }\r\n\r\n private _stopInternal(error?: Error): Promise {\r\n if (this._connectionState === HubConnectionState.Disconnected) {\r\n this._logger.log(LogLevel.Debug, `Call to HubConnection.stop(${error}) ignored because it is already in the disconnected state.`);\r\n return Promise.resolve();\r\n }\r\n\r\n if (this._connectionState === HubConnectionState.Disconnecting) {\r\n this._logger.log(LogLevel.Debug, `Call to HttpConnection.stop(${error}) ignored because the connection is already in the disconnecting state.`);\r\n return this._stopPromise!;\r\n }\r\n\r\n const state = this._connectionState;\r\n this._connectionState = HubConnectionState.Disconnecting;\r\n\r\n this._logger.log(LogLevel.Debug, \"Stopping HubConnection.\");\r\n\r\n if (this._reconnectDelayHandle) {\r\n // We're in a reconnect delay which means the underlying connection is currently already stopped.\r\n // Just clear the handle to stop the reconnect loop (which no one is waiting on thankfully) and\r\n // fire the onclose callbacks.\r\n this._logger.log(LogLevel.Debug, \"Connection stopped during reconnect delay. Done reconnecting.\");\r\n\r\n clearTimeout(this._reconnectDelayHandle);\r\n this._reconnectDelayHandle = undefined;\r\n\r\n this._completeClose();\r\n return Promise.resolve();\r\n }\r\n\r\n if (state === HubConnectionState.Connected) {\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\r\n this._sendCloseMessage();\r\n }\r\n\r\n this._cleanupTimeout();\r\n this._cleanupPingTimer();\r\n this._stopDuringStartError = error || new AbortError(\"The connection was stopped before the hub handshake could complete.\");\r\n\r\n // HttpConnection.stop() should not complete until after either HttpConnection.start() fails\r\n // or the onclose callback is invoked. The onclose callback will transition the HubConnection\r\n // to the disconnected state if need be before HttpConnection.stop() completes.\r\n return this.connection.stop(error);\r\n }\r\n\r\n private async _sendCloseMessage() {\r\n try {\r\n await this._sendWithProtocol(this._createCloseMessage());\r\n } catch {\r\n // Ignore, this is a best effort attempt to let the server know the client closed gracefully.\r\n }\r\n }\r\n\r\n /** Invokes a streaming hub method on the server using the specified name and arguments.\r\n *\r\n * @typeparam T The type of the items returned by the server.\r\n * @param {string} methodName The name of the server method to invoke.\r\n * @param {any[]} args The arguments used to invoke the server method.\r\n * @returns {IStreamResult} An object that yields results from the server as they are received.\r\n */\r\n public stream(methodName: string, ...args: any[]): IStreamResult {\r\n const [streams, streamIds] = this._replaceStreamingParams(args);\r\n const invocationDescriptor = this._createStreamInvocation(methodName, args, streamIds);\r\n\r\n // eslint-disable-next-line prefer-const\r\n let promiseQueue: Promise;\r\n\r\n const subject = new Subject();\r\n subject.cancelCallback = () => {\r\n const cancelInvocation: CancelInvocationMessage = this._createCancelInvocation(invocationDescriptor.invocationId);\r\n\r\n delete this._callbacks[invocationDescriptor.invocationId];\r\n\r\n return promiseQueue.then(() => {\r\n return this._sendWithProtocol(cancelInvocation);\r\n });\r\n };\r\n\r\n this._callbacks[invocationDescriptor.invocationId] = (invocationEvent: CompletionMessage | StreamItemMessage | null, error?: Error) => {\r\n if (error) {\r\n subject.error(error);\r\n return;\r\n } else if (invocationEvent) {\r\n // invocationEvent will not be null when an error is not passed to the callback\r\n if (invocationEvent.type === MessageType.Completion) {\r\n if (invocationEvent.error) {\r\n subject.error(new Error(invocationEvent.error));\r\n } else {\r\n subject.complete();\r\n }\r\n } else {\r\n subject.next((invocationEvent.item) as T);\r\n }\r\n }\r\n };\r\n\r\n promiseQueue = this._sendWithProtocol(invocationDescriptor)\r\n .catch((e) => {\r\n subject.error(e);\r\n delete this._callbacks[invocationDescriptor.invocationId];\r\n });\r\n\r\n this._launchStreams(streams, promiseQueue);\r\n\r\n return subject;\r\n }\r\n\r\n private _sendMessage(message: any) {\r\n this._resetKeepAliveInterval();\r\n return this.connection.send(message);\r\n }\r\n\r\n /**\r\n * Sends a js object to the server.\r\n * @param message The js object to serialize and send.\r\n */\r\n private _sendWithProtocol(message: any) {\r\n if (this._messageBuffer) {\r\n return this._messageBuffer._send(message);\r\n } else {\r\n return this._sendMessage(this._protocol.writeMessage(message));\r\n }\r\n }\r\n\r\n /** Invokes a hub method on the server using the specified name and arguments. Does not wait for a response from the receiver.\r\n *\r\n * The Promise returned by this method resolves when the client has sent the invocation to the server. The server may still\r\n * be processing the invocation.\r\n *\r\n * @param {string} methodName The name of the server method to invoke.\r\n * @param {any[]} args The arguments used to invoke the server method.\r\n * @returns {Promise} A Promise that resolves when the invocation has been successfully sent, or rejects with an error.\r\n */\r\n public send(methodName: string, ...args: any[]): Promise {\r\n const [streams, streamIds] = this._replaceStreamingParams(args);\r\n const sendPromise = this._sendWithProtocol(this._createInvocation(methodName, args, true, streamIds));\r\n\r\n this._launchStreams(streams, sendPromise);\r\n\r\n return sendPromise;\r\n }\r\n\r\n /** Invokes a hub method on the server using the specified name and arguments.\r\n *\r\n * The Promise returned by this method resolves when the server indicates it has finished invoking the method. When the promise\r\n * resolves, the server has finished invoking the method. If the server method returns a result, it is produced as the result of\r\n * resolving the Promise.\r\n *\r\n * @typeparam T The expected return type.\r\n * @param {string} methodName The name of the server method to invoke.\r\n * @param {any[]} args The arguments used to invoke the server method.\r\n * @returns {Promise} A Promise that resolves with the result of the server method (if any), or rejects with an error.\r\n */\r\n public invoke(methodName: string, ...args: any[]): Promise {\r\n const [streams, streamIds] = this._replaceStreamingParams(args);\r\n const invocationDescriptor = this._createInvocation(methodName, args, false, streamIds);\r\n\r\n const p = new Promise((resolve, reject) => {\r\n // invocationId will always have a value for a non-blocking invocation\r\n this._callbacks[invocationDescriptor.invocationId!] = (invocationEvent: StreamItemMessage | CompletionMessage | null, error?: Error) => {\r\n if (error) {\r\n reject(error);\r\n return;\r\n } else if (invocationEvent) {\r\n // invocationEvent will not be null when an error is not passed to the callback\r\n if (invocationEvent.type === MessageType.Completion) {\r\n if (invocationEvent.error) {\r\n reject(new Error(invocationEvent.error));\r\n } else {\r\n resolve(invocationEvent.result);\r\n }\r\n } else {\r\n reject(new Error(`Unexpected message type: ${invocationEvent.type}`));\r\n }\r\n }\r\n };\r\n\r\n const promiseQueue = this._sendWithProtocol(invocationDescriptor)\r\n .catch((e) => {\r\n reject(e);\r\n // invocationId will always have a value for a non-blocking invocation\r\n delete this._callbacks[invocationDescriptor.invocationId!];\r\n });\r\n\r\n this._launchStreams(streams, promiseQueue);\r\n });\r\n\r\n return p;\r\n }\r\n\r\n /** Registers a handler that will be invoked when the hub method with the specified method name is invoked.\r\n *\r\n * @param {string} methodName The name of the hub method to define.\r\n * @param {Function} newMethod The handler that will be raised when the hub method is invoked.\r\n */\r\n public on(methodName: string, newMethod: (...args: any[]) => any): void\r\n public on(methodName: string, newMethod: (...args: any[]) => void): void {\r\n if (!methodName || !newMethod) {\r\n return;\r\n }\r\n\r\n methodName = methodName.toLowerCase();\r\n if (!this._methods[methodName]) {\r\n this._methods[methodName] = [];\r\n }\r\n\r\n // Preventing adding the same handler multiple times.\r\n if (this._methods[methodName].indexOf(newMethod) !== -1) {\r\n return;\r\n }\r\n\r\n this._methods[methodName].push(newMethod);\r\n }\r\n\r\n /** Removes all handlers for the specified hub method.\r\n *\r\n * @param {string} methodName The name of the method to remove handlers for.\r\n */\r\n public off(methodName: string): void;\r\n\r\n /** Removes the specified handler for the specified hub method.\r\n *\r\n * You must pass the exact same Function instance as was previously passed to {@link @microsoft/signalr.HubConnection.on}. Passing a different instance (even if the function\r\n * body is the same) will not remove the handler.\r\n *\r\n * @param {string} methodName The name of the method to remove handlers for.\r\n * @param {Function} method The handler to remove. This must be the same Function instance as the one passed to {@link @microsoft/signalr.HubConnection.on}.\r\n */\r\n public off(methodName: string, method: (...args: any[]) => void): void;\r\n public off(methodName: string, method?: (...args: any[]) => void): void {\r\n if (!methodName) {\r\n return;\r\n }\r\n\r\n methodName = methodName.toLowerCase();\r\n const handlers = this._methods[methodName];\r\n if (!handlers) {\r\n return;\r\n }\r\n if (method) {\r\n const removeIdx = handlers.indexOf(method);\r\n if (removeIdx !== -1) {\r\n handlers.splice(removeIdx, 1);\r\n if (handlers.length === 0) {\r\n delete this._methods[methodName];\r\n }\r\n }\r\n } else {\r\n delete this._methods[methodName];\r\n }\r\n\r\n }\r\n\r\n /** Registers a handler that will be invoked when the connection is closed.\r\n *\r\n * @param {Function} callback The handler that will be invoked when the connection is closed. Optionally receives a single argument containing the error that caused the connection to close (if any).\r\n */\r\n public onclose(callback: (error?: Error) => void): void {\r\n if (callback) {\r\n this._closedCallbacks.push(callback);\r\n }\r\n }\r\n\r\n /** Registers a handler that will be invoked when the connection starts reconnecting.\r\n *\r\n * @param {Function} callback The handler that will be invoked when the connection starts reconnecting. Optionally receives a single argument containing the error that caused the connection to start reconnecting (if any).\r\n */\r\n public onreconnecting(callback: (error?: Error) => void): void {\r\n if (callback) {\r\n this._reconnectingCallbacks.push(callback);\r\n }\r\n }\r\n\r\n /** Registers a handler that will be invoked when the connection successfully reconnects.\r\n *\r\n * @param {Function} callback The handler that will be invoked when the connection successfully reconnects.\r\n */\r\n public onreconnected(callback: (connectionId?: string) => void): void {\r\n if (callback) {\r\n this._reconnectedCallbacks.push(callback);\r\n }\r\n }\r\n\r\n private _processIncomingData(data: any) {\r\n this._cleanupTimeout();\r\n\r\n if (!this._receivedHandshakeResponse) {\r\n data = this._processHandshakeResponse(data);\r\n this._receivedHandshakeResponse = true;\r\n }\r\n\r\n // Data may have all been read when processing handshake response\r\n if (data) {\r\n // Parse the messages\r\n const messages = this._protocol.parseMessages(data, this._logger);\r\n\r\n for (const message of messages) {\r\n if (this._messageBuffer && !this._messageBuffer._shouldProcessMessage(message)) {\r\n // Don't process the message, we are either waiting for a SequenceMessage or received a duplicate message\r\n continue;\r\n }\r\n\r\n switch (message.type) {\r\n case MessageType.Invocation:\r\n this._invokeClientMethod(message)\r\n .catch((e) => {\r\n this._logger.log(LogLevel.Error, `Invoke client method threw error: ${getErrorString(e)}`)\r\n });\r\n break;\r\n case MessageType.StreamItem:\r\n case MessageType.Completion: {\r\n const callback = this._callbacks[message.invocationId];\r\n if (callback) {\r\n if (message.type === MessageType.Completion) {\r\n delete this._callbacks[message.invocationId];\r\n }\r\n try {\r\n callback(message);\r\n } catch (e) {\r\n this._logger.log(LogLevel.Error, `Stream callback threw error: ${getErrorString(e)}`);\r\n }\r\n }\r\n break;\r\n }\r\n case MessageType.Ping:\r\n // Don't care about pings\r\n break;\r\n case MessageType.Close: {\r\n this._logger.log(LogLevel.Information, \"Close message received from server.\");\r\n\r\n const error = message.error ? new Error(\"Server returned an error on close: \" + message.error) : undefined;\r\n\r\n if (message.allowReconnect === true) {\r\n // It feels wrong not to await connection.stop() here, but processIncomingData is called as part of an onreceive callback which is not async,\r\n // this is already the behavior for serverTimeout(), and HttpConnection.Stop() should catch and log all possible exceptions.\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\r\n this.connection.stop(error);\r\n } else {\r\n // We cannot await stopInternal() here, but subsequent calls to stop() will await this if stopInternal() is still ongoing.\r\n this._stopPromise = this._stopInternal(error);\r\n }\r\n\r\n break;\r\n }\r\n case MessageType.Ack:\r\n if (this._messageBuffer) {\r\n this._messageBuffer._ack(message);\r\n }\r\n break;\r\n case MessageType.Sequence:\r\n if (this._messageBuffer) {\r\n this._messageBuffer._resetSequence(message);\r\n }\r\n break;\r\n default:\r\n this._logger.log(LogLevel.Warning, `Invalid message type: ${message.type}.`);\r\n break;\r\n }\r\n }\r\n }\r\n\r\n this._resetTimeoutPeriod();\r\n }\r\n\r\n private _processHandshakeResponse(data: any): any {\r\n let responseMessage: HandshakeResponseMessage;\r\n let remainingData: any;\r\n\r\n try {\r\n [remainingData, responseMessage] = this._handshakeProtocol.parseHandshakeResponse(data);\r\n } catch (e) {\r\n const message = \"Error parsing handshake response: \" + e;\r\n this._logger.log(LogLevel.Error, message);\r\n\r\n const error = new Error(message);\r\n this._handshakeRejecter(error);\r\n throw error;\r\n }\r\n if (responseMessage.error) {\r\n const message = \"Server returned handshake error: \" + responseMessage.error;\r\n this._logger.log(LogLevel.Error, message);\r\n\r\n const error = new Error(message);\r\n this._handshakeRejecter(error);\r\n throw error;\r\n } else {\r\n this._logger.log(LogLevel.Debug, \"Server handshake complete.\");\r\n }\r\n\r\n this._handshakeResolver();\r\n return remainingData;\r\n }\r\n\r\n private _resetKeepAliveInterval() {\r\n if (this.connection.features.inherentKeepAlive) {\r\n return;\r\n }\r\n\r\n // Set the time we want the next keep alive to be sent\r\n // Timer will be setup on next message receive\r\n this._nextKeepAlive = new Date().getTime() + this.keepAliveIntervalInMilliseconds;\r\n\r\n this._cleanupPingTimer();\r\n }\r\n\r\n private _resetTimeoutPeriod() {\r\n if (!this.connection.features || !this.connection.features.inherentKeepAlive) {\r\n // Set the timeout timer\r\n this._timeoutHandle = setTimeout(() => this.serverTimeout(), this.serverTimeoutInMilliseconds);\r\n\r\n // Set keepAlive timer if there isn't one\r\n if (this._pingServerHandle === undefined)\r\n {\r\n let nextPing = this._nextKeepAlive - new Date().getTime();\r\n if (nextPing < 0) {\r\n nextPing = 0;\r\n }\r\n\r\n // The timer needs to be set from a networking callback to avoid Chrome timer throttling from causing timers to run once a minute\r\n this._pingServerHandle = setTimeout(async () => {\r\n if (this._connectionState === HubConnectionState.Connected) {\r\n try {\r\n await this._sendMessage(this._cachedPingMessage);\r\n } catch {\r\n // We don't care about the error. It should be seen elsewhere in the client.\r\n // The connection is probably in a bad or closed state now, cleanup the timer so it stops triggering\r\n this._cleanupPingTimer();\r\n }\r\n }\r\n }, nextPing);\r\n }\r\n }\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n private serverTimeout() {\r\n // The server hasn't talked to us in a while. It doesn't like us anymore ... :(\r\n // Terminate the connection, but we don't need to wait on the promise. This could trigger reconnecting.\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\r\n this.connection.stop(new Error(\"Server timeout elapsed without receiving a message from the server.\"));\r\n }\r\n\r\n private async _invokeClientMethod(invocationMessage: InvocationMessage) {\r\n const methodName = invocationMessage.target.toLowerCase();\r\n const methods = this._methods[methodName];\r\n if (!methods) {\r\n this._logger.log(LogLevel.Warning, `No client method with the name '${methodName}' found.`);\r\n\r\n // No handlers provided by client but the server is expecting a response still, so we send an error\r\n if (invocationMessage.invocationId) {\r\n this._logger.log(LogLevel.Warning, `No result given for '${methodName}' method and invocation ID '${invocationMessage.invocationId}'.`);\r\n await this._sendWithProtocol(this._createCompletionMessage(invocationMessage.invocationId, \"Client didn't provide a result.\", null));\r\n }\r\n return;\r\n }\r\n\r\n // Avoid issues with handlers removing themselves thus modifying the list while iterating through it\r\n const methodsCopy = methods.slice();\r\n\r\n // Server expects a response\r\n const expectsResponse = invocationMessage.invocationId ? true : false;\r\n // We preserve the last result or exception but still call all handlers\r\n let res;\r\n let exception;\r\n let completionMessage;\r\n for (const m of methodsCopy) {\r\n try {\r\n const prevRes = res;\r\n res = await m.apply(this, invocationMessage.arguments);\r\n if (expectsResponse && res && prevRes) {\r\n this._logger.log(LogLevel.Error, `Multiple results provided for '${methodName}'. Sending error to server.`);\r\n completionMessage = this._createCompletionMessage(invocationMessage.invocationId!, `Client provided multiple results.`, null);\r\n }\r\n // Ignore exception if we got a result after, the exception will be logged\r\n exception = undefined;\r\n } catch (e) {\r\n exception = e;\r\n this._logger.log(LogLevel.Error, `A callback for the method '${methodName}' threw error '${e}'.`);\r\n }\r\n }\r\n if (completionMessage) {\r\n await this._sendWithProtocol(completionMessage);\r\n } else if (expectsResponse) {\r\n // If there is an exception that means either no result was given or a handler after a result threw\r\n if (exception) {\r\n completionMessage = this._createCompletionMessage(invocationMessage.invocationId!, `${exception}`, null);\r\n } else if (res !== undefined) {\r\n completionMessage = this._createCompletionMessage(invocationMessage.invocationId!, null, res);\r\n } else {\r\n this._logger.log(LogLevel.Warning, `No result given for '${methodName}' method and invocation ID '${invocationMessage.invocationId}'.`);\r\n // Client didn't provide a result or throw from a handler, server expects a response so we send an error\r\n completionMessage = this._createCompletionMessage(invocationMessage.invocationId!, \"Client didn't provide a result.\", null);\r\n }\r\n await this._sendWithProtocol(completionMessage);\r\n } else {\r\n if (res) {\r\n this._logger.log(LogLevel.Error, `Result given for '${methodName}' method but server is not expecting a result.`);\r\n }\r\n }\r\n }\r\n\r\n private _connectionClosed(error?: Error) {\r\n this._logger.log(LogLevel.Debug, `HubConnection.connectionClosed(${error}) called while in state ${this._connectionState}.`);\r\n\r\n // Triggering this.handshakeRejecter is insufficient because it could already be resolved without the continuation having run yet.\r\n this._stopDuringStartError = this._stopDuringStartError || error || new AbortError(\"The underlying connection was closed before the hub handshake could complete.\");\r\n\r\n // If the handshake is in progress, start will be waiting for the handshake promise, so we complete it.\r\n // If it has already completed, this should just noop.\r\n if (this._handshakeResolver) {\r\n this._handshakeResolver();\r\n }\r\n\r\n this._cancelCallbacksWithError(error || new Error(\"Invocation canceled due to the underlying connection being closed.\"));\r\n\r\n this._cleanupTimeout();\r\n this._cleanupPingTimer();\r\n\r\n if (this._connectionState === HubConnectionState.Disconnecting) {\r\n this._completeClose(error);\r\n } else if (this._connectionState === HubConnectionState.Connected && this._reconnectPolicy) {\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\r\n this._reconnect(error);\r\n } else if (this._connectionState === HubConnectionState.Connected) {\r\n this._completeClose(error);\r\n }\r\n\r\n // If none of the above if conditions were true were called the HubConnection must be in either:\r\n // 1. The Connecting state in which case the handshakeResolver will complete it and stopDuringStartError will fail it.\r\n // 2. The Reconnecting state in which case the handshakeResolver will complete it and stopDuringStartError will fail the current reconnect attempt\r\n // and potentially continue the reconnect() loop.\r\n // 3. The Disconnected state in which case we're already done.\r\n }\r\n\r\n private _completeClose(error?: Error) {\r\n if (this._connectionStarted) {\r\n this._connectionState = HubConnectionState.Disconnected;\r\n this._connectionStarted = false;\r\n if (this._messageBuffer) {\r\n this._messageBuffer._dispose(error ?? new Error(\"Connection closed.\"));\r\n this._messageBuffer = undefined;\r\n }\r\n\r\n if (Platform.isBrowser) {\r\n window.document.removeEventListener(\"freeze\", this._freezeEventListener);\r\n }\r\n\r\n try {\r\n this._closedCallbacks.forEach((c) => c.apply(this, [error]));\r\n } catch (e) {\r\n this._logger.log(LogLevel.Error, `An onclose callback called with error '${error}' threw error '${e}'.`);\r\n }\r\n }\r\n }\r\n\r\n private async _reconnect(error?: Error) {\r\n const reconnectStartTime = Date.now();\r\n let previousReconnectAttempts = 0;\r\n let retryError = error !== undefined ? error : new Error(\"Attempting to reconnect due to a unknown error.\");\r\n\r\n let nextRetryDelay = this._getNextRetryDelay(previousReconnectAttempts++, 0, retryError);\r\n\r\n if (nextRetryDelay === null) {\r\n this._logger.log(LogLevel.Debug, \"Connection not reconnecting because the IRetryPolicy returned null on the first reconnect attempt.\");\r\n this._completeClose(error);\r\n return;\r\n }\r\n\r\n this._connectionState = HubConnectionState.Reconnecting;\r\n\r\n if (error) {\r\n this._logger.log(LogLevel.Information, `Connection reconnecting because of error '${error}'.`);\r\n } else {\r\n this._logger.log(LogLevel.Information, \"Connection reconnecting.\");\r\n }\r\n\r\n if (this._reconnectingCallbacks.length !== 0) {\r\n try {\r\n this._reconnectingCallbacks.forEach((c) => c.apply(this, [error]));\r\n } catch (e) {\r\n this._logger.log(LogLevel.Error, `An onreconnecting callback called with error '${error}' threw error '${e}'.`);\r\n }\r\n\r\n // Exit early if an onreconnecting callback called connection.stop().\r\n if (this._connectionState !== HubConnectionState.Reconnecting) {\r\n this._logger.log(LogLevel.Debug, \"Connection left the reconnecting state in onreconnecting callback. Done reconnecting.\");\r\n return;\r\n }\r\n }\r\n\r\n while (nextRetryDelay !== null) {\r\n this._logger.log(LogLevel.Information, `Reconnect attempt number ${previousReconnectAttempts} will start in ${nextRetryDelay} ms.`);\r\n\r\n await new Promise((resolve) => {\r\n this._reconnectDelayHandle = setTimeout(resolve, nextRetryDelay!);\r\n });\r\n this._reconnectDelayHandle = undefined;\r\n\r\n if (this._connectionState !== HubConnectionState.Reconnecting) {\r\n this._logger.log(LogLevel.Debug, \"Connection left the reconnecting state during reconnect delay. Done reconnecting.\");\r\n return;\r\n }\r\n\r\n try {\r\n await this._startInternal();\r\n\r\n this._connectionState = HubConnectionState.Connected;\r\n this._logger.log(LogLevel.Information, \"HubConnection reconnected successfully.\");\r\n\r\n if (this._reconnectedCallbacks.length !== 0) {\r\n try {\r\n this._reconnectedCallbacks.forEach((c) => c.apply(this, [this.connection.connectionId]));\r\n } catch (e) {\r\n this._logger.log(LogLevel.Error, `An onreconnected callback called with connectionId '${this.connection.connectionId}; threw error '${e}'.`);\r\n }\r\n }\r\n\r\n return;\r\n } catch (e) {\r\n this._logger.log(LogLevel.Information, `Reconnect attempt failed because of error '${e}'.`);\r\n\r\n if (this._connectionState !== HubConnectionState.Reconnecting) {\r\n this._logger.log(LogLevel.Debug, `Connection moved to the '${this._connectionState}' from the reconnecting state during reconnect attempt. Done reconnecting.`);\r\n // The TypeScript compiler thinks that connectionState must be Connected here. The TypeScript compiler is wrong.\r\n if (this._connectionState as any === HubConnectionState.Disconnecting) {\r\n this._completeClose();\r\n }\r\n return;\r\n }\r\n\r\n retryError = e instanceof Error ? e : new Error((e as any).toString());\r\n nextRetryDelay = this._getNextRetryDelay(previousReconnectAttempts++, Date.now() - reconnectStartTime, retryError);\r\n }\r\n }\r\n\r\n this._logger.log(LogLevel.Information, `Reconnect retries have been exhausted after ${Date.now() - reconnectStartTime} ms and ${previousReconnectAttempts} failed attempts. Connection disconnecting.`);\r\n\r\n this._completeClose();\r\n }\r\n\r\n private _getNextRetryDelay(previousRetryCount: number, elapsedMilliseconds: number, retryReason: Error) {\r\n try {\r\n return this._reconnectPolicy!.nextRetryDelayInMilliseconds({\r\n elapsedMilliseconds,\r\n previousRetryCount,\r\n retryReason,\r\n });\r\n } catch (e) {\r\n this._logger.log(LogLevel.Error, `IRetryPolicy.nextRetryDelayInMilliseconds(${previousRetryCount}, ${elapsedMilliseconds}) threw error '${e}'.`);\r\n return null;\r\n }\r\n }\r\n\r\n private _cancelCallbacksWithError(error: Error) {\r\n const callbacks = this._callbacks;\r\n this._callbacks = {};\r\n\r\n Object.keys(callbacks)\r\n .forEach((key) => {\r\n const callback = callbacks[key];\r\n try {\r\n callback(null, error);\r\n } catch (e) {\r\n this._logger.log(LogLevel.Error, `Stream 'error' callback called with '${error}' threw error: ${getErrorString(e)}`);\r\n }\r\n });\r\n }\r\n\r\n private _cleanupPingTimer(): void {\r\n if (this._pingServerHandle) {\r\n clearTimeout(this._pingServerHandle);\r\n this._pingServerHandle = undefined;\r\n }\r\n }\r\n\r\n private _cleanupTimeout(): void {\r\n if (this._timeoutHandle) {\r\n clearTimeout(this._timeoutHandle);\r\n }\r\n }\r\n\r\n private _createInvocation(methodName: string, args: any[], nonblocking: boolean, streamIds: string[]): InvocationMessage {\r\n if (nonblocking) {\r\n if (streamIds.length !== 0) {\r\n return {\r\n arguments: args,\r\n streamIds,\r\n target: methodName,\r\n type: MessageType.Invocation,\r\n };\r\n } else {\r\n return {\r\n arguments: args,\r\n target: methodName,\r\n type: MessageType.Invocation,\r\n };\r\n }\r\n } else {\r\n const invocationId = this._invocationId;\r\n this._invocationId++;\r\n\r\n if (streamIds.length !== 0) {\r\n return {\r\n arguments: args,\r\n invocationId: invocationId.toString(),\r\n streamIds,\r\n target: methodName,\r\n type: MessageType.Invocation,\r\n };\r\n } else {\r\n return {\r\n arguments: args,\r\n invocationId: invocationId.toString(),\r\n target: methodName,\r\n type: MessageType.Invocation,\r\n };\r\n }\r\n }\r\n }\r\n\r\n private _launchStreams(streams: IStreamResult[], promiseQueue: Promise): void {\r\n if (streams.length === 0) {\r\n return;\r\n }\r\n\r\n // Synchronize stream data so they arrive in-order on the server\r\n if (!promiseQueue) {\r\n promiseQueue = Promise.resolve();\r\n }\r\n\r\n // We want to iterate over the keys, since the keys are the stream ids\r\n // eslint-disable-next-line guard-for-in\r\n for (const streamId in streams) {\r\n streams[streamId].subscribe({\r\n complete: () => {\r\n promiseQueue = promiseQueue.then(() => this._sendWithProtocol(this._createCompletionMessage(streamId)));\r\n },\r\n error: (err) => {\r\n let message: string;\r\n if (err instanceof Error) {\r\n message = err.message;\r\n } else if (err && err.toString) {\r\n message = err.toString();\r\n } else {\r\n message = \"Unknown error\";\r\n }\r\n\r\n promiseQueue = promiseQueue.then(() => this._sendWithProtocol(this._createCompletionMessage(streamId, message)));\r\n },\r\n next: (item) => {\r\n promiseQueue = promiseQueue.then(() => this._sendWithProtocol(this._createStreamItemMessage(streamId, item)));\r\n },\r\n });\r\n }\r\n }\r\n\r\n private _replaceStreamingParams(args: any[]): [IStreamResult[], string[]] {\r\n const streams: IStreamResult[] = [];\r\n const streamIds: string[] = [];\r\n for (let i = 0; i < args.length; i++) {\r\n const argument = args[i];\r\n if (this._isObservable(argument)) {\r\n const streamId = this._invocationId;\r\n this._invocationId++;\r\n // Store the stream for later use\r\n streams[streamId] = argument;\r\n streamIds.push(streamId.toString());\r\n\r\n // remove stream from args\r\n args.splice(i, 1);\r\n }\r\n }\r\n\r\n return [streams, streamIds];\r\n }\r\n\r\n private _isObservable(arg: any): arg is IStreamResult {\r\n // This allows other stream implementations to just work (like rxjs)\r\n return arg && arg.subscribe && typeof arg.subscribe === \"function\";\r\n }\r\n\r\n private _createStreamInvocation(methodName: string, args: any[], streamIds: string[]): StreamInvocationMessage {\r\n const invocationId = this._invocationId;\r\n this._invocationId++;\r\n\r\n if (streamIds.length !== 0) {\r\n return {\r\n arguments: args,\r\n invocationId: invocationId.toString(),\r\n streamIds,\r\n target: methodName,\r\n type: MessageType.StreamInvocation,\r\n };\r\n } else {\r\n return {\r\n arguments: args,\r\n invocationId: invocationId.toString(),\r\n target: methodName,\r\n type: MessageType.StreamInvocation,\r\n };\r\n }\r\n }\r\n\r\n private _createCancelInvocation(id: string): CancelInvocationMessage {\r\n return {\r\n invocationId: id,\r\n type: MessageType.CancelInvocation,\r\n };\r\n }\r\n\r\n private _createStreamItemMessage(id: string, item: any): StreamItemMessage {\r\n return {\r\n invocationId: id,\r\n item,\r\n type: MessageType.StreamItem,\r\n };\r\n }\r\n\r\n private _createCompletionMessage(id: string, error?: any, result?: any): CompletionMessage {\r\n if (error) {\r\n return {\r\n error,\r\n invocationId: id,\r\n type: MessageType.Completion,\r\n };\r\n }\r\n\r\n return {\r\n invocationId: id,\r\n result,\r\n type: MessageType.Completion,\r\n };\r\n }\r\n\r\n private _createCloseMessage(): CloseMessage {\r\n return { type: MessageType.Close };\r\n }\r\n}\r\n","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n\r\nimport { AckMessage, CompletionMessage, HubMessage, IHubProtocol, InvocationMessage, MessageType, SequenceMessage, StreamItemMessage } from \"./IHubProtocol\";\r\nimport { ILogger, LogLevel } from \"./ILogger\";\r\nimport { TransferFormat } from \"./ITransport\";\r\nimport { NullLogger } from \"./Loggers\";\r\nimport { TextMessageFormat } from \"./TextMessageFormat\";\r\n\r\nconst JSON_HUB_PROTOCOL_NAME: string = \"json\";\r\n\r\n/** Implements the JSON Hub Protocol. */\r\nexport class JsonHubProtocol implements IHubProtocol {\r\n\r\n /** @inheritDoc */\r\n public readonly name: string = JSON_HUB_PROTOCOL_NAME;\r\n /** @inheritDoc */\r\n public readonly version: number = 2;\r\n\r\n /** @inheritDoc */\r\n public readonly transferFormat: TransferFormat = TransferFormat.Text;\r\n\r\n /** Creates an array of {@link @microsoft/signalr.HubMessage} objects from the specified serialized representation.\r\n *\r\n * @param {string} input A string containing the serialized representation.\r\n * @param {ILogger} logger A logger that will be used to log messages that occur during parsing.\r\n */\r\n public parseMessages(input: string, logger: ILogger): HubMessage[] {\r\n // The interface does allow \"ArrayBuffer\" to be passed in, but this implementation does not. So let's throw a useful error.\r\n if (typeof input !== \"string\") {\r\n throw new Error(\"Invalid input for JSON hub protocol. Expected a string.\");\r\n }\r\n\r\n if (!input) {\r\n return [];\r\n }\r\n\r\n if (logger === null) {\r\n logger = NullLogger.instance;\r\n }\r\n\r\n // Parse the messages\r\n const messages = TextMessageFormat.parse(input);\r\n\r\n const hubMessages = [];\r\n for (const message of messages) {\r\n const parsedMessage = JSON.parse(message) as HubMessage;\r\n if (typeof parsedMessage.type !== \"number\") {\r\n throw new Error(\"Invalid payload.\");\r\n }\r\n switch (parsedMessage.type) {\r\n case MessageType.Invocation:\r\n this._isInvocationMessage(parsedMessage);\r\n break;\r\n case MessageType.StreamItem:\r\n this._isStreamItemMessage(parsedMessage);\r\n break;\r\n case MessageType.Completion:\r\n this._isCompletionMessage(parsedMessage);\r\n break;\r\n case MessageType.Ping:\r\n // Single value, no need to validate\r\n break;\r\n case MessageType.Close:\r\n // All optional values, no need to validate\r\n break;\r\n case MessageType.Ack:\r\n this._isAckMessage(parsedMessage);\r\n break;\r\n case MessageType.Sequence:\r\n this._isSequenceMessage(parsedMessage);\r\n break;\r\n default:\r\n // Future protocol changes can add message types, old clients can ignore them\r\n logger.log(LogLevel.Information, \"Unknown message type '\" + parsedMessage.type + \"' ignored.\");\r\n continue;\r\n }\r\n hubMessages.push(parsedMessage);\r\n }\r\n\r\n return hubMessages;\r\n }\r\n\r\n /** Writes the specified {@link @microsoft/signalr.HubMessage} to a string and returns it.\r\n *\r\n * @param {HubMessage} message The message to write.\r\n * @returns {string} A string containing the serialized representation of the message.\r\n */\r\n public writeMessage(message: HubMessage): string {\r\n return TextMessageFormat.write(JSON.stringify(message));\r\n }\r\n\r\n private _isInvocationMessage(message: InvocationMessage): void {\r\n this._assertNotEmptyString(message.target, \"Invalid payload for Invocation message.\");\r\n\r\n if (message.invocationId !== undefined) {\r\n this._assertNotEmptyString(message.invocationId, \"Invalid payload for Invocation message.\");\r\n }\r\n }\r\n\r\n private _isStreamItemMessage(message: StreamItemMessage): void {\r\n this._assertNotEmptyString(message.invocationId, \"Invalid payload for StreamItem message.\");\r\n\r\n if (message.item === undefined) {\r\n throw new Error(\"Invalid payload for StreamItem message.\");\r\n }\r\n }\r\n\r\n private _isCompletionMessage(message: CompletionMessage): void {\r\n if (message.result && message.error) {\r\n throw new Error(\"Invalid payload for Completion message.\");\r\n }\r\n\r\n if (!message.result && message.error) {\r\n this._assertNotEmptyString(message.error, \"Invalid payload for Completion message.\");\r\n }\r\n\r\n this._assertNotEmptyString(message.invocationId, \"Invalid payload for Completion message.\");\r\n }\r\n\r\n private _isAckMessage(message: AckMessage): void {\r\n if (typeof message.sequenceId !== 'number') {\r\n throw new Error(\"Invalid SequenceId for Ack message.\");\r\n }\r\n }\r\n\r\n private _isSequenceMessage(message: SequenceMessage): void {\r\n if (typeof message.sequenceId !== 'number') {\r\n throw new Error(\"Invalid SequenceId for Sequence message.\");\r\n }\r\n }\r\n\r\n private _assertNotEmptyString(value: any, errorMessage: string): void {\r\n if (typeof value !== \"string\" || value === \"\") {\r\n throw new Error(errorMessage);\r\n }\r\n }\r\n}\r\n","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n\r\nimport { DefaultReconnectPolicy } from \"./DefaultReconnectPolicy\";\r\nimport { HttpConnection } from \"./HttpConnection\";\r\nimport { HubConnection } from \"./HubConnection\";\r\nimport { IHttpConnectionOptions } from \"./IHttpConnectionOptions\";\r\nimport { IHubProtocol } from \"./IHubProtocol\";\r\nimport { ILogger, LogLevel } from \"./ILogger\";\r\nimport { IRetryPolicy } from \"./IRetryPolicy\";\r\nimport { IStatefulReconnectOptions } from \"./IStatefulReconnectOptions\";\r\nimport { HttpTransportType } from \"./ITransport\";\r\nimport { JsonHubProtocol } from \"./JsonHubProtocol\";\r\nimport { NullLogger } from \"./Loggers\";\r\nimport { Arg, ConsoleLogger } from \"./Utils\";\r\n\r\nconst LogLevelNameMapping: {[k: string]: LogLevel} = {\r\n trace: LogLevel.Trace,\r\n debug: LogLevel.Debug,\r\n info: LogLevel.Information,\r\n information: LogLevel.Information,\r\n warn: LogLevel.Warning,\r\n warning: LogLevel.Warning,\r\n error: LogLevel.Error,\r\n critical: LogLevel.Critical,\r\n none: LogLevel.None,\r\n};\r\n\r\nfunction parseLogLevel(name: string): LogLevel {\r\n // Case-insensitive matching via lower-casing\r\n // Yes, I know case-folding is a complicated problem in Unicode, but we only support\r\n // the ASCII strings defined in LogLevelNameMapping anyway, so it's fine -anurse.\r\n const mapping = LogLevelNameMapping[name.toLowerCase()];\r\n if (typeof mapping !== \"undefined\") {\r\n return mapping;\r\n } else {\r\n throw new Error(`Unknown log level: ${name}`);\r\n }\r\n}\r\n\r\n/** A builder for configuring {@link @microsoft/signalr.HubConnection} instances. */\r\nexport class HubConnectionBuilder {\r\n private _serverTimeoutInMilliseconds?: number;\r\n private _keepAliveIntervalInMilliseconds ?: number;\r\n\r\n /** @internal */\r\n public protocol?: IHubProtocol;\r\n /** @internal */\r\n public httpConnectionOptions?: IHttpConnectionOptions;\r\n /** @internal */\r\n public url?: string;\r\n /** @internal */\r\n public logger?: ILogger;\r\n\r\n /** If defined, this indicates the client should automatically attempt to reconnect if the connection is lost. */\r\n /** @internal */\r\n public reconnectPolicy?: IRetryPolicy;\r\n\r\n private _statefulReconnectBufferSize?: number;\r\n\r\n /** Configures console logging for the {@link @microsoft/signalr.HubConnection}.\r\n *\r\n * @param {LogLevel} logLevel The minimum level of messages to log. Anything at this level, or a more severe level, will be logged.\r\n * @returns The {@link @microsoft/signalr.HubConnectionBuilder} instance, for chaining.\r\n */\r\n public configureLogging(logLevel: LogLevel): HubConnectionBuilder;\r\n\r\n /** Configures custom logging for the {@link @microsoft/signalr.HubConnection}.\r\n *\r\n * @param {ILogger} logger An object implementing the {@link @microsoft/signalr.ILogger} interface, which will be used to write all log messages.\r\n * @returns The {@link @microsoft/signalr.HubConnectionBuilder} instance, for chaining.\r\n */\r\n public configureLogging(logger: ILogger): HubConnectionBuilder;\r\n\r\n /** Configures custom logging for the {@link @microsoft/signalr.HubConnection}.\r\n *\r\n * @param {string} logLevel A string representing a LogLevel setting a minimum level of messages to log.\r\n * See {@link https://learn.microsoft.com/aspnet/core/signalr/configuration#configure-logging|the documentation for client logging configuration} for more details.\r\n */\r\n public configureLogging(logLevel: string): HubConnectionBuilder;\r\n\r\n /** Configures custom logging for the {@link @microsoft/signalr.HubConnection}.\r\n *\r\n * @param {LogLevel | string | ILogger} logging A {@link @microsoft/signalr.LogLevel}, a string representing a LogLevel, or an object implementing the {@link @microsoft/signalr.ILogger} interface.\r\n * See {@link https://learn.microsoft.com/aspnet/core/signalr/configuration#configure-logging|the documentation for client logging configuration} for more details.\r\n * @returns The {@link @microsoft/signalr.HubConnectionBuilder} instance, for chaining.\r\n */\r\n public configureLogging(logging: LogLevel | string | ILogger): HubConnectionBuilder;\r\n public configureLogging(logging: LogLevel | string | ILogger): HubConnectionBuilder {\r\n Arg.isRequired(logging, \"logging\");\r\n\r\n if (isLogger(logging)) {\r\n this.logger = logging;\r\n } else if (typeof logging === \"string\") {\r\n const logLevel = parseLogLevel(logging);\r\n this.logger = new ConsoleLogger(logLevel);\r\n } else {\r\n this.logger = new ConsoleLogger(logging);\r\n }\r\n\r\n return this;\r\n }\r\n\r\n /** Configures the {@link @microsoft/signalr.HubConnection} to use HTTP-based transports to connect to the specified URL.\r\n *\r\n * The transport will be selected automatically based on what the server and client support.\r\n *\r\n * @param {string} url The URL the connection will use.\r\n * @returns The {@link @microsoft/signalr.HubConnectionBuilder} instance, for chaining.\r\n */\r\n public withUrl(url: string): HubConnectionBuilder;\r\n\r\n /** Configures the {@link @microsoft/signalr.HubConnection} to use the specified HTTP-based transport to connect to the specified URL.\r\n *\r\n * @param {string} url The URL the connection will use.\r\n * @param {HttpTransportType} transportType The specific transport to use.\r\n * @returns The {@link @microsoft/signalr.HubConnectionBuilder} instance, for chaining.\r\n */\r\n public withUrl(url: string, transportType: HttpTransportType): HubConnectionBuilder;\r\n\r\n /** Configures the {@link @microsoft/signalr.HubConnection} to use HTTP-based transports to connect to the specified URL.\r\n *\r\n * @param {string} url The URL the connection will use.\r\n * @param {IHttpConnectionOptions} options An options object used to configure the connection.\r\n * @returns The {@link @microsoft/signalr.HubConnectionBuilder} instance, for chaining.\r\n */\r\n public withUrl(url: string, options: IHttpConnectionOptions): HubConnectionBuilder;\r\n public withUrl(url: string, transportTypeOrOptions?: IHttpConnectionOptions | HttpTransportType): HubConnectionBuilder {\r\n Arg.isRequired(url, \"url\");\r\n Arg.isNotEmpty(url, \"url\");\r\n\r\n this.url = url;\r\n\r\n // Flow-typing knows where it's at. Since HttpTransportType is a number and IHttpConnectionOptions is guaranteed\r\n // to be an object, we know (as does TypeScript) this comparison is all we need to figure out which overload was called.\r\n if (typeof transportTypeOrOptions === \"object\") {\r\n this.httpConnectionOptions = { ...this.httpConnectionOptions, ...transportTypeOrOptions };\r\n } else {\r\n this.httpConnectionOptions = {\r\n ...this.httpConnectionOptions,\r\n transport: transportTypeOrOptions,\r\n };\r\n }\r\n\r\n return this;\r\n }\r\n\r\n /** Configures the {@link @microsoft/signalr.HubConnection} to use the specified Hub Protocol.\r\n *\r\n * @param {IHubProtocol} protocol The {@link @microsoft/signalr.IHubProtocol} implementation to use.\r\n */\r\n public withHubProtocol(protocol: IHubProtocol): HubConnectionBuilder {\r\n Arg.isRequired(protocol, \"protocol\");\r\n\r\n this.protocol = protocol;\r\n return this;\r\n }\r\n\r\n /** Configures the {@link @microsoft/signalr.HubConnection} to automatically attempt to reconnect if the connection is lost.\r\n * By default, the client will wait 0, 2, 10 and 30 seconds respectively before trying up to 4 reconnect attempts.\r\n */\r\n public withAutomaticReconnect(): HubConnectionBuilder;\r\n\r\n /** Configures the {@link @microsoft/signalr.HubConnection} to automatically attempt to reconnect if the connection is lost.\r\n *\r\n * @param {number[]} retryDelays An array containing the delays in milliseconds before trying each reconnect attempt.\r\n * The length of the array represents how many failed reconnect attempts it takes before the client will stop attempting to reconnect.\r\n */\r\n public withAutomaticReconnect(retryDelays: number[]): HubConnectionBuilder;\r\n\r\n /** Configures the {@link @microsoft/signalr.HubConnection} to automatically attempt to reconnect if the connection is lost.\r\n *\r\n * @param {IRetryPolicy} reconnectPolicy An {@link @microsoft/signalR.IRetryPolicy} that controls the timing and number of reconnect attempts.\r\n */\r\n public withAutomaticReconnect(reconnectPolicy: IRetryPolicy): HubConnectionBuilder;\r\n public withAutomaticReconnect(retryDelaysOrReconnectPolicy?: number[] | IRetryPolicy): HubConnectionBuilder {\r\n if (this.reconnectPolicy) {\r\n throw new Error(\"A reconnectPolicy has already been set.\");\r\n }\r\n\r\n if (!retryDelaysOrReconnectPolicy) {\r\n this.reconnectPolicy = new DefaultReconnectPolicy();\r\n } else if (Array.isArray(retryDelaysOrReconnectPolicy)) {\r\n this.reconnectPolicy = new DefaultReconnectPolicy(retryDelaysOrReconnectPolicy);\r\n } else {\r\n this.reconnectPolicy = retryDelaysOrReconnectPolicy;\r\n }\r\n\r\n return this;\r\n }\r\n\r\n /** Configures {@link @microsoft/signalr.HubConnection.serverTimeoutInMilliseconds} for the {@link @microsoft/signalr.HubConnection}.\r\n *\r\n * @returns The {@link @microsoft/signalr.HubConnectionBuilder} instance, for chaining.\r\n */\r\n public withServerTimeout(milliseconds: number): HubConnectionBuilder {\r\n Arg.isRequired(milliseconds, \"milliseconds\");\r\n\r\n this._serverTimeoutInMilliseconds = milliseconds;\r\n\r\n return this;\r\n }\r\n\r\n /** Configures {@link @microsoft/signalr.HubConnection.keepAliveIntervalInMilliseconds} for the {@link @microsoft/signalr.HubConnection}.\r\n *\r\n * @returns The {@link @microsoft/signalr.HubConnectionBuilder} instance, for chaining.\r\n */\r\n public withKeepAliveInterval(milliseconds: number): HubConnectionBuilder {\r\n Arg.isRequired(milliseconds, \"milliseconds\");\r\n\r\n this._keepAliveIntervalInMilliseconds = milliseconds;\r\n\r\n return this;\r\n }\r\n\r\n /** Enables and configures options for the Stateful Reconnect feature.\r\n *\r\n * @returns The {@link @microsoft/signalr.HubConnectionBuilder} instance, for chaining.\r\n */\r\n public withStatefulReconnect(options?: IStatefulReconnectOptions): HubConnectionBuilder {\r\n if (this.httpConnectionOptions === undefined) {\r\n this.httpConnectionOptions = {};\r\n }\r\n this.httpConnectionOptions._useStatefulReconnect = true;\r\n\r\n this._statefulReconnectBufferSize = options?.bufferSize;\r\n\r\n return this;\r\n }\r\n\r\n /** Creates a {@link @microsoft/signalr.HubConnection} from the configuration options specified in this builder.\r\n *\r\n * @returns {HubConnection} The configured {@link @microsoft/signalr.HubConnection}.\r\n */\r\n public build(): HubConnection {\r\n // If httpConnectionOptions has a logger, use it. Otherwise, override it with the one\r\n // provided to configureLogger\r\n const httpConnectionOptions = this.httpConnectionOptions || {};\r\n\r\n // If it's 'null', the user **explicitly** asked for null, don't mess with it.\r\n if (httpConnectionOptions.logger === undefined) {\r\n // If our logger is undefined or null, that's OK, the HttpConnection constructor will handle it.\r\n httpConnectionOptions.logger = this.logger;\r\n }\r\n\r\n // Now create the connection\r\n if (!this.url) {\r\n throw new Error(\"The 'HubConnectionBuilder.withUrl' method must be called before building the connection.\");\r\n }\r\n const connection = new HttpConnection(this.url, httpConnectionOptions);\r\n\r\n return HubConnection.create(\r\n connection,\r\n this.logger || NullLogger.instance,\r\n this.protocol || new JsonHubProtocol(),\r\n this.reconnectPolicy,\r\n this._serverTimeoutInMilliseconds,\r\n this._keepAliveIntervalInMilliseconds,\r\n this._statefulReconnectBufferSize);\r\n }\r\n}\r\n\r\nfunction isLogger(logger: any): logger is ILogger {\r\n return logger.log !== undefined;\r\n}\r\n","import * as signalR from \"@microsoft/signalr\";\r\nimport EventEmitter from 'events';\r\n\r\nconst URL =\r\n process.env.REACT_APP_PCS_SOCKET_SIGNALR ??\r\n \"SIGNALR_HUB_ADDRESS is not provided\";\r\n\r\nclass SignalRService {\r\n public connection: signalR.HubConnection;\r\n private static instance: SignalRService;\r\n private eventEmitter: EventEmitter;\r\n private connectionId: string = \"\";\r\n\r\n private constructor() {\r\n this.connection = new signalR.HubConnectionBuilder()\r\n .withUrl(URL, {\r\n withCredentials: false,\r\n })\r\n .withAutomaticReconnect({\r\n nextRetryDelayInMilliseconds: () => 5000, // Retry every 1 second\r\n })\r\n .build();\r\n this.eventEmitter = new EventEmitter();\r\n this.setupConnection();\r\n }\r\n\r\n public static getInstance(): SignalRService {\r\n if (!SignalRService.instance) {\r\n SignalRService.instance = new SignalRService();\r\n }\r\n return SignalRService.instance;\r\n }\r\n\r\n public onConnectionEstablished(callback: () => void) {\r\n this.eventEmitter.on(\"connectionEstablished\", callback);\r\n }\r\n\r\n public setupConnection() {\r\n this.connection.onreconnected(() => {\r\n console.log(\"Connection reestablished: \", this.connection.connectionId);\r\n this.registerEvents();\r\n this.eventEmitter.emit(\"connectionEstablished\");\r\n });\r\n\r\n this.connection\r\n .start()\r\n .then(() => {\r\n console.log(\"Connection established: \", this.connection.connectionId);\r\n })\r\n .catch((error: any) => {\r\n console.error(\"Connection failed:\", error);\r\n });\r\n }\r\n\r\n public setupEmitter() {\r\n console.log(\"Event Emitter established: \", this.connection.connectionId);\r\n this.registerEvents();\r\n this.eventEmitter.emit(\"connectionEstablished\");\r\n }\r\n\r\n private registerEvents = () => {\r\n this.connection.on(\"ReceiveSignal\", (data: string) => {\r\n this.eventEmitter.emit(\"registerMessageHandler\", JSON.parse(data));\r\n });\r\n };\r\n\r\n public async sendMessageToGroup(methodName: string, group: string, message: string): Promise {\r\n try {\r\n if (this.connection && this.connection.state === \"Connected\") {\r\n await this.connection.invoke(methodName, group, message);\r\n }\r\n } catch (error) {\r\n console.error(\"error=========: \", error);\r\n }\r\n }\r\n\r\n public onRegisterMessageHandler(\r\n callback: (message: any) => void\r\n ) {\r\n this.eventEmitter.on(\"registerMessageHandler\", callback);\r\n }\r\n\r\n public joinGroup(groupName: string) {\r\n return this.connection.invoke(\"JoinGroup\", groupName);\r\n };\r\n}\r\n\r\nexport default SignalRService;","import React, { Fragment, useEffect, useState } from 'react'\r\nimport { useSelector } from 'react-redux'\r\nimport { List, Loader, Icon, Popup } from 'semantic-ui-react'\r\nimport {\r\n deleteChannelMembership,\r\n describeChannel,\r\n listChannelMemberships,\r\n} from '../../api/ChimeAPI'\r\nimport { selectAccount } from '../../redux/account'\r\nimport { selectChannelArn, selectChannelName, selectMetadata, selectNewMemberJoined, SetNewMemberJoinChannel } from '../../redux/chimeSlide'\r\nimport { CommonService } from '../../services/Common'\r\nimport { ReactComponent as Remove } from '../../assets/svg/shield-stop.svg'\r\nimport { useTranslation } from 'react-i18next'\r\nimport './css/ListMemberChannelModal.css'\r\nimport { useAppDispatch } from '../../redux/store'\r\nimport Boschicon from '../../common-components/boschIcon/Boschicon'\r\nimport { OnlinePresenceStatus } from '../../helpers/AppConstants'\r\nimport SignalRService from '../../services/SignalRService'\r\nimport { selectTicketState } from '../../redux/ticket'\r\n\r\nconst ListMemberChannelModal = () => {\r\n const { t } = useTranslation()\r\n const channelArn = useSelector(selectChannelArn)\r\n const account = useSelector(selectAccount)\r\n const channelName = useSelector(selectChannelName)\r\n const channelMetaData = useSelector(selectMetadata)\r\n const newMemberJoined = useSelector(selectNewMemberJoined)\r\n const [memberList, setMemberList] = useState([])\r\n const [memberPresenceList, setMemberPresenceList] = useState(null)\r\n const [isLoading, setIsLoading] = useState(false)\r\n const [isDeleteMem, setIsDeleteMem] = useState(false)\r\n const Customer = ' (' + t('Customer_Label') + ')'\r\n const BoschExpert = ' (' + t('Bosch_Expert_Label') + ')'\r\n const dispatchReduxToolkit = useAppDispatch();\r\n const signalRConnectorInstance = SignalRService.getInstance();\r\n const ticketState = useSelector(selectTicketState);\r\n\r\n useEffect(() => {\r\n setIsLoading(true)\r\n const channelype = channelMetaData ? JSON.parse(channelMetaData)?.channelType : \"\";\r\n const getMember = async () => {\r\n if (channelArn && channelArn !== '' && ticketState) {\r\n const channelDescribe = await describeChannel(\r\n channelArn,\r\n account.chimeUserId,\r\n )\r\n const channel = await listChannelMemberships(\r\n channelArn,\r\n account.chimeUserId,\r\n )\r\n\r\n if (channelype === 'PUBLIC') {\r\n const memberArr = channel.map((item: any) => {\r\n let showDelete = false\r\n let isCustomer = false\r\n //check bosch onwer is current user\r\n if (\r\n !item.Member.Arn.includes(account.chimeUserId)\r\n ) {\r\n isCustomer = true\r\n showDelete = true\r\n }\r\n return { ...item, showDelete, isCustomer }\r\n })\r\n setMemberList(memberArr)\r\n } else {\r\n let metaDataOfChannel = channelDescribe.Metadata ? JSON.parse(channelDescribe.Metadata) : \"\";\r\n const memberArr = channel.map((item: any) => {\r\n let showDelete = false\r\n let isCustomer = false\r\n //check bosch onwer is current user\r\n if (channelDescribe.CreatedBy.Arn.includes(account.chimeUserId)) {\r\n let showDelete = true\r\n // check member is technician\r\n if (\r\n item.Member.Arn.includes(\r\n ticketState.ciamId.toLowerCase(),\r\n ) ||\r\n item.Member.Arn.includes(metaDataOfChannel.customerCiamId.toLowerCase())\r\n ) {\r\n showDelete = false\r\n isCustomer = true\r\n }\r\n if (item.Member.Arn.includes(account.chimeUserId)) {\r\n showDelete = false\r\n }\r\n\r\n return { ...item, showDelete, isCustomer }\r\n }\r\n if (\r\n item.Member.Arn.includes(ticketState.ciamId.toLowerCase()) ||\r\n item.Member.Arn.includes(metaDataOfChannel.customerCiamId.toLowerCase())\r\n ) {\r\n isCustomer = true\r\n }\r\n return { ...item, showDelete, isCustomer }\r\n })\r\n setMemberList(memberArr)\r\n }\r\n\r\n }\r\n setIsLoading(false)\r\n setIsDeleteMem(false)\r\n dispatchReduxToolkit(SetNewMemberJoinChannel(false));\r\n }\r\n getMember()\r\n }, [channelArn, isDeleteMem, newMemberJoined])\r\n\r\n useEffect(() => {\r\n if (channelArn) {\r\n signalRConnectorInstance.onRegisterMessageHandler(\r\n (message: any) => {\r\n setMemberPresenceList(message);\r\n }\r\n );\r\n }\r\n }, [channelArn])\r\n\r\n const renderIconPresenceUser = (item: any) => {\r\n let newObject = memberPresenceList ? memberPresenceList : null\r\n const objectB = newObject ? newObject.find((obj: any) => item.Member.Arn.includes(obj.memberARN)) : null;\r\n\r\n if (objectB) {\r\n switch (objectB.status) {\r\n case OnlinePresenceStatus.online:\r\n return (} position=\"top center\">\r\n {t(\"Online_Label\")}\r\n )\r\n case OnlinePresenceStatus.offline:\r\n return (} position=\"top center\">\r\n {t(\"Offline_Label\")}\r\n )\r\n case OnlinePresenceStatus.onhold:\r\n return (} position=\"top center\">\r\n {t(\"Onhold_Label\")}\r\n )\r\n case OnlinePresenceStatus.busy:\r\n return (} position=\"top center\">\r\n {t(\"Busy_Label\")}\r\n )\r\n default:\r\n return (} position=\"top center\">\r\n {t(\"Online_Label\")}\r\n )\r\n }\r\n }\r\n\r\n return (} position=\"top center\">\r\n {t(\"Online_Label\")}\r\n )\r\n }\r\n\r\n const removeMembership = async (memberArn: string) => {\r\n setIsDeleteMem(true)\r\n await deleteChannelMembership(channelArn, memberArn, account.chimeUserId);\r\n }\r\n\r\n useEffect(() => {\r\n return () => {\r\n //Code in this area would be fired when component is unmounted\r\n console.log(`unmounted component`);\r\n setMemberList([]);\r\n setMemberPresenceList(null);\r\n setIsLoading(false);\r\n setIsDeleteMem(false);\r\n };\r\n }, []);\r\n\r\n const checkedName = (item: any) => {\r\n if (item?.Member.Arn.toLowerCase().includes(account.chimeUserId)) {\r\n return \"You\" + BoschExpert;\r\n }\r\n\r\n if (!item?.isCustomer) {\r\n if (item?.Member.Name.toLowerCase().includes('bosch agent')) {\r\n return item?.Member.Name + BoschExpert;\r\n }\r\n if (item?.Member.Name.toLowerCase().includes('anonymous')) {\r\n return item?.Member.Name + Customer;\r\n }\r\n return item?.Member.Name + BoschExpert;\r\n }\r\n\r\n if (item?.Member.Name.toLowerCase().includes('bosch agent')) {\r\n return item?.Member.Name + BoschExpert;\r\n }\r\n\r\n return item?.Member.Name + Customer;\r\n }\r\n\r\n\r\n return (\r\n \r\n {isLoading ? (\r\n
\r\n \r\n
\r\n ) : (\r\n \r\n \r\n {memberList &&\r\n memberList.map((item: any, index) => (\r\n
\r\n
\r\n {\r\n renderIconPresenceUser(item)\r\n }\r\n
\r\n
\r\n {\r\n checkedName(item)\r\n }\r\n
\r\n
\r\n {item.showDelete && (\r\n
\r\n removeMembership(item?.Member.Arn)}\r\n >\r\n \r\n \r\n
\r\n )}\r\n
\r\n
\r\n ))}\r\n
\r\n
\r\n )}\r\n
\r\n )\r\n}\r\n\r\nexport default ListMemberChannelModal\r\n","function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgLivechat(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 192 192\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M172 92c0-41.907-34.093-76-76-76S20 50.093 20 92s34.093 76 76 76c9.836 0 19.386-1.846 28.413-5.49L152 174.004l-.002-30.62C164.908 129.327 172 111.144 172 92zm-28 70.004l-19.611-8.17-1.556.668C114.347 158.15 105.32 160 96 160c-37.495 0-68-30.505-68-68s30.505-68 68-68 68 30.505 68 68c0 17.615-6.708 34.32-18.89 47.035l-1.112 1.16.002 21.81zM96 84a8 8 0 1 0 0 16 8 8 0 0 0 0-16zm-28 0a8 8 0 1 0 0 16 8 8 0 0 0 0-16zm56 0a8 8 0 1 0 0 16 8 8 0 0 0 0-16z\",\n style: {\n fill: \"#ffffff\"\n }\n }));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgLivechat);\nexport default __webpack_public_path__ + \"static/media/livechat.800a946bf8a795f9b7217f200c3289ba.svg\";\nexport { ForwardRef as ReactComponent };","function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgCall(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 192 192\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M128.647 159.431c-6.492 0-35.913-1.732-65.416-31.235-32.082-32.082-31.325-64.069-31.212-66.578a9.934 9.934 0 0 1 2.927-6.96l12.73-12.73A9.933 9.933 0 0 1 54.745 39c2.671 0 5.182 1.04 7.071 2.929l16.97 16.97c1.89 1.89 2.93 4.4 2.93 7.072s-1.04 5.182-2.93 7.071l-9.899 9.9a1.991 1.991 0 0 0-.586 1.413l-.012.39c.014.914.552 9.463 14.74 23.652 14.292 14.291 22.862 14.733 23.672 14.74l.275-.046.095.034c.72 0 1.195-.367 1.413-.585l9.9-9.9c1.89-1.889 4.4-2.93 7.072-2.93s5.182 1.041 7.07 2.93l16.972 16.97c3.897 3.9 3.897 10.243 0 14.142L136.77 156.48a9.937 9.937 0 0 1-6.961 2.928c-.202.008-.595.022-1.162.022zM54.747 47c-.31 0-.906.076-1.415.585L40.604 60.314a1.991 1.991 0 0 0-.586 1.414l-.006.223c-.014.29-1.16 30.551 28.876 60.588 30.205 30.206 60.288 28.89 60.588 28.877l.223-.007c.72 0 1.196-.367 1.415-.586l12.727-12.728c.78-.78.78-2.049 0-2.828l-16.97-16.97a2.001 2.001 0 0 0-2.829 0l-9.899 9.9a9.932 9.932 0 0 1-6.913 2.927c-2.116.13-12.979-.193-29.857-17.07-16.876-16.876-17.194-27.736-17.07-29.857a9.931 9.931 0 0 1 2.927-6.912l9.9-9.9c.78-.78.78-2.049 0-2.828L56.16 47.586A1.992 1.992 0 0 0 54.746 47z\",\n style: {\n fill: \"#ffffff\"\n }\n }));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgCall);\nexport default __webpack_public_path__ + \"static/media/call.c4d8236c2a283c9de5c23ff9a5bb38f5.svg\";\nexport { ForwardRef as ReactComponent };","function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgCallBlack(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 192 192\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M128.647 159.431c-6.492 0-35.913-1.732-65.416-31.235-32.082-32.082-31.325-64.069-31.212-66.578a9.934 9.934 0 0 1 2.927-6.96l12.73-12.73A9.933 9.933 0 0 1 54.745 39c2.671 0 5.182 1.04 7.071 2.929l16.97 16.97c1.89 1.89 2.93 4.4 2.93 7.072s-1.04 5.182-2.93 7.071l-9.899 9.9a1.991 1.991 0 0 0-.586 1.413l-.012.39c.014.914.552 9.463 14.74 23.652 14.292 14.291 22.862 14.733 23.672 14.74l.275-.046.095.034c.72 0 1.195-.367 1.413-.585l9.9-9.9c1.89-1.889 4.4-2.93 7.072-2.93s5.182 1.041 7.07 2.93l16.972 16.97c3.897 3.9 3.897 10.243 0 14.142L136.77 156.48a9.937 9.937 0 0 1-6.961 2.928c-.202.008-.595.022-1.162.022zM54.747 47c-.31 0-.906.076-1.415.585L40.604 60.314a1.991 1.991 0 0 0-.586 1.414l-.006.223c-.014.29-1.16 30.551 28.876 60.588 30.205 30.206 60.288 28.89 60.588 28.877l.223-.007c.72 0 1.196-.367 1.415-.586l12.727-12.728c.78-.78.78-2.049 0-2.828l-16.97-16.97a2.001 2.001 0 0 0-2.829 0l-9.899 9.9a9.932 9.932 0 0 1-6.913 2.927c-2.116.13-12.979-.193-29.857-17.07-16.876-16.876-17.194-27.736-17.07-29.857a9.931 9.931 0 0 1 2.927-6.912l9.9-9.9c.78-.78.78-2.049 0-2.828L56.16 47.586A1.992 1.992 0 0 0 54.746 47z\",\n style: {\n fill: \"#000000\"\n }\n }));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgCallBlack);\nexport default __webpack_public_path__ + \"static/media/call_black.7088ef306f0afa6c3599fedad5f80f6c.svg\";\nexport { ForwardRef as ReactComponent };","function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgClose(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 192 192\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M101.657 96l57.172 57.171-5.658 5.658L96 101.657 38.829 158.83l-5.658-5.658L90.343 96 33.17 38.829l5.658-5.658L96 90.343l57.171-57.172 5.658 5.658L101.657 96z\",\n style: {\n fill: \"#ffffff\"\n }\n }));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgClose);\nexport default __webpack_public_path__ + \"static/media/close.9b6ac094f124d457074117f8c2bf9227.svg\";\nexport { ForwardRef as ReactComponent };","function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgNotification(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 192 192\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M172.7 156L144 118.5V64c0-26.5-21.5-48-48-48S48 37.5 48 64v54.5L19.3 156h53c1.9 11.3 11.8 20 23.7 20s21.7-8.7 23.7-20h53zM56 121.5V64c0-22.1 17.9-40 40-40s40 17.9 40 40v57.5l19.3 26.5H36.7L56 121.5zM96 168c-7.4 0-13.7-5.1-15.5-12h30.9c-1.7 6.9-8 12-15.4 12z\",\n style: {\n fill: \"#71767c\"\n }\n }));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgNotification);\nexport default __webpack_public_path__ + \"static/media/notification.0a3f4ed41f5d65d1d5aac8ecfec06833.svg\";\nexport { ForwardRef as ReactComponent };","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport _includes from \"lodash-es/includes\";\nimport _map from \"lodash-es/map\";\nimport _invoke from \"lodash-es/invoke\";\nimport _get from \"lodash-es/get\";\nimport _isNil from \"lodash-es/isNil\";\nimport { handleRef } from '@fluentui/react-component-ref';\nimport cx from 'clsx';\nimport PropTypes from 'prop-types';\nimport React, { Children, cloneElement, Component, createRef } from 'react';\nimport { childrenUtils, createHTMLInput, createShorthandFactory, customPropTypes, getElementType, getUnhandledProps, partitionHTMLProps, useKeyOnly, useValueAndKey } from '../../lib';\nimport Button from '../Button';\nimport Icon from '../Icon';\nimport Label from '../Label';\n/**\n * An Input is a field used to elicit a response from a user.\n * @see Button\n * @see Form\n * @see Icon\n * @see Label\n */\n\nvar Input = /*#__PURE__*/function (_Component) {\n _inheritsLoose(Input, _Component);\n\n function Input() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _Component.call.apply(_Component, [this].concat(args)) || this;\n _this.inputRef = /*#__PURE__*/createRef();\n\n _this.computeIcon = function () {\n var _this$props = _this.props,\n loading = _this$props.loading,\n icon = _this$props.icon;\n if (!_isNil(icon)) return icon;\n if (loading) return 'spinner';\n };\n\n _this.computeTabIndex = function () {\n var _this$props2 = _this.props,\n disabled = _this$props2.disabled,\n tabIndex = _this$props2.tabIndex;\n if (!_isNil(tabIndex)) return tabIndex;\n if (disabled) return -1;\n };\n\n _this.focus = function (options) {\n return _this.inputRef.current.focus(options);\n };\n\n _this.select = function () {\n return _this.inputRef.current.select();\n };\n\n _this.handleChange = function (e) {\n var value = _get(e, 'target.value');\n\n _invoke(_this.props, 'onChange', e, _extends({}, _this.props, {\n value: value\n }));\n };\n\n _this.handleChildOverrides = function (child, defaultProps) {\n return _extends({}, defaultProps, child.props, {\n ref: function ref(c) {\n handleRef(child.ref, c);\n _this.inputRef.current = c;\n }\n });\n };\n\n _this.partitionProps = function () {\n var _this$props3 = _this.props,\n disabled = _this$props3.disabled,\n type = _this$props3.type;\n\n var tabIndex = _this.computeTabIndex();\n\n var unhandled = getUnhandledProps(Input, _this.props);\n\n var _partitionHTMLProps = partitionHTMLProps(unhandled),\n htmlInputProps = _partitionHTMLProps[0],\n rest = _partitionHTMLProps[1];\n\n return [_extends({}, htmlInputProps, {\n disabled: disabled,\n type: type,\n tabIndex: tabIndex,\n onChange: _this.handleChange,\n ref: _this.inputRef\n }), rest];\n };\n\n return _this;\n }\n\n var _proto = Input.prototype;\n\n _proto.render = function render() {\n var _this2 = this;\n\n var _this$props4 = this.props,\n action = _this$props4.action,\n actionPosition = _this$props4.actionPosition,\n children = _this$props4.children,\n className = _this$props4.className,\n disabled = _this$props4.disabled,\n error = _this$props4.error,\n fluid = _this$props4.fluid,\n focus = _this$props4.focus,\n icon = _this$props4.icon,\n iconPosition = _this$props4.iconPosition,\n input = _this$props4.input,\n inverted = _this$props4.inverted,\n label = _this$props4.label,\n labelPosition = _this$props4.labelPosition,\n loading = _this$props4.loading,\n size = _this$props4.size,\n transparent = _this$props4.transparent,\n type = _this$props4.type;\n var classes = cx('ui', size, useKeyOnly(disabled, 'disabled'), useKeyOnly(error, 'error'), useKeyOnly(fluid, 'fluid'), useKeyOnly(focus, 'focus'), useKeyOnly(inverted, 'inverted'), useKeyOnly(loading, 'loading'), useKeyOnly(transparent, 'transparent'), useValueAndKey(actionPosition, 'action') || useKeyOnly(action, 'action'), useValueAndKey(iconPosition, 'icon') || useKeyOnly(icon || loading, 'icon'), useValueAndKey(labelPosition, 'labeled') || useKeyOnly(label, 'labeled'), 'input', className);\n var ElementType = getElementType(Input, this.props);\n\n var _this$partitionProps = this.partitionProps(),\n htmlInputProps = _this$partitionProps[0],\n rest = _this$partitionProps[1]; // Render with children\n // ----------------------------------------\n\n\n if (!childrenUtils.isNil(children)) {\n // add htmlInputProps to the `` child\n var childElements = _map(Children.toArray(children), function (child) {\n if (child.type !== 'input') return child;\n return /*#__PURE__*/cloneElement(child, _this2.handleChildOverrides(child, htmlInputProps));\n });\n\n return /*#__PURE__*/React.createElement(ElementType, _extends({}, rest, {\n className: classes\n }), childElements);\n } // Render Shorthand\n // ----------------------------------------\n\n\n var actionElement = Button.create(action, {\n autoGenerateKey: false\n });\n var labelElement = Label.create(label, {\n defaultProps: {\n className: cx('label', // add 'left|right corner'\n _includes(labelPosition, 'corner') && labelPosition)\n },\n autoGenerateKey: false\n });\n return /*#__PURE__*/React.createElement(ElementType, _extends({}, rest, {\n className: classes\n }), actionPosition === 'left' && actionElement, labelPosition !== 'right' && labelElement, createHTMLInput(input || type, {\n defaultProps: htmlInputProps,\n autoGenerateKey: false\n }), Icon.create(this.computeIcon(), {\n autoGenerateKey: false\n }), actionPosition !== 'left' && actionElement, labelPosition === 'right' && labelElement);\n };\n\n return Input;\n}(Component);\n\nInput.handledProps = [\"action\", \"actionPosition\", \"as\", \"children\", \"className\", \"disabled\", \"error\", \"fluid\", \"focus\", \"icon\", \"iconPosition\", \"input\", \"inverted\", \"label\", \"labelPosition\", \"loading\", \"onChange\", \"size\", \"tabIndex\", \"transparent\", \"type\"];\nInput.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /** An element type to render as (string or function). */\n as: PropTypes.elementType,\n\n /** An Input can be formatted to alert the user to an action they may perform. */\n action: PropTypes.oneOfType([PropTypes.bool, customPropTypes.itemShorthand]),\n\n /** An action can appear along side an Input on the left or right. */\n actionPosition: PropTypes.oneOf(['left']),\n\n /** Primary content. */\n children: PropTypes.node,\n\n /** Additional classes. */\n className: PropTypes.string,\n\n /** An Input field can show that it is disabled. */\n disabled: PropTypes.bool,\n\n /** An Input field can show the data contains errors. */\n error: PropTypes.bool,\n\n /** Take on the size of its container. */\n fluid: PropTypes.bool,\n\n /** An Input field can show a user is currently interacting with it. */\n focus: PropTypes.bool,\n\n /** Optional Icon to display inside the Input. */\n icon: PropTypes.oneOfType([PropTypes.bool, customPropTypes.itemShorthand]),\n\n /** An Icon can appear inside an Input on the left or right. */\n iconPosition: PropTypes.oneOf(['left']),\n\n /** Shorthand for creating the HTML Input. */\n input: customPropTypes.itemShorthand,\n\n /** Format to appear on dark backgrounds. */\n inverted: PropTypes.bool,\n\n /** Optional Label to display along side the Input. */\n label: customPropTypes.itemShorthand,\n\n /** A Label can appear outside an Input on the left or right. */\n labelPosition: PropTypes.oneOf(['left', 'right', 'left corner', 'right corner']),\n\n /** An Icon Input field can show that it is currently loading data. */\n loading: PropTypes.bool,\n\n /**\n * Called on change.\n *\n * @param {ChangeEvent} event - React's original SyntheticEvent.\n * @param {object} data - All props and a proposed value.\n */\n onChange: PropTypes.func,\n\n /** An Input can vary in size. */\n size: PropTypes.oneOf(['mini', 'small', 'large', 'big', 'huge', 'massive']),\n\n /** An Input can receive focus. */\n tabIndex: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n\n /** Transparent Input has no background. */\n transparent: PropTypes.bool,\n\n /** The HTML input type. */\n type: PropTypes.string\n} : {};\nInput.defaultProps = {\n type: 'text'\n};\nInput.create = createShorthandFactory(Input, function (type) {\n return {\n type: type\n };\n});\nexport default Input;","import React, { Fragment, useState } from 'react'\r\nimport { Grid, Button, Modal, Icon, Input } from 'semantic-ui-react'\r\nimport { ReactComponent as SMS } from '../../assets/svg/smartphone-loading-wheel.svg'\r\nimport { ReactComponent as Ticket } from '../../assets/svg/ticket.svg'\r\nimport { useTranslation } from 'react-i18next'\r\nimport './css/ModalCreateNewChannel.css'\r\nimport Boschicon from '../../common-components/boschIcon/Boschicon'\r\n\r\ninterface ModalSendInviteChattingChannelProps {\r\n isOpen: boolean\r\n onClose: Function\r\n onchangeTextSearchInput: Function\r\n}\r\n\r\nconst ModalSendInviteChattingChannel = ({\r\n isOpen,\r\n onClose,\r\n onchangeTextSearchInput,\r\n}: ModalSendInviteChattingChannelProps) => {\r\n const [openCodeInput, setOpenCodeInput] = useState(false)\r\n const [textSearchInput, setTextSearchInput] = useState('')\r\n const { t } = useTranslation()\r\n return (\r\n \r\n onClose()}\r\n open={isOpen}\r\n dimmer={{ className: 'test-dimmer' }}\r\n size={'tiny'}\r\n closeIcon\r\n closeOnDimmerClick={false}\r\n >\r\n
\r\n {!openCodeInput && (\r\n <>\r\n \r\n {t('Invite_To_Chat_Question')}\r\n \r\n \r\n \r\n \r\n setOpenCodeInput(true)}\r\n >\r\n \r\n {t('Ticket_Id_Label')}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )}\r\n {openCodeInput && (\r\n <>\r\n \r\n {t('Invite_To_Chat_By_Ticket_ID')}\r\n \r\n \r\n {\r\n setTextSearchInput(e.target.value)\r\n }}\r\n onKeyPress={(e: React.KeyboardEvent) => {\r\n if (e.key === 'Enter') {\r\n onchangeTextSearchInput(textSearchInput)\r\n }\r\n }}\r\n />\r\n onchangeTextSearchInput(textSearchInput)}\r\n >\r\n {t('Start_Label')}\r\n \r\n \r\n \r\n )}\r\n \r\n
\r\n )\r\n}\r\n\r\nexport default ModalSendInviteChattingChannel\r\n","import React, { Fragment, useState } from 'react'\r\nimport { Grid, Button, Modal, Input } from 'semantic-ui-react'\r\nimport { useTranslation } from 'react-i18next'\r\nimport PhoneInput from 'react-phone-input-2'\r\nimport 'react-phone-input-2/lib/style.css'\r\nimport './css/ModalCreateNewChannel.css'\r\nimport Boschicon from '../../common-components/boschIcon/Boschicon'\r\nimport { useSelector } from 'react-redux'\r\nimport { selectVisualConnectListState } from '../../redux/visualConnect'\r\n\r\ninterface ModalSendInviteVisualConnectProps {\r\n isOpen: boolean\r\n onClose: Function\r\n onHanldeSendSMS: Function\r\n sendEmailVisualConnect: Function\r\n phoneNumberInput: string\r\n isLoading: boolean\r\n onVoiceCall: boolean\r\n}\r\n\r\nconst ModalSendInviteVisualConnect = ({\r\n isOpen,\r\n onClose,\r\n onHanldeSendSMS,\r\n phoneNumberInput,\r\n isLoading,\r\n sendEmailVisualConnect,\r\n onVoiceCall\r\n}: ModalSendInviteVisualConnectProps) => {\r\n const [openSendSMS, setOpenSendSMS] = useState(false)\r\n const [phoneNumber, setPhoneNumber] = useState(phoneNumberInput)\r\n const visualConnectList = useSelector(selectVisualConnectListState)\r\n const sendLinkVideo = () => {\r\n onHanldeSendSMS(phoneNumber)\r\n }\r\n const onHanldeSendLink = () => {\r\n onHanldeSendSMS()\r\n }\r\n const onChangeEmail = (e: any) => {\r\n setEmail(e.target.value)\r\n }\r\n const [openEmailInput, setOpenEmailInput] = useState(false)\r\n const [email, setEmail] = useState('')\r\n const { t } = useTranslation()\r\n return (\r\n \r\n {!openSendSMS && !openEmailInput && (\r\n onClose()}\r\n open={isOpen}\r\n dimmer={{ className: 'test-dimmer' }}\r\n size={'tiny'}\r\n closeIcon\r\n closeOnDimmerClick={false}\r\n >\r\n
\r\n \r\n {!onVoiceCall ? t('Invite_To_Visual_Question') : t(\"Invite_To_Voice_Call_Question\")}\r\n \r\n \r\n \r\n \r\n setOpenSendSMS(true)}\r\n >\r\n \r\n {t('Sms_label')}\r\n \r\n \r\n \r\n \r\n setOpenEmailInput(true)}\r\n >\r\n \r\n {t('Email_label')}\r\n \r\n {\r\n !visualConnectList.active && (\r\n { onHanldeSendLink() }}\r\n >\r\n \r\n {t('Link_label')}\r\n \r\n )\r\n }\r\n\r\n \r\n \r\n \r\n \r\n )}\r\n {openSendSMS && (\r\n onClose()}\r\n open={isOpen}\r\n dimmer={{ className: 'test-dimmer' }}\r\n size={'tiny'}\r\n closeIcon\r\n closeOnDimmerClick={false}\r\n >\r\n
\r\n \r\n {t('Invite_Sms_Question')}\r\n \r\n \r\n \r\n \r\n \r\n setPhoneNumber(e)}\r\n value={phoneNumber}\r\n onEnterKeyPress={(\r\n e: React.KeyboardEvent,\r\n ) => {\r\n if (e.key === 'Enter') {\r\n sendLinkVideo()\r\n }\r\n }}\r\n />\r\n \r\n \r\n\r\n \r\n sendLinkVideo()}\r\n primary\r\n className=\"button-search\"\r\n >\r\n {t('Send_Invite_Label')}\r\n \r\n \r\n \r\n \r\n \r\n )}\r\n {openEmailInput && (\r\n onClose()}\r\n open={isOpen}\r\n dimmer={{ className: 'test-dimmer' }}\r\n size={'tiny'}\r\n closeIcon\r\n closeOnDimmerClick={false}\r\n >\r\n
\r\n \r\n {t('Invite_Email_Question')}\r\n \r\n \r\n \r\n \r\n \r\n ) => {\r\n if (e.key === 'Enter') {\r\n sendEmailVisualConnect(email)\r\n }\r\n }}\r\n />\r\n \r\n \r\n\r\n \r\n sendEmailVisualConnect(email)}\r\n primary\r\n className=\"button-search\"\r\n >\r\n {t('Send_Invite_Label')}\r\n \r\n \r\n \r\n \r\n \r\n )}\r\n
\r\n )\r\n}\r\n\r\nexport default ModalSendInviteVisualConnect\r\n","import React, { Fragment } from 'react';\r\nimport { Modal } from \"semantic-ui-react\";\r\nimport { useTranslation } from \"react-i18next\";\r\ninterface ModalNotiEndMeettingProps {\r\n isOpen: boolean,\r\n onClose: Function,\r\n}\r\n\r\nconst ModalNotiEndMeetting = ({ isOpen, onClose }: ModalNotiEndMeettingProps) => {\r\n const { t } = useTranslation();\r\n return (\r\n \r\n onClose()}\r\n open={isOpen}\r\n dimmer={{ className: \"test-dimmer\" }}\r\n size={\"tiny\"}\r\n closeIcon\r\n closeOnDimmerClick={false}\r\n >\r\n {t(\"Can_Not_Create_Meeting_Title\")}\r\n \r\n {t(\"Can_Not_Create_Meeting_Content\")}\r\n \r\n\r\n \r\n \r\n\r\n );\r\n};\r\n\r\nexport default ModalNotiEndMeetting;\r\n","function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgUserMouthSpreechless(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 192 192\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M109.202 101.482C122.538 96.204 132 83.19 132 68c0-19.85-16.15-36-36-36S60 48.15 60 68c0 15.19 9.462 28.204 22.798 33.482C56.047 107.514 36 131.452 36 160h8c0-28.673 23.327-52 52-52s52 23.327 52 52h8c0-28.547-20.047-52.486-46.798-58.518zM68 68c0-15.44 12.56-28 28-28s28 12.56 28 28-12.56 28-28 28-28-12.56-28-28zm20 8a4 4 0 1 1-8 0 4 4 0 0 1 8 0zm16 0a4 4 0 1 1 8 0 4 4 0 0 1-8 0zm-8 4a4 4 0 1 1 0-8 4 4 0 0 1 0 8z\",\n style: {\n fill: \"#000000\"\n }\n }));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgUserMouthSpreechless);\nexport default __webpack_public_path__ + \"static/media/user-mouth-spreechless.6e7711d5a65fec3b07e6e05b5e568715.svg\";\nexport { ForwardRef as ReactComponent };","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nexport const Constants = {\n LIBRARY_NAME: \"MSAL.JS\",\n SKU: \"msal.js.common\",\n // Prefix for all library cache entries\n CACHE_PREFIX: \"msal\",\n // default authority\n DEFAULT_AUTHORITY: \"https://login.microsoftonline.com/common/\",\n DEFAULT_AUTHORITY_HOST: \"login.microsoftonline.com\",\n DEFAULT_COMMON_TENANT: \"common\",\n // ADFS String\n ADFS: \"adfs\",\n DSTS: \"dstsv2\",\n // Default AAD Instance Discovery Endpoint\n AAD_INSTANCE_DISCOVERY_ENDPT:\n \"https://login.microsoftonline.com/common/discovery/instance?api-version=1.1&authorization_endpoint=\",\n // CIAM URL\n CIAM_AUTH_URL: \".ciamlogin.com\",\n AAD_TENANT_DOMAIN_SUFFIX: \".onmicrosoft.com\",\n // Resource delimiter - used for certain cache entries\n RESOURCE_DELIM: \"|\",\n // Placeholder for non-existent account ids/objects\n NO_ACCOUNT: \"NO_ACCOUNT\",\n // Claims\n CLAIMS: \"claims\",\n // Consumer UTID\n CONSUMER_UTID: \"9188040d-6c67-4c5b-b112-36a304b66dad\",\n // Default scopes\n OPENID_SCOPE: \"openid\",\n PROFILE_SCOPE: \"profile\",\n OFFLINE_ACCESS_SCOPE: \"offline_access\",\n EMAIL_SCOPE: \"email\",\n // Default response type for authorization code flow\n CODE_RESPONSE_TYPE: \"code\",\n CODE_GRANT_TYPE: \"authorization_code\",\n RT_GRANT_TYPE: \"refresh_token\",\n FRAGMENT_RESPONSE_MODE: \"fragment\",\n S256_CODE_CHALLENGE_METHOD: \"S256\",\n URL_FORM_CONTENT_TYPE: \"application/x-www-form-urlencoded;charset=utf-8\",\n AUTHORIZATION_PENDING: \"authorization_pending\",\n NOT_DEFINED: \"not_defined\",\n EMPTY_STRING: \"\",\n NOT_APPLICABLE: \"N/A\",\n NOT_AVAILABLE: \"Not Available\",\n FORWARD_SLASH: \"/\",\n IMDS_ENDPOINT: \"http://169.254.169.254/metadata/instance/compute/location\",\n IMDS_VERSION: \"2020-06-01\",\n IMDS_TIMEOUT: 2000,\n AZURE_REGION_AUTO_DISCOVER_FLAG: \"TryAutoDetect\",\n REGIONAL_AUTH_PUBLIC_CLOUD_SUFFIX: \"login.microsoft.com\",\n KNOWN_PUBLIC_CLOUDS: [\n \"login.microsoftonline.com\",\n \"login.windows.net\",\n \"login.microsoft.com\",\n \"sts.windows.net\",\n ],\n TOKEN_RESPONSE_TYPE: \"token\",\n ID_TOKEN_RESPONSE_TYPE: \"id_token\",\n SHR_NONCE_VALIDITY: 240,\n INVALID_INSTANCE: \"invalid_instance\",\n};\n\nexport const HttpStatus = {\n SUCCESS: 200,\n SUCCESS_RANGE_START: 200,\n SUCCESS_RANGE_END: 299,\n REDIRECT: 302,\n CLIENT_ERROR: 400,\n CLIENT_ERROR_RANGE_START: 400,\n BAD_REQUEST: 400,\n UNAUTHORIZED: 401,\n NOT_FOUND: 404,\n REQUEST_TIMEOUT: 408,\n TOO_MANY_REQUESTS: 429,\n CLIENT_ERROR_RANGE_END: 499,\n SERVER_ERROR: 500,\n SERVER_ERROR_RANGE_START: 500,\n SERVICE_UNAVAILABLE: 503,\n GATEWAY_TIMEOUT: 504,\n SERVER_ERROR_RANGE_END: 599,\n MULTI_SIDED_ERROR: 600,\n} as const;\nexport type HttpStatus = (typeof HttpStatus)[keyof typeof HttpStatus];\n\nexport const OIDC_DEFAULT_SCOPES = [\n Constants.OPENID_SCOPE,\n Constants.PROFILE_SCOPE,\n Constants.OFFLINE_ACCESS_SCOPE,\n];\n\nexport const OIDC_SCOPES = [...OIDC_DEFAULT_SCOPES, Constants.EMAIL_SCOPE];\n\n/**\n * Request header names\n */\nexport const HeaderNames = {\n CONTENT_TYPE: \"Content-Type\",\n CONTENT_LENGTH: \"Content-Length\",\n RETRY_AFTER: \"Retry-After\",\n CCS_HEADER: \"X-AnchorMailbox\",\n WWWAuthenticate: \"WWW-Authenticate\",\n AuthenticationInfo: \"Authentication-Info\",\n X_MS_REQUEST_ID: \"x-ms-request-id\",\n X_MS_HTTP_VERSION: \"x-ms-httpver\",\n} as const;\nexport type HeaderNames = (typeof HeaderNames)[keyof typeof HeaderNames];\n\n/**\n * Persistent cache keys MSAL which stay while user is logged in.\n */\nexport const PersistentCacheKeys = {\n ID_TOKEN: \"idtoken\",\n CLIENT_INFO: \"client.info\",\n ADAL_ID_TOKEN: \"adal.idtoken\",\n ERROR: \"error\",\n ERROR_DESC: \"error.description\",\n ACTIVE_ACCOUNT: \"active-account\", // Legacy active-account cache key, use new key instead\n ACTIVE_ACCOUNT_FILTERS: \"active-account-filters\", // new cache entry for active_account for a more robust version for browser\n} as const;\nexport type PersistentCacheKeys =\n (typeof PersistentCacheKeys)[keyof typeof PersistentCacheKeys];\n\n/**\n * String constants related to AAD Authority\n */\nexport const AADAuthorityConstants = {\n COMMON: \"common\",\n ORGANIZATIONS: \"organizations\",\n CONSUMERS: \"consumers\",\n} as const;\nexport type AADAuthorityConstants =\n (typeof AADAuthorityConstants)[keyof typeof AADAuthorityConstants];\n\n/**\n * Claims request keys\n */\nexport const ClaimsRequestKeys = {\n ACCESS_TOKEN: \"access_token\",\n XMS_CC: \"xms_cc\",\n} as const;\nexport type ClaimsRequestKeys =\n (typeof ClaimsRequestKeys)[keyof typeof ClaimsRequestKeys];\n\n/**\n * we considered making this \"enum\" in the request instead of string, however it looks like the allowed list of\n * prompt values kept changing over past couple of years. There are some undocumented prompt values for some\n * internal partners too, hence the choice of generic \"string\" type instead of the \"enum\"\n */\nexport const PromptValue = {\n LOGIN: \"login\",\n SELECT_ACCOUNT: \"select_account\",\n CONSENT: \"consent\",\n NONE: \"none\",\n CREATE: \"create\",\n NO_SESSION: \"no_session\",\n};\n\n/**\n * allowed values for codeVerifier\n */\nexport const CodeChallengeMethodValues = {\n PLAIN: \"plain\",\n S256: \"S256\",\n};\n\n/**\n * allowed values for server response type\n */\nexport const ServerResponseType = {\n QUERY: \"query\",\n FRAGMENT: \"fragment\",\n} as const;\nexport type ServerResponseType =\n (typeof ServerResponseType)[keyof typeof ServerResponseType];\n\n/**\n * allowed values for response_mode\n */\nexport const ResponseMode = {\n ...ServerResponseType,\n FORM_POST: \"form_post\",\n} as const;\nexport type ResponseMode = (typeof ResponseMode)[keyof typeof ResponseMode];\n\n/**\n * allowed grant_type\n */\nexport const GrantType = {\n IMPLICIT_GRANT: \"implicit\",\n AUTHORIZATION_CODE_GRANT: \"authorization_code\",\n CLIENT_CREDENTIALS_GRANT: \"client_credentials\",\n RESOURCE_OWNER_PASSWORD_GRANT: \"password\",\n REFRESH_TOKEN_GRANT: \"refresh_token\",\n DEVICE_CODE_GRANT: \"device_code\",\n JWT_BEARER: \"urn:ietf:params:oauth:grant-type:jwt-bearer\",\n} as const;\nexport type GrantType = (typeof GrantType)[keyof typeof GrantType];\n\n/**\n * Account types in Cache\n */\nexport const CacheAccountType = {\n MSSTS_ACCOUNT_TYPE: \"MSSTS\",\n ADFS_ACCOUNT_TYPE: \"ADFS\",\n MSAV1_ACCOUNT_TYPE: \"MSA\",\n GENERIC_ACCOUNT_TYPE: \"Generic\", // NTLM, Kerberos, FBA, Basic etc\n} as const;\nexport type CacheAccountType =\n (typeof CacheAccountType)[keyof typeof CacheAccountType];\n\n/**\n * Separators used in cache\n */\nexport const Separators = {\n CACHE_KEY_SEPARATOR: \"-\",\n CLIENT_INFO_SEPARATOR: \".\",\n} as const;\nexport type Separators = (typeof Separators)[keyof typeof Separators];\n\n/**\n * Credential Type stored in the cache\n */\nexport const CredentialType = {\n ID_TOKEN: \"IdToken\",\n ACCESS_TOKEN: \"AccessToken\",\n ACCESS_TOKEN_WITH_AUTH_SCHEME: \"AccessToken_With_AuthScheme\",\n REFRESH_TOKEN: \"RefreshToken\",\n} as const;\nexport type CredentialType =\n (typeof CredentialType)[keyof typeof CredentialType];\n\n/**\n * Combine all cache types\n */\nexport const CacheType = {\n ADFS: 1001,\n MSA: 1002,\n MSSTS: 1003,\n GENERIC: 1004,\n ACCESS_TOKEN: 2001,\n REFRESH_TOKEN: 2002,\n ID_TOKEN: 2003,\n APP_METADATA: 3001,\n UNDEFINED: 9999,\n} as const;\nexport type CacheType = (typeof CacheType)[keyof typeof CacheType];\n\n/**\n * More Cache related constants\n */\nexport const APP_METADATA = \"appmetadata\";\nexport const CLIENT_INFO = \"client_info\";\nexport const THE_FAMILY_ID = \"1\";\n\nexport const AUTHORITY_METADATA_CONSTANTS = {\n CACHE_KEY: \"authority-metadata\",\n REFRESH_TIME_SECONDS: 3600 * 24, // 24 Hours\n};\n\nexport const AuthorityMetadataSource = {\n CONFIG: \"config\",\n CACHE: \"cache\",\n NETWORK: \"network\",\n HARDCODED_VALUES: \"hardcoded_values\",\n} as const;\nexport type AuthorityMetadataSource =\n (typeof AuthorityMetadataSource)[keyof typeof AuthorityMetadataSource];\n\nexport const SERVER_TELEM_CONSTANTS = {\n SCHEMA_VERSION: 5,\n MAX_CUR_HEADER_BYTES: 80, // ESTS limit is 100B, set to 80 to provide a 20B buffer\n MAX_LAST_HEADER_BYTES: 330, // ESTS limit is 350B, set to 330 to provide a 20B buffer,\n MAX_CACHED_ERRORS: 50, // Limit the number of errors that can be stored to prevent uncontrolled size gains\n CACHE_KEY: \"server-telemetry\",\n CATEGORY_SEPARATOR: \"|\",\n VALUE_SEPARATOR: \",\",\n OVERFLOW_TRUE: \"1\",\n OVERFLOW_FALSE: \"0\",\n UNKNOWN_ERROR: \"unknown_error\",\n};\n\n/**\n * Type of the authentication request\n */\nexport const AuthenticationScheme = {\n BEARER: \"Bearer\",\n POP: \"pop\",\n SSH: \"ssh-cert\",\n} as const;\nexport type AuthenticationScheme =\n (typeof AuthenticationScheme)[keyof typeof AuthenticationScheme];\n\n/**\n * Constants related to throttling\n */\nexport const ThrottlingConstants = {\n // Default time to throttle RequestThumbprint in seconds\n DEFAULT_THROTTLE_TIME_SECONDS: 60,\n // Default maximum time to throttle in seconds, overrides what the server sends back\n DEFAULT_MAX_THROTTLE_TIME_SECONDS: 3600,\n // Prefix for storing throttling entries\n THROTTLING_PREFIX: \"throttling\",\n // Value assigned to the x-ms-lib-capability header to indicate to the server the library supports throttling\n X_MS_LIB_CAPABILITY_VALUE: \"retry-after, h429\",\n};\n\nexport const Errors = {\n INVALID_GRANT_ERROR: \"invalid_grant\",\n CLIENT_MISMATCH_ERROR: \"client_mismatch\",\n};\n\n/**\n * Password grant parameters\n */\nexport const PasswordGrantConstants = {\n username: \"username\",\n password: \"password\",\n} as const;\nexport type PasswordGrantConstants =\n (typeof PasswordGrantConstants)[keyof typeof PasswordGrantConstants];\n\n/**\n * Response codes\n */\nexport const ResponseCodes = {\n httpSuccess: 200,\n httpBadRequest: 400,\n} as const;\nexport type ResponseCodes = (typeof ResponseCodes)[keyof typeof ResponseCodes];\n\n/**\n * Region Discovery Sources\n */\nexport const RegionDiscoverySources = {\n FAILED_AUTO_DETECTION: \"1\",\n INTERNAL_CACHE: \"2\",\n ENVIRONMENT_VARIABLE: \"3\",\n IMDS: \"4\",\n} as const;\nexport type RegionDiscoverySources =\n (typeof RegionDiscoverySources)[keyof typeof RegionDiscoverySources];\n\n/**\n * Region Discovery Outcomes\n */\nexport const RegionDiscoveryOutcomes = {\n CONFIGURED_MATCHES_DETECTED: \"1\",\n CONFIGURED_NO_AUTO_DETECTION: \"2\",\n CONFIGURED_NOT_DETECTED: \"3\",\n AUTO_DETECTION_REQUESTED_SUCCESSFUL: \"4\",\n AUTO_DETECTION_REQUESTED_FAILED: \"5\",\n} as const;\nexport type RegionDiscoveryOutcomes =\n (typeof RegionDiscoveryOutcomes)[keyof typeof RegionDiscoveryOutcomes];\n\n/**\n * Specifies the reason for fetching the access token from the identity provider\n */\nexport const CacheOutcome = {\n // When a token is found in the cache or the cache is not supposed to be hit when making the request\n NOT_APPLICABLE: \"0\",\n // When the token request goes to the identity provider because force_refresh was set to true. Also occurs if claims were requested\n FORCE_REFRESH_OR_CLAIMS: \"1\",\n // When the token request goes to the identity provider because no cached access token exists\n NO_CACHED_ACCESS_TOKEN: \"2\",\n // When the token request goes to the identity provider because cached access token expired\n CACHED_ACCESS_TOKEN_EXPIRED: \"3\",\n // When the token request goes to the identity provider because refresh_in was used and the existing token needs to be refreshed\n PROACTIVELY_REFRESHED: \"4\",\n} as const;\nexport type CacheOutcome = (typeof CacheOutcome)[keyof typeof CacheOutcome];\n\nexport const JsonWebTokenTypes = {\n Jwt: \"JWT\",\n Jwk: \"JWK\",\n Pop: \"pop\",\n} as const;\nexport type JsonWebTokenTypes =\n (typeof JsonWebTokenTypes)[keyof typeof JsonWebTokenTypes];\n\nexport const ONE_DAY_IN_MS = 86400000;\n\n// Token renewal offset default in seconds\nexport const DEFAULT_TOKEN_RENEWAL_OFFSET_SEC = 300;\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { LoggerOptions } from \"../config/ClientConfiguration.js\";\nimport { Constants } from \"../utils/Constants.js\";\n\n/**\n * Options for logger messages.\n */\nexport type LoggerMessageOptions = {\n logLevel: LogLevel;\n containsPii?: boolean;\n context?: string;\n correlationId?: string;\n};\n\n/**\n * Log message level.\n */\nexport enum LogLevel {\n Error,\n Warning,\n Info,\n Verbose,\n Trace,\n}\n\n/**\n * Callback to send the messages to.\n */\nexport interface ILoggerCallback {\n (level: LogLevel, message: string, containsPii: boolean): void;\n}\n\n/**\n * Class which facilitates logging of messages to a specific place.\n */\nexport class Logger {\n // Correlation ID for request, usually set by user.\n private correlationId: string;\n\n // Current log level, defaults to info.\n private level: LogLevel = LogLevel.Info;\n\n // Boolean describing whether PII logging is allowed.\n private piiLoggingEnabled: boolean;\n\n // Callback to send messages to.\n private localCallback: ILoggerCallback;\n\n // Package name implementing this logger\n private packageName: string;\n\n // Package version implementing this logger\n private packageVersion: string;\n\n constructor(\n loggerOptions: LoggerOptions,\n packageName?: string,\n packageVersion?: string\n ) {\n const defaultLoggerCallback = () => {\n return;\n };\n const setLoggerOptions =\n loggerOptions || Logger.createDefaultLoggerOptions();\n this.localCallback =\n setLoggerOptions.loggerCallback || defaultLoggerCallback;\n this.piiLoggingEnabled = setLoggerOptions.piiLoggingEnabled || false;\n this.level =\n typeof setLoggerOptions.logLevel === \"number\"\n ? setLoggerOptions.logLevel\n : LogLevel.Info;\n this.correlationId =\n setLoggerOptions.correlationId || Constants.EMPTY_STRING;\n this.packageName = packageName || Constants.EMPTY_STRING;\n this.packageVersion = packageVersion || Constants.EMPTY_STRING;\n }\n\n private static createDefaultLoggerOptions(): LoggerOptions {\n return {\n loggerCallback: () => {\n // allow users to not set loggerCallback\n },\n piiLoggingEnabled: false,\n logLevel: LogLevel.Info,\n };\n }\n\n /**\n * Create new Logger with existing configurations.\n */\n public clone(\n packageName: string,\n packageVersion: string,\n correlationId?: string\n ): Logger {\n return new Logger(\n {\n loggerCallback: this.localCallback,\n piiLoggingEnabled: this.piiLoggingEnabled,\n logLevel: this.level,\n correlationId: correlationId || this.correlationId,\n },\n packageName,\n packageVersion\n );\n }\n\n /**\n * Log message with required options.\n */\n private logMessage(\n logMessage: string,\n options: LoggerMessageOptions\n ): void {\n if (\n options.logLevel > this.level ||\n (!this.piiLoggingEnabled && options.containsPii)\n ) {\n return;\n }\n const timestamp = new Date().toUTCString();\n\n // Add correlationId to logs if set, correlationId provided on log messages take precedence\n const logHeader = `[${timestamp}] : [${\n options.correlationId || this.correlationId || \"\"\n }]`;\n\n const log = `${logHeader} : ${this.packageName}@${\n this.packageVersion\n } : ${LogLevel[options.logLevel]} - ${logMessage}`;\n // debug(`msal:${LogLevel[options.logLevel]}${options.containsPii ? \"-Pii\": Constants.EMPTY_STRING}${options.context ? `:${options.context}` : Constants.EMPTY_STRING}`)(logMessage);\n this.executeCallback(\n options.logLevel,\n log,\n options.containsPii || false\n );\n }\n\n /**\n * Execute callback with message.\n */\n executeCallback(\n level: LogLevel,\n message: string,\n containsPii: boolean\n ): void {\n if (this.localCallback) {\n this.localCallback(level, message, containsPii);\n }\n }\n\n /**\n * Logs error messages.\n */\n error(message: string, correlationId?: string): void {\n this.logMessage(message, {\n logLevel: LogLevel.Error,\n containsPii: false,\n correlationId: correlationId || Constants.EMPTY_STRING,\n });\n }\n\n /**\n * Logs error messages with PII.\n */\n errorPii(message: string, correlationId?: string): void {\n this.logMessage(message, {\n logLevel: LogLevel.Error,\n containsPii: true,\n correlationId: correlationId || Constants.EMPTY_STRING,\n });\n }\n\n /**\n * Logs warning messages.\n */\n warning(message: string, correlationId?: string): void {\n this.logMessage(message, {\n logLevel: LogLevel.Warning,\n containsPii: false,\n correlationId: correlationId || Constants.EMPTY_STRING,\n });\n }\n\n /**\n * Logs warning messages with PII.\n */\n warningPii(message: string, correlationId?: string): void {\n this.logMessage(message, {\n logLevel: LogLevel.Warning,\n containsPii: true,\n correlationId: correlationId || Constants.EMPTY_STRING,\n });\n }\n\n /**\n * Logs info messages.\n */\n info(message: string, correlationId?: string): void {\n this.logMessage(message, {\n logLevel: LogLevel.Info,\n containsPii: false,\n correlationId: correlationId || Constants.EMPTY_STRING,\n });\n }\n\n /**\n * Logs info messages with PII.\n */\n infoPii(message: string, correlationId?: string): void {\n this.logMessage(message, {\n logLevel: LogLevel.Info,\n containsPii: true,\n correlationId: correlationId || Constants.EMPTY_STRING,\n });\n }\n\n /**\n * Logs verbose messages.\n */\n verbose(message: string, correlationId?: string): void {\n this.logMessage(message, {\n logLevel: LogLevel.Verbose,\n containsPii: false,\n correlationId: correlationId || Constants.EMPTY_STRING,\n });\n }\n\n /**\n * Logs verbose messages with PII.\n */\n verbosePii(message: string, correlationId?: string): void {\n this.logMessage(message, {\n logLevel: LogLevel.Verbose,\n containsPii: true,\n correlationId: correlationId || Constants.EMPTY_STRING,\n });\n }\n\n /**\n * Logs trace messages.\n */\n trace(message: string, correlationId?: string): void {\n this.logMessage(message, {\n logLevel: LogLevel.Trace,\n containsPii: false,\n correlationId: correlationId || Constants.EMPTY_STRING,\n });\n }\n\n /**\n * Logs trace messages with PII.\n */\n tracePii(message: string, correlationId?: string): void {\n this.logMessage(message, {\n logLevel: LogLevel.Trace,\n containsPii: true,\n correlationId: correlationId || Constants.EMPTY_STRING,\n });\n }\n\n /**\n * Returns whether PII Logging is enabled or not.\n */\n isPiiLoggingEnabled(): boolean {\n return this.piiLoggingEnabled || false;\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\n/**\n * Protocol modes supported by MSAL.\n */\nexport const ProtocolMode = {\n AAD: \"AAD\",\n OIDC: \"OIDC\",\n} as const;\nexport type ProtocolMode = (typeof ProtocolMode)[keyof typeof ProtocolMode];\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { ProtocolMode } from \"./ProtocolMode.js\";\nimport { OIDCOptions } from \"./OIDCOptions.js\";\nimport { AzureRegionConfiguration } from \"./AzureRegionConfiguration.js\";\nimport { CloudInstanceDiscoveryResponse } from \"./CloudInstanceDiscoveryResponse.js\";\n\nexport type AuthorityOptions = {\n protocolMode: ProtocolMode;\n OIDCOptions?: OIDCOptions | null;\n knownAuthorities: Array;\n cloudDiscoveryMetadata: string;\n authorityMetadata: string;\n skipAuthorityMetadataCache?: boolean;\n azureRegionConfiguration?: AzureRegionConfiguration;\n authority?: string;\n};\n\nexport type StaticAuthorityOptions = Partial<\n Pick\n> & {\n canonicalAuthority?: string;\n cloudDiscoveryMetadata?: CloudInstanceDiscoveryResponse;\n};\n\nexport const AzureCloudInstance = {\n // AzureCloudInstance is not specified.\n None: \"none\",\n\n // Microsoft Azure public cloud\n AzurePublic: \"https://login.microsoftonline.com\",\n\n // Microsoft PPE\n AzurePpe: \"https://login.windows-ppe.net\",\n\n // Microsoft Chinese national/regional cloud\n AzureChina: \"https://login.chinacloudapi.cn\",\n\n // Microsoft German national/regional cloud (\"Black Forest\")\n AzureGermany: \"https://login.microsoftonline.de\",\n\n // US Government cloud\n AzureUsGovernment: \"https://login.microsoftonline.us\",\n} as const;\nexport type AzureCloudInstance =\n (typeof AzureCloudInstance)[keyof typeof AzureCloudInstance];\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\n/**\n * AuthErrorMessage class containing string constants used by error codes and messages.\n */\nexport const unexpectedError = \"unexpected_error\";\nexport const postRequestFailed = \"post_request_failed\";\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { Constants } from \"../utils/Constants.js\";\nimport * as AuthErrorCodes from \"./AuthErrorCodes.js\";\nexport { AuthErrorCodes };\n\nexport const AuthErrorMessages = {\n [AuthErrorCodes.unexpectedError]: \"Unexpected error in authentication.\",\n [AuthErrorCodes.postRequestFailed]:\n \"Post request failed from the network, could be a 4xx/5xx or a network unavailability. Please check the exact error code for details.\",\n};\n\n/**\n * AuthErrorMessage class containing string constants used by error codes and messages.\n * @deprecated Use AuthErrorCodes instead\n */\nexport const AuthErrorMessage = {\n unexpectedError: {\n code: AuthErrorCodes.unexpectedError,\n desc: AuthErrorMessages[AuthErrorCodes.unexpectedError],\n },\n postRequestFailed: {\n code: AuthErrorCodes.postRequestFailed,\n desc: AuthErrorMessages[AuthErrorCodes.postRequestFailed],\n },\n};\n\n/**\n * General error class thrown by the MSAL.js library.\n */\nexport class AuthError extends Error {\n /**\n * Short string denoting error\n */\n errorCode: string;\n\n /**\n * Detailed description of error\n */\n errorMessage: string;\n\n /**\n * Describes the subclass of an error\n */\n subError: string;\n\n /**\n * CorrelationId associated with the error\n */\n correlationId: string;\n\n constructor(errorCode?: string, errorMessage?: string, suberror?: string) {\n const errorString = errorMessage\n ? `${errorCode}: ${errorMessage}`\n : errorCode;\n super(errorString);\n Object.setPrototypeOf(this, AuthError.prototype);\n\n this.errorCode = errorCode || Constants.EMPTY_STRING;\n this.errorMessage = errorMessage || Constants.EMPTY_STRING;\n this.subError = suberror || Constants.EMPTY_STRING;\n this.name = \"AuthError\";\n }\n\n setCorrelationId(correlationId: string): void {\n this.correlationId = correlationId;\n }\n}\n\nexport function createAuthError(\n code: string,\n additionalMessage?: string\n): AuthError {\n return new AuthError(\n code,\n additionalMessage\n ? `${AuthErrorMessages[code]} ${additionalMessage}`\n : AuthErrorMessages[code]\n );\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nexport const clientInfoDecodingError = \"client_info_decoding_error\";\nexport const clientInfoEmptyError = \"client_info_empty_error\";\nexport const tokenParsingError = \"token_parsing_error\";\nexport const nullOrEmptyToken = \"null_or_empty_token\";\nexport const endpointResolutionError = \"endpoints_resolution_error\";\nexport const networkError = \"network_error\";\nexport const openIdConfigError = \"openid_config_error\";\nexport const hashNotDeserialized = \"hash_not_deserialized\";\nexport const invalidState = \"invalid_state\";\nexport const stateMismatch = \"state_mismatch\";\nexport const stateNotFound = \"state_not_found\";\nexport const nonceMismatch = \"nonce_mismatch\";\nexport const authTimeNotFound = \"auth_time_not_found\";\nexport const maxAgeTranspired = \"max_age_transpired\";\nexport const multipleMatchingTokens = \"multiple_matching_tokens\";\nexport const multipleMatchingAccounts = \"multiple_matching_accounts\";\nexport const multipleMatchingAppMetadata = \"multiple_matching_appMetadata\";\nexport const requestCannotBeMade = \"request_cannot_be_made\";\nexport const cannotRemoveEmptyScope = \"cannot_remove_empty_scope\";\nexport const cannotAppendScopeSet = \"cannot_append_scopeset\";\nexport const emptyInputScopeSet = \"empty_input_scopeset\";\nexport const deviceCodePollingCancelled = \"device_code_polling_cancelled\";\nexport const deviceCodeExpired = \"device_code_expired\";\nexport const deviceCodeUnknownError = \"device_code_unknown_error\";\nexport const noAccountInSilentRequest = \"no_account_in_silent_request\";\nexport const invalidCacheRecord = \"invalid_cache_record\";\nexport const invalidCacheEnvironment = \"invalid_cache_environment\";\nexport const noAccountFound = \"no_account_found\";\nexport const noCryptoObject = \"no_crypto_object\";\nexport const unexpectedCredentialType = \"unexpected_credential_type\";\nexport const invalidAssertion = \"invalid_assertion\";\nexport const invalidClientCredential = \"invalid_client_credential\";\nexport const tokenRefreshRequired = \"token_refresh_required\";\nexport const userTimeoutReached = \"user_timeout_reached\";\nexport const tokenClaimsCnfRequiredForSignedJwt =\n \"token_claims_cnf_required_for_signedjwt\";\nexport const authorizationCodeMissingFromServerResponse =\n \"authorization_code_missing_from_server_response\";\nexport const bindingKeyNotRemoved = \"binding_key_not_removed\";\nexport const endSessionEndpointNotSupported =\n \"end_session_endpoint_not_supported\";\nexport const keyIdMissing = \"key_id_missing\";\nexport const noNetworkConnectivity = \"no_network_connectivity\";\nexport const userCanceled = \"user_canceled\";\nexport const missingTenantIdError = \"missing_tenant_id_error\";\nexport const methodNotImplemented = \"method_not_implemented\";\nexport const nestedAppAuthBridgeDisabled = \"nested_app_auth_bridge_disabled\";\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { AuthError } from \"./AuthError.js\";\nimport * as ClientAuthErrorCodes from \"./ClientAuthErrorCodes.js\";\nexport { ClientAuthErrorCodes }; // Allow importing as \"ClientAuthErrorCodes\";\n\n/**\n * ClientAuthErrorMessage class containing string constants used by error codes and messages.\n */\n\nexport const ClientAuthErrorMessages = {\n [ClientAuthErrorCodes.clientInfoDecodingError]:\n \"The client info could not be parsed/decoded correctly\",\n [ClientAuthErrorCodes.clientInfoEmptyError]: \"The client info was empty\",\n [ClientAuthErrorCodes.tokenParsingError]: \"Token cannot be parsed\",\n [ClientAuthErrorCodes.nullOrEmptyToken]: \"The token is null or empty\",\n [ClientAuthErrorCodes.endpointResolutionError]:\n \"Endpoints cannot be resolved\",\n [ClientAuthErrorCodes.networkError]: \"Network request failed\",\n [ClientAuthErrorCodes.openIdConfigError]:\n \"Could not retrieve endpoints. Check your authority and verify the .well-known/openid-configuration endpoint returns the required endpoints.\",\n [ClientAuthErrorCodes.hashNotDeserialized]:\n \"The hash parameters could not be deserialized\",\n [ClientAuthErrorCodes.invalidState]: \"State was not the expected format\",\n [ClientAuthErrorCodes.stateMismatch]: \"State mismatch error\",\n [ClientAuthErrorCodes.stateNotFound]: \"State not found\",\n [ClientAuthErrorCodes.nonceMismatch]: \"Nonce mismatch error\",\n [ClientAuthErrorCodes.authTimeNotFound]:\n \"Max Age was requested and the ID token is missing the auth_time variable.\" +\n \" auth_time is an optional claim and is not enabled by default - it must be enabled.\" +\n \" See https://aka.ms/msaljs/optional-claims for more information.\",\n [ClientAuthErrorCodes.maxAgeTranspired]:\n \"Max Age is set to 0, or too much time has elapsed since the last end-user authentication.\",\n [ClientAuthErrorCodes.multipleMatchingTokens]:\n \"The cache contains multiple tokens satisfying the requirements. \" +\n \"Call AcquireToken again providing more requirements such as authority or account.\",\n [ClientAuthErrorCodes.multipleMatchingAccounts]:\n \"The cache contains multiple accounts satisfying the given parameters. Please pass more info to obtain the correct account\",\n [ClientAuthErrorCodes.multipleMatchingAppMetadata]:\n \"The cache contains multiple appMetadata satisfying the given parameters. Please pass more info to obtain the correct appMetadata\",\n [ClientAuthErrorCodes.requestCannotBeMade]:\n \"Token request cannot be made without authorization code or refresh token.\",\n [ClientAuthErrorCodes.cannotRemoveEmptyScope]:\n \"Cannot remove null or empty scope from ScopeSet\",\n [ClientAuthErrorCodes.cannotAppendScopeSet]: \"Cannot append ScopeSet\",\n [ClientAuthErrorCodes.emptyInputScopeSet]:\n \"Empty input ScopeSet cannot be processed\",\n [ClientAuthErrorCodes.deviceCodePollingCancelled]:\n \"Caller has cancelled token endpoint polling during device code flow by setting DeviceCodeRequest.cancel = true.\",\n [ClientAuthErrorCodes.deviceCodeExpired]: \"Device code is expired.\",\n [ClientAuthErrorCodes.deviceCodeUnknownError]:\n \"Device code stopped polling for unknown reasons.\",\n [ClientAuthErrorCodes.noAccountInSilentRequest]:\n \"Please pass an account object, silent flow is not supported without account information\",\n [ClientAuthErrorCodes.invalidCacheRecord]:\n \"Cache record object was null or undefined.\",\n [ClientAuthErrorCodes.invalidCacheEnvironment]:\n \"Invalid environment when attempting to create cache entry\",\n [ClientAuthErrorCodes.noAccountFound]:\n \"No account found in cache for given key.\",\n [ClientAuthErrorCodes.noCryptoObject]: \"No crypto object detected.\",\n [ClientAuthErrorCodes.unexpectedCredentialType]:\n \"Unexpected credential type.\",\n [ClientAuthErrorCodes.invalidAssertion]:\n \"Client assertion must meet requirements described in https://tools.ietf.org/html/rfc7515\",\n [ClientAuthErrorCodes.invalidClientCredential]:\n \"Client credential (secret, certificate, or assertion) must not be empty when creating a confidential client. An application should at most have one credential\",\n [ClientAuthErrorCodes.tokenRefreshRequired]:\n \"Cannot return token from cache because it must be refreshed. This may be due to one of the following reasons: forceRefresh parameter is set to true, claims have been requested, there is no cached access token or it is expired.\",\n [ClientAuthErrorCodes.userTimeoutReached]:\n \"User defined timeout for device code polling reached\",\n [ClientAuthErrorCodes.tokenClaimsCnfRequiredForSignedJwt]:\n \"Cannot generate a POP jwt if the token_claims are not populated\",\n [ClientAuthErrorCodes.authorizationCodeMissingFromServerResponse]:\n \"Server response does not contain an authorization code to proceed\",\n [ClientAuthErrorCodes.bindingKeyNotRemoved]:\n \"Could not remove the credential's binding key from storage.\",\n [ClientAuthErrorCodes.endSessionEndpointNotSupported]:\n \"The provided authority does not support logout\",\n [ClientAuthErrorCodes.keyIdMissing]:\n \"A keyId value is missing from the requested bound token's cache record and is required to match the token to it's stored binding key.\",\n [ClientAuthErrorCodes.noNetworkConnectivity]:\n \"No network connectivity. Check your internet connection.\",\n [ClientAuthErrorCodes.userCanceled]: \"User cancelled the flow.\",\n [ClientAuthErrorCodes.missingTenantIdError]:\n \"A tenant id - not common, organizations, or consumers - must be specified when using the client_credentials flow.\",\n [ClientAuthErrorCodes.methodNotImplemented]:\n \"This method has not been implemented\",\n [ClientAuthErrorCodes.nestedAppAuthBridgeDisabled]:\n \"The nested app auth bridge is disabled\",\n};\n\n/**\n * String constants used by error codes and messages.\n * @deprecated Use ClientAuthErrorCodes instead\n */\nexport const ClientAuthErrorMessage = {\n clientInfoDecodingError: {\n code: ClientAuthErrorCodes.clientInfoDecodingError,\n desc: ClientAuthErrorMessages[\n ClientAuthErrorCodes.clientInfoDecodingError\n ],\n },\n clientInfoEmptyError: {\n code: ClientAuthErrorCodes.clientInfoEmptyError,\n desc: ClientAuthErrorMessages[\n ClientAuthErrorCodes.clientInfoEmptyError\n ],\n },\n tokenParsingError: {\n code: ClientAuthErrorCodes.tokenParsingError,\n desc: ClientAuthErrorMessages[ClientAuthErrorCodes.tokenParsingError],\n },\n nullOrEmptyToken: {\n code: ClientAuthErrorCodes.nullOrEmptyToken,\n desc: ClientAuthErrorMessages[ClientAuthErrorCodes.nullOrEmptyToken],\n },\n endpointResolutionError: {\n code: ClientAuthErrorCodes.endpointResolutionError,\n desc: ClientAuthErrorMessages[\n ClientAuthErrorCodes.endpointResolutionError\n ],\n },\n networkError: {\n code: ClientAuthErrorCodes.networkError,\n desc: ClientAuthErrorMessages[ClientAuthErrorCodes.networkError],\n },\n unableToGetOpenidConfigError: {\n code: ClientAuthErrorCodes.openIdConfigError,\n desc: ClientAuthErrorMessages[ClientAuthErrorCodes.openIdConfigError],\n },\n hashNotDeserialized: {\n code: ClientAuthErrorCodes.hashNotDeserialized,\n desc: ClientAuthErrorMessages[ClientAuthErrorCodes.hashNotDeserialized],\n },\n invalidStateError: {\n code: ClientAuthErrorCodes.invalidState,\n desc: ClientAuthErrorMessages[ClientAuthErrorCodes.invalidState],\n },\n stateMismatchError: {\n code: ClientAuthErrorCodes.stateMismatch,\n desc: ClientAuthErrorMessages[ClientAuthErrorCodes.stateMismatch],\n },\n stateNotFoundError: {\n code: ClientAuthErrorCodes.stateNotFound,\n desc: ClientAuthErrorMessages[ClientAuthErrorCodes.stateNotFound],\n },\n nonceMismatchError: {\n code: ClientAuthErrorCodes.nonceMismatch,\n desc: ClientAuthErrorMessages[ClientAuthErrorCodes.nonceMismatch],\n },\n authTimeNotFoundError: {\n code: ClientAuthErrorCodes.authTimeNotFound,\n desc: ClientAuthErrorMessages[ClientAuthErrorCodes.authTimeNotFound],\n },\n maxAgeTranspired: {\n code: ClientAuthErrorCodes.maxAgeTranspired,\n desc: ClientAuthErrorMessages[ClientAuthErrorCodes.maxAgeTranspired],\n },\n multipleMatchingTokens: {\n code: ClientAuthErrorCodes.multipleMatchingTokens,\n desc: ClientAuthErrorMessages[\n ClientAuthErrorCodes.multipleMatchingTokens\n ],\n },\n multipleMatchingAccounts: {\n code: ClientAuthErrorCodes.multipleMatchingAccounts,\n desc: ClientAuthErrorMessages[\n ClientAuthErrorCodes.multipleMatchingAccounts\n ],\n },\n multipleMatchingAppMetadata: {\n code: ClientAuthErrorCodes.multipleMatchingAppMetadata,\n desc: ClientAuthErrorMessages[\n ClientAuthErrorCodes.multipleMatchingAppMetadata\n ],\n },\n tokenRequestCannotBeMade: {\n code: ClientAuthErrorCodes.requestCannotBeMade,\n desc: ClientAuthErrorMessages[ClientAuthErrorCodes.requestCannotBeMade],\n },\n removeEmptyScopeError: {\n code: ClientAuthErrorCodes.cannotRemoveEmptyScope,\n desc: ClientAuthErrorMessages[\n ClientAuthErrorCodes.cannotRemoveEmptyScope\n ],\n },\n appendScopeSetError: {\n code: ClientAuthErrorCodes.cannotAppendScopeSet,\n desc: ClientAuthErrorMessages[\n ClientAuthErrorCodes.cannotAppendScopeSet\n ],\n },\n emptyInputScopeSetError: {\n code: ClientAuthErrorCodes.emptyInputScopeSet,\n desc: ClientAuthErrorMessages[ClientAuthErrorCodes.emptyInputScopeSet],\n },\n DeviceCodePollingCancelled: {\n code: ClientAuthErrorCodes.deviceCodePollingCancelled,\n desc: ClientAuthErrorMessages[\n ClientAuthErrorCodes.deviceCodePollingCancelled\n ],\n },\n DeviceCodeExpired: {\n code: ClientAuthErrorCodes.deviceCodeExpired,\n desc: ClientAuthErrorMessages[ClientAuthErrorCodes.deviceCodeExpired],\n },\n DeviceCodeUnknownError: {\n code: ClientAuthErrorCodes.deviceCodeUnknownError,\n desc: ClientAuthErrorMessages[\n ClientAuthErrorCodes.deviceCodeUnknownError\n ],\n },\n NoAccountInSilentRequest: {\n code: ClientAuthErrorCodes.noAccountInSilentRequest,\n desc: ClientAuthErrorMessages[\n ClientAuthErrorCodes.noAccountInSilentRequest\n ],\n },\n invalidCacheRecord: {\n code: ClientAuthErrorCodes.invalidCacheRecord,\n desc: ClientAuthErrorMessages[ClientAuthErrorCodes.invalidCacheRecord],\n },\n invalidCacheEnvironment: {\n code: ClientAuthErrorCodes.invalidCacheEnvironment,\n desc: ClientAuthErrorMessages[\n ClientAuthErrorCodes.invalidCacheEnvironment\n ],\n },\n noAccountFound: {\n code: ClientAuthErrorCodes.noAccountFound,\n desc: ClientAuthErrorMessages[ClientAuthErrorCodes.noAccountFound],\n },\n noCryptoObj: {\n code: ClientAuthErrorCodes.noCryptoObject,\n desc: ClientAuthErrorMessages[ClientAuthErrorCodes.noCryptoObject],\n },\n unexpectedCredentialType: {\n code: ClientAuthErrorCodes.unexpectedCredentialType,\n desc: ClientAuthErrorMessages[\n ClientAuthErrorCodes.unexpectedCredentialType\n ],\n },\n invalidAssertion: {\n code: ClientAuthErrorCodes.invalidAssertion,\n desc: ClientAuthErrorMessages[ClientAuthErrorCodes.invalidAssertion],\n },\n invalidClientCredential: {\n code: ClientAuthErrorCodes.invalidClientCredential,\n desc: ClientAuthErrorMessages[\n ClientAuthErrorCodes.invalidClientCredential\n ],\n },\n tokenRefreshRequired: {\n code: ClientAuthErrorCodes.tokenRefreshRequired,\n desc: ClientAuthErrorMessages[\n ClientAuthErrorCodes.tokenRefreshRequired\n ],\n },\n userTimeoutReached: {\n code: ClientAuthErrorCodes.userTimeoutReached,\n desc: ClientAuthErrorMessages[ClientAuthErrorCodes.userTimeoutReached],\n },\n tokenClaimsRequired: {\n code: ClientAuthErrorCodes.tokenClaimsCnfRequiredForSignedJwt,\n desc: ClientAuthErrorMessages[\n ClientAuthErrorCodes.tokenClaimsCnfRequiredForSignedJwt\n ],\n },\n noAuthorizationCodeFromServer: {\n code: ClientAuthErrorCodes.authorizationCodeMissingFromServerResponse,\n desc: ClientAuthErrorMessages[\n ClientAuthErrorCodes.authorizationCodeMissingFromServerResponse\n ],\n },\n bindingKeyNotRemovedError: {\n code: ClientAuthErrorCodes.bindingKeyNotRemoved,\n desc: ClientAuthErrorMessages[\n ClientAuthErrorCodes.bindingKeyNotRemoved\n ],\n },\n logoutNotSupported: {\n code: ClientAuthErrorCodes.endSessionEndpointNotSupported,\n desc: ClientAuthErrorMessages[\n ClientAuthErrorCodes.endSessionEndpointNotSupported\n ],\n },\n keyIdMissing: {\n code: ClientAuthErrorCodes.keyIdMissing,\n desc: ClientAuthErrorMessages[ClientAuthErrorCodes.keyIdMissing],\n },\n noNetworkConnectivity: {\n code: ClientAuthErrorCodes.noNetworkConnectivity,\n desc: ClientAuthErrorMessages[\n ClientAuthErrorCodes.noNetworkConnectivity\n ],\n },\n userCanceledError: {\n code: ClientAuthErrorCodes.userCanceled,\n desc: ClientAuthErrorMessages[ClientAuthErrorCodes.userCanceled],\n },\n missingTenantIdError: {\n code: ClientAuthErrorCodes.missingTenantIdError,\n desc: ClientAuthErrorMessages[\n ClientAuthErrorCodes.missingTenantIdError\n ],\n },\n nestedAppAuthBridgeDisabled: {\n code: ClientAuthErrorCodes.nestedAppAuthBridgeDisabled,\n desc: ClientAuthErrorMessages[\n ClientAuthErrorCodes.nestedAppAuthBridgeDisabled\n ],\n },\n};\n\n/**\n * Error thrown when there is an error in the client code running on the browser.\n */\nexport class ClientAuthError extends AuthError {\n constructor(errorCode: string, additionalMessage?: string) {\n super(\n errorCode,\n additionalMessage\n ? `${ClientAuthErrorMessages[errorCode]}: ${additionalMessage}`\n : ClientAuthErrorMessages[errorCode]\n );\n this.name = \"ClientAuthError\";\n\n Object.setPrototypeOf(this, ClientAuthError.prototype);\n }\n}\n\nexport function createClientAuthError(\n errorCode: string,\n additionalMessage?: string\n): ClientAuthError {\n return new ClientAuthError(errorCode, additionalMessage);\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport {\n ClientAuthErrorCodes,\n createClientAuthError,\n} from \"../error/ClientAuthError.js\";\nimport { BaseAuthRequest } from \"../request/BaseAuthRequest.js\";\nimport { ShrOptions, SignedHttpRequest } from \"./SignedHttpRequest.js\";\n\n/**\n * The PkceCodes type describes the structure\n * of objects that contain PKCE code\n * challenge and verifier pairs\n */\nexport type PkceCodes = {\n verifier: string;\n challenge: string;\n};\n\nexport type SignedHttpRequestParameters = Pick<\n BaseAuthRequest,\n | \"resourceRequestMethod\"\n | \"resourceRequestUri\"\n | \"shrClaims\"\n | \"shrNonce\"\n | \"shrOptions\"\n> & {\n correlationId?: string;\n};\n\n/**\n * Interface for crypto functions used by library\n */\nexport interface ICrypto {\n /**\n * Creates a guid randomly.\n */\n createNewGuid(): string;\n /**\n * base64 Encode string\n * @param input\n */\n base64Encode(input: string): string;\n /**\n * base64 decode string\n * @param input\n */\n base64Decode(input: string): string;\n /**\n * base64 URL safe encoded string\n */\n base64UrlEncode(input: string): string;\n /**\n * Stringifies and base64Url encodes input public key\n * @param inputKid\n * @returns Base64Url encoded public key\n */\n encodeKid(inputKid: string): string;\n /**\n * Generates an JWK RSA S256 Thumbprint\n * @param request\n */\n getPublicKeyThumbprint(\n request: SignedHttpRequestParameters\n ): Promise;\n /**\n * Removes cryptographic keypair from key store matching the keyId passed in\n * @param kid\n */\n removeTokenBindingKey(kid: string): Promise;\n /**\n * Removes all cryptographic keys from IndexedDB storage\n */\n clearKeystore(): Promise;\n /**\n * Returns a signed proof-of-possession token with a given acces token that contains a cnf claim with the required kid.\n * @param accessToken\n */\n signJwt(\n payload: SignedHttpRequest,\n kid: string,\n shrOptions?: ShrOptions,\n correlationId?: string\n ): Promise;\n /**\n * Returns the SHA-256 hash of an input string\n * @param plainText\n */\n hashString(plainText: string): Promise;\n}\n\nexport const DEFAULT_CRYPTO_IMPLEMENTATION: ICrypto = {\n createNewGuid: (): string => {\n throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented);\n },\n base64Decode: (): string => {\n throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented);\n },\n base64Encode: (): string => {\n throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented);\n },\n base64UrlEncode: (): string => {\n throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented);\n },\n encodeKid: (): string => {\n throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented);\n },\n async getPublicKeyThumbprint(): Promise {\n throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented);\n },\n async removeTokenBindingKey(): Promise {\n throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented);\n },\n async clearKeystore(): Promise {\n throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented);\n },\n async signJwt(): Promise {\n throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented);\n },\n async hashString(): Promise {\n throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented);\n },\n};\n","/* eslint-disable header/header */\nexport const name = \"@azure/msal-common\";\nexport const version = \"14.16.0\";\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { TokenClaims } from \"./TokenClaims.js\";\nimport {\n createClientAuthError,\n ClientAuthErrorCodes,\n} from \"../error/ClientAuthError.js\";\n\n/**\n * Extract token by decoding the rawToken\n *\n * @param encodedToken\n */\nexport function extractTokenClaims(\n encodedToken: string,\n base64Decode: (input: string) => string\n): TokenClaims {\n const jswPayload = getJWSPayload(encodedToken);\n\n // token will be decoded to get the username\n try {\n // base64Decode() should throw an error if there is an issue\n const base64Decoded = base64Decode(jswPayload);\n return JSON.parse(base64Decoded) as TokenClaims;\n } catch (err) {\n throw createClientAuthError(ClientAuthErrorCodes.tokenParsingError);\n }\n}\n\n/**\n * decode a JWT\n *\n * @param authToken\n */\nexport function getJWSPayload(authToken: string): string {\n if (!authToken) {\n throw createClientAuthError(ClientAuthErrorCodes.nullOrEmptyToken);\n }\n const tokenPartsRegex = /^([^\\.\\s]*)\\.([^\\.\\s]+)\\.([^\\.\\s]*)$/;\n const matches = tokenPartsRegex.exec(authToken);\n if (!matches || matches.length < 4) {\n throw createClientAuthError(ClientAuthErrorCodes.tokenParsingError);\n }\n /**\n * const crackedToken = {\n * header: matches[1],\n * JWSPayload: matches[2],\n * JWSSig: matches[3],\n * };\n */\n\n return matches[2];\n}\n\n/**\n * Determine if the token's max_age has transpired\n */\nexport function checkMaxAge(authTime: number, maxAge: number): void {\n /*\n * per https://openid.net/specs/openid-connect-core-1_0.html#AuthRequest\n * To force an immediate re-authentication: If an app requires that a user re-authenticate prior to access,\n * provide a value of 0 for the max_age parameter and the AS will force a fresh login.\n */\n const fiveMinuteSkew = 300000; // five minutes in milliseconds\n if (maxAge === 0 || Date.now() - fiveMinuteSkew > authTime + maxAge) {\n throw createClientAuthError(ClientAuthErrorCodes.maxAgeTranspired);\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\n/**\n * Utility functions for managing date and time operations.\n */\n\n/**\n * return the current time in Unix time (seconds).\n */\nexport function nowSeconds(): number {\n // Date.getTime() returns in milliseconds.\n return Math.round(new Date().getTime() / 1000.0);\n}\n\n/**\n * check if a token is expired based on given UTC time in seconds.\n * @param expiresOn\n */\nexport function isTokenExpired(expiresOn: string, offset: number): boolean {\n // check for access token expiry\n const expirationSec = Number(expiresOn) || 0;\n const offsetCurrentTimeSec = nowSeconds() + offset;\n\n // If current time + offset is greater than token expiration time, then token is expired.\n return offsetCurrentTimeSec > expirationSec;\n}\n\n/**\n * If the current time is earlier than the time that a token was cached at, we must discard the token\n * i.e. The system clock was turned back after acquiring the cached token\n * @param cachedAt\n * @param offset\n */\nexport function wasClockTurnedBack(cachedAt: string): boolean {\n const cachedAtSec = Number(cachedAt);\n\n return cachedAtSec > nowSeconds();\n}\n\n/**\n * Waits for t number of milliseconds\n * @param t number\n * @param value T\n */\nexport function delay(t: number, value?: T): Promise {\n return new Promise((resolve) => setTimeout(() => resolve(value), t));\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { extractTokenClaims } from \"../../account/AuthToken.js\";\nimport { TokenClaims } from \"../../account/TokenClaims.js\";\nimport { CloudDiscoveryMetadata } from \"../../authority/CloudDiscoveryMetadata.js\";\nimport { OpenIdConfigResponse } from \"../../authority/OpenIdConfigResponse.js\";\nimport {\n ClientAuthErrorCodes,\n createClientAuthError,\n} from \"../../error/ClientAuthError.js\";\nimport {\n APP_METADATA,\n AUTHORITY_METADATA_CONSTANTS,\n AuthenticationScheme,\n CredentialType,\n SERVER_TELEM_CONSTANTS,\n Separators,\n ThrottlingConstants,\n} from \"../../utils/Constants.js\";\nimport * as TimeUtils from \"../../utils/TimeUtils.js\";\nimport { AccessTokenEntity } from \"../entities/AccessTokenEntity.js\";\nimport { AppMetadataEntity } from \"../entities/AppMetadataEntity.js\";\nimport { AuthorityMetadataEntity } from \"../entities/AuthorityMetadataEntity.js\";\nimport { CredentialEntity } from \"../entities/CredentialEntity.js\";\nimport { IdTokenEntity } from \"../entities/IdTokenEntity.js\";\nimport { RefreshTokenEntity } from \"../entities/RefreshTokenEntity.js\";\n\n/**\n * Cache Key: -------\n * IdToken Example: uid.utid-login.microsoftonline.com-idtoken-app_client_id-contoso.com\n * AccessToken Example: uid.utid-login.microsoftonline.com-accesstoken-app_client_id-contoso.com-scope1 scope2--pop\n * RefreshToken Example: uid.utid-login.microsoftonline.com-refreshtoken-1-contoso.com\n * @param credentialEntity\n * @returns\n */\nexport function generateCredentialKey(\n credentialEntity: CredentialEntity\n): string {\n const credentialKey = [\n generateAccountId(credentialEntity),\n generateCredentialId(credentialEntity),\n generateTarget(credentialEntity),\n generateClaimsHash(credentialEntity),\n generateScheme(credentialEntity),\n ];\n\n return credentialKey.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase();\n}\n\n/**\n * Create IdTokenEntity\n * @param homeAccountId\n * @param authenticationResult\n * @param clientId\n * @param authority\n */\nexport function createIdTokenEntity(\n homeAccountId: string,\n environment: string,\n idToken: string,\n clientId: string,\n tenantId: string\n): IdTokenEntity {\n const idTokenEntity: IdTokenEntity = {\n credentialType: CredentialType.ID_TOKEN,\n homeAccountId: homeAccountId,\n environment: environment,\n clientId: clientId,\n secret: idToken,\n realm: tenantId,\n };\n\n return idTokenEntity;\n}\n\n/**\n * Create AccessTokenEntity\n * @param homeAccountId\n * @param environment\n * @param accessToken\n * @param clientId\n * @param tenantId\n * @param scopes\n * @param expiresOn\n * @param extExpiresOn\n */\nexport function createAccessTokenEntity(\n homeAccountId: string,\n environment: string,\n accessToken: string,\n clientId: string,\n tenantId: string,\n scopes: string,\n expiresOn: number,\n extExpiresOn: number,\n base64Decode: (input: string) => string,\n refreshOn?: number,\n tokenType?: AuthenticationScheme,\n userAssertionHash?: string,\n keyId?: string,\n requestedClaims?: string,\n requestedClaimsHash?: string\n): AccessTokenEntity {\n const atEntity: AccessTokenEntity = {\n homeAccountId: homeAccountId,\n credentialType: CredentialType.ACCESS_TOKEN,\n secret: accessToken,\n cachedAt: TimeUtils.nowSeconds().toString(),\n expiresOn: expiresOn.toString(),\n extendedExpiresOn: extExpiresOn.toString(),\n environment: environment,\n clientId: clientId,\n realm: tenantId,\n target: scopes,\n tokenType: tokenType || AuthenticationScheme.BEARER,\n };\n\n if (userAssertionHash) {\n atEntity.userAssertionHash = userAssertionHash;\n }\n\n if (refreshOn) {\n atEntity.refreshOn = refreshOn.toString();\n }\n\n if (requestedClaims) {\n atEntity.requestedClaims = requestedClaims;\n atEntity.requestedClaimsHash = requestedClaimsHash;\n }\n\n /*\n * Create Access Token With Auth Scheme instead of regular access token\n * Cast to lower to handle \"bearer\" from ADFS\n */\n if (\n atEntity.tokenType?.toLowerCase() !==\n AuthenticationScheme.BEARER.toLowerCase()\n ) {\n atEntity.credentialType = CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME;\n switch (atEntity.tokenType) {\n case AuthenticationScheme.POP:\n // Make sure keyId is present and add it to credential\n const tokenClaims: TokenClaims | null = extractTokenClaims(\n accessToken,\n base64Decode\n );\n if (!tokenClaims?.cnf?.kid) {\n throw createClientAuthError(\n ClientAuthErrorCodes.tokenClaimsCnfRequiredForSignedJwt\n );\n }\n atEntity.keyId = tokenClaims.cnf.kid;\n break;\n case AuthenticationScheme.SSH:\n atEntity.keyId = keyId;\n }\n }\n\n return atEntity;\n}\n\n/**\n * Create RefreshTokenEntity\n * @param homeAccountId\n * @param authenticationResult\n * @param clientId\n * @param authority\n */\nexport function createRefreshTokenEntity(\n homeAccountId: string,\n environment: string,\n refreshToken: string,\n clientId: string,\n familyId?: string,\n userAssertionHash?: string,\n expiresOn?: number\n): RefreshTokenEntity {\n const rtEntity: RefreshTokenEntity = {\n credentialType: CredentialType.REFRESH_TOKEN,\n homeAccountId: homeAccountId,\n environment: environment,\n clientId: clientId,\n secret: refreshToken,\n };\n\n if (userAssertionHash) {\n rtEntity.userAssertionHash = userAssertionHash;\n }\n\n if (familyId) {\n rtEntity.familyId = familyId;\n }\n\n if (expiresOn) {\n rtEntity.expiresOn = expiresOn.toString();\n }\n\n return rtEntity;\n}\n\nexport function isCredentialEntity(entity: object): boolean {\n return (\n entity.hasOwnProperty(\"homeAccountId\") &&\n entity.hasOwnProperty(\"environment\") &&\n entity.hasOwnProperty(\"credentialType\") &&\n entity.hasOwnProperty(\"clientId\") &&\n entity.hasOwnProperty(\"secret\")\n );\n}\n\n/**\n * Validates an entity: checks for all expected params\n * @param entity\n */\nexport function isAccessTokenEntity(entity: object): boolean {\n if (!entity) {\n return false;\n }\n\n return (\n isCredentialEntity(entity) &&\n entity.hasOwnProperty(\"realm\") &&\n entity.hasOwnProperty(\"target\") &&\n (entity[\"credentialType\"] === CredentialType.ACCESS_TOKEN ||\n entity[\"credentialType\"] ===\n CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME)\n );\n}\n\n/**\n * Validates an entity: checks for all expected params\n * @param entity\n */\nexport function isIdTokenEntity(entity: object): boolean {\n if (!entity) {\n return false;\n }\n\n return (\n isCredentialEntity(entity) &&\n entity.hasOwnProperty(\"realm\") &&\n entity[\"credentialType\"] === CredentialType.ID_TOKEN\n );\n}\n\n/**\n * Validates an entity: checks for all expected params\n * @param entity\n */\nexport function isRefreshTokenEntity(entity: object): boolean {\n if (!entity) {\n return false;\n }\n\n return (\n isCredentialEntity(entity) &&\n entity[\"credentialType\"] === CredentialType.REFRESH_TOKEN\n );\n}\n\n/**\n * Generate Account Id key component as per the schema: -\n */\nfunction generateAccountId(credentialEntity: CredentialEntity): string {\n const accountId: Array = [\n credentialEntity.homeAccountId,\n credentialEntity.environment,\n ];\n return accountId.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase();\n}\n\n/**\n * Generate Credential Id key component as per the schema: --\n */\nfunction generateCredentialId(credentialEntity: CredentialEntity): string {\n const clientOrFamilyId =\n credentialEntity.credentialType === CredentialType.REFRESH_TOKEN\n ? credentialEntity.familyId || credentialEntity.clientId\n : credentialEntity.clientId;\n const credentialId: Array = [\n credentialEntity.credentialType,\n clientOrFamilyId,\n credentialEntity.realm || \"\",\n ];\n\n return credentialId.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase();\n}\n\n/**\n * Generate target key component as per schema: \n */\nfunction generateTarget(credentialEntity: CredentialEntity): string {\n return (credentialEntity.target || \"\").toLowerCase();\n}\n\n/**\n * Generate requested claims key component as per schema: \n */\nfunction generateClaimsHash(credentialEntity: CredentialEntity): string {\n return (credentialEntity.requestedClaimsHash || \"\").toLowerCase();\n}\n\n/**\n * Generate scheme key componenet as per schema: \n */\nfunction generateScheme(credentialEntity: CredentialEntity): string {\n /*\n * PoP Tokens and SSH certs include scheme in cache key\n * Cast to lowercase to handle \"bearer\" from ADFS\n */\n return credentialEntity.tokenType &&\n credentialEntity.tokenType.toLowerCase() !==\n AuthenticationScheme.BEARER.toLowerCase()\n ? credentialEntity.tokenType.toLowerCase()\n : \"\";\n}\n\n/**\n * validates if a given cache entry is \"Telemetry\", parses \n * @param key\n * @param entity\n */\nexport function isServerTelemetryEntity(key: string, entity?: object): boolean {\n const validateKey: boolean =\n key.indexOf(SERVER_TELEM_CONSTANTS.CACHE_KEY) === 0;\n let validateEntity: boolean = true;\n\n if (entity) {\n validateEntity =\n entity.hasOwnProperty(\"failedRequests\") &&\n entity.hasOwnProperty(\"errors\") &&\n entity.hasOwnProperty(\"cacheHits\");\n }\n\n return validateKey && validateEntity;\n}\n\n/**\n * validates if a given cache entry is \"Throttling\", parses \n * @param key\n * @param entity\n */\nexport function isThrottlingEntity(key: string, entity?: object): boolean {\n let validateKey: boolean = false;\n if (key) {\n validateKey = key.indexOf(ThrottlingConstants.THROTTLING_PREFIX) === 0;\n }\n\n let validateEntity: boolean = true;\n if (entity) {\n validateEntity = entity.hasOwnProperty(\"throttleTime\");\n }\n\n return validateKey && validateEntity;\n}\n\n/**\n * Generate AppMetadata Cache Key as per the schema: appmetadata--\n */\nexport function generateAppMetadataKey({\n environment,\n clientId,\n}: AppMetadataEntity): string {\n const appMetaDataKeyArray: Array = [\n APP_METADATA,\n environment,\n clientId,\n ];\n return appMetaDataKeyArray\n .join(Separators.CACHE_KEY_SEPARATOR)\n .toLowerCase();\n}\n\n/*\n * Validates an entity: checks for all expected params\n * @param entity\n */\nexport function isAppMetadataEntity(key: string, entity: object): boolean {\n if (!entity) {\n return false;\n }\n\n return (\n key.indexOf(APP_METADATA) === 0 &&\n entity.hasOwnProperty(\"clientId\") &&\n entity.hasOwnProperty(\"environment\")\n );\n}\n\n/**\n * Validates an entity: checks for all expected params\n * @param entity\n */\nexport function isAuthorityMetadataEntity(\n key: string,\n entity: object\n): boolean {\n if (!entity) {\n return false;\n }\n\n return (\n key.indexOf(AUTHORITY_METADATA_CONSTANTS.CACHE_KEY) === 0 &&\n entity.hasOwnProperty(\"aliases\") &&\n entity.hasOwnProperty(\"preferred_cache\") &&\n entity.hasOwnProperty(\"preferred_network\") &&\n entity.hasOwnProperty(\"canonical_authority\") &&\n entity.hasOwnProperty(\"authorization_endpoint\") &&\n entity.hasOwnProperty(\"token_endpoint\") &&\n entity.hasOwnProperty(\"issuer\") &&\n entity.hasOwnProperty(\"aliasesFromNetwork\") &&\n entity.hasOwnProperty(\"endpointsFromNetwork\") &&\n entity.hasOwnProperty(\"expiresAt\") &&\n entity.hasOwnProperty(\"jwks_uri\")\n );\n}\n\n/**\n * Reset the exiresAt value\n */\nexport function generateAuthorityMetadataExpiresAt(): number {\n return (\n TimeUtils.nowSeconds() +\n AUTHORITY_METADATA_CONSTANTS.REFRESH_TIME_SECONDS\n );\n}\n\nexport function updateAuthorityEndpointMetadata(\n authorityMetadata: AuthorityMetadataEntity,\n updatedValues: OpenIdConfigResponse,\n fromNetwork: boolean\n): void {\n authorityMetadata.authorization_endpoint =\n updatedValues.authorization_endpoint;\n authorityMetadata.token_endpoint = updatedValues.token_endpoint;\n authorityMetadata.end_session_endpoint = updatedValues.end_session_endpoint;\n authorityMetadata.issuer = updatedValues.issuer;\n authorityMetadata.endpointsFromNetwork = fromNetwork;\n authorityMetadata.jwks_uri = updatedValues.jwks_uri;\n}\n\nexport function updateCloudDiscoveryMetadata(\n authorityMetadata: AuthorityMetadataEntity,\n updatedValues: CloudDiscoveryMetadata,\n fromNetwork: boolean\n): void {\n authorityMetadata.aliases = updatedValues.aliases;\n authorityMetadata.preferred_cache = updatedValues.preferred_cache;\n authorityMetadata.preferred_network = updatedValues.preferred_network;\n authorityMetadata.aliasesFromNetwork = fromNetwork;\n}\n\n/**\n * Returns whether or not the data needs to be refreshed\n */\nexport function isAuthorityMetadataExpired(\n metadata: AuthorityMetadataEntity\n): boolean {\n return metadata.expiresAt <= TimeUtils.nowSeconds();\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nexport const redirectUriEmpty = \"redirect_uri_empty\";\nexport const claimsRequestParsingError = \"claims_request_parsing_error\";\nexport const authorityUriInsecure = \"authority_uri_insecure\";\nexport const urlParseError = \"url_parse_error\";\nexport const urlEmptyError = \"empty_url_error\";\nexport const emptyInputScopesError = \"empty_input_scopes_error\";\nexport const invalidPromptValue = \"invalid_prompt_value\";\nexport const invalidClaims = \"invalid_claims\";\nexport const tokenRequestEmpty = \"token_request_empty\";\nexport const logoutRequestEmpty = \"logout_request_empty\";\nexport const invalidCodeChallengeMethod = \"invalid_code_challenge_method\";\nexport const pkceParamsMissing = \"pkce_params_missing\";\nexport const invalidCloudDiscoveryMetadata = \"invalid_cloud_discovery_metadata\";\nexport const invalidAuthorityMetadata = \"invalid_authority_metadata\";\nexport const untrustedAuthority = \"untrusted_authority\";\nexport const missingSshJwk = \"missing_ssh_jwk\";\nexport const missingSshKid = \"missing_ssh_kid\";\nexport const missingNonceAuthenticationHeader =\n \"missing_nonce_authentication_header\";\nexport const invalidAuthenticationHeader = \"invalid_authentication_header\";\nexport const cannotSetOIDCOptions = \"cannot_set_OIDCOptions\";\nexport const cannotAllowNativeBroker = \"cannot_allow_native_broker\";\nexport const authorityMismatch = \"authority_mismatch\";\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { AuthError } from \"./AuthError.js\";\nimport * as ClientConfigurationErrorCodes from \"./ClientConfigurationErrorCodes.js\";\nexport { ClientConfigurationErrorCodes };\n\nexport const ClientConfigurationErrorMessages = {\n [ClientConfigurationErrorCodes.redirectUriEmpty]:\n \"A redirect URI is required for all calls, and none has been set.\",\n [ClientConfigurationErrorCodes.claimsRequestParsingError]:\n \"Could not parse the given claims request object.\",\n [ClientConfigurationErrorCodes.authorityUriInsecure]:\n \"Authority URIs must use https. Please see here for valid authority configuration options: https://docs.microsoft.com/en-us/azure/active-directory/develop/msal-js-initializing-client-applications#configuration-options\",\n [ClientConfigurationErrorCodes.urlParseError]:\n \"URL could not be parsed into appropriate segments.\",\n [ClientConfigurationErrorCodes.urlEmptyError]: \"URL was empty or null.\",\n [ClientConfigurationErrorCodes.emptyInputScopesError]:\n \"Scopes cannot be passed as null, undefined or empty array because they are required to obtain an access token.\",\n [ClientConfigurationErrorCodes.invalidPromptValue]:\n \"Please see here for valid configuration options: https://azuread.github.io/microsoft-authentication-library-for-js/ref/modules/_azure_msal_common.html#commonauthorizationurlrequest\",\n [ClientConfigurationErrorCodes.invalidClaims]:\n \"Given claims parameter must be a stringified JSON object.\",\n [ClientConfigurationErrorCodes.tokenRequestEmpty]:\n \"Token request was empty and not found in cache.\",\n [ClientConfigurationErrorCodes.logoutRequestEmpty]:\n \"The logout request was null or undefined.\",\n [ClientConfigurationErrorCodes.invalidCodeChallengeMethod]:\n 'code_challenge_method passed is invalid. Valid values are \"plain\" and \"S256\".',\n [ClientConfigurationErrorCodes.pkceParamsMissing]:\n \"Both params: code_challenge and code_challenge_method are to be passed if to be sent in the request\",\n [ClientConfigurationErrorCodes.invalidCloudDiscoveryMetadata]:\n \"Invalid cloudDiscoveryMetadata provided. Must be a stringified JSON object containing tenant_discovery_endpoint and metadata fields\",\n [ClientConfigurationErrorCodes.invalidAuthorityMetadata]:\n \"Invalid authorityMetadata provided. Must by a stringified JSON object containing authorization_endpoint, token_endpoint, issuer fields.\",\n [ClientConfigurationErrorCodes.untrustedAuthority]:\n \"The provided authority is not a trusted authority. Please include this authority in the knownAuthorities config parameter.\",\n [ClientConfigurationErrorCodes.missingSshJwk]:\n \"Missing sshJwk in SSH certificate request. A stringified JSON Web Key is required when using the SSH authentication scheme.\",\n [ClientConfigurationErrorCodes.missingSshKid]:\n \"Missing sshKid in SSH certificate request. A string that uniquely identifies the public SSH key is required when using the SSH authentication scheme.\",\n [ClientConfigurationErrorCodes.missingNonceAuthenticationHeader]:\n \"Unable to find an authentication header containing server nonce. Either the Authentication-Info or WWW-Authenticate headers must be present in order to obtain a server nonce.\",\n [ClientConfigurationErrorCodes.invalidAuthenticationHeader]:\n \"Invalid authentication header provided\",\n [ClientConfigurationErrorCodes.cannotSetOIDCOptions]:\n \"Cannot set OIDCOptions parameter. Please change the protocol mode to OIDC or use a non-Microsoft authority.\",\n [ClientConfigurationErrorCodes.cannotAllowNativeBroker]:\n \"Cannot set allowNativeBroker parameter to true when not in AAD protocol mode.\",\n [ClientConfigurationErrorCodes.authorityMismatch]:\n \"Authority mismatch error. Authority provided in login request or PublicClientApplication config does not match the environment of the provided account. Please use a matching account or make an interactive request to login to this authority.\",\n};\n\n/**\n * ClientConfigurationErrorMessage class containing string constants used by error codes and messages.\n * @deprecated Use ClientConfigurationErrorCodes instead\n */\nexport const ClientConfigurationErrorMessage = {\n redirectUriNotSet: {\n code: ClientConfigurationErrorCodes.redirectUriEmpty,\n desc: ClientConfigurationErrorMessages[\n ClientConfigurationErrorCodes.redirectUriEmpty\n ],\n },\n claimsRequestParsingError: {\n code: ClientConfigurationErrorCodes.claimsRequestParsingError,\n desc: ClientConfigurationErrorMessages[\n ClientConfigurationErrorCodes.claimsRequestParsingError\n ],\n },\n authorityUriInsecure: {\n code: ClientConfigurationErrorCodes.authorityUriInsecure,\n desc: ClientConfigurationErrorMessages[\n ClientConfigurationErrorCodes.authorityUriInsecure\n ],\n },\n urlParseError: {\n code: ClientConfigurationErrorCodes.urlParseError,\n desc: ClientConfigurationErrorMessages[\n ClientConfigurationErrorCodes.urlParseError\n ],\n },\n urlEmptyError: {\n code: ClientConfigurationErrorCodes.urlEmptyError,\n desc: ClientConfigurationErrorMessages[\n ClientConfigurationErrorCodes.urlEmptyError\n ],\n },\n emptyScopesError: {\n code: ClientConfigurationErrorCodes.emptyInputScopesError,\n desc: ClientConfigurationErrorMessages[\n ClientConfigurationErrorCodes.emptyInputScopesError\n ],\n },\n invalidPrompt: {\n code: ClientConfigurationErrorCodes.invalidPromptValue,\n desc: ClientConfigurationErrorMessages[\n ClientConfigurationErrorCodes.invalidPromptValue\n ],\n },\n invalidClaimsRequest: {\n code: ClientConfigurationErrorCodes.invalidClaims,\n desc: ClientConfigurationErrorMessages[\n ClientConfigurationErrorCodes.invalidClaims\n ],\n },\n tokenRequestEmptyError: {\n code: ClientConfigurationErrorCodes.tokenRequestEmpty,\n desc: ClientConfigurationErrorMessages[\n ClientConfigurationErrorCodes.tokenRequestEmpty\n ],\n },\n logoutRequestEmptyError: {\n code: ClientConfigurationErrorCodes.logoutRequestEmpty,\n desc: ClientConfigurationErrorMessages[\n ClientConfigurationErrorCodes.logoutRequestEmpty\n ],\n },\n invalidCodeChallengeMethod: {\n code: ClientConfigurationErrorCodes.invalidCodeChallengeMethod,\n desc: ClientConfigurationErrorMessages[\n ClientConfigurationErrorCodes.invalidCodeChallengeMethod\n ],\n },\n invalidCodeChallengeParams: {\n code: ClientConfigurationErrorCodes.pkceParamsMissing,\n desc: ClientConfigurationErrorMessages[\n ClientConfigurationErrorCodes.pkceParamsMissing\n ],\n },\n invalidCloudDiscoveryMetadata: {\n code: ClientConfigurationErrorCodes.invalidCloudDiscoveryMetadata,\n desc: ClientConfigurationErrorMessages[\n ClientConfigurationErrorCodes.invalidCloudDiscoveryMetadata\n ],\n },\n invalidAuthorityMetadata: {\n code: ClientConfigurationErrorCodes.invalidAuthorityMetadata,\n desc: ClientConfigurationErrorMessages[\n ClientConfigurationErrorCodes.invalidAuthorityMetadata\n ],\n },\n untrustedAuthority: {\n code: ClientConfigurationErrorCodes.untrustedAuthority,\n desc: ClientConfigurationErrorMessages[\n ClientConfigurationErrorCodes.untrustedAuthority\n ],\n },\n missingSshJwk: {\n code: ClientConfigurationErrorCodes.missingSshJwk,\n desc: ClientConfigurationErrorMessages[\n ClientConfigurationErrorCodes.missingSshJwk\n ],\n },\n missingSshKid: {\n code: ClientConfigurationErrorCodes.missingSshKid,\n desc: ClientConfigurationErrorMessages[\n ClientConfigurationErrorCodes.missingSshKid\n ],\n },\n missingNonceAuthenticationHeader: {\n code: ClientConfigurationErrorCodes.missingNonceAuthenticationHeader,\n desc: ClientConfigurationErrorMessages[\n ClientConfigurationErrorCodes.missingNonceAuthenticationHeader\n ],\n },\n invalidAuthenticationHeader: {\n code: ClientConfigurationErrorCodes.invalidAuthenticationHeader,\n desc: ClientConfigurationErrorMessages[\n ClientConfigurationErrorCodes.invalidAuthenticationHeader\n ],\n },\n cannotSetOIDCOptions: {\n code: ClientConfigurationErrorCodes.cannotSetOIDCOptions,\n desc: ClientConfigurationErrorMessages[\n ClientConfigurationErrorCodes.cannotSetOIDCOptions\n ],\n },\n cannotAllowNativeBroker: {\n code: ClientConfigurationErrorCodes.cannotAllowNativeBroker,\n desc: ClientConfigurationErrorMessages[\n ClientConfigurationErrorCodes.cannotAllowNativeBroker\n ],\n },\n authorityMismatch: {\n code: ClientConfigurationErrorCodes.authorityMismatch,\n desc: ClientConfigurationErrorMessages[\n ClientConfigurationErrorCodes.authorityMismatch\n ],\n },\n};\n\n/**\n * Error thrown when there is an error in configuration of the MSAL.js library.\n */\nexport class ClientConfigurationError extends AuthError {\n constructor(errorCode: string) {\n super(errorCode, ClientConfigurationErrorMessages[errorCode]);\n this.name = \"ClientConfigurationError\";\n Object.setPrototypeOf(this, ClientConfigurationError.prototype);\n }\n}\n\nexport function createClientConfigurationError(\n errorCode: string\n): ClientConfigurationError {\n return new ClientConfigurationError(errorCode);\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\n/**\n * @hidden\n */\nexport class StringUtils {\n /**\n * Check if stringified object is empty\n * @param strObj\n */\n static isEmptyObj(strObj?: string): boolean {\n if (strObj) {\n try {\n const obj = JSON.parse(strObj);\n return Object.keys(obj).length === 0;\n } catch (e) {}\n }\n return true;\n }\n\n static startsWith(str: string, search: string): boolean {\n return str.indexOf(search) === 0;\n }\n\n static endsWith(str: string, search: string): boolean {\n return (\n str.length >= search.length &&\n str.lastIndexOf(search) === str.length - search.length\n );\n }\n\n /**\n * Parses string into an object.\n *\n * @param query\n */\n static queryStringToObject(query: string): T {\n const obj: {} = {};\n const params = query.split(\"&\");\n const decode = (s: string) => decodeURIComponent(s.replace(/\\+/g, \" \"));\n params.forEach((pair) => {\n if (pair.trim()) {\n const [key, value] = pair.split(/=(.+)/g, 2); // Split on the first occurence of the '=' character\n if (key && value) {\n obj[decode(key)] = decode(value);\n }\n }\n });\n return obj as T;\n }\n\n /**\n * Trims entries in an array.\n *\n * @param arr\n */\n static trimArrayEntries(arr: Array): Array {\n return arr.map((entry) => entry.trim());\n }\n\n /**\n * Removes empty strings from array\n * @param arr\n */\n static removeEmptyStringsFromArray(arr: Array): Array {\n return arr.filter((entry) => {\n return !!entry;\n });\n }\n\n /**\n * Attempts to parse a string into JSON\n * @param str\n */\n static jsonParseHelper(str: string): T | null {\n try {\n return JSON.parse(str) as T;\n } catch (e) {\n return null;\n }\n }\n\n /**\n * Tests if a given string matches a given pattern, with support for wildcards and queries.\n * @param pattern Wildcard pattern to string match. Supports \"*\" for wildcards and \"?\" for queries\n * @param input String to match against\n */\n static matchPattern(pattern: string, input: string): boolean {\n /**\n * Wildcard support: https://stackoverflow.com/a/3117248/4888559\n * Queries: replaces \"?\" in string with escaped \"\\?\" for regex test\n */\n // eslint-disable-next-line security/detect-non-literal-regexp\n const regex: RegExp = new RegExp(\n pattern\n .replace(/\\\\/g, \"\\\\\\\\\")\n .replace(/\\*/g, \"[^ ]*\")\n .replace(/\\?/g, \"\\\\?\")\n );\n\n return regex.test(input);\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport {\n createClientConfigurationError,\n ClientConfigurationErrorCodes,\n} from \"../error/ClientConfigurationError.js\";\nimport { StringUtils } from \"../utils/StringUtils.js\";\nimport {\n ClientAuthErrorCodes,\n createClientAuthError,\n} from \"../error/ClientAuthError.js\";\nimport { Constants, OIDC_SCOPES } from \"../utils/Constants.js\";\n\n/**\n * The ScopeSet class creates a set of scopes. Scopes are case-insensitive, unique values, so the Set object in JS makes\n * the most sense to implement for this class. All scopes are trimmed and converted to lower case strings in intersection and union functions\n * to ensure uniqueness of strings.\n */\nexport class ScopeSet {\n // Scopes as a Set of strings\n private scopes: Set;\n\n constructor(inputScopes: Array) {\n // Filter empty string and null/undefined array items\n const scopeArr = inputScopes\n ? StringUtils.trimArrayEntries([...inputScopes])\n : [];\n const filteredInput = scopeArr\n ? StringUtils.removeEmptyStringsFromArray(scopeArr)\n : [];\n\n // Validate and filter scopes (validate function throws if validation fails)\n this.validateInputScopes(filteredInput);\n\n this.scopes = new Set(); // Iterator in constructor not supported by IE11\n filteredInput.forEach((scope) => this.scopes.add(scope));\n }\n\n /**\n * Factory method to create ScopeSet from space-delimited string\n * @param inputScopeString\n * @param appClientId\n * @param scopesRequired\n */\n static fromString(inputScopeString: string): ScopeSet {\n const scopeString = inputScopeString || Constants.EMPTY_STRING;\n const inputScopes: Array = scopeString.split(\" \");\n return new ScopeSet(inputScopes);\n }\n\n /**\n * Creates the set of scopes to search for in cache lookups\n * @param inputScopeString\n * @returns\n */\n static createSearchScopes(inputScopeString: Array): ScopeSet {\n const scopeSet = new ScopeSet(inputScopeString);\n if (!scopeSet.containsOnlyOIDCScopes()) {\n scopeSet.removeOIDCScopes();\n } else {\n scopeSet.removeScope(Constants.OFFLINE_ACCESS_SCOPE);\n }\n\n return scopeSet;\n }\n\n /**\n * Used to validate the scopes input parameter requested by the developer.\n * @param {Array} inputScopes - Developer requested permissions. Not all scopes are guaranteed to be included in the access token returned.\n * @param {boolean} scopesRequired - Boolean indicating whether the scopes array is required or not\n */\n private validateInputScopes(inputScopes: Array): void {\n // Check if scopes are required but not given or is an empty array\n if (!inputScopes || inputScopes.length < 1) {\n throw createClientConfigurationError(\n ClientConfigurationErrorCodes.emptyInputScopesError\n );\n }\n }\n\n /**\n * Check if a given scope is present in this set of scopes.\n * @param scope\n */\n containsScope(scope: string): boolean {\n const lowerCaseScopes = this.printScopesLowerCase().split(\" \");\n const lowerCaseScopesSet = new ScopeSet(lowerCaseScopes);\n // compare lowercase scopes\n return scope\n ? lowerCaseScopesSet.scopes.has(scope.toLowerCase())\n : false;\n }\n\n /**\n * Check if a set of scopes is present in this set of scopes.\n * @param scopeSet\n */\n containsScopeSet(scopeSet: ScopeSet): boolean {\n if (!scopeSet || scopeSet.scopes.size <= 0) {\n return false;\n }\n\n return (\n this.scopes.size >= scopeSet.scopes.size &&\n scopeSet.asArray().every((scope) => this.containsScope(scope))\n );\n }\n\n /**\n * Check if set of scopes contains only the defaults\n */\n containsOnlyOIDCScopes(): boolean {\n let defaultScopeCount = 0;\n OIDC_SCOPES.forEach((defaultScope: string) => {\n if (this.containsScope(defaultScope)) {\n defaultScopeCount += 1;\n }\n });\n\n return this.scopes.size === defaultScopeCount;\n }\n\n /**\n * Appends single scope if passed\n * @param newScope\n */\n appendScope(newScope: string): void {\n if (newScope) {\n this.scopes.add(newScope.trim());\n }\n }\n\n /**\n * Appends multiple scopes if passed\n * @param newScopes\n */\n appendScopes(newScopes: Array): void {\n try {\n newScopes.forEach((newScope) => this.appendScope(newScope));\n } catch (e) {\n throw createClientAuthError(\n ClientAuthErrorCodes.cannotAppendScopeSet\n );\n }\n }\n\n /**\n * Removes element from set of scopes.\n * @param scope\n */\n removeScope(scope: string): void {\n if (!scope) {\n throw createClientAuthError(\n ClientAuthErrorCodes.cannotRemoveEmptyScope\n );\n }\n this.scopes.delete(scope.trim());\n }\n\n /**\n * Removes default scopes from set of scopes\n * Primarily used to prevent cache misses if the default scopes are not returned from the server\n */\n removeOIDCScopes(): void {\n OIDC_SCOPES.forEach((defaultScope: string) => {\n this.scopes.delete(defaultScope);\n });\n }\n\n /**\n * Combines an array of scopes with the current set of scopes.\n * @param otherScopes\n */\n unionScopeSets(otherScopes: ScopeSet): Set {\n if (!otherScopes) {\n throw createClientAuthError(\n ClientAuthErrorCodes.emptyInputScopeSet\n );\n }\n const unionScopes = new Set(); // Iterator in constructor not supported in IE11\n otherScopes.scopes.forEach((scope) =>\n unionScopes.add(scope.toLowerCase())\n );\n this.scopes.forEach((scope) => unionScopes.add(scope.toLowerCase()));\n return unionScopes;\n }\n\n /**\n * Check if scopes intersect between this set and another.\n * @param otherScopes\n */\n intersectingScopeSets(otherScopes: ScopeSet): boolean {\n if (!otherScopes) {\n throw createClientAuthError(\n ClientAuthErrorCodes.emptyInputScopeSet\n );\n }\n\n // Do not allow OIDC scopes to be the only intersecting scopes\n if (!otherScopes.containsOnlyOIDCScopes()) {\n otherScopes.removeOIDCScopes();\n }\n const unionScopes = this.unionScopeSets(otherScopes);\n const sizeOtherScopes = otherScopes.getScopeCount();\n const sizeThisScopes = this.getScopeCount();\n const sizeUnionScopes = unionScopes.size;\n return sizeUnionScopes < sizeThisScopes + sizeOtherScopes;\n }\n\n /**\n * Returns size of set of scopes.\n */\n getScopeCount(): number {\n return this.scopes.size;\n }\n\n /**\n * Returns the scopes as an array of string values\n */\n asArray(): Array {\n const array: Array = [];\n this.scopes.forEach((val) => array.push(val));\n return array;\n }\n\n /**\n * Prints scopes into a space-delimited string\n */\n printScopes(): string {\n if (this.scopes) {\n const scopeArr = this.asArray();\n return scopeArr.join(\" \");\n }\n return Constants.EMPTY_STRING;\n }\n\n /**\n * Prints scopes into a space-delimited lower-case string (used for caching)\n */\n printScopesLowerCase(): string {\n return this.printScopes().toLowerCase();\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport {\n createClientAuthError,\n ClientAuthErrorCodes,\n} from \"../error/ClientAuthError.js\";\nimport { Separators, Constants } from \"../utils/Constants.js\";\n\n/**\n * Client info object which consists of two IDs. Need to add more info here.\n */\nexport type ClientInfo = {\n uid: string;\n utid: string;\n};\n\n/**\n * Function to build a client info object from server clientInfo string\n * @param rawClientInfo\n * @param crypto\n */\nexport function buildClientInfo(\n rawClientInfo: string,\n base64Decode: (input: string) => string\n): ClientInfo {\n if (!rawClientInfo) {\n throw createClientAuthError(ClientAuthErrorCodes.clientInfoEmptyError);\n }\n\n try {\n const decodedClientInfo: string = base64Decode(rawClientInfo);\n return JSON.parse(decodedClientInfo) as ClientInfo;\n } catch (e) {\n throw createClientAuthError(\n ClientAuthErrorCodes.clientInfoDecodingError\n );\n }\n}\n\n/**\n * Function to build a client info object from cached homeAccountId string\n * @param homeAccountId\n */\nexport function buildClientInfoFromHomeAccountId(\n homeAccountId: string\n): ClientInfo {\n if (!homeAccountId) {\n throw createClientAuthError(\n ClientAuthErrorCodes.clientInfoDecodingError\n );\n }\n const clientInfoParts: string[] = homeAccountId.split(\n Separators.CLIENT_INFO_SEPARATOR,\n 2\n );\n return {\n uid: clientInfoParts[0],\n utid:\n clientInfoParts.length < 2\n ? Constants.EMPTY_STRING\n : clientInfoParts[1],\n };\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { TokenClaims } from \"./TokenClaims.js\";\n/**\n * Account object with the following signature:\n * - homeAccountId - Home account identifier for this account object\n * - environment - Entity which issued the token represented by the domain of the issuer (e.g. login.microsoftonline.com)\n * - tenantId - Full tenant or organizational id that this account belongs to\n * - username - preferred_username claim of the id_token that represents this account\n * - localAccountId - Local, tenant-specific account identifer for this account object, usually used in legacy cases\n * - name - Full name for the account, including given name and family name\n * - idToken - raw ID token\n * - idTokenClaims - Object contains claims from ID token\n * - nativeAccountId - The user's native account ID\n * - tenantProfiles - Map of tenant profile objects for each tenant that the account has authenticated with in the browser\n */\nexport type AccountInfo = {\n homeAccountId: string;\n environment: string;\n tenantId: string;\n username: string;\n localAccountId: string;\n name?: string;\n idToken?: string;\n idTokenClaims?: TokenClaims & {\n [key: string]:\n | string\n | number\n | string[]\n | object\n | undefined\n | unknown;\n };\n nativeAccountId?: string;\n authorityType?: string;\n tenantProfiles?: Map;\n};\n\n/**\n * Account details that vary across tenants for the same user\n */\nexport type TenantProfile = Pick<\n AccountInfo,\n \"tenantId\" | \"localAccountId\" | \"name\"\n> & {\n /**\n * - isHomeTenant - True if this is the home tenant profile of the account, false if it's a guest tenant profile\n */\n isHomeTenant?: boolean;\n};\n\nexport type ActiveAccountFilters = {\n homeAccountId: string;\n localAccountId: string;\n tenantId?: string;\n};\n\n/**\n * Returns true if tenantId matches the utid portion of homeAccountId\n * @param tenantId\n * @param homeAccountId\n * @returns\n */\nexport function tenantIdMatchesHomeTenant(\n tenantId?: string,\n homeAccountId?: string\n): boolean {\n return (\n !!tenantId &&\n !!homeAccountId &&\n tenantId === homeAccountId.split(\".\")[1]\n );\n}\n\n/**\n * Build tenant profile\n * @param homeAccountId - Home account identifier for this account object\n * @param localAccountId - Local account identifer for this account object\n * @param tenantId - Full tenant or organizational id that this account belongs to\n * @param idTokenClaims - Claims from the ID token\n * @returns\n */\nexport function buildTenantProfile(\n homeAccountId: string,\n localAccountId: string,\n tenantId: string,\n idTokenClaims?: TokenClaims\n): TenantProfile {\n if (idTokenClaims) {\n const { oid, sub, tid, name, tfp, acr } = idTokenClaims;\n\n /**\n * Since there is no way to determine if the authority is AAD or B2C, we exhaust all the possible claims that can serve as tenant ID with the following precedence:\n * tid - TenantID claim that identifies the tenant that issued the token in AAD. Expected in all AAD ID tokens, not present in B2C ID Tokens.\n * tfp - Trust Framework Policy claim that identifies the policy that was used to authenticate the user. Functions as tenant for B2C scenarios.\n * acr - Authentication Context Class Reference claim used only with older B2C policies. Fallback in case tfp is not present, but likely won't be present anyway.\n */\n const tenantId = tid || tfp || acr || \"\";\n\n return {\n tenantId: tenantId,\n localAccountId: oid || sub || \"\",\n name: name,\n isHomeTenant: tenantIdMatchesHomeTenant(tenantId, homeAccountId),\n };\n } else {\n return {\n tenantId,\n localAccountId,\n isHomeTenant: tenantIdMatchesHomeTenant(tenantId, homeAccountId),\n };\n }\n}\n\n/**\n * Replaces account info that varies by tenant profile sourced from the ID token claims passed in with the tenant-specific account info\n * @param baseAccountInfo\n * @param idTokenClaims\n * @returns\n */\nexport function updateAccountTenantProfileData(\n baseAccountInfo: AccountInfo,\n tenantProfile?: TenantProfile,\n idTokenClaims?: TokenClaims,\n idTokenSecret?: string\n): AccountInfo {\n let updatedAccountInfo = baseAccountInfo;\n // Tenant Profile overrides passed in account info\n if (tenantProfile) {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { isHomeTenant, ...tenantProfileOverride } = tenantProfile;\n updatedAccountInfo = { ...baseAccountInfo, ...tenantProfileOverride };\n }\n\n // ID token claims override passed in account info and tenant profile\n if (idTokenClaims) {\n // Ignore isHomeTenant, loginHint, and sid which are part of tenant profile but not base account info\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { isHomeTenant, ...claimsSourcedTenantProfile } =\n buildTenantProfile(\n baseAccountInfo.homeAccountId,\n baseAccountInfo.localAccountId,\n baseAccountInfo.tenantId,\n idTokenClaims\n );\n\n updatedAccountInfo = {\n ...updatedAccountInfo,\n ...claimsSourcedTenantProfile,\n idTokenClaims: idTokenClaims,\n idToken: idTokenSecret,\n };\n\n return updatedAccountInfo;\n }\n\n return updatedAccountInfo;\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\n/**\n * Authority types supported by MSAL.\n */\nexport const AuthorityType = {\n Default: 0,\n Adfs: 1,\n Dsts: 2,\n Ciam: 3,\n} as const;\nexport type AuthorityType = (typeof AuthorityType)[keyof typeof AuthorityType];\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\n/**\n * Type which describes Id Token claims known by MSAL.\n */\nexport type TokenClaims = {\n /**\n * Audience\n */\n aud?: string;\n /**\n * Issuer\n */\n iss?: string;\n /**\n * Issued at\n */\n iat?: number;\n /**\n * Not valid before\n */\n nbf?: number;\n /**\n * Immutable object identifier, this ID uniquely identifies the user across applications\n */\n oid?: string;\n /**\n * Immutable subject identifier, this is a pairwise identifier - it is unique to a particular application ID\n */\n sub?: string;\n /**\n * Users' tenant or '9188040d-6c67-4c5b-b112-36a304b66dad' for personal accounts.\n */\n tid?: string;\n /**\n * Trusted Framework Policy (B2C) The name of the policy that was used to acquire the ID token.\n */\n tfp?: string;\n /**\n * Authentication Context Class Reference (B2C) Used only with older policies.\n */\n acr?: string;\n ver?: string;\n upn?: string;\n preferred_username?: string;\n login_hint?: string;\n emails?: string[];\n name?: string;\n nonce?: string;\n /**\n * Expiration\n */\n exp?: number;\n home_oid?: string;\n sid?: string;\n cloud_instance_host_name?: string;\n cnf?: {\n kid: string;\n };\n x5c_ca?: string[];\n ts?: number;\n at?: string;\n u?: string;\n p?: string;\n m?: string;\n roles?: string[];\n amr?: string[];\n idp?: string;\n auth_time?: number;\n /**\n * \tRegion of the resource tenant\n */\n tenant_region_scope?: string;\n tenant_region_sub_scope?: string;\n};\n\n/**\n * Gets tenantId from available ID token claims to set as credential realm with the following precedence:\n * 1. tid - if the token is acquired from an Azure AD tenant tid will be present\n * 2. tfp - if the token is acquired from a modern B2C tenant tfp should be present\n * 3. acr - if the token is acquired from a legacy B2C tenant acr should be present\n * Downcased to match the realm case-insensitive comparison requirements\n * @param idTokenClaims\n * @returns\n */\nexport function getTenantIdFromIdTokenClaims(\n idTokenClaims?: TokenClaims\n): string | null {\n if (idTokenClaims) {\n const tenantId =\n idTokenClaims.tid || idTokenClaims.tfp || idTokenClaims.acr;\n return tenantId || null;\n }\n return null;\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { CacheAccountType, Separators } from \"../../utils/Constants.js\";\nimport { Authority } from \"../../authority/Authority.js\";\nimport { ICrypto } from \"../../crypto/ICrypto.js\";\nimport { ClientInfo, buildClientInfo } from \"../../account/ClientInfo.js\";\nimport {\n AccountInfo,\n TenantProfile,\n buildTenantProfile,\n} from \"../../account/AccountInfo.js\";\nimport {\n createClientAuthError,\n ClientAuthErrorCodes,\n} from \"../../error/ClientAuthError.js\";\nimport { AuthorityType } from \"../../authority/AuthorityType.js\";\nimport { Logger } from \"../../logger/Logger.js\";\nimport {\n TokenClaims,\n getTenantIdFromIdTokenClaims,\n} from \"../../account/TokenClaims.js\";\nimport { ProtocolMode } from \"../../authority/ProtocolMode.js\";\n\n/**\n * Type that defines required and optional parameters for an Account field (based on universal cache schema implemented by all MSALs).\n *\n * Key : Value Schema\n *\n * Key: --\n *\n * Value Schema:\n * {\n * homeAccountId: home account identifier for the auth scheme,\n * environment: entity that issued the token, represented as a full host\n * realm: Full tenant or organizational identifier that the account belongs to\n * localAccountId: Original tenant-specific accountID, usually used for legacy cases\n * username: primary username that represents the user, usually corresponds to preferred_username in the v2 endpt\n * authorityType: Accounts authority type as a string\n * name: Full name for the account, including given name and family name,\n * lastModificationTime: last time this entity was modified in the cache\n * lastModificationApp:\n * nativeAccountId: Account identifier on the native device\n * tenantProfiles: Array of tenant profile objects for each tenant that the account has authenticated with in the browser\n * }\n * @internal\n */\nexport class AccountEntity {\n homeAccountId: string;\n environment: string;\n realm: string;\n localAccountId: string;\n username: string;\n authorityType: string;\n clientInfo?: string;\n name?: string;\n lastModificationTime?: string;\n lastModificationApp?: string;\n cloudGraphHostName?: string;\n msGraphHost?: string;\n nativeAccountId?: string;\n tenantProfiles?: Array;\n\n /**\n * Generate Account Id key component as per the schema: -\n */\n generateAccountId(): string {\n const accountId: Array = [this.homeAccountId, this.environment];\n return accountId.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase();\n }\n\n /**\n * Generate Account Cache Key as per the schema: --\n */\n generateAccountKey(): string {\n return AccountEntity.generateAccountCacheKey({\n homeAccountId: this.homeAccountId,\n environment: this.environment,\n tenantId: this.realm,\n username: this.username,\n localAccountId: this.localAccountId,\n });\n }\n\n /**\n * Returns the AccountInfo interface for this account.\n */\n getAccountInfo(): AccountInfo {\n return {\n homeAccountId: this.homeAccountId,\n environment: this.environment,\n tenantId: this.realm,\n username: this.username,\n localAccountId: this.localAccountId,\n name: this.name,\n nativeAccountId: this.nativeAccountId,\n authorityType: this.authorityType,\n // Deserialize tenant profiles array into a Map\n tenantProfiles: new Map(\n (this.tenantProfiles || []).map((tenantProfile) => {\n return [tenantProfile.tenantId, tenantProfile];\n })\n ),\n };\n }\n\n /**\n * Returns true if the account entity is in single tenant format (outdated), false otherwise\n */\n isSingleTenant(): boolean {\n return !this.tenantProfiles;\n }\n\n /**\n * Generates account key from interface\n * @param accountInterface\n */\n static generateAccountCacheKey(accountInterface: AccountInfo): string {\n const homeTenantId = accountInterface.homeAccountId.split(\".\")[1];\n const accountKey = [\n accountInterface.homeAccountId,\n accountInterface.environment || \"\",\n homeTenantId || accountInterface.tenantId || \"\",\n ];\n\n return accountKey.join(Separators.CACHE_KEY_SEPARATOR).toLowerCase();\n }\n\n /**\n * Build Account cache from IdToken, clientInfo and authority/policy. Associated with AAD.\n * @param accountDetails\n */\n static createAccount(\n accountDetails: {\n homeAccountId: string;\n idTokenClaims?: TokenClaims;\n clientInfo?: string;\n cloudGraphHostName?: string;\n msGraphHost?: string;\n environment?: string;\n nativeAccountId?: string;\n tenantProfiles?: Array;\n },\n authority: Authority,\n base64Decode?: (input: string) => string\n ): AccountEntity {\n const account: AccountEntity = new AccountEntity();\n\n if (authority.authorityType === AuthorityType.Adfs) {\n account.authorityType = CacheAccountType.ADFS_ACCOUNT_TYPE;\n } else if (authority.protocolMode === ProtocolMode.AAD) {\n account.authorityType = CacheAccountType.MSSTS_ACCOUNT_TYPE;\n } else {\n account.authorityType = CacheAccountType.GENERIC_ACCOUNT_TYPE;\n }\n\n let clientInfo: ClientInfo | undefined;\n\n if (accountDetails.clientInfo && base64Decode) {\n clientInfo = buildClientInfo(\n accountDetails.clientInfo,\n base64Decode\n );\n }\n\n account.clientInfo = accountDetails.clientInfo;\n account.homeAccountId = accountDetails.homeAccountId;\n account.nativeAccountId = accountDetails.nativeAccountId;\n\n const env =\n accountDetails.environment ||\n (authority && authority.getPreferredCache());\n\n if (!env) {\n throw createClientAuthError(\n ClientAuthErrorCodes.invalidCacheEnvironment\n );\n }\n\n account.environment = env;\n // non AAD scenarios can have empty realm\n account.realm =\n clientInfo?.utid ||\n getTenantIdFromIdTokenClaims(accountDetails.idTokenClaims) ||\n \"\";\n\n // How do you account for MSA CID here?\n account.localAccountId =\n clientInfo?.uid ||\n accountDetails.idTokenClaims?.oid ||\n accountDetails.idTokenClaims?.sub ||\n \"\";\n\n /*\n * In B2C scenarios the emails claim is used instead of preferred_username and it is an array.\n * In most cases it will contain a single email. This field should not be relied upon if a custom\n * policy is configured to return more than 1 email.\n */\n const preferredUsername =\n accountDetails.idTokenClaims?.preferred_username ||\n accountDetails.idTokenClaims?.upn;\n const email = accountDetails.idTokenClaims?.emails\n ? accountDetails.idTokenClaims.emails[0]\n : null;\n\n account.username = preferredUsername || email || \"\";\n account.name = accountDetails.idTokenClaims?.name || \"\";\n\n account.cloudGraphHostName = accountDetails.cloudGraphHostName;\n account.msGraphHost = accountDetails.msGraphHost;\n\n if (accountDetails.tenantProfiles) {\n account.tenantProfiles = accountDetails.tenantProfiles;\n } else {\n const tenantProfile = buildTenantProfile(\n accountDetails.homeAccountId,\n account.localAccountId,\n account.realm,\n accountDetails.idTokenClaims\n );\n account.tenantProfiles = [tenantProfile];\n }\n\n return account;\n }\n\n /**\n * Creates an AccountEntity object from AccountInfo\n * @param accountInfo\n * @param cloudGraphHostName\n * @param msGraphHost\n * @returns\n */\n static createFromAccountInfo(\n accountInfo: AccountInfo,\n cloudGraphHostName?: string,\n msGraphHost?: string\n ): AccountEntity {\n const account: AccountEntity = new AccountEntity();\n\n account.authorityType =\n accountInfo.authorityType || CacheAccountType.GENERIC_ACCOUNT_TYPE;\n account.homeAccountId = accountInfo.homeAccountId;\n account.localAccountId = accountInfo.localAccountId;\n account.nativeAccountId = accountInfo.nativeAccountId;\n\n account.realm = accountInfo.tenantId;\n account.environment = accountInfo.environment;\n\n account.username = accountInfo.username;\n account.name = accountInfo.name;\n\n account.cloudGraphHostName = cloudGraphHostName;\n account.msGraphHost = msGraphHost;\n // Serialize tenant profiles map into an array\n account.tenantProfiles = Array.from(\n accountInfo.tenantProfiles?.values() || []\n );\n\n return account;\n }\n\n /**\n * Generate HomeAccountId from server response\n * @param serverClientInfo\n * @param authType\n */\n static generateHomeAccountId(\n serverClientInfo: string,\n authType: AuthorityType,\n logger: Logger,\n cryptoObj: ICrypto,\n idTokenClaims?: TokenClaims\n ): string {\n // since ADFS/DSTS do not have tid and does not set client_info\n if (\n !(\n authType === AuthorityType.Adfs ||\n authType === AuthorityType.Dsts\n )\n ) {\n // for cases where there is clientInfo\n if (serverClientInfo) {\n try {\n const clientInfo = buildClientInfo(\n serverClientInfo,\n cryptoObj.base64Decode\n );\n if (clientInfo.uid && clientInfo.utid) {\n return `${clientInfo.uid}.${clientInfo.utid}`;\n }\n } catch (e) {}\n }\n logger.warning(\"No client info in response\");\n }\n\n // default to \"sub\" claim\n return idTokenClaims?.sub || \"\";\n }\n\n /**\n * Validates an entity: checks for all expected params\n * @param entity\n */\n static isAccountEntity(entity: object): boolean {\n if (!entity) {\n return false;\n }\n\n return (\n entity.hasOwnProperty(\"homeAccountId\") &&\n entity.hasOwnProperty(\"environment\") &&\n entity.hasOwnProperty(\"realm\") &&\n entity.hasOwnProperty(\"localAccountId\") &&\n entity.hasOwnProperty(\"username\") &&\n entity.hasOwnProperty(\"authorityType\")\n );\n }\n\n /**\n * Helper function to determine whether 2 accountInfo objects represent the same account\n * @param accountA\n * @param accountB\n * @param compareClaims - If set to true idTokenClaims will also be compared to determine account equality\n */\n static accountInfoIsEqual(\n accountA: AccountInfo | null,\n accountB: AccountInfo | null,\n compareClaims?: boolean\n ): boolean {\n if (!accountA || !accountB) {\n return false;\n }\n\n let claimsMatch = true; // default to true so as to not fail comparison below if compareClaims: false\n if (compareClaims) {\n const accountAClaims = (accountA.idTokenClaims ||\n {}) as TokenClaims;\n const accountBClaims = (accountB.idTokenClaims ||\n {}) as TokenClaims;\n\n // issued at timestamp and nonce are expected to change each time a new id token is acquired\n claimsMatch =\n accountAClaims.iat === accountBClaims.iat &&\n accountAClaims.nonce === accountBClaims.nonce;\n }\n\n return (\n accountA.homeAccountId === accountB.homeAccountId &&\n accountA.localAccountId === accountB.localAccountId &&\n accountA.username === accountB.username &&\n accountA.tenantId === accountB.tenantId &&\n accountA.environment === accountB.environment &&\n accountA.nativeAccountId === accountB.nativeAccountId &&\n claimsMatch\n );\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { ServerAuthorizationCodeResponse } from \"../response/ServerAuthorizationCodeResponse.js\";\nimport {\n ClientAuthErrorCodes,\n createClientAuthError,\n} from \"../error/ClientAuthError.js\";\n\n/**\n * Parses hash string from given string. Returns empty string if no hash symbol is found.\n * @param hashString\n */\nexport function stripLeadingHashOrQuery(responseString: string): string {\n if (responseString.startsWith(\"#/\")) {\n return responseString.substring(2);\n } else if (\n responseString.startsWith(\"#\") ||\n responseString.startsWith(\"?\")\n ) {\n return responseString.substring(1);\n }\n\n return responseString;\n}\n\n/**\n * Returns URL hash as server auth code response object.\n */\nexport function getDeserializedResponse(\n responseString: string\n): ServerAuthorizationCodeResponse | null {\n // Check if given hash is empty\n if (!responseString || responseString.indexOf(\"=\") < 0) {\n return null;\n }\n try {\n // Strip the # or ? symbol if present\n const normalizedResponse = stripLeadingHashOrQuery(responseString);\n // If # symbol was not present, above will return empty string, so give original hash value\n const deserializedHash: ServerAuthorizationCodeResponse =\n Object.fromEntries(new URLSearchParams(normalizedResponse));\n\n // Check for known response properties\n if (\n deserializedHash.code ||\n deserializedHash.error ||\n deserializedHash.error_description ||\n deserializedHash.state\n ) {\n return deserializedHash;\n }\n } catch (e) {\n throw createClientAuthError(ClientAuthErrorCodes.hashNotDeserialized);\n }\n\n return null;\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport {\n createClientConfigurationError,\n ClientConfigurationErrorCodes,\n} from \"../error/ClientConfigurationError.js\";\nimport { StringUtils } from \"../utils/StringUtils.js\";\nimport { IUri } from \"./IUri.js\";\nimport { AADAuthorityConstants, Constants } from \"../utils/Constants.js\";\nimport * as UrlUtils from \"../utils/UrlUtils.js\";\n\n/**\n * Url object class which can perform various transformations on url strings.\n */\nexport class UrlString {\n // internal url string field\n private _urlString: string;\n public get urlString(): string {\n return this._urlString;\n }\n\n constructor(url: string) {\n this._urlString = url;\n if (!this._urlString) {\n // Throws error if url is empty\n throw createClientConfigurationError(\n ClientConfigurationErrorCodes.urlEmptyError\n );\n }\n\n if (!url.includes(\"#\")) {\n this._urlString = UrlString.canonicalizeUri(url);\n }\n }\n\n /**\n * Ensure urls are lower case and end with a / character.\n * @param url\n */\n static canonicalizeUri(url: string): string {\n if (url) {\n let lowerCaseUrl = url.toLowerCase();\n\n if (StringUtils.endsWith(lowerCaseUrl, \"?\")) {\n lowerCaseUrl = lowerCaseUrl.slice(0, -1);\n } else if (StringUtils.endsWith(lowerCaseUrl, \"?/\")) {\n lowerCaseUrl = lowerCaseUrl.slice(0, -2);\n }\n\n if (!StringUtils.endsWith(lowerCaseUrl, \"/\")) {\n lowerCaseUrl += \"/\";\n }\n\n return lowerCaseUrl;\n }\n\n return url;\n }\n\n /**\n * Throws if urlString passed is not a valid authority URI string.\n */\n validateAsUri(): void {\n // Attempts to parse url for uri components\n let components;\n try {\n components = this.getUrlComponents();\n } catch (e) {\n throw createClientConfigurationError(\n ClientConfigurationErrorCodes.urlParseError\n );\n }\n\n // Throw error if URI or path segments are not parseable.\n if (!components.HostNameAndPort || !components.PathSegments) {\n throw createClientConfigurationError(\n ClientConfigurationErrorCodes.urlParseError\n );\n }\n\n // Throw error if uri is insecure.\n if (\n !components.Protocol ||\n components.Protocol.toLowerCase() !== \"https:\"\n ) {\n throw createClientConfigurationError(\n ClientConfigurationErrorCodes.authorityUriInsecure\n );\n }\n }\n\n /**\n * Given a url and a query string return the url with provided query string appended\n * @param url\n * @param queryString\n */\n static appendQueryString(url: string, queryString: string): string {\n if (!queryString) {\n return url;\n }\n\n return url.indexOf(\"?\") < 0\n ? `${url}?${queryString}`\n : `${url}&${queryString}`;\n }\n\n /**\n * Returns a url with the hash removed\n * @param url\n */\n static removeHashFromUrl(url: string): string {\n return UrlString.canonicalizeUri(url.split(\"#\")[0]);\n }\n\n /**\n * Given a url like https://a:b/common/d?e=f#g, and a tenantId, returns https://a:b/tenantId/d\n * @param href The url\n * @param tenantId The tenant id to replace\n */\n replaceTenantPath(tenantId: string): UrlString {\n const urlObject = this.getUrlComponents();\n const pathArray = urlObject.PathSegments;\n if (\n tenantId &&\n pathArray.length !== 0 &&\n (pathArray[0] === AADAuthorityConstants.COMMON ||\n pathArray[0] === AADAuthorityConstants.ORGANIZATIONS)\n ) {\n pathArray[0] = tenantId;\n }\n return UrlString.constructAuthorityUriFromObject(urlObject);\n }\n\n /**\n * Parses out the components from a url string.\n * @returns An object with the various components. Please cache this value insted of calling this multiple times on the same url.\n */\n getUrlComponents(): IUri {\n // https://gist.github.com/curtisz/11139b2cfcaef4a261e0\n const regEx = RegExp(\n \"^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\\\\?([^#]*))?(#(.*))?\"\n );\n\n // If url string does not match regEx, we throw an error\n const match = this.urlString.match(regEx);\n if (!match) {\n throw createClientConfigurationError(\n ClientConfigurationErrorCodes.urlParseError\n );\n }\n\n // Url component object\n const urlComponents = {\n Protocol: match[1],\n HostNameAndPort: match[4],\n AbsolutePath: match[5],\n QueryString: match[7],\n } as IUri;\n\n let pathSegments = urlComponents.AbsolutePath.split(\"/\");\n pathSegments = pathSegments.filter((val) => val && val.length > 0); // remove empty elements\n urlComponents.PathSegments = pathSegments;\n\n if (\n urlComponents.QueryString &&\n urlComponents.QueryString.endsWith(\"/\")\n ) {\n urlComponents.QueryString = urlComponents.QueryString.substring(\n 0,\n urlComponents.QueryString.length - 1\n );\n }\n return urlComponents;\n }\n\n static getDomainFromUrl(url: string): string {\n const regEx = RegExp(\"^([^:/?#]+://)?([^/?#]*)\");\n\n const match = url.match(regEx);\n\n if (!match) {\n throw createClientConfigurationError(\n ClientConfigurationErrorCodes.urlParseError\n );\n }\n\n return match[2];\n }\n\n static getAbsoluteUrl(relativeUrl: string, baseUrl: string): string {\n if (relativeUrl[0] === Constants.FORWARD_SLASH) {\n const url = new UrlString(baseUrl);\n const baseComponents = url.getUrlComponents();\n\n return (\n baseComponents.Protocol +\n \"//\" +\n baseComponents.HostNameAndPort +\n relativeUrl\n );\n }\n\n return relativeUrl;\n }\n\n static constructAuthorityUriFromObject(urlObject: IUri): UrlString {\n return new UrlString(\n urlObject.Protocol +\n \"//\" +\n urlObject.HostNameAndPort +\n \"/\" +\n urlObject.PathSegments.join(\"/\")\n );\n }\n\n /**\n * Check if the hash of the URL string contains known properties\n * @deprecated This API will be removed in a future version\n */\n static hashContainsKnownProperties(response: string): boolean {\n return !!UrlUtils.getDeserializedResponse(response);\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { Logger } from \"../logger/Logger.js\";\nimport { UrlString } from \"../url/UrlString.js\";\nimport { AuthorityMetadataSource } from \"../utils/Constants.js\";\nimport { StaticAuthorityOptions } from \"./AuthorityOptions.js\";\nimport { CloudDiscoveryMetadata } from \"./CloudDiscoveryMetadata.js\";\nimport { CloudInstanceDiscoveryResponse } from \"./CloudInstanceDiscoveryResponse.js\";\nimport { OpenIdConfigResponse } from \"./OpenIdConfigResponse.js\";\n\ntype RawMetadata = {\n endpointMetadata: { [key: string]: OpenIdConfigResponse };\n instanceDiscoveryMetadata: CloudInstanceDiscoveryResponse;\n};\n\nexport const rawMetdataJSON: RawMetadata = {\n endpointMetadata: {\n \"login.microsoftonline.com\": {\n token_endpoint:\n \"https://login.microsoftonline.com/{tenantid}/oauth2/v2.0/token\",\n jwks_uri:\n \"https://login.microsoftonline.com/{tenantid}/discovery/v2.0/keys\",\n issuer: \"https://login.microsoftonline.com/{tenantid}/v2.0\",\n authorization_endpoint:\n \"https://login.microsoftonline.com/{tenantid}/oauth2/v2.0/authorize\",\n end_session_endpoint:\n \"https://login.microsoftonline.com/{tenantid}/oauth2/v2.0/logout\",\n },\n \"login.chinacloudapi.cn\": {\n token_endpoint:\n \"https://login.chinacloudapi.cn/{tenantid}/oauth2/v2.0/token\",\n jwks_uri:\n \"https://login.chinacloudapi.cn/{tenantid}/discovery/v2.0/keys\",\n issuer: \"https://login.partner.microsoftonline.cn/{tenantid}/v2.0\",\n authorization_endpoint:\n \"https://login.chinacloudapi.cn/{tenantid}/oauth2/v2.0/authorize\",\n end_session_endpoint:\n \"https://login.chinacloudapi.cn/{tenantid}/oauth2/v2.0/logout\",\n },\n \"login.microsoftonline.us\": {\n token_endpoint:\n \"https://login.microsoftonline.us/{tenantid}/oauth2/v2.0/token\",\n jwks_uri:\n \"https://login.microsoftonline.us/{tenantid}/discovery/v2.0/keys\",\n issuer: \"https://login.microsoftonline.us/{tenantid}/v2.0\",\n authorization_endpoint:\n \"https://login.microsoftonline.us/{tenantid}/oauth2/v2.0/authorize\",\n end_session_endpoint:\n \"https://login.microsoftonline.us/{tenantid}/oauth2/v2.0/logout\",\n },\n },\n instanceDiscoveryMetadata: {\n tenant_discovery_endpoint:\n \"https://{canonicalAuthority}/v2.0/.well-known/openid-configuration\",\n metadata: [\n {\n preferred_network: \"login.microsoftonline.com\",\n preferred_cache: \"login.windows.net\",\n aliases: [\n \"login.microsoftonline.com\",\n \"login.windows.net\",\n \"login.microsoft.com\",\n \"sts.windows.net\",\n ],\n },\n {\n preferred_network: \"login.partner.microsoftonline.cn\",\n preferred_cache: \"login.partner.microsoftonline.cn\",\n aliases: [\n \"login.partner.microsoftonline.cn\",\n \"login.chinacloudapi.cn\",\n ],\n },\n {\n preferred_network: \"login.microsoftonline.de\",\n preferred_cache: \"login.microsoftonline.de\",\n aliases: [\"login.microsoftonline.de\"],\n },\n {\n preferred_network: \"login.microsoftonline.us\",\n preferred_cache: \"login.microsoftonline.us\",\n aliases: [\n \"login.microsoftonline.us\",\n \"login.usgovcloudapi.net\",\n ],\n },\n {\n preferred_network: \"login-us.microsoftonline.com\",\n preferred_cache: \"login-us.microsoftonline.com\",\n aliases: [\"login-us.microsoftonline.com\"],\n },\n ],\n },\n};\n\nexport const EndpointMetadata = rawMetdataJSON.endpointMetadata;\nexport const InstanceDiscoveryMetadata =\n rawMetdataJSON.instanceDiscoveryMetadata;\n\nexport const InstanceDiscoveryMetadataAliases: Set = new Set();\nInstanceDiscoveryMetadata.metadata.forEach(\n (metadataEntry: CloudDiscoveryMetadata) => {\n metadataEntry.aliases.forEach((alias: string) => {\n InstanceDiscoveryMetadataAliases.add(alias);\n });\n }\n);\n\n/**\n * Attempts to get an aliases array from the static authority metadata sources based on the canonical authority host\n * @param staticAuthorityOptions\n * @param logger\n * @returns\n */\nexport function getAliasesFromStaticSources(\n staticAuthorityOptions: StaticAuthorityOptions,\n logger?: Logger\n): string[] {\n let staticAliases: string[] | undefined;\n const canonicalAuthority = staticAuthorityOptions.canonicalAuthority;\n if (canonicalAuthority) {\n const authorityHost = new UrlString(\n canonicalAuthority\n ).getUrlComponents().HostNameAndPort;\n staticAliases =\n getAliasesFromMetadata(\n authorityHost,\n staticAuthorityOptions.cloudDiscoveryMetadata?.metadata,\n AuthorityMetadataSource.CONFIG,\n logger\n ) ||\n getAliasesFromMetadata(\n authorityHost,\n InstanceDiscoveryMetadata.metadata,\n AuthorityMetadataSource.HARDCODED_VALUES,\n logger\n ) ||\n staticAuthorityOptions.knownAuthorities;\n }\n\n return staticAliases || [];\n}\n\n/**\n * Returns aliases for from the raw cloud discovery metadata passed in\n * @param authorityHost\n * @param rawCloudDiscoveryMetadata\n * @returns\n */\nexport function getAliasesFromMetadata(\n authorityHost?: string,\n cloudDiscoveryMetadata?: CloudDiscoveryMetadata[],\n source?: AuthorityMetadataSource,\n logger?: Logger\n): string[] | null {\n logger?.trace(`getAliasesFromMetadata called with source: ${source}`);\n if (authorityHost && cloudDiscoveryMetadata) {\n const metadata = getCloudDiscoveryMetadataFromNetworkResponse(\n cloudDiscoveryMetadata,\n authorityHost\n );\n\n if (metadata) {\n logger?.trace(\n `getAliasesFromMetadata: found cloud discovery metadata in ${source}, returning aliases`\n );\n return metadata.aliases;\n } else {\n logger?.trace(\n `getAliasesFromMetadata: did not find cloud discovery metadata in ${source}`\n );\n }\n }\n\n return null;\n}\n\n/**\n * Get cloud discovery metadata for common authorities\n */\nexport function getCloudDiscoveryMetadataFromHardcodedValues(\n authorityHost: string\n): CloudDiscoveryMetadata | null {\n const metadata = getCloudDiscoveryMetadataFromNetworkResponse(\n InstanceDiscoveryMetadata.metadata,\n authorityHost\n );\n return metadata;\n}\n\n/**\n * Searches instance discovery network response for the entry that contains the host in the aliases list\n * @param response\n * @param authority\n */\nexport function getCloudDiscoveryMetadataFromNetworkResponse(\n response: CloudDiscoveryMetadata[],\n authorityHost: string\n): CloudDiscoveryMetadata | null {\n for (let i = 0; i < response.length; i++) {\n const metadata = response[i];\n if (metadata.aliases.includes(authorityHost)) {\n return metadata;\n }\n }\n\n return null;\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nexport const cacheQuotaExceededErrorCode = \"cache_quota_exceeded\";\nexport const cacheUnknownErrorCode = \"cache_error_unknown\";\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport * as CacheErrorCodes from \"./CacheErrorCodes.js\";\nexport { CacheErrorCodes };\n\nexport const CacheErrorMessages = {\n [CacheErrorCodes.cacheQuotaExceededErrorCode]:\n \"Exceeded cache storage capacity.\",\n [CacheErrorCodes.cacheUnknownErrorCode]:\n \"Unexpected error occurred when using cache storage.\",\n};\n\n/**\n * Error thrown when there is an error with the cache\n */\nexport class CacheError extends Error {\n /**\n * Short string denoting error\n */\n errorCode: string;\n\n /**\n * Detailed description of error\n */\n errorMessage: string;\n\n constructor(errorCode: string, errorMessage?: string) {\n const message =\n errorMessage ||\n (CacheErrorMessages[errorCode]\n ? CacheErrorMessages[errorCode]\n : CacheErrorMessages[CacheErrorCodes.cacheUnknownErrorCode]);\n\n super(`${errorCode}: ${message}`);\n Object.setPrototypeOf(this, CacheError.prototype);\n\n this.name = \"CacheError\";\n this.errorCode = errorCode;\n this.errorMessage = message;\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport {\n AccountFilter,\n CredentialFilter,\n ValidCredentialType,\n AppMetadataFilter,\n AppMetadataCache,\n TokenKeys,\n TenantProfileFilter,\n} from \"./utils/CacheTypes.js\";\nimport { CacheRecord } from \"./entities/CacheRecord.js\";\nimport {\n CredentialType,\n APP_METADATA,\n THE_FAMILY_ID,\n AUTHORITY_METADATA_CONSTANTS,\n AuthenticationScheme,\n Separators,\n} from \"../utils/Constants.js\";\nimport { CredentialEntity } from \"./entities/CredentialEntity.js\";\nimport { generateCredentialKey } from \"./utils/CacheHelpers.js\";\nimport { ScopeSet } from \"../request/ScopeSet.js\";\nimport { AccountEntity } from \"./entities/AccountEntity.js\";\nimport { AccessTokenEntity } from \"./entities/AccessTokenEntity.js\";\nimport { IdTokenEntity } from \"./entities/IdTokenEntity.js\";\nimport { RefreshTokenEntity } from \"./entities/RefreshTokenEntity.js\";\nimport { ICacheManager } from \"./interface/ICacheManager.js\";\nimport {\n createClientAuthError,\n ClientAuthErrorCodes,\n} from \"../error/ClientAuthError.js\";\nimport {\n AccountInfo,\n TenantProfile,\n tenantIdMatchesHomeTenant,\n updateAccountTenantProfileData,\n} from \"../account/AccountInfo.js\";\nimport { AppMetadataEntity } from \"./entities/AppMetadataEntity.js\";\nimport { ServerTelemetryEntity } from \"./entities/ServerTelemetryEntity.js\";\nimport { ThrottlingEntity } from \"./entities/ThrottlingEntity.js\";\nimport { extractTokenClaims } from \"../account/AuthToken.js\";\nimport { ICrypto } from \"../crypto/ICrypto.js\";\nimport { AuthorityMetadataEntity } from \"./entities/AuthorityMetadataEntity.js\";\nimport { BaseAuthRequest } from \"../request/BaseAuthRequest.js\";\nimport { Logger } from \"../logger/Logger.js\";\nimport { name, version } from \"../packageMetadata.js\";\nimport { StoreInCache } from \"../request/StoreInCache.js\";\nimport { getAliasesFromStaticSources } from \"../authority/AuthorityMetadata.js\";\nimport { StaticAuthorityOptions } from \"../authority/AuthorityOptions.js\";\nimport { TokenClaims } from \"../account/TokenClaims.js\";\nimport { IPerformanceClient } from \"../telemetry/performance/IPerformanceClient.js\";\nimport { CacheError, CacheErrorCodes } from \"../error/CacheError.js\";\n\n/**\n * Interface class which implement cache storage functions used by MSAL to perform validity checks, and store tokens.\n * @internal\n */\nexport abstract class CacheManager implements ICacheManager {\n protected clientId: string;\n protected cryptoImpl: ICrypto;\n // Instance of logger for functions defined in the msal-common layer\n private commonLogger: Logger;\n private staticAuthorityOptions?: StaticAuthorityOptions;\n\n constructor(\n clientId: string,\n cryptoImpl: ICrypto,\n logger: Logger,\n staticAuthorityOptions?: StaticAuthorityOptions\n ) {\n this.clientId = clientId;\n this.cryptoImpl = cryptoImpl;\n this.commonLogger = logger.clone(name, version);\n this.staticAuthorityOptions = staticAuthorityOptions;\n }\n\n /**\n * fetch the account entity from the platform cache\n * @param accountKey\n */\n abstract getAccount(\n accountKey: string,\n logger?: Logger\n ): AccountEntity | null;\n\n /**\n * Returns deserialized account if found in the cache, otherwiser returns null\n */\n abstract getCachedAccountEntity(accountKey: string): AccountEntity | null;\n\n /**\n * set account entity in the platform cache\n * @param account\n */\n abstract setAccount(account: AccountEntity): void;\n\n /**\n * remove account entity from the platform cache if it's outdated\n */\n abstract removeOutdatedAccount(accountKey: string): void;\n\n /**\n * fetch the idToken entity from the platform cache\n * @param idTokenKey\n */\n abstract getIdTokenCredential(idTokenKey: string): IdTokenEntity | null;\n\n /**\n * set idToken entity to the platform cache\n * @param idToken\n */\n abstract setIdTokenCredential(idToken: IdTokenEntity): void;\n\n /**\n * fetch the idToken entity from the platform cache\n * @param accessTokenKey\n */\n abstract getAccessTokenCredential(\n accessTokenKey: string\n ): AccessTokenEntity | null;\n\n /**\n * set idToken entity to the platform cache\n * @param accessToken\n */\n abstract setAccessTokenCredential(accessToken: AccessTokenEntity): void;\n\n /**\n * fetch the idToken entity from the platform cache\n * @param refreshTokenKey\n */\n abstract getRefreshTokenCredential(\n refreshTokenKey: string\n ): RefreshTokenEntity | null;\n\n /**\n * set idToken entity to the platform cache\n * @param refreshToken\n */\n abstract setRefreshTokenCredential(refreshToken: RefreshTokenEntity): void;\n\n /**\n * fetch appMetadata entity from the platform cache\n * @param appMetadataKey\n */\n abstract getAppMetadata(appMetadataKey: string): AppMetadataEntity | null;\n\n /**\n * set appMetadata entity to the platform cache\n * @param appMetadata\n */\n abstract setAppMetadata(appMetadata: AppMetadataEntity): void;\n\n /**\n * fetch server telemetry entity from the platform cache\n * @param serverTelemetryKey\n */\n abstract getServerTelemetry(\n serverTelemetryKey: string\n ): ServerTelemetryEntity | null;\n\n /**\n * set server telemetry entity to the platform cache\n * @param serverTelemetryKey\n * @param serverTelemetry\n */\n abstract setServerTelemetry(\n serverTelemetryKey: string,\n serverTelemetry: ServerTelemetryEntity\n ): void;\n\n /**\n * fetch cloud discovery metadata entity from the platform cache\n * @param key\n */\n abstract getAuthorityMetadata(key: string): AuthorityMetadataEntity | null;\n\n /**\n *\n */\n abstract getAuthorityMetadataKeys(): Array;\n\n /**\n * set cloud discovery metadata entity to the platform cache\n * @param key\n * @param value\n */\n abstract setAuthorityMetadata(\n key: string,\n value: AuthorityMetadataEntity\n ): void;\n\n /**\n * fetch throttling entity from the platform cache\n * @param throttlingCacheKey\n */\n abstract getThrottlingCache(\n throttlingCacheKey: string\n ): ThrottlingEntity | null;\n\n /**\n * set throttling entity to the platform cache\n * @param throttlingCacheKey\n * @param throttlingCache\n */\n abstract setThrottlingCache(\n throttlingCacheKey: string,\n throttlingCache: ThrottlingEntity\n ): void;\n\n /**\n * Function to remove an item from cache given its key.\n * @param key\n */\n abstract removeItem(key: string): void;\n\n /**\n * Function which retrieves all current keys from the cache.\n */\n abstract getKeys(): string[];\n\n /**\n * Function which retrieves all account keys from the cache\n */\n abstract getAccountKeys(): string[];\n\n /**\n * Function which retrieves all token keys from the cache\n */\n abstract getTokenKeys(): TokenKeys;\n\n /**\n * Function which updates an outdated credential cache key\n */\n abstract updateCredentialCacheKey(\n currentCacheKey: string,\n credential: ValidCredentialType\n ): string;\n\n /**\n * Returns all the accounts in the cache that match the optional filter. If no filter is provided, all accounts are returned.\n * @param accountFilter - (Optional) filter to narrow down the accounts returned\n * @returns Array of AccountInfo objects in cache\n */\n getAllAccounts(accountFilter?: AccountFilter): AccountInfo[] {\n return this.buildTenantProfiles(\n this.getAccountsFilteredBy(accountFilter || {}),\n accountFilter\n );\n }\n\n /**\n * Gets first tenanted AccountInfo object found based on provided filters\n */\n getAccountInfoFilteredBy(accountFilter: AccountFilter): AccountInfo | null {\n const allAccounts = this.getAllAccounts(accountFilter);\n if (allAccounts.length > 1) {\n // If one or more accounts are found, prioritize accounts that have an ID token\n const sortedAccounts = allAccounts.sort((account) => {\n return account.idTokenClaims ? -1 : 1;\n });\n return sortedAccounts[0];\n } else if (allAccounts.length === 1) {\n // If only one account is found, return it regardless of whether a matching ID token was found\n return allAccounts[0];\n } else {\n return null;\n }\n }\n\n /**\n * Returns a single matching\n * @param accountFilter\n * @returns\n */\n getBaseAccountInfo(accountFilter: AccountFilter): AccountInfo | null {\n const accountEntities = this.getAccountsFilteredBy(accountFilter);\n if (accountEntities.length > 0) {\n return accountEntities[0].getAccountInfo();\n } else {\n return null;\n }\n }\n\n /**\n * Matches filtered account entities with cached ID tokens that match the tenant profile-specific account filters\n * and builds the account info objects from the matching ID token's claims\n * @param cachedAccounts\n * @param accountFilter\n * @returns Array of AccountInfo objects that match account and tenant profile filters\n */\n private buildTenantProfiles(\n cachedAccounts: AccountEntity[],\n accountFilter?: AccountFilter\n ): AccountInfo[] {\n return cachedAccounts.flatMap((accountEntity) => {\n return this.getTenantProfilesFromAccountEntity(\n accountEntity,\n accountFilter?.tenantId,\n accountFilter\n );\n });\n }\n\n private getTenantedAccountInfoByFilter(\n accountInfo: AccountInfo,\n tokenKeys: TokenKeys,\n tenantProfile: TenantProfile,\n tenantProfileFilter?: TenantProfileFilter\n ): AccountInfo | null {\n let tenantedAccountInfo: AccountInfo | null = null;\n let idTokenClaims: TokenClaims | undefined;\n\n if (tenantProfileFilter) {\n if (\n !this.tenantProfileMatchesFilter(\n tenantProfile,\n tenantProfileFilter\n )\n ) {\n return null;\n }\n }\n\n const idToken = this.getIdToken(\n accountInfo,\n tokenKeys,\n tenantProfile.tenantId\n );\n\n if (idToken) {\n idTokenClaims = extractTokenClaims(\n idToken.secret,\n this.cryptoImpl.base64Decode\n );\n\n if (\n !this.idTokenClaimsMatchTenantProfileFilter(\n idTokenClaims,\n tenantProfileFilter\n )\n ) {\n // ID token sourced claims don't match so this tenant profile is not a match\n return null;\n }\n }\n\n // Expand tenant profile into account info based on matching tenant profile and if available matching ID token claims\n tenantedAccountInfo = updateAccountTenantProfileData(\n accountInfo,\n tenantProfile,\n idTokenClaims,\n idToken?.secret\n );\n\n return tenantedAccountInfo;\n }\n\n private getTenantProfilesFromAccountEntity(\n accountEntity: AccountEntity,\n targetTenantId?: string,\n tenantProfileFilter?: TenantProfileFilter\n ): AccountInfo[] {\n const accountInfo = accountEntity.getAccountInfo();\n let searchTenantProfiles: Map =\n accountInfo.tenantProfiles || new Map();\n const tokenKeys = this.getTokenKeys();\n\n // If a tenant ID was provided, only return the tenant profile for that tenant ID if it exists\n if (targetTenantId) {\n const tenantProfile = searchTenantProfiles.get(targetTenantId);\n if (tenantProfile) {\n // Reduce search field to just this tenant profile\n searchTenantProfiles = new Map([\n [targetTenantId, tenantProfile],\n ]);\n } else {\n // No tenant profile for search tenant ID, return empty array\n return [];\n }\n }\n\n const matchingTenantProfiles: AccountInfo[] = [];\n searchTenantProfiles.forEach((tenantProfile: TenantProfile) => {\n const tenantedAccountInfo = this.getTenantedAccountInfoByFilter(\n accountInfo,\n tokenKeys,\n tenantProfile,\n tenantProfileFilter\n );\n if (tenantedAccountInfo) {\n matchingTenantProfiles.push(tenantedAccountInfo);\n }\n });\n\n return matchingTenantProfiles;\n }\n\n private tenantProfileMatchesFilter(\n tenantProfile: TenantProfile,\n tenantProfileFilter: TenantProfileFilter\n ): boolean {\n if (\n !!tenantProfileFilter.localAccountId &&\n !this.matchLocalAccountIdFromTenantProfile(\n tenantProfile,\n tenantProfileFilter.localAccountId\n )\n ) {\n return false;\n }\n\n if (\n !!tenantProfileFilter.name &&\n !(tenantProfile.name === tenantProfileFilter.name)\n ) {\n return false;\n }\n\n if (\n tenantProfileFilter.isHomeTenant !== undefined &&\n !(tenantProfile.isHomeTenant === tenantProfileFilter.isHomeTenant)\n ) {\n return false;\n }\n\n return true;\n }\n\n private idTokenClaimsMatchTenantProfileFilter(\n idTokenClaims: TokenClaims,\n tenantProfileFilter?: TenantProfileFilter\n ): boolean {\n // Tenant Profile filtering\n if (tenantProfileFilter) {\n if (\n !!tenantProfileFilter.localAccountId &&\n !this.matchLocalAccountIdFromTokenClaims(\n idTokenClaims,\n tenantProfileFilter.localAccountId\n )\n ) {\n return false;\n }\n\n if (\n !!tenantProfileFilter.loginHint &&\n !this.matchLoginHintFromTokenClaims(\n idTokenClaims,\n tenantProfileFilter.loginHint\n )\n ) {\n return false;\n }\n\n if (\n !!tenantProfileFilter.username &&\n !this.matchUsername(\n idTokenClaims.preferred_username,\n tenantProfileFilter.username\n )\n ) {\n return false;\n }\n\n if (\n !!tenantProfileFilter.name &&\n !this.matchName(idTokenClaims, tenantProfileFilter.name)\n ) {\n return false;\n }\n\n if (\n !!tenantProfileFilter.sid &&\n !this.matchSid(idTokenClaims, tenantProfileFilter.sid)\n ) {\n return false;\n }\n }\n\n return true;\n }\n\n /**\n * saves a cache record\n * @param cacheRecord {CacheRecord}\n * @param storeInCache {?StoreInCache}\n * @param correlationId {?string} correlation id\n */\n async saveCacheRecord(\n cacheRecord: CacheRecord,\n storeInCache?: StoreInCache,\n correlationId?: string\n ): Promise {\n if (!cacheRecord) {\n throw createClientAuthError(\n ClientAuthErrorCodes.invalidCacheRecord\n );\n }\n\n try {\n if (!!cacheRecord.account) {\n this.setAccount(cacheRecord.account);\n }\n\n if (!!cacheRecord.idToken && storeInCache?.idToken !== false) {\n this.setIdTokenCredential(cacheRecord.idToken);\n }\n\n if (\n !!cacheRecord.accessToken &&\n storeInCache?.accessToken !== false\n ) {\n await this.saveAccessToken(cacheRecord.accessToken);\n }\n\n if (\n !!cacheRecord.refreshToken &&\n storeInCache?.refreshToken !== false\n ) {\n this.setRefreshTokenCredential(cacheRecord.refreshToken);\n }\n\n if (!!cacheRecord.appMetadata) {\n this.setAppMetadata(cacheRecord.appMetadata);\n }\n } catch (e: unknown) {\n this.commonLogger?.error(`CacheManager.saveCacheRecord: failed`);\n if (e instanceof Error) {\n this.commonLogger?.errorPii(\n `CacheManager.saveCacheRecord: ${e.message}`,\n correlationId\n );\n\n if (\n e.name === \"QuotaExceededError\" ||\n e.name === \"NS_ERROR_DOM_QUOTA_REACHED\" ||\n e.message.includes(\"exceeded the quota\")\n ) {\n this.commonLogger?.error(\n `CacheManager.saveCacheRecord: exceeded storage quota`,\n correlationId\n );\n throw new CacheError(\n CacheErrorCodes.cacheQuotaExceededErrorCode\n );\n } else {\n throw new CacheError(e.name, e.message);\n }\n } else {\n this.commonLogger?.errorPii(\n `CacheManager.saveCacheRecord: ${e}`,\n correlationId\n );\n throw new CacheError(CacheErrorCodes.cacheUnknownErrorCode);\n }\n }\n }\n\n /**\n * saves access token credential\n * @param credential\n */\n private async saveAccessToken(\n credential: AccessTokenEntity\n ): Promise {\n const accessTokenFilter: CredentialFilter = {\n clientId: credential.clientId,\n credentialType: credential.credentialType,\n environment: credential.environment,\n homeAccountId: credential.homeAccountId,\n realm: credential.realm,\n tokenType: credential.tokenType,\n requestedClaimsHash: credential.requestedClaimsHash,\n };\n\n const tokenKeys = this.getTokenKeys();\n const currentScopes = ScopeSet.fromString(credential.target);\n\n const removedAccessTokens: Array> = [];\n tokenKeys.accessToken.forEach((key) => {\n if (\n !this.accessTokenKeyMatchesFilter(key, accessTokenFilter, false)\n ) {\n return;\n }\n\n const tokenEntity = this.getAccessTokenCredential(key);\n\n if (\n tokenEntity &&\n this.credentialMatchesFilter(tokenEntity, accessTokenFilter)\n ) {\n const tokenScopeSet = ScopeSet.fromString(tokenEntity.target);\n if (tokenScopeSet.intersectingScopeSets(currentScopes)) {\n removedAccessTokens.push(this.removeAccessToken(key));\n }\n }\n });\n await Promise.all(removedAccessTokens);\n this.setAccessTokenCredential(credential);\n }\n\n /**\n * Retrieve account entities matching all provided tenant-agnostic filters; if no filter is set, get all account entities in the cache\n * Not checking for casing as keys are all generated in lower case, remember to convert to lower case if object properties are compared\n * @param accountFilter - An object containing Account properties to filter by\n */\n getAccountsFilteredBy(accountFilter: AccountFilter): AccountEntity[] {\n const allAccountKeys = this.getAccountKeys();\n const matchingAccounts: AccountEntity[] = [];\n allAccountKeys.forEach((cacheKey) => {\n if (!this.isAccountKey(cacheKey, accountFilter.homeAccountId)) {\n // Don't parse value if the key doesn't match the account filters\n return;\n }\n\n const entity: AccountEntity | null = this.getAccount(\n cacheKey,\n this.commonLogger\n );\n\n // Match base account fields\n\n if (!entity) {\n return;\n }\n\n if (\n !!accountFilter.homeAccountId &&\n !this.matchHomeAccountId(entity, accountFilter.homeAccountId)\n ) {\n return;\n }\n\n if (\n !!accountFilter.username &&\n !this.matchUsername(entity.username, accountFilter.username)\n ) {\n return;\n }\n\n if (\n !!accountFilter.environment &&\n !this.matchEnvironment(entity, accountFilter.environment)\n ) {\n return;\n }\n\n if (\n !!accountFilter.realm &&\n !this.matchRealm(entity, accountFilter.realm)\n ) {\n return;\n }\n\n if (\n !!accountFilter.nativeAccountId &&\n !this.matchNativeAccountId(\n entity,\n accountFilter.nativeAccountId\n )\n ) {\n return;\n }\n\n if (\n !!accountFilter.authorityType &&\n !this.matchAuthorityType(entity, accountFilter.authorityType)\n ) {\n return;\n }\n\n // If at least one tenant profile matches the tenant profile filter, add the account to the list of matching accounts\n const tenantProfileFilter: TenantProfileFilter = {\n localAccountId: accountFilter?.localAccountId,\n name: accountFilter?.name,\n };\n\n const matchingTenantProfiles = entity.tenantProfiles?.filter(\n (tenantProfile: TenantProfile) => {\n return this.tenantProfileMatchesFilter(\n tenantProfile,\n tenantProfileFilter\n );\n }\n );\n\n if (matchingTenantProfiles && matchingTenantProfiles.length === 0) {\n // No tenant profile for this account matches filter, don't add to list of matching accounts\n return;\n }\n\n matchingAccounts.push(entity);\n });\n\n return matchingAccounts;\n }\n\n /**\n * Returns true if the given key matches our account key schema. Also matches homeAccountId and/or tenantId if provided\n * @param key\n * @param homeAccountId\n * @param tenantId\n * @returns\n */\n isAccountKey(\n key: string,\n homeAccountId?: string,\n tenantId?: string\n ): boolean {\n if (key.split(Separators.CACHE_KEY_SEPARATOR).length < 3) {\n // Account cache keys contain 3 items separated by '-' (each item may also contain '-')\n return false;\n }\n\n if (\n homeAccountId &&\n !key.toLowerCase().includes(homeAccountId.toLowerCase())\n ) {\n return false;\n }\n\n if (tenantId && !key.toLowerCase().includes(tenantId.toLowerCase())) {\n return false;\n }\n\n // Do not check environment as aliasing can cause false negatives\n\n return true;\n }\n\n /**\n * Returns true if the given key matches our credential key schema.\n * @param key\n */\n isCredentialKey(key: string): boolean {\n if (key.split(Separators.CACHE_KEY_SEPARATOR).length < 6) {\n // Credential cache keys contain 6 items separated by '-' (each item may also contain '-')\n return false;\n }\n\n const lowerCaseKey = key.toLowerCase();\n // Credential keys must indicate what credential type they represent\n if (\n lowerCaseKey.indexOf(CredentialType.ID_TOKEN.toLowerCase()) ===\n -1 &&\n lowerCaseKey.indexOf(CredentialType.ACCESS_TOKEN.toLowerCase()) ===\n -1 &&\n lowerCaseKey.indexOf(\n CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME.toLowerCase()\n ) === -1 &&\n lowerCaseKey.indexOf(CredentialType.REFRESH_TOKEN.toLowerCase()) ===\n -1\n ) {\n return false;\n }\n\n if (\n lowerCaseKey.indexOf(CredentialType.REFRESH_TOKEN.toLowerCase()) >\n -1\n ) {\n // Refresh tokens must contain the client id or family id\n const clientIdValidation = `${CredentialType.REFRESH_TOKEN}${Separators.CACHE_KEY_SEPARATOR}${this.clientId}${Separators.CACHE_KEY_SEPARATOR}`;\n const familyIdValidation = `${CredentialType.REFRESH_TOKEN}${Separators.CACHE_KEY_SEPARATOR}${THE_FAMILY_ID}${Separators.CACHE_KEY_SEPARATOR}`;\n if (\n lowerCaseKey.indexOf(clientIdValidation.toLowerCase()) === -1 &&\n lowerCaseKey.indexOf(familyIdValidation.toLowerCase()) === -1\n ) {\n return false;\n }\n } else if (lowerCaseKey.indexOf(this.clientId.toLowerCase()) === -1) {\n // Tokens must contain the clientId\n return false;\n }\n\n return true;\n }\n\n /**\n * Returns whether or not the given credential entity matches the filter\n * @param entity\n * @param filter\n * @returns\n */\n credentialMatchesFilter(\n entity: ValidCredentialType,\n filter: CredentialFilter\n ): boolean {\n if (!!filter.clientId && !this.matchClientId(entity, filter.clientId)) {\n return false;\n }\n\n if (\n !!filter.userAssertionHash &&\n !this.matchUserAssertionHash(entity, filter.userAssertionHash)\n ) {\n return false;\n }\n\n /*\n * homeAccountId can be undefined, and we want to filter out cached items that have a homeAccountId of \"\"\n * because we don't want a client_credential request to return a cached token that has a homeAccountId\n */\n if (\n typeof filter.homeAccountId === \"string\" &&\n !this.matchHomeAccountId(entity, filter.homeAccountId)\n ) {\n return false;\n }\n\n if (\n !!filter.environment &&\n !this.matchEnvironment(entity, filter.environment)\n ) {\n return false;\n }\n\n if (!!filter.realm && !this.matchRealm(entity, filter.realm)) {\n return false;\n }\n\n if (\n !!filter.credentialType &&\n !this.matchCredentialType(entity, filter.credentialType)\n ) {\n return false;\n }\n\n if (!!filter.familyId && !this.matchFamilyId(entity, filter.familyId)) {\n return false;\n }\n\n /*\n * idTokens do not have \"target\", target specific refreshTokens do exist for some types of authentication\n * Resource specific refresh tokens case will be added when the support is deemed necessary\n */\n if (!!filter.target && !this.matchTarget(entity, filter.target)) {\n return false;\n }\n\n // If request OR cached entity has requested Claims Hash, check if they match\n if (filter.requestedClaimsHash || entity.requestedClaimsHash) {\n // Don't match if either is undefined or they are different\n if (entity.requestedClaimsHash !== filter.requestedClaimsHash) {\n return false;\n }\n }\n\n // Access Token with Auth Scheme specific matching\n if (\n entity.credentialType ===\n CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME\n ) {\n if (\n !!filter.tokenType &&\n !this.matchTokenType(entity, filter.tokenType)\n ) {\n return false;\n }\n\n // KeyId (sshKid) in request must match cached SSH certificate keyId because SSH cert is bound to a specific key\n if (filter.tokenType === AuthenticationScheme.SSH) {\n if (filter.keyId && !this.matchKeyId(entity, filter.keyId)) {\n return false;\n }\n }\n }\n\n return true;\n }\n\n /**\n * retrieve appMetadata matching all provided filters; if no filter is set, get all appMetadata\n * @param filter\n */\n getAppMetadataFilteredBy(filter: AppMetadataFilter): AppMetadataCache {\n const allCacheKeys = this.getKeys();\n const matchingAppMetadata: AppMetadataCache = {};\n\n allCacheKeys.forEach((cacheKey) => {\n // don't parse any non-appMetadata type cache entities\n if (!this.isAppMetadata(cacheKey)) {\n return;\n }\n\n // Attempt retrieval\n const entity = this.getAppMetadata(cacheKey);\n\n if (!entity) {\n return;\n }\n\n if (\n !!filter.environment &&\n !this.matchEnvironment(entity, filter.environment)\n ) {\n return;\n }\n\n if (\n !!filter.clientId &&\n !this.matchClientId(entity, filter.clientId)\n ) {\n return;\n }\n\n matchingAppMetadata[cacheKey] = entity;\n });\n\n return matchingAppMetadata;\n }\n\n /**\n * retrieve authorityMetadata that contains a matching alias\n * @param filter\n */\n getAuthorityMetadataByAlias(host: string): AuthorityMetadataEntity | null {\n const allCacheKeys = this.getAuthorityMetadataKeys();\n let matchedEntity = null;\n\n allCacheKeys.forEach((cacheKey) => {\n // don't parse any non-authorityMetadata type cache entities\n if (\n !this.isAuthorityMetadata(cacheKey) ||\n cacheKey.indexOf(this.clientId) === -1\n ) {\n return;\n }\n\n // Attempt retrieval\n const entity = this.getAuthorityMetadata(cacheKey);\n\n if (!entity) {\n return;\n }\n\n if (entity.aliases.indexOf(host) === -1) {\n return;\n }\n\n matchedEntity = entity;\n });\n\n return matchedEntity;\n }\n\n /**\n * Removes all accounts and related tokens from cache.\n */\n async removeAllAccounts(): Promise {\n const allAccountKeys = this.getAccountKeys();\n const removedAccounts: Array> = [];\n\n allAccountKeys.forEach((cacheKey) => {\n removedAccounts.push(this.removeAccount(cacheKey));\n });\n\n await Promise.all(removedAccounts);\n }\n\n /**\n * Removes the account and related tokens for a given account key\n * @param account\n */\n async removeAccount(accountKey: string): Promise {\n const account = this.getAccount(accountKey, this.commonLogger);\n if (!account) {\n return;\n }\n await this.removeAccountContext(account);\n this.removeItem(accountKey);\n }\n\n /**\n * Removes credentials associated with the provided account\n * @param account\n */\n async removeAccountContext(account: AccountEntity): Promise {\n const allTokenKeys = this.getTokenKeys();\n const accountId = account.generateAccountId();\n const removedCredentials: Array> = [];\n\n allTokenKeys.idToken.forEach((key) => {\n if (key.indexOf(accountId) === 0) {\n this.removeIdToken(key);\n }\n });\n\n allTokenKeys.accessToken.forEach((key) => {\n if (key.indexOf(accountId) === 0) {\n removedCredentials.push(this.removeAccessToken(key));\n }\n });\n\n allTokenKeys.refreshToken.forEach((key) => {\n if (key.indexOf(accountId) === 0) {\n this.removeRefreshToken(key);\n }\n });\n\n await Promise.all(removedCredentials);\n }\n\n /**\n * Migrates a single-tenant account and all it's associated alternate cross-tenant account objects in the\n * cache into a condensed multi-tenant account object with tenant profiles.\n * @param accountKey\n * @param accountEntity\n * @param logger\n * @returns\n */\n protected updateOutdatedCachedAccount(\n accountKey: string,\n accountEntity: AccountEntity | null,\n logger?: Logger\n ): AccountEntity | null {\n // Only update if account entity is defined and has no tenantProfiles object (is outdated)\n if (accountEntity && accountEntity.isSingleTenant()) {\n this.commonLogger?.verbose(\n \"updateOutdatedCachedAccount: Found a single-tenant (outdated) account entity in the cache, migrating to multi-tenant account entity\"\n );\n\n // Get keys of all accounts belonging to user\n const matchingAccountKeys = this.getAccountKeys().filter(\n (key: string) => {\n return key.startsWith(accountEntity.homeAccountId);\n }\n );\n\n // Get all account entities belonging to user\n const accountsToMerge: AccountEntity[] = [];\n matchingAccountKeys.forEach((key: string) => {\n const account = this.getCachedAccountEntity(key);\n if (account) {\n accountsToMerge.push(account);\n }\n });\n\n // Set base account to home account if available, any account if not\n const baseAccount =\n accountsToMerge.find((account) => {\n return tenantIdMatchesHomeTenant(\n account.realm,\n account.homeAccountId\n );\n }) || accountsToMerge[0];\n\n // Populate tenant profiles built from each account entity belonging to the user\n baseAccount.tenantProfiles = accountsToMerge.map(\n (account: AccountEntity) => {\n return {\n tenantId: account.realm,\n localAccountId: account.localAccountId,\n name: account.name,\n isHomeTenant: tenantIdMatchesHomeTenant(\n account.realm,\n account.homeAccountId\n ),\n };\n }\n );\n\n const updatedAccount = CacheManager.toObject(new AccountEntity(), {\n ...baseAccount,\n });\n\n const newAccountKey = updatedAccount.generateAccountKey();\n\n // Clear cache of legacy account objects that have been collpsed into tenant profiles\n matchingAccountKeys.forEach((key: string) => {\n if (key !== newAccountKey) {\n this.removeOutdatedAccount(accountKey);\n }\n });\n\n // Cache updated account object\n this.setAccount(updatedAccount);\n logger?.verbose(\"Updated an outdated account entity in the cache\");\n return updatedAccount;\n }\n\n // No update is necessary\n return accountEntity;\n }\n\n /**\n * returns a boolean if the given credential is removed\n * @param credential\n */\n async removeAccessToken(key: string): Promise {\n const credential = this.getAccessTokenCredential(key);\n if (!credential) {\n return;\n }\n\n // Remove Token Binding Key from key store for PoP Tokens Credentials\n if (\n credential.credentialType.toLowerCase() ===\n CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME.toLowerCase()\n ) {\n if (credential.tokenType === AuthenticationScheme.POP) {\n const accessTokenWithAuthSchemeEntity =\n credential as AccessTokenEntity;\n const kid = accessTokenWithAuthSchemeEntity.keyId;\n\n if (kid) {\n try {\n await this.cryptoImpl.removeTokenBindingKey(kid);\n } catch (error) {\n throw createClientAuthError(\n ClientAuthErrorCodes.bindingKeyNotRemoved\n );\n }\n }\n }\n }\n\n return this.removeItem(key);\n }\n\n /**\n * Removes all app metadata objects from cache.\n */\n removeAppMetadata(): boolean {\n const allCacheKeys = this.getKeys();\n allCacheKeys.forEach((cacheKey) => {\n if (this.isAppMetadata(cacheKey)) {\n this.removeItem(cacheKey);\n }\n });\n\n return true;\n }\n\n /**\n * Retrieve AccountEntity from cache\n * @param account\n */\n readAccountFromCache(account: AccountInfo): AccountEntity | null {\n const accountKey: string =\n AccountEntity.generateAccountCacheKey(account);\n return this.getAccount(accountKey, this.commonLogger);\n }\n\n /**\n * Retrieve IdTokenEntity from cache\n * @param account {AccountInfo}\n * @param tokenKeys {?TokenKeys}\n * @param targetRealm {?string}\n * @param performanceClient {?IPerformanceClient}\n * @param correlationId {?string}\n */\n getIdToken(\n account: AccountInfo,\n tokenKeys?: TokenKeys,\n targetRealm?: string,\n performanceClient?: IPerformanceClient,\n correlationId?: string\n ): IdTokenEntity | null {\n this.commonLogger.trace(\"CacheManager - getIdToken called\");\n const idTokenFilter: CredentialFilter = {\n homeAccountId: account.homeAccountId,\n environment: account.environment,\n credentialType: CredentialType.ID_TOKEN,\n clientId: this.clientId,\n realm: targetRealm,\n };\n\n const idTokenMap: Map = this.getIdTokensByFilter(\n idTokenFilter,\n tokenKeys\n );\n\n const numIdTokens = idTokenMap.size;\n\n if (numIdTokens < 1) {\n this.commonLogger.info(\"CacheManager:getIdToken - No token found\");\n return null;\n } else if (numIdTokens > 1) {\n let tokensToBeRemoved: Map = idTokenMap;\n // Multiple tenant profiles and no tenant specified, pick home account\n if (!targetRealm) {\n const homeIdTokenMap: Map = new Map<\n string,\n IdTokenEntity\n >();\n idTokenMap.forEach((idToken, key) => {\n if (idToken.realm === account.tenantId) {\n homeIdTokenMap.set(key, idToken);\n }\n });\n const numHomeIdTokens = homeIdTokenMap.size;\n if (numHomeIdTokens < 1) {\n this.commonLogger.info(\n \"CacheManager:getIdToken - Multiple ID tokens found for account but none match account entity tenant id, returning first result\"\n );\n return idTokenMap.values().next().value;\n } else if (numHomeIdTokens === 1) {\n this.commonLogger.info(\n \"CacheManager:getIdToken - Multiple ID tokens found for account, defaulting to home tenant profile\"\n );\n return homeIdTokenMap.values().next().value;\n } else {\n // Multiple ID tokens for home tenant profile, remove all and return null\n tokensToBeRemoved = homeIdTokenMap;\n }\n }\n // Multiple tokens for a single tenant profile, remove all and return null\n this.commonLogger.info(\n \"CacheManager:getIdToken - Multiple matching ID tokens found, clearing them\"\n );\n tokensToBeRemoved.forEach((idToken, key) => {\n this.removeIdToken(key);\n });\n if (performanceClient && correlationId) {\n performanceClient.addFields(\n { multiMatchedID: idTokenMap.size },\n correlationId\n );\n }\n return null;\n }\n\n this.commonLogger.info(\"CacheManager:getIdToken - Returning ID token\");\n return idTokenMap.values().next().value;\n }\n\n /**\n * Gets all idTokens matching the given filter\n * @param filter\n * @returns\n */\n getIdTokensByFilter(\n filter: CredentialFilter,\n tokenKeys?: TokenKeys\n ): Map {\n const idTokenKeys =\n (tokenKeys && tokenKeys.idToken) || this.getTokenKeys().idToken;\n\n const idTokens: Map = new Map<\n string,\n IdTokenEntity\n >();\n idTokenKeys.forEach((key) => {\n if (\n !this.idTokenKeyMatchesFilter(key, {\n clientId: this.clientId,\n ...filter,\n })\n ) {\n return;\n }\n const idToken = this.getIdTokenCredential(key);\n if (idToken && this.credentialMatchesFilter(idToken, filter)) {\n idTokens.set(key, idToken);\n }\n });\n\n return idTokens;\n }\n\n /**\n * Validate the cache key against filter before retrieving and parsing cache value\n * @param key\n * @param filter\n * @returns\n */\n idTokenKeyMatchesFilter(\n inputKey: string,\n filter: CredentialFilter\n ): boolean {\n const key = inputKey.toLowerCase();\n if (\n filter.clientId &&\n key.indexOf(filter.clientId.toLowerCase()) === -1\n ) {\n return false;\n }\n\n if (\n filter.homeAccountId &&\n key.indexOf(filter.homeAccountId.toLowerCase()) === -1\n ) {\n return false;\n }\n\n return true;\n }\n\n /**\n * Removes idToken from the cache\n * @param key\n */\n removeIdToken(key: string): void {\n this.removeItem(key);\n }\n\n /**\n * Removes refresh token from the cache\n * @param key\n */\n removeRefreshToken(key: string): void {\n this.removeItem(key);\n }\n\n /**\n * Retrieve AccessTokenEntity from cache\n * @param account {AccountInfo}\n * @param request {BaseAuthRequest}\n * @param tokenKeys {?TokenKeys}\n * @param performanceClient {?IPerformanceClient}\n * @param correlationId {?string}\n */\n getAccessToken(\n account: AccountInfo,\n request: BaseAuthRequest,\n tokenKeys?: TokenKeys,\n targetRealm?: string,\n performanceClient?: IPerformanceClient,\n correlationId?: string\n ): AccessTokenEntity | null {\n this.commonLogger.trace(\"CacheManager - getAccessToken called\");\n const scopes = ScopeSet.createSearchScopes(request.scopes);\n const authScheme =\n request.authenticationScheme || AuthenticationScheme.BEARER;\n /*\n * Distinguish between Bearer and PoP/SSH token cache types\n * Cast to lowercase to handle \"bearer\" from ADFS\n */\n const credentialType =\n authScheme &&\n authScheme.toLowerCase() !==\n AuthenticationScheme.BEARER.toLowerCase()\n ? CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME\n : CredentialType.ACCESS_TOKEN;\n\n const accessTokenFilter: CredentialFilter = {\n homeAccountId: account.homeAccountId,\n environment: account.environment,\n credentialType: credentialType,\n clientId: this.clientId,\n realm: targetRealm || account.tenantId,\n target: scopes,\n tokenType: authScheme,\n keyId: request.sshKid,\n requestedClaimsHash: request.requestedClaimsHash,\n };\n\n const accessTokenKeys =\n (tokenKeys && tokenKeys.accessToken) ||\n this.getTokenKeys().accessToken;\n const accessTokens: AccessTokenEntity[] = [];\n\n accessTokenKeys.forEach((key) => {\n // Validate key\n if (\n this.accessTokenKeyMatchesFilter(key, accessTokenFilter, true)\n ) {\n const accessToken = this.getAccessTokenCredential(key);\n\n // Validate value\n if (\n accessToken &&\n this.credentialMatchesFilter(accessToken, accessTokenFilter)\n ) {\n accessTokens.push(accessToken);\n }\n }\n });\n\n const numAccessTokens = accessTokens.length;\n if (numAccessTokens < 1) {\n this.commonLogger.info(\n \"CacheManager:getAccessToken - No token found\"\n );\n return null;\n } else if (numAccessTokens > 1) {\n this.commonLogger.info(\n \"CacheManager:getAccessToken - Multiple access tokens found, clearing them\"\n );\n accessTokens.forEach((accessToken) => {\n void this.removeAccessToken(generateCredentialKey(accessToken));\n });\n if (performanceClient && correlationId) {\n performanceClient.addFields(\n { multiMatchedAT: accessTokens.length },\n correlationId\n );\n }\n return null;\n }\n\n this.commonLogger.info(\n \"CacheManager:getAccessToken - Returning access token\"\n );\n return accessTokens[0];\n }\n\n /**\n * Validate the cache key against filter before retrieving and parsing cache value\n * @param key\n * @param filter\n * @param keyMustContainAllScopes\n * @returns\n */\n accessTokenKeyMatchesFilter(\n inputKey: string,\n filter: CredentialFilter,\n keyMustContainAllScopes: boolean\n ): boolean {\n const key = inputKey.toLowerCase();\n if (\n filter.clientId &&\n key.indexOf(filter.clientId.toLowerCase()) === -1\n ) {\n return false;\n }\n\n if (\n filter.homeAccountId &&\n key.indexOf(filter.homeAccountId.toLowerCase()) === -1\n ) {\n return false;\n }\n\n if (filter.realm && key.indexOf(filter.realm.toLowerCase()) === -1) {\n return false;\n }\n\n if (\n filter.requestedClaimsHash &&\n key.indexOf(filter.requestedClaimsHash.toLowerCase()) === -1\n ) {\n return false;\n }\n\n if (filter.target) {\n const scopes = filter.target.asArray();\n for (let i = 0; i < scopes.length; i++) {\n if (\n keyMustContainAllScopes &&\n !key.includes(scopes[i].toLowerCase())\n ) {\n // When performing a cache lookup a missing scope would be a cache miss\n return false;\n } else if (\n !keyMustContainAllScopes &&\n key.includes(scopes[i].toLowerCase())\n ) {\n // When performing a cache write, any token with a subset of requested scopes should be replaced\n return true;\n }\n }\n }\n\n return true;\n }\n\n /**\n * Gets all access tokens matching the filter\n * @param filter\n * @returns\n */\n getAccessTokensByFilter(filter: CredentialFilter): AccessTokenEntity[] {\n const tokenKeys = this.getTokenKeys();\n\n const accessTokens: AccessTokenEntity[] = [];\n tokenKeys.accessToken.forEach((key) => {\n if (!this.accessTokenKeyMatchesFilter(key, filter, true)) {\n return;\n }\n\n const accessToken = this.getAccessTokenCredential(key);\n if (\n accessToken &&\n this.credentialMatchesFilter(accessToken, filter)\n ) {\n accessTokens.push(accessToken);\n }\n });\n\n return accessTokens;\n }\n\n /**\n * Helper to retrieve the appropriate refresh token from cache\n * @param account {AccountInfo}\n * @param familyRT {boolean}\n * @param tokenKeys {?TokenKeys}\n * @param performanceClient {?IPerformanceClient}\n * @param correlationId {?string}\n */\n getRefreshToken(\n account: AccountInfo,\n familyRT: boolean,\n tokenKeys?: TokenKeys,\n performanceClient?: IPerformanceClient,\n correlationId?: string\n ): RefreshTokenEntity | null {\n this.commonLogger.trace(\"CacheManager - getRefreshToken called\");\n const id = familyRT ? THE_FAMILY_ID : undefined;\n const refreshTokenFilter: CredentialFilter = {\n homeAccountId: account.homeAccountId,\n environment: account.environment,\n credentialType: CredentialType.REFRESH_TOKEN,\n clientId: this.clientId,\n familyId: id,\n };\n\n const refreshTokenKeys =\n (tokenKeys && tokenKeys.refreshToken) ||\n this.getTokenKeys().refreshToken;\n const refreshTokens: RefreshTokenEntity[] = [];\n\n refreshTokenKeys.forEach((key) => {\n // Validate key\n if (this.refreshTokenKeyMatchesFilter(key, refreshTokenFilter)) {\n const refreshToken = this.getRefreshTokenCredential(key);\n // Validate value\n if (\n refreshToken &&\n this.credentialMatchesFilter(\n refreshToken,\n refreshTokenFilter\n )\n ) {\n refreshTokens.push(refreshToken);\n }\n }\n });\n\n const numRefreshTokens = refreshTokens.length;\n if (numRefreshTokens < 1) {\n this.commonLogger.info(\n \"CacheManager:getRefreshToken - No refresh token found.\"\n );\n return null;\n }\n // address the else case after remove functions address environment aliases\n\n if (numRefreshTokens > 1 && performanceClient && correlationId) {\n performanceClient.addFields(\n { multiMatchedRT: numRefreshTokens },\n correlationId\n );\n }\n\n this.commonLogger.info(\n \"CacheManager:getRefreshToken - returning refresh token\"\n );\n return refreshTokens[0] as RefreshTokenEntity;\n }\n\n /**\n * Validate the cache key against filter before retrieving and parsing cache value\n * @param key\n * @param filter\n */\n refreshTokenKeyMatchesFilter(\n inputKey: string,\n filter: CredentialFilter\n ): boolean {\n const key = inputKey.toLowerCase();\n if (\n filter.familyId &&\n key.indexOf(filter.familyId.toLowerCase()) === -1\n ) {\n return false;\n }\n\n // If familyId is used, clientId is not in the key\n if (\n !filter.familyId &&\n filter.clientId &&\n key.indexOf(filter.clientId.toLowerCase()) === -1\n ) {\n return false;\n }\n\n if (\n filter.homeAccountId &&\n key.indexOf(filter.homeAccountId.toLowerCase()) === -1\n ) {\n return false;\n }\n\n return true;\n }\n\n /**\n * Retrieve AppMetadataEntity from cache\n */\n readAppMetadataFromCache(environment: string): AppMetadataEntity | null {\n const appMetadataFilter: AppMetadataFilter = {\n environment,\n clientId: this.clientId,\n };\n\n const appMetadata: AppMetadataCache =\n this.getAppMetadataFilteredBy(appMetadataFilter);\n const appMetadataEntries: AppMetadataEntity[] = Object.keys(\n appMetadata\n ).map((key) => appMetadata[key]);\n\n const numAppMetadata = appMetadataEntries.length;\n if (numAppMetadata < 1) {\n return null;\n } else if (numAppMetadata > 1) {\n throw createClientAuthError(\n ClientAuthErrorCodes.multipleMatchingAppMetadata\n );\n }\n\n return appMetadataEntries[0] as AppMetadataEntity;\n }\n\n /**\n * Return the family_id value associated with FOCI\n * @param environment\n * @param clientId\n */\n isAppMetadataFOCI(environment: string): boolean {\n const appMetadata = this.readAppMetadataFromCache(environment);\n return !!(appMetadata && appMetadata.familyId === THE_FAMILY_ID);\n }\n\n /**\n * helper to match account ids\n * @param value\n * @param homeAccountId\n */\n private matchHomeAccountId(\n entity: AccountEntity | CredentialEntity,\n homeAccountId: string\n ): boolean {\n return !!(\n typeof entity.homeAccountId === \"string\" &&\n homeAccountId === entity.homeAccountId\n );\n }\n\n /**\n * helper to match account ids\n * @param entity\n * @param localAccountId\n * @returns\n */\n private matchLocalAccountIdFromTokenClaims(\n tokenClaims: TokenClaims,\n localAccountId: string\n ): boolean {\n const idTokenLocalAccountId = tokenClaims.oid || tokenClaims.sub;\n return localAccountId === idTokenLocalAccountId;\n }\n\n private matchLocalAccountIdFromTenantProfile(\n tenantProfile: TenantProfile,\n localAccountId: string\n ): boolean {\n return tenantProfile.localAccountId === localAccountId;\n }\n\n /**\n * helper to match names\n * @param entity\n * @param name\n * @returns true if the downcased name properties are present and match in the filter and the entity\n */\n private matchName(claims: TokenClaims, name: string): boolean {\n return !!(name.toLowerCase() === claims.name?.toLowerCase());\n }\n\n /**\n * helper to match usernames\n * @param entity\n * @param username\n * @returns\n */\n private matchUsername(\n cachedUsername?: string,\n filterUsername?: string\n ): boolean {\n return !!(\n cachedUsername &&\n typeof cachedUsername === \"string\" &&\n filterUsername?.toLowerCase() === cachedUsername.toLowerCase()\n );\n }\n\n /**\n * helper to match assertion\n * @param value\n * @param oboAssertion\n */\n private matchUserAssertionHash(\n entity: CredentialEntity,\n userAssertionHash: string\n ): boolean {\n return !!(\n entity.userAssertionHash &&\n userAssertionHash === entity.userAssertionHash\n );\n }\n\n /**\n * helper to match environment\n * @param value\n * @param environment\n */\n private matchEnvironment(\n entity: AccountEntity | CredentialEntity | AppMetadataEntity,\n environment: string\n ): boolean {\n // Check static authority options first for cases where authority metadata has not been resolved and cached yet\n if (this.staticAuthorityOptions) {\n const staticAliases = getAliasesFromStaticSources(\n this.staticAuthorityOptions,\n this.commonLogger\n );\n if (\n staticAliases.includes(environment) &&\n staticAliases.includes(entity.environment)\n ) {\n return true;\n }\n }\n\n // Query metadata cache if no static authority configuration has aliases that match enviroment\n const cloudMetadata = this.getAuthorityMetadataByAlias(environment);\n if (\n cloudMetadata &&\n cloudMetadata.aliases.indexOf(entity.environment) > -1\n ) {\n return true;\n }\n return false;\n }\n\n /**\n * helper to match credential type\n * @param entity\n * @param credentialType\n */\n private matchCredentialType(\n entity: CredentialEntity,\n credentialType: string\n ): boolean {\n return (\n entity.credentialType &&\n credentialType.toLowerCase() === entity.credentialType.toLowerCase()\n );\n }\n\n /**\n * helper to match client ids\n * @param entity\n * @param clientId\n */\n private matchClientId(\n entity: CredentialEntity | AppMetadataEntity,\n clientId: string\n ): boolean {\n return !!(entity.clientId && clientId === entity.clientId);\n }\n\n /**\n * helper to match family ids\n * @param entity\n * @param familyId\n */\n private matchFamilyId(\n entity: CredentialEntity | AppMetadataEntity,\n familyId: string\n ): boolean {\n return !!(entity.familyId && familyId === entity.familyId);\n }\n\n /**\n * helper to match realm\n * @param entity\n * @param realm\n */\n private matchRealm(\n entity: AccountEntity | CredentialEntity,\n realm: string\n ): boolean {\n return !!(entity.realm?.toLowerCase() === realm.toLowerCase());\n }\n\n /**\n * helper to match nativeAccountId\n * @param entity\n * @param nativeAccountId\n * @returns boolean indicating the match result\n */\n private matchNativeAccountId(\n entity: AccountEntity,\n nativeAccountId: string\n ): boolean {\n return !!(\n entity.nativeAccountId && nativeAccountId === entity.nativeAccountId\n );\n }\n\n /**\n * helper to match loginHint which can be either:\n * 1. login_hint ID token claim\n * 2. username in cached account object\n * 3. upn in ID token claims\n * @param entity\n * @param loginHint\n * @returns\n */\n private matchLoginHintFromTokenClaims(\n tokenClaims: TokenClaims,\n loginHint: string\n ): boolean {\n if (tokenClaims.login_hint === loginHint) {\n return true;\n }\n\n if (tokenClaims.preferred_username === loginHint) {\n return true;\n }\n\n if (tokenClaims.upn === loginHint) {\n return true;\n }\n\n return false;\n }\n\n /**\n * Helper to match sid\n * @param entity\n * @param sid\n * @returns true if the sid claim is present and matches the filter\n */\n private matchSid(idTokenClaims: TokenClaims, sid: string): boolean {\n return idTokenClaims.sid === sid;\n }\n\n private matchAuthorityType(\n entity: AccountEntity,\n authorityType: string\n ): boolean {\n return !!(\n entity.authorityType &&\n authorityType.toLowerCase() === entity.authorityType.toLowerCase()\n );\n }\n\n /**\n * Returns true if the target scopes are a subset of the current entity's scopes, false otherwise.\n * @param entity\n * @param target\n */\n private matchTarget(entity: CredentialEntity, target: ScopeSet): boolean {\n const isNotAccessTokenCredential =\n entity.credentialType !== CredentialType.ACCESS_TOKEN &&\n entity.credentialType !==\n CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME;\n\n if (isNotAccessTokenCredential || !entity.target) {\n return false;\n }\n\n const entityScopeSet: ScopeSet = ScopeSet.fromString(entity.target);\n\n return entityScopeSet.containsScopeSet(target);\n }\n\n /**\n * Returns true if the credential's tokenType or Authentication Scheme matches the one in the request, false otherwise\n * @param entity\n * @param tokenType\n */\n private matchTokenType(\n entity: CredentialEntity,\n tokenType: AuthenticationScheme\n ): boolean {\n return !!(entity.tokenType && entity.tokenType === tokenType);\n }\n\n /**\n * Returns true if the credential's keyId matches the one in the request, false otherwise\n * @param entity\n * @param keyId\n */\n private matchKeyId(entity: CredentialEntity, keyId: string): boolean {\n return !!(entity.keyId && entity.keyId === keyId);\n }\n\n /**\n * returns if a given cache entity is of the type appmetadata\n * @param key\n */\n private isAppMetadata(key: string): boolean {\n return key.indexOf(APP_METADATA) !== -1;\n }\n\n /**\n * returns if a given cache entity is of the type authoritymetadata\n * @param key\n */\n protected isAuthorityMetadata(key: string): boolean {\n return key.indexOf(AUTHORITY_METADATA_CONSTANTS.CACHE_KEY) !== -1;\n }\n\n /**\n * returns cache key used for cloud instance metadata\n */\n generateAuthorityMetadataCacheKey(authority: string): string {\n return `${AUTHORITY_METADATA_CONSTANTS.CACHE_KEY}-${this.clientId}-${authority}`;\n }\n\n /**\n * Helper to convert serialized data to object\n * @param obj\n * @param json\n */\n static toObject(obj: T, json: object): T {\n for (const propertyName in json) {\n obj[propertyName] = json[propertyName];\n }\n return obj;\n }\n}\n\n/** @internal */\nexport class DefaultStorageClass extends CacheManager {\n setAccount(): void {\n throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented);\n }\n getAccount(): AccountEntity {\n throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented);\n }\n getCachedAccountEntity(): AccountEntity | null {\n throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented);\n }\n setIdTokenCredential(): void {\n throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented);\n }\n getIdTokenCredential(): IdTokenEntity {\n throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented);\n }\n setAccessTokenCredential(): void {\n throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented);\n }\n getAccessTokenCredential(): AccessTokenEntity {\n throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented);\n }\n setRefreshTokenCredential(): void {\n throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented);\n }\n getRefreshTokenCredential(): RefreshTokenEntity {\n throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented);\n }\n setAppMetadata(): void {\n throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented);\n }\n getAppMetadata(): AppMetadataEntity {\n throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented);\n }\n setServerTelemetry(): void {\n throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented);\n }\n getServerTelemetry(): ServerTelemetryEntity {\n throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented);\n }\n setAuthorityMetadata(): void {\n throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented);\n }\n getAuthorityMetadata(): AuthorityMetadataEntity | null {\n throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented);\n }\n getAuthorityMetadataKeys(): Array {\n throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented);\n }\n setThrottlingCache(): void {\n throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented);\n }\n getThrottlingCache(): ThrottlingEntity {\n throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented);\n }\n removeItem(): boolean {\n throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented);\n }\n getKeys(): string[] {\n throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented);\n }\n getAccountKeys(): string[] {\n throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented);\n }\n getTokenKeys(): TokenKeys {\n throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented);\n }\n updateCredentialCacheKey(): string {\n throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented);\n }\n removeOutdatedAccount(): void {\n throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented);\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { INetworkModule } from \"../network/INetworkModule.js\";\nimport { DEFAULT_CRYPTO_IMPLEMENTATION, ICrypto } from \"../crypto/ICrypto.js\";\nimport { ILoggerCallback, Logger, LogLevel } from \"../logger/Logger.js\";\nimport {\n Constants,\n DEFAULT_TOKEN_RENEWAL_OFFSET_SEC,\n} from \"../utils/Constants.js\";\nimport { version } from \"../packageMetadata.js\";\nimport { Authority } from \"../authority/Authority.js\";\nimport { AzureCloudInstance } from \"../authority/AuthorityOptions.js\";\nimport { CacheManager, DefaultStorageClass } from \"../cache/CacheManager.js\";\nimport { ServerTelemetryManager } from \"../telemetry/server/ServerTelemetryManager.js\";\nimport { ICachePlugin } from \"../cache/interface/ICachePlugin.js\";\nimport { ISerializableTokenCache } from \"../cache/interface/ISerializableTokenCache.js\";\nimport { ClientCredentials } from \"../account/ClientCredentials.js\";\nimport { ProtocolMode } from \"../authority/ProtocolMode.js\";\nimport {\n ClientAuthErrorCodes,\n createClientAuthError,\n} from \"../error/ClientAuthError.js\";\n\n/**\n * Use the configuration object to configure MSAL Modules and initialize the base interfaces for MSAL.\n *\n * This object allows you to configure important elements of MSAL functionality:\n * - authOptions - Authentication for application\n * - cryptoInterface - Implementation of crypto functions\n * - libraryInfo - Library metadata\n * - telemetry - Telemetry options and data\n * - loggerOptions - Logging for application\n * - networkInterface - Network implementation\n * - storageInterface - Storage implementation\n * - systemOptions - Additional library options\n * - clientCredentials - Credentials options for confidential clients\n * @internal\n */\nexport type ClientConfiguration = {\n authOptions: AuthOptions;\n systemOptions?: SystemOptions;\n loggerOptions?: LoggerOptions;\n cacheOptions?: CacheOptions;\n storageInterface?: CacheManager;\n networkInterface?: INetworkModule;\n cryptoInterface?: ICrypto;\n clientCredentials?: ClientCredentials;\n libraryInfo?: LibraryInfo;\n telemetry?: TelemetryOptions;\n serverTelemetryManager?: ServerTelemetryManager | null;\n persistencePlugin?: ICachePlugin | null;\n serializableCache?: ISerializableTokenCache | null;\n};\n\nexport type CommonClientConfiguration = {\n authOptions: Required;\n systemOptions: Required;\n loggerOptions: Required;\n cacheOptions: Required;\n storageInterface: CacheManager;\n networkInterface: INetworkModule;\n cryptoInterface: Required;\n libraryInfo: LibraryInfo;\n telemetry: Required;\n serverTelemetryManager: ServerTelemetryManager | null;\n clientCredentials: ClientCredentials;\n persistencePlugin: ICachePlugin | null;\n serializableCache: ISerializableTokenCache | null;\n};\n\n/**\n * Use this to configure the auth options in the ClientConfiguration object\n *\n * - clientId - Client ID of your app registered with our Application registration portal : https://portal.azure.com/#blade/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/RegisteredAppsPreview in Microsoft Identity Platform\n * - authority - You can configure a specific authority, defaults to \" \" or \"https://login.microsoftonline.com/common\"\n * - knownAuthorities - An array of URIs that are known to be valid. Used in B2C scenarios.\n * - cloudDiscoveryMetadata - A string containing the cloud discovery response. Used in AAD scenarios.\n * - clientCapabilities - Array of capabilities which will be added to the claims.access_token.xms_cc request property on every network request.\n * - protocolMode - Enum that represents the protocol that msal follows. Used for configuring proper endpoints.\n * - skipAuthorityMetadataCache - A flag to choose whether to use or not use the local metadata cache during authority initialization. Defaults to false.\n * - instanceAware - A flag of whether the STS will send back additional parameters to specify where the tokens should be retrieved from.\n * - redirectUri - The redirect URI where authentication responses can be received by your application. It must exactly match one of the redirect URIs registered in the Azure portal.\n * @internal\n */\nexport type AuthOptions = {\n clientId: string;\n authority: Authority;\n redirectUri: string;\n clientCapabilities?: Array;\n azureCloudOptions?: AzureCloudOptions;\n skipAuthorityMetadataCache?: boolean;\n instanceAware?: boolean;\n};\n\n/**\n * Use this to configure token renewal info in the Configuration object\n *\n * - tokenRenewalOffsetSeconds - Sets the window of offset needed to renew the token before expiry\n */\nexport type SystemOptions = {\n tokenRenewalOffsetSeconds?: number;\n preventCorsPreflight?: boolean;\n};\n\n/**\n * Use this to configure the logging that MSAL does, by configuring logger options in the Configuration object\n *\n * - loggerCallback - Callback for logger\n * - piiLoggingEnabled - Sets whether pii logging is enabled\n * - logLevel - Sets the level at which logging happens\n * - correlationId - Sets the correlationId printed by the logger\n */\nexport type LoggerOptions = {\n loggerCallback?: ILoggerCallback;\n piiLoggingEnabled?: boolean;\n logLevel?: LogLevel;\n correlationId?: string;\n};\n\n/**\n * Use this to configure credential cache preferences in the ClientConfiguration object\n *\n * - claimsBasedCachingEnabled - Sets whether tokens should be cached based on the claims hash. Default is false.\n */\nexport type CacheOptions = {\n claimsBasedCachingEnabled?: boolean;\n};\n\n/**\n * Library-specific options\n */\nexport type LibraryInfo = {\n sku: string;\n version: string;\n cpu: string;\n os: string;\n};\n\n/**\n * AzureCloudInstance specific options\n *\n * - azureCloudInstance - string enum providing short notation for soverign and public cloud authorities\n * - tenant - provision to provide the tenant info\n */\nexport type AzureCloudOptions = {\n azureCloudInstance: AzureCloudInstance;\n tenant?: string;\n};\n\nexport type TelemetryOptions = {\n application: ApplicationTelemetry;\n};\n\n/**\n * Telemetry information sent on request\n * - appName: Unique string name of an application\n * - appVersion: Version of the application using MSAL\n */\nexport type ApplicationTelemetry = {\n appName: string;\n appVersion: string;\n};\n\nexport const DEFAULT_SYSTEM_OPTIONS: Required = {\n tokenRenewalOffsetSeconds: DEFAULT_TOKEN_RENEWAL_OFFSET_SEC,\n preventCorsPreflight: false,\n};\n\nconst DEFAULT_LOGGER_IMPLEMENTATION: Required = {\n loggerCallback: () => {\n // allow users to not set loggerCallback\n },\n piiLoggingEnabled: false,\n logLevel: LogLevel.Info,\n correlationId: Constants.EMPTY_STRING,\n};\n\nconst DEFAULT_CACHE_OPTIONS: Required = {\n claimsBasedCachingEnabled: false,\n};\n\nconst DEFAULT_NETWORK_IMPLEMENTATION: INetworkModule = {\n async sendGetRequestAsync(): Promise {\n throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented);\n },\n async sendPostRequestAsync(): Promise {\n throw createClientAuthError(ClientAuthErrorCodes.methodNotImplemented);\n },\n};\n\nconst DEFAULT_LIBRARY_INFO: LibraryInfo = {\n sku: Constants.SKU,\n version: version,\n cpu: Constants.EMPTY_STRING,\n os: Constants.EMPTY_STRING,\n};\n\nconst DEFAULT_CLIENT_CREDENTIALS: ClientCredentials = {\n clientSecret: Constants.EMPTY_STRING,\n clientAssertion: undefined,\n};\n\nconst DEFAULT_AZURE_CLOUD_OPTIONS: AzureCloudOptions = {\n azureCloudInstance: AzureCloudInstance.None,\n tenant: `${Constants.DEFAULT_COMMON_TENANT}`,\n};\n\nconst DEFAULT_TELEMETRY_OPTIONS: Required = {\n application: {\n appName: \"\",\n appVersion: \"\",\n },\n};\n\n/**\n * Function that sets the default options when not explicitly configured from app developer\n *\n * @param Configuration\n *\n * @returns Configuration\n */\nexport function buildClientConfiguration({\n authOptions: userAuthOptions,\n systemOptions: userSystemOptions,\n loggerOptions: userLoggerOption,\n cacheOptions: userCacheOptions,\n storageInterface: storageImplementation,\n networkInterface: networkImplementation,\n cryptoInterface: cryptoImplementation,\n clientCredentials: clientCredentials,\n libraryInfo: libraryInfo,\n telemetry: telemetry,\n serverTelemetryManager: serverTelemetryManager,\n persistencePlugin: persistencePlugin,\n serializableCache: serializableCache,\n}: ClientConfiguration): CommonClientConfiguration {\n const loggerOptions = {\n ...DEFAULT_LOGGER_IMPLEMENTATION,\n ...userLoggerOption,\n };\n\n return {\n authOptions: buildAuthOptions(userAuthOptions),\n systemOptions: { ...DEFAULT_SYSTEM_OPTIONS, ...userSystemOptions },\n loggerOptions: loggerOptions,\n cacheOptions: { ...DEFAULT_CACHE_OPTIONS, ...userCacheOptions },\n storageInterface:\n storageImplementation ||\n new DefaultStorageClass(\n userAuthOptions.clientId,\n DEFAULT_CRYPTO_IMPLEMENTATION,\n new Logger(loggerOptions)\n ),\n networkInterface:\n networkImplementation || DEFAULT_NETWORK_IMPLEMENTATION,\n cryptoInterface: cryptoImplementation || DEFAULT_CRYPTO_IMPLEMENTATION,\n clientCredentials: clientCredentials || DEFAULT_CLIENT_CREDENTIALS,\n libraryInfo: { ...DEFAULT_LIBRARY_INFO, ...libraryInfo },\n telemetry: { ...DEFAULT_TELEMETRY_OPTIONS, ...telemetry },\n serverTelemetryManager: serverTelemetryManager || null,\n persistencePlugin: persistencePlugin || null,\n serializableCache: serializableCache || null,\n };\n}\n\n/**\n * Construct authoptions from the client and platform passed values\n * @param authOptions\n */\nfunction buildAuthOptions(authOptions: AuthOptions): Required {\n return {\n clientCapabilities: [],\n azureCloudOptions: DEFAULT_AZURE_CLOUD_OPTIONS,\n skipAuthorityMetadataCache: false,\n instanceAware: false,\n ...authOptions,\n };\n}\n\n/**\n * Returns true if config has protocolMode set to ProtocolMode.OIDC, false otherwise\n * @param ClientConfiguration\n */\nexport function isOidcProtocolMode(config: ClientConfiguration): boolean {\n return (\n config.authOptions.authority.options.protocolMode === ProtocolMode.OIDC\n );\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport {\n ClientAuthErrorCodes,\n createClientAuthError,\n} from \"../error/ClientAuthError.js\";\nimport { NetworkResponse } from \"./NetworkResponse.js\";\n\n/**\n * Options allowed by network request APIs.\n */\nexport type NetworkRequestOptions = {\n headers?: Record;\n body?: string;\n};\n\n/**\n * Client network interface to send backend requests.\n * @interface\n */\nexport interface INetworkModule {\n /**\n * Interface function for async network \"GET\" requests. Based on the Fetch standard: https://fetch.spec.whatwg.org/\n * @param url\n * @param requestParams\n * @param enableCaching\n */\n sendGetRequestAsync(\n url: string,\n options?: NetworkRequestOptions,\n timeout?: number\n ): Promise>;\n\n /**\n * Interface function for async network \"POST\" requests. Based on the Fetch standard: https://fetch.spec.whatwg.org/\n * @param url\n * @param requestParams\n * @param enableCaching\n */\n sendPostRequestAsync(\n url: string,\n options?: NetworkRequestOptions\n ): Promise>;\n}\n\nexport const StubbedNetworkModule: INetworkModule = {\n sendGetRequestAsync: () => {\n return Promise.reject(\n createClientAuthError(ClientAuthErrorCodes.methodNotImplemented)\n );\n },\n sendPostRequestAsync: () => {\n return Promise.reject(\n createClientAuthError(ClientAuthErrorCodes.methodNotImplemented)\n );\n },\n};\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\n/**\n * Enumeration of operations that are instrumented by have their performance measured by the PerformanceClient.\n *\n * @export\n * @enum {number}\n */\nexport const PerformanceEvents = {\n /**\n * acquireTokenByCode API (msal-browser and msal-node).\n * Used to acquire tokens by trading an authorization code against the token endpoint.\n */\n AcquireTokenByCode: \"acquireTokenByCode\",\n\n /**\n * acquireTokenByRefreshToken API (msal-browser and msal-node).\n * Used to renew an access token using a refresh token against the token endpoint.\n */\n AcquireTokenByRefreshToken: \"acquireTokenByRefreshToken\",\n\n /**\n * acquireTokenSilent API (msal-browser and msal-node).\n * Used to silently acquire a new access token (from the cache or the network).\n */\n AcquireTokenSilent: \"acquireTokenSilent\",\n\n /**\n * acquireTokenSilentAsync (msal-browser).\n * Internal API for acquireTokenSilent.\n */\n AcquireTokenSilentAsync: \"acquireTokenSilentAsync\",\n\n /**\n * acquireTokenPopup (msal-browser).\n * Used to acquire a new access token interactively through pop ups\n */\n AcquireTokenPopup: \"acquireTokenPopup\",\n\n /**\n * acquireTokenPreRedirect (msal-browser).\n * First part of the redirect flow.\n * Used to acquire a new access token interactively through redirects.\n */\n AcquireTokenPreRedirect: \"acquireTokenPreRedirect\",\n\n /**\n * acquireTokenRedirect (msal-browser).\n * Second part of the redirect flow.\n * Used to acquire a new access token interactively through redirects.\n */\n AcquireTokenRedirect: \"acquireTokenRedirect\",\n\n /**\n * getPublicKeyThumbprint API in CryptoOpts class (msal-browser).\n * Used to generate a public/private keypair and generate a public key thumbprint for pop requests.\n */\n CryptoOptsGetPublicKeyThumbprint: \"cryptoOptsGetPublicKeyThumbprint\",\n\n /**\n * signJwt API in CryptoOpts class (msal-browser).\n * Used to signed a pop token.\n */\n CryptoOptsSignJwt: \"cryptoOptsSignJwt\",\n\n /**\n * acquireToken API in the SilentCacheClient class (msal-browser).\n * Used to read access tokens from the cache.\n */\n SilentCacheClientAcquireToken: \"silentCacheClientAcquireToken\",\n\n /**\n * acquireToken API in the SilentIframeClient class (msal-browser).\n * Used to acquire a new set of tokens from the authorize endpoint in a hidden iframe.\n */\n SilentIframeClientAcquireToken: \"silentIframeClientAcquireToken\",\n AwaitConcurrentIframe: \"awaitConcurrentIframe\", // Time spent waiting for a concurrent iframe to complete\n\n /**\n * acquireToken API in SilentRereshClient (msal-browser).\n * Used to acquire a new set of tokens from the token endpoint using a refresh token.\n */\n SilentRefreshClientAcquireToken: \"silentRefreshClientAcquireToken\",\n\n /**\n * ssoSilent API (msal-browser).\n * Used to silently acquire an authorization code and set of tokens using a hidden iframe.\n */\n SsoSilent: \"ssoSilent\",\n\n /**\n * getDiscoveredAuthority API in StandardInteractionClient class (msal-browser).\n * Used to load authority metadata for a request.\n */\n StandardInteractionClientGetDiscoveredAuthority:\n \"standardInteractionClientGetDiscoveredAuthority\",\n\n /**\n * acquireToken APIs in msal-browser.\n * Used to make an /authorize endpoint call with native brokering enabled.\n */\n FetchAccountIdWithNativeBroker: \"fetchAccountIdWithNativeBroker\",\n\n /**\n * acquireToken API in NativeInteractionClient class (msal-browser).\n * Used to acquire a token from Native component when native brokering is enabled.\n */\n NativeInteractionClientAcquireToken: \"nativeInteractionClientAcquireToken\",\n /**\n * Time spent creating default headers for requests to token endpoint\n */\n BaseClientCreateTokenRequestHeaders: \"baseClientCreateTokenRequestHeaders\",\n /**\n * Time spent sending/waiting for the response of a request to the token endpoint\n */\n NetworkClientSendPostRequestAsync: \"networkClientSendPostRequestAsync\",\n RefreshTokenClientExecutePostToTokenEndpoint:\n \"refreshTokenClientExecutePostToTokenEndpoint\",\n AuthorizationCodeClientExecutePostToTokenEndpoint:\n \"authorizationCodeClientExecutePostToTokenEndpoint\",\n /**\n * Used to measure the time taken for completing embedded-broker handshake (PW-Broker).\n */\n BrokerHandhshake: \"brokerHandshake\",\n /**\n * acquireTokenByRefreshToken API in BrokerClientApplication (PW-Broker) .\n */\n AcquireTokenByRefreshTokenInBroker: \"acquireTokenByRefreshTokenInBroker\",\n /**\n * Time taken for token acquisition by broker\n */\n AcquireTokenByBroker: \"acquireTokenByBroker\",\n\n /**\n * Time spent on the network for refresh token acquisition\n */\n RefreshTokenClientExecuteTokenRequest:\n \"refreshTokenClientExecuteTokenRequest\",\n\n /**\n * Time taken for acquiring refresh token , records RT size\n */\n RefreshTokenClientAcquireToken: \"refreshTokenClientAcquireToken\",\n\n /**\n * Time taken for acquiring cached refresh token\n */\n RefreshTokenClientAcquireTokenWithCachedRefreshToken:\n \"refreshTokenClientAcquireTokenWithCachedRefreshToken\",\n\n /**\n * acquireTokenByRefreshToken API in RefreshTokenClient (msal-common).\n */\n RefreshTokenClientAcquireTokenByRefreshToken:\n \"refreshTokenClientAcquireTokenByRefreshToken\",\n\n /**\n * Helper function to create token request body in RefreshTokenClient (msal-common).\n */\n RefreshTokenClientCreateTokenRequestBody:\n \"refreshTokenClientCreateTokenRequestBody\",\n\n /**\n * acquireTokenFromCache (msal-browser).\n * Internal API for acquiring token from cache\n */\n AcquireTokenFromCache: \"acquireTokenFromCache\",\n SilentFlowClientAcquireCachedToken: \"silentFlowClientAcquireCachedToken\",\n SilentFlowClientGenerateResultFromCacheRecord:\n \"silentFlowClientGenerateResultFromCacheRecord\",\n\n /**\n * acquireTokenBySilentIframe (msal-browser).\n * Internal API for acquiring token by silent Iframe\n */\n AcquireTokenBySilentIframe: \"acquireTokenBySilentIframe\",\n\n /**\n * Internal API for initializing base request in BaseInteractionClient (msal-browser)\n */\n InitializeBaseRequest: \"initializeBaseRequest\",\n\n /**\n * Internal API for initializing silent request in SilentCacheClient (msal-browser)\n */\n InitializeSilentRequest: \"initializeSilentRequest\",\n\n InitializeClientApplication: \"initializeClientApplication\",\n\n /**\n * Helper function in SilentIframeClient class (msal-browser).\n */\n SilentIframeClientTokenHelper: \"silentIframeClientTokenHelper\",\n\n /**\n * SilentHandler\n */\n SilentHandlerInitiateAuthRequest: \"silentHandlerInitiateAuthRequest\",\n SilentHandlerMonitorIframeForHash: \"silentHandlerMonitorIframeForHash\",\n SilentHandlerLoadFrame: \"silentHandlerLoadFrame\",\n SilentHandlerLoadFrameSync: \"silentHandlerLoadFrameSync\",\n\n /**\n * Helper functions in StandardInteractionClient class (msal-browser)\n */\n StandardInteractionClientCreateAuthCodeClient:\n \"standardInteractionClientCreateAuthCodeClient\",\n StandardInteractionClientGetClientConfiguration:\n \"standardInteractionClientGetClientConfiguration\",\n StandardInteractionClientInitializeAuthorizationRequest:\n \"standardInteractionClientInitializeAuthorizationRequest\",\n StandardInteractionClientInitializeAuthorizationCodeRequest:\n \"standardInteractionClientInitializeAuthorizationCodeRequest\",\n\n /**\n * getAuthCodeUrl API (msal-browser and msal-node).\n */\n GetAuthCodeUrl: \"getAuthCodeUrl\",\n\n /**\n * Functions from InteractionHandler (msal-browser)\n */\n HandleCodeResponseFromServer: \"handleCodeResponseFromServer\",\n HandleCodeResponse: \"handleCodeResponse\",\n UpdateTokenEndpointAuthority: \"updateTokenEndpointAuthority\",\n\n /**\n * APIs in Authorization Code Client (msal-common)\n */\n AuthClientAcquireToken: \"authClientAcquireToken\",\n AuthClientExecuteTokenRequest: \"authClientExecuteTokenRequest\",\n AuthClientCreateTokenRequestBody: \"authClientCreateTokenRequestBody\",\n AuthClientCreateQueryString: \"authClientCreateQueryString\",\n\n /**\n * Generate functions in PopTokenGenerator (msal-common)\n */\n PopTokenGenerateCnf: \"popTokenGenerateCnf\",\n PopTokenGenerateKid: \"popTokenGenerateKid\",\n\n /**\n * handleServerTokenResponse API in ResponseHandler (msal-common)\n */\n HandleServerTokenResponse: \"handleServerTokenResponse\",\n DeserializeResponse: \"deserializeResponse\",\n\n /**\n * Authority functions\n */\n AuthorityFactoryCreateDiscoveredInstance:\n \"authorityFactoryCreateDiscoveredInstance\",\n AuthorityResolveEndpointsAsync: \"authorityResolveEndpointsAsync\",\n AuthorityResolveEndpointsFromLocalSources:\n \"authorityResolveEndpointsFromLocalSources\",\n AuthorityGetCloudDiscoveryMetadataFromNetwork:\n \"authorityGetCloudDiscoveryMetadataFromNetwork\",\n AuthorityUpdateCloudDiscoveryMetadata:\n \"authorityUpdateCloudDiscoveryMetadata\",\n AuthorityGetEndpointMetadataFromNetwork:\n \"authorityGetEndpointMetadataFromNetwork\",\n AuthorityUpdateEndpointMetadata: \"authorityUpdateEndpointMetadata\",\n AuthorityUpdateMetadataWithRegionalInformation:\n \"authorityUpdateMetadataWithRegionalInformation\",\n\n /**\n * Region Discovery functions\n */\n RegionDiscoveryDetectRegion: \"regionDiscoveryDetectRegion\",\n RegionDiscoveryGetRegionFromIMDS: \"regionDiscoveryGetRegionFromIMDS\",\n RegionDiscoveryGetCurrentVersion: \"regionDiscoveryGetCurrentVersion\",\n\n AcquireTokenByCodeAsync: \"acquireTokenByCodeAsync\",\n\n GetEndpointMetadataFromNetwork: \"getEndpointMetadataFromNetwork\",\n GetCloudDiscoveryMetadataFromNetworkMeasurement:\n \"getCloudDiscoveryMetadataFromNetworkMeasurement\",\n\n HandleRedirectPromiseMeasurement: \"handleRedirectPromise\",\n HandleNativeRedirectPromiseMeasurement: \"handleNativeRedirectPromise\",\n\n UpdateCloudDiscoveryMetadataMeasurement:\n \"updateCloudDiscoveryMetadataMeasurement\",\n\n UsernamePasswordClientAcquireToken: \"usernamePasswordClientAcquireToken\",\n\n NativeMessageHandlerHandshake: \"nativeMessageHandlerHandshake\",\n\n NativeGenerateAuthResult: \"nativeGenerateAuthResult\",\n\n RemoveHiddenIframe: \"removeHiddenIframe\",\n\n /**\n * Cache operations\n */\n ClearTokensAndKeysWithClaims: \"clearTokensAndKeysWithClaims\",\n CacheManagerGetRefreshToken: \"cacheManagerGetRefreshToken\",\n\n /**\n * Crypto Operations\n */\n GeneratePkceCodes: \"generatePkceCodes\",\n GenerateCodeVerifier: \"generateCodeVerifier\",\n GenerateCodeChallengeFromVerifier: \"generateCodeChallengeFromVerifier\",\n Sha256Digest: \"sha256Digest\",\n GetRandomValues: \"getRandomValues\",\n} as const;\nexport type PerformanceEvents =\n (typeof PerformanceEvents)[keyof typeof PerformanceEvents];\n\nexport const PerformanceEventAbbreviations: ReadonlyMap =\n new Map([\n [PerformanceEvents.AcquireTokenByCode, \"ATByCode\"],\n [PerformanceEvents.AcquireTokenByRefreshToken, \"ATByRT\"],\n [PerformanceEvents.AcquireTokenSilent, \"ATS\"],\n [PerformanceEvents.AcquireTokenSilentAsync, \"ATSAsync\"],\n [PerformanceEvents.AcquireTokenPopup, \"ATPopup\"],\n [PerformanceEvents.AcquireTokenRedirect, \"ATRedirect\"],\n [\n PerformanceEvents.CryptoOptsGetPublicKeyThumbprint,\n \"CryptoGetPKThumb\",\n ],\n [PerformanceEvents.CryptoOptsSignJwt, \"CryptoSignJwt\"],\n [PerformanceEvents.SilentCacheClientAcquireToken, \"SltCacheClientAT\"],\n [PerformanceEvents.SilentIframeClientAcquireToken, \"SltIframeClientAT\"],\n [PerformanceEvents.SilentRefreshClientAcquireToken, \"SltRClientAT\"],\n [PerformanceEvents.SsoSilent, \"SsoSlt\"],\n [\n PerformanceEvents.StandardInteractionClientGetDiscoveredAuthority,\n \"StdIntClientGetDiscAuth\",\n ],\n [\n PerformanceEvents.FetchAccountIdWithNativeBroker,\n \"FetchAccIdWithNtvBroker\",\n ],\n [\n PerformanceEvents.NativeInteractionClientAcquireToken,\n \"NtvIntClientAT\",\n ],\n [\n PerformanceEvents.BaseClientCreateTokenRequestHeaders,\n \"BaseClientCreateTReqHead\",\n ],\n [\n PerformanceEvents.NetworkClientSendPostRequestAsync,\n \"NetClientSendPost\",\n ],\n [\n PerformanceEvents.RefreshTokenClientExecutePostToTokenEndpoint,\n \"RTClientExecPost\",\n ],\n [\n PerformanceEvents.AuthorizationCodeClientExecutePostToTokenEndpoint,\n \"AuthCodeClientExecPost\",\n ],\n [PerformanceEvents.BrokerHandhshake, \"BrokerHandshake\"],\n [\n PerformanceEvents.AcquireTokenByRefreshTokenInBroker,\n \"ATByRTInBroker\",\n ],\n [PerformanceEvents.AcquireTokenByBroker, \"ATByBroker\"],\n [\n PerformanceEvents.RefreshTokenClientExecuteTokenRequest,\n \"RTClientExecTReq\",\n ],\n [PerformanceEvents.RefreshTokenClientAcquireToken, \"RTClientAT\"],\n [\n PerformanceEvents.RefreshTokenClientAcquireTokenWithCachedRefreshToken,\n \"RTClientATWithCachedRT\",\n ],\n [\n PerformanceEvents.RefreshTokenClientAcquireTokenByRefreshToken,\n \"RTClientATByRT\",\n ],\n [\n PerformanceEvents.RefreshTokenClientCreateTokenRequestBody,\n \"RTClientCreateTReqBody\",\n ],\n [PerformanceEvents.AcquireTokenFromCache, \"ATFromCache\"],\n [\n PerformanceEvents.SilentFlowClientAcquireCachedToken,\n \"SltFlowClientATCached\",\n ],\n [\n PerformanceEvents.SilentFlowClientGenerateResultFromCacheRecord,\n \"SltFlowClientGenResFromCache\",\n ],\n [PerformanceEvents.AcquireTokenBySilentIframe, \"ATBySltIframe\"],\n [PerformanceEvents.InitializeBaseRequest, \"InitBaseReq\"],\n [PerformanceEvents.InitializeSilentRequest, \"InitSltReq\"],\n [\n PerformanceEvents.InitializeClientApplication,\n \"InitClientApplication\",\n ],\n [PerformanceEvents.SilentIframeClientTokenHelper, \"SIClientTHelper\"],\n [\n PerformanceEvents.SilentHandlerInitiateAuthRequest,\n \"SHandlerInitAuthReq\",\n ],\n [\n PerformanceEvents.SilentHandlerMonitorIframeForHash,\n \"SltHandlerMonitorIframeForHash\",\n ],\n [PerformanceEvents.SilentHandlerLoadFrame, \"SHandlerLoadFrame\"],\n [PerformanceEvents.SilentHandlerLoadFrameSync, \"SHandlerLoadFrameSync\"],\n\n [\n PerformanceEvents.StandardInteractionClientCreateAuthCodeClient,\n \"StdIntClientCreateAuthCodeClient\",\n ],\n [\n PerformanceEvents.StandardInteractionClientGetClientConfiguration,\n \"StdIntClientGetClientConf\",\n ],\n [\n PerformanceEvents.StandardInteractionClientInitializeAuthorizationRequest,\n \"StdIntClientInitAuthReq\",\n ],\n [\n PerformanceEvents.StandardInteractionClientInitializeAuthorizationCodeRequest,\n \"StdIntClientInitAuthCodeReq\",\n ],\n\n [PerformanceEvents.GetAuthCodeUrl, \"GetAuthCodeUrl\"],\n\n [\n PerformanceEvents.HandleCodeResponseFromServer,\n \"HandleCodeResFromServer\",\n ],\n [PerformanceEvents.HandleCodeResponse, \"HandleCodeResp\"],\n [PerformanceEvents.UpdateTokenEndpointAuthority, \"UpdTEndpointAuth\"],\n\n [PerformanceEvents.AuthClientAcquireToken, \"AuthClientAT\"],\n [PerformanceEvents.AuthClientExecuteTokenRequest, \"AuthClientExecTReq\"],\n [\n PerformanceEvents.AuthClientCreateTokenRequestBody,\n \"AuthClientCreateTReqBody\",\n ],\n [\n PerformanceEvents.AuthClientCreateQueryString,\n \"AuthClientCreateQueryStr\",\n ],\n [PerformanceEvents.PopTokenGenerateCnf, \"PopTGenCnf\"],\n [PerformanceEvents.PopTokenGenerateKid, \"PopTGenKid\"],\n [PerformanceEvents.HandleServerTokenResponse, \"HandleServerTRes\"],\n [PerformanceEvents.DeserializeResponse, \"DeserializeRes\"],\n [\n PerformanceEvents.AuthorityFactoryCreateDiscoveredInstance,\n \"AuthFactCreateDiscInst\",\n ],\n [\n PerformanceEvents.AuthorityResolveEndpointsAsync,\n \"AuthResolveEndpointsAsync\",\n ],\n [\n PerformanceEvents.AuthorityResolveEndpointsFromLocalSources,\n \"AuthResolveEndpointsFromLocal\",\n ],\n [\n PerformanceEvents.AuthorityGetCloudDiscoveryMetadataFromNetwork,\n \"AuthGetCDMetaFromNet\",\n ],\n [\n PerformanceEvents.AuthorityUpdateCloudDiscoveryMetadata,\n \"AuthUpdCDMeta\",\n ],\n [\n PerformanceEvents.AuthorityGetEndpointMetadataFromNetwork,\n \"AuthUpdCDMetaFromNet\",\n ],\n [\n PerformanceEvents.AuthorityUpdateEndpointMetadata,\n \"AuthUpdEndpointMeta\",\n ],\n [\n PerformanceEvents.AuthorityUpdateMetadataWithRegionalInformation,\n \"AuthUpdMetaWithRegInfo\",\n ],\n [PerformanceEvents.RegionDiscoveryDetectRegion, \"RegDiscDetectReg\"],\n [\n PerformanceEvents.RegionDiscoveryGetRegionFromIMDS,\n \"RegDiscGetRegFromIMDS\",\n ],\n [\n PerformanceEvents.RegionDiscoveryGetCurrentVersion,\n \"RegDiscGetCurrentVer\",\n ],\n [PerformanceEvents.AcquireTokenByCodeAsync, \"ATByCodeAsync\"],\n [\n PerformanceEvents.GetEndpointMetadataFromNetwork,\n \"GetEndpointMetaFromNet\",\n ],\n [\n PerformanceEvents.GetCloudDiscoveryMetadataFromNetworkMeasurement,\n \"GetCDMetaFromNet\",\n ],\n [\n PerformanceEvents.HandleRedirectPromiseMeasurement,\n \"HandleRedirectPromise\",\n ],\n [\n PerformanceEvents.HandleNativeRedirectPromiseMeasurement,\n \"HandleNtvRedirectPromise\",\n ],\n [\n PerformanceEvents.UpdateCloudDiscoveryMetadataMeasurement,\n \"UpdateCDMeta\",\n ],\n [\n PerformanceEvents.UsernamePasswordClientAcquireToken,\n \"UserPassClientAT\",\n ],\n [\n PerformanceEvents.NativeMessageHandlerHandshake,\n \"NtvMsgHandlerHandshake\",\n ],\n [PerformanceEvents.NativeGenerateAuthResult, \"NtvGenAuthRes\"],\n [PerformanceEvents.RemoveHiddenIframe, \"RemoveHiddenIframe\"],\n [\n PerformanceEvents.ClearTokensAndKeysWithClaims,\n \"ClearTAndKeysWithClaims\",\n ],\n [PerformanceEvents.CacheManagerGetRefreshToken, \"CacheManagerGetRT\"],\n [PerformanceEvents.GeneratePkceCodes, \"GenPkceCodes\"],\n [PerformanceEvents.GenerateCodeVerifier, \"GenCodeVerifier\"],\n [\n PerformanceEvents.GenerateCodeChallengeFromVerifier,\n \"GenCodeChallengeFromVerifier\",\n ],\n [PerformanceEvents.Sha256Digest, \"Sha256Digest\"],\n [PerformanceEvents.GetRandomValues, \"GetRandomValues\"],\n ]);\n\n/**\n * State of the performance event.\n *\n * @export\n * @enum {number}\n */\nexport const PerformanceEventStatus = {\n NotStarted: 0,\n InProgress: 1,\n Completed: 2,\n} as const;\nexport type PerformanceEventStatus =\n (typeof PerformanceEventStatus)[keyof typeof PerformanceEventStatus];\n\nexport type SubMeasurement = {\n name: string;\n startTimeMs: number;\n};\n\n/**\n * Performance measurement taken by the library, including metadata about the request and application.\n *\n * @export\n * @typedef {PerformanceEvent}\n */\nexport type PerformanceEvent = {\n /**\n * Unique id for the event\n *\n * @type {string}\n */\n eventId: string;\n\n /**\n * State of the perforance measure.\n *\n * @type {PerformanceEventStatus}\n */\n status: PerformanceEventStatus;\n\n /**\n * Login authority used for the request\n *\n * @type {string}\n */\n authority: string;\n\n /**\n * Client id for the application\n *\n * @type {string}\n */\n clientId: string;\n\n /**\n * Correlation ID used for the request\n *\n * @type {string}\n */\n correlationId: string;\n\n /**\n * End-to-end duration in milliseconds.\n * @date 3/22/2022 - 3:40:05 PM\n *\n * @type {number}\n */\n durationMs?: number;\n\n /**\n * Visibility of the page when the event completed.\n * Read from: https://developer.mozilla.org/docs/Web/API/Page_Visibility_API\n *\n * @type {?(string | null)}\n */\n endPageVisibility?: string | null;\n\n /**\n * Whether the result was retrieved from the cache.\n *\n * @type {(boolean | null)}\n */\n fromCache?: boolean | null;\n\n /**\n * Event name (usually in the form of classNameFunctionName)\n *\n * @type {string}\n */\n name: string;\n\n /**\n * Visibility of the page when the event completed.\n * Read from: https://developer.mozilla.org/docs/Web/API/Page_Visibility_API\n *\n * @type {?(string | null)}\n */\n startPageVisibility?: string | null;\n\n /**\n * Unix millisecond timestamp when the event was initiated.\n *\n * @type {number}\n */\n startTimeMs: number;\n\n /**\n * Whether or the operation completed successfully.\n *\n * @type {(boolean | null)}\n */\n success?: boolean | null;\n\n /**\n * Add specific error code in case of failure\n *\n * @type {string}\n */\n errorCode?: string;\n\n /**\n * Add specific sub error code in case of failure\n *\n * @type {string}\n */\n subErrorCode?: string;\n\n /**\n * Server error number\n */\n serverErrorNo?: string;\n\n /**\n * Name of the library used for the operation.\n *\n * @type {string}\n */\n libraryName: string;\n\n /**\n * Version of the library used for the operation.\n *\n * @type {string}\n */\n libraryVersion: string;\n\n /**\n * Whether the response is from a native component (e.g., WAM)\n *\n * @type {?boolean}\n */\n isNativeBroker?: boolean;\n\n /**\n * Request ID returned from the response\n *\n * @type {?string}\n */\n requestId?: string;\n\n /**\n * Cache lookup policy\n *\n * @type {?number}\n */\n cacheLookupPolicy?: number | undefined;\n\n /**\n * Cache Outcome\n * @type {?number}\n */\n cacheOutcome?: number;\n\n /**\n * Amount of time spent in the JS queue in milliseconds.\n *\n * @type {?number}\n */\n queuedTimeMs?: number;\n\n /**\n * Sub-measurements for internal use. To be deleted before flushing.\n */\n incompleteSubMeasurements?: Map;\n\n visibilityChangeCount?: number;\n incompleteSubsCount?: number;\n\n /**\n * CorrelationId of the in progress iframe request that was awaited\n */\n awaitIframeCorrelationId?: string;\n /**\n * Amount of times queued in the JS event queue.\n *\n * @type {?number}\n */\n queuedCount?: number;\n /**\n * Amount of manually completed queue events.\n *\n * @type {?number}\n */\n queuedManuallyCompletedCount?: number;\n\n /**\n * Size of the id token\n *\n * @type {number}\n */\n idTokenSize?: number;\n\n /**\n *\n * Size of the access token\n *\n * @type {number}\n */\n\n accessTokenSize?: number;\n\n /**\n *\n * Size of the refresh token\n *\n * @type {number}\n */\n\n refreshTokenSize?: number | undefined;\n\n /**\n * Application name as specified by the app.\n *\n * @type {?string}\n */\n appName?: string;\n\n /**\n * Application version as specified by the app.\n *\n * @type {?string}\n */\n appVersion?: string;\n\n /**\n * The following are fields that may be emitted in native broker scenarios\n */\n extensionId?: string;\n extensionVersion?: string;\n matsBrokerVersion?: string;\n matsAccountJoinOnStart?: string;\n matsAccountJoinOnEnd?: string;\n matsDeviceJoin?: string;\n matsPromptBehavior?: string;\n matsApiErrorCode?: number;\n matsUiVisible?: boolean;\n matsSilentCode?: number;\n matsSilentBiSubCode?: number;\n matsSilentMessage?: string;\n matsSilentStatus?: number;\n matsHttpStatus?: number;\n matsHttpEventCount?: number;\n\n /**\n * Http POST metadata\n */\n httpVerToken?: string;\n httpStatus?: number;\n contentTypeHeader?: string;\n contentLengthHeader?: string;\n\n /**\n * Native broker fields\n */\n allowNativeBroker?: boolean;\n extensionInstalled?: boolean;\n extensionHandshakeTimeoutMs?: number;\n extensionHandshakeTimedOut?: boolean;\n\n /**\n * Nested App Auth Fields\n */\n nestedAppAuthRequest?: boolean;\n\n /**\n * Multiple matched access/id/refresh tokens in the cache\n */\n multiMatchedAT?: number;\n multiMatchedID?: number;\n multiMatchedRT?: number;\n\n errorName?: string;\n errorStack?: string[];\n\n // Event context as JSON string\n context?: string;\n\n // Number of tokens in the cache to be reported when cache quota is exceeded\n cacheRtCount?: number;\n cacheIdCount?: number;\n cacheAtCount?: number;\n\n // Scenario id to track custom user prompts\n scenarioId?: string;\n\n accountType?: \"AAD\" | \"MSA\" | \"B2C\";\n\n /**\n * Server error that triggers a request retry\n *\n * @type {string}\n */\n retryError?: string;\n\n embeddedClientId?: string;\n embeddedRedirectUri?: string;\n};\n\nexport type PerformanceEventContext = {\n dur?: number;\n err?: string;\n subErr?: string;\n fail?: number;\n};\n\nexport type PerformanceEventStackedContext = PerformanceEventContext & {\n name?: string;\n childErr?: string;\n};\n\nexport const IntFields: ReadonlySet = new Set([\n \"accessTokenSize\",\n \"durationMs\",\n \"idTokenSize\",\n \"matsSilentStatus\",\n \"matsHttpStatus\",\n \"refreshTokenSize\",\n \"queuedTimeMs\",\n \"startTimeMs\",\n \"status\",\n \"multiMatchedAT\",\n \"multiMatchedID\",\n \"multiMatchedRT\",\n]);\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport {\n IPerformanceClient,\n InProgressPerformanceEvent,\n} from \"./IPerformanceClient.js\";\nimport { IPerformanceMeasurement } from \"./IPerformanceMeasurement.js\";\nimport {\n PerformanceEvent,\n PerformanceEventStatus,\n} from \"./PerformanceEvent.js\";\n\nexport class StubPerformanceMeasurement implements IPerformanceMeasurement {\n startMeasurement(): void {\n return;\n }\n endMeasurement(): void {\n return;\n }\n flushMeasurement(): number | null {\n return null;\n }\n}\n\nexport class StubPerformanceClient implements IPerformanceClient {\n generateId(): string {\n return \"callback-id\";\n }\n\n startMeasurement(\n measureName: string,\n correlationId?: string | undefined\n ): InProgressPerformanceEvent {\n return {\n end: () => null,\n discard: () => {},\n add: () => {},\n increment: () => {},\n event: {\n eventId: this.generateId(),\n status: PerformanceEventStatus.InProgress,\n authority: \"\",\n libraryName: \"\",\n libraryVersion: \"\",\n clientId: \"\",\n name: measureName,\n startTimeMs: Date.now(),\n correlationId: correlationId || \"\",\n },\n measurement: new StubPerformanceMeasurement(),\n };\n }\n\n startPerformanceMeasurement(): IPerformanceMeasurement {\n return new StubPerformanceMeasurement();\n }\n calculateQueuedTime(): number {\n return 0;\n }\n\n addQueueMeasurement(): void {\n return;\n }\n\n setPreQueueTime(): void {\n return;\n }\n\n endMeasurement(): PerformanceEvent | null {\n return null;\n }\n\n discardMeasurements(): void {\n return;\n }\n\n removePerformanceCallback(): boolean {\n return true;\n }\n\n addPerformanceCallback(): string {\n return \"\";\n }\n\n emitEvents(): void {\n return;\n }\n\n addFields(): void {\n return;\n }\n\n incrementFields(): void {\n return;\n }\n\n cacheEventByCorrelationId(): void {\n return;\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { OIDC_DEFAULT_SCOPES } from \"@azure/msal-common/browser\";\nimport { PopupRequest } from \"../request/PopupRequest.js\";\nimport { RedirectRequest } from \"../request/RedirectRequest.js\";\n\n/**\n * Constants\n */\nexport const BrowserConstants = {\n /**\n * Interaction in progress cache value\n */\n INTERACTION_IN_PROGRESS_VALUE: \"interaction_in_progress\",\n /**\n * Invalid grant error code\n */\n INVALID_GRANT_ERROR: \"invalid_grant\",\n /**\n * Default popup window width\n */\n POPUP_WIDTH: 483,\n /**\n * Default popup window height\n */\n POPUP_HEIGHT: 600,\n /**\n * Name of the popup window starts with\n */\n POPUP_NAME_PREFIX: \"msal\",\n /**\n * Default popup monitor poll interval in milliseconds\n */\n DEFAULT_POLL_INTERVAL_MS: 30,\n /**\n * Msal-browser SKU\n */\n MSAL_SKU: \"msal.js.browser\",\n};\n\nexport const NativeConstants = {\n CHANNEL_ID: \"53ee284d-920a-4b59-9d30-a60315b26836\",\n PREFERRED_EXTENSION_ID: \"ppnbnpeolgkicgegkbkbjmhlideopiji\",\n MATS_TELEMETRY: \"MATS\",\n};\n\nexport const NativeExtensionMethod = {\n HandshakeRequest: \"Handshake\",\n HandshakeResponse: \"HandshakeResponse\",\n GetToken: \"GetToken\",\n Response: \"Response\",\n} as const;\nexport type NativeExtensionMethod =\n (typeof NativeExtensionMethod)[keyof typeof NativeExtensionMethod];\n\nexport const BrowserCacheLocation = {\n LocalStorage: \"localStorage\",\n SessionStorage: \"sessionStorage\",\n MemoryStorage: \"memoryStorage\",\n} as const;\nexport type BrowserCacheLocation =\n (typeof BrowserCacheLocation)[keyof typeof BrowserCacheLocation];\n\n/**\n * HTTP Request types supported by MSAL.\n */\nexport const HTTP_REQUEST_TYPE = {\n GET: \"GET\",\n POST: \"POST\",\n} as const;\nexport type HTTP_REQUEST_TYPE =\n (typeof HTTP_REQUEST_TYPE)[keyof typeof HTTP_REQUEST_TYPE];\n\n/**\n * Temporary cache keys for MSAL, deleted after any request.\n */\nexport const TemporaryCacheKeys = {\n AUTHORITY: \"authority\",\n ACQUIRE_TOKEN_ACCOUNT: \"acquireToken.account\",\n SESSION_STATE: \"session.state\",\n REQUEST_STATE: \"request.state\",\n NONCE_IDTOKEN: \"nonce.id_token\",\n ORIGIN_URI: \"request.origin\",\n RENEW_STATUS: \"token.renew.status\",\n URL_HASH: \"urlHash\",\n REQUEST_PARAMS: \"request.params\",\n SCOPES: \"scopes\",\n INTERACTION_STATUS_KEY: \"interaction.status\",\n CCS_CREDENTIAL: \"ccs.credential\",\n CORRELATION_ID: \"request.correlationId\",\n NATIVE_REQUEST: \"request.native\",\n REDIRECT_CONTEXT: \"request.redirect.context\",\n} as const;\nexport type TemporaryCacheKeys =\n (typeof TemporaryCacheKeys)[keyof typeof TemporaryCacheKeys];\n\nexport const StaticCacheKeys = {\n ACCOUNT_KEYS: \"msal.account.keys\",\n TOKEN_KEYS: \"msal.token.keys\",\n} as const;\nexport type StaticCacheKeys =\n (typeof StaticCacheKeys)[keyof typeof StaticCacheKeys];\n\n/**\n * Cache keys stored in-memory\n */\nexport const InMemoryCacheKeys = {\n WRAPPER_SKU: \"wrapper.sku\",\n WRAPPER_VER: \"wrapper.version\",\n} as const;\nexport type InMemoryCacheKeys =\n (typeof InMemoryCacheKeys)[keyof typeof InMemoryCacheKeys];\n\n/**\n * API Codes for Telemetry purposes.\n * Before adding a new code you must claim it in the MSAL Telemetry tracker as these number spaces are shared across all MSALs\n * 0-99 Silent Flow\n * 800-899 Auth Code Flow\n */\nexport const ApiId = {\n acquireTokenRedirect: 861,\n acquireTokenPopup: 862,\n ssoSilent: 863,\n acquireTokenSilent_authCode: 864,\n handleRedirectPromise: 865,\n acquireTokenByCode: 866,\n acquireTokenSilent_silentFlow: 61,\n logout: 961,\n logoutPopup: 962,\n} as const;\nexport type ApiId = (typeof ApiId)[keyof typeof ApiId];\n\n/*\n * Interaction type of the API - used for state and telemetry\n */\nexport enum InteractionType {\n Redirect = \"redirect\",\n Popup = \"popup\",\n Silent = \"silent\",\n None = \"none\",\n}\n\n/**\n * Types of interaction currently in progress.\n * Used in events in wrapper libraries to invoke functions when certain interaction is in progress or all interactions are complete.\n */\nexport const InteractionStatus = {\n /**\n * Initial status before interaction occurs\n */\n Startup: \"startup\",\n /**\n * Status set when all login calls occuring\n */\n Login: \"login\",\n /**\n * Status set when logout call occuring\n */\n Logout: \"logout\",\n /**\n * Status set for acquireToken calls\n */\n AcquireToken: \"acquireToken\",\n /**\n * Status set for ssoSilent calls\n */\n SsoSilent: \"ssoSilent\",\n /**\n * Status set when handleRedirect in progress\n */\n HandleRedirect: \"handleRedirect\",\n /**\n * Status set when interaction is complete\n */\n None: \"none\",\n} as const;\nexport type InteractionStatus =\n (typeof InteractionStatus)[keyof typeof InteractionStatus];\n\nexport const DEFAULT_REQUEST: RedirectRequest | PopupRequest = {\n scopes: OIDC_DEFAULT_SCOPES,\n};\n\n/**\n * JWK Key Format string (Type MUST be defined for window crypto APIs)\n */\nexport const KEY_FORMAT_JWK = \"jwk\";\n\n// Supported wrapper SKUs\nexport const WrapperSKU = {\n React: \"@azure/msal-react\",\n Angular: \"@azure/msal-angular\",\n} as const;\nexport type WrapperSKU = (typeof WrapperSKU)[keyof typeof WrapperSKU];\n\n// DatabaseStorage Constants\nexport const DB_NAME = \"msal.db\";\nexport const DB_VERSION = 1;\nexport const DB_TABLE_NAME = `${DB_NAME}.keys`;\n\nexport const CacheLookupPolicy = {\n /*\n * acquireTokenSilent will attempt to retrieve an access token from the cache. If the access token is expired\n * or cannot be found the refresh token will be used to acquire a new one. Finally, if the refresh token\n * is expired acquireTokenSilent will attempt to acquire new access and refresh tokens.\n */\n Default: 0, // 0 is falsy, is equivalent to not passing in a CacheLookupPolicy\n /*\n * acquireTokenSilent will only look for access tokens in the cache. It will not attempt to renew access or\n * refresh tokens.\n */\n AccessToken: 1,\n /*\n * acquireTokenSilent will attempt to retrieve an access token from the cache. If the access token is expired or\n * cannot be found, the refresh token will be used to acquire a new one. If the refresh token is expired, it\n * will not be renewed and acquireTokenSilent will fail.\n */\n AccessTokenAndRefreshToken: 2,\n /*\n * acquireTokenSilent will not attempt to retrieve access tokens from the cache and will instead attempt to\n * exchange the cached refresh token for a new access token. If the refresh token is expired, it will not be\n * renewed and acquireTokenSilent will fail.\n */\n RefreshToken: 3,\n /*\n * acquireTokenSilent will not look in the cache for the access token. It will go directly to network with the\n * cached refresh token. If the refresh token is expired an attempt will be made to renew it. This is equivalent to\n * setting \"forceRefresh: true\".\n */\n RefreshTokenAndNetwork: 4,\n /*\n * acquireTokenSilent will attempt to renew both access and refresh tokens. It will not look in the cache. This will\n * always fail if 3rd party cookies are blocked by the browser.\n */\n Skip: 5,\n} as const;\nexport type CacheLookupPolicy =\n (typeof CacheLookupPolicy)[keyof typeof CacheLookupPolicy];\n\nexport const iFrameRenewalPolicies: CacheLookupPolicy[] = [\n CacheLookupPolicy.Default,\n CacheLookupPolicy.Skip,\n CacheLookupPolicy.RefreshTokenAndNetwork,\n];\n\nexport const LOG_LEVEL_CACHE_KEY = \"msal.browser.log.level\";\nexport const LOG_PII_CACHE_KEY = \"msal.browser.log.pii\";\n\nexport const BROWSER_PERF_ENABLED_KEY = \"msal.browser.performance.enabled\";\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { INavigationClient } from \"./INavigationClient.js\";\nimport { NavigationOptions } from \"./NavigationOptions.js\";\n\nexport class NavigationClient implements INavigationClient {\n /**\n * Navigates to other pages within the same web application\n * @param url\n * @param options\n */\n navigateInternal(\n url: string,\n options: NavigationOptions\n ): Promise {\n return NavigationClient.defaultNavigateWindow(url, options);\n }\n\n /**\n * Navigates to other pages outside the web application i.e. the Identity Provider\n * @param url\n * @param options\n */\n navigateExternal(\n url: string,\n options: NavigationOptions\n ): Promise {\n return NavigationClient.defaultNavigateWindow(url, options);\n }\n\n /**\n * Default navigation implementation invoked by the internal and external functions\n * @param url\n * @param options\n */\n private static defaultNavigateWindow(\n url: string,\n options: NavigationOptions\n ): Promise {\n if (options.noHistory) {\n window.location.replace(url);\n } else {\n window.location.assign(url);\n }\n\n return new Promise((resolve) => {\n setTimeout(() => {\n resolve(true);\n }, options.timeout);\n });\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { AuthError } from \"./AuthError.js\";\n\n/**\n * Represents network related errors\n */\nexport class NetworkError extends AuthError {\n error: AuthError;\n httpStatus?: number;\n responseHeaders?: Record;\n\n constructor(\n error: AuthError,\n httpStatus?: number,\n responseHeaders?: Record\n ) {\n super(error.errorCode, error.errorMessage, error.subError);\n\n Object.setPrototypeOf(this, NetworkError.prototype);\n this.name = \"NetworkError\";\n this.error = error;\n this.httpStatus = httpStatus;\n this.responseHeaders = responseHeaders;\n }\n}\n\n/**\n * Creates NetworkError object for a failed network request\n * @param error - Error to be thrown back to the caller\n * @param httpStatus - Status code of the network request\n * @param responseHeaders - Response headers of the network request, when available\n * @returns NetworkError object\n */\nexport function createNetworkError(\n error: AuthError,\n httpStatus?: number,\n responseHeaders?: Record\n): NetworkError {\n return new NetworkError(error, httpStatus, responseHeaders);\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nexport const pkceNotCreated = \"pkce_not_created\";\nexport const cryptoNonExistent = \"crypto_nonexistent\";\nexport const emptyNavigateUri = \"empty_navigate_uri\";\nexport const hashEmptyError = \"hash_empty_error\";\nexport const noStateInHash = \"no_state_in_hash\";\nexport const hashDoesNotContainKnownProperties =\n \"hash_does_not_contain_known_properties\";\nexport const unableToParseState = \"unable_to_parse_state\";\nexport const stateInteractionTypeMismatch = \"state_interaction_type_mismatch\";\nexport const interactionInProgress = \"interaction_in_progress\";\nexport const popupWindowError = \"popup_window_error\";\nexport const emptyWindowError = \"empty_window_error\";\nexport const userCancelled = \"user_cancelled\";\nexport const monitorPopupTimeout = \"monitor_popup_timeout\";\nexport const monitorWindowTimeout = \"monitor_window_timeout\";\nexport const redirectInIframe = \"redirect_in_iframe\";\nexport const blockIframeReload = \"block_iframe_reload\";\nexport const blockNestedPopups = \"block_nested_popups\";\nexport const iframeClosedPrematurely = \"iframe_closed_prematurely\";\nexport const silentLogoutUnsupported = \"silent_logout_unsupported\";\nexport const noAccountError = \"no_account_error\";\nexport const silentPromptValueError = \"silent_prompt_value_error\";\nexport const noTokenRequestCacheError = \"no_token_request_cache_error\";\nexport const unableToParseTokenRequestCacheError =\n \"unable_to_parse_token_request_cache_error\";\nexport const noCachedAuthorityError = \"no_cached_authority_error\";\nexport const authRequestNotSetError = \"auth_request_not_set_error\";\nexport const invalidCacheType = \"invalid_cache_type\";\nexport const nonBrowserEnvironment = \"non_browser_environment\";\nexport const databaseNotOpen = \"database_not_open\";\nexport const noNetworkConnectivity = \"no_network_connectivity\";\nexport const postRequestFailed = \"post_request_failed\";\nexport const getRequestFailed = \"get_request_failed\";\nexport const failedToParseResponse = \"failed_to_parse_response\";\nexport const unableToLoadToken = \"unable_to_load_token\";\nexport const cryptoKeyNotFound = \"crypto_key_not_found\";\nexport const authCodeRequired = \"auth_code_required\";\nexport const authCodeOrNativeAccountIdRequired =\n \"auth_code_or_nativeAccountId_required\";\nexport const spaCodeAndNativeAccountIdPresent =\n \"spa_code_and_nativeAccountId_present\";\nexport const databaseUnavailable = \"database_unavailable\";\nexport const unableToAcquireTokenFromNativePlatform =\n \"unable_to_acquire_token_from_native_platform\";\nexport const nativeHandshakeTimeout = \"native_handshake_timeout\";\nexport const nativeExtensionNotInstalled = \"native_extension_not_installed\";\nexport const nativeConnectionNotEstablished =\n \"native_connection_not_established\";\nexport const uninitializedPublicClientApplication =\n \"uninitialized_public_client_application\";\nexport const nativePromptNotSupported = \"native_prompt_not_supported\";\nexport const invalidBase64String = \"invalid_base64_string\";\nexport const invalidPopTokenRequest = \"invalid_pop_token_request\";\nexport const failedToBuildHeaders = \"failed_to_build_headers\";\nexport const failedToParseHeaders = \"failed_to_parse_headers\";\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { AuthError } from \"@azure/msal-common/browser\";\nimport * as BrowserAuthErrorCodes from \"./BrowserAuthErrorCodes.js\";\nexport { BrowserAuthErrorCodes }; // Allow importing as \"BrowserAuthErrorCodes\"\n\nconst ErrorLink = \"For more visit: aka.ms/msaljs/browser-errors\";\n\n/**\n * BrowserAuthErrorMessage class containing string constants used by error codes and messages.\n */\nexport const BrowserAuthErrorMessages = {\n [BrowserAuthErrorCodes.pkceNotCreated]:\n \"The PKCE code challenge and verifier could not be generated.\",\n [BrowserAuthErrorCodes.cryptoNonExistent]:\n \"The crypto object or function is not available.\",\n [BrowserAuthErrorCodes.emptyNavigateUri]:\n \"Navigation URI is empty. Please check stack trace for more info.\",\n [BrowserAuthErrorCodes.hashEmptyError]: `Hash value cannot be processed because it is empty. Please verify that your redirectUri is not clearing the hash. ${ErrorLink}`,\n [BrowserAuthErrorCodes.noStateInHash]:\n \"Hash does not contain state. Please verify that the request originated from msal.\",\n [BrowserAuthErrorCodes.hashDoesNotContainKnownProperties]: `Hash does not contain known properites. Please verify that your redirectUri is not changing the hash. ${ErrorLink}`,\n [BrowserAuthErrorCodes.unableToParseState]:\n \"Unable to parse state. Please verify that the request originated from msal.\",\n [BrowserAuthErrorCodes.stateInteractionTypeMismatch]:\n \"Hash contains state but the interaction type does not match the caller.\",\n [BrowserAuthErrorCodes.interactionInProgress]: `Interaction is currently in progress. Please ensure that this interaction has been completed before calling an interactive API. ${ErrorLink}`,\n [BrowserAuthErrorCodes.popupWindowError]:\n \"Error opening popup window. This can happen if you are using IE or if popups are blocked in the browser.\",\n [BrowserAuthErrorCodes.emptyWindowError]:\n \"window.open returned null or undefined window object.\",\n [BrowserAuthErrorCodes.userCancelled]: \"User cancelled the flow.\",\n [BrowserAuthErrorCodes.monitorPopupTimeout]: `Token acquisition in popup failed due to timeout. ${ErrorLink}`,\n [BrowserAuthErrorCodes.monitorWindowTimeout]: `Token acquisition in iframe failed due to timeout. ${ErrorLink}`,\n [BrowserAuthErrorCodes.redirectInIframe]:\n \"Redirects are not supported for iframed or brokered applications. Please ensure you are using MSAL.js in a top frame of the window if using the redirect APIs, or use the popup APIs.\",\n [BrowserAuthErrorCodes.blockIframeReload]: `Request was blocked inside an iframe because MSAL detected an authentication response. ${ErrorLink}`,\n [BrowserAuthErrorCodes.blockNestedPopups]:\n \"Request was blocked inside a popup because MSAL detected it was running in a popup.\",\n [BrowserAuthErrorCodes.iframeClosedPrematurely]:\n \"The iframe being monitored was closed prematurely.\",\n [BrowserAuthErrorCodes.silentLogoutUnsupported]:\n \"Silent logout not supported. Please call logoutRedirect or logoutPopup instead.\",\n [BrowserAuthErrorCodes.noAccountError]:\n \"No account object provided to acquireTokenSilent and no active account has been set. Please call setActiveAccount or provide an account on the request.\",\n [BrowserAuthErrorCodes.silentPromptValueError]:\n \"The value given for the prompt value is not valid for silent requests - must be set to 'none' or 'no_session'.\",\n [BrowserAuthErrorCodes.noTokenRequestCacheError]:\n \"No token request found in cache.\",\n [BrowserAuthErrorCodes.unableToParseTokenRequestCacheError]:\n \"The cached token request could not be parsed.\",\n [BrowserAuthErrorCodes.noCachedAuthorityError]:\n \"No cached authority found.\",\n [BrowserAuthErrorCodes.authRequestNotSetError]:\n \"Auth Request not set. Please ensure initiateAuthRequest was called from the InteractionHandler\",\n [BrowserAuthErrorCodes.invalidCacheType]: \"Invalid cache type\",\n [BrowserAuthErrorCodes.nonBrowserEnvironment]:\n \"Login and token requests are not supported in non-browser environments.\",\n [BrowserAuthErrorCodes.databaseNotOpen]: \"Database is not open!\",\n [BrowserAuthErrorCodes.noNetworkConnectivity]:\n \"No network connectivity. Check your internet connection.\",\n [BrowserAuthErrorCodes.postRequestFailed]:\n \"Network request failed: If the browser threw a CORS error, check that the redirectUri is registered in the Azure App Portal as type 'SPA'\",\n [BrowserAuthErrorCodes.getRequestFailed]:\n \"Network request failed. Please check the network trace to determine root cause.\",\n [BrowserAuthErrorCodes.failedToParseResponse]:\n \"Failed to parse network response. Check network trace.\",\n [BrowserAuthErrorCodes.unableToLoadToken]: \"Error loading token to cache.\",\n [BrowserAuthErrorCodes.cryptoKeyNotFound]:\n \"Cryptographic Key or Keypair not found in browser storage.\",\n [BrowserAuthErrorCodes.authCodeRequired]:\n \"An authorization code must be provided (as the `code` property on the request) to this flow.\",\n [BrowserAuthErrorCodes.authCodeOrNativeAccountIdRequired]:\n \"An authorization code or nativeAccountId must be provided to this flow.\",\n [BrowserAuthErrorCodes.spaCodeAndNativeAccountIdPresent]:\n \"Request cannot contain both spa code and native account id.\",\n [BrowserAuthErrorCodes.databaseUnavailable]:\n \"IndexedDB, which is required for persistent cryptographic key storage, is unavailable. This may be caused by browser privacy features which block persistent storage in third-party contexts.\",\n [BrowserAuthErrorCodes.unableToAcquireTokenFromNativePlatform]: `Unable to acquire token from native platform. ${ErrorLink}`,\n [BrowserAuthErrorCodes.nativeHandshakeTimeout]:\n \"Timed out while attempting to establish connection to browser extension\",\n [BrowserAuthErrorCodes.nativeExtensionNotInstalled]:\n \"Native extension is not installed. If you think this is a mistake call the initialize function.\",\n [BrowserAuthErrorCodes.nativeConnectionNotEstablished]: `Connection to native platform has not been established. Please install a compatible browser extension and run initialize(). ${ErrorLink}`,\n [BrowserAuthErrorCodes.uninitializedPublicClientApplication]: `You must call and await the initialize function before attempting to call any other MSAL API. ${ErrorLink}`,\n [BrowserAuthErrorCodes.nativePromptNotSupported]:\n \"The provided prompt is not supported by the native platform. This request should be routed to the web based flow.\",\n [BrowserAuthErrorCodes.invalidBase64String]:\n \"Invalid base64 encoded string.\",\n [BrowserAuthErrorCodes.invalidPopTokenRequest]:\n \"Invalid PoP token request. The request should not have both a popKid value and signPopToken set to true.\",\n [BrowserAuthErrorCodes.failedToBuildHeaders]:\n \"Failed to build request headers object.\",\n [BrowserAuthErrorCodes.failedToParseHeaders]:\n \"Failed to parse response headers\",\n};\n\n/**\n * BrowserAuthErrorMessage class containing string constants used by error codes and messages.\n * @deprecated Use exported BrowserAuthErrorCodes instead.\n * In your app you can do :\n * ```\n * import { BrowserAuthErrorCodes } from \"@azure/msal-browser\";\n * ```\n */\nexport const BrowserAuthErrorMessage = {\n pkceNotGenerated: {\n code: BrowserAuthErrorCodes.pkceNotCreated,\n desc: BrowserAuthErrorMessages[BrowserAuthErrorCodes.pkceNotCreated],\n },\n cryptoDoesNotExist: {\n code: BrowserAuthErrorCodes.cryptoNonExistent,\n desc: BrowserAuthErrorMessages[BrowserAuthErrorCodes.cryptoNonExistent],\n },\n emptyNavigateUriError: {\n code: BrowserAuthErrorCodes.emptyNavigateUri,\n desc: BrowserAuthErrorMessages[BrowserAuthErrorCodes.emptyNavigateUri],\n },\n hashEmptyError: {\n code: BrowserAuthErrorCodes.hashEmptyError,\n desc: BrowserAuthErrorMessages[BrowserAuthErrorCodes.hashEmptyError],\n },\n hashDoesNotContainStateError: {\n code: BrowserAuthErrorCodes.noStateInHash,\n desc: BrowserAuthErrorMessages[BrowserAuthErrorCodes.noStateInHash],\n },\n hashDoesNotContainKnownPropertiesError: {\n code: BrowserAuthErrorCodes.hashDoesNotContainKnownProperties,\n desc: BrowserAuthErrorMessages[\n BrowserAuthErrorCodes.hashDoesNotContainKnownProperties\n ],\n },\n unableToParseStateError: {\n code: BrowserAuthErrorCodes.unableToParseState,\n desc: BrowserAuthErrorMessages[\n BrowserAuthErrorCodes.unableToParseState\n ],\n },\n stateInteractionTypeMismatchError: {\n code: BrowserAuthErrorCodes.stateInteractionTypeMismatch,\n desc: BrowserAuthErrorMessages[\n BrowserAuthErrorCodes.stateInteractionTypeMismatch\n ],\n },\n interactionInProgress: {\n code: BrowserAuthErrorCodes.interactionInProgress,\n desc: BrowserAuthErrorMessages[\n BrowserAuthErrorCodes.interactionInProgress\n ],\n },\n popupWindowError: {\n code: BrowserAuthErrorCodes.popupWindowError,\n desc: BrowserAuthErrorMessages[BrowserAuthErrorCodes.popupWindowError],\n },\n emptyWindowError: {\n code: BrowserAuthErrorCodes.emptyWindowError,\n desc: BrowserAuthErrorMessages[BrowserAuthErrorCodes.emptyWindowError],\n },\n userCancelledError: {\n code: BrowserAuthErrorCodes.userCancelled,\n desc: BrowserAuthErrorMessages[BrowserAuthErrorCodes.userCancelled],\n },\n monitorPopupTimeoutError: {\n code: BrowserAuthErrorCodes.monitorPopupTimeout,\n desc: BrowserAuthErrorMessages[\n BrowserAuthErrorCodes.monitorPopupTimeout\n ],\n },\n monitorIframeTimeoutError: {\n code: BrowserAuthErrorCodes.monitorWindowTimeout,\n desc: BrowserAuthErrorMessages[\n BrowserAuthErrorCodes.monitorWindowTimeout\n ],\n },\n redirectInIframeError: {\n code: BrowserAuthErrorCodes.redirectInIframe,\n desc: BrowserAuthErrorMessages[BrowserAuthErrorCodes.redirectInIframe],\n },\n blockTokenRequestsInHiddenIframeError: {\n code: BrowserAuthErrorCodes.blockIframeReload,\n desc: BrowserAuthErrorMessages[BrowserAuthErrorCodes.blockIframeReload],\n },\n blockAcquireTokenInPopupsError: {\n code: BrowserAuthErrorCodes.blockNestedPopups,\n desc: BrowserAuthErrorMessages[BrowserAuthErrorCodes.blockNestedPopups],\n },\n iframeClosedPrematurelyError: {\n code: BrowserAuthErrorCodes.iframeClosedPrematurely,\n desc: BrowserAuthErrorMessages[\n BrowserAuthErrorCodes.iframeClosedPrematurely\n ],\n },\n silentLogoutUnsupportedError: {\n code: BrowserAuthErrorCodes.silentLogoutUnsupported,\n desc: BrowserAuthErrorMessages[\n BrowserAuthErrorCodes.silentLogoutUnsupported\n ],\n },\n noAccountError: {\n code: BrowserAuthErrorCodes.noAccountError,\n desc: BrowserAuthErrorMessages[BrowserAuthErrorCodes.noAccountError],\n },\n silentPromptValueError: {\n code: BrowserAuthErrorCodes.silentPromptValueError,\n desc: BrowserAuthErrorMessages[\n BrowserAuthErrorCodes.silentPromptValueError\n ],\n },\n noTokenRequestCacheError: {\n code: BrowserAuthErrorCodes.noTokenRequestCacheError,\n desc: BrowserAuthErrorMessages[\n BrowserAuthErrorCodes.noTokenRequestCacheError\n ],\n },\n unableToParseTokenRequestCacheError: {\n code: BrowserAuthErrorCodes.unableToParseTokenRequestCacheError,\n desc: BrowserAuthErrorMessages[\n BrowserAuthErrorCodes.unableToParseTokenRequestCacheError\n ],\n },\n noCachedAuthorityError: {\n code: BrowserAuthErrorCodes.noCachedAuthorityError,\n desc: BrowserAuthErrorMessages[\n BrowserAuthErrorCodes.noCachedAuthorityError\n ],\n },\n authRequestNotSet: {\n code: BrowserAuthErrorCodes.authRequestNotSetError,\n desc: BrowserAuthErrorMessages[\n BrowserAuthErrorCodes.authRequestNotSetError\n ],\n },\n invalidCacheType: {\n code: BrowserAuthErrorCodes.invalidCacheType,\n desc: BrowserAuthErrorMessages[BrowserAuthErrorCodes.invalidCacheType],\n },\n notInBrowserEnvironment: {\n code: BrowserAuthErrorCodes.nonBrowserEnvironment,\n desc: BrowserAuthErrorMessages[\n BrowserAuthErrorCodes.nonBrowserEnvironment\n ],\n },\n databaseNotOpen: {\n code: BrowserAuthErrorCodes.databaseNotOpen,\n desc: BrowserAuthErrorMessages[BrowserAuthErrorCodes.databaseNotOpen],\n },\n noNetworkConnectivity: {\n code: BrowserAuthErrorCodes.noNetworkConnectivity,\n desc: BrowserAuthErrorMessages[\n BrowserAuthErrorCodes.noNetworkConnectivity\n ],\n },\n postRequestFailed: {\n code: BrowserAuthErrorCodes.postRequestFailed,\n desc: BrowserAuthErrorMessages[BrowserAuthErrorCodes.postRequestFailed],\n },\n getRequestFailed: {\n code: BrowserAuthErrorCodes.getRequestFailed,\n desc: BrowserAuthErrorMessages[BrowserAuthErrorCodes.getRequestFailed],\n },\n failedToParseNetworkResponse: {\n code: BrowserAuthErrorCodes.failedToParseResponse,\n desc: BrowserAuthErrorMessages[\n BrowserAuthErrorCodes.failedToParseResponse\n ],\n },\n unableToLoadTokenError: {\n code: BrowserAuthErrorCodes.unableToLoadToken,\n desc: BrowserAuthErrorMessages[BrowserAuthErrorCodes.unableToLoadToken],\n },\n signingKeyNotFoundInStorage: {\n code: BrowserAuthErrorCodes.cryptoKeyNotFound,\n desc: BrowserAuthErrorMessages[BrowserAuthErrorCodes.cryptoKeyNotFound],\n },\n authCodeRequired: {\n code: BrowserAuthErrorCodes.authCodeRequired,\n desc: BrowserAuthErrorMessages[BrowserAuthErrorCodes.authCodeRequired],\n },\n authCodeOrNativeAccountRequired: {\n code: BrowserAuthErrorCodes.authCodeOrNativeAccountIdRequired,\n desc: BrowserAuthErrorMessages[\n BrowserAuthErrorCodes.authCodeOrNativeAccountIdRequired\n ],\n },\n spaCodeAndNativeAccountPresent: {\n code: BrowserAuthErrorCodes.spaCodeAndNativeAccountIdPresent,\n desc: BrowserAuthErrorMessages[\n BrowserAuthErrorCodes.spaCodeAndNativeAccountIdPresent\n ],\n },\n databaseUnavailable: {\n code: BrowserAuthErrorCodes.databaseUnavailable,\n desc: BrowserAuthErrorMessages[\n BrowserAuthErrorCodes.databaseUnavailable\n ],\n },\n unableToAcquireTokenFromNativePlatform: {\n code: BrowserAuthErrorCodes.unableToAcquireTokenFromNativePlatform,\n desc: BrowserAuthErrorMessages[\n BrowserAuthErrorCodes.unableToAcquireTokenFromNativePlatform\n ],\n },\n nativeHandshakeTimeout: {\n code: BrowserAuthErrorCodes.nativeHandshakeTimeout,\n desc: BrowserAuthErrorMessages[\n BrowserAuthErrorCodes.nativeHandshakeTimeout\n ],\n },\n nativeExtensionNotInstalled: {\n code: BrowserAuthErrorCodes.nativeExtensionNotInstalled,\n desc: BrowserAuthErrorMessages[\n BrowserAuthErrorCodes.nativeExtensionNotInstalled\n ],\n },\n nativeConnectionNotEstablished: {\n code: BrowserAuthErrorCodes.nativeConnectionNotEstablished,\n desc: BrowserAuthErrorMessages[\n BrowserAuthErrorCodes.nativeConnectionNotEstablished\n ],\n },\n uninitializedPublicClientApplication: {\n code: BrowserAuthErrorCodes.uninitializedPublicClientApplication,\n desc: BrowserAuthErrorMessages[\n BrowserAuthErrorCodes.uninitializedPublicClientApplication\n ],\n },\n nativePromptNotSupported: {\n code: BrowserAuthErrorCodes.nativePromptNotSupported,\n desc: BrowserAuthErrorMessages[\n BrowserAuthErrorCodes.nativePromptNotSupported\n ],\n },\n invalidBase64StringError: {\n code: BrowserAuthErrorCodes.invalidBase64String,\n desc: BrowserAuthErrorMessages[\n BrowserAuthErrorCodes.invalidBase64String\n ],\n },\n invalidPopTokenRequest: {\n code: BrowserAuthErrorCodes.invalidPopTokenRequest,\n desc: BrowserAuthErrorMessages[\n BrowserAuthErrorCodes.invalidPopTokenRequest\n ],\n },\n};\n\n/**\n * Browser library error class thrown by the MSAL.js library for SPAs\n */\nexport class BrowserAuthError extends AuthError {\n constructor(errorCode: string, subError?: string) {\n super(errorCode, BrowserAuthErrorMessages[errorCode], subError);\n\n Object.setPrototypeOf(this, BrowserAuthError.prototype);\n this.name = \"BrowserAuthError\";\n }\n}\n\nexport function createBrowserAuthError(\n errorCode: string,\n subError?: string\n): BrowserAuthError {\n return new BrowserAuthError(errorCode, subError);\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport {\n INetworkModule,\n NetworkRequestOptions,\n NetworkResponse,\n createNetworkError,\n} from \"@azure/msal-common/browser\";\nimport {\n createBrowserAuthError,\n BrowserAuthErrorCodes,\n} from \"../error/BrowserAuthError.js\";\nimport { HTTP_REQUEST_TYPE } from \"../utils/BrowserConstants.js\";\n\n/**\n * This class implements the Fetch API for GET and POST requests. See more here: https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API\n */\nexport class FetchClient implements INetworkModule {\n /**\n * Fetch Client for REST endpoints - Get request\n * @param url\n * @param headers\n * @param body\n */\n async sendGetRequestAsync(\n url: string,\n options?: NetworkRequestOptions\n ): Promise> {\n let response: Response;\n let responseHeaders: Record = {};\n let responseStatus = 0;\n const reqHeaders = getFetchHeaders(options);\n try {\n response = await fetch(url, {\n method: HTTP_REQUEST_TYPE.GET,\n headers: reqHeaders,\n });\n } catch (e) {\n throw createBrowserAuthError(\n window.navigator.onLine\n ? BrowserAuthErrorCodes.getRequestFailed\n : BrowserAuthErrorCodes.noNetworkConnectivity\n );\n }\n\n responseHeaders = getHeaderDict(response.headers);\n try {\n responseStatus = response.status;\n return {\n headers: responseHeaders,\n body: (await response.json()) as T,\n status: responseStatus,\n };\n } catch (e) {\n throw createNetworkError(\n createBrowserAuthError(\n BrowserAuthErrorCodes.failedToParseResponse\n ),\n responseStatus,\n responseHeaders\n );\n }\n }\n\n /**\n * Fetch Client for REST endpoints - Post request\n * @param url\n * @param headers\n * @param body\n */\n async sendPostRequestAsync(\n url: string,\n options?: NetworkRequestOptions\n ): Promise> {\n const reqBody = (options && options.body) || \"\";\n const reqHeaders = getFetchHeaders(options);\n\n let response: Response;\n let responseStatus = 0;\n let responseHeaders: Record = {};\n try {\n response = await fetch(url, {\n method: HTTP_REQUEST_TYPE.POST,\n headers: reqHeaders,\n body: reqBody,\n });\n } catch (e) {\n throw createBrowserAuthError(\n window.navigator.onLine\n ? BrowserAuthErrorCodes.postRequestFailed\n : BrowserAuthErrorCodes.noNetworkConnectivity\n );\n }\n\n responseHeaders = getHeaderDict(response.headers);\n try {\n responseStatus = response.status;\n return {\n headers: responseHeaders,\n body: (await response.json()) as T,\n status: responseStatus,\n };\n } catch (e) {\n throw createNetworkError(\n createBrowserAuthError(\n BrowserAuthErrorCodes.failedToParseResponse\n ),\n responseStatus,\n responseHeaders\n );\n }\n }\n}\n\n/**\n * Get Fetch API Headers object from string map\n * @param inputHeaders\n */\nfunction getFetchHeaders(options?: NetworkRequestOptions): Headers {\n try {\n const headers = new Headers();\n if (!(options && options.headers)) {\n return headers;\n }\n const optionsHeaders = options.headers;\n Object.entries(optionsHeaders).forEach(([key, value]) => {\n headers.append(key, value);\n });\n return headers;\n } catch (e) {\n throw createBrowserAuthError(\n BrowserAuthErrorCodes.failedToBuildHeaders\n );\n }\n}\n\n/**\n * Returns object representing response headers\n * @param headers\n * @returns\n */\nfunction getHeaderDict(headers: Headers): Record {\n try {\n const headerDict: Record = {};\n headers.forEach((value: string, key: string) => {\n headerDict[key] = value;\n });\n return headerDict;\n } catch (e) {\n throw createBrowserAuthError(\n BrowserAuthErrorCodes.failedToParseHeaders\n );\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\n/**\n * Class which exposes APIs to encode plaintext to base64 encoded string. See here for implementation details:\n * https://developer.mozilla.org/en-US/docs/Web/API/WindowBase64/Base64_encoding_and_decoding#Solution_2_%E2%80%93_JavaScript's_UTF-16_%3E_UTF-8_%3E_base64\n */\n\n/**\n * Returns URL Safe b64 encoded string from a plaintext string.\n * @param input\n */\nexport function urlEncode(input: string): string {\n return encodeURIComponent(\n base64Encode(input)\n .replace(/=/g, \"\")\n .replace(/\\+/g, \"-\")\n .replace(/\\//g, \"_\")\n );\n}\n\n/**\n * Returns URL Safe b64 encoded string from an int8Array.\n * @param inputArr\n */\nexport function urlEncodeArr(inputArr: Uint8Array): string {\n return base64EncArr(inputArr)\n .replace(/=/g, \"\")\n .replace(/\\+/g, \"-\")\n .replace(/\\//g, \"_\");\n}\n\n/**\n * Returns b64 encoded string from plaintext string.\n * @param input\n */\nexport function base64Encode(input: string): string {\n return base64EncArr(new TextEncoder().encode(input));\n}\n\n/**\n * Base64 encode byte array\n * @param aBytes\n */\nfunction base64EncArr(aBytes: Uint8Array): string {\n const binString = Array.from(aBytes, (x) => String.fromCodePoint(x)).join(\n \"\"\n );\n return btoa(binString);\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport {\n createBrowserAuthError,\n BrowserAuthErrorCodes,\n} from \"../error/BrowserAuthError.js\";\nimport {\n IPerformanceClient,\n PerformanceEvents,\n} from \"@azure/msal-common/browser\";\nimport { KEY_FORMAT_JWK } from \"../utils/BrowserConstants.js\";\nimport { urlEncodeArr } from \"../encode/Base64Encode.js\";\n\n/**\n * This file defines functions used by the browser library to perform cryptography operations such as\n * hashing and encoding. It also has helper functions to validate the availability of specific APIs.\n */\n\n/**\n * See here for more info on RsaHashedKeyGenParams: https://developer.mozilla.org/en-US/docs/Web/API/RsaHashedKeyGenParams\n */\n// RSA KeyGen Algorithm\nconst PKCS1_V15_KEYGEN_ALG = \"RSASSA-PKCS1-v1_5\";\n// SHA-256 hashing algorithm\nconst S256_HASH_ALG = \"SHA-256\";\n// MOD length for PoP tokens\nconst MODULUS_LENGTH = 2048;\n// Public Exponent\nconst PUBLIC_EXPONENT: Uint8Array = new Uint8Array([0x01, 0x00, 0x01]);\n// UUID hex digits\nconst UUID_CHARS = \"0123456789abcdef\";\n// Array to store UINT32 random value\nconst UINT32_ARR = new Uint32Array(1);\n\nconst SUBTLE_SUBERROR = \"crypto_subtle_undefined\";\n\nconst keygenAlgorithmOptions: RsaHashedKeyGenParams = {\n name: PKCS1_V15_KEYGEN_ALG,\n hash: S256_HASH_ALG,\n modulusLength: MODULUS_LENGTH,\n publicExponent: PUBLIC_EXPONENT,\n};\n\n/**\n * Check whether browser crypto is available.\n */\nexport function validateCryptoAvailable(\n skipValidateSubtleCrypto: boolean\n): void {\n if (!window) {\n throw createBrowserAuthError(\n BrowserAuthErrorCodes.nonBrowserEnvironment\n );\n }\n if (!window.crypto) {\n throw createBrowserAuthError(BrowserAuthErrorCodes.cryptoNonExistent);\n }\n if (!skipValidateSubtleCrypto && !window.crypto.subtle) {\n throw createBrowserAuthError(\n BrowserAuthErrorCodes.cryptoNonExistent,\n SUBTLE_SUBERROR\n );\n }\n}\n\n/**\n * Returns a sha-256 hash of the given dataString as an ArrayBuffer.\n * @param dataString {string} data string\n * @param performanceClient {?IPerformanceClient}\n * @param correlationId {?string} correlation id\n */\nexport async function sha256Digest(\n dataString: string,\n performanceClient?: IPerformanceClient,\n correlationId?: string\n): Promise {\n performanceClient?.addQueueMeasurement(\n PerformanceEvents.Sha256Digest,\n correlationId\n );\n const encoder = new TextEncoder();\n const data = encoder.encode(dataString);\n return window.crypto.subtle.digest(\n S256_HASH_ALG,\n data\n ) as Promise;\n}\n\n/**\n * Populates buffer with cryptographically random values.\n * @param dataBuffer\n */\nexport function getRandomValues(dataBuffer: Uint8Array): Uint8Array {\n return window.crypto.getRandomValues(dataBuffer);\n}\n\n/**\n * Returns random Uint32 value.\n * @returns {number}\n */\nfunction getRandomUint32(): number {\n window.crypto.getRandomValues(UINT32_ARR);\n return UINT32_ARR[0];\n}\n\n/**\n * Creates a UUID v7 from the current timestamp.\n * Implementation relies on the system clock to guarantee increasing order of generated identifiers.\n * @returns {number}\n */\nexport function createNewGuid(): string {\n const currentTimestamp = Date.now();\n const baseRand = getRandomUint32() * 0x400 + (getRandomUint32() & 0x3ff);\n\n // Result byte array\n const bytes = new Uint8Array(16);\n // A 12-bit `rand_a` field value\n const randA = Math.trunc(baseRand / 2 ** 30);\n // The higher 30 bits of 62-bit `rand_b` field value\n const randBHi = baseRand & (2 ** 30 - 1);\n // The lower 32 bits of 62-bit `rand_b` field value\n const randBLo = getRandomUint32();\n\n bytes[0] = currentTimestamp / 2 ** 40;\n bytes[1] = currentTimestamp / 2 ** 32;\n bytes[2] = currentTimestamp / 2 ** 24;\n bytes[3] = currentTimestamp / 2 ** 16;\n bytes[4] = currentTimestamp / 2 ** 8;\n bytes[5] = currentTimestamp;\n bytes[6] = 0x70 | (randA >>> 8);\n bytes[7] = randA;\n bytes[8] = 0x80 | (randBHi >>> 24);\n bytes[9] = randBHi >>> 16;\n bytes[10] = randBHi >>> 8;\n bytes[11] = randBHi;\n bytes[12] = randBLo >>> 24;\n bytes[13] = randBLo >>> 16;\n bytes[14] = randBLo >>> 8;\n bytes[15] = randBLo;\n\n let text = \"\";\n for (let i = 0; i < bytes.length; i++) {\n text += UUID_CHARS.charAt(bytes[i] >>> 4);\n text += UUID_CHARS.charAt(bytes[i] & 0xf);\n if (i === 3 || i === 5 || i === 7 || i === 9) {\n text += \"-\";\n }\n }\n return text;\n}\n\n/**\n * Generates a keypair based on current keygen algorithm config.\n * @param extractable\n * @param usages\n */\nexport async function generateKeyPair(\n extractable: boolean,\n usages: Array\n): Promise {\n return window.crypto.subtle.generateKey(\n keygenAlgorithmOptions,\n extractable,\n usages\n ) as Promise;\n}\n\n/**\n * Export key as Json Web Key (JWK)\n * @param key\n */\nexport async function exportJwk(key: CryptoKey): Promise {\n return window.crypto.subtle.exportKey(\n KEY_FORMAT_JWK,\n key\n ) as Promise;\n}\n\n/**\n * Imports key as Json Web Key (JWK), can set extractable and usages.\n * @param key\n * @param extractable\n * @param usages\n */\nexport async function importJwk(\n key: JsonWebKey,\n extractable: boolean,\n usages: Array\n): Promise {\n return window.crypto.subtle.importKey(\n KEY_FORMAT_JWK,\n key,\n keygenAlgorithmOptions,\n extractable,\n usages\n ) as Promise;\n}\n\n/**\n * Signs given data with given key\n * @param key\n * @param data\n */\nexport async function sign(\n key: CryptoKey,\n data: ArrayBuffer\n): Promise {\n return window.crypto.subtle.sign(\n keygenAlgorithmOptions,\n key,\n data\n ) as Promise;\n}\n\n/**\n * Returns the SHA-256 hash of an input string\n * @param plainText\n */\nexport async function hashString(plainText: string): Promise {\n const hashBuffer: ArrayBuffer = await sha256Digest(plainText);\n const hashBytes = new Uint8Array(hashBuffer);\n return urlEncodeArr(hashBytes);\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nexport const storageNotSupported = \"storage_not_supported\";\nexport const stubbedPublicClientApplicationCalled =\n \"stubbed_public_client_application_called\";\nexport const inMemRedirectUnavailable = \"in_mem_redirect_unavailable\";\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { AuthError } from \"@azure/msal-common/browser\";\nimport * as BrowserConfigurationAuthErrorCodes from \"./BrowserConfigurationAuthErrorCodes.js\";\nexport { BrowserConfigurationAuthErrorCodes };\n\nexport const BrowserConfigurationAuthErrorMessages = {\n [BrowserConfigurationAuthErrorCodes.storageNotSupported]:\n \"Given storage configuration option was not supported.\",\n [BrowserConfigurationAuthErrorCodes.stubbedPublicClientApplicationCalled]:\n \"Stub instance of Public Client Application was called. If using msal-react, please ensure context is not used without a provider. For more visit: aka.ms/msaljs/browser-errors\",\n [BrowserConfigurationAuthErrorCodes.inMemRedirectUnavailable]:\n \"Redirect cannot be supported. In-memory storage was selected and storeAuthStateInCookie=false, which would cause the library to be unable to handle the incoming hash. If you would like to use the redirect API, please use session/localStorage or set storeAuthStateInCookie=true.\",\n};\n\n/**\n * BrowserAuthErrorMessage class containing string constants used by error codes and messages.\n * @deprecated Use BrowserAuthErrorCodes instead\n */\nexport const BrowserConfigurationAuthErrorMessage = {\n storageNotSupportedError: {\n code: BrowserConfigurationAuthErrorCodes.storageNotSupported,\n desc: BrowserConfigurationAuthErrorMessages[\n BrowserConfigurationAuthErrorCodes.storageNotSupported\n ],\n },\n stubPcaInstanceCalled: {\n code: BrowserConfigurationAuthErrorCodes.stubbedPublicClientApplicationCalled,\n desc: BrowserConfigurationAuthErrorMessages[\n BrowserConfigurationAuthErrorCodes\n .stubbedPublicClientApplicationCalled\n ],\n },\n inMemRedirectUnavailable: {\n code: BrowserConfigurationAuthErrorCodes.inMemRedirectUnavailable,\n desc: BrowserConfigurationAuthErrorMessages[\n BrowserConfigurationAuthErrorCodes.inMemRedirectUnavailable\n ],\n },\n};\n\n/**\n * Browser library error class thrown by the MSAL.js library for SPAs\n */\nexport class BrowserConfigurationAuthError extends AuthError {\n constructor(errorCode: string, errorMessage?: string) {\n super(errorCode, errorMessage);\n this.name = \"BrowserConfigurationAuthError\";\n\n Object.setPrototypeOf(this, BrowserConfigurationAuthError.prototype);\n }\n}\n\nexport function createBrowserConfigurationAuthError(\n errorCode: string\n): BrowserConfigurationAuthError {\n return new BrowserConfigurationAuthError(\n errorCode,\n BrowserConfigurationAuthErrorMessages[errorCode]\n );\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { UrlString, invoke, invokeAsync } from \"@azure/msal-common/browser\";\nimport {\n createBrowserAuthError,\n BrowserAuthErrorCodes,\n} from \"../error/BrowserAuthError.js\";\nimport { BrowserConstants, BrowserCacheLocation } from \"./BrowserConstants.js\";\nimport * as BrowserCrypto from \"../crypto/BrowserCrypto.js\";\nimport {\n BrowserConfigurationAuthErrorCodes,\n createBrowserConfigurationAuthError,\n} from \"../error/BrowserConfigurationAuthError.js\";\nimport { BrowserConfiguration } from \"../config/Configuration.js\";\n\n/**\n * Clears hash from window url.\n */\nexport function clearHash(contentWindow: Window): void {\n // Office.js sets history.replaceState to null\n contentWindow.location.hash = \"\";\n if (typeof contentWindow.history.replaceState === \"function\") {\n // Full removes \"#\" from url\n contentWindow.history.replaceState(\n null,\n \"\",\n `${contentWindow.location.origin}${contentWindow.location.pathname}${contentWindow.location.search}`\n );\n }\n}\n\n/**\n * Replaces current hash with hash from provided url\n */\nexport function replaceHash(url: string): void {\n const urlParts = url.split(\"#\");\n urlParts.shift(); // Remove part before the hash\n window.location.hash = urlParts.length > 0 ? urlParts.join(\"#\") : \"\";\n}\n\n/**\n * Returns boolean of whether the current window is in an iframe or not.\n */\nexport function isInIframe(): boolean {\n return window.parent !== window;\n}\n\n/**\n * Returns boolean of whether or not the current window is a popup opened by msal\n */\nexport function isInPopup(): boolean {\n return (\n typeof window !== \"undefined\" &&\n !!window.opener &&\n window.opener !== window &&\n typeof window.name === \"string\" &&\n window.name.indexOf(`${BrowserConstants.POPUP_NAME_PREFIX}.`) === 0\n );\n}\n\n// #endregion\n\n/**\n * Returns current window URL as redirect uri\n */\nexport function getCurrentUri(): string {\n return typeof window !== \"undefined\" && window.location\n ? window.location.href.split(\"?\")[0].split(\"#\")[0]\n : \"\";\n}\n\n/**\n * Gets the homepage url for the current window location.\n */\nexport function getHomepage(): string {\n const currentUrl = new UrlString(window.location.href);\n const urlComponents = currentUrl.getUrlComponents();\n return `${urlComponents.Protocol}//${urlComponents.HostNameAndPort}/`;\n}\n\n/**\n * Throws error if we have completed an auth and are\n * attempting another auth request inside an iframe.\n */\nexport function blockReloadInHiddenIframes(): void {\n const isResponseHash = UrlString.hashContainsKnownProperties(\n window.location.hash\n );\n // return an error if called from the hidden iframe created by the msal js silent calls\n if (isResponseHash && isInIframe()) {\n throw createBrowserAuthError(BrowserAuthErrorCodes.blockIframeReload);\n }\n}\n\n/**\n * Block redirect operations in iframes unless explicitly allowed\n * @param interactionType Interaction type for the request\n * @param allowRedirectInIframe Config value to allow redirects when app is inside an iframe\n */\nexport function blockRedirectInIframe(allowRedirectInIframe: boolean): void {\n if (isInIframe() && !allowRedirectInIframe) {\n // If we are not in top frame, we shouldn't redirect. This is also handled by the service.\n throw createBrowserAuthError(BrowserAuthErrorCodes.redirectInIframe);\n }\n}\n\n/**\n * Block redirectUri loaded in popup from calling AcquireToken APIs\n */\nexport function blockAcquireTokenInPopups(): void {\n // Popups opened by msal popup APIs are given a name that starts with \"msal.\"\n if (isInPopup()) {\n throw createBrowserAuthError(BrowserAuthErrorCodes.blockNestedPopups);\n }\n}\n\n/**\n * Throws error if token requests are made in non-browser environment\n * @param isBrowserEnvironment Flag indicating if environment is a browser.\n */\nexport function blockNonBrowserEnvironment(): void {\n if (typeof window === \"undefined\") {\n throw createBrowserAuthError(\n BrowserAuthErrorCodes.nonBrowserEnvironment\n );\n }\n}\n\n/**\n * Throws error if initialize hasn't been called\n * @param initialized\n */\nexport function blockAPICallsBeforeInitialize(initialized: boolean): void {\n if (!initialized) {\n throw createBrowserAuthError(\n BrowserAuthErrorCodes.uninitializedPublicClientApplication\n );\n }\n}\n\n/**\n * Helper to validate app environment before making an auth request\n * @param initialized\n */\nexport function preflightCheck(initialized: boolean): void {\n // Block request if not in browser environment\n blockNonBrowserEnvironment();\n\n // Block auth requests inside a hidden iframe\n blockReloadInHiddenIframes();\n\n // Block redirectUri opened in a popup from calling MSAL APIs\n blockAcquireTokenInPopups();\n\n // Block token acquisition before initialize has been called\n blockAPICallsBeforeInitialize(initialized);\n}\n\n/**\n * Helper to validate app enviornment before making redirect request\n * @param initialized\n * @param config\n */\nexport function redirectPreflightCheck(\n initialized: boolean,\n config: BrowserConfiguration\n): void {\n preflightCheck(initialized);\n blockRedirectInIframe(config.system.allowRedirectInIframe);\n // Block redirects if memory storage is enabled but storeAuthStateInCookie is not\n if (\n config.cache.cacheLocation === BrowserCacheLocation.MemoryStorage &&\n !config.cache.storeAuthStateInCookie\n ) {\n throw createBrowserConfigurationAuthError(\n BrowserConfigurationAuthErrorCodes.inMemRedirectUnavailable\n );\n }\n}\n\n/**\n * Adds a preconnect link element to the header which begins DNS resolution and SSL connection in anticipation of the /token request\n * @param loginDomain Authority domain, including https protocol e.g. https://login.microsoftonline.com\n * @returns\n */\nexport function preconnect(authority: string): void {\n const link = document.createElement(\"link\");\n link.rel = \"preconnect\";\n link.href = new URL(authority).origin;\n link.crossOrigin = \"anonymous\";\n document.head.appendChild(link);\n\n // The browser will close connection if not used within a few seconds, remove element from the header after 10s\n window.setTimeout(() => {\n try {\n document.head.removeChild(link);\n } catch {}\n }, 10000); // 10s Timeout\n}\n\n/**\n * Wrapper function that creates a UUID v7 from the current timestamp.\n * @returns {string}\n */\nexport function createGuid(): string {\n return BrowserCrypto.createNewGuid();\n}\n\nexport { invoke };\nexport { invokeAsync };\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport {\n SystemOptions,\n LoggerOptions,\n INetworkModule,\n DEFAULT_SYSTEM_OPTIONS,\n Constants,\n ProtocolMode,\n OIDCOptions,\n ServerResponseType,\n LogLevel,\n StubbedNetworkModule,\n AzureCloudInstance,\n AzureCloudOptions,\n ApplicationTelemetry,\n createClientConfigurationError,\n ClientConfigurationErrorCodes,\n IPerformanceClient,\n StubPerformanceClient,\n Logger,\n} from \"@azure/msal-common/browser\";\nimport {\n BrowserCacheLocation,\n BrowserConstants,\n} from \"../utils/BrowserConstants.js\";\nimport { INavigationClient } from \"../navigation/INavigationClient.js\";\nimport { NavigationClient } from \"../navigation/NavigationClient.js\";\nimport { FetchClient } from \"../network/FetchClient.js\";\nimport * as BrowserUtils from \"../utils/BrowserUtils.js\";\n\n// Default timeout for popup windows and iframes in milliseconds\nexport const DEFAULT_POPUP_TIMEOUT_MS = 60000;\nexport const DEFAULT_IFRAME_TIMEOUT_MS = 10000;\nexport const DEFAULT_REDIRECT_TIMEOUT_MS = 30000;\nexport const DEFAULT_NATIVE_BROKER_HANDSHAKE_TIMEOUT_MS = 2000;\n\n/**\n * Use this to configure the auth options in the Configuration object\n */\nexport type BrowserAuthOptions = {\n /**\n * Client ID of your app registered with our Application registration portal : https://portal.azure.com/#blade/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/RegisteredAppsPreview in Microsoft Identity Platform\n */\n clientId: string;\n /**\n * You can configure a specific authority, defaults to \" \" or \"https://login.microsoftonline.com/common\"\n */\n authority?: string;\n /**\n * An array of URIs that are known to be valid. Used in B2C scenarios.\n */\n knownAuthorities?: Array;\n /**\n * A string containing the cloud discovery response. Used in AAD scenarios.\n */\n cloudDiscoveryMetadata?: string;\n /**\n * A string containing the .well-known/openid-configuration endpoint response\n */\n authorityMetadata?: string;\n /**\n * The redirect URI where authentication responses can be received by your application. It must exactly match one of the redirect URIs registered in the Azure portal.\n */\n redirectUri?: string;\n /**\n * The redirect URI where the window navigates after a successful logout.\n */\n postLogoutRedirectUri?: string | null;\n /**\n * Boolean indicating whether to navigate to the original request URL after the auth server navigates to the redirect URL.\n */\n navigateToLoginRequestUrl?: boolean;\n /**\n * Array of capabilities which will be added to the claims.access_token.xms_cc request property on every network request.\n */\n clientCapabilities?: Array;\n /**\n * Enum that represents the protocol that msal follows. Used for configuring proper endpoints.\n */\n protocolMode?: ProtocolMode;\n /**\n * Enum that configures options for the OIDC protocol mode.\n */\n OIDCOptions?: OIDCOptions;\n /**\n * Enum that represents the Azure Cloud to use.\n */\n azureCloudOptions?: AzureCloudOptions;\n /**\n * Flag of whether to use the local metadata cache\n */\n skipAuthorityMetadataCache?: boolean;\n /**\n * App supports nested app auth or not; defaults to\n *\n * @deprecated This flag is deprecated and will be removed in the next major version. createNestablePublicClientApplication should be used instead.\n */\n supportsNestedAppAuth?: boolean;\n /**\n * Callback that will be passed the url that MSAL will navigate to in redirect flows. Returning false in the callback will stop navigation.\n */\n onRedirectNavigate?: (url: string) => boolean | void;\n /**\n * Flag of whether the STS will send back additional parameters to specify where the tokens should be retrieved from.\n */\n instanceAware?: boolean;\n};\n\n/** @internal */\nexport type InternalAuthOptions = Omit<\n Required,\n \"onRedirectNavigate\"\n> & {\n OIDCOptions: Required;\n onRedirectNavigate?: (url: string) => boolean | void;\n};\n\n/**\n * Use this to configure the below cache configuration options:\n */\nexport type CacheOptions = {\n /**\n * Used to specify the cacheLocation user wants to set. Valid values are \"localStorage\", \"sessionStorage\" and \"memoryStorage\".\n */\n cacheLocation?: BrowserCacheLocation | string;\n /**\n * Used to specify the temporaryCacheLocation user wants to set. Valid values are \"localStorage\", \"sessionStorage\" and \"memoryStorage\".\n */\n temporaryCacheLocation?: BrowserCacheLocation | string;\n /**\n * If set, MSAL stores the auth request state required for validation of the auth flows in the browser cookies. By default this flag is set to false.\n */\n storeAuthStateInCookie?: boolean;\n /**\n * If set, MSAL sets the \"Secure\" flag on cookies so they can only be sent over HTTPS. By default this flag is set to false.\n */\n secureCookies?: boolean;\n /**\n * If set, MSAL will attempt to migrate cache entries from older versions on initialization. By default this flag is set to true if cacheLocation is localStorage, otherwise false.\n */\n cacheMigrationEnabled?: boolean;\n /**\n * Flag that determines whether access tokens are stored based on requested claims\n */\n claimsBasedCachingEnabled?: boolean;\n};\n\nexport type BrowserSystemOptions = SystemOptions & {\n /**\n * Used to initialize the Logger object (See ClientConfiguration.ts)\n */\n loggerOptions?: LoggerOptions;\n /**\n * Network interface implementation\n */\n networkClient?: INetworkModule;\n /**\n * Override the methods used to navigate to other webpages. Particularly useful if you are using a client-side router\n */\n navigationClient?: INavigationClient;\n /**\n * Sets the timeout for waiting for a response hash in a popup. Will take precedence over loadFrameTimeout if both are set.\n */\n windowHashTimeout?: number;\n /**\n * Sets the timeout for waiting for a response hash in an iframe. Will take precedence over loadFrameTimeout if both are set.\n */\n iframeHashTimeout?: number;\n /**\n * Sets the timeout for waiting for a response hash in an iframe or popup\n */\n loadFrameTimeout?: number;\n /**\n * Maximum time the library should wait for a frame to load\n * @deprecated This was previously needed for older browsers which are no longer supported by MSAL.js. This option will be removed in the next major version\n */\n navigateFrameWait?: number;\n /**\n * Time to wait for redirection to occur before resolving promise\n */\n redirectNavigationTimeout?: number;\n /**\n * Sets whether popups are opened asynchronously. By default, this flag is set to false. When set to false, blank popups are opened before anything else happens. When set to true, popups are opened when making the network request.\n */\n asyncPopups?: boolean;\n /**\n * Flag to enable redirect opertaions when the app is rendered in an iframe (to support scenarios such as embedded B2C login).\n */\n allowRedirectInIframe?: boolean;\n /**\n * Flag to enable native broker support (e.g. acquiring tokens from WAM on Windows)\n */\n allowNativeBroker?: boolean;\n /**\n * Sets the timeout for waiting for the native broker handshake to resolve\n */\n nativeBrokerHandshakeTimeout?: number;\n /**\n * Sets the interval length in milliseconds for polling the location attribute in popup windows (default is 30ms)\n */\n pollIntervalMilliseconds?: number;\n};\n\n/**\n * Telemetry Options\n */\nexport type BrowserTelemetryOptions = {\n /**\n * Telemetry information sent on request\n * - appName: Unique string name of an application\n * - appVersion: Version of the application using MSAL\n */\n application?: ApplicationTelemetry;\n\n client?: IPerformanceClient;\n};\n\n/**\n * This object allows you to configure important elements of MSAL functionality and is passed into the constructor of PublicClientApplication\n */\nexport type Configuration = {\n /**\n * This is where you configure auth elements like clientID, authority used for authenticating against the Microsoft Identity Platform\n */\n auth: BrowserAuthOptions;\n /**\n * This is where you configure cache location and whether to store cache in cookies\n */\n cache?: CacheOptions;\n /**\n * This is where you can configure the network client, logger, token renewal offset\n */\n system?: BrowserSystemOptions;\n /**\n * This is where you can configure telemetry data and options\n */\n telemetry?: BrowserTelemetryOptions;\n};\n\n/** @internal */\nexport type BrowserConfiguration = {\n auth: InternalAuthOptions;\n cache: Required;\n system: Required;\n telemetry: Required;\n};\n\n/**\n * MSAL function that sets the default options when not explicitly configured from app developer\n *\n * @param auth\n * @param cache\n * @param system\n *\n * @returns Configuration object\n */\nexport function buildConfiguration(\n {\n auth: userInputAuth,\n cache: userInputCache,\n system: userInputSystem,\n telemetry: userInputTelemetry,\n }: Configuration,\n isBrowserEnvironment: boolean\n): BrowserConfiguration {\n // Default auth options for browser\n const DEFAULT_AUTH_OPTIONS: InternalAuthOptions = {\n clientId: Constants.EMPTY_STRING,\n authority: `${Constants.DEFAULT_AUTHORITY}`,\n knownAuthorities: [],\n cloudDiscoveryMetadata: Constants.EMPTY_STRING,\n authorityMetadata: Constants.EMPTY_STRING,\n redirectUri:\n typeof window !== \"undefined\" ? BrowserUtils.getCurrentUri() : \"\",\n postLogoutRedirectUri: Constants.EMPTY_STRING,\n navigateToLoginRequestUrl: true,\n clientCapabilities: [],\n protocolMode: ProtocolMode.AAD,\n OIDCOptions: {\n serverResponseType: ServerResponseType.FRAGMENT,\n defaultScopes: [\n Constants.OPENID_SCOPE,\n Constants.PROFILE_SCOPE,\n Constants.OFFLINE_ACCESS_SCOPE,\n ],\n },\n azureCloudOptions: {\n azureCloudInstance: AzureCloudInstance.None,\n tenant: Constants.EMPTY_STRING,\n },\n skipAuthorityMetadataCache: false,\n supportsNestedAppAuth: false,\n instanceAware: false,\n };\n\n // Default cache options for browser\n const DEFAULT_CACHE_OPTIONS: Required = {\n cacheLocation: BrowserCacheLocation.SessionStorage,\n temporaryCacheLocation: BrowserCacheLocation.SessionStorage,\n storeAuthStateInCookie: false,\n secureCookies: false,\n // Default cache migration to true if cache location is localStorage since entries are preserved across tabs/windows. Migration has little to no benefit in sessionStorage and memoryStorage\n cacheMigrationEnabled:\n userInputCache &&\n userInputCache.cacheLocation === BrowserCacheLocation.LocalStorage\n ? true\n : false,\n claimsBasedCachingEnabled: false,\n };\n\n // Default logger options for browser\n const DEFAULT_LOGGER_OPTIONS: LoggerOptions = {\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n loggerCallback: (): void => {\n // allow users to not set logger call back\n },\n logLevel: LogLevel.Info,\n piiLoggingEnabled: false,\n };\n\n // Default system options for browser\n const DEFAULT_BROWSER_SYSTEM_OPTIONS: Required = {\n ...DEFAULT_SYSTEM_OPTIONS,\n loggerOptions: DEFAULT_LOGGER_OPTIONS,\n networkClient: isBrowserEnvironment\n ? new FetchClient()\n : StubbedNetworkModule,\n navigationClient: new NavigationClient(),\n loadFrameTimeout: 0,\n // If loadFrameTimeout is provided, use that as default.\n windowHashTimeout:\n userInputSystem?.loadFrameTimeout || DEFAULT_POPUP_TIMEOUT_MS,\n iframeHashTimeout:\n userInputSystem?.loadFrameTimeout || DEFAULT_IFRAME_TIMEOUT_MS,\n navigateFrameWait: 0,\n redirectNavigationTimeout: DEFAULT_REDIRECT_TIMEOUT_MS,\n asyncPopups: false,\n allowRedirectInIframe: false,\n allowNativeBroker: false,\n nativeBrokerHandshakeTimeout:\n userInputSystem?.nativeBrokerHandshakeTimeout ||\n DEFAULT_NATIVE_BROKER_HANDSHAKE_TIMEOUT_MS,\n pollIntervalMilliseconds: BrowserConstants.DEFAULT_POLL_INTERVAL_MS,\n };\n\n const providedSystemOptions: Required = {\n ...DEFAULT_BROWSER_SYSTEM_OPTIONS,\n ...userInputSystem,\n loggerOptions: userInputSystem?.loggerOptions || DEFAULT_LOGGER_OPTIONS,\n };\n\n const DEFAULT_TELEMETRY_OPTIONS: Required = {\n application: {\n appName: Constants.EMPTY_STRING,\n appVersion: Constants.EMPTY_STRING,\n },\n client: new StubPerformanceClient(),\n };\n\n // Throw an error if user has set OIDCOptions without being in OIDC protocol mode\n if (\n userInputAuth?.protocolMode !== ProtocolMode.OIDC &&\n userInputAuth?.OIDCOptions\n ) {\n const logger = new Logger(providedSystemOptions.loggerOptions);\n logger.warning(\n JSON.stringify(\n createClientConfigurationError(\n ClientConfigurationErrorCodes.cannotSetOIDCOptions\n )\n )\n );\n }\n\n // Throw an error if user has set allowNativeBroker to true without being in AAD protocol mode\n if (\n userInputAuth?.protocolMode &&\n userInputAuth.protocolMode !== ProtocolMode.AAD &&\n providedSystemOptions?.allowNativeBroker\n ) {\n throw createClientConfigurationError(\n ClientConfigurationErrorCodes.cannotAllowNativeBroker\n );\n }\n\n const overlayedConfig: BrowserConfiguration = {\n auth: {\n ...DEFAULT_AUTH_OPTIONS,\n ...userInputAuth,\n OIDCOptions: {\n ...DEFAULT_AUTH_OPTIONS.OIDCOptions,\n ...userInputAuth?.OIDCOptions,\n },\n },\n cache: { ...DEFAULT_CACHE_OPTIONS, ...userInputCache },\n system: providedSystemOptions,\n telemetry: { ...DEFAULT_TELEMETRY_OPTIONS, ...userInputTelemetry },\n };\n\n return overlayedConfig;\n}\n","/* eslint-disable header/header */\nexport const name = \"@azure/msal-browser\";\nexport const version = \"3.28.1\";\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { Logger, LogLevel } from \"@azure/msal-common/browser\";\nimport {\n BrowserConfiguration,\n buildConfiguration,\n Configuration,\n} from \"../config/Configuration.js\";\nimport { version, name } from \"../packageMetadata.js\";\nimport {\n BrowserCacheLocation,\n LOG_LEVEL_CACHE_KEY,\n LOG_PII_CACHE_KEY,\n} from \"../utils/BrowserConstants.js\";\n\n/**\n * Base class for operating context\n * Operating contexts are contexts in which MSAL.js is being run\n * More than one operating context may be available at a time\n * It's important from a logging and telemetry point of view for us to be able to identify the operating context.\n * For example: Some operating contexts will pre-cache tokens impacting performance telemetry\n */\nexport abstract class BaseOperatingContext {\n protected logger: Logger;\n protected config: BrowserConfiguration;\n protected available: boolean;\n protected browserEnvironment: boolean;\n\n protected static loggerCallback(level: LogLevel, message: string): void {\n switch (level) {\n case LogLevel.Error:\n // eslint-disable-next-line no-console\n console.error(message);\n return;\n case LogLevel.Info:\n // eslint-disable-next-line no-console\n console.info(message);\n return;\n case LogLevel.Verbose:\n // eslint-disable-next-line no-console\n console.debug(message);\n return;\n case LogLevel.Warning:\n // eslint-disable-next-line no-console\n console.warn(message);\n return;\n default:\n // eslint-disable-next-line no-console\n console.log(message);\n return;\n }\n }\n\n constructor(config: Configuration) {\n /*\n * If loaded in an environment where window is not available,\n * set internal flag to false so that further requests fail.\n * This is to support server-side rendering environments.\n */\n this.browserEnvironment = typeof window !== \"undefined\";\n this.config = buildConfiguration(config, this.browserEnvironment);\n\n let sessionStorage: Storage | undefined;\n try {\n sessionStorage = window[BrowserCacheLocation.SessionStorage];\n // Mute errors if it's a non-browser environment or cookies are blocked.\n } catch (e) {}\n\n const logLevelKey = sessionStorage?.getItem(LOG_LEVEL_CACHE_KEY);\n const piiLoggingKey = sessionStorage\n ?.getItem(LOG_PII_CACHE_KEY)\n ?.toLowerCase();\n\n const piiLoggingEnabled =\n piiLoggingKey === \"true\"\n ? true\n : piiLoggingKey === \"false\"\n ? false\n : undefined;\n const loggerOptions = { ...this.config.system.loggerOptions };\n\n const logLevel =\n logLevelKey && Object.keys(LogLevel).includes(logLevelKey)\n ? LogLevel[logLevelKey]\n : undefined;\n if (logLevel) {\n loggerOptions.loggerCallback = BaseOperatingContext.loggerCallback;\n loggerOptions.logLevel = logLevel;\n }\n if (piiLoggingEnabled !== undefined) {\n loggerOptions.piiLoggingEnabled = piiLoggingEnabled;\n }\n\n this.logger = new Logger(loggerOptions, name, version);\n this.available = false;\n }\n\n /**\n * returns the name of the module containing the API controller associated with this operating context\n */\n abstract getModuleName(): string;\n\n /**\n * returns the string identifier of this operating context\n */\n abstract getId(): string;\n\n /**\n * returns a boolean indicating whether this operating context is present\n */\n abstract initialize(): Promise;\n\n /**\n * Return the MSAL config\n * @returns BrowserConfiguration\n */\n getConfig(): BrowserConfiguration {\n return this.config;\n }\n\n /**\n * Returns the MSAL Logger\n * @returns Logger\n */\n getLogger(): Logger {\n return this.logger;\n }\n\n isAvailable(): boolean {\n return this.available;\n }\n\n isBrowserEnvironment(): boolean {\n return this.browserEnvironment;\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { BaseOperatingContext } from \"./BaseOperatingContext.js\";\n\nexport class StandardOperatingContext extends BaseOperatingContext {\n /*\n * TODO: Once we have determine the bundling code return here to specify the name of the bundle\n * containing the implementation for this operating context\n */\n static readonly MODULE_NAME: string = \"\";\n\n /**\n * Unique identifier for the operating context\n */\n static readonly ID: string = \"StandardOperatingContext\";\n\n /**\n * Return the module name. Intended for use with import() to enable dynamic import\n * of the implementation associated with this operating context\n * @returns\n */\n getModuleName(): string {\n return StandardOperatingContext.MODULE_NAME;\n }\n\n /**\n * Returns the unique identifier for this operating context\n * @returns string\n */\n getId(): string {\n return StandardOperatingContext.ID;\n }\n\n /**\n * Checks whether the operating context is available.\n * Confirms that the code is running a browser rather. This is required.\n * @returns Promise indicating whether this operating context is currently available.\n */\n async initialize(): Promise {\n this.available = typeof window !== \"undefined\";\n return this.available;\n /*\n * NOTE: The standard context is available as long as there is a window. If/when we split out WAM from Browser\n * We can move the current contents of the initialize method to here and verify that the WAM extension is available\n */\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nexport const missingKidError = \"missing_kid_error\";\nexport const missingAlgError = \"missing_alg_error\";\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { AuthError } from \"./AuthError.js\";\nimport * as JoseHeaderErrorCodes from \"./JoseHeaderErrorCodes.js\";\nexport { JoseHeaderErrorCodes };\n\nexport const JoseHeaderErrorMessages = {\n [JoseHeaderErrorCodes.missingKidError]:\n \"The JOSE Header for the requested JWT, JWS or JWK object requires a keyId to be configured as the 'kid' header claim. No 'kid' value was provided.\",\n [JoseHeaderErrorCodes.missingAlgError]:\n \"The JOSE Header for the requested JWT, JWS or JWK object requires an algorithm to be specified as the 'alg' header claim. No 'alg' value was provided.\",\n};\n\n/**\n * Error thrown when there is an error in the client code running on the browser.\n */\nexport class JoseHeaderError extends AuthError {\n constructor(errorCode: string, errorMessage?: string) {\n super(errorCode, errorMessage);\n this.name = \"JoseHeaderError\";\n\n Object.setPrototypeOf(this, JoseHeaderError.prototype);\n }\n}\n\n/** Returns JoseHeaderError object */\nexport function createJoseHeaderError(code: string): JoseHeaderError {\n return new JoseHeaderError(code, JoseHeaderErrorMessages[code]);\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport {\n JoseHeaderErrorCodes,\n createJoseHeaderError,\n} from \"../error/JoseHeaderError.js\";\nimport { JsonWebTokenTypes } from \"../utils/Constants.js\";\n\nexport type JoseHeaderOptions = {\n typ?: JsonWebTokenTypes;\n alg?: string;\n kid?: string;\n};\n\n/** @internal */\nexport class JoseHeader {\n public typ?: JsonWebTokenTypes;\n public alg?: string;\n public kid?: string;\n\n constructor(options: JoseHeaderOptions) {\n this.typ = options.typ;\n this.alg = options.alg;\n this.kid = options.kid;\n }\n\n /**\n * Builds SignedHttpRequest formatted JOSE Header from the\n * JOSE Header options provided or previously set on the object and returns\n * the stringified header object.\n * Throws if keyId or algorithm aren't provided since they are required for Access Token Binding.\n * @param shrHeaderOptions\n * @returns\n */\n static getShrHeaderString(shrHeaderOptions: JoseHeaderOptions): string {\n // KeyID is required on the SHR header\n if (!shrHeaderOptions.kid) {\n throw createJoseHeaderError(JoseHeaderErrorCodes.missingKidError);\n }\n\n // Alg is required on the SHR header\n if (!shrHeaderOptions.alg) {\n throw createJoseHeaderError(JoseHeaderErrorCodes.missingAlgError);\n }\n\n const shrHeader = new JoseHeader({\n // Access Token PoP headers must have type pop, but the type header can be overriden for special cases\n typ: shrHeaderOptions.typ || JsonWebTokenTypes.Pop,\n kid: shrHeaderOptions.kid,\n alg: shrHeaderOptions.alg,\n });\n\n return JSON.stringify(shrHeader);\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport {\n BrowserAuthErrorCodes,\n createBrowserAuthError,\n} from \"../error/BrowserAuthError.js\";\n\n/**\n * Class which exposes APIs to decode base64 strings to plaintext. See here for implementation details:\n * https://developer.mozilla.org/en-US/docs/Glossary/Base64#the_unicode_problem\n */\n\n/**\n * Returns a URL-safe plaintext decoded string from b64 encoded input.\n * @param input\n */\nexport function base64Decode(input: string): string {\n return new TextDecoder().decode(base64DecToArr(input));\n}\n\n/**\n * Decodes base64 into Uint8Array\n * @param base64String\n */\nfunction base64DecToArr(base64String: string): Uint8Array {\n let encodedString = base64String.replace(/-/g, \"+\").replace(/_/g, \"/\");\n switch (encodedString.length % 4) {\n case 0:\n break;\n case 2:\n encodedString += \"==\";\n break;\n case 3:\n encodedString += \"=\";\n break;\n default:\n throw createBrowserAuthError(\n BrowserAuthErrorCodes.invalidBase64String\n );\n }\n const binString = atob(encodedString);\n return Uint8Array.from(binString, (m) => m.codePointAt(0) || 0);\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport {\n createBrowserAuthError,\n BrowserAuthErrorCodes,\n} from \"../error/BrowserAuthError.js\";\nimport {\n DB_NAME,\n DB_TABLE_NAME,\n DB_VERSION,\n} from \"../utils/BrowserConstants.js\";\nimport { IAsyncStorage } from \"./IAsyncStorage.js\";\n\ninterface IDBOpenDBRequestEvent extends Event {\n target: IDBOpenDBRequest & EventTarget;\n}\n\ninterface IDBOpenOnUpgradeNeededEvent extends IDBVersionChangeEvent {\n target: IDBOpenDBRequest & EventTarget;\n}\n\ninterface IDBRequestEvent extends Event {\n target: IDBRequest & EventTarget;\n}\n\n/**\n * Storage wrapper for IndexedDB storage in browsers: https://developer.mozilla.org/en-US/docs/Web/API/IndexedDB_API\n */\nexport class DatabaseStorage implements IAsyncStorage {\n private db: IDBDatabase | undefined;\n private dbName: string;\n private tableName: string;\n private version: number;\n private dbOpen: boolean;\n\n constructor() {\n this.dbName = DB_NAME;\n this.version = DB_VERSION;\n this.tableName = DB_TABLE_NAME;\n this.dbOpen = false;\n }\n\n /**\n * Opens IndexedDB instance.\n */\n async open(): Promise {\n return new Promise((resolve, reject) => {\n const openDB = window.indexedDB.open(this.dbName, this.version);\n openDB.addEventListener(\n \"upgradeneeded\",\n (e: IDBVersionChangeEvent) => {\n const event = e as IDBOpenOnUpgradeNeededEvent;\n event.target.result.createObjectStore(this.tableName);\n }\n );\n openDB.addEventListener(\"success\", (e: Event) => {\n const event = e as IDBOpenDBRequestEvent;\n this.db = event.target.result;\n this.dbOpen = true;\n resolve();\n });\n openDB.addEventListener(\"error\", () =>\n reject(\n createBrowserAuthError(\n BrowserAuthErrorCodes.databaseUnavailable\n )\n )\n );\n });\n }\n\n /**\n * Closes the connection to IndexedDB database when all pending transactions\n * complete.\n */\n closeConnection(): void {\n const db = this.db;\n if (db && this.dbOpen) {\n db.close();\n this.dbOpen = false;\n }\n }\n\n /**\n * Opens database if it's not already open\n */\n private async validateDbIsOpen(): Promise {\n if (!this.dbOpen) {\n return this.open();\n }\n }\n\n /**\n * Retrieves item from IndexedDB instance.\n * @param key\n */\n async getItem(key: string): Promise {\n await this.validateDbIsOpen();\n return new Promise((resolve, reject) => {\n // TODO: Add timeouts?\n if (!this.db) {\n return reject(\n createBrowserAuthError(\n BrowserAuthErrorCodes.databaseNotOpen\n )\n );\n }\n const transaction = this.db.transaction(\n [this.tableName],\n \"readonly\"\n );\n const objectStore = transaction.objectStore(this.tableName);\n const dbGet = objectStore.get(key);\n\n dbGet.addEventListener(\"success\", (e: Event) => {\n const event = e as IDBRequestEvent;\n this.closeConnection();\n resolve(event.target.result);\n });\n\n dbGet.addEventListener(\"error\", (e: Event) => {\n this.closeConnection();\n reject(e);\n });\n });\n }\n\n /**\n * Adds item to IndexedDB under given key\n * @param key\n * @param payload\n */\n async setItem(key: string, payload: T): Promise {\n await this.validateDbIsOpen();\n return new Promise((resolve: Function, reject: Function) => {\n // TODO: Add timeouts?\n if (!this.db) {\n return reject(\n createBrowserAuthError(\n BrowserAuthErrorCodes.databaseNotOpen\n )\n );\n }\n const transaction = this.db.transaction(\n [this.tableName],\n \"readwrite\"\n );\n\n const objectStore = transaction.objectStore(this.tableName);\n\n const dbPut = objectStore.put(payload, key);\n\n dbPut.addEventListener(\"success\", () => {\n this.closeConnection();\n resolve();\n });\n\n dbPut.addEventListener(\"error\", (e) => {\n this.closeConnection();\n reject(e);\n });\n });\n }\n\n /**\n * Removes item from IndexedDB under given key\n * @param key\n */\n async removeItem(key: string): Promise {\n await this.validateDbIsOpen();\n return new Promise((resolve: Function, reject: Function) => {\n if (!this.db) {\n return reject(\n createBrowserAuthError(\n BrowserAuthErrorCodes.databaseNotOpen\n )\n );\n }\n\n const transaction = this.db.transaction(\n [this.tableName],\n \"readwrite\"\n );\n const objectStore = transaction.objectStore(this.tableName);\n const dbDelete = objectStore.delete(key);\n\n dbDelete.addEventListener(\"success\", () => {\n this.closeConnection();\n resolve();\n });\n\n dbDelete.addEventListener(\"error\", (e) => {\n this.closeConnection();\n reject(e);\n });\n });\n }\n\n /**\n * Get all the keys from the storage object as an iterable array of strings.\n */\n async getKeys(): Promise {\n await this.validateDbIsOpen();\n return new Promise((resolve: Function, reject: Function) => {\n if (!this.db) {\n return reject(\n createBrowserAuthError(\n BrowserAuthErrorCodes.databaseNotOpen\n )\n );\n }\n\n const transaction = this.db.transaction(\n [this.tableName],\n \"readonly\"\n );\n const objectStore = transaction.objectStore(this.tableName);\n const dbGetKeys = objectStore.getAllKeys();\n\n dbGetKeys.addEventListener(\"success\", (e: Event) => {\n const event = e as IDBRequestEvent;\n this.closeConnection();\n resolve(event.target.result);\n });\n\n dbGetKeys.addEventListener(\"error\", (e: Event) => {\n this.closeConnection();\n reject(e);\n });\n });\n }\n\n /**\n *\n * Checks whether there is an object under the search key in the object store\n */\n async containsKey(key: string): Promise {\n await this.validateDbIsOpen();\n\n return new Promise((resolve: Function, reject: Function) => {\n if (!this.db) {\n return reject(\n createBrowserAuthError(\n BrowserAuthErrorCodes.databaseNotOpen\n )\n );\n }\n\n const transaction = this.db.transaction(\n [this.tableName],\n \"readonly\"\n );\n const objectStore = transaction.objectStore(this.tableName);\n const dbContainsKey = objectStore.count(key);\n\n dbContainsKey.addEventListener(\"success\", (e: Event) => {\n const event = e as IDBRequestEvent;\n this.closeConnection();\n resolve(event.target.result === 1);\n });\n\n dbContainsKey.addEventListener(\"error\", (e: Event) => {\n this.closeConnection();\n reject(e);\n });\n });\n }\n\n /**\n * Deletes the MSAL database. The database is deleted rather than cleared to make it possible\n * for client applications to downgrade to a previous MSAL version without worrying about forward compatibility issues\n * with IndexedDB database versions.\n */\n async deleteDatabase(): Promise {\n // Check if database being deleted exists\n\n if (this.db && this.dbOpen) {\n this.closeConnection();\n }\n\n return new Promise((resolve: Function, reject: Function) => {\n const deleteDbRequest = window.indexedDB.deleteDatabase(DB_NAME);\n const id = setTimeout(() => reject(false), 200); // Reject if events aren't raised within 200ms\n deleteDbRequest.addEventListener(\"success\", () => {\n clearTimeout(id);\n return resolve(true);\n });\n deleteDbRequest.addEventListener(\"blocked\", () => {\n clearTimeout(id);\n return resolve(true);\n });\n deleteDbRequest.addEventListener(\"error\", () => {\n clearTimeout(id);\n return reject(false);\n });\n });\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { IWindowStorage } from \"./IWindowStorage.js\";\n\nexport class MemoryStorage implements IWindowStorage {\n private cache: Map;\n\n constructor() {\n this.cache = new Map();\n }\n\n getItem(key: string): T | null {\n return this.cache.get(key) || null;\n }\n\n setItem(key: string, value: T): void {\n this.cache.set(key, value);\n }\n\n removeItem(key: string): void {\n this.cache.delete(key);\n }\n\n getKeys(): string[] {\n const cacheKeys: string[] = [];\n this.cache.forEach((value: T, key: string) => {\n cacheKeys.push(key);\n });\n return cacheKeys;\n }\n\n containsKey(key: string): boolean {\n return this.cache.has(key);\n }\n\n clear(): void {\n this.cache.clear();\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { Logger } from \"@azure/msal-common/browser\";\nimport {\n BrowserAuthError,\n BrowserAuthErrorCodes,\n} from \"../error/BrowserAuthError.js\";\nimport { DatabaseStorage } from \"./DatabaseStorage.js\";\nimport { IAsyncStorage } from \"./IAsyncStorage.js\";\nimport { MemoryStorage } from \"./MemoryStorage.js\";\n\n/**\n * This class allows MSAL to store artifacts asynchronously using the DatabaseStorage IndexedDB wrapper,\n * backed up with the more volatile MemoryStorage object for cases in which IndexedDB may be unavailable.\n */\nexport class AsyncMemoryStorage implements IAsyncStorage {\n private inMemoryCache: MemoryStorage;\n private indexedDBCache: DatabaseStorage;\n private logger: Logger;\n\n constructor(logger: Logger) {\n this.inMemoryCache = new MemoryStorage();\n this.indexedDBCache = new DatabaseStorage();\n this.logger = logger;\n }\n\n private handleDatabaseAccessError(error: unknown): void {\n if (\n error instanceof BrowserAuthError &&\n error.errorCode === BrowserAuthErrorCodes.databaseUnavailable\n ) {\n this.logger.error(\n \"Could not access persistent storage. This may be caused by browser privacy features which block persistent storage in third-party contexts.\"\n );\n } else {\n throw error;\n }\n }\n /**\n * Get the item matching the given key. Tries in-memory cache first, then in the asynchronous\n * storage object if item isn't found in-memory.\n * @param key\n */\n async getItem(key: string): Promise {\n const item = this.inMemoryCache.getItem(key);\n if (!item) {\n try {\n this.logger.verbose(\n \"Queried item not found in in-memory cache, now querying persistent storage.\"\n );\n return await this.indexedDBCache.getItem(key);\n } catch (e) {\n this.handleDatabaseAccessError(e);\n }\n }\n return item;\n }\n\n /**\n * Sets the item in the in-memory cache and then tries to set it in the asynchronous\n * storage object with the given key.\n * @param key\n * @param value\n */\n async setItem(key: string, value: T): Promise {\n this.inMemoryCache.setItem(key, value);\n try {\n await this.indexedDBCache.setItem(key, value);\n } catch (e) {\n this.handleDatabaseAccessError(e);\n }\n }\n\n /**\n * Removes the item matching the key from the in-memory cache, then tries to remove it from the asynchronous storage object.\n * @param key\n */\n async removeItem(key: string): Promise {\n this.inMemoryCache.removeItem(key);\n try {\n await this.indexedDBCache.removeItem(key);\n } catch (e) {\n this.handleDatabaseAccessError(e);\n }\n }\n\n /**\n * Get all the keys from the in-memory cache as an iterable array of strings. If no keys are found, query the keys in the\n * asynchronous storage object.\n */\n async getKeys(): Promise {\n const cacheKeys = this.inMemoryCache.getKeys();\n if (cacheKeys.length === 0) {\n try {\n this.logger.verbose(\n \"In-memory cache is empty, now querying persistent storage.\"\n );\n return await this.indexedDBCache.getKeys();\n } catch (e) {\n this.handleDatabaseAccessError(e);\n }\n }\n return cacheKeys;\n }\n\n /**\n * Returns true or false if the given key is present in the cache.\n * @param key\n */\n async containsKey(key: string): Promise {\n const containsKey = this.inMemoryCache.containsKey(key);\n if (!containsKey) {\n try {\n this.logger.verbose(\n \"Key not found in in-memory cache, now querying persistent storage.\"\n );\n return await this.indexedDBCache.containsKey(key);\n } catch (e) {\n this.handleDatabaseAccessError(e);\n }\n }\n return containsKey;\n }\n\n /**\n * Clears in-memory Map\n */\n clearInMemory(): void {\n // InMemory cache is a Map instance, clear is straightforward\n this.logger.verbose(`Deleting in-memory keystore`);\n this.inMemoryCache.clear();\n this.logger.verbose(`In-memory keystore deleted`);\n }\n\n /**\n * Tries to delete the IndexedDB database\n * @returns\n */\n async clearPersistent(): Promise {\n try {\n this.logger.verbose(\"Deleting persistent keystore\");\n const dbDeleted = await this.indexedDBCache.deleteDatabase();\n if (dbDeleted) {\n this.logger.verbose(\"Persistent keystore deleted\");\n }\n\n return dbDeleted;\n } catch (e) {\n this.handleDatabaseAccessError(e);\n return false;\n }\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport {\n ICrypto,\n IPerformanceClient,\n JoseHeader,\n Logger,\n PerformanceEvents,\n ShrOptions,\n SignedHttpRequest,\n SignedHttpRequestParameters,\n} from \"@azure/msal-common/browser\";\nimport {\n base64Encode,\n urlEncode,\n urlEncodeArr,\n} from \"../encode/Base64Encode.js\";\nimport { base64Decode } from \"../encode/Base64Decode.js\";\nimport * as BrowserCrypto from \"./BrowserCrypto.js\";\nimport {\n createBrowserAuthError,\n BrowserAuthErrorCodes,\n} from \"../error/BrowserAuthError.js\";\nimport { AsyncMemoryStorage } from \"../cache/AsyncMemoryStorage.js\";\n\nexport type CachedKeyPair = {\n publicKey: CryptoKey;\n privateKey: CryptoKey;\n requestMethod?: string;\n requestUri?: string;\n};\n\n/**\n * This class implements MSAL's crypto interface, which allows it to perform base64 encoding and decoding, generating cryptographically random GUIDs and\n * implementing Proof Key for Code Exchange specs for the OAuth Authorization Code Flow using PKCE (rfc here: https://tools.ietf.org/html/rfc7636).\n */\nexport class CryptoOps implements ICrypto {\n private logger: Logger;\n\n /**\n * CryptoOps can be used in contexts outside a PCA instance,\n * meaning there won't be a performance manager available.\n */\n private performanceClient: IPerformanceClient | undefined;\n\n private static POP_KEY_USAGES: Array = [\"sign\", \"verify\"];\n private static EXTRACTABLE: boolean = true;\n private cache: AsyncMemoryStorage;\n\n constructor(\n logger: Logger,\n performanceClient?: IPerformanceClient,\n skipValidateSubtleCrypto?: boolean\n ) {\n this.logger = logger;\n // Browser crypto needs to be validated first before any other classes can be set.\n BrowserCrypto.validateCryptoAvailable(\n skipValidateSubtleCrypto ?? false\n );\n this.cache = new AsyncMemoryStorage(this.logger);\n this.performanceClient = performanceClient;\n }\n\n /**\n * Creates a new random GUID - used to populate state and nonce.\n * @returns string (GUID)\n */\n createNewGuid(): string {\n return BrowserCrypto.createNewGuid();\n }\n\n /**\n * Encodes input string to base64.\n * @param input\n */\n base64Encode(input: string): string {\n return base64Encode(input);\n }\n\n /**\n * Decodes input string from base64.\n * @param input\n */\n base64Decode(input: string): string {\n return base64Decode(input);\n }\n\n /**\n * Encodes input string to base64 URL safe string.\n * @param input\n */\n base64UrlEncode(input: string): string {\n return urlEncode(input);\n }\n\n /**\n * Stringifies and base64Url encodes input public key\n * @param inputKid\n * @returns Base64Url encoded public key\n */\n encodeKid(inputKid: string): string {\n return this.base64UrlEncode(JSON.stringify({ kid: inputKid }));\n }\n\n /**\n * Generates a keypair, stores it and returns a thumbprint\n * @param request\n */\n async getPublicKeyThumbprint(\n request: SignedHttpRequestParameters\n ): Promise {\n const publicKeyThumbMeasurement =\n this.performanceClient?.startMeasurement(\n PerformanceEvents.CryptoOptsGetPublicKeyThumbprint,\n request.correlationId\n );\n\n // Generate Keypair\n const keyPair: CryptoKeyPair = await BrowserCrypto.generateKeyPair(\n CryptoOps.EXTRACTABLE,\n CryptoOps.POP_KEY_USAGES\n );\n\n // Generate Thumbprint for Public Key\n const publicKeyJwk: JsonWebKey = await BrowserCrypto.exportJwk(\n keyPair.publicKey\n );\n\n const pubKeyThumprintObj: JsonWebKey = {\n e: publicKeyJwk.e,\n kty: publicKeyJwk.kty,\n n: publicKeyJwk.n,\n };\n\n const publicJwkString: string =\n getSortedObjectString(pubKeyThumprintObj);\n const publicJwkHash = await this.hashString(publicJwkString);\n\n // Generate Thumbprint for Private Key\n const privateKeyJwk: JsonWebKey = await BrowserCrypto.exportJwk(\n keyPair.privateKey\n );\n // Re-import private key to make it unextractable\n const unextractablePrivateKey: CryptoKey =\n await BrowserCrypto.importJwk(privateKeyJwk, false, [\"sign\"]);\n\n // Store Keypair data in keystore\n await this.cache.setItem(publicJwkHash, {\n privateKey: unextractablePrivateKey,\n publicKey: keyPair.publicKey,\n requestMethod: request.resourceRequestMethod,\n requestUri: request.resourceRequestUri,\n });\n\n if (publicKeyThumbMeasurement) {\n publicKeyThumbMeasurement.end({\n success: true,\n });\n }\n\n return publicJwkHash;\n }\n\n /**\n * Removes cryptographic keypair from key store matching the keyId passed in\n * @param kid\n */\n async removeTokenBindingKey(kid: string): Promise {\n await this.cache.removeItem(kid);\n const keyFound = await this.cache.containsKey(kid);\n return !keyFound;\n }\n\n /**\n * Removes all cryptographic keys from IndexedDB storage\n */\n async clearKeystore(): Promise {\n // Delete in-memory keystores\n this.cache.clearInMemory();\n\n /**\n * There is only one database, so calling clearPersistent on asymmetric keystore takes care of\n * every persistent keystore\n */\n try {\n await this.cache.clearPersistent();\n return true;\n } catch (e) {\n if (e instanceof Error) {\n this.logger.error(\n `Clearing keystore failed with error: ${e.message}`\n );\n } else {\n this.logger.error(\n \"Clearing keystore failed with unknown error\"\n );\n }\n\n return false;\n }\n }\n\n /**\n * Signs the given object as a jwt payload with private key retrieved by given kid.\n * @param payload\n * @param kid\n */\n async signJwt(\n payload: SignedHttpRequest,\n kid: string,\n shrOptions?: ShrOptions,\n correlationId?: string\n ): Promise {\n const signJwtMeasurement = this.performanceClient?.startMeasurement(\n PerformanceEvents.CryptoOptsSignJwt,\n correlationId\n );\n const cachedKeyPair = await this.cache.getItem(kid);\n\n if (!cachedKeyPair) {\n throw createBrowserAuthError(\n BrowserAuthErrorCodes.cryptoKeyNotFound\n );\n }\n\n // Get public key as JWK\n const publicKeyJwk = await BrowserCrypto.exportJwk(\n cachedKeyPair.publicKey\n );\n const publicKeyJwkString = getSortedObjectString(publicKeyJwk);\n // Base64URL encode public key thumbprint with keyId only: BASE64URL({ kid: \"FULL_PUBLIC_KEY_HASH\" })\n const encodedKeyIdThumbprint = urlEncode(JSON.stringify({ kid: kid }));\n // Generate header\n const shrHeader = JoseHeader.getShrHeaderString({\n ...shrOptions?.header,\n alg: publicKeyJwk.alg,\n kid: encodedKeyIdThumbprint,\n });\n\n const encodedShrHeader = urlEncode(shrHeader);\n\n // Generate payload\n payload.cnf = {\n jwk: JSON.parse(publicKeyJwkString),\n };\n const encodedPayload = urlEncode(JSON.stringify(payload));\n\n // Form token string\n const tokenString = `${encodedShrHeader}.${encodedPayload}`;\n\n // Sign token\n const encoder = new TextEncoder();\n const tokenBuffer = encoder.encode(tokenString);\n const signatureBuffer = await BrowserCrypto.sign(\n cachedKeyPair.privateKey,\n tokenBuffer\n );\n const encodedSignature = urlEncodeArr(new Uint8Array(signatureBuffer));\n\n const signedJwt = `${tokenString}.${encodedSignature}`;\n\n if (signJwtMeasurement) {\n signJwtMeasurement.end({\n success: true,\n });\n }\n\n return signedJwt;\n }\n\n /**\n * Returns the SHA-256 hash of an input string\n * @param plainText\n */\n async hashString(plainText: string): Promise {\n return BrowserCrypto.hashString(plainText);\n }\n}\n\nfunction getSortedObjectString(obj: object): string {\n return JSON.stringify(obj, Object.keys(obj).sort());\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { Logger } from \"../logger/Logger.js\";\nimport { IPerformanceClient } from \"../telemetry/performance/IPerformanceClient.js\";\n\n/**\n * Wraps a function with a performance measurement.\n * Usage: invoke(functionToCall, performanceClient, \"EventName\", \"correlationId\")(...argsToPassToFunction)\n * @param callback\n * @param eventName\n * @param logger\n * @param telemetryClient\n * @param correlationId\n * @returns\n * @internal\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const invoke = , U>(\n callback: (...args: T) => U,\n eventName: string,\n logger: Logger,\n telemetryClient?: IPerformanceClient,\n correlationId?: string\n) => {\n return (...args: T): U => {\n logger.trace(`Executing function ${eventName}`);\n const inProgressEvent = telemetryClient?.startMeasurement(\n eventName,\n correlationId\n );\n if (correlationId) {\n // Track number of times this API is called in a single request\n const eventCount = eventName + \"CallCount\";\n telemetryClient?.incrementFields(\n { [eventCount]: 1 },\n correlationId\n );\n }\n try {\n const result = callback(...args);\n inProgressEvent?.end({\n success: true,\n });\n logger.trace(`Returning result from ${eventName}`);\n return result;\n } catch (e) {\n logger.trace(`Error occurred in ${eventName}`);\n try {\n logger.trace(JSON.stringify(e));\n } catch (e) {\n logger.trace(\"Unable to print error message.\");\n }\n inProgressEvent?.end(\n {\n success: false,\n },\n e\n );\n throw e;\n }\n };\n};\n\n/**\n * Wraps an async function with a performance measurement.\n * Usage: invokeAsync(functionToCall, performanceClient, \"EventName\", \"correlationId\")(...argsToPassToFunction)\n * @param callback\n * @param eventName\n * @param logger\n * @param telemetryClient\n * @param correlationId\n * @returns\n * @internal\n *\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const invokeAsync = , U>(\n callback: (...args: T) => Promise,\n eventName: string,\n logger: Logger,\n telemetryClient?: IPerformanceClient,\n correlationId?: string\n) => {\n return (...args: T): Promise => {\n logger.trace(`Executing function ${eventName}`);\n const inProgressEvent = telemetryClient?.startMeasurement(\n eventName,\n correlationId\n );\n if (correlationId) {\n // Track number of times this API is called in a single request\n const eventCount = eventName + \"CallCount\";\n telemetryClient?.incrementFields(\n { [eventCount]: 1 },\n correlationId\n );\n }\n telemetryClient?.setPreQueueTime(eventName, correlationId);\n return callback(...args)\n .then((response) => {\n logger.trace(`Returning result from ${eventName}`);\n inProgressEvent?.end({\n success: true,\n });\n return response;\n })\n .catch((e) => {\n logger.trace(`Error occurred in ${eventName}`);\n try {\n logger.trace(JSON.stringify(e));\n } catch (e) {\n logger.trace(\"Unable to print error message.\");\n }\n inProgressEvent?.end(\n {\n success: false,\n },\n e\n );\n throw e;\n });\n };\n};\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { INetworkModule } from \"../network/INetworkModule.js\";\nimport { NetworkResponse } from \"../network/NetworkResponse.js\";\nimport { IMDSBadResponse } from \"../response/IMDSBadResponse.js\";\nimport {\n Constants,\n RegionDiscoverySources,\n ResponseCodes,\n} from \"../utils/Constants.js\";\nimport { RegionDiscoveryMetadata } from \"./RegionDiscoveryMetadata.js\";\nimport { ImdsOptions } from \"./ImdsOptions.js\";\nimport { IPerformanceClient } from \"../telemetry/performance/IPerformanceClient.js\";\nimport { PerformanceEvents } from \"../telemetry/performance/PerformanceEvent.js\";\nimport { invokeAsync } from \"../utils/FunctionWrappers.js\";\nimport { Logger } from \"../logger/Logger.js\";\n\nexport class RegionDiscovery {\n // Network interface to make requests with.\n protected networkInterface: INetworkModule;\n // Logger\n private logger: Logger;\n // Performance client\n protected performanceClient: IPerformanceClient | undefined;\n // CorrelationId\n protected correlationId: string | undefined;\n // Options for the IMDS endpoint request\n protected static IMDS_OPTIONS: ImdsOptions = {\n headers: {\n Metadata: \"true\",\n },\n };\n\n constructor(\n networkInterface: INetworkModule,\n logger: Logger,\n performanceClient?: IPerformanceClient,\n correlationId?: string\n ) {\n this.networkInterface = networkInterface;\n this.logger = logger;\n this.performanceClient = performanceClient;\n this.correlationId = correlationId;\n }\n\n /**\n * Detect the region from the application's environment.\n *\n * @returns Promise\n */\n public async detectRegion(\n environmentRegion: string | undefined,\n regionDiscoveryMetadata: RegionDiscoveryMetadata\n ): Promise {\n this.performanceClient?.addQueueMeasurement(\n PerformanceEvents.RegionDiscoveryDetectRegion,\n this.correlationId\n );\n\n // Initialize auto detected region with the region from the envrionment\n let autodetectedRegionName = environmentRegion;\n\n // Check if a region was detected from the environment, if not, attempt to get the region from IMDS\n if (!autodetectedRegionName) {\n const options = RegionDiscovery.IMDS_OPTIONS;\n\n try {\n const localIMDSVersionResponse = await invokeAsync(\n this.getRegionFromIMDS.bind(this),\n PerformanceEvents.RegionDiscoveryGetRegionFromIMDS,\n this.logger,\n this.performanceClient,\n this.correlationId\n )(Constants.IMDS_VERSION, options);\n if (\n localIMDSVersionResponse.status ===\n ResponseCodes.httpSuccess\n ) {\n autodetectedRegionName = localIMDSVersionResponse.body;\n regionDiscoveryMetadata.region_source =\n RegionDiscoverySources.IMDS;\n }\n\n // If the response using the local IMDS version failed, try to fetch the current version of IMDS and retry.\n if (\n localIMDSVersionResponse.status ===\n ResponseCodes.httpBadRequest\n ) {\n const currentIMDSVersion = await invokeAsync(\n this.getCurrentVersion.bind(this),\n PerformanceEvents.RegionDiscoveryGetCurrentVersion,\n this.logger,\n this.performanceClient,\n this.correlationId\n )(options);\n if (!currentIMDSVersion) {\n regionDiscoveryMetadata.region_source =\n RegionDiscoverySources.FAILED_AUTO_DETECTION;\n return null;\n }\n\n const currentIMDSVersionResponse = await invokeAsync(\n this.getRegionFromIMDS.bind(this),\n PerformanceEvents.RegionDiscoveryGetRegionFromIMDS,\n this.logger,\n this.performanceClient,\n this.correlationId\n )(currentIMDSVersion, options);\n if (\n currentIMDSVersionResponse.status ===\n ResponseCodes.httpSuccess\n ) {\n autodetectedRegionName =\n currentIMDSVersionResponse.body;\n regionDiscoveryMetadata.region_source =\n RegionDiscoverySources.IMDS;\n }\n }\n } catch (e) {\n regionDiscoveryMetadata.region_source =\n RegionDiscoverySources.FAILED_AUTO_DETECTION;\n return null;\n }\n } else {\n regionDiscoveryMetadata.region_source =\n RegionDiscoverySources.ENVIRONMENT_VARIABLE;\n }\n\n // If no region was auto detected from the environment or from the IMDS endpoint, mark the attempt as a FAILED_AUTO_DETECTION\n if (!autodetectedRegionName) {\n regionDiscoveryMetadata.region_source =\n RegionDiscoverySources.FAILED_AUTO_DETECTION;\n }\n\n return autodetectedRegionName || null;\n }\n\n /**\n * Make the call to the IMDS endpoint\n *\n * @param imdsEndpointUrl\n * @returns Promise>\n */\n private async getRegionFromIMDS(\n version: string,\n options: ImdsOptions\n ): Promise> {\n this.performanceClient?.addQueueMeasurement(\n PerformanceEvents.RegionDiscoveryGetRegionFromIMDS,\n this.correlationId\n );\n return this.networkInterface.sendGetRequestAsync(\n `${Constants.IMDS_ENDPOINT}?api-version=${version}&format=text`,\n options,\n Constants.IMDS_TIMEOUT\n );\n }\n\n /**\n * Get the most recent version of the IMDS endpoint available\n *\n * @returns Promise\n */\n private async getCurrentVersion(\n options: ImdsOptions\n ): Promise {\n this.performanceClient?.addQueueMeasurement(\n PerformanceEvents.RegionDiscoveryGetCurrentVersion,\n this.correlationId\n );\n try {\n const response =\n await this.networkInterface.sendGetRequestAsync(\n `${Constants.IMDS_ENDPOINT}?format=json`,\n options\n );\n\n // When IMDS endpoint is called without the api version query param, bad request response comes back with latest version.\n if (\n response.status === ResponseCodes.httpBadRequest &&\n response.body &&\n response.body[\"newest-versions\"] &&\n response.body[\"newest-versions\"].length > 0\n ) {\n return response.body[\"newest-versions\"][0];\n }\n\n return null;\n } catch (e) {\n return null;\n }\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { AuthorityType } from \"./AuthorityType.js\";\nimport {\n isOpenIdConfigResponse,\n OpenIdConfigResponse,\n} from \"./OpenIdConfigResponse.js\";\nimport { UrlString } from \"../url/UrlString.js\";\nimport { IUri } from \"../url/IUri.js\";\nimport {\n createClientAuthError,\n ClientAuthErrorCodes,\n} from \"../error/ClientAuthError.js\";\nimport { INetworkModule } from \"../network/INetworkModule.js\";\nimport {\n AADAuthorityConstants,\n AuthorityMetadataSource,\n Constants,\n RegionDiscoveryOutcomes,\n} from \"../utils/Constants.js\";\nimport {\n EndpointMetadata,\n getCloudDiscoveryMetadataFromHardcodedValues,\n getCloudDiscoveryMetadataFromNetworkResponse,\n InstanceDiscoveryMetadataAliases,\n} from \"./AuthorityMetadata.js\";\nimport {\n createClientConfigurationError,\n ClientConfigurationErrorCodes,\n} from \"../error/ClientConfigurationError.js\";\nimport { ProtocolMode } from \"./ProtocolMode.js\";\nimport { ICacheManager } from \"../cache/interface/ICacheManager.js\";\nimport { AuthorityMetadataEntity } from \"../cache/entities/AuthorityMetadataEntity.js\";\nimport {\n AuthorityOptions,\n AzureCloudInstance,\n StaticAuthorityOptions,\n} from \"./AuthorityOptions.js\";\nimport {\n CloudInstanceDiscoveryResponse,\n isCloudInstanceDiscoveryResponse,\n} from \"./CloudInstanceDiscoveryResponse.js\";\nimport {\n CloudInstanceDiscoveryErrorResponse,\n isCloudInstanceDiscoveryErrorResponse,\n} from \"./CloudInstanceDiscoveryErrorResponse.js\";\nimport { CloudDiscoveryMetadata } from \"./CloudDiscoveryMetadata.js\";\nimport { RegionDiscovery } from \"./RegionDiscovery.js\";\nimport { RegionDiscoveryMetadata } from \"./RegionDiscoveryMetadata.js\";\nimport { ImdsOptions } from \"./ImdsOptions.js\";\nimport { AzureCloudOptions } from \"../config/ClientConfiguration.js\";\nimport { Logger } from \"../logger/Logger.js\";\nimport { AuthError } from \"../error/AuthError.js\";\nimport { IPerformanceClient } from \"../telemetry/performance/IPerformanceClient.js\";\nimport { PerformanceEvents } from \"../telemetry/performance/PerformanceEvent.js\";\nimport { invokeAsync } from \"../utils/FunctionWrappers.js\";\nimport * as CacheHelpers from \"../cache/utils/CacheHelpers.js\";\n\n/**\n * The authority class validates the authority URIs used by the user, and retrieves the OpenID Configuration Data from the\n * endpoint. It will store the pertinent config data in this object for use during token calls.\n * @internal\n */\nexport class Authority {\n // Canonical authority url string\n private _canonicalAuthority: UrlString;\n // Canonicaly authority url components\n private _canonicalAuthorityUrlComponents: IUri | null;\n // Network interface to make requests with.\n protected networkInterface: INetworkModule;\n // Cache Manager to cache network responses\n protected cacheManager: ICacheManager;\n // Protocol mode to construct endpoints\n private authorityOptions: AuthorityOptions;\n // Authority metadata\n private metadata: AuthorityMetadataEntity;\n // Region discovery service\n private regionDiscovery: RegionDiscovery;\n // Region discovery metadata\n public regionDiscoveryMetadata: RegionDiscoveryMetadata;\n // Logger object\n private logger: Logger;\n // Performance client\n protected performanceClient: IPerformanceClient | undefined;\n // Correlation Id\n protected correlationId: string;\n // Indicates if the authority is fake, for the purpose of a Managed Identity Application\n private managedIdentity: boolean;\n // Reserved tenant domain names that will not be replaced with tenant id\n private static reservedTenantDomains: Set = new Set([\n \"{tenant}\",\n \"{tenantid}\",\n AADAuthorityConstants.COMMON,\n AADAuthorityConstants.CONSUMERS,\n AADAuthorityConstants.ORGANIZATIONS,\n ]);\n\n constructor(\n authority: string,\n networkInterface: INetworkModule,\n cacheManager: ICacheManager,\n authorityOptions: AuthorityOptions,\n logger: Logger,\n correlationId: string,\n performanceClient?: IPerformanceClient,\n managedIdentity?: boolean\n ) {\n this.canonicalAuthority = authority;\n this._canonicalAuthority.validateAsUri();\n this.networkInterface = networkInterface;\n this.cacheManager = cacheManager;\n this.authorityOptions = authorityOptions;\n this.regionDiscoveryMetadata = {\n region_used: undefined,\n region_source: undefined,\n region_outcome: undefined,\n };\n this.logger = logger;\n this.performanceClient = performanceClient;\n this.correlationId = correlationId;\n this.managedIdentity = managedIdentity || false;\n this.regionDiscovery = new RegionDiscovery(\n networkInterface,\n this.logger,\n this.performanceClient,\n this.correlationId\n );\n }\n\n /**\n * Get {@link AuthorityType}\n * @param authorityUri {@link IUri}\n * @private\n */\n private getAuthorityType(authorityUri: IUri): AuthorityType {\n // CIAM auth url pattern is being standardized as: .ciamlogin.com\n if (authorityUri.HostNameAndPort.endsWith(Constants.CIAM_AUTH_URL)) {\n return AuthorityType.Ciam;\n }\n\n const pathSegments = authorityUri.PathSegments;\n if (pathSegments.length) {\n switch (pathSegments[0].toLowerCase()) {\n case Constants.ADFS:\n return AuthorityType.Adfs;\n case Constants.DSTS:\n return AuthorityType.Dsts;\n default:\n break;\n }\n }\n return AuthorityType.Default;\n }\n\n // See above for AuthorityType\n public get authorityType(): AuthorityType {\n return this.getAuthorityType(this.canonicalAuthorityUrlComponents);\n }\n\n /**\n * ProtocolMode enum representing the way endpoints are constructed.\n */\n public get protocolMode(): ProtocolMode {\n return this.authorityOptions.protocolMode;\n }\n\n /**\n * Returns authorityOptions which can be used to reinstantiate a new authority instance\n */\n public get options(): AuthorityOptions {\n return this.authorityOptions;\n }\n\n /**\n * A URL that is the authority set by the developer\n */\n public get canonicalAuthority(): string {\n return this._canonicalAuthority.urlString;\n }\n\n /**\n * Sets canonical authority.\n */\n public set canonicalAuthority(url: string) {\n this._canonicalAuthority = new UrlString(url);\n this._canonicalAuthority.validateAsUri();\n this._canonicalAuthorityUrlComponents = null;\n }\n\n /**\n * Get authority components.\n */\n public get canonicalAuthorityUrlComponents(): IUri {\n if (!this._canonicalAuthorityUrlComponents) {\n this._canonicalAuthorityUrlComponents =\n this._canonicalAuthority.getUrlComponents();\n }\n\n return this._canonicalAuthorityUrlComponents;\n }\n\n /**\n * Get hostname and port i.e. login.microsoftonline.com\n */\n public get hostnameAndPort(): string {\n return this.canonicalAuthorityUrlComponents.HostNameAndPort.toLowerCase();\n }\n\n /**\n * Get tenant for authority.\n */\n public get tenant(): string {\n return this.canonicalAuthorityUrlComponents.PathSegments[0];\n }\n\n /**\n * OAuth /authorize endpoint for requests\n */\n public get authorizationEndpoint(): string {\n if (this.discoveryComplete()) {\n return this.replacePath(this.metadata.authorization_endpoint);\n } else {\n throw createClientAuthError(\n ClientAuthErrorCodes.endpointResolutionError\n );\n }\n }\n\n /**\n * OAuth /token endpoint for requests\n */\n public get tokenEndpoint(): string {\n if (this.discoveryComplete()) {\n return this.replacePath(this.metadata.token_endpoint);\n } else {\n throw createClientAuthError(\n ClientAuthErrorCodes.endpointResolutionError\n );\n }\n }\n\n public get deviceCodeEndpoint(): string {\n if (this.discoveryComplete()) {\n return this.replacePath(\n this.metadata.token_endpoint.replace(\"/token\", \"/devicecode\")\n );\n } else {\n throw createClientAuthError(\n ClientAuthErrorCodes.endpointResolutionError\n );\n }\n }\n\n /**\n * OAuth logout endpoint for requests\n */\n public get endSessionEndpoint(): string {\n if (this.discoveryComplete()) {\n // ROPC policies may not have end_session_endpoint set\n if (!this.metadata.end_session_endpoint) {\n throw createClientAuthError(\n ClientAuthErrorCodes.endSessionEndpointNotSupported\n );\n }\n return this.replacePath(this.metadata.end_session_endpoint);\n } else {\n throw createClientAuthError(\n ClientAuthErrorCodes.endpointResolutionError\n );\n }\n }\n\n /**\n * OAuth issuer for requests\n */\n public get selfSignedJwtAudience(): string {\n if (this.discoveryComplete()) {\n return this.replacePath(this.metadata.issuer);\n } else {\n throw createClientAuthError(\n ClientAuthErrorCodes.endpointResolutionError\n );\n }\n }\n\n /**\n * Jwks_uri for token signing keys\n */\n public get jwksUri(): string {\n if (this.discoveryComplete()) {\n return this.replacePath(this.metadata.jwks_uri);\n } else {\n throw createClientAuthError(\n ClientAuthErrorCodes.endpointResolutionError\n );\n }\n }\n\n /**\n * Returns a flag indicating that tenant name can be replaced in authority {@link IUri}\n * @param authorityUri {@link IUri}\n * @private\n */\n private canReplaceTenant(authorityUri: IUri): boolean {\n return (\n authorityUri.PathSegments.length === 1 &&\n !Authority.reservedTenantDomains.has(\n authorityUri.PathSegments[0]\n ) &&\n this.getAuthorityType(authorityUri) === AuthorityType.Default &&\n this.protocolMode === ProtocolMode.AAD\n );\n }\n\n /**\n * Replaces tenant in url path with current tenant. Defaults to common.\n * @param urlString\n */\n private replaceTenant(urlString: string): string {\n return urlString.replace(/{tenant}|{tenantid}/g, this.tenant);\n }\n\n /**\n * Replaces path such as tenant or policy with the current tenant or policy.\n * @param urlString\n */\n private replacePath(urlString: string): string {\n let endpoint = urlString;\n const cachedAuthorityUrl = new UrlString(\n this.metadata.canonical_authority\n );\n const cachedAuthorityUrlComponents =\n cachedAuthorityUrl.getUrlComponents();\n const cachedAuthorityParts = cachedAuthorityUrlComponents.PathSegments;\n const currentAuthorityParts =\n this.canonicalAuthorityUrlComponents.PathSegments;\n\n currentAuthorityParts.forEach((currentPart, index) => {\n let cachedPart = cachedAuthorityParts[index];\n if (\n index === 0 &&\n this.canReplaceTenant(cachedAuthorityUrlComponents)\n ) {\n const tenantId = new UrlString(\n this.metadata.authorization_endpoint\n ).getUrlComponents().PathSegments[0];\n /**\n * Check if AAD canonical authority contains tenant domain name, for example \"testdomain.onmicrosoft.com\",\n * by comparing its first path segment to the corresponding authorization endpoint path segment, which is\n * always resolved with tenant id by OIDC.\n */\n if (cachedPart !== tenantId) {\n this.logger.verbose(\n `Replacing tenant domain name ${cachedPart} with id ${tenantId}`\n );\n cachedPart = tenantId;\n }\n }\n if (currentPart !== cachedPart) {\n endpoint = endpoint.replace(\n `/${cachedPart}/`,\n `/${currentPart}/`\n );\n }\n });\n\n return this.replaceTenant(endpoint);\n }\n\n /**\n * The default open id configuration endpoint for any canonical authority.\n */\n protected get defaultOpenIdConfigurationEndpoint(): string {\n const canonicalAuthorityHost = this.hostnameAndPort;\n if (\n this.canonicalAuthority.endsWith(\"v2.0/\") ||\n this.authorityType === AuthorityType.Adfs ||\n (this.protocolMode !== ProtocolMode.AAD &&\n !this.isAliasOfKnownMicrosoftAuthority(canonicalAuthorityHost))\n ) {\n return `${this.canonicalAuthority}.well-known/openid-configuration`;\n }\n return `${this.canonicalAuthority}v2.0/.well-known/openid-configuration`;\n }\n\n /**\n * Boolean that returns whether or not tenant discovery has been completed.\n */\n discoveryComplete(): boolean {\n return !!this.metadata;\n }\n\n /**\n * Perform endpoint discovery to discover aliases, preferred_cache, preferred_network\n * and the /authorize, /token and logout endpoints.\n */\n public async resolveEndpointsAsync(): Promise {\n this.performanceClient?.addQueueMeasurement(\n PerformanceEvents.AuthorityResolveEndpointsAsync,\n this.correlationId\n );\n\n const metadataEntity = this.getCurrentMetadataEntity();\n\n const cloudDiscoverySource = await invokeAsync(\n this.updateCloudDiscoveryMetadata.bind(this),\n PerformanceEvents.AuthorityUpdateCloudDiscoveryMetadata,\n this.logger,\n this.performanceClient,\n this.correlationId\n )(metadataEntity);\n this.canonicalAuthority = this.canonicalAuthority.replace(\n this.hostnameAndPort,\n metadataEntity.preferred_network\n );\n const endpointSource = await invokeAsync(\n this.updateEndpointMetadata.bind(this),\n PerformanceEvents.AuthorityUpdateEndpointMetadata,\n this.logger,\n this.performanceClient,\n this.correlationId\n )(metadataEntity);\n this.updateCachedMetadata(metadataEntity, cloudDiscoverySource, {\n source: endpointSource,\n });\n this.performanceClient?.addFields(\n {\n cloudDiscoverySource: cloudDiscoverySource,\n authorityEndpointSource: endpointSource,\n },\n this.correlationId\n );\n }\n\n /**\n * Returns metadata entity from cache if it exists, otherwiser returns a new metadata entity built\n * from the configured canonical authority\n * @returns\n */\n private getCurrentMetadataEntity(): AuthorityMetadataEntity {\n let metadataEntity: AuthorityMetadataEntity | null =\n this.cacheManager.getAuthorityMetadataByAlias(this.hostnameAndPort);\n\n if (!metadataEntity) {\n metadataEntity = {\n aliases: [],\n preferred_cache: this.hostnameAndPort,\n preferred_network: this.hostnameAndPort,\n canonical_authority: this.canonicalAuthority,\n authorization_endpoint: \"\",\n token_endpoint: \"\",\n end_session_endpoint: \"\",\n issuer: \"\",\n aliasesFromNetwork: false,\n endpointsFromNetwork: false,\n expiresAt: CacheHelpers.generateAuthorityMetadataExpiresAt(),\n jwks_uri: \"\",\n };\n }\n return metadataEntity;\n }\n\n /**\n * Updates cached metadata based on metadata source and sets the instance's metadata\n * property to the same value\n * @param metadataEntity\n * @param cloudDiscoverySource\n * @param endpointMetadataResult\n */\n private updateCachedMetadata(\n metadataEntity: AuthorityMetadataEntity,\n cloudDiscoverySource: AuthorityMetadataSource | null,\n endpointMetadataResult: {\n source: AuthorityMetadataSource;\n metadata?: OpenIdConfigResponse;\n } | null\n ): void {\n if (\n cloudDiscoverySource !== AuthorityMetadataSource.CACHE &&\n endpointMetadataResult?.source !== AuthorityMetadataSource.CACHE\n ) {\n // Reset the expiration time unless both values came from a successful cache lookup\n metadataEntity.expiresAt =\n CacheHelpers.generateAuthorityMetadataExpiresAt();\n metadataEntity.canonical_authority = this.canonicalAuthority;\n }\n\n const cacheKey = this.cacheManager.generateAuthorityMetadataCacheKey(\n metadataEntity.preferred_cache\n );\n this.cacheManager.setAuthorityMetadata(cacheKey, metadataEntity);\n this.metadata = metadataEntity;\n }\n\n /**\n * Update AuthorityMetadataEntity with new endpoints and return where the information came from\n * @param metadataEntity\n */\n private async updateEndpointMetadata(\n metadataEntity: AuthorityMetadataEntity\n ): Promise {\n this.performanceClient?.addQueueMeasurement(\n PerformanceEvents.AuthorityUpdateEndpointMetadata,\n this.correlationId\n );\n\n const localMetadata =\n this.updateEndpointMetadataFromLocalSources(metadataEntity);\n\n // Further update may be required for hardcoded metadata if regional metadata is preferred\n if (localMetadata) {\n if (\n localMetadata.source ===\n AuthorityMetadataSource.HARDCODED_VALUES\n ) {\n // If the user prefers to use an azure region replace the global endpoints with regional information.\n if (\n this.authorityOptions.azureRegionConfiguration?.azureRegion\n ) {\n if (localMetadata.metadata) {\n const hardcodedMetadata = await invokeAsync(\n this.updateMetadataWithRegionalInformation.bind(\n this\n ),\n PerformanceEvents.AuthorityUpdateMetadataWithRegionalInformation,\n this.logger,\n this.performanceClient,\n this.correlationId\n )(localMetadata.metadata);\n CacheHelpers.updateAuthorityEndpointMetadata(\n metadataEntity,\n hardcodedMetadata,\n false\n );\n metadataEntity.canonical_authority =\n this.canonicalAuthority;\n }\n }\n }\n return localMetadata.source;\n }\n\n // Get metadata from network if local sources aren't available\n let metadata = await invokeAsync(\n this.getEndpointMetadataFromNetwork.bind(this),\n PerformanceEvents.AuthorityGetEndpointMetadataFromNetwork,\n this.logger,\n this.performanceClient,\n this.correlationId\n )();\n if (metadata) {\n // If the user prefers to use an azure region replace the global endpoints with regional information.\n if (this.authorityOptions.azureRegionConfiguration?.azureRegion) {\n metadata = await invokeAsync(\n this.updateMetadataWithRegionalInformation.bind(this),\n PerformanceEvents.AuthorityUpdateMetadataWithRegionalInformation,\n this.logger,\n this.performanceClient,\n this.correlationId\n )(metadata);\n }\n\n CacheHelpers.updateAuthorityEndpointMetadata(\n metadataEntity,\n metadata,\n true\n );\n return AuthorityMetadataSource.NETWORK;\n } else {\n // Metadata could not be obtained from the config, cache, network or hardcoded values\n throw createClientAuthError(\n ClientAuthErrorCodes.openIdConfigError,\n this.defaultOpenIdConfigurationEndpoint\n );\n }\n }\n\n /**\n * Updates endpoint metadata from local sources and returns where the information was retrieved from and the metadata config\n * response if the source is hardcoded metadata\n * @param metadataEntity\n * @returns\n */\n private updateEndpointMetadataFromLocalSources(\n metadataEntity: AuthorityMetadataEntity\n ): {\n source: AuthorityMetadataSource;\n metadata?: OpenIdConfigResponse;\n } | null {\n this.logger.verbose(\n \"Attempting to get endpoint metadata from authority configuration\"\n );\n const configMetadata = this.getEndpointMetadataFromConfig();\n if (configMetadata) {\n this.logger.verbose(\n \"Found endpoint metadata in authority configuration\"\n );\n CacheHelpers.updateAuthorityEndpointMetadata(\n metadataEntity,\n configMetadata,\n false\n );\n return {\n source: AuthorityMetadataSource.CONFIG,\n };\n }\n\n this.logger.verbose(\n \"Did not find endpoint metadata in the config... Attempting to get endpoint metadata from the hardcoded values.\"\n );\n\n // skipAuthorityMetadataCache is used to bypass hardcoded authority metadata and force a network metadata cache lookup and network metadata request if no cached response is available.\n if (this.authorityOptions.skipAuthorityMetadataCache) {\n this.logger.verbose(\n \"Skipping hardcoded metadata cache since skipAuthorityMetadataCache is set to true. Attempting to get endpoint metadata from the network metadata cache.\"\n );\n } else {\n const hardcodedMetadata =\n this.getEndpointMetadataFromHardcodedValues();\n if (hardcodedMetadata) {\n CacheHelpers.updateAuthorityEndpointMetadata(\n metadataEntity,\n hardcodedMetadata,\n false\n );\n return {\n source: AuthorityMetadataSource.HARDCODED_VALUES,\n metadata: hardcodedMetadata,\n };\n } else {\n this.logger.verbose(\n \"Did not find endpoint metadata in hardcoded values... Attempting to get endpoint metadata from the network metadata cache.\"\n );\n }\n }\n\n // Check cached metadata entity expiration status\n const metadataEntityExpired =\n CacheHelpers.isAuthorityMetadataExpired(metadataEntity);\n if (\n this.isAuthoritySameType(metadataEntity) &&\n metadataEntity.endpointsFromNetwork &&\n !metadataEntityExpired\n ) {\n // No need to update\n this.logger.verbose(\"Found endpoint metadata in the cache.\");\n return { source: AuthorityMetadataSource.CACHE };\n } else if (metadataEntityExpired) {\n this.logger.verbose(\"The metadata entity is expired.\");\n }\n\n return null;\n }\n\n /**\n * Compares the number of url components after the domain to determine if the cached\n * authority metadata can be used for the requested authority. Protects against same domain different\n * authority such as login.microsoftonline.com/tenant and login.microsoftonline.com/tfp/tenant/policy\n * @param metadataEntity\n */\n private isAuthoritySameType(\n metadataEntity: AuthorityMetadataEntity\n ): boolean {\n const cachedAuthorityUrl = new UrlString(\n metadataEntity.canonical_authority\n );\n const cachedParts = cachedAuthorityUrl.getUrlComponents().PathSegments;\n\n return (\n cachedParts.length ===\n this.canonicalAuthorityUrlComponents.PathSegments.length\n );\n }\n\n /**\n * Parse authorityMetadata config option\n */\n private getEndpointMetadataFromConfig(): OpenIdConfigResponse | null {\n if (this.authorityOptions.authorityMetadata) {\n try {\n return JSON.parse(\n this.authorityOptions.authorityMetadata\n ) as OpenIdConfigResponse;\n } catch (e) {\n throw createClientConfigurationError(\n ClientConfigurationErrorCodes.invalidAuthorityMetadata\n );\n }\n }\n\n return null;\n }\n\n /**\n * Gets OAuth endpoints from the given OpenID configuration endpoint.\n *\n * @param hasHardcodedMetadata boolean\n */\n private async getEndpointMetadataFromNetwork(): Promise {\n this.performanceClient?.addQueueMeasurement(\n PerformanceEvents.AuthorityGetEndpointMetadataFromNetwork,\n this.correlationId\n );\n\n const options: ImdsOptions = {};\n\n /*\n * TODO: Add a timeout if the authority exists in our library's\n * hardcoded list of metadata\n */\n\n const openIdConfigurationEndpoint =\n this.defaultOpenIdConfigurationEndpoint;\n this.logger.verbose(\n `Authority.getEndpointMetadataFromNetwork: attempting to retrieve OAuth endpoints from ${openIdConfigurationEndpoint}`\n );\n\n try {\n const response =\n await this.networkInterface.sendGetRequestAsync(\n openIdConfigurationEndpoint,\n options\n );\n const isValidResponse = isOpenIdConfigResponse(response.body);\n if (isValidResponse) {\n return response.body;\n } else {\n this.logger.verbose(\n `Authority.getEndpointMetadataFromNetwork: could not parse response as OpenID configuration`\n );\n return null;\n }\n } catch (e) {\n this.logger.verbose(\n `Authority.getEndpointMetadataFromNetwork: ${e}`\n );\n return null;\n }\n }\n\n /**\n * Get OAuth endpoints for common authorities.\n */\n private getEndpointMetadataFromHardcodedValues(): OpenIdConfigResponse | null {\n if (this.hostnameAndPort in EndpointMetadata) {\n return EndpointMetadata[this.hostnameAndPort];\n }\n\n return null;\n }\n\n /**\n * Update the retrieved metadata with regional information.\n * User selected Azure region will be used if configured.\n */\n private async updateMetadataWithRegionalInformation(\n metadata: OpenIdConfigResponse\n ): Promise {\n this.performanceClient?.addQueueMeasurement(\n PerformanceEvents.AuthorityUpdateMetadataWithRegionalInformation,\n this.correlationId\n );\n\n const userConfiguredAzureRegion =\n this.authorityOptions.azureRegionConfiguration?.azureRegion;\n\n if (userConfiguredAzureRegion) {\n if (\n userConfiguredAzureRegion !==\n Constants.AZURE_REGION_AUTO_DISCOVER_FLAG\n ) {\n this.regionDiscoveryMetadata.region_outcome =\n RegionDiscoveryOutcomes.CONFIGURED_NO_AUTO_DETECTION;\n this.regionDiscoveryMetadata.region_used =\n userConfiguredAzureRegion;\n return Authority.replaceWithRegionalInformation(\n metadata,\n userConfiguredAzureRegion\n );\n }\n\n const autodetectedRegionName = await invokeAsync(\n this.regionDiscovery.detectRegion.bind(this.regionDiscovery),\n PerformanceEvents.RegionDiscoveryDetectRegion,\n this.logger,\n this.performanceClient,\n this.correlationId\n )(\n this.authorityOptions.azureRegionConfiguration\n ?.environmentRegion,\n this.regionDiscoveryMetadata\n );\n\n if (autodetectedRegionName) {\n this.regionDiscoveryMetadata.region_outcome =\n RegionDiscoveryOutcomes.AUTO_DETECTION_REQUESTED_SUCCESSFUL;\n this.regionDiscoveryMetadata.region_used =\n autodetectedRegionName;\n return Authority.replaceWithRegionalInformation(\n metadata,\n autodetectedRegionName\n );\n }\n\n this.regionDiscoveryMetadata.region_outcome =\n RegionDiscoveryOutcomes.AUTO_DETECTION_REQUESTED_FAILED;\n }\n\n return metadata;\n }\n\n /**\n * Updates the AuthorityMetadataEntity with new aliases, preferred_network and preferred_cache\n * and returns where the information was retrieved from\n * @param metadataEntity\n * @returns AuthorityMetadataSource\n */\n private async updateCloudDiscoveryMetadata(\n metadataEntity: AuthorityMetadataEntity\n ): Promise {\n this.performanceClient?.addQueueMeasurement(\n PerformanceEvents.AuthorityUpdateCloudDiscoveryMetadata,\n this.correlationId\n );\n const localMetadataSource =\n this.updateCloudDiscoveryMetadataFromLocalSources(metadataEntity);\n if (localMetadataSource) {\n return localMetadataSource;\n }\n\n // Fallback to network as metadata source\n const metadata = await invokeAsync(\n this.getCloudDiscoveryMetadataFromNetwork.bind(this),\n PerformanceEvents.AuthorityGetCloudDiscoveryMetadataFromNetwork,\n this.logger,\n this.performanceClient,\n this.correlationId\n )();\n\n if (metadata) {\n CacheHelpers.updateCloudDiscoveryMetadata(\n metadataEntity,\n metadata,\n true\n );\n return AuthorityMetadataSource.NETWORK;\n }\n\n // Metadata could not be obtained from the config, cache, network or hardcoded values\n throw createClientConfigurationError(\n ClientConfigurationErrorCodes.untrustedAuthority\n );\n }\n\n private updateCloudDiscoveryMetadataFromLocalSources(\n metadataEntity: AuthorityMetadataEntity\n ): AuthorityMetadataSource | null {\n this.logger.verbose(\n \"Attempting to get cloud discovery metadata from authority configuration\"\n );\n this.logger.verbosePii(\n `Known Authorities: ${\n this.authorityOptions.knownAuthorities ||\n Constants.NOT_APPLICABLE\n }`\n );\n this.logger.verbosePii(\n `Authority Metadata: ${\n this.authorityOptions.authorityMetadata ||\n Constants.NOT_APPLICABLE\n }`\n );\n this.logger.verbosePii(\n `Canonical Authority: ${\n metadataEntity.canonical_authority || Constants.NOT_APPLICABLE\n }`\n );\n const metadata = this.getCloudDiscoveryMetadataFromConfig();\n if (metadata) {\n this.logger.verbose(\n \"Found cloud discovery metadata in authority configuration\"\n );\n CacheHelpers.updateCloudDiscoveryMetadata(\n metadataEntity,\n metadata,\n false\n );\n return AuthorityMetadataSource.CONFIG;\n }\n\n // If the cached metadata came from config but that config was not passed to this instance, we must go to hardcoded values\n this.logger.verbose(\n \"Did not find cloud discovery metadata in the config... Attempting to get cloud discovery metadata from the hardcoded values.\"\n );\n\n if (this.options.skipAuthorityMetadataCache) {\n this.logger.verbose(\n \"Skipping hardcoded cloud discovery metadata cache since skipAuthorityMetadataCache is set to true. Attempting to get cloud discovery metadata from the network metadata cache.\"\n );\n } else {\n const hardcodedMetadata =\n getCloudDiscoveryMetadataFromHardcodedValues(\n this.hostnameAndPort\n );\n if (hardcodedMetadata) {\n this.logger.verbose(\n \"Found cloud discovery metadata from hardcoded values.\"\n );\n CacheHelpers.updateCloudDiscoveryMetadata(\n metadataEntity,\n hardcodedMetadata,\n false\n );\n return AuthorityMetadataSource.HARDCODED_VALUES;\n }\n\n this.logger.verbose(\n \"Did not find cloud discovery metadata in hardcoded values... Attempting to get cloud discovery metadata from the network metadata cache.\"\n );\n }\n\n const metadataEntityExpired =\n CacheHelpers.isAuthorityMetadataExpired(metadataEntity);\n if (\n this.isAuthoritySameType(metadataEntity) &&\n metadataEntity.aliasesFromNetwork &&\n !metadataEntityExpired\n ) {\n this.logger.verbose(\"Found cloud discovery metadata in the cache.\");\n // No need to update\n return AuthorityMetadataSource.CACHE;\n } else if (metadataEntityExpired) {\n this.logger.verbose(\"The metadata entity is expired.\");\n }\n\n return null;\n }\n\n /**\n * Parse cloudDiscoveryMetadata config or check knownAuthorities\n */\n private getCloudDiscoveryMetadataFromConfig(): CloudDiscoveryMetadata | null {\n // CIAM does not support cloud discovery metadata\n if (this.authorityType === AuthorityType.Ciam) {\n this.logger.verbose(\n \"CIAM authorities do not support cloud discovery metadata, generate the aliases from authority host.\"\n );\n return Authority.createCloudDiscoveryMetadataFromHost(\n this.hostnameAndPort\n );\n }\n\n // Check if network response was provided in config\n if (this.authorityOptions.cloudDiscoveryMetadata) {\n this.logger.verbose(\n \"The cloud discovery metadata has been provided as a network response, in the config.\"\n );\n try {\n this.logger.verbose(\n \"Attempting to parse the cloud discovery metadata.\"\n );\n const parsedResponse = JSON.parse(\n this.authorityOptions.cloudDiscoveryMetadata\n ) as CloudInstanceDiscoveryResponse;\n const metadata = getCloudDiscoveryMetadataFromNetworkResponse(\n parsedResponse.metadata,\n this.hostnameAndPort\n );\n this.logger.verbose(\"Parsed the cloud discovery metadata.\");\n if (metadata) {\n this.logger.verbose(\n \"There is returnable metadata attached to the parsed cloud discovery metadata.\"\n );\n return metadata;\n } else {\n this.logger.verbose(\n \"There is no metadata attached to the parsed cloud discovery metadata.\"\n );\n }\n } catch (e) {\n this.logger.verbose(\n \"Unable to parse the cloud discovery metadata. Throwing Invalid Cloud Discovery Metadata Error.\"\n );\n throw createClientConfigurationError(\n ClientConfigurationErrorCodes.invalidCloudDiscoveryMetadata\n );\n }\n }\n\n // If cloudDiscoveryMetadata is empty or does not contain the host, check knownAuthorities\n if (this.isInKnownAuthorities()) {\n this.logger.verbose(\n \"The host is included in knownAuthorities. Creating new cloud discovery metadata from the host.\"\n );\n return Authority.createCloudDiscoveryMetadataFromHost(\n this.hostnameAndPort\n );\n }\n\n return null;\n }\n\n /**\n * Called to get metadata from network if CloudDiscoveryMetadata was not populated by config\n *\n * @param hasHardcodedMetadata boolean\n */\n private async getCloudDiscoveryMetadataFromNetwork(): Promise {\n this.performanceClient?.addQueueMeasurement(\n PerformanceEvents.AuthorityGetCloudDiscoveryMetadataFromNetwork,\n this.correlationId\n );\n const instanceDiscoveryEndpoint = `${Constants.AAD_INSTANCE_DISCOVERY_ENDPT}${this.canonicalAuthority}oauth2/v2.0/authorize`;\n const options: ImdsOptions = {};\n\n /*\n * TODO: Add a timeout if the authority exists in our library's\n * hardcoded list of metadata\n */\n\n let match = null;\n try {\n const response = await this.networkInterface.sendGetRequestAsync<\n | CloudInstanceDiscoveryResponse\n | CloudInstanceDiscoveryErrorResponse\n >(instanceDiscoveryEndpoint, options);\n let typedResponseBody:\n | CloudInstanceDiscoveryResponse\n | CloudInstanceDiscoveryErrorResponse;\n let metadata: Array;\n if (isCloudInstanceDiscoveryResponse(response.body)) {\n typedResponseBody =\n response.body as CloudInstanceDiscoveryResponse;\n metadata = typedResponseBody.metadata;\n\n this.logger.verbosePii(\n `tenant_discovery_endpoint is: ${typedResponseBody.tenant_discovery_endpoint}`\n );\n } else if (isCloudInstanceDiscoveryErrorResponse(response.body)) {\n this.logger.warning(\n `A CloudInstanceDiscoveryErrorResponse was returned. The cloud instance discovery network request's status code is: ${response.status}`\n );\n\n typedResponseBody =\n response.body as CloudInstanceDiscoveryErrorResponse;\n if (typedResponseBody.error === Constants.INVALID_INSTANCE) {\n this.logger.error(\n \"The CloudInstanceDiscoveryErrorResponse error is invalid_instance.\"\n );\n return null;\n }\n\n this.logger.warning(\n `The CloudInstanceDiscoveryErrorResponse error is ${typedResponseBody.error}`\n );\n this.logger.warning(\n `The CloudInstanceDiscoveryErrorResponse error description is ${typedResponseBody.error_description}`\n );\n\n this.logger.warning(\n \"Setting the value of the CloudInstanceDiscoveryMetadata (returned from the network) to []\"\n );\n metadata = [];\n } else {\n this.logger.error(\n \"AAD did not return a CloudInstanceDiscoveryResponse or CloudInstanceDiscoveryErrorResponse\"\n );\n return null;\n }\n\n this.logger.verbose(\n \"Attempting to find a match between the developer's authority and the CloudInstanceDiscoveryMetadata returned from the network request.\"\n );\n match = getCloudDiscoveryMetadataFromNetworkResponse(\n metadata,\n this.hostnameAndPort\n );\n } catch (error) {\n if (error instanceof AuthError) {\n this.logger.error(\n `There was a network error while attempting to get the cloud discovery instance metadata.\\nError: ${error.errorCode}\\nError Description: ${error.errorMessage}`\n );\n } else {\n const typedError = error as Error;\n this.logger.error(\n `A non-MSALJS error was thrown while attempting to get the cloud instance discovery metadata.\\nError: ${typedError.name}\\nError Description: ${typedError.message}`\n );\n }\n\n return null;\n }\n\n // Custom Domain scenario, host is trusted because Instance Discovery call succeeded\n if (!match) {\n this.logger.warning(\n \"The developer's authority was not found within the CloudInstanceDiscoveryMetadata returned from the network request.\"\n );\n this.logger.verbose(\n \"Creating custom Authority for custom domain scenario.\"\n );\n\n match = Authority.createCloudDiscoveryMetadataFromHost(\n this.hostnameAndPort\n );\n }\n return match;\n }\n\n /**\n * Helper function to determine if this host is included in the knownAuthorities config option\n */\n private isInKnownAuthorities(): boolean {\n const matches = this.authorityOptions.knownAuthorities.filter(\n (authority) => {\n return (\n authority &&\n UrlString.getDomainFromUrl(authority).toLowerCase() ===\n this.hostnameAndPort\n );\n }\n );\n return matches.length > 0;\n }\n\n /**\n * helper function to populate the authority based on azureCloudOptions\n * @param authorityString\n * @param azureCloudOptions\n */\n static generateAuthority(\n authorityString: string,\n azureCloudOptions?: AzureCloudOptions\n ): string {\n let authorityAzureCloudInstance;\n\n if (\n azureCloudOptions &&\n azureCloudOptions.azureCloudInstance !== AzureCloudInstance.None\n ) {\n const tenant = azureCloudOptions.tenant\n ? azureCloudOptions.tenant\n : Constants.DEFAULT_COMMON_TENANT;\n authorityAzureCloudInstance = `${azureCloudOptions.azureCloudInstance}/${tenant}/`;\n }\n\n return authorityAzureCloudInstance\n ? authorityAzureCloudInstance\n : authorityString;\n }\n\n /**\n * Creates cloud discovery metadata object from a given host\n * @param host\n */\n static createCloudDiscoveryMetadataFromHost(\n host: string\n ): CloudDiscoveryMetadata {\n return {\n preferred_network: host,\n preferred_cache: host,\n aliases: [host],\n };\n }\n\n /**\n * helper function to generate environment from authority object\n */\n getPreferredCache(): string {\n if (this.managedIdentity) {\n return Constants.DEFAULT_AUTHORITY_HOST;\n } else if (this.discoveryComplete()) {\n return this.metadata.preferred_cache;\n } else {\n throw createClientAuthError(\n ClientAuthErrorCodes.endpointResolutionError\n );\n }\n }\n\n /**\n * Returns whether or not the provided host is an alias of this authority instance\n * @param host\n */\n isAlias(host: string): boolean {\n return this.metadata.aliases.indexOf(host) > -1;\n }\n\n /**\n * Returns whether or not the provided host is an alias of a known Microsoft authority for purposes of endpoint discovery\n * @param host\n */\n isAliasOfKnownMicrosoftAuthority(host: string): boolean {\n return InstanceDiscoveryMetadataAliases.has(host);\n }\n\n /**\n * Checks whether the provided host is that of a public cloud authority\n *\n * @param authority string\n * @returns bool\n */\n static isPublicCloudAuthority(host: string): boolean {\n return Constants.KNOWN_PUBLIC_CLOUDS.indexOf(host) >= 0;\n }\n\n /**\n * Rebuild the authority string with the region\n *\n * @param host string\n * @param region string\n */\n static buildRegionalAuthorityString(\n host: string,\n region: string,\n queryString?: string\n ): string {\n // Create and validate a Url string object with the initial authority string\n const authorityUrlInstance = new UrlString(host);\n authorityUrlInstance.validateAsUri();\n\n const authorityUrlParts = authorityUrlInstance.getUrlComponents();\n\n let hostNameAndPort = `${region}.${authorityUrlParts.HostNameAndPort}`;\n\n if (this.isPublicCloudAuthority(authorityUrlParts.HostNameAndPort)) {\n hostNameAndPort = `${region}.${Constants.REGIONAL_AUTH_PUBLIC_CLOUD_SUFFIX}`;\n }\n\n // Include the query string portion of the url\n const url = UrlString.constructAuthorityUriFromObject({\n ...authorityUrlInstance.getUrlComponents(),\n HostNameAndPort: hostNameAndPort,\n }).urlString;\n\n // Add the query string if a query string was provided\n if (queryString) return `${url}?${queryString}`;\n\n return url;\n }\n\n /**\n * Replace the endpoints in the metadata object with their regional equivalents.\n *\n * @param metadata OpenIdConfigResponse\n * @param azureRegion string\n */\n static replaceWithRegionalInformation(\n metadata: OpenIdConfigResponse,\n azureRegion: string\n ): OpenIdConfigResponse {\n const regionalMetadata = { ...metadata };\n regionalMetadata.authorization_endpoint =\n Authority.buildRegionalAuthorityString(\n regionalMetadata.authorization_endpoint,\n azureRegion\n );\n\n regionalMetadata.token_endpoint =\n Authority.buildRegionalAuthorityString(\n regionalMetadata.token_endpoint,\n azureRegion\n );\n\n if (regionalMetadata.end_session_endpoint) {\n regionalMetadata.end_session_endpoint =\n Authority.buildRegionalAuthorityString(\n regionalMetadata.end_session_endpoint,\n azureRegion\n );\n }\n\n return regionalMetadata;\n }\n\n /**\n * Transform CIAM_AUTHORIY as per the below rules:\n * If no path segments found and it is a CIAM authority (hostname ends with .ciamlogin.com), then transform it\n *\n * NOTE: The transformation path should go away once STS supports CIAM with the format: `tenantIdorDomain.ciamlogin.com`\n * `ciamlogin.com` can also change in the future and we should accommodate the same\n *\n * @param authority\n */\n static transformCIAMAuthority(authority: string): string {\n let ciamAuthority = authority;\n const authorityUrl = new UrlString(authority);\n const authorityUrlComponents = authorityUrl.getUrlComponents();\n\n // check if transformation is needed\n if (\n authorityUrlComponents.PathSegments.length === 0 &&\n authorityUrlComponents.HostNameAndPort.endsWith(\n Constants.CIAM_AUTH_URL\n )\n ) {\n const tenantIdOrDomain =\n authorityUrlComponents.HostNameAndPort.split(\".\")[0];\n ciamAuthority = `${ciamAuthority}${tenantIdOrDomain}${Constants.AAD_TENANT_DOMAIN_SUFFIX}`;\n }\n\n return ciamAuthority;\n }\n}\n\n/**\n * Extract tenantId from authority\n */\nexport function getTenantFromAuthorityString(\n authority: string\n): string | undefined {\n const authorityUrl = new UrlString(authority);\n const authorityUrlComponents = authorityUrl.getUrlComponents();\n /**\n * For credential matching purposes, tenantId is the last path segment of the authority URL:\n * AAD Authority - domain/tenantId -> Credentials are cached with realm = tenantId\n * B2C Authority - domain/{tenantId}?/.../policy -> Credentials are cached with realm = policy\n * tenantId is downcased because B2C policies can have mixed case but tfp claim is downcased\n *\n * Note that we may not have any path segments in certain OIDC scenarios.\n */\n const tenantId =\n authorityUrlComponents.PathSegments.slice(-1)[0]?.toLowerCase();\n\n switch (tenantId) {\n case AADAuthorityConstants.COMMON:\n case AADAuthorityConstants.ORGANIZATIONS:\n case AADAuthorityConstants.CONSUMERS:\n return undefined;\n default:\n return tenantId;\n }\n}\n\nexport function formatAuthorityUri(authorityUri: string): string {\n return authorityUri.endsWith(Constants.FORWARD_SLASH)\n ? authorityUri\n : `${authorityUri}${Constants.FORWARD_SLASH}`;\n}\n\nexport function buildStaticAuthorityOptions(\n authOptions: Partial\n): StaticAuthorityOptions {\n const rawCloudDiscoveryMetadata = authOptions.cloudDiscoveryMetadata;\n let cloudDiscoveryMetadata: CloudInstanceDiscoveryResponse | undefined =\n undefined;\n if (rawCloudDiscoveryMetadata) {\n try {\n cloudDiscoveryMetadata = JSON.parse(rawCloudDiscoveryMetadata);\n } catch (e) {\n throw createClientConfigurationError(\n ClientConfigurationErrorCodes.invalidCloudDiscoveryMetadata\n );\n }\n }\n return {\n canonicalAuthority: authOptions.authority\n ? formatAuthorityUri(authOptions.authority)\n : undefined,\n knownAuthorities: authOptions.knownAuthorities,\n cloudDiscoveryMetadata: cloudDiscoveryMetadata,\n };\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\n/**\n * Tenant Discovery Response which contains the relevant OAuth endpoints and data needed for authentication and authorization.\n */\nexport type OpenIdConfigResponse = {\n authorization_endpoint: string;\n token_endpoint: string;\n end_session_endpoint?: string;\n issuer: string;\n jwks_uri: string;\n};\n\nexport function isOpenIdConfigResponse(response: object): boolean {\n return (\n response.hasOwnProperty(\"authorization_endpoint\") &&\n response.hasOwnProperty(\"token_endpoint\") &&\n response.hasOwnProperty(\"issuer\") &&\n response.hasOwnProperty(\"jwks_uri\")\n );\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { CloudDiscoveryMetadata } from \"./CloudDiscoveryMetadata.js\";\n\n/**\n * The OpenID Configuration Endpoint Response type. Used by the authority class to get relevant OAuth endpoints.\n */\nexport type CloudInstanceDiscoveryResponse = {\n tenant_discovery_endpoint: string;\n metadata: Array;\n};\n\nexport function isCloudInstanceDiscoveryResponse(response: object): boolean {\n return (\n response.hasOwnProperty(\"tenant_discovery_endpoint\") &&\n response.hasOwnProperty(\"metadata\")\n );\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\n/**\n * The OpenID Configuration Endpoint Response type. Used by the authority class to get relevant OAuth endpoints.\n */\nexport type CloudInstanceDiscoveryErrorResponse = {\n error: String;\n error_description: String;\n error_codes?: Array;\n timestamp?: String;\n trace_id?: String;\n correlation_id?: String;\n error_uri?: String;\n};\n\nexport function isCloudInstanceDiscoveryErrorResponse(\n response: object\n): boolean {\n return (\n response.hasOwnProperty(\"error\") &&\n response.hasOwnProperty(\"error_description\")\n );\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\n// Codes defined by MSAL\nexport const noTokensFound = \"no_tokens_found\";\nexport const nativeAccountUnavailable = \"native_account_unavailable\";\nexport const refreshTokenExpired = \"refresh_token_expired\";\n\n// Codes potentially returned by server\nexport const interactionRequired = \"interaction_required\";\nexport const consentRequired = \"consent_required\";\nexport const loginRequired = \"login_required\";\nexport const badToken = \"bad_token\";\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { Constants } from \"../utils/Constants.js\";\nimport { AuthError } from \"./AuthError.js\";\nimport * as InteractionRequiredAuthErrorCodes from \"./InteractionRequiredAuthErrorCodes.js\";\nexport { InteractionRequiredAuthErrorCodes };\n\n/**\n * InteractionRequiredServerErrorMessage contains string constants used by error codes and messages returned by the server indicating interaction is required\n */\nexport const InteractionRequiredServerErrorMessage = [\n InteractionRequiredAuthErrorCodes.interactionRequired,\n InteractionRequiredAuthErrorCodes.consentRequired,\n InteractionRequiredAuthErrorCodes.loginRequired,\n InteractionRequiredAuthErrorCodes.badToken,\n];\n\nexport const InteractionRequiredAuthSubErrorMessage = [\n \"message_only\",\n \"additional_action\",\n \"basic_action\",\n \"user_password_expired\",\n \"consent_required\",\n \"bad_token\",\n];\n\nconst InteractionRequiredAuthErrorMessages = {\n [InteractionRequiredAuthErrorCodes.noTokensFound]:\n \"No refresh token found in the cache. Please sign-in.\",\n [InteractionRequiredAuthErrorCodes.nativeAccountUnavailable]:\n \"The requested account is not available in the native broker. It may have been deleted or logged out. Please sign-in again using an interactive API.\",\n [InteractionRequiredAuthErrorCodes.refreshTokenExpired]:\n \"Refresh token has expired.\",\n [InteractionRequiredAuthErrorCodes.badToken]:\n \"Identity provider returned bad_token due to an expired or invalid refresh token. Please invoke an interactive API to resolve.\",\n};\n\n/**\n * Interaction required errors defined by the SDK\n * @deprecated Use InteractionRequiredAuthErrorCodes instead\n */\nexport const InteractionRequiredAuthErrorMessage = {\n noTokensFoundError: {\n code: InteractionRequiredAuthErrorCodes.noTokensFound,\n desc: InteractionRequiredAuthErrorMessages[\n InteractionRequiredAuthErrorCodes.noTokensFound\n ],\n },\n native_account_unavailable: {\n code: InteractionRequiredAuthErrorCodes.nativeAccountUnavailable,\n desc: InteractionRequiredAuthErrorMessages[\n InteractionRequiredAuthErrorCodes.nativeAccountUnavailable\n ],\n },\n bad_token: {\n code: InteractionRequiredAuthErrorCodes.badToken,\n desc: InteractionRequiredAuthErrorMessages[\n InteractionRequiredAuthErrorCodes.badToken\n ],\n },\n};\n\n/**\n * Error thrown when user interaction is required.\n */\nexport class InteractionRequiredAuthError extends AuthError {\n /**\n * The time the error occured at\n */\n timestamp: string;\n\n /**\n * TraceId associated with the error\n */\n traceId: string;\n\n /**\n * https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-common/docs/claims-challenge.md\n *\n * A string with extra claims needed for the token request to succeed\n * web site: redirect the user to the authorization page and set the extra claims\n * web api: include the claims in the WWW-Authenticate header that are sent back to the client so that it knows to request a token with the extra claims\n * desktop application or browser context: include the claims when acquiring the token interactively\n * app to app context (client_credentials): include the claims in the AcquireTokenByClientCredential request\n */\n claims: string;\n\n /**\n * Server error number;\n */\n readonly errorNo?: string;\n\n constructor(\n errorCode?: string,\n errorMessage?: string,\n subError?: string,\n timestamp?: string,\n traceId?: string,\n correlationId?: string,\n claims?: string,\n errorNo?: string\n ) {\n super(errorCode, errorMessage, subError);\n Object.setPrototypeOf(this, InteractionRequiredAuthError.prototype);\n\n this.timestamp = timestamp || Constants.EMPTY_STRING;\n this.traceId = traceId || Constants.EMPTY_STRING;\n this.correlationId = correlationId || Constants.EMPTY_STRING;\n this.claims = claims || Constants.EMPTY_STRING;\n this.name = \"InteractionRequiredAuthError\";\n this.errorNo = errorNo;\n }\n}\n\n/**\n * Helper function used to determine if an error thrown by the server requires interaction to resolve\n * @param errorCode\n * @param errorString\n * @param subError\n */\nexport function isInteractionRequiredError(\n errorCode?: string,\n errorString?: string,\n subError?: string\n): boolean {\n const isInteractionRequiredErrorCode =\n !!errorCode &&\n InteractionRequiredServerErrorMessage.indexOf(errorCode) > -1;\n const isInteractionRequiredSubError =\n !!subError &&\n InteractionRequiredAuthSubErrorMessage.indexOf(subError) > -1;\n const isInteractionRequiredErrorDesc =\n !!errorString &&\n InteractionRequiredServerErrorMessage.some((irErrorCode) => {\n return errorString.indexOf(irErrorCode) > -1;\n });\n\n return (\n isInteractionRequiredErrorCode ||\n isInteractionRequiredErrorDesc ||\n isInteractionRequiredSubError\n );\n}\n\n/**\n * Creates an InteractionRequiredAuthError\n */\nexport function createInteractionRequiredAuthError(\n errorCode: string\n): InteractionRequiredAuthError {\n return new InteractionRequiredAuthError(\n errorCode,\n InteractionRequiredAuthErrorMessages[errorCode]\n );\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { Constants } from \"./Constants.js\";\nimport { ICrypto } from \"../crypto/ICrypto.js\";\nimport {\n ClientAuthErrorCodes,\n createClientAuthError,\n} from \"../error/ClientAuthError.js\";\n\n/**\n * Type which defines the object that is stringified, encoded and sent in the state value.\n * Contains the following:\n * - id - unique identifier for this request\n * - ts - timestamp for the time the request was made. Used to ensure that token expiration is not calculated incorrectly.\n * - platformState - string value sent from the platform.\n */\nexport type LibraryStateObject = {\n id: string;\n meta?: Record;\n};\n\n/**\n * Type which defines the stringified and encoded object sent to the service in the authorize request.\n */\nexport type RequestStateObject = {\n userRequestState: string;\n libraryState: LibraryStateObject;\n};\n\n/**\n * Class which provides helpers for OAuth 2.0 protocol specific values\n */\nexport class ProtocolUtils {\n /**\n * Appends user state with random guid, or returns random guid.\n * @param userState\n * @param randomGuid\n */\n static setRequestState(\n cryptoObj: ICrypto,\n userState?: string,\n meta?: Record\n ): string {\n const libraryState = ProtocolUtils.generateLibraryState(\n cryptoObj,\n meta\n );\n return userState\n ? `${libraryState}${Constants.RESOURCE_DELIM}${userState}`\n : libraryState;\n }\n\n /**\n * Generates the state value used by the common library.\n * @param randomGuid\n * @param cryptoObj\n */\n static generateLibraryState(\n cryptoObj: ICrypto,\n meta?: Record\n ): string {\n if (!cryptoObj) {\n throw createClientAuthError(ClientAuthErrorCodes.noCryptoObject);\n }\n\n // Create a state object containing a unique id and the timestamp of the request creation\n const stateObj: LibraryStateObject = {\n id: cryptoObj.createNewGuid(),\n };\n\n if (meta) {\n stateObj.meta = meta;\n }\n\n const stateString = JSON.stringify(stateObj);\n\n return cryptoObj.base64Encode(stateString);\n }\n\n /**\n * Parses the state into the RequestStateObject, which contains the LibraryState info and the state passed by the user.\n * @param state\n * @param cryptoObj\n */\n static parseRequestState(\n cryptoObj: ICrypto,\n state: string\n ): RequestStateObject {\n if (!cryptoObj) {\n throw createClientAuthError(ClientAuthErrorCodes.noCryptoObject);\n }\n\n if (!state) {\n throw createClientAuthError(ClientAuthErrorCodes.invalidState);\n }\n\n try {\n // Split the state between library state and user passed state and decode them separately\n const splitState = state.split(Constants.RESOURCE_DELIM);\n const libraryState = splitState[0];\n const userState =\n splitState.length > 1\n ? splitState.slice(1).join(Constants.RESOURCE_DELIM)\n : Constants.EMPTY_STRING;\n const libraryStateString = cryptoObj.base64Decode(libraryState);\n const libraryStateObj = JSON.parse(\n libraryStateString\n ) as LibraryStateObject;\n return {\n userRequestState: userState || Constants.EMPTY_STRING,\n libraryState: libraryStateObj,\n };\n } catch (e) {\n throw createClientAuthError(ClientAuthErrorCodes.invalidState);\n }\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nexport type CcsCredential = {\n credential: string;\n type: CcsCredentialType;\n};\n\nexport const CcsCredentialType = {\n HOME_ACCOUNT_ID: \"home_account_id\",\n UPN: \"UPN\",\n} as const;\nexport type CcsCredentialType =\n (typeof CcsCredentialType)[keyof typeof CcsCredentialType];\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport {\n BrowserConfigurationAuthErrorCodes,\n createBrowserConfigurationAuthError,\n} from \"../error/BrowserConfigurationAuthError.js\";\nimport { IWindowStorage } from \"./IWindowStorage.js\";\n\nexport class LocalStorage implements IWindowStorage {\n constructor() {\n if (!window.localStorage) {\n throw createBrowserConfigurationAuthError(\n BrowserConfigurationAuthErrorCodes.storageNotSupported\n );\n }\n }\n\n getItem(key: string): string | null {\n return window.localStorage.getItem(key);\n }\n\n setItem(key: string, value: string): void {\n window.localStorage.setItem(key, value);\n }\n\n removeItem(key: string): void {\n window.localStorage.removeItem(key);\n }\n\n getKeys(): string[] {\n return Object.keys(window.localStorage);\n }\n\n containsKey(key: string): boolean {\n return window.localStorage.hasOwnProperty(key);\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport {\n BrowserConfigurationAuthErrorCodes,\n createBrowserConfigurationAuthError,\n} from \"../error/BrowserConfigurationAuthError.js\";\nimport { IWindowStorage } from \"./IWindowStorage.js\";\n\nexport class SessionStorage implements IWindowStorage {\n constructor() {\n if (!window.sessionStorage) {\n throw createBrowserConfigurationAuthError(\n BrowserConfigurationAuthErrorCodes.storageNotSupported\n );\n }\n }\n\n getItem(key: string): string | null {\n return window.sessionStorage.getItem(key);\n }\n\n setItem(key: string, value: string): void {\n window.sessionStorage.setItem(key, value);\n }\n\n removeItem(key: string): void {\n window.sessionStorage.removeItem(key);\n }\n\n getKeys(): string[] {\n return Object.keys(window.sessionStorage);\n }\n\n containsKey(key: string): boolean {\n return window.sessionStorage.hasOwnProperty(key);\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { InteractionType } from \"./BrowserConstants.js\";\nimport {\n ICrypto,\n RequestStateObject,\n ProtocolUtils,\n createClientAuthError,\n ClientAuthErrorCodes,\n} from \"@azure/msal-common/browser\";\n\nexport type BrowserStateObject = {\n interactionType: InteractionType;\n};\n\n/**\n * Extracts the BrowserStateObject from the state string.\n * @param browserCrypto\n * @param state\n */\nexport function extractBrowserRequestState(\n browserCrypto: ICrypto,\n state: string\n): BrowserStateObject | null {\n if (!state) {\n return null;\n }\n\n try {\n const requestStateObj: RequestStateObject =\n ProtocolUtils.parseRequestState(browserCrypto, state);\n return requestStateObj.libraryState.meta as BrowserStateObject;\n } catch (e) {\n throw createClientAuthError(ClientAuthErrorCodes.invalidState);\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { IWindowStorage } from \"./IWindowStorage.js\";\n\n// Cookie life calculation (hours * minutes * seconds * ms)\nconst COOKIE_LIFE_MULTIPLIER = 24 * 60 * 60 * 1000;\n\nexport class CookieStorage implements IWindowStorage {\n getItem(key: string): string | null {\n const name = `${encodeURIComponent(key)}`;\n const cookieList = document.cookie.split(\";\");\n for (let i = 0; i < cookieList.length; i++) {\n const cookie = cookieList[i];\n const [key, ...rest] = decodeURIComponent(cookie).trim().split(\"=\");\n const value = rest.join(\"=\");\n\n if (key === name) {\n return value;\n }\n }\n return \"\";\n }\n\n setItem(\n key: string,\n value: string,\n cookieLifeDays?: number,\n secure: boolean = true\n ): void {\n let cookieStr = `${encodeURIComponent(key)}=${encodeURIComponent(\n value\n )};path=/;SameSite=Lax;`;\n\n if (cookieLifeDays) {\n const expireTime = getCookieExpirationTime(cookieLifeDays);\n cookieStr += `expires=${expireTime};`;\n }\n\n if (secure) {\n cookieStr += \"Secure;\";\n }\n\n document.cookie = cookieStr;\n }\n\n removeItem(key: string): void {\n // Setting expiration to -1 removes it\n this.setItem(key, \"\", -1);\n }\n\n getKeys(): string[] {\n const cookieList = document.cookie.split(\";\");\n const keys: Array = [];\n cookieList.forEach((cookie) => {\n const cookieParts = decodeURIComponent(cookie).trim().split(\"=\");\n keys.push(cookieParts[0]);\n });\n\n return keys;\n }\n\n containsKey(key: string): boolean {\n return this.getKeys().includes(key);\n }\n}\n\n/**\n * Get cookie expiration time\n * @param cookieLifeDays\n */\nexport function getCookieExpirationTime(cookieLifeDays: number): string {\n const today = new Date();\n const expr = new Date(\n today.getTime() + cookieLifeDays * COOKIE_LIFE_MULTIPLIER\n );\n return expr.toUTCString();\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport {\n Constants,\n PersistentCacheKeys,\n StringUtils,\n CommonAuthorizationCodeRequest,\n ICrypto,\n AccountEntity,\n IdTokenEntity,\n AccessTokenEntity,\n RefreshTokenEntity,\n AppMetadataEntity,\n CacheManager,\n ServerTelemetryEntity,\n ThrottlingEntity,\n ProtocolUtils,\n Logger,\n AuthorityMetadataEntity,\n DEFAULT_CRYPTO_IMPLEMENTATION,\n AccountInfo,\n ActiveAccountFilters,\n CcsCredential,\n CcsCredentialType,\n AuthToken,\n ValidCredentialType,\n TokenKeys,\n CredentialType,\n CacheRecord,\n AuthenticationScheme,\n createClientAuthError,\n ClientAuthErrorCodes,\n PerformanceEvents,\n IPerformanceClient,\n StaticAuthorityOptions,\n CacheHelpers,\n StoreInCache,\n CacheError,\n} from \"@azure/msal-common/browser\";\nimport { CacheOptions } from \"../config/Configuration.js\";\nimport {\n createBrowserAuthError,\n BrowserAuthErrorCodes,\n} from \"../error/BrowserAuthError.js\";\nimport {\n BrowserCacheLocation,\n InteractionType,\n TemporaryCacheKeys,\n InMemoryCacheKeys,\n StaticCacheKeys,\n} from \"../utils/BrowserConstants.js\";\nimport { LocalStorage } from \"./LocalStorage.js\";\nimport { SessionStorage } from \"./SessionStorage.js\";\nimport { MemoryStorage } from \"./MemoryStorage.js\";\nimport { IWindowStorage } from \"./IWindowStorage.js\";\nimport { extractBrowserRequestState } from \"../utils/BrowserProtocolUtils.js\";\nimport { NativeTokenRequest } from \"../broker/nativeBroker/NativeRequest.js\";\nimport { AuthenticationResult } from \"../response/AuthenticationResult.js\";\nimport { SilentRequest } from \"../request/SilentRequest.js\";\nimport { SsoSilentRequest } from \"../request/SsoSilentRequest.js\";\nimport { RedirectRequest } from \"../request/RedirectRequest.js\";\nimport { PopupRequest } from \"../request/PopupRequest.js\";\nimport { base64Decode } from \"../encode/Base64Decode.js\";\nimport { base64Encode } from \"../encode/Base64Encode.js\";\nimport { CookieStorage } from \"./CookieStorage.js\";\n\n/**\n * This class implements the cache storage interface for MSAL through browser local or session storage.\n * Cookies are only used if storeAuthStateInCookie is true, and are only used for\n * parameters such as state and nonce, generally.\n */\nexport class BrowserCacheManager extends CacheManager {\n // Cache configuration, either set by user or default values.\n protected cacheConfig: Required;\n // Window storage object (either local or sessionStorage)\n protected browserStorage: IWindowStorage;\n // Internal in-memory storage object used for data used by msal that does not need to persist across page loads\n protected internalStorage: MemoryStorage;\n // Temporary cache\n protected temporaryCacheStorage: IWindowStorage;\n // Cookie storage\n protected cookieStorage: CookieStorage;\n // Logger instance\n protected logger: Logger;\n // Telemetry perf client\n protected performanceClient?: IPerformanceClient;\n\n constructor(\n clientId: string,\n cacheConfig: Required,\n cryptoImpl: ICrypto,\n logger: Logger,\n staticAuthorityOptions?: StaticAuthorityOptions,\n performanceClient?: IPerformanceClient\n ) {\n super(clientId, cryptoImpl, logger, staticAuthorityOptions);\n this.cacheConfig = cacheConfig;\n this.logger = logger;\n this.internalStorage = new MemoryStorage();\n this.browserStorage = this.setupBrowserStorage(\n this.cacheConfig.cacheLocation\n );\n this.temporaryCacheStorage = this.setupBrowserStorage(\n this.cacheConfig.temporaryCacheLocation\n );\n this.cookieStorage = new CookieStorage();\n\n // Migrate cache entries from older versions of MSAL.\n if (cacheConfig.cacheMigrationEnabled) {\n this.migrateCacheEntries();\n this.createKeyMaps();\n }\n\n this.performanceClient = performanceClient;\n }\n\n /**\n * Returns a window storage class implementing the IWindowStorage interface that corresponds to the configured cacheLocation.\n * @param cacheLocation\n */\n protected setupBrowserStorage(\n cacheLocation: BrowserCacheLocation | string\n ): IWindowStorage {\n try {\n switch (cacheLocation) {\n case BrowserCacheLocation.LocalStorage:\n return new LocalStorage();\n case BrowserCacheLocation.SessionStorage:\n return new SessionStorage();\n case BrowserCacheLocation.MemoryStorage:\n default:\n break;\n }\n } catch (e) {\n this.logger.error(e as string);\n }\n this.cacheConfig.cacheLocation = BrowserCacheLocation.MemoryStorage;\n return new MemoryStorage();\n }\n\n /**\n * Migrate all old cache entries to new schema. No rollback supported.\n * @param storeAuthStateInCookie\n */\n protected migrateCacheEntries(): void {\n const idTokenKey = `${Constants.CACHE_PREFIX}.${PersistentCacheKeys.ID_TOKEN}`;\n const clientInfoKey = `${Constants.CACHE_PREFIX}.${PersistentCacheKeys.CLIENT_INFO}`;\n const errorKey = `${Constants.CACHE_PREFIX}.${PersistentCacheKeys.ERROR}`;\n const errorDescKey = `${Constants.CACHE_PREFIX}.${PersistentCacheKeys.ERROR_DESC}`;\n\n const idTokenValue = this.browserStorage.getItem(idTokenKey);\n const clientInfoValue = this.browserStorage.getItem(clientInfoKey);\n const errorValue = this.browserStorage.getItem(errorKey);\n const errorDescValue = this.browserStorage.getItem(errorDescKey);\n\n const values = [\n idTokenValue,\n clientInfoValue,\n errorValue,\n errorDescValue,\n ];\n const keysToMigrate = [\n PersistentCacheKeys.ID_TOKEN,\n PersistentCacheKeys.CLIENT_INFO,\n PersistentCacheKeys.ERROR,\n PersistentCacheKeys.ERROR_DESC,\n ];\n\n keysToMigrate.forEach((cacheKey: string, index: number) => {\n const value = values[index];\n if (value) {\n this.setTemporaryCache(cacheKey, value, true);\n }\n });\n }\n\n /**\n * Searches all cache entries for MSAL accounts and creates the account key map\n * This is used to migrate users from older versions of MSAL which did not create the map.\n * @returns\n */\n private createKeyMaps(): void {\n this.logger.trace(\"BrowserCacheManager - createKeyMaps called.\");\n const accountKeys = this.getItem(StaticCacheKeys.ACCOUNT_KEYS);\n const tokenKeys = this.getItem(\n `${StaticCacheKeys.TOKEN_KEYS}.${this.clientId}`\n );\n if (accountKeys && tokenKeys) {\n this.logger.verbose(\n \"BrowserCacheManager:createKeyMaps - account and token key maps already exist, skipping migration.\"\n );\n // Key maps already exist, no need to iterate through cache\n return;\n }\n\n const allKeys = this.browserStorage.getKeys();\n allKeys.forEach((key) => {\n if (this.isCredentialKey(key)) {\n // Get item, parse, validate and write key to map\n const value = this.getItem(key);\n if (value) {\n const credObj = this.validateAndParseJson(value);\n if (credObj && credObj.hasOwnProperty(\"credentialType\")) {\n switch (credObj[\"credentialType\"]) {\n case CredentialType.ID_TOKEN:\n if (CacheHelpers.isIdTokenEntity(credObj)) {\n this.logger.trace(\n \"BrowserCacheManager:createKeyMaps - idToken found, saving key to token key map\"\n );\n this.logger.tracePii(\n `BrowserCacheManager:createKeyMaps - idToken with key: ${key} found, saving key to token key map`\n );\n const idTokenEntity =\n credObj as IdTokenEntity;\n const newKey =\n this.updateCredentialCacheKey(\n key,\n idTokenEntity\n );\n this.addTokenKey(\n newKey,\n CredentialType.ID_TOKEN\n );\n return;\n } else {\n this.logger.trace(\n \"BrowserCacheManager:createKeyMaps - key found matching idToken schema with value containing idToken credentialType field but value failed IdTokenEntity validation, skipping.\"\n );\n this.logger.tracePii(\n `BrowserCacheManager:createKeyMaps - failed idToken validation on key: ${key}`\n );\n }\n break;\n case CredentialType.ACCESS_TOKEN:\n case CredentialType.ACCESS_TOKEN_WITH_AUTH_SCHEME:\n if (CacheHelpers.isAccessTokenEntity(credObj)) {\n this.logger.trace(\n \"BrowserCacheManager:createKeyMaps - accessToken found, saving key to token key map\"\n );\n this.logger.tracePii(\n `BrowserCacheManager:createKeyMaps - accessToken with key: ${key} found, saving key to token key map`\n );\n const accessTokenEntity =\n credObj as AccessTokenEntity;\n const newKey =\n this.updateCredentialCacheKey(\n key,\n accessTokenEntity\n );\n this.addTokenKey(\n newKey,\n CredentialType.ACCESS_TOKEN\n );\n return;\n } else {\n this.logger.trace(\n \"BrowserCacheManager:createKeyMaps - key found matching accessToken schema with value containing accessToken credentialType field but value failed AccessTokenEntity validation, skipping.\"\n );\n this.logger.tracePii(\n `BrowserCacheManager:createKeyMaps - failed accessToken validation on key: ${key}`\n );\n }\n break;\n case CredentialType.REFRESH_TOKEN:\n if (\n CacheHelpers.isRefreshTokenEntity(credObj)\n ) {\n this.logger.trace(\n \"BrowserCacheManager:createKeyMaps - refreshToken found, saving key to token key map\"\n );\n this.logger.tracePii(\n `BrowserCacheManager:createKeyMaps - refreshToken with key: ${key} found, saving key to token key map`\n );\n const refreshTokenEntity =\n credObj as RefreshTokenEntity;\n const newKey =\n this.updateCredentialCacheKey(\n key,\n refreshTokenEntity\n );\n this.addTokenKey(\n newKey,\n CredentialType.REFRESH_TOKEN\n );\n return;\n } else {\n this.logger.trace(\n \"BrowserCacheManager:createKeyMaps - key found matching refreshToken schema with value containing refreshToken credentialType field but value failed RefreshTokenEntity validation, skipping.\"\n );\n this.logger.tracePii(\n `BrowserCacheManager:createKeyMaps - failed refreshToken validation on key: ${key}`\n );\n }\n break;\n default:\n // If credentialType isn't one of our predefined ones, it may not be an MSAL cache value. Ignore.\n }\n }\n }\n }\n\n if (this.isAccountKey(key)) {\n const value = this.getItem(key);\n if (value) {\n const accountObj = this.validateAndParseJson(value);\n if (\n accountObj &&\n AccountEntity.isAccountEntity(accountObj)\n ) {\n this.logger.trace(\n \"BrowserCacheManager:createKeyMaps - account found, saving key to account key map\"\n );\n this.logger.tracePii(\n `BrowserCacheManager:createKeyMaps - account with key: ${key} found, saving key to account key map`\n );\n this.addAccountKeyToMap(key);\n }\n }\n }\n });\n }\n\n /**\n * Parses passed value as JSON object, JSON.parse() will throw an error.\n * @param input\n */\n protected validateAndParseJson(jsonValue: string): object | null {\n try {\n const parsedJson = JSON.parse(jsonValue);\n /**\n * There are edge cases in which JSON.parse will successfully parse a non-valid JSON object\n * (e.g. JSON.parse will parse an escaped string into an unescaped string), so adding a type check\n * of the parsed value is necessary in order to be certain that the string represents a valid JSON object.\n *\n */\n return parsedJson && typeof parsedJson === \"object\"\n ? parsedJson\n : null;\n } catch (error) {\n return null;\n }\n }\n\n /**\n * fetches the entry from the browser storage based off the key\n * @param key\n */\n getItem(key: string): string | null {\n return this.browserStorage.getItem(key);\n }\n\n /**\n * sets the entry in the browser storage\n * @param key\n * @param value\n */\n setItem(key: string, value: string): void {\n this.browserStorage.setItem(key, value);\n }\n\n /**\n * fetch the account entity from the platform cache\n * @param accountKey\n */\n getAccount(accountKey: string, logger?: Logger): AccountEntity | null {\n this.logger.trace(\"BrowserCacheManager.getAccount called\");\n const accountEntity = this.getCachedAccountEntity(accountKey);\n\n return this.updateOutdatedCachedAccount(\n accountKey,\n accountEntity,\n logger\n );\n }\n\n /**\n * Reads account from cache, deserializes it into an account entity and returns it.\n * If account is not found from the key, returns null and removes key from map.\n * @param accountKey\n * @returns\n */\n getCachedAccountEntity(accountKey: string): AccountEntity | null {\n const serializedAccount = this.getItem(accountKey);\n if (!serializedAccount) {\n this.removeAccountKeyFromMap(accountKey);\n return null;\n }\n\n const parsedAccount = this.validateAndParseJson(serializedAccount);\n if (!parsedAccount || !AccountEntity.isAccountEntity(parsedAccount)) {\n this.removeAccountKeyFromMap(accountKey);\n return null;\n }\n\n return CacheManager.toObject(\n new AccountEntity(),\n parsedAccount\n );\n }\n\n /**\n * set account entity in the platform cache\n * @param account\n */\n setAccount(account: AccountEntity): void {\n this.logger.trace(\"BrowserCacheManager.setAccount called\");\n const key = account.generateAccountKey();\n this.setItem(key, JSON.stringify(account));\n this.addAccountKeyToMap(key);\n }\n\n /**\n * Returns the array of account keys currently cached\n * @returns\n */\n getAccountKeys(): Array {\n this.logger.trace(\"BrowserCacheManager.getAccountKeys called\");\n const accountKeys = this.getItem(StaticCacheKeys.ACCOUNT_KEYS);\n if (accountKeys) {\n return JSON.parse(accountKeys);\n }\n\n this.logger.verbose(\n \"BrowserCacheManager.getAccountKeys - No account keys found\"\n );\n return [];\n }\n\n /**\n * Add a new account to the key map\n * @param key\n */\n addAccountKeyToMap(key: string): void {\n this.logger.trace(\"BrowserCacheManager.addAccountKeyToMap called\");\n this.logger.tracePii(\n `BrowserCacheManager.addAccountKeyToMap called with key: ${key}`\n );\n const accountKeys = this.getAccountKeys();\n if (accountKeys.indexOf(key) === -1) {\n // Only add key if it does not already exist in the map\n accountKeys.push(key);\n this.setItem(\n StaticCacheKeys.ACCOUNT_KEYS,\n JSON.stringify(accountKeys)\n );\n this.logger.verbose(\n \"BrowserCacheManager.addAccountKeyToMap account key added\"\n );\n } else {\n this.logger.verbose(\n \"BrowserCacheManager.addAccountKeyToMap account key already exists in map\"\n );\n }\n }\n\n /**\n * Remove an account from the key map\n * @param key\n */\n removeAccountKeyFromMap(key: string): void {\n this.logger.trace(\"BrowserCacheManager.removeAccountKeyFromMap called\");\n this.logger.tracePii(\n `BrowserCacheManager.removeAccountKeyFromMap called with key: ${key}`\n );\n const accountKeys = this.getAccountKeys();\n const removalIndex = accountKeys.indexOf(key);\n if (removalIndex > -1) {\n accountKeys.splice(removalIndex, 1);\n this.setItem(\n StaticCacheKeys.ACCOUNT_KEYS,\n JSON.stringify(accountKeys)\n );\n this.logger.trace(\n \"BrowserCacheManager.removeAccountKeyFromMap account key removed\"\n );\n } else {\n this.logger.trace(\n \"BrowserCacheManager.removeAccountKeyFromMap key not found in existing map\"\n );\n }\n }\n\n /**\n * Extends inherited removeAccount function to include removal of the account key from the map\n * @param key\n */\n async removeAccount(key: string): Promise {\n void super.removeAccount(key);\n this.removeAccountKeyFromMap(key);\n }\n\n /**\n * Remove account entity from the platform cache if it's outdated\n * @param accountKey\n */\n removeOutdatedAccount(accountKey: string): void {\n this.removeItem(accountKey);\n this.removeAccountKeyFromMap(accountKey);\n }\n\n /**\n * Removes given idToken from the cache and from the key map\n * @param key\n */\n removeIdToken(key: string): void {\n super.removeIdToken(key);\n this.removeTokenKey(key, CredentialType.ID_TOKEN);\n }\n\n /**\n * Removes given accessToken from the cache and from the key map\n * @param key\n */\n async removeAccessToken(key: string): Promise {\n void super.removeAccessToken(key);\n this.removeTokenKey(key, CredentialType.ACCESS_TOKEN);\n }\n\n /**\n * Removes given refreshToken from the cache and from the key map\n * @param key\n */\n removeRefreshToken(key: string): void {\n super.removeRefreshToken(key);\n this.removeTokenKey(key, CredentialType.REFRESH_TOKEN);\n }\n\n /**\n * Gets the keys for the cached tokens associated with this clientId\n * @returns\n */\n getTokenKeys(): TokenKeys {\n this.logger.trace(\"BrowserCacheManager.getTokenKeys called\");\n const item = this.getItem(\n `${StaticCacheKeys.TOKEN_KEYS}.${this.clientId}`\n );\n if (item) {\n const tokenKeys = this.validateAndParseJson(item);\n if (\n tokenKeys &&\n tokenKeys.hasOwnProperty(\"idToken\") &&\n tokenKeys.hasOwnProperty(\"accessToken\") &&\n tokenKeys.hasOwnProperty(\"refreshToken\")\n ) {\n return tokenKeys as TokenKeys;\n } else {\n this.logger.error(\n \"BrowserCacheManager.getTokenKeys - Token keys found but in an unknown format. Returning empty key map.\"\n );\n }\n } else {\n this.logger.verbose(\n \"BrowserCacheManager.getTokenKeys - No token keys found\"\n );\n }\n\n return {\n idToken: [],\n accessToken: [],\n refreshToken: [],\n };\n }\n\n /**\n * Adds the given key to the token key map\n * @param key\n * @param type\n */\n addTokenKey(key: string, type: CredentialType): void {\n this.logger.trace(\"BrowserCacheManager addTokenKey called\");\n const tokenKeys = this.getTokenKeys();\n\n switch (type) {\n case CredentialType.ID_TOKEN:\n if (tokenKeys.idToken.indexOf(key) === -1) {\n this.logger.info(\n \"BrowserCacheManager: addTokenKey - idToken added to map\"\n );\n tokenKeys.idToken.push(key);\n }\n break;\n case CredentialType.ACCESS_TOKEN:\n if (tokenKeys.accessToken.indexOf(key) === -1) {\n this.logger.info(\n \"BrowserCacheManager: addTokenKey - accessToken added to map\"\n );\n tokenKeys.accessToken.push(key);\n }\n break;\n case CredentialType.REFRESH_TOKEN:\n if (tokenKeys.refreshToken.indexOf(key) === -1) {\n this.logger.info(\n \"BrowserCacheManager: addTokenKey - refreshToken added to map\"\n );\n tokenKeys.refreshToken.push(key);\n }\n break;\n default:\n this.logger.error(\n `BrowserCacheManager:addTokenKey - CredentialType provided invalid. CredentialType: ${type}`\n );\n throw createClientAuthError(\n ClientAuthErrorCodes.unexpectedCredentialType\n );\n }\n\n this.setItem(\n `${StaticCacheKeys.TOKEN_KEYS}.${this.clientId}`,\n JSON.stringify(tokenKeys)\n );\n }\n\n /**\n * Removes the given key from the token key map\n * @param key\n * @param type\n */\n removeTokenKey(key: string, type: CredentialType): void {\n this.logger.trace(\"BrowserCacheManager removeTokenKey called\");\n const tokenKeys = this.getTokenKeys();\n\n switch (type) {\n case CredentialType.ID_TOKEN:\n this.logger.infoPii(\n `BrowserCacheManager: removeTokenKey - attempting to remove idToken with key: ${key} from map`\n );\n const idRemoval = tokenKeys.idToken.indexOf(key);\n if (idRemoval > -1) {\n this.logger.info(\n \"BrowserCacheManager: removeTokenKey - idToken removed from map\"\n );\n tokenKeys.idToken.splice(idRemoval, 1);\n } else {\n this.logger.info(\n \"BrowserCacheManager: removeTokenKey - idToken does not exist in map. Either it was previously removed or it was never added.\"\n );\n }\n break;\n case CredentialType.ACCESS_TOKEN:\n this.logger.infoPii(\n `BrowserCacheManager: removeTokenKey - attempting to remove accessToken with key: ${key} from map`\n );\n const accessRemoval = tokenKeys.accessToken.indexOf(key);\n if (accessRemoval > -1) {\n this.logger.info(\n \"BrowserCacheManager: removeTokenKey - accessToken removed from map\"\n );\n tokenKeys.accessToken.splice(accessRemoval, 1);\n } else {\n this.logger.info(\n \"BrowserCacheManager: removeTokenKey - accessToken does not exist in map. Either it was previously removed or it was never added.\"\n );\n }\n break;\n case CredentialType.REFRESH_TOKEN:\n this.logger.infoPii(\n `BrowserCacheManager: removeTokenKey - attempting to remove refreshToken with key: ${key} from map`\n );\n const refreshRemoval = tokenKeys.refreshToken.indexOf(key);\n if (refreshRemoval > -1) {\n this.logger.info(\n \"BrowserCacheManager: removeTokenKey - refreshToken removed from map\"\n );\n tokenKeys.refreshToken.splice(refreshRemoval, 1);\n } else {\n this.logger.info(\n \"BrowserCacheManager: removeTokenKey - refreshToken does not exist in map. Either it was previously removed or it was never added.\"\n );\n }\n break;\n default:\n this.logger.error(\n `BrowserCacheManager:removeTokenKey - CredentialType provided invalid. CredentialType: ${type}`\n );\n throw createClientAuthError(\n ClientAuthErrorCodes.unexpectedCredentialType\n );\n }\n\n this.setItem(\n `${StaticCacheKeys.TOKEN_KEYS}.${this.clientId}`,\n JSON.stringify(tokenKeys)\n );\n }\n\n /**\n * generates idToken entity from a string\n * @param idTokenKey\n */\n getIdTokenCredential(idTokenKey: string): IdTokenEntity | null {\n const value = this.getItem(idTokenKey);\n if (!value) {\n this.logger.trace(\n \"BrowserCacheManager.getIdTokenCredential: called, no cache hit\"\n );\n this.removeTokenKey(idTokenKey, CredentialType.ID_TOKEN);\n return null;\n }\n\n const parsedIdToken = this.validateAndParseJson(value);\n if (!parsedIdToken || !CacheHelpers.isIdTokenEntity(parsedIdToken)) {\n this.logger.trace(\n \"BrowserCacheManager.getIdTokenCredential: called, no cache hit\"\n );\n this.removeTokenKey(idTokenKey, CredentialType.ID_TOKEN);\n return null;\n }\n\n this.logger.trace(\n \"BrowserCacheManager.getIdTokenCredential: cache hit\"\n );\n return parsedIdToken as IdTokenEntity;\n }\n\n /**\n * set IdToken credential to the platform cache\n * @param idToken\n */\n setIdTokenCredential(idToken: IdTokenEntity): void {\n this.logger.trace(\"BrowserCacheManager.setIdTokenCredential called\");\n const idTokenKey = CacheHelpers.generateCredentialKey(idToken);\n\n this.setItem(idTokenKey, JSON.stringify(idToken));\n\n this.addTokenKey(idTokenKey, CredentialType.ID_TOKEN);\n }\n\n /**\n * generates accessToken entity from a string\n * @param key\n */\n getAccessTokenCredential(accessTokenKey: string): AccessTokenEntity | null {\n const value = this.getItem(accessTokenKey);\n if (!value) {\n this.logger.trace(\n \"BrowserCacheManager.getAccessTokenCredential: called, no cache hit\"\n );\n this.removeTokenKey(accessTokenKey, CredentialType.ACCESS_TOKEN);\n return null;\n }\n const parsedAccessToken = this.validateAndParseJson(value);\n if (\n !parsedAccessToken ||\n !CacheHelpers.isAccessTokenEntity(parsedAccessToken)\n ) {\n this.logger.trace(\n \"BrowserCacheManager.getAccessTokenCredential: called, no cache hit\"\n );\n this.removeTokenKey(accessTokenKey, CredentialType.ACCESS_TOKEN);\n return null;\n }\n\n this.logger.trace(\n \"BrowserCacheManager.getAccessTokenCredential: cache hit\"\n );\n return parsedAccessToken as AccessTokenEntity;\n }\n\n /**\n * set accessToken credential to the platform cache\n * @param accessToken\n */\n setAccessTokenCredential(accessToken: AccessTokenEntity): void {\n this.logger.trace(\n \"BrowserCacheManager.setAccessTokenCredential called\"\n );\n const accessTokenKey = CacheHelpers.generateCredentialKey(accessToken);\n this.setItem(accessTokenKey, JSON.stringify(accessToken));\n\n this.addTokenKey(accessTokenKey, CredentialType.ACCESS_TOKEN);\n }\n\n /**\n * generates refreshToken entity from a string\n * @param refreshTokenKey\n */\n getRefreshTokenCredential(\n refreshTokenKey: string\n ): RefreshTokenEntity | null {\n const value = this.getItem(refreshTokenKey);\n if (!value) {\n this.logger.trace(\n \"BrowserCacheManager.getRefreshTokenCredential: called, no cache hit\"\n );\n this.removeTokenKey(refreshTokenKey, CredentialType.REFRESH_TOKEN);\n return null;\n }\n const parsedRefreshToken = this.validateAndParseJson(value);\n if (\n !parsedRefreshToken ||\n !CacheHelpers.isRefreshTokenEntity(parsedRefreshToken)\n ) {\n this.logger.trace(\n \"BrowserCacheManager.getRefreshTokenCredential: called, no cache hit\"\n );\n this.removeTokenKey(refreshTokenKey, CredentialType.REFRESH_TOKEN);\n return null;\n }\n\n this.logger.trace(\n \"BrowserCacheManager.getRefreshTokenCredential: cache hit\"\n );\n return parsedRefreshToken as RefreshTokenEntity;\n }\n\n /**\n * set refreshToken credential to the platform cache\n * @param refreshToken\n */\n setRefreshTokenCredential(refreshToken: RefreshTokenEntity): void {\n this.logger.trace(\n \"BrowserCacheManager.setRefreshTokenCredential called\"\n );\n const refreshTokenKey =\n CacheHelpers.generateCredentialKey(refreshToken);\n this.setItem(refreshTokenKey, JSON.stringify(refreshToken));\n\n this.addTokenKey(refreshTokenKey, CredentialType.REFRESH_TOKEN);\n }\n\n /**\n * fetch appMetadata entity from the platform cache\n * @param appMetadataKey\n */\n getAppMetadata(appMetadataKey: string): AppMetadataEntity | null {\n const value = this.getItem(appMetadataKey);\n if (!value) {\n this.logger.trace(\n \"BrowserCacheManager.getAppMetadata: called, no cache hit\"\n );\n return null;\n }\n\n const parsedMetadata = this.validateAndParseJson(value);\n if (\n !parsedMetadata ||\n !CacheHelpers.isAppMetadataEntity(appMetadataKey, parsedMetadata)\n ) {\n this.logger.trace(\n \"BrowserCacheManager.getAppMetadata: called, no cache hit\"\n );\n return null;\n }\n\n this.logger.trace(\"BrowserCacheManager.getAppMetadata: cache hit\");\n return parsedMetadata as AppMetadataEntity;\n }\n\n /**\n * set appMetadata entity to the platform cache\n * @param appMetadata\n */\n setAppMetadata(appMetadata: AppMetadataEntity): void {\n this.logger.trace(\"BrowserCacheManager.setAppMetadata called\");\n const appMetadataKey = CacheHelpers.generateAppMetadataKey(appMetadata);\n this.setItem(appMetadataKey, JSON.stringify(appMetadata));\n }\n\n /**\n * fetch server telemetry entity from the platform cache\n * @param serverTelemetryKey\n */\n getServerTelemetry(\n serverTelemetryKey: string\n ): ServerTelemetryEntity | null {\n const value = this.getItem(serverTelemetryKey);\n if (!value) {\n this.logger.trace(\n \"BrowserCacheManager.getServerTelemetry: called, no cache hit\"\n );\n return null;\n }\n const parsedEntity = this.validateAndParseJson(value);\n if (\n !parsedEntity ||\n !CacheHelpers.isServerTelemetryEntity(\n serverTelemetryKey,\n parsedEntity\n )\n ) {\n this.logger.trace(\n \"BrowserCacheManager.getServerTelemetry: called, no cache hit\"\n );\n return null;\n }\n\n this.logger.trace(\"BrowserCacheManager.getServerTelemetry: cache hit\");\n return parsedEntity as ServerTelemetryEntity;\n }\n\n /**\n * set server telemetry entity to the platform cache\n * @param serverTelemetryKey\n * @param serverTelemetry\n */\n setServerTelemetry(\n serverTelemetryKey: string,\n serverTelemetry: ServerTelemetryEntity\n ): void {\n this.logger.trace(\"BrowserCacheManager.setServerTelemetry called\");\n this.setItem(serverTelemetryKey, JSON.stringify(serverTelemetry));\n }\n\n /**\n *\n */\n getAuthorityMetadata(key: string): AuthorityMetadataEntity | null {\n const value = this.internalStorage.getItem(key);\n if (!value) {\n this.logger.trace(\n \"BrowserCacheManager.getAuthorityMetadata: called, no cache hit\"\n );\n return null;\n }\n const parsedMetadata = this.validateAndParseJson(value);\n if (\n parsedMetadata &&\n CacheHelpers.isAuthorityMetadataEntity(key, parsedMetadata)\n ) {\n this.logger.trace(\n \"BrowserCacheManager.getAuthorityMetadata: cache hit\"\n );\n return parsedMetadata as AuthorityMetadataEntity;\n }\n return null;\n }\n\n /**\n *\n */\n getAuthorityMetadataKeys(): Array {\n const allKeys = this.internalStorage.getKeys();\n return allKeys.filter((key) => {\n return this.isAuthorityMetadata(key);\n });\n }\n\n /**\n * Sets wrapper metadata in memory\n * @param wrapperSKU\n * @param wrapperVersion\n */\n setWrapperMetadata(wrapperSKU: string, wrapperVersion: string): void {\n this.internalStorage.setItem(InMemoryCacheKeys.WRAPPER_SKU, wrapperSKU);\n this.internalStorage.setItem(\n InMemoryCacheKeys.WRAPPER_VER,\n wrapperVersion\n );\n }\n\n /**\n * Returns wrapper metadata from in-memory storage\n */\n getWrapperMetadata(): [string, string] {\n const sku =\n this.internalStorage.getItem(InMemoryCacheKeys.WRAPPER_SKU) ||\n Constants.EMPTY_STRING;\n const version =\n this.internalStorage.getItem(InMemoryCacheKeys.WRAPPER_VER) ||\n Constants.EMPTY_STRING;\n return [sku, version];\n }\n\n /**\n *\n * @param entity\n */\n setAuthorityMetadata(key: string, entity: AuthorityMetadataEntity): void {\n this.logger.trace(\"BrowserCacheManager.setAuthorityMetadata called\");\n this.internalStorage.setItem(key, JSON.stringify(entity));\n }\n\n /**\n * Gets the active account\n */\n getActiveAccount(): AccountInfo | null {\n const activeAccountKeyFilters = this.generateCacheKey(\n PersistentCacheKeys.ACTIVE_ACCOUNT_FILTERS\n );\n const activeAccountValueFilters = this.getItem(activeAccountKeyFilters);\n if (!activeAccountValueFilters) {\n // if new active account cache type isn't found, it's an old version, so look for that instead\n this.logger.trace(\n \"BrowserCacheManager.getActiveAccount: No active account filters cache schema found, looking for legacy schema\"\n );\n const activeAccountKeyLocal = this.generateCacheKey(\n PersistentCacheKeys.ACTIVE_ACCOUNT\n );\n const activeAccountValueLocal = this.getItem(activeAccountKeyLocal);\n if (!activeAccountValueLocal) {\n this.logger.trace(\n \"BrowserCacheManager.getActiveAccount: No active account found\"\n );\n return null;\n }\n const activeAccount = this.getAccountInfoFilteredBy({\n localAccountId: activeAccountValueLocal,\n });\n if (activeAccount) {\n this.logger.trace(\n \"BrowserCacheManager.getActiveAccount: Legacy active account cache schema found\"\n );\n this.logger.trace(\n \"BrowserCacheManager.getActiveAccount: Adding active account filters cache schema\"\n );\n this.setActiveAccount(activeAccount);\n return activeAccount;\n }\n return null;\n }\n const activeAccountValueObj = this.validateAndParseJson(\n activeAccountValueFilters\n ) as AccountInfo;\n if (activeAccountValueObj) {\n this.logger.trace(\n \"BrowserCacheManager.getActiveAccount: Active account filters schema found\"\n );\n return this.getAccountInfoFilteredBy({\n homeAccountId: activeAccountValueObj.homeAccountId,\n localAccountId: activeAccountValueObj.localAccountId,\n tenantId: activeAccountValueObj.tenantId,\n });\n }\n this.logger.trace(\n \"BrowserCacheManager.getActiveAccount: No active account found\"\n );\n return null;\n }\n\n /**\n * Sets the active account's localAccountId in cache\n * @param account\n */\n setActiveAccount(account: AccountInfo | null): void {\n const activeAccountKey = this.generateCacheKey(\n PersistentCacheKeys.ACTIVE_ACCOUNT_FILTERS\n );\n const activeAccountKeyLocal = this.generateCacheKey(\n PersistentCacheKeys.ACTIVE_ACCOUNT\n );\n if (account) {\n this.logger.verbose(\"setActiveAccount: Active account set\");\n const activeAccountValue: ActiveAccountFilters = {\n homeAccountId: account.homeAccountId,\n localAccountId: account.localAccountId,\n tenantId: account.tenantId,\n };\n this.browserStorage.setItem(\n activeAccountKey,\n JSON.stringify(activeAccountValue)\n );\n this.browserStorage.setItem(\n activeAccountKeyLocal,\n account.localAccountId\n );\n } else {\n this.logger.verbose(\n \"setActiveAccount: No account passed, active account not set\"\n );\n this.browserStorage.removeItem(activeAccountKey);\n this.browserStorage.removeItem(activeAccountKeyLocal);\n }\n }\n\n /**\n * fetch throttling entity from the platform cache\n * @param throttlingCacheKey\n */\n getThrottlingCache(throttlingCacheKey: string): ThrottlingEntity | null {\n const value = this.getItem(throttlingCacheKey);\n if (!value) {\n this.logger.trace(\n \"BrowserCacheManager.getThrottlingCache: called, no cache hit\"\n );\n return null;\n }\n\n const parsedThrottlingCache = this.validateAndParseJson(value);\n if (\n !parsedThrottlingCache ||\n !CacheHelpers.isThrottlingEntity(\n throttlingCacheKey,\n parsedThrottlingCache\n )\n ) {\n this.logger.trace(\n \"BrowserCacheManager.getThrottlingCache: called, no cache hit\"\n );\n return null;\n }\n\n this.logger.trace(\"BrowserCacheManager.getThrottlingCache: cache hit\");\n return parsedThrottlingCache as ThrottlingEntity;\n }\n\n /**\n * set throttling entity to the platform cache\n * @param throttlingCacheKey\n * @param throttlingCache\n */\n setThrottlingCache(\n throttlingCacheKey: string,\n throttlingCache: ThrottlingEntity\n ): void {\n this.logger.trace(\"BrowserCacheManager.setThrottlingCache called\");\n this.setItem(throttlingCacheKey, JSON.stringify(throttlingCache));\n }\n\n /**\n * Gets cache item with given key.\n * Will retrieve from cookies if storeAuthStateInCookie is set to true.\n * @param key\n */\n getTemporaryCache(cacheKey: string, generateKey?: boolean): string | null {\n const key = generateKey ? this.generateCacheKey(cacheKey) : cacheKey;\n if (this.cacheConfig.storeAuthStateInCookie) {\n const itemCookie = this.cookieStorage.getItem(key);\n if (itemCookie) {\n this.logger.trace(\n \"BrowserCacheManager.getTemporaryCache: storeAuthStateInCookies set to true, retrieving from cookies\"\n );\n return itemCookie;\n }\n }\n\n const value = this.temporaryCacheStorage.getItem(key);\n if (!value) {\n // If temp cache item not found in session/memory, check local storage for items set by old versions\n if (\n this.cacheConfig.cacheLocation ===\n BrowserCacheLocation.LocalStorage\n ) {\n const item = this.browserStorage.getItem(key);\n if (item) {\n this.logger.trace(\n \"BrowserCacheManager.getTemporaryCache: Temporary cache item found in local storage\"\n );\n return item;\n }\n }\n this.logger.trace(\n \"BrowserCacheManager.getTemporaryCache: No cache item found in local storage\"\n );\n return null;\n }\n this.logger.trace(\n \"BrowserCacheManager.getTemporaryCache: Temporary cache item returned\"\n );\n return value;\n }\n\n /**\n * Sets the cache item with the key and value given.\n * Stores in cookie if storeAuthStateInCookie is set to true.\n * This can cause cookie overflow if used incorrectly.\n * @param key\n * @param value\n */\n setTemporaryCache(\n cacheKey: string,\n value: string,\n generateKey?: boolean\n ): void {\n const key = generateKey ? this.generateCacheKey(cacheKey) : cacheKey;\n\n this.temporaryCacheStorage.setItem(key, value);\n if (this.cacheConfig.storeAuthStateInCookie) {\n this.logger.trace(\n \"BrowserCacheManager.setTemporaryCache: storeAuthStateInCookie set to true, setting item cookie\"\n );\n this.cookieStorage.setItem(\n key,\n value,\n undefined,\n this.cacheConfig.secureCookies\n );\n }\n }\n\n /**\n * Removes the cache item with the given key.\n * @param key\n */\n removeItem(key: string): void {\n this.browserStorage.removeItem(key);\n }\n\n /**\n * Removes the temporary cache item with the given key.\n * Will also clear the cookie item if storeAuthStateInCookie is set to true.\n * @param key\n */\n removeTemporaryItem(key: string): void {\n this.temporaryCacheStorage.removeItem(key);\n if (this.cacheConfig.storeAuthStateInCookie) {\n this.logger.trace(\n \"BrowserCacheManager.removeItem: storeAuthStateInCookie is true, clearing item cookie\"\n );\n this.cookieStorage.removeItem(key);\n }\n }\n\n /**\n * Gets all keys in window.\n */\n getKeys(): string[] {\n return this.browserStorage.getKeys();\n }\n\n /**\n * Clears all cache entries created by MSAL.\n */\n async clear(): Promise {\n // Removes all accounts and their credentials\n await this.removeAllAccounts();\n this.removeAppMetadata();\n\n // Remove temp storage first to make sure any cookies are cleared\n this.temporaryCacheStorage.getKeys().forEach((cacheKey: string) => {\n if (\n cacheKey.indexOf(Constants.CACHE_PREFIX) !== -1 ||\n cacheKey.indexOf(this.clientId) !== -1\n ) {\n this.removeTemporaryItem(cacheKey);\n }\n });\n\n // Removes all remaining MSAL cache items\n this.browserStorage.getKeys().forEach((cacheKey: string) => {\n if (\n cacheKey.indexOf(Constants.CACHE_PREFIX) !== -1 ||\n cacheKey.indexOf(this.clientId) !== -1\n ) {\n this.browserStorage.removeItem(cacheKey);\n }\n });\n\n this.internalStorage.clear();\n }\n\n /**\n * Clears all access tokes that have claims prior to saving the current one\n * @param performanceClient {IPerformanceClient}\n * @param correlationId {string} correlation id\n * @returns\n */\n async clearTokensAndKeysWithClaims(\n performanceClient: IPerformanceClient,\n correlationId: string\n ): Promise {\n performanceClient.addQueueMeasurement(\n PerformanceEvents.ClearTokensAndKeysWithClaims,\n correlationId\n );\n\n const tokenKeys = this.getTokenKeys();\n\n const removedAccessTokens: Array> = [];\n tokenKeys.accessToken.forEach((key: string) => {\n // if the access token has claims in its key, remove the token key and the token\n const credential = this.getAccessTokenCredential(key);\n if (\n credential?.requestedClaimsHash &&\n key.includes(credential.requestedClaimsHash.toLowerCase())\n ) {\n removedAccessTokens.push(this.removeAccessToken(key));\n }\n });\n await Promise.all(removedAccessTokens);\n\n // warn if any access tokens are removed\n if (removedAccessTokens.length > 0) {\n this.logger.warning(\n `${removedAccessTokens.length} access tokens with claims in the cache keys have been removed from the cache.`\n );\n }\n }\n\n /**\n * Prepend msal. to each key; Skip for any JSON object as Key (defined schemas do not need the key appended: AccessToken Keys or the upcoming schema)\n * @param key\n * @param addInstanceId\n */\n generateCacheKey(key: string): string {\n const generatedKey = this.validateAndParseJson(key);\n if (!generatedKey) {\n if (\n StringUtils.startsWith(key, Constants.CACHE_PREFIX) ||\n StringUtils.startsWith(key, PersistentCacheKeys.ADAL_ID_TOKEN)\n ) {\n return key;\n }\n return `${Constants.CACHE_PREFIX}.${this.clientId}.${key}`;\n }\n\n return JSON.stringify(key);\n }\n\n /**\n * Create authorityKey to cache authority\n * @param state\n */\n generateAuthorityKey(stateString: string): string {\n const {\n libraryState: { id: stateId },\n } = ProtocolUtils.parseRequestState(this.cryptoImpl, stateString);\n\n return this.generateCacheKey(\n `${TemporaryCacheKeys.AUTHORITY}.${stateId}`\n );\n }\n\n /**\n * Create Nonce key to cache nonce\n * @param state\n */\n generateNonceKey(stateString: string): string {\n const {\n libraryState: { id: stateId },\n } = ProtocolUtils.parseRequestState(this.cryptoImpl, stateString);\n\n return this.generateCacheKey(\n `${TemporaryCacheKeys.NONCE_IDTOKEN}.${stateId}`\n );\n }\n\n /**\n * Creates full cache key for the request state\n * @param stateString State string for the request\n */\n generateStateKey(stateString: string): string {\n // Use the library state id to key temp storage for uniqueness for multiple concurrent requests\n const {\n libraryState: { id: stateId },\n } = ProtocolUtils.parseRequestState(this.cryptoImpl, stateString);\n return this.generateCacheKey(\n `${TemporaryCacheKeys.REQUEST_STATE}.${stateId}`\n );\n }\n\n /**\n * Gets the cached authority based on the cached state. Returns empty if no cached state found.\n */\n getCachedAuthority(cachedState: string): string | null {\n const stateCacheKey = this.generateStateKey(cachedState);\n const state = this.getTemporaryCache(stateCacheKey);\n if (!state) {\n return null;\n }\n\n const authorityCacheKey = this.generateAuthorityKey(state);\n return this.getTemporaryCache(authorityCacheKey);\n }\n\n /**\n * Updates account, authority, and state in cache\n * @param serverAuthenticationRequest\n * @param account\n */\n updateCacheEntries(\n state: string,\n nonce: string,\n authorityInstance: string,\n loginHint: string,\n account: AccountInfo | null\n ): void {\n this.logger.trace(\"BrowserCacheManager.updateCacheEntries called\");\n // Cache the request state\n const stateCacheKey = this.generateStateKey(state);\n this.setTemporaryCache(stateCacheKey, state, false);\n\n // Cache the nonce\n const nonceCacheKey = this.generateNonceKey(state);\n this.setTemporaryCache(nonceCacheKey, nonce, false);\n\n // Cache authorityKey\n const authorityCacheKey = this.generateAuthorityKey(state);\n this.setTemporaryCache(authorityCacheKey, authorityInstance, false);\n\n if (account) {\n const ccsCredential: CcsCredential = {\n credential: account.homeAccountId,\n type: CcsCredentialType.HOME_ACCOUNT_ID,\n };\n this.setTemporaryCache(\n TemporaryCacheKeys.CCS_CREDENTIAL,\n JSON.stringify(ccsCredential),\n true\n );\n } else if (loginHint) {\n const ccsCredential: CcsCredential = {\n credential: loginHint,\n type: CcsCredentialType.UPN,\n };\n this.setTemporaryCache(\n TemporaryCacheKeys.CCS_CREDENTIAL,\n JSON.stringify(ccsCredential),\n true\n );\n }\n }\n\n /**\n * Reset all temporary cache items\n * @param state\n */\n resetRequestCache(state: string): void {\n this.logger.trace(\"BrowserCacheManager.resetRequestCache called\");\n // check state and remove associated cache items\n if (state) {\n this.temporaryCacheStorage.getKeys().forEach((key) => {\n if (key.indexOf(state) !== -1) {\n this.removeTemporaryItem(key);\n }\n });\n\n // delete generic interactive request parameters\n this.removeTemporaryItem(this.generateStateKey(state));\n this.removeTemporaryItem(this.generateNonceKey(state));\n this.removeTemporaryItem(this.generateAuthorityKey(state));\n }\n this.removeTemporaryItem(\n this.generateCacheKey(TemporaryCacheKeys.REQUEST_PARAMS)\n );\n this.removeTemporaryItem(\n this.generateCacheKey(TemporaryCacheKeys.ORIGIN_URI)\n );\n this.removeTemporaryItem(\n this.generateCacheKey(TemporaryCacheKeys.URL_HASH)\n );\n this.removeTemporaryItem(\n this.generateCacheKey(TemporaryCacheKeys.CORRELATION_ID)\n );\n this.removeTemporaryItem(\n this.generateCacheKey(TemporaryCacheKeys.CCS_CREDENTIAL)\n );\n this.removeTemporaryItem(\n this.generateCacheKey(TemporaryCacheKeys.NATIVE_REQUEST)\n );\n this.setInteractionInProgress(false);\n }\n\n /**\n * Removes temporary cache for the provided state\n * @param stateString\n */\n cleanRequestByState(stateString: string): void {\n this.logger.trace(\"BrowserCacheManager.cleanRequestByState called\");\n // Interaction is completed - remove interaction status.\n if (stateString) {\n const stateKey = this.generateStateKey(stateString);\n const cachedState = this.temporaryCacheStorage.getItem(stateKey);\n this.logger.infoPii(\n `BrowserCacheManager.cleanRequestByState: Removing temporary cache items for state: ${cachedState}`\n );\n this.resetRequestCache(cachedState || Constants.EMPTY_STRING);\n }\n }\n\n /**\n * Looks in temporary cache for any state values with the provided interactionType and removes all temporary cache items for that state\n * Used in scenarios where temp cache needs to be cleaned but state is not known, such as clicking browser back button.\n * @param interactionType\n */\n cleanRequestByInteractionType(interactionType: InteractionType): void {\n this.logger.trace(\n \"BrowserCacheManager.cleanRequestByInteractionType called\"\n );\n // Loop through all keys to find state key\n this.temporaryCacheStorage.getKeys().forEach((key) => {\n // If this key is not the state key, move on\n if (key.indexOf(TemporaryCacheKeys.REQUEST_STATE) === -1) {\n return;\n }\n\n // Retrieve state value, return if not a valid value\n const stateValue = this.temporaryCacheStorage.getItem(key);\n if (!stateValue) {\n return;\n }\n // Extract state and ensure it matches given InteractionType, then clean request cache\n const parsedState = extractBrowserRequestState(\n this.cryptoImpl,\n stateValue\n );\n if (\n parsedState &&\n parsedState.interactionType === interactionType\n ) {\n this.logger.infoPii(\n `BrowserCacheManager.cleanRequestByInteractionType: Removing temporary cache items for state: ${stateValue}`\n );\n this.resetRequestCache(stateValue);\n }\n });\n this.setInteractionInProgress(false);\n }\n\n cacheCodeRequest(authCodeRequest: CommonAuthorizationCodeRequest): void {\n this.logger.trace(\"BrowserCacheManager.cacheCodeRequest called\");\n\n const encodedValue = base64Encode(JSON.stringify(authCodeRequest));\n this.setTemporaryCache(\n TemporaryCacheKeys.REQUEST_PARAMS,\n encodedValue,\n true\n );\n }\n\n /**\n * Gets the token exchange parameters from the cache. Throws an error if nothing is found.\n */\n getCachedRequest(state: string): CommonAuthorizationCodeRequest {\n this.logger.trace(\"BrowserCacheManager.getCachedRequest called\");\n // Get token request from cache and parse as TokenExchangeParameters.\n const encodedTokenRequest = this.getTemporaryCache(\n TemporaryCacheKeys.REQUEST_PARAMS,\n true\n );\n if (!encodedTokenRequest) {\n throw createBrowserAuthError(\n BrowserAuthErrorCodes.noTokenRequestCacheError\n );\n }\n\n let parsedRequest: CommonAuthorizationCodeRequest;\n try {\n parsedRequest = JSON.parse(base64Decode(encodedTokenRequest));\n } catch (e) {\n this.logger.errorPii(`Attempted to parse: ${encodedTokenRequest}`);\n this.logger.error(\n `Parsing cached token request threw with error: ${e}`\n );\n throw createBrowserAuthError(\n BrowserAuthErrorCodes.unableToParseTokenRequestCacheError\n );\n }\n this.removeTemporaryItem(\n this.generateCacheKey(TemporaryCacheKeys.REQUEST_PARAMS)\n );\n\n // Get cached authority and use if no authority is cached with request.\n if (!parsedRequest.authority) {\n const authorityCacheKey: string = this.generateAuthorityKey(state);\n const cachedAuthority = this.getTemporaryCache(authorityCacheKey);\n if (!cachedAuthority) {\n throw createBrowserAuthError(\n BrowserAuthErrorCodes.noCachedAuthorityError\n );\n }\n parsedRequest.authority = cachedAuthority;\n }\n\n return parsedRequest;\n }\n\n /**\n * Gets cached native request for redirect flows\n */\n getCachedNativeRequest(): NativeTokenRequest | null {\n this.logger.trace(\"BrowserCacheManager.getCachedNativeRequest called\");\n const cachedRequest = this.getTemporaryCache(\n TemporaryCacheKeys.NATIVE_REQUEST,\n true\n );\n if (!cachedRequest) {\n this.logger.trace(\n \"BrowserCacheManager.getCachedNativeRequest: No cached native request found\"\n );\n return null;\n }\n\n const parsedRequest = this.validateAndParseJson(\n cachedRequest\n ) as NativeTokenRequest;\n if (!parsedRequest) {\n this.logger.error(\n \"BrowserCacheManager.getCachedNativeRequest: Unable to parse native request\"\n );\n return null;\n }\n\n return parsedRequest;\n }\n\n isInteractionInProgress(matchClientId?: boolean): boolean {\n const clientId = this.getInteractionInProgress();\n\n if (matchClientId) {\n return clientId === this.clientId;\n } else {\n return !!clientId;\n }\n }\n\n getInteractionInProgress(): string | null {\n const key = `${Constants.CACHE_PREFIX}.${TemporaryCacheKeys.INTERACTION_STATUS_KEY}`;\n return this.getTemporaryCache(key, false);\n }\n\n setInteractionInProgress(inProgress: boolean): void {\n // Ensure we don't overwrite interaction in progress for a different clientId\n const key = `${Constants.CACHE_PREFIX}.${TemporaryCacheKeys.INTERACTION_STATUS_KEY}`;\n if (inProgress) {\n if (this.getInteractionInProgress()) {\n throw createBrowserAuthError(\n BrowserAuthErrorCodes.interactionInProgress\n );\n } else {\n // No interaction is in progress\n this.setTemporaryCache(key, this.clientId, false);\n }\n } else if (\n !inProgress &&\n this.getInteractionInProgress() === this.clientId\n ) {\n this.removeTemporaryItem(key);\n }\n }\n\n /**\n * Returns username retrieved from ADAL or MSAL v1 idToken\n * @deprecated\n */\n getLegacyLoginHint(): string | null {\n // Only check for adal/msal token if no SSO params are being used\n const adalIdTokenString = this.getTemporaryCache(\n PersistentCacheKeys.ADAL_ID_TOKEN\n );\n if (adalIdTokenString) {\n this.browserStorage.removeItem(PersistentCacheKeys.ADAL_ID_TOKEN);\n this.logger.verbose(\"Cached ADAL id token retrieved.\");\n }\n\n // Check for cached MSAL v1 id token\n const msalIdTokenString = this.getTemporaryCache(\n PersistentCacheKeys.ID_TOKEN,\n true\n );\n if (msalIdTokenString) {\n this.browserStorage.removeItem(\n this.generateCacheKey(PersistentCacheKeys.ID_TOKEN)\n );\n this.logger.verbose(\"Cached MSAL.js v1 id token retrieved\");\n }\n\n const cachedIdTokenString = msalIdTokenString || adalIdTokenString;\n if (cachedIdTokenString) {\n const idTokenClaims = AuthToken.extractTokenClaims(\n cachedIdTokenString,\n base64Decode\n );\n if (idTokenClaims.preferred_username) {\n this.logger.verbose(\n \"No SSO params used and ADAL/MSAL v1 token retrieved, setting ADAL/MSAL v1 preferred_username as loginHint\"\n );\n return idTokenClaims.preferred_username;\n } else if (idTokenClaims.upn) {\n this.logger.verbose(\n \"No SSO params used and ADAL/MSAL v1 token retrieved, setting ADAL/MSAL v1 upn as loginHint\"\n );\n return idTokenClaims.upn;\n } else {\n this.logger.verbose(\n \"No SSO params used and ADAL/MSAL v1 token retrieved, however, no account hint claim found. Enable preferred_username or upn id token claim to get SSO.\"\n );\n }\n }\n\n return null;\n }\n\n /**\n * Updates a credential's cache key if the current cache key is outdated\n */\n updateCredentialCacheKey(\n currentCacheKey: string,\n credential: ValidCredentialType\n ): string {\n const updatedCacheKey = CacheHelpers.generateCredentialKey(credential);\n\n if (currentCacheKey !== updatedCacheKey) {\n const cacheItem = this.getItem(currentCacheKey);\n if (cacheItem) {\n this.browserStorage.removeItem(currentCacheKey);\n this.setItem(updatedCacheKey, cacheItem);\n this.logger.verbose(\n `Updated an outdated ${credential.credentialType} cache key`\n );\n return updatedCacheKey;\n } else {\n this.logger.error(\n `Attempted to update an outdated ${credential.credentialType} cache key but no item matching the outdated key was found in storage`\n );\n }\n }\n\n return currentCacheKey;\n }\n\n /**\n * Builds credential entities from AuthenticationResult object and saves the resulting credentials to the cache\n * @param result\n * @param request\n */\n async hydrateCache(\n result: AuthenticationResult,\n request:\n | SilentRequest\n | SsoSilentRequest\n | RedirectRequest\n | PopupRequest\n ): Promise {\n const idTokenEntity = CacheHelpers.createIdTokenEntity(\n result.account?.homeAccountId,\n result.account?.environment,\n result.idToken,\n this.clientId,\n result.tenantId\n );\n\n let claimsHash;\n if (request.claims) {\n claimsHash = await this.cryptoImpl.hashString(request.claims);\n }\n\n /**\n * meta data for cache stores time in seconds from epoch\n * AuthenticationResult returns expiresOn and extExpiresOn in milliseconds (as a Date object which is in ms)\n * We need to map these for the cache when building tokens from AuthenticationResult\n *\n * The next MSAL VFuture should map these both to same value if possible\n */\n\n const accessTokenEntity = CacheHelpers.createAccessTokenEntity(\n result.account?.homeAccountId,\n result.account.environment,\n result.accessToken,\n this.clientId,\n result.tenantId,\n result.scopes.join(\" \"),\n result.expiresOn ? result.expiresOn.getTime() / 1000 : 0,\n result.extExpiresOn ? result.extExpiresOn.getTime() / 1000 : 0,\n base64Decode,\n undefined, // refreshOn\n result.tokenType as AuthenticationScheme,\n undefined, // userAssertionHash\n request.sshKid,\n request.claims,\n claimsHash\n );\n\n const cacheRecord = {\n idToken: idTokenEntity,\n accessToken: accessTokenEntity,\n };\n return this.saveCacheRecord(cacheRecord);\n }\n\n /**\n * saves a cache record\n * @param cacheRecord {CacheRecord}\n * @param storeInCache {?StoreInCache}\n * @param correlationId {?string} correlation id\n */\n async saveCacheRecord(\n cacheRecord: CacheRecord,\n storeInCache?: StoreInCache,\n correlationId?: string\n ): Promise {\n try {\n await super.saveCacheRecord(\n cacheRecord,\n storeInCache,\n correlationId\n );\n } catch (e) {\n if (\n e instanceof CacheError &&\n this.performanceClient &&\n correlationId\n ) {\n try {\n const tokenKeys = this.getTokenKeys();\n\n this.performanceClient.addFields(\n {\n cacheRtCount: tokenKeys.refreshToken.length,\n cacheIdCount: tokenKeys.idToken.length,\n cacheAtCount: tokenKeys.accessToken.length,\n },\n correlationId\n );\n } catch (e) {}\n }\n\n throw e;\n }\n }\n}\n\nexport const DEFAULT_BROWSER_CACHE_MANAGER = (\n clientId: string,\n logger: Logger\n): BrowserCacheManager => {\n const cacheOptions: Required = {\n cacheLocation: BrowserCacheLocation.MemoryStorage,\n temporaryCacheLocation: BrowserCacheLocation.MemoryStorage,\n storeAuthStateInCookie: false,\n secureCookies: false,\n cacheMigrationEnabled: false,\n claimsBasedCachingEnabled: false,\n };\n return new BrowserCacheManager(\n clientId,\n cacheOptions,\n DEFAULT_CRYPTO_IMPLEMENTATION,\n logger\n );\n};\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nexport const EventType = {\n INITIALIZE_START: \"msal:initializeStart\",\n INITIALIZE_END: \"msal:initializeEnd\",\n ACCOUNT_ADDED: \"msal:accountAdded\",\n ACCOUNT_REMOVED: \"msal:accountRemoved\",\n ACTIVE_ACCOUNT_CHANGED: \"msal:activeAccountChanged\",\n LOGIN_START: \"msal:loginStart\",\n LOGIN_SUCCESS: \"msal:loginSuccess\",\n LOGIN_FAILURE: \"msal:loginFailure\",\n ACQUIRE_TOKEN_START: \"msal:acquireTokenStart\",\n ACQUIRE_TOKEN_SUCCESS: \"msal:acquireTokenSuccess\",\n ACQUIRE_TOKEN_FAILURE: \"msal:acquireTokenFailure\",\n ACQUIRE_TOKEN_NETWORK_START: \"msal:acquireTokenFromNetworkStart\",\n SSO_SILENT_START: \"msal:ssoSilentStart\",\n SSO_SILENT_SUCCESS: \"msal:ssoSilentSuccess\",\n SSO_SILENT_FAILURE: \"msal:ssoSilentFailure\",\n ACQUIRE_TOKEN_BY_CODE_START: \"msal:acquireTokenByCodeStart\",\n ACQUIRE_TOKEN_BY_CODE_SUCCESS: \"msal:acquireTokenByCodeSuccess\",\n ACQUIRE_TOKEN_BY_CODE_FAILURE: \"msal:acquireTokenByCodeFailure\",\n HANDLE_REDIRECT_START: \"msal:handleRedirectStart\",\n HANDLE_REDIRECT_END: \"msal:handleRedirectEnd\",\n POPUP_OPENED: \"msal:popupOpened\",\n LOGOUT_START: \"msal:logoutStart\",\n LOGOUT_SUCCESS: \"msal:logoutSuccess\",\n LOGOUT_FAILURE: \"msal:logoutFailure\",\n LOGOUT_END: \"msal:logoutEnd\",\n RESTORE_FROM_BFCACHE: \"msal:restoreFromBFCache\",\n} as const;\nexport type EventType = (typeof EventType)[keyof typeof EventType];\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { Logger } from \"@azure/msal-common/browser\";\nimport { InteractionType } from \"../utils/BrowserConstants.js\";\nimport {\n EventCallbackFunction,\n EventError,\n EventMessage,\n EventPayload,\n} from \"./EventMessage.js\";\nimport { EventType } from \"./EventType.js\";\nimport { createGuid } from \"../utils/BrowserUtils.js\";\n\nexport class EventHandler {\n // Callback for subscribing to events\n private eventCallbacks: Map<\n string,\n [EventCallbackFunction, Array]\n >;\n private logger: Logger;\n\n constructor(logger?: Logger) {\n this.eventCallbacks = new Map();\n this.logger = logger || new Logger({});\n }\n\n /**\n * Adds event callbacks to array\n * @param callback - callback to be invoked when an event is raised\n * @param eventTypes - list of events that this callback will be invoked for, if not provided callback will be invoked for all events\n * @param callbackId - Identifier for the callback, used to locate and remove the callback when no longer required\n */\n addEventCallback(\n callback: EventCallbackFunction,\n eventTypes?: Array,\n callbackId?: string\n ): string | null {\n if (typeof window !== \"undefined\") {\n const id = callbackId || createGuid();\n if (this.eventCallbacks.has(id)) {\n this.logger.error(\n `Event callback with id: ${id} is already registered. Please provide a unique id or remove the existing callback and try again.`\n );\n return null;\n }\n this.eventCallbacks.set(id, [callback, eventTypes || []]);\n this.logger.verbose(`Event callback registered with id: ${id}`);\n\n return id;\n }\n\n return null;\n }\n\n /**\n * Removes callback with provided id from callback array\n * @param callbackId\n */\n removeEventCallback(callbackId: string): void {\n this.eventCallbacks.delete(callbackId);\n this.logger.verbose(`Event callback ${callbackId} removed.`);\n }\n\n /**\n * Emits events by calling callback with event message\n * @param eventType\n * @param interactionType\n * @param payload\n * @param error\n */\n emitEvent(\n eventType: EventType,\n interactionType?: InteractionType,\n payload?: EventPayload,\n error?: EventError\n ): void {\n if (typeof window !== \"undefined\") {\n const message: EventMessage = {\n eventType: eventType,\n interactionType: interactionType || null,\n payload: payload || null,\n error: error || null,\n timestamp: Date.now(),\n };\n\n this.eventCallbacks.forEach(\n (\n [callback, eventTypes]: [\n EventCallbackFunction,\n Array\n ],\n callbackId: string\n ) => {\n if (\n eventTypes.length === 0 ||\n eventTypes.includes(eventType)\n ) {\n this.logger.verbose(\n `Emitting event to callback ${callbackId}: ${eventType}`\n );\n callback.apply(null, [message]);\n }\n }\n );\n }\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { AuthError } from \"./AuthError.js\";\n\n/**\n * Error thrown when there is an error with the server code, for example, unavailability.\n */\nexport class ServerError extends AuthError {\n /**\n * Server error number;\n */\n readonly errorNo?: string;\n\n /**\n * Http status number;\n */\n readonly status?: number;\n\n constructor(\n errorCode?: string,\n errorMessage?: string,\n subError?: string,\n errorNo?: string,\n status?: number\n ) {\n super(errorCode, errorMessage, subError);\n this.name = \"ServerError\";\n this.errorNo = errorNo;\n this.status = status;\n\n Object.setPrototypeOf(this, ServerError.prototype);\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { NetworkResponse } from \"./NetworkResponse.js\";\nimport { ServerAuthorizationTokenResponse } from \"../response/ServerAuthorizationTokenResponse.js\";\nimport {\n HeaderNames,\n ThrottlingConstants,\n Constants,\n} from \"../utils/Constants.js\";\nimport { CacheManager } from \"../cache/CacheManager.js\";\nimport { ServerError } from \"../error/ServerError.js\";\nimport { RequestThumbprint } from \"./RequestThumbprint.js\";\nimport { ThrottlingEntity } from \"../cache/entities/ThrottlingEntity.js\";\nimport { BaseAuthRequest } from \"../request/BaseAuthRequest.js\";\n\n/** @internal */\nexport class ThrottlingUtils {\n /**\n * Prepares a RequestThumbprint to be stored as a key.\n * @param thumbprint\n */\n static generateThrottlingStorageKey(thumbprint: RequestThumbprint): string {\n return `${ThrottlingConstants.THROTTLING_PREFIX}.${JSON.stringify(\n thumbprint\n )}`;\n }\n\n /**\n * Performs necessary throttling checks before a network request.\n * @param cacheManager\n * @param thumbprint\n */\n static preProcess(\n cacheManager: CacheManager,\n thumbprint: RequestThumbprint\n ): void {\n const key = ThrottlingUtils.generateThrottlingStorageKey(thumbprint);\n const value = cacheManager.getThrottlingCache(key);\n\n if (value) {\n if (value.throttleTime < Date.now()) {\n cacheManager.removeItem(key);\n return;\n }\n throw new ServerError(\n value.errorCodes?.join(\" \") || Constants.EMPTY_STRING,\n value.errorMessage,\n value.subError\n );\n }\n }\n\n /**\n * Performs necessary throttling checks after a network request.\n * @param cacheManager\n * @param thumbprint\n * @param response\n */\n static postProcess(\n cacheManager: CacheManager,\n thumbprint: RequestThumbprint,\n response: NetworkResponse\n ): void {\n if (\n ThrottlingUtils.checkResponseStatus(response) ||\n ThrottlingUtils.checkResponseForRetryAfter(response)\n ) {\n const thumbprintValue: ThrottlingEntity = {\n throttleTime: ThrottlingUtils.calculateThrottleTime(\n parseInt(response.headers[HeaderNames.RETRY_AFTER])\n ),\n error: response.body.error,\n errorCodes: response.body.error_codes,\n errorMessage: response.body.error_description,\n subError: response.body.suberror,\n };\n cacheManager.setThrottlingCache(\n ThrottlingUtils.generateThrottlingStorageKey(thumbprint),\n thumbprintValue\n );\n }\n }\n\n /**\n * Checks a NetworkResponse object's status codes against 429 or 5xx\n * @param response\n */\n static checkResponseStatus(\n response: NetworkResponse\n ): boolean {\n return (\n response.status === 429 ||\n (response.status >= 500 && response.status < 600)\n );\n }\n\n /**\n * Checks a NetworkResponse object's RetryAfter header\n * @param response\n */\n static checkResponseForRetryAfter(\n response: NetworkResponse\n ): boolean {\n if (response.headers) {\n return (\n response.headers.hasOwnProperty(HeaderNames.RETRY_AFTER) &&\n (response.status < 200 || response.status >= 300)\n );\n }\n return false;\n }\n\n /**\n * Calculates the Unix-time value for a throttle to expire given throttleTime in seconds.\n * @param throttleTime\n */\n static calculateThrottleTime(throttleTime: number): number {\n const time = throttleTime <= 0 ? 0 : throttleTime;\n\n const currentSeconds = Date.now() / 1000;\n return Math.floor(\n Math.min(\n currentSeconds +\n (time || ThrottlingConstants.DEFAULT_THROTTLE_TIME_SECONDS),\n currentSeconds +\n ThrottlingConstants.DEFAULT_MAX_THROTTLE_TIME_SECONDS\n ) * 1000\n );\n }\n\n static removeThrottle(\n cacheManager: CacheManager,\n clientId: string,\n request: BaseAuthRequest,\n homeAccountIdentifier?: string\n ): void {\n const thumbprint: RequestThumbprint = {\n clientId: clientId,\n authority: request.authority,\n scopes: request.scopes,\n homeAccountIdentifier: homeAccountIdentifier,\n claims: request.claims,\n authenticationScheme: request.authenticationScheme,\n resourceRequestMethod: request.resourceRequestMethod,\n resourceRequestUri: request.resourceRequestUri,\n shrClaims: request.shrClaims,\n sshKid: request.sshKid,\n };\n\n const key = this.generateThrottlingStorageKey(thumbprint);\n cacheManager.removeItem(key);\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nexport const CLIENT_ID = \"client_id\";\nexport const REDIRECT_URI = \"redirect_uri\";\nexport const RESPONSE_TYPE = \"response_type\";\nexport const RESPONSE_MODE = \"response_mode\";\nexport const GRANT_TYPE = \"grant_type\";\nexport const CLAIMS = \"claims\";\nexport const SCOPE = \"scope\";\nexport const ERROR = \"error\";\nexport const ERROR_DESCRIPTION = \"error_description\";\nexport const ACCESS_TOKEN = \"access_token\";\nexport const ID_TOKEN = \"id_token\";\nexport const REFRESH_TOKEN = \"refresh_token\";\nexport const EXPIRES_IN = \"expires_in\";\nexport const REFRESH_TOKEN_EXPIRES_IN = \"refresh_token_expires_in\";\nexport const STATE = \"state\";\nexport const NONCE = \"nonce\";\nexport const PROMPT = \"prompt\";\nexport const SESSION_STATE = \"session_state\";\nexport const CLIENT_INFO = \"client_info\";\nexport const CODE = \"code\";\nexport const CODE_CHALLENGE = \"code_challenge\";\nexport const CODE_CHALLENGE_METHOD = \"code_challenge_method\";\nexport const CODE_VERIFIER = \"code_verifier\";\nexport const CLIENT_REQUEST_ID = \"client-request-id\";\nexport const X_CLIENT_SKU = \"x-client-SKU\";\nexport const X_CLIENT_VER = \"x-client-VER\";\nexport const X_CLIENT_OS = \"x-client-OS\";\nexport const X_CLIENT_CPU = \"x-client-CPU\";\nexport const X_CLIENT_CURR_TELEM = \"x-client-current-telemetry\";\nexport const X_CLIENT_LAST_TELEM = \"x-client-last-telemetry\";\nexport const X_MS_LIB_CAPABILITY = \"x-ms-lib-capability\";\nexport const X_APP_NAME = \"x-app-name\";\nexport const X_APP_VER = \"x-app-ver\";\nexport const POST_LOGOUT_URI = \"post_logout_redirect_uri\";\nexport const ID_TOKEN_HINT = \"id_token_hint\";\nexport const DEVICE_CODE = \"device_code\";\nexport const CLIENT_SECRET = \"client_secret\";\nexport const CLIENT_ASSERTION = \"client_assertion\";\nexport const CLIENT_ASSERTION_TYPE = \"client_assertion_type\";\nexport const TOKEN_TYPE = \"token_type\";\nexport const REQ_CNF = \"req_cnf\";\nexport const OBO_ASSERTION = \"assertion\";\nexport const REQUESTED_TOKEN_USE = \"requested_token_use\";\nexport const ON_BEHALF_OF = \"on_behalf_of\";\nexport const FOCI = \"foci\";\nexport const CCS_HEADER = \"X-AnchorMailbox\";\nexport const RETURN_SPA_CODE = \"return_spa_code\";\nexport const NATIVE_BROKER = \"nativebroker\";\nexport const LOGOUT_HINT = \"logout_hint\";\nexport const SID = \"sid\";\nexport const LOGIN_HINT = \"login_hint\";\nexport const DOMAIN_HINT = \"domain_hint\";\nexport const X_CLIENT_EXTRA_SKU = \"x-client-xtra-sku\";\nexport const BROKER_CLIENT_ID = \"brk_client_id\";\nexport const BROKER_REDIRECT_URI = \"brk_redirect_uri\";\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport {\n createClientConfigurationError,\n ClientConfigurationErrorCodes,\n} from \"../error/ClientConfigurationError.js\";\nimport { PromptValue, CodeChallengeMethodValues } from \"../utils/Constants.js\";\n\n/**\n * Validates server consumable params from the \"request\" objects\n */\nexport class RequestValidator {\n /**\n * Utility to check if the `redirectUri` in the request is a non-null value\n * @param redirectUri\n */\n static validateRedirectUri(redirectUri: string): void {\n if (!redirectUri) {\n throw createClientConfigurationError(\n ClientConfigurationErrorCodes.redirectUriEmpty\n );\n }\n }\n\n /**\n * Utility to validate prompt sent by the user in the request\n * @param prompt\n */\n static validatePrompt(prompt: string): void {\n const promptValues = [];\n\n for (const value in PromptValue) {\n promptValues.push(PromptValue[value]);\n }\n\n if (promptValues.indexOf(prompt) < 0) {\n throw createClientConfigurationError(\n ClientConfigurationErrorCodes.invalidPromptValue\n );\n }\n }\n\n static validateClaims(claims: string): void {\n try {\n JSON.parse(claims);\n } catch (e) {\n throw createClientConfigurationError(\n ClientConfigurationErrorCodes.invalidClaims\n );\n }\n }\n\n /**\n * Utility to validate code_challenge and code_challenge_method\n * @param codeChallenge\n * @param codeChallengeMethod\n */\n static validateCodeChallengeParams(\n codeChallenge: string,\n codeChallengeMethod: string\n ): void {\n if (!codeChallenge || !codeChallengeMethod) {\n throw createClientConfigurationError(\n ClientConfigurationErrorCodes.pkceParamsMissing\n );\n } else {\n this.validateCodeChallengeMethod(codeChallengeMethod);\n }\n }\n\n /**\n * Utility to validate code_challenge_method\n * @param codeChallengeMethod\n */\n static validateCodeChallengeMethod(codeChallengeMethod: string): void {\n if (\n [\n CodeChallengeMethodValues.PLAIN,\n CodeChallengeMethodValues.S256,\n ].indexOf(codeChallengeMethod) < 0\n ) {\n throw createClientConfigurationError(\n ClientConfigurationErrorCodes.invalidCodeChallengeMethod\n );\n }\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport {\n Constants,\n ResponseMode,\n CLIENT_INFO,\n AuthenticationScheme,\n ClaimsRequestKeys,\n PasswordGrantConstants,\n OIDC_DEFAULT_SCOPES,\n ThrottlingConstants,\n HeaderNames,\n} from \"../utils/Constants.js\";\nimport * as AADServerParamKeys from \"../constants/AADServerParamKeys.js\";\nimport { ScopeSet } from \"./ScopeSet.js\";\nimport {\n createClientConfigurationError,\n ClientConfigurationErrorCodes,\n} from \"../error/ClientConfigurationError.js\";\nimport { StringDict } from \"../utils/MsalTypes.js\";\nimport { RequestValidator } from \"./RequestValidator.js\";\nimport {\n ApplicationTelemetry,\n LibraryInfo,\n} from \"../config/ClientConfiguration.js\";\nimport { ServerTelemetryManager } from \"../telemetry/server/ServerTelemetryManager.js\";\nimport { ClientInfo } from \"../account/ClientInfo.js\";\nimport { IPerformanceClient } from \"../telemetry/performance/IPerformanceClient.js\";\n\nfunction instrumentBrokerParams(\n parameters: Map,\n correlationId?: string,\n performanceClient?: IPerformanceClient\n) {\n if (!correlationId) {\n return;\n }\n\n const clientId = parameters.get(AADServerParamKeys.CLIENT_ID);\n if (clientId && parameters.has(AADServerParamKeys.BROKER_CLIENT_ID)) {\n performanceClient?.addFields(\n {\n embeddedClientId: clientId,\n embeddedRedirectUri: parameters.get(\n AADServerParamKeys.REDIRECT_URI\n ),\n },\n correlationId\n );\n }\n}\n\n/** @internal */\nexport class RequestParameterBuilder {\n private parameters: Map;\n private readonly performanceClient?: IPerformanceClient;\n private readonly correlationId?: string;\n\n constructor(\n correlationId?: string,\n performanceClient?: IPerformanceClient\n ) {\n this.parameters = new Map();\n this.performanceClient = performanceClient;\n this.correlationId = correlationId;\n }\n\n /**\n * add response_type = code\n */\n addResponseTypeCode(): void {\n this.parameters.set(\n AADServerParamKeys.RESPONSE_TYPE,\n encodeURIComponent(Constants.CODE_RESPONSE_TYPE)\n );\n }\n\n /**\n * add response_type = token id_token\n */\n addResponseTypeForTokenAndIdToken(): void {\n this.parameters.set(\n AADServerParamKeys.RESPONSE_TYPE,\n encodeURIComponent(\n `${Constants.TOKEN_RESPONSE_TYPE} ${Constants.ID_TOKEN_RESPONSE_TYPE}`\n )\n );\n }\n\n /**\n * add response_mode. defaults to query.\n * @param responseMode\n */\n addResponseMode(responseMode?: ResponseMode): void {\n this.parameters.set(\n AADServerParamKeys.RESPONSE_MODE,\n encodeURIComponent(responseMode ? responseMode : ResponseMode.QUERY)\n );\n }\n\n /**\n * Add flag to indicate STS should attempt to use WAM if available\n */\n addNativeBroker(): void {\n this.parameters.set(\n AADServerParamKeys.NATIVE_BROKER,\n encodeURIComponent(\"1\")\n );\n }\n\n /**\n * add scopes. set addOidcScopes to false to prevent default scopes in non-user scenarios\n * @param scopeSet\n * @param addOidcScopes\n */\n addScopes(\n scopes: string[],\n addOidcScopes: boolean = true,\n defaultScopes: Array = OIDC_DEFAULT_SCOPES\n ): void {\n // Always add openid to the scopes when adding OIDC scopes\n if (\n addOidcScopes &&\n !defaultScopes.includes(\"openid\") &&\n !scopes.includes(\"openid\")\n ) {\n defaultScopes.push(\"openid\");\n }\n const requestScopes = addOidcScopes\n ? [...(scopes || []), ...defaultScopes]\n : scopes || [];\n const scopeSet = new ScopeSet(requestScopes);\n this.parameters.set(\n AADServerParamKeys.SCOPE,\n encodeURIComponent(scopeSet.printScopes())\n );\n }\n\n /**\n * add clientId\n * @param clientId\n */\n addClientId(clientId: string): void {\n this.parameters.set(\n AADServerParamKeys.CLIENT_ID,\n encodeURIComponent(clientId)\n );\n }\n\n /**\n * add redirect_uri\n * @param redirectUri\n */\n addRedirectUri(redirectUri: string): void {\n RequestValidator.validateRedirectUri(redirectUri);\n this.parameters.set(\n AADServerParamKeys.REDIRECT_URI,\n encodeURIComponent(redirectUri)\n );\n }\n\n /**\n * add post logout redirectUri\n * @param redirectUri\n */\n addPostLogoutRedirectUri(redirectUri: string): void {\n RequestValidator.validateRedirectUri(redirectUri);\n this.parameters.set(\n AADServerParamKeys.POST_LOGOUT_URI,\n encodeURIComponent(redirectUri)\n );\n }\n\n /**\n * add id_token_hint to logout request\n * @param idTokenHint\n */\n addIdTokenHint(idTokenHint: string): void {\n this.parameters.set(\n AADServerParamKeys.ID_TOKEN_HINT,\n encodeURIComponent(idTokenHint)\n );\n }\n\n /**\n * add domain_hint\n * @param domainHint\n */\n addDomainHint(domainHint: string): void {\n this.parameters.set(\n AADServerParamKeys.DOMAIN_HINT,\n encodeURIComponent(domainHint)\n );\n }\n\n /**\n * add login_hint\n * @param loginHint\n */\n addLoginHint(loginHint: string): void {\n this.parameters.set(\n AADServerParamKeys.LOGIN_HINT,\n encodeURIComponent(loginHint)\n );\n }\n\n /**\n * Adds the CCS (Cache Credential Service) query parameter for login_hint\n * @param loginHint\n */\n addCcsUpn(loginHint: string): void {\n this.parameters.set(\n HeaderNames.CCS_HEADER,\n encodeURIComponent(`UPN:${loginHint}`)\n );\n }\n\n /**\n * Adds the CCS (Cache Credential Service) query parameter for account object\n * @param loginHint\n */\n addCcsOid(clientInfo: ClientInfo): void {\n this.parameters.set(\n HeaderNames.CCS_HEADER,\n encodeURIComponent(`Oid:${clientInfo.uid}@${clientInfo.utid}`)\n );\n }\n\n /**\n * add sid\n * @param sid\n */\n addSid(sid: string): void {\n this.parameters.set(AADServerParamKeys.SID, encodeURIComponent(sid));\n }\n\n /**\n * add claims\n * @param claims\n */\n addClaims(claims?: string, clientCapabilities?: Array): void {\n const mergedClaims = this.addClientCapabilitiesToClaims(\n claims,\n clientCapabilities\n );\n RequestValidator.validateClaims(mergedClaims);\n this.parameters.set(\n AADServerParamKeys.CLAIMS,\n encodeURIComponent(mergedClaims)\n );\n }\n\n /**\n * add correlationId\n * @param correlationId\n */\n addCorrelationId(correlationId: string): void {\n this.parameters.set(\n AADServerParamKeys.CLIENT_REQUEST_ID,\n encodeURIComponent(correlationId)\n );\n }\n\n /**\n * add library info query params\n * @param libraryInfo\n */\n addLibraryInfo(libraryInfo: LibraryInfo): void {\n // Telemetry Info\n this.parameters.set(AADServerParamKeys.X_CLIENT_SKU, libraryInfo.sku);\n this.parameters.set(\n AADServerParamKeys.X_CLIENT_VER,\n libraryInfo.version\n );\n if (libraryInfo.os) {\n this.parameters.set(AADServerParamKeys.X_CLIENT_OS, libraryInfo.os);\n }\n if (libraryInfo.cpu) {\n this.parameters.set(\n AADServerParamKeys.X_CLIENT_CPU,\n libraryInfo.cpu\n );\n }\n }\n\n /**\n * Add client telemetry parameters\n * @param appTelemetry\n */\n addApplicationTelemetry(appTelemetry: ApplicationTelemetry): void {\n if (appTelemetry?.appName) {\n this.parameters.set(\n AADServerParamKeys.X_APP_NAME,\n appTelemetry.appName\n );\n }\n\n if (appTelemetry?.appVersion) {\n this.parameters.set(\n AADServerParamKeys.X_APP_VER,\n appTelemetry.appVersion\n );\n }\n }\n\n /**\n * add prompt\n * @param prompt\n */\n addPrompt(prompt: string): void {\n RequestValidator.validatePrompt(prompt);\n this.parameters.set(\n `${AADServerParamKeys.PROMPT}`,\n encodeURIComponent(prompt)\n );\n }\n\n /**\n * add state\n * @param state\n */\n addState(state: string): void {\n if (state) {\n this.parameters.set(\n AADServerParamKeys.STATE,\n encodeURIComponent(state)\n );\n }\n }\n\n /**\n * add nonce\n * @param nonce\n */\n addNonce(nonce: string): void {\n this.parameters.set(\n AADServerParamKeys.NONCE,\n encodeURIComponent(nonce)\n );\n }\n\n /**\n * add code_challenge and code_challenge_method\n * - throw if either of them are not passed\n * @param codeChallenge\n * @param codeChallengeMethod\n */\n addCodeChallengeParams(\n codeChallenge: string,\n codeChallengeMethod: string\n ): void {\n RequestValidator.validateCodeChallengeParams(\n codeChallenge,\n codeChallengeMethod\n );\n if (codeChallenge && codeChallengeMethod) {\n this.parameters.set(\n AADServerParamKeys.CODE_CHALLENGE,\n encodeURIComponent(codeChallenge)\n );\n this.parameters.set(\n AADServerParamKeys.CODE_CHALLENGE_METHOD,\n encodeURIComponent(codeChallengeMethod)\n );\n } else {\n throw createClientConfigurationError(\n ClientConfigurationErrorCodes.pkceParamsMissing\n );\n }\n }\n\n /**\n * add the `authorization_code` passed by the user to exchange for a token\n * @param code\n */\n addAuthorizationCode(code: string): void {\n this.parameters.set(AADServerParamKeys.CODE, encodeURIComponent(code));\n }\n\n /**\n * add the `authorization_code` passed by the user to exchange for a token\n * @param code\n */\n addDeviceCode(code: string): void {\n this.parameters.set(\n AADServerParamKeys.DEVICE_CODE,\n encodeURIComponent(code)\n );\n }\n\n /**\n * add the `refreshToken` passed by the user\n * @param refreshToken\n */\n addRefreshToken(refreshToken: string): void {\n this.parameters.set(\n AADServerParamKeys.REFRESH_TOKEN,\n encodeURIComponent(refreshToken)\n );\n }\n\n /**\n * add the `code_verifier` passed by the user to exchange for a token\n * @param codeVerifier\n */\n addCodeVerifier(codeVerifier: string): void {\n this.parameters.set(\n AADServerParamKeys.CODE_VERIFIER,\n encodeURIComponent(codeVerifier)\n );\n }\n\n /**\n * add client_secret\n * @param clientSecret\n */\n addClientSecret(clientSecret: string): void {\n this.parameters.set(\n AADServerParamKeys.CLIENT_SECRET,\n encodeURIComponent(clientSecret)\n );\n }\n\n /**\n * add clientAssertion for confidential client flows\n * @param clientAssertion\n */\n addClientAssertion(clientAssertion: string): void {\n if (clientAssertion) {\n this.parameters.set(\n AADServerParamKeys.CLIENT_ASSERTION,\n encodeURIComponent(clientAssertion)\n );\n }\n }\n\n /**\n * add clientAssertionType for confidential client flows\n * @param clientAssertionType\n */\n addClientAssertionType(clientAssertionType: string): void {\n if (clientAssertionType) {\n this.parameters.set(\n AADServerParamKeys.CLIENT_ASSERTION_TYPE,\n encodeURIComponent(clientAssertionType)\n );\n }\n }\n\n /**\n * add OBO assertion for confidential client flows\n * @param clientAssertion\n */\n addOboAssertion(oboAssertion: string): void {\n this.parameters.set(\n AADServerParamKeys.OBO_ASSERTION,\n encodeURIComponent(oboAssertion)\n );\n }\n\n /**\n * add grant type\n * @param grantType\n */\n addRequestTokenUse(tokenUse: string): void {\n this.parameters.set(\n AADServerParamKeys.REQUESTED_TOKEN_USE,\n encodeURIComponent(tokenUse)\n );\n }\n\n /**\n * add grant type\n * @param grantType\n */\n addGrantType(grantType: string): void {\n this.parameters.set(\n AADServerParamKeys.GRANT_TYPE,\n encodeURIComponent(grantType)\n );\n }\n\n /**\n * add client info\n *\n */\n addClientInfo(): void {\n this.parameters.set(CLIENT_INFO, \"1\");\n }\n\n /**\n * add extraQueryParams\n * @param eQParams\n */\n addExtraQueryParameters(eQParams: StringDict): void {\n Object.entries(eQParams).forEach(([key, value]) => {\n if (!this.parameters.has(key) && value) {\n this.parameters.set(key, value);\n }\n });\n }\n\n addClientCapabilitiesToClaims(\n claims?: string,\n clientCapabilities?: Array\n ): string {\n let mergedClaims: object;\n\n // Parse provided claims into JSON object or initialize empty object\n if (!claims) {\n mergedClaims = {};\n } else {\n try {\n mergedClaims = JSON.parse(claims);\n } catch (e) {\n throw createClientConfigurationError(\n ClientConfigurationErrorCodes.invalidClaims\n );\n }\n }\n\n if (clientCapabilities && clientCapabilities.length > 0) {\n if (!mergedClaims.hasOwnProperty(ClaimsRequestKeys.ACCESS_TOKEN)) {\n // Add access_token key to claims object\n mergedClaims[ClaimsRequestKeys.ACCESS_TOKEN] = {};\n }\n\n // Add xms_cc claim with provided clientCapabilities to access_token key\n mergedClaims[ClaimsRequestKeys.ACCESS_TOKEN][\n ClaimsRequestKeys.XMS_CC\n ] = {\n values: clientCapabilities,\n };\n }\n\n return JSON.stringify(mergedClaims);\n }\n\n /**\n * adds `username` for Password Grant flow\n * @param username\n */\n addUsername(username: string): void {\n this.parameters.set(\n PasswordGrantConstants.username,\n encodeURIComponent(username)\n );\n }\n\n /**\n * adds `password` for Password Grant flow\n * @param password\n */\n addPassword(password: string): void {\n this.parameters.set(\n PasswordGrantConstants.password,\n encodeURIComponent(password)\n );\n }\n\n /**\n * add pop_jwk to query params\n * @param cnfString\n */\n addPopToken(cnfString: string): void {\n if (cnfString) {\n this.parameters.set(\n AADServerParamKeys.TOKEN_TYPE,\n AuthenticationScheme.POP\n );\n this.parameters.set(\n AADServerParamKeys.REQ_CNF,\n encodeURIComponent(cnfString)\n );\n }\n }\n\n /**\n * add SSH JWK and key ID to query params\n */\n addSshJwk(sshJwkString: string): void {\n if (sshJwkString) {\n this.parameters.set(\n AADServerParamKeys.TOKEN_TYPE,\n AuthenticationScheme.SSH\n );\n this.parameters.set(\n AADServerParamKeys.REQ_CNF,\n encodeURIComponent(sshJwkString)\n );\n }\n }\n\n /**\n * add server telemetry fields\n * @param serverTelemetryManager\n */\n addServerTelemetry(serverTelemetryManager: ServerTelemetryManager): void {\n this.parameters.set(\n AADServerParamKeys.X_CLIENT_CURR_TELEM,\n serverTelemetryManager.generateCurrentRequestHeaderValue()\n );\n this.parameters.set(\n AADServerParamKeys.X_CLIENT_LAST_TELEM,\n serverTelemetryManager.generateLastRequestHeaderValue()\n );\n }\n\n /**\n * Adds parameter that indicates to the server that throttling is supported\n */\n addThrottling(): void {\n this.parameters.set(\n AADServerParamKeys.X_MS_LIB_CAPABILITY,\n ThrottlingConstants.X_MS_LIB_CAPABILITY_VALUE\n );\n }\n\n /**\n * Adds logout_hint parameter for \"silent\" logout which prevent server account picker\n */\n addLogoutHint(logoutHint: string): void {\n this.parameters.set(\n AADServerParamKeys.LOGOUT_HINT,\n encodeURIComponent(logoutHint)\n );\n }\n\n addBrokerParameters(params: {\n brokerClientId: string;\n brokerRedirectUri: string;\n }): void {\n const brokerParams: StringDict = {};\n brokerParams[AADServerParamKeys.BROKER_CLIENT_ID] =\n params.brokerClientId;\n brokerParams[AADServerParamKeys.BROKER_REDIRECT_URI] =\n params.brokerRedirectUri;\n\n this.addExtraQueryParameters(brokerParams);\n }\n\n /**\n * Utility to create a URL from the params map\n */\n createQueryString(): string {\n const queryParameterArray: Array = new Array();\n\n this.parameters.forEach((value, key) => {\n queryParameterArray.push(`${key}=${value}`);\n });\n\n instrumentBrokerParams(\n this.parameters,\n this.correlationId,\n this.performanceClient\n );\n\n return queryParameterArray.join(\"&\");\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { Authority, formatAuthorityUri } from \"./Authority.js\";\nimport { INetworkModule } from \"../network/INetworkModule.js\";\nimport {\n createClientAuthError,\n ClientAuthErrorCodes,\n} from \"../error/ClientAuthError.js\";\nimport { ICacheManager } from \"../cache/interface/ICacheManager.js\";\nimport { AuthorityOptions } from \"./AuthorityOptions.js\";\nimport { Logger } from \"../logger/Logger.js\";\nimport { IPerformanceClient } from \"../telemetry/performance/IPerformanceClient.js\";\nimport { PerformanceEvents } from \"../telemetry/performance/PerformanceEvent.js\";\nimport { invokeAsync } from \"../utils/FunctionWrappers.js\";\n\n/**\n * Create an authority object of the correct type based on the url\n * Performs basic authority validation - checks to see if the authority is of a valid type (i.e. aad, b2c, adfs)\n *\n * Also performs endpoint discovery.\n *\n * @param authorityUri\n * @param networkClient\n * @param protocolMode\n * @internal\n */\nexport async function createDiscoveredInstance(\n authorityUri: string,\n networkClient: INetworkModule,\n cacheManager: ICacheManager,\n authorityOptions: AuthorityOptions,\n logger: Logger,\n correlationId: string,\n performanceClient?: IPerformanceClient\n): Promise {\n performanceClient?.addQueueMeasurement(\n PerformanceEvents.AuthorityFactoryCreateDiscoveredInstance,\n correlationId\n );\n const authorityUriFinal = Authority.transformCIAMAuthority(\n formatAuthorityUri(authorityUri)\n );\n\n // Initialize authority and perform discovery endpoint check.\n const acquireTokenAuthority: Authority = new Authority(\n authorityUriFinal,\n networkClient,\n cacheManager,\n authorityOptions,\n logger,\n correlationId,\n performanceClient\n );\n\n try {\n await invokeAsync(\n acquireTokenAuthority.resolveEndpointsAsync.bind(\n acquireTokenAuthority\n ),\n PerformanceEvents.AuthorityResolveEndpointsAsync,\n logger,\n performanceClient,\n correlationId\n )();\n return acquireTokenAuthority;\n } catch (e) {\n throw createClientAuthError(\n ClientAuthErrorCodes.endpointResolutionError\n );\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport {\n ClientConfiguration,\n buildClientConfiguration,\n CommonClientConfiguration,\n} from \"../config/ClientConfiguration.js\";\nimport {\n INetworkModule,\n NetworkRequestOptions,\n} from \"../network/INetworkModule.js\";\nimport { NetworkResponse } from \"../network/NetworkResponse.js\";\nimport { ICrypto } from \"../crypto/ICrypto.js\";\nimport { Authority } from \"../authority/Authority.js\";\nimport { Logger } from \"../logger/Logger.js\";\nimport { Constants, HeaderNames } from \"../utils/Constants.js\";\nimport { ServerAuthorizationTokenResponse } from \"../response/ServerAuthorizationTokenResponse.js\";\nimport { CacheManager } from \"../cache/CacheManager.js\";\nimport { ServerTelemetryManager } from \"../telemetry/server/ServerTelemetryManager.js\";\nimport { RequestThumbprint } from \"../network/RequestThumbprint.js\";\nimport { version, name } from \"../packageMetadata.js\";\nimport { CcsCredential, CcsCredentialType } from \"../account/CcsCredential.js\";\nimport { buildClientInfoFromHomeAccountId } from \"../account/ClientInfo.js\";\nimport { IPerformanceClient } from \"../telemetry/performance/IPerformanceClient.js\";\nimport { RequestParameterBuilder } from \"../request/RequestParameterBuilder.js\";\nimport { BaseAuthRequest } from \"../request/BaseAuthRequest.js\";\nimport { createDiscoveredInstance } from \"../authority/AuthorityFactory.js\";\nimport { PerformanceEvents } from \"../telemetry/performance/PerformanceEvent.js\";\nimport { ThrottlingUtils } from \"../network/ThrottlingUtils.js\";\nimport { AuthError } from \"../error/AuthError.js\";\nimport {\n ClientAuthErrorCodes,\n createClientAuthError,\n} from \"../error/ClientAuthError.js\";\nimport { NetworkError } from \"../error/NetworkError.js\";\nimport { invokeAsync } from \"../utils/FunctionWrappers.js\";\n\n/**\n * Base application class which will construct requests to send to and handle responses from the Microsoft STS using the authorization code flow.\n * @internal\n */\nexport abstract class BaseClient {\n // Logger object\n public logger: Logger;\n\n // Application config\n protected config: CommonClientConfiguration;\n\n // Crypto Interface\n protected cryptoUtils: ICrypto;\n\n // Storage Interface\n protected cacheManager: CacheManager;\n\n // Network Interface\n protected networkClient: INetworkModule;\n\n // Server Telemetry Manager\n protected serverTelemetryManager: ServerTelemetryManager | null;\n\n // Default authority object\n public authority: Authority;\n\n // Performance telemetry client\n protected performanceClient?: IPerformanceClient;\n\n protected constructor(\n configuration: ClientConfiguration,\n performanceClient?: IPerformanceClient\n ) {\n // Set the configuration\n this.config = buildClientConfiguration(configuration);\n\n // Initialize the logger\n this.logger = new Logger(this.config.loggerOptions, name, version);\n\n // Initialize crypto\n this.cryptoUtils = this.config.cryptoInterface;\n\n // Initialize storage interface\n this.cacheManager = this.config.storageInterface;\n\n // Set the network interface\n this.networkClient = this.config.networkInterface;\n\n // Set TelemetryManager\n this.serverTelemetryManager = this.config.serverTelemetryManager;\n\n // set Authority\n this.authority = this.config.authOptions.authority;\n\n // set performance telemetry client\n this.performanceClient = performanceClient;\n }\n\n /**\n * Creates default headers for requests to token endpoint\n */\n protected createTokenRequestHeaders(\n ccsCred?: CcsCredential\n ): Record {\n const headers: Record = {};\n headers[HeaderNames.CONTENT_TYPE] = Constants.URL_FORM_CONTENT_TYPE;\n if (!this.config.systemOptions.preventCorsPreflight && ccsCred) {\n switch (ccsCred.type) {\n case CcsCredentialType.HOME_ACCOUNT_ID:\n try {\n const clientInfo = buildClientInfoFromHomeAccountId(\n ccsCred.credential\n );\n headers[\n HeaderNames.CCS_HEADER\n ] = `Oid:${clientInfo.uid}@${clientInfo.utid}`;\n } catch (e) {\n this.logger.verbose(\n \"Could not parse home account ID for CCS Header: \" +\n e\n );\n }\n break;\n case CcsCredentialType.UPN:\n headers[\n HeaderNames.CCS_HEADER\n ] = `UPN: ${ccsCred.credential}`;\n break;\n }\n }\n return headers;\n }\n\n /**\n * Http post to token endpoint\n * @param tokenEndpoint\n * @param queryString\n * @param headers\n * @param thumbprint\n */\n protected async executePostToTokenEndpoint(\n tokenEndpoint: string,\n queryString: string,\n headers: Record,\n thumbprint: RequestThumbprint,\n correlationId: string,\n queuedEvent?: string\n ): Promise> {\n if (queuedEvent) {\n this.performanceClient?.addQueueMeasurement(\n queuedEvent,\n correlationId\n );\n }\n\n const response =\n await this.sendPostRequest(\n thumbprint,\n tokenEndpoint,\n { body: queryString, headers: headers },\n correlationId\n );\n\n if (\n this.config.serverTelemetryManager &&\n response.status < 500 &&\n response.status !== 429\n ) {\n // Telemetry data successfully logged by server, clear Telemetry cache\n this.config.serverTelemetryManager.clearTelemetryCache();\n }\n\n return response;\n }\n\n /**\n * Wraps sendPostRequestAsync with necessary preflight and postflight logic\n * @param thumbprint - Request thumbprint for throttling\n * @param tokenEndpoint - Endpoint to make the POST to\n * @param options - Body and Headers to include on the POST request\n * @param correlationId - CorrelationId for telemetry\n */\n async sendPostRequest(\n thumbprint: RequestThumbprint,\n tokenEndpoint: string,\n options: NetworkRequestOptions,\n correlationId: string\n ): Promise> {\n ThrottlingUtils.preProcess(this.cacheManager, thumbprint);\n\n let response;\n try {\n response = await invokeAsync(\n this.networkClient.sendPostRequestAsync.bind(\n this.networkClient\n ),\n PerformanceEvents.NetworkClientSendPostRequestAsync,\n this.logger,\n this.performanceClient,\n correlationId\n )(tokenEndpoint, options);\n const responseHeaders = response.headers || {};\n this.performanceClient?.addFields(\n {\n refreshTokenSize: response.body.refresh_token?.length || 0,\n httpVerToken:\n responseHeaders[HeaderNames.X_MS_HTTP_VERSION] || \"\",\n requestId:\n responseHeaders[HeaderNames.X_MS_REQUEST_ID] || \"\",\n },\n correlationId\n );\n } catch (e) {\n if (e instanceof NetworkError) {\n const responseHeaders = e.responseHeaders;\n if (responseHeaders) {\n this.performanceClient?.addFields(\n {\n httpVerToken:\n responseHeaders[\n HeaderNames.X_MS_HTTP_VERSION\n ] || \"\",\n requestId:\n responseHeaders[HeaderNames.X_MS_REQUEST_ID] ||\n \"\",\n contentTypeHeader:\n responseHeaders[HeaderNames.CONTENT_TYPE] ||\n undefined,\n contentLengthHeader:\n responseHeaders[HeaderNames.CONTENT_LENGTH] ||\n undefined,\n httpStatus: e.httpStatus,\n },\n correlationId\n );\n }\n throw e.error;\n }\n if (e instanceof AuthError) {\n throw e;\n } else {\n throw createClientAuthError(ClientAuthErrorCodes.networkError);\n }\n }\n\n ThrottlingUtils.postProcess(this.cacheManager, thumbprint, response);\n\n return response;\n }\n\n /**\n * Updates the authority object of the client. Endpoint discovery must be completed.\n * @param updatedAuthority\n */\n async updateAuthority(\n cloudInstanceHostname: string,\n correlationId: string\n ): Promise {\n this.performanceClient?.addQueueMeasurement(\n PerformanceEvents.UpdateTokenEndpointAuthority,\n correlationId\n );\n const cloudInstanceAuthorityUri = `https://${cloudInstanceHostname}/${this.authority.tenant}/`;\n const cloudInstanceAuthority = await createDiscoveredInstance(\n cloudInstanceAuthorityUri,\n this.networkClient,\n this.cacheManager,\n this.authority.options,\n this.logger,\n correlationId,\n this.performanceClient\n );\n this.authority = cloudInstanceAuthority;\n }\n\n /**\n * Creates query string for the /token request\n * @param request\n */\n createTokenQueryParameters(request: BaseAuthRequest): string {\n const parameterBuilder = new RequestParameterBuilder(\n request.correlationId,\n this.performanceClient\n );\n\n if (request.embeddedClientId) {\n parameterBuilder.addBrokerParameters({\n brokerClientId: this.config.authOptions.clientId,\n brokerRedirectUri: this.config.authOptions.redirectUri,\n });\n }\n\n if (request.tokenQueryParameters) {\n parameterBuilder.addExtraQueryParameters(\n request.tokenQueryParameters\n );\n }\n\n parameterBuilder.addCorrelationId(request.correlationId);\n\n return parameterBuilder.createQueryString();\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { ICrypto, SignedHttpRequestParameters } from \"./ICrypto.js\";\nimport * as TimeUtils from \"../utils/TimeUtils.js\";\nimport { UrlString } from \"../url/UrlString.js\";\nimport { IPerformanceClient } from \"../telemetry/performance/IPerformanceClient.js\";\nimport { PerformanceEvents } from \"../telemetry/performance/PerformanceEvent.js\";\nimport { invokeAsync } from \"../utils/FunctionWrappers.js\";\nimport { Logger } from \"../logger/Logger.js\";\n\n/**\n * See eSTS docs for more info.\n * - A kid element, with the value containing an RFC 7638-compliant JWK thumbprint that is base64 encoded.\n * - xms_ksl element, representing the storage location of the key's secret component on the client device. One of two values:\n * - sw: software storage\n * - uhw: hardware storage\n */\ntype ReqCnf = {\n kid: string;\n xms_ksl: KeyLocation;\n};\n\nexport type ReqCnfData = {\n kid: string;\n reqCnfString: string;\n};\n\nconst KeyLocation = {\n SW: \"sw\",\n UHW: \"uhw\",\n} as const;\nexport type KeyLocation = (typeof KeyLocation)[keyof typeof KeyLocation];\n\n/** @internal */\nexport class PopTokenGenerator {\n private cryptoUtils: ICrypto;\n private performanceClient?: IPerformanceClient;\n\n constructor(cryptoUtils: ICrypto, performanceClient?: IPerformanceClient) {\n this.cryptoUtils = cryptoUtils;\n this.performanceClient = performanceClient;\n }\n\n /**\n * Generates the req_cnf validated at the RP in the POP protocol for SHR parameters\n * and returns an object containing the keyid, the full req_cnf string and the req_cnf string hash\n * @param request\n * @returns\n */\n async generateCnf(\n request: SignedHttpRequestParameters,\n logger: Logger\n ): Promise {\n this.performanceClient?.addQueueMeasurement(\n PerformanceEvents.PopTokenGenerateCnf,\n request.correlationId\n );\n\n const reqCnf = await invokeAsync(\n this.generateKid.bind(this),\n PerformanceEvents.PopTokenGenerateCnf,\n logger,\n this.performanceClient,\n request.correlationId\n )(request);\n const reqCnfString: string = this.cryptoUtils.base64UrlEncode(\n JSON.stringify(reqCnf)\n );\n\n return {\n kid: reqCnf.kid,\n reqCnfString,\n };\n }\n\n /**\n * Generates key_id for a SHR token request\n * @param request\n * @returns\n */\n async generateKid(request: SignedHttpRequestParameters): Promise {\n this.performanceClient?.addQueueMeasurement(\n PerformanceEvents.PopTokenGenerateKid,\n request.correlationId\n );\n\n const kidThumbprint = await this.cryptoUtils.getPublicKeyThumbprint(\n request\n );\n\n return {\n kid: kidThumbprint,\n xms_ksl: KeyLocation.SW,\n };\n }\n\n /**\n * Signs the POP access_token with the local generated key-pair\n * @param accessToken\n * @param request\n * @returns\n */\n async signPopToken(\n accessToken: string,\n keyId: string,\n request: SignedHttpRequestParameters\n ): Promise {\n return this.signPayload(accessToken, keyId, request);\n }\n\n /**\n * Utility function to generate the signed JWT for an access_token\n * @param payload\n * @param kid\n * @param request\n * @param claims\n * @returns\n */\n async signPayload(\n payload: string,\n keyId: string,\n request: SignedHttpRequestParameters,\n claims?: object\n ): Promise {\n // Deconstruct request to extract SHR parameters\n const {\n resourceRequestMethod,\n resourceRequestUri,\n shrClaims,\n shrNonce,\n shrOptions,\n } = request;\n\n const resourceUrlString = resourceRequestUri\n ? new UrlString(resourceRequestUri)\n : undefined;\n const resourceUrlComponents = resourceUrlString?.getUrlComponents();\n return this.cryptoUtils.signJwt(\n {\n at: payload,\n ts: TimeUtils.nowSeconds(),\n m: resourceRequestMethod?.toUpperCase(),\n u: resourceUrlComponents?.HostNameAndPort,\n nonce: shrNonce || this.cryptoUtils.createNewGuid(),\n p: resourceUrlComponents?.AbsolutePath,\n q: resourceUrlComponents?.QueryString\n ? [[], resourceUrlComponents.QueryString]\n : undefined,\n client_claims: shrClaims || undefined,\n ...claims,\n },\n keyId,\n shrOptions,\n request.correlationId\n );\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { ISerializableTokenCache } from \"../interface/ISerializableTokenCache.js\";\n\n/**\n * This class instance helps track the memory changes facilitating\n * decisions to read from and write to the persistent cache\n */ export class TokenCacheContext {\n /**\n * boolean indicating cache change\n */\n hasChanged: boolean;\n /**\n * serializable token cache interface\n */\n cache: ISerializableTokenCache;\n\n constructor(tokenCache: ISerializableTokenCache, hasChanged: boolean) {\n this.cache = tokenCache;\n this.hasChanged = hasChanged;\n }\n\n /**\n * boolean which indicates the changes in cache\n */\n get cacheHasChanged(): boolean {\n return this.hasChanged;\n }\n\n /**\n * function to retrieve the token cache\n */\n get tokenCache(): ISerializableTokenCache {\n return this.cache;\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { ServerAuthorizationTokenResponse } from \"./ServerAuthorizationTokenResponse.js\";\nimport { ICrypto } from \"../crypto/ICrypto.js\";\nimport {\n ClientAuthErrorCodes,\n createClientAuthError,\n} from \"../error/ClientAuthError.js\";\nimport { ServerAuthorizationCodeResponse } from \"./ServerAuthorizationCodeResponse.js\";\nimport { Logger } from \"../logger/Logger.js\";\nimport { ServerError } from \"../error/ServerError.js\";\nimport { ScopeSet } from \"../request/ScopeSet.js\";\nimport { AuthenticationResult } from \"./AuthenticationResult.js\";\nimport { AccountEntity } from \"../cache/entities/AccountEntity.js\";\nimport { Authority } from \"../authority/Authority.js\";\nimport { IdTokenEntity } from \"../cache/entities/IdTokenEntity.js\";\nimport { AccessTokenEntity } from \"../cache/entities/AccessTokenEntity.js\";\nimport { RefreshTokenEntity } from \"../cache/entities/RefreshTokenEntity.js\";\nimport {\n InteractionRequiredAuthError,\n isInteractionRequiredError,\n} from \"../error/InteractionRequiredAuthError.js\";\nimport { CacheRecord } from \"../cache/entities/CacheRecord.js\";\nimport { CacheManager } from \"../cache/CacheManager.js\";\nimport { ProtocolUtils, RequestStateObject } from \"../utils/ProtocolUtils.js\";\nimport {\n AuthenticationScheme,\n Constants,\n THE_FAMILY_ID,\n HttpStatus,\n} from \"../utils/Constants.js\";\nimport { PopTokenGenerator } from \"../crypto/PopTokenGenerator.js\";\nimport { AppMetadataEntity } from \"../cache/entities/AppMetadataEntity.js\";\nimport { ICachePlugin } from \"../cache/interface/ICachePlugin.js\";\nimport { TokenCacheContext } from \"../cache/persistence/TokenCacheContext.js\";\nimport { ISerializableTokenCache } from \"../cache/interface/ISerializableTokenCache.js\";\nimport { AuthorizationCodePayload } from \"./AuthorizationCodePayload.js\";\nimport { BaseAuthRequest } from \"../request/BaseAuthRequest.js\";\nimport { IPerformanceClient } from \"../telemetry/performance/IPerformanceClient.js\";\nimport { PerformanceEvents } from \"../telemetry/performance/PerformanceEvent.js\";\nimport { checkMaxAge, extractTokenClaims } from \"../account/AuthToken.js\";\nimport {\n TokenClaims,\n getTenantIdFromIdTokenClaims,\n} from \"../account/TokenClaims.js\";\nimport {\n AccountInfo,\n buildTenantProfile,\n updateAccountTenantProfileData,\n} from \"../account/AccountInfo.js\";\nimport * as CacheHelpers from \"../cache/utils/CacheHelpers.js\";\n\nfunction parseServerErrorNo(\n serverResponse: ServerAuthorizationCodeResponse\n): string | undefined {\n const errorCodePrefix = \"code=\";\n const errorCodePrefixIndex =\n serverResponse.error_uri?.lastIndexOf(errorCodePrefix);\n return errorCodePrefixIndex && errorCodePrefixIndex >= 0\n ? serverResponse.error_uri?.substring(\n errorCodePrefixIndex + errorCodePrefix.length\n )\n : undefined;\n}\n\n/**\n * Class that handles response parsing.\n * @internal\n */\nexport class ResponseHandler {\n private clientId: string;\n private cacheStorage: CacheManager;\n private cryptoObj: ICrypto;\n private logger: Logger;\n private homeAccountIdentifier: string;\n private serializableCache: ISerializableTokenCache | null;\n private persistencePlugin: ICachePlugin | null;\n private performanceClient?: IPerformanceClient;\n\n constructor(\n clientId: string,\n cacheStorage: CacheManager,\n cryptoObj: ICrypto,\n logger: Logger,\n serializableCache: ISerializableTokenCache | null,\n persistencePlugin: ICachePlugin | null,\n performanceClient?: IPerformanceClient\n ) {\n this.clientId = clientId;\n this.cacheStorage = cacheStorage;\n this.cryptoObj = cryptoObj;\n this.logger = logger;\n this.serializableCache = serializableCache;\n this.persistencePlugin = persistencePlugin;\n this.performanceClient = performanceClient;\n }\n\n /**\n * Function which validates server authorization code response.\n * @param serverResponseHash\n * @param requestState\n * @param cryptoObj\n */\n validateServerAuthorizationCodeResponse(\n serverResponse: ServerAuthorizationCodeResponse,\n requestState: string\n ): void {\n if (!serverResponse.state || !requestState) {\n throw serverResponse.state\n ? createClientAuthError(\n ClientAuthErrorCodes.stateNotFound,\n \"Cached State\"\n )\n : createClientAuthError(\n ClientAuthErrorCodes.stateNotFound,\n \"Server State\"\n );\n }\n\n let decodedServerResponseState: string;\n let decodedRequestState: string;\n\n try {\n decodedServerResponseState = decodeURIComponent(\n serverResponse.state\n );\n } catch (e) {\n throw createClientAuthError(\n ClientAuthErrorCodes.invalidState,\n serverResponse.state\n );\n }\n\n try {\n decodedRequestState = decodeURIComponent(requestState);\n } catch (e) {\n throw createClientAuthError(\n ClientAuthErrorCodes.invalidState,\n serverResponse.state\n );\n }\n\n if (decodedServerResponseState !== decodedRequestState) {\n throw createClientAuthError(ClientAuthErrorCodes.stateMismatch);\n }\n\n // Check for error\n if (\n serverResponse.error ||\n serverResponse.error_description ||\n serverResponse.suberror\n ) {\n const serverErrorNo = parseServerErrorNo(serverResponse);\n if (\n isInteractionRequiredError(\n serverResponse.error,\n serverResponse.error_description,\n serverResponse.suberror\n )\n ) {\n throw new InteractionRequiredAuthError(\n serverResponse.error || \"\",\n serverResponse.error_description,\n serverResponse.suberror,\n serverResponse.timestamp || \"\",\n serverResponse.trace_id || \"\",\n serverResponse.correlation_id || \"\",\n serverResponse.claims || \"\",\n serverErrorNo\n );\n }\n\n throw new ServerError(\n serverResponse.error || \"\",\n serverResponse.error_description,\n serverResponse.suberror,\n serverErrorNo\n );\n }\n }\n\n /**\n * Function which validates server authorization token response.\n * @param serverResponse\n * @param refreshAccessToken\n */\n validateTokenResponse(\n serverResponse: ServerAuthorizationTokenResponse,\n refreshAccessToken?: boolean\n ): void {\n // Check for error\n if (\n serverResponse.error ||\n serverResponse.error_description ||\n serverResponse.suberror\n ) {\n const errString = `Error(s): ${\n serverResponse.error_codes || Constants.NOT_AVAILABLE\n } - Timestamp: ${\n serverResponse.timestamp || Constants.NOT_AVAILABLE\n } - Description: ${\n serverResponse.error_description || Constants.NOT_AVAILABLE\n } - Correlation ID: ${\n serverResponse.correlation_id || Constants.NOT_AVAILABLE\n } - Trace ID: ${\n serverResponse.trace_id || Constants.NOT_AVAILABLE\n }`;\n const serverErrorNo = serverResponse.error_codes?.length\n ? serverResponse.error_codes[0]\n : undefined;\n const serverError = new ServerError(\n serverResponse.error,\n errString,\n serverResponse.suberror,\n serverErrorNo,\n serverResponse.status\n );\n\n // check if 500 error\n if (\n refreshAccessToken &&\n serverResponse.status &&\n serverResponse.status >= HttpStatus.SERVER_ERROR_RANGE_START &&\n serverResponse.status <= HttpStatus.SERVER_ERROR_RANGE_END\n ) {\n this.logger.warning(\n `executeTokenRequest:validateTokenResponse - AAD is currently unavailable and the access token is unable to be refreshed.\\n${serverError}`\n );\n\n // don't throw an exception, but alert the user via a log that the token was unable to be refreshed\n return;\n // check if 400 error\n } else if (\n refreshAccessToken &&\n serverResponse.status &&\n serverResponse.status >= HttpStatus.CLIENT_ERROR_RANGE_START &&\n serverResponse.status <= HttpStatus.CLIENT_ERROR_RANGE_END\n ) {\n this.logger.warning(\n `executeTokenRequest:validateTokenResponse - AAD is currently available but is unable to refresh the access token.\\n${serverError}`\n );\n\n // don't throw an exception, but alert the user via a log that the token was unable to be refreshed\n return;\n }\n\n if (\n isInteractionRequiredError(\n serverResponse.error,\n serverResponse.error_description,\n serverResponse.suberror\n )\n ) {\n throw new InteractionRequiredAuthError(\n serverResponse.error,\n serverResponse.error_description,\n serverResponse.suberror,\n serverResponse.timestamp || Constants.EMPTY_STRING,\n serverResponse.trace_id || Constants.EMPTY_STRING,\n serverResponse.correlation_id || Constants.EMPTY_STRING,\n serverResponse.claims || Constants.EMPTY_STRING,\n serverErrorNo\n );\n }\n\n throw serverError;\n }\n }\n\n /**\n * Returns a constructed token response based on given string. Also manages the cache updates and cleanups.\n * @param serverTokenResponse\n * @param authority\n */\n async handleServerTokenResponse(\n serverTokenResponse: ServerAuthorizationTokenResponse,\n authority: Authority,\n reqTimestamp: number,\n request: BaseAuthRequest,\n authCodePayload?: AuthorizationCodePayload,\n userAssertionHash?: string,\n handlingRefreshTokenResponse?: boolean,\n forceCacheRefreshTokenResponse?: boolean,\n serverRequestId?: string\n ): Promise {\n this.performanceClient?.addQueueMeasurement(\n PerformanceEvents.HandleServerTokenResponse,\n serverTokenResponse.correlation_id\n );\n\n // create an idToken object (not entity)\n let idTokenClaims: TokenClaims | undefined;\n if (serverTokenResponse.id_token) {\n idTokenClaims = extractTokenClaims(\n serverTokenResponse.id_token || Constants.EMPTY_STRING,\n this.cryptoObj.base64Decode\n );\n\n // token nonce check (TODO: Add a warning if no nonce is given?)\n if (authCodePayload && authCodePayload.nonce) {\n if (idTokenClaims.nonce !== authCodePayload.nonce) {\n throw createClientAuthError(\n ClientAuthErrorCodes.nonceMismatch\n );\n }\n }\n\n // token max_age check\n if (request.maxAge || request.maxAge === 0) {\n const authTime = idTokenClaims.auth_time;\n if (!authTime) {\n throw createClientAuthError(\n ClientAuthErrorCodes.authTimeNotFound\n );\n }\n\n checkMaxAge(authTime, request.maxAge);\n }\n }\n\n // generate homeAccountId\n this.homeAccountIdentifier = AccountEntity.generateHomeAccountId(\n serverTokenResponse.client_info || Constants.EMPTY_STRING,\n authority.authorityType,\n this.logger,\n this.cryptoObj,\n idTokenClaims\n );\n\n // save the response tokens\n let requestStateObj: RequestStateObject | undefined;\n if (!!authCodePayload && !!authCodePayload.state) {\n requestStateObj = ProtocolUtils.parseRequestState(\n this.cryptoObj,\n authCodePayload.state\n );\n }\n\n // Add keyId from request to serverTokenResponse if defined\n serverTokenResponse.key_id =\n serverTokenResponse.key_id || request.sshKid || undefined;\n\n const cacheRecord = this.generateCacheRecord(\n serverTokenResponse,\n authority,\n reqTimestamp,\n request,\n idTokenClaims,\n userAssertionHash,\n authCodePayload\n );\n let cacheContext;\n try {\n if (this.persistencePlugin && this.serializableCache) {\n this.logger.verbose(\n \"Persistence enabled, calling beforeCacheAccess\"\n );\n cacheContext = new TokenCacheContext(\n this.serializableCache,\n true\n );\n await this.persistencePlugin.beforeCacheAccess(cacheContext);\n }\n /*\n * When saving a refreshed tokens to the cache, it is expected that the account that was used is present in the cache.\n * If not present, we should return null, as it's the case that another application called removeAccount in between\n * the calls to getAllAccounts and acquireTokenSilent. We should not overwrite that removal, unless explicitly flagged by\n * the developer, as in the case of refresh token flow used in ADAL Node to MSAL Node migration.\n */\n if (\n handlingRefreshTokenResponse &&\n !forceCacheRefreshTokenResponse &&\n cacheRecord.account\n ) {\n const key = cacheRecord.account.generateAccountKey();\n const account = this.cacheStorage.getAccount(key, this.logger);\n if (!account) {\n this.logger.warning(\n \"Account used to refresh tokens not in persistence, refreshed tokens will not be stored in the cache\"\n );\n return await ResponseHandler.generateAuthenticationResult(\n this.cryptoObj,\n authority,\n cacheRecord,\n false,\n request,\n idTokenClaims,\n requestStateObj,\n undefined,\n serverRequestId\n );\n }\n }\n await this.cacheStorage.saveCacheRecord(\n cacheRecord,\n request.storeInCache,\n request.correlationId\n );\n } finally {\n if (\n this.persistencePlugin &&\n this.serializableCache &&\n cacheContext\n ) {\n this.logger.verbose(\n \"Persistence enabled, calling afterCacheAccess\"\n );\n await this.persistencePlugin.afterCacheAccess(cacheContext);\n }\n }\n\n return ResponseHandler.generateAuthenticationResult(\n this.cryptoObj,\n authority,\n cacheRecord,\n false,\n request,\n idTokenClaims,\n requestStateObj,\n serverTokenResponse,\n serverRequestId\n );\n }\n\n /**\n * Generates CacheRecord\n * @param serverTokenResponse\n * @param idTokenObj\n * @param authority\n */\n private generateCacheRecord(\n serverTokenResponse: ServerAuthorizationTokenResponse,\n authority: Authority,\n reqTimestamp: number,\n request: BaseAuthRequest,\n idTokenClaims?: TokenClaims,\n userAssertionHash?: string,\n authCodePayload?: AuthorizationCodePayload\n ): CacheRecord {\n const env = authority.getPreferredCache();\n if (!env) {\n throw createClientAuthError(\n ClientAuthErrorCodes.invalidCacheEnvironment\n );\n }\n\n const claimsTenantId = getTenantIdFromIdTokenClaims(idTokenClaims);\n\n // IdToken: non AAD scenarios can have empty realm\n let cachedIdToken: IdTokenEntity | undefined;\n let cachedAccount: AccountEntity | undefined;\n if (serverTokenResponse.id_token && !!idTokenClaims) {\n cachedIdToken = CacheHelpers.createIdTokenEntity(\n this.homeAccountIdentifier,\n env,\n serverTokenResponse.id_token,\n this.clientId,\n claimsTenantId || \"\"\n );\n\n cachedAccount = buildAccountToCache(\n this.cacheStorage,\n authority,\n this.homeAccountIdentifier,\n this.cryptoObj.base64Decode,\n idTokenClaims,\n serverTokenResponse.client_info,\n env,\n claimsTenantId,\n authCodePayload,\n undefined, // nativeAccountId\n this.logger\n );\n }\n\n // AccessToken\n let cachedAccessToken: AccessTokenEntity | null = null;\n if (serverTokenResponse.access_token) {\n // If scopes not returned in server response, use request scopes\n const responseScopes = serverTokenResponse.scope\n ? ScopeSet.fromString(serverTokenResponse.scope)\n : new ScopeSet(request.scopes || []);\n\n /*\n * Use timestamp calculated before request\n * Server may return timestamps as strings, parse to numbers if so.\n */\n const expiresIn: number =\n (typeof serverTokenResponse.expires_in === \"string\"\n ? parseInt(serverTokenResponse.expires_in, 10)\n : serverTokenResponse.expires_in) || 0;\n const extExpiresIn: number =\n (typeof serverTokenResponse.ext_expires_in === \"string\"\n ? parseInt(serverTokenResponse.ext_expires_in, 10)\n : serverTokenResponse.ext_expires_in) || 0;\n const refreshIn: number | undefined =\n (typeof serverTokenResponse.refresh_in === \"string\"\n ? parseInt(serverTokenResponse.refresh_in, 10)\n : serverTokenResponse.refresh_in) || undefined;\n const tokenExpirationSeconds = reqTimestamp + expiresIn;\n const extendedTokenExpirationSeconds =\n tokenExpirationSeconds + extExpiresIn;\n const refreshOnSeconds =\n refreshIn && refreshIn > 0\n ? reqTimestamp + refreshIn\n : undefined;\n\n // non AAD scenarios can have empty realm\n cachedAccessToken = CacheHelpers.createAccessTokenEntity(\n this.homeAccountIdentifier,\n env,\n serverTokenResponse.access_token,\n this.clientId,\n claimsTenantId || authority.tenant || \"\",\n responseScopes.printScopes(),\n tokenExpirationSeconds,\n extendedTokenExpirationSeconds,\n this.cryptoObj.base64Decode,\n refreshOnSeconds,\n serverTokenResponse.token_type,\n userAssertionHash,\n serverTokenResponse.key_id,\n request.claims,\n request.requestedClaimsHash\n );\n }\n\n // refreshToken\n let cachedRefreshToken: RefreshTokenEntity | null = null;\n if (serverTokenResponse.refresh_token) {\n let rtExpiresOn: number | undefined;\n if (serverTokenResponse.refresh_token_expires_in) {\n const rtExpiresIn: number =\n typeof serverTokenResponse.refresh_token_expires_in ===\n \"string\"\n ? parseInt(\n serverTokenResponse.refresh_token_expires_in,\n 10\n )\n : serverTokenResponse.refresh_token_expires_in;\n rtExpiresOn = reqTimestamp + rtExpiresIn;\n }\n cachedRefreshToken = CacheHelpers.createRefreshTokenEntity(\n this.homeAccountIdentifier,\n env,\n serverTokenResponse.refresh_token,\n this.clientId,\n serverTokenResponse.foci,\n userAssertionHash,\n rtExpiresOn\n );\n }\n\n // appMetadata\n let cachedAppMetadata: AppMetadataEntity | null = null;\n if (serverTokenResponse.foci) {\n cachedAppMetadata = {\n clientId: this.clientId,\n environment: env,\n familyId: serverTokenResponse.foci,\n };\n }\n\n return {\n account: cachedAccount,\n idToken: cachedIdToken,\n accessToken: cachedAccessToken,\n refreshToken: cachedRefreshToken,\n appMetadata: cachedAppMetadata,\n };\n }\n\n /**\n * Creates an @AuthenticationResult from @CacheRecord , @IdToken , and a boolean that states whether or not the result is from cache.\n *\n * Optionally takes a state string that is set as-is in the response.\n *\n * @param cacheRecord\n * @param idTokenObj\n * @param fromTokenCache\n * @param stateString\n */\n static async generateAuthenticationResult(\n cryptoObj: ICrypto,\n authority: Authority,\n cacheRecord: CacheRecord,\n fromTokenCache: boolean,\n request: BaseAuthRequest,\n idTokenClaims?: TokenClaims,\n requestState?: RequestStateObject,\n serverTokenResponse?: ServerAuthorizationTokenResponse,\n requestId?: string\n ): Promise {\n let accessToken: string = Constants.EMPTY_STRING;\n let responseScopes: Array = [];\n let expiresOn: Date | null = null;\n let extExpiresOn: Date | undefined;\n let refreshOn: Date | undefined;\n let familyId: string = Constants.EMPTY_STRING;\n\n if (cacheRecord.accessToken) {\n /*\n * if the request object has `popKid` property, `signPopToken` will be set to false and\n * the token will be returned unsigned\n */\n if (\n cacheRecord.accessToken.tokenType ===\n AuthenticationScheme.POP &&\n !request.popKid\n ) {\n const popTokenGenerator: PopTokenGenerator =\n new PopTokenGenerator(cryptoObj);\n const { secret, keyId } = cacheRecord.accessToken;\n\n if (!keyId) {\n throw createClientAuthError(\n ClientAuthErrorCodes.keyIdMissing\n );\n }\n\n accessToken = await popTokenGenerator.signPopToken(\n secret,\n keyId,\n request\n );\n } else {\n accessToken = cacheRecord.accessToken.secret;\n }\n responseScopes = ScopeSet.fromString(\n cacheRecord.accessToken.target\n ).asArray();\n expiresOn = new Date(\n Number(cacheRecord.accessToken.expiresOn) * 1000\n );\n extExpiresOn = new Date(\n Number(cacheRecord.accessToken.extendedExpiresOn) * 1000\n );\n if (cacheRecord.accessToken.refreshOn) {\n refreshOn = new Date(\n Number(cacheRecord.accessToken.refreshOn) * 1000\n );\n }\n }\n\n if (cacheRecord.appMetadata) {\n familyId =\n cacheRecord.appMetadata.familyId === THE_FAMILY_ID\n ? THE_FAMILY_ID\n : \"\";\n }\n const uid = idTokenClaims?.oid || idTokenClaims?.sub || \"\";\n const tid = idTokenClaims?.tid || \"\";\n\n // for hybrid + native bridge enablement, send back the native account Id\n if (serverTokenResponse?.spa_accountid && !!cacheRecord.account) {\n cacheRecord.account.nativeAccountId =\n serverTokenResponse?.spa_accountid;\n }\n\n const accountInfo: AccountInfo | null = cacheRecord.account\n ? updateAccountTenantProfileData(\n cacheRecord.account.getAccountInfo(),\n undefined, // tenantProfile optional\n idTokenClaims,\n cacheRecord.idToken?.secret\n )\n : null;\n\n return {\n authority: authority.canonicalAuthority,\n uniqueId: uid,\n tenantId: tid,\n scopes: responseScopes,\n account: accountInfo,\n idToken: cacheRecord?.idToken?.secret || \"\",\n idTokenClaims: idTokenClaims || {},\n accessToken: accessToken,\n fromCache: fromTokenCache,\n expiresOn: expiresOn,\n extExpiresOn: extExpiresOn,\n refreshOn: refreshOn,\n correlationId: request.correlationId,\n requestId: requestId || Constants.EMPTY_STRING,\n familyId: familyId,\n tokenType:\n cacheRecord.accessToken?.tokenType || Constants.EMPTY_STRING,\n state: requestState\n ? requestState.userRequestState\n : Constants.EMPTY_STRING,\n cloudGraphHostName:\n cacheRecord.account?.cloudGraphHostName ||\n Constants.EMPTY_STRING,\n msGraphHost:\n cacheRecord.account?.msGraphHost || Constants.EMPTY_STRING,\n code: serverTokenResponse?.spa_code,\n fromNativeBroker: false,\n };\n }\n}\n\nexport function buildAccountToCache(\n cacheStorage: CacheManager,\n authority: Authority,\n homeAccountId: string,\n base64Decode: (input: string) => string,\n idTokenClaims?: TokenClaims,\n clientInfo?: string,\n environment?: string,\n claimsTenantId?: string | null,\n authCodePayload?: AuthorizationCodePayload,\n nativeAccountId?: string,\n logger?: Logger\n): AccountEntity {\n logger?.verbose(\"setCachedAccount called\");\n\n // Check if base account is already cached\n const accountKeys = cacheStorage.getAccountKeys();\n const baseAccountKey = accountKeys.find((accountKey: string) => {\n return accountKey.startsWith(homeAccountId);\n });\n\n let cachedAccount: AccountEntity | null = null;\n if (baseAccountKey) {\n cachedAccount = cacheStorage.getAccount(baseAccountKey, logger);\n }\n\n const baseAccount =\n cachedAccount ||\n AccountEntity.createAccount(\n {\n homeAccountId,\n idTokenClaims,\n clientInfo,\n environment,\n cloudGraphHostName: authCodePayload?.cloud_graph_host_name,\n msGraphHost: authCodePayload?.msgraph_host,\n nativeAccountId: nativeAccountId,\n },\n authority,\n base64Decode\n );\n\n const tenantProfiles = baseAccount.tenantProfiles || [];\n const tenantId = claimsTenantId || baseAccount.realm;\n if (\n tenantId &&\n !tenantProfiles.find((tenantProfile) => {\n return tenantProfile.tenantId === tenantId;\n })\n ) {\n const newTenantProfile = buildTenantProfile(\n homeAccountId,\n baseAccount.localAccountId,\n tenantId,\n idTokenClaims\n );\n tenantProfiles.push(newTenantProfile);\n }\n baseAccount.tenantProfiles = tenantProfiles;\n\n return baseAccount;\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport {\n ClientAssertionCallback,\n ClientAssertionConfig,\n} from \"../account/ClientCredentials.js\";\n\nexport async function getClientAssertion(\n clientAssertion: string | ClientAssertionCallback,\n clientId: string,\n tokenEndpoint?: string\n): Promise {\n if (typeof clientAssertion === \"string\") {\n return clientAssertion;\n } else {\n const config: ClientAssertionConfig = {\n clientId: clientId,\n tokenEndpoint: tokenEndpoint,\n };\n return clientAssertion(config);\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { BaseClient } from \"./BaseClient.js\";\nimport { CommonAuthorizationUrlRequest } from \"../request/CommonAuthorizationUrlRequest.js\";\nimport { CommonAuthorizationCodeRequest } from \"../request/CommonAuthorizationCodeRequest.js\";\nimport { Authority } from \"../authority/Authority.js\";\nimport { RequestParameterBuilder } from \"../request/RequestParameterBuilder.js\";\nimport {\n GrantType,\n AuthenticationScheme,\n PromptValue,\n Separators,\n HeaderNames,\n} from \"../utils/Constants.js\";\nimport * as AADServerParamKeys from \"../constants/AADServerParamKeys.js\";\nimport {\n ClientConfiguration,\n isOidcProtocolMode,\n} from \"../config/ClientConfiguration.js\";\nimport { ServerAuthorizationTokenResponse } from \"../response/ServerAuthorizationTokenResponse.js\";\nimport { NetworkResponse } from \"../network/NetworkResponse.js\";\nimport { ResponseHandler } from \"../response/ResponseHandler.js\";\nimport { AuthenticationResult } from \"../response/AuthenticationResult.js\";\nimport { StringUtils } from \"../utils/StringUtils.js\";\nimport {\n ClientAuthErrorCodes,\n createClientAuthError,\n} from \"../error/ClientAuthError.js\";\nimport { UrlString } from \"../url/UrlString.js\";\nimport { ServerAuthorizationCodeResponse } from \"../response/ServerAuthorizationCodeResponse.js\";\nimport { CommonEndSessionRequest } from \"../request/CommonEndSessionRequest.js\";\nimport { PopTokenGenerator } from \"../crypto/PopTokenGenerator.js\";\nimport { RequestThumbprint } from \"../network/RequestThumbprint.js\";\nimport { AuthorizationCodePayload } from \"../response/AuthorizationCodePayload.js\";\nimport * as TimeUtils from \"../utils/TimeUtils.js\";\nimport { AccountInfo } from \"../account/AccountInfo.js\";\nimport {\n buildClientInfoFromHomeAccountId,\n buildClientInfo,\n} from \"../account/ClientInfo.js\";\nimport { CcsCredentialType, CcsCredential } from \"../account/CcsCredential.js\";\nimport {\n createClientConfigurationError,\n ClientConfigurationErrorCodes,\n} from \"../error/ClientConfigurationError.js\";\nimport { RequestValidator } from \"../request/RequestValidator.js\";\nimport { IPerformanceClient } from \"../telemetry/performance/IPerformanceClient.js\";\nimport { PerformanceEvents } from \"../telemetry/performance/PerformanceEvent.js\";\nimport { invokeAsync } from \"../utils/FunctionWrappers.js\";\nimport { ClientAssertion } from \"../account/ClientCredentials.js\";\nimport { getClientAssertion } from \"../utils/ClientAssertionUtils.js\";\n\n/**\n * Oauth2.0 Authorization Code client\n * @internal\n */\nexport class AuthorizationCodeClient extends BaseClient {\n // Flag to indicate if client is for hybrid spa auth code redemption\n protected includeRedirectUri: boolean = true;\n private oidcDefaultScopes;\n\n constructor(\n configuration: ClientConfiguration,\n performanceClient?: IPerformanceClient\n ) {\n super(configuration, performanceClient);\n this.oidcDefaultScopes =\n this.config.authOptions.authority.options.OIDCOptions?.defaultScopes;\n }\n\n /**\n * Creates the URL of the authorization request letting the user input credentials and consent to the\n * application. The URL target the /authorize endpoint of the authority configured in the\n * application object.\n *\n * Once the user inputs their credentials and consents, the authority will send a response to the redirect URI\n * sent in the request and should contain an authorization code, which can then be used to acquire tokens via\n * acquireToken(AuthorizationCodeRequest)\n * @param request\n */\n async getAuthCodeUrl(\n request: CommonAuthorizationUrlRequest\n ): Promise {\n this.performanceClient?.addQueueMeasurement(\n PerformanceEvents.GetAuthCodeUrl,\n request.correlationId\n );\n\n const queryString = await invokeAsync(\n this.createAuthCodeUrlQueryString.bind(this),\n PerformanceEvents.AuthClientCreateQueryString,\n this.logger,\n this.performanceClient,\n request.correlationId\n )(request);\n\n return UrlString.appendQueryString(\n this.authority.authorizationEndpoint,\n queryString\n );\n }\n\n /**\n * API to acquire a token in exchange of 'authorization_code` acquired by the user in the first leg of the\n * authorization_code_grant\n * @param request\n */\n async acquireToken(\n request: CommonAuthorizationCodeRequest,\n authCodePayload?: AuthorizationCodePayload\n ): Promise {\n this.performanceClient?.addQueueMeasurement(\n PerformanceEvents.AuthClientAcquireToken,\n request.correlationId\n );\n\n if (!request.code) {\n throw createClientAuthError(\n ClientAuthErrorCodes.requestCannotBeMade\n );\n }\n\n const reqTimestamp = TimeUtils.nowSeconds();\n const response = await invokeAsync(\n this.executeTokenRequest.bind(this),\n PerformanceEvents.AuthClientExecuteTokenRequest,\n this.logger,\n this.performanceClient,\n request.correlationId\n )(this.authority, request);\n\n // Retrieve requestId from response headers\n const requestId = response.headers?.[HeaderNames.X_MS_REQUEST_ID];\n\n const responseHandler = new ResponseHandler(\n this.config.authOptions.clientId,\n this.cacheManager,\n this.cryptoUtils,\n this.logger,\n this.config.serializableCache,\n this.config.persistencePlugin,\n this.performanceClient\n );\n\n // Validate response. This function throws a server error if an error is returned by the server.\n responseHandler.validateTokenResponse(response.body);\n\n return invokeAsync(\n responseHandler.handleServerTokenResponse.bind(responseHandler),\n PerformanceEvents.HandleServerTokenResponse,\n this.logger,\n this.performanceClient,\n request.correlationId\n )(\n response.body,\n this.authority,\n reqTimestamp,\n request,\n authCodePayload,\n undefined,\n undefined,\n undefined,\n requestId\n );\n }\n\n /**\n * Handles the hash fragment response from public client code request. Returns a code response used by\n * the client to exchange for a token in acquireToken.\n * @param hashFragment\n */\n handleFragmentResponse(\n serverParams: ServerAuthorizationCodeResponse,\n cachedState: string\n ): AuthorizationCodePayload {\n // Handle responses.\n const responseHandler = new ResponseHandler(\n this.config.authOptions.clientId,\n this.cacheManager,\n this.cryptoUtils,\n this.logger,\n null,\n null\n );\n\n // Get code response\n responseHandler.validateServerAuthorizationCodeResponse(\n serverParams,\n cachedState\n );\n\n // throw when there is no auth code in the response\n if (!serverParams.code) {\n throw createClientAuthError(\n ClientAuthErrorCodes.authorizationCodeMissingFromServerResponse\n );\n }\n\n return serverParams as AuthorizationCodePayload;\n }\n\n /**\n * Used to log out the current user, and redirect the user to the postLogoutRedirectUri.\n * Default behaviour is to redirect the user to `window.location.href`.\n * @param authorityUri\n */\n getLogoutUri(logoutRequest: CommonEndSessionRequest): string {\n // Throw error if logoutRequest is null/undefined\n if (!logoutRequest) {\n throw createClientConfigurationError(\n ClientConfigurationErrorCodes.logoutRequestEmpty\n );\n }\n const queryString = this.createLogoutUrlQueryString(logoutRequest);\n\n // Construct logout URI\n return UrlString.appendQueryString(\n this.authority.endSessionEndpoint,\n queryString\n );\n }\n\n /**\n * Executes POST request to token endpoint\n * @param authority\n * @param request\n */\n private async executeTokenRequest(\n authority: Authority,\n request: CommonAuthorizationCodeRequest\n ): Promise> {\n this.performanceClient?.addQueueMeasurement(\n PerformanceEvents.AuthClientExecuteTokenRequest,\n request.correlationId\n );\n\n const queryParametersString = this.createTokenQueryParameters(request);\n const endpoint = UrlString.appendQueryString(\n authority.tokenEndpoint,\n queryParametersString\n );\n\n const requestBody = await invokeAsync(\n this.createTokenRequestBody.bind(this),\n PerformanceEvents.AuthClientCreateTokenRequestBody,\n this.logger,\n this.performanceClient,\n request.correlationId\n )(request);\n\n let ccsCredential: CcsCredential | undefined = undefined;\n if (request.clientInfo) {\n try {\n const clientInfo = buildClientInfo(\n request.clientInfo,\n this.cryptoUtils.base64Decode\n );\n ccsCredential = {\n credential: `${clientInfo.uid}${Separators.CLIENT_INFO_SEPARATOR}${clientInfo.utid}`,\n type: CcsCredentialType.HOME_ACCOUNT_ID,\n };\n } catch (e) {\n this.logger.verbose(\n \"Could not parse client info for CCS Header: \" + e\n );\n }\n }\n const headers: Record = this.createTokenRequestHeaders(\n ccsCredential || request.ccsCredential\n );\n\n const thumbprint: RequestThumbprint = {\n clientId:\n request.tokenBodyParameters?.clientId ||\n this.config.authOptions.clientId,\n authority: authority.canonicalAuthority,\n scopes: request.scopes,\n claims: request.claims,\n authenticationScheme: request.authenticationScheme,\n resourceRequestMethod: request.resourceRequestMethod,\n resourceRequestUri: request.resourceRequestUri,\n shrClaims: request.shrClaims,\n sshKid: request.sshKid,\n };\n\n return invokeAsync(\n this.executePostToTokenEndpoint.bind(this),\n PerformanceEvents.AuthorizationCodeClientExecutePostToTokenEndpoint,\n this.logger,\n this.performanceClient,\n request.correlationId\n )(\n endpoint,\n requestBody,\n headers,\n thumbprint,\n request.correlationId,\n PerformanceEvents.AuthorizationCodeClientExecutePostToTokenEndpoint\n );\n }\n\n /**\n * Generates a map for all the params to be sent to the service\n * @param request\n */\n private async createTokenRequestBody(\n request: CommonAuthorizationCodeRequest\n ): Promise {\n this.performanceClient?.addQueueMeasurement(\n PerformanceEvents.AuthClientCreateTokenRequestBody,\n request.correlationId\n );\n\n const parameterBuilder = new RequestParameterBuilder(\n request.correlationId,\n this.performanceClient\n );\n\n parameterBuilder.addClientId(\n request.embeddedClientId ||\n request.tokenBodyParameters?.[AADServerParamKeys.CLIENT_ID] ||\n this.config.authOptions.clientId\n );\n\n /*\n * For hybrid spa flow, there will be a code but no verifier\n * In this scenario, don't include redirect uri as auth code will not be bound to redirect URI\n */\n if (!this.includeRedirectUri) {\n // Just validate\n RequestValidator.validateRedirectUri(request.redirectUri);\n } else {\n // Validate and include redirect uri\n parameterBuilder.addRedirectUri(request.redirectUri);\n }\n\n // Add scope array, parameter builder will add default scopes and dedupe\n parameterBuilder.addScopes(\n request.scopes,\n true,\n this.oidcDefaultScopes\n );\n\n // add code: user set, not validated\n parameterBuilder.addAuthorizationCode(request.code);\n\n // Add library metadata\n parameterBuilder.addLibraryInfo(this.config.libraryInfo);\n parameterBuilder.addApplicationTelemetry(\n this.config.telemetry.application\n );\n parameterBuilder.addThrottling();\n\n if (this.serverTelemetryManager && !isOidcProtocolMode(this.config)) {\n parameterBuilder.addServerTelemetry(this.serverTelemetryManager);\n }\n\n // add code_verifier if passed\n if (request.codeVerifier) {\n parameterBuilder.addCodeVerifier(request.codeVerifier);\n }\n\n if (this.config.clientCredentials.clientSecret) {\n parameterBuilder.addClientSecret(\n this.config.clientCredentials.clientSecret\n );\n }\n\n if (this.config.clientCredentials.clientAssertion) {\n const clientAssertion: ClientAssertion =\n this.config.clientCredentials.clientAssertion;\n\n parameterBuilder.addClientAssertion(\n await getClientAssertion(\n clientAssertion.assertion,\n this.config.authOptions.clientId,\n request.resourceRequestUri\n )\n );\n parameterBuilder.addClientAssertionType(\n clientAssertion.assertionType\n );\n }\n\n parameterBuilder.addGrantType(GrantType.AUTHORIZATION_CODE_GRANT);\n parameterBuilder.addClientInfo();\n\n if (request.authenticationScheme === AuthenticationScheme.POP) {\n const popTokenGenerator = new PopTokenGenerator(\n this.cryptoUtils,\n this.performanceClient\n );\n\n let reqCnfData;\n if (!request.popKid) {\n const generatedReqCnfData = await invokeAsync(\n popTokenGenerator.generateCnf.bind(popTokenGenerator),\n PerformanceEvents.PopTokenGenerateCnf,\n this.logger,\n this.performanceClient,\n request.correlationId\n )(request, this.logger);\n reqCnfData = generatedReqCnfData.reqCnfString;\n } else {\n reqCnfData = this.cryptoUtils.encodeKid(request.popKid);\n }\n\n // SPA PoP requires full Base64Url encoded req_cnf string (unhashed)\n parameterBuilder.addPopToken(reqCnfData);\n } else if (request.authenticationScheme === AuthenticationScheme.SSH) {\n if (request.sshJwk) {\n parameterBuilder.addSshJwk(request.sshJwk);\n } else {\n throw createClientConfigurationError(\n ClientConfigurationErrorCodes.missingSshJwk\n );\n }\n }\n\n if (\n !StringUtils.isEmptyObj(request.claims) ||\n (this.config.authOptions.clientCapabilities &&\n this.config.authOptions.clientCapabilities.length > 0)\n ) {\n parameterBuilder.addClaims(\n request.claims,\n this.config.authOptions.clientCapabilities\n );\n }\n\n let ccsCred: CcsCredential | undefined = undefined;\n if (request.clientInfo) {\n try {\n const clientInfo = buildClientInfo(\n request.clientInfo,\n this.cryptoUtils.base64Decode\n );\n ccsCred = {\n credential: `${clientInfo.uid}${Separators.CLIENT_INFO_SEPARATOR}${clientInfo.utid}`,\n type: CcsCredentialType.HOME_ACCOUNT_ID,\n };\n } catch (e) {\n this.logger.verbose(\n \"Could not parse client info for CCS Header: \" + e\n );\n }\n } else {\n ccsCred = request.ccsCredential;\n }\n\n // Adds these as parameters in the request instead of headers to prevent CORS preflight request\n if (this.config.systemOptions.preventCorsPreflight && ccsCred) {\n switch (ccsCred.type) {\n case CcsCredentialType.HOME_ACCOUNT_ID:\n try {\n const clientInfo = buildClientInfoFromHomeAccountId(\n ccsCred.credential\n );\n parameterBuilder.addCcsOid(clientInfo);\n } catch (e) {\n this.logger.verbose(\n \"Could not parse home account ID for CCS Header: \" +\n e\n );\n }\n break;\n case CcsCredentialType.UPN:\n parameterBuilder.addCcsUpn(ccsCred.credential);\n break;\n }\n }\n\n if (request.embeddedClientId) {\n parameterBuilder.addBrokerParameters({\n brokerClientId: this.config.authOptions.clientId,\n brokerRedirectUri: this.config.authOptions.redirectUri,\n });\n }\n\n if (request.tokenBodyParameters) {\n parameterBuilder.addExtraQueryParameters(\n request.tokenBodyParameters\n );\n }\n\n // Add hybrid spa parameters if not already provided\n if (\n request.enableSpaAuthorizationCode &&\n (!request.tokenBodyParameters ||\n !request.tokenBodyParameters[\n AADServerParamKeys.RETURN_SPA_CODE\n ])\n ) {\n parameterBuilder.addExtraQueryParameters({\n [AADServerParamKeys.RETURN_SPA_CODE]: \"1\",\n });\n }\n\n return parameterBuilder.createQueryString();\n }\n\n /**\n * This API validates the `AuthorizationCodeUrlRequest` and creates a URL\n * @param request\n */\n private async createAuthCodeUrlQueryString(\n request: CommonAuthorizationUrlRequest\n ): Promise {\n // generate the correlationId if not set by the user and add\n const correlationId =\n request.correlationId ||\n this.config.cryptoInterface.createNewGuid();\n\n this.performanceClient?.addQueueMeasurement(\n PerformanceEvents.AuthClientCreateQueryString,\n correlationId\n );\n\n const parameterBuilder = new RequestParameterBuilder(\n correlationId,\n this.performanceClient\n );\n\n parameterBuilder.addClientId(\n request.embeddedClientId ||\n request.extraQueryParameters?.[AADServerParamKeys.CLIENT_ID] ||\n this.config.authOptions.clientId\n );\n\n const requestScopes = [\n ...(request.scopes || []),\n ...(request.extraScopesToConsent || []),\n ];\n parameterBuilder.addScopes(requestScopes, true, this.oidcDefaultScopes);\n\n // validate the redirectUri (to be a non null value)\n parameterBuilder.addRedirectUri(request.redirectUri);\n\n parameterBuilder.addCorrelationId(correlationId);\n\n // add response_mode. If not passed in it defaults to query.\n parameterBuilder.addResponseMode(request.responseMode);\n\n // add response_type = code\n parameterBuilder.addResponseTypeCode();\n\n // add library info parameters\n parameterBuilder.addLibraryInfo(this.config.libraryInfo);\n if (!isOidcProtocolMode(this.config)) {\n parameterBuilder.addApplicationTelemetry(\n this.config.telemetry.application\n );\n }\n\n // add client_info=1\n parameterBuilder.addClientInfo();\n\n if (request.codeChallenge && request.codeChallengeMethod) {\n parameterBuilder.addCodeChallengeParams(\n request.codeChallenge,\n request.codeChallengeMethod\n );\n }\n\n if (request.prompt) {\n parameterBuilder.addPrompt(request.prompt);\n }\n\n if (request.domainHint) {\n parameterBuilder.addDomainHint(request.domainHint);\n }\n\n // Add sid or loginHint with preference for login_hint claim (in request) -> sid -> loginHint (upn/email) -> username of AccountInfo object\n if (request.prompt !== PromptValue.SELECT_ACCOUNT) {\n // AAD will throw if prompt=select_account is passed with an account hint\n if (request.sid && request.prompt === PromptValue.NONE) {\n // SessionID is only used in silent calls\n this.logger.verbose(\n \"createAuthCodeUrlQueryString: Prompt is none, adding sid from request\"\n );\n parameterBuilder.addSid(request.sid);\n } else if (request.account) {\n const accountSid = this.extractAccountSid(request.account);\n let accountLoginHintClaim = this.extractLoginHint(\n request.account\n );\n\n if (accountLoginHintClaim && request.domainHint) {\n this.logger.warning(\n `AuthorizationCodeClient.createAuthCodeUrlQueryString: \"domainHint\" param is set, skipping opaque \"login_hint\" claim. Please consider not passing domainHint`\n );\n accountLoginHintClaim = null;\n }\n\n // If login_hint claim is present, use it over sid/username\n if (accountLoginHintClaim) {\n this.logger.verbose(\n \"createAuthCodeUrlQueryString: login_hint claim present on account\"\n );\n parameterBuilder.addLoginHint(accountLoginHintClaim);\n try {\n const clientInfo = buildClientInfoFromHomeAccountId(\n request.account.homeAccountId\n );\n parameterBuilder.addCcsOid(clientInfo);\n } catch (e) {\n this.logger.verbose(\n \"createAuthCodeUrlQueryString: Could not parse home account ID for CCS Header\"\n );\n }\n } else if (accountSid && request.prompt === PromptValue.NONE) {\n /*\n * If account and loginHint are provided, we will check account first for sid before adding loginHint\n * SessionId is only used in silent calls\n */\n this.logger.verbose(\n \"createAuthCodeUrlQueryString: Prompt is none, adding sid from account\"\n );\n parameterBuilder.addSid(accountSid);\n try {\n const clientInfo = buildClientInfoFromHomeAccountId(\n request.account.homeAccountId\n );\n parameterBuilder.addCcsOid(clientInfo);\n } catch (e) {\n this.logger.verbose(\n \"createAuthCodeUrlQueryString: Could not parse home account ID for CCS Header\"\n );\n }\n } else if (request.loginHint) {\n this.logger.verbose(\n \"createAuthCodeUrlQueryString: Adding login_hint from request\"\n );\n parameterBuilder.addLoginHint(request.loginHint);\n parameterBuilder.addCcsUpn(request.loginHint);\n } else if (request.account.username) {\n // Fallback to account username if provided\n this.logger.verbose(\n \"createAuthCodeUrlQueryString: Adding login_hint from account\"\n );\n parameterBuilder.addLoginHint(request.account.username);\n try {\n const clientInfo = buildClientInfoFromHomeAccountId(\n request.account.homeAccountId\n );\n parameterBuilder.addCcsOid(clientInfo);\n } catch (e) {\n this.logger.verbose(\n \"createAuthCodeUrlQueryString: Could not parse home account ID for CCS Header\"\n );\n }\n }\n } else if (request.loginHint) {\n this.logger.verbose(\n \"createAuthCodeUrlQueryString: No account, adding login_hint from request\"\n );\n parameterBuilder.addLoginHint(request.loginHint);\n parameterBuilder.addCcsUpn(request.loginHint);\n }\n } else {\n this.logger.verbose(\n \"createAuthCodeUrlQueryString: Prompt is select_account, ignoring account hints\"\n );\n }\n\n if (request.nonce) {\n parameterBuilder.addNonce(request.nonce);\n }\n\n if (request.state) {\n parameterBuilder.addState(request.state);\n }\n\n if (\n request.claims ||\n (this.config.authOptions.clientCapabilities &&\n this.config.authOptions.clientCapabilities.length > 0)\n ) {\n parameterBuilder.addClaims(\n request.claims,\n this.config.authOptions.clientCapabilities\n );\n }\n\n if (request.embeddedClientId) {\n parameterBuilder.addBrokerParameters({\n brokerClientId: this.config.authOptions.clientId,\n brokerRedirectUri: this.config.authOptions.redirectUri,\n });\n }\n\n this.addExtraQueryParams(request, parameterBuilder);\n\n if (request.nativeBroker) {\n // signal ests that this is a WAM call\n parameterBuilder.addNativeBroker();\n\n // pass the req_cnf for POP\n if (request.authenticationScheme === AuthenticationScheme.POP) {\n const popTokenGenerator = new PopTokenGenerator(\n this.cryptoUtils\n );\n\n // req_cnf is always sent as a string for SPAs\n let reqCnfData;\n if (!request.popKid) {\n const generatedReqCnfData = await invokeAsync(\n popTokenGenerator.generateCnf.bind(popTokenGenerator),\n PerformanceEvents.PopTokenGenerateCnf,\n this.logger,\n this.performanceClient,\n request.correlationId\n )(request, this.logger);\n reqCnfData = generatedReqCnfData.reqCnfString;\n } else {\n reqCnfData = this.cryptoUtils.encodeKid(request.popKid);\n }\n parameterBuilder.addPopToken(reqCnfData);\n }\n }\n\n return parameterBuilder.createQueryString();\n }\n\n /**\n * This API validates the `EndSessionRequest` and creates a URL\n * @param request\n */\n private createLogoutUrlQueryString(\n request: CommonEndSessionRequest\n ): string {\n const parameterBuilder = new RequestParameterBuilder(\n request.correlationId,\n this.performanceClient\n );\n\n if (request.postLogoutRedirectUri) {\n parameterBuilder.addPostLogoutRedirectUri(\n request.postLogoutRedirectUri\n );\n }\n\n if (request.correlationId) {\n parameterBuilder.addCorrelationId(request.correlationId);\n }\n\n if (request.idTokenHint) {\n parameterBuilder.addIdTokenHint(request.idTokenHint);\n }\n\n if (request.state) {\n parameterBuilder.addState(request.state);\n }\n\n if (request.logoutHint) {\n parameterBuilder.addLogoutHint(request.logoutHint);\n }\n\n this.addExtraQueryParams(request, parameterBuilder);\n\n return parameterBuilder.createQueryString();\n }\n\n private addExtraQueryParams(\n request: CommonAuthorizationUrlRequest | CommonEndSessionRequest,\n parameterBuilder: RequestParameterBuilder\n ) {\n const hasRequestInstanceAware =\n request.extraQueryParameters &&\n request.extraQueryParameters.hasOwnProperty(\"instance_aware\");\n\n // Set instance_aware flag if config auth param is set\n if (!hasRequestInstanceAware && this.config.authOptions.instanceAware) {\n request.extraQueryParameters = request.extraQueryParameters || {};\n request.extraQueryParameters[\"instance_aware\"] = \"true\";\n }\n\n if (request.extraQueryParameters) {\n parameterBuilder.addExtraQueryParameters(\n request.extraQueryParameters\n );\n }\n }\n\n /**\n * Helper to get sid from account. Returns null if idTokenClaims are not present or sid is not present.\n * @param account\n */\n private extractAccountSid(account: AccountInfo): string | null {\n return account.idTokenClaims?.sid || null;\n }\n\n private extractLoginHint(account: AccountInfo): string | null {\n return account.idTokenClaims?.login_hint || null;\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport {\n SERVER_TELEM_CONSTANTS,\n Separators,\n CacheOutcome,\n Constants,\n RegionDiscoverySources,\n RegionDiscoveryOutcomes,\n} from \"../../utils/Constants.js\";\nimport { CacheManager } from \"../../cache/CacheManager.js\";\nimport { AuthError } from \"../../error/AuthError.js\";\nimport { ServerTelemetryRequest } from \"./ServerTelemetryRequest.js\";\nimport { ServerTelemetryEntity } from \"../../cache/entities/ServerTelemetryEntity.js\";\nimport { RegionDiscoveryMetadata } from \"../../authority/RegionDiscoveryMetadata.js\";\n\nconst skuGroupSeparator = \",\";\nconst skuValueSeparator = \"|\";\n\ntype SkuParams = {\n libraryName?: string;\n libraryVersion?: string;\n extensionName?: string;\n extensionVersion?: string;\n skus?: string;\n};\n\nfunction makeExtraSkuString(params: SkuParams): string {\n const {\n skus,\n libraryName,\n libraryVersion,\n extensionName,\n extensionVersion,\n } = params;\n const skuMap: Map = new Map([\n [0, [libraryName, libraryVersion]],\n [2, [extensionName, extensionVersion]],\n ]);\n let skuArr: string[] = [];\n\n if (skus?.length) {\n skuArr = skus.split(skuGroupSeparator);\n\n // Ignore invalid input sku param\n if (skuArr.length < 4) {\n return skus;\n }\n } else {\n skuArr = Array.from({ length: 4 }, () => skuValueSeparator);\n }\n\n skuMap.forEach((value, key) => {\n if (value.length === 2 && value[0]?.length && value[1]?.length) {\n setSku({\n skuArr,\n index: key,\n skuName: value[0],\n skuVersion: value[1],\n });\n }\n });\n\n return skuArr.join(skuGroupSeparator);\n}\n\nfunction setSku(params: {\n skuArr: string[];\n index: number;\n skuName: string;\n skuVersion: string;\n}): void {\n const { skuArr, index, skuName, skuVersion } = params;\n if (index >= skuArr.length) {\n return;\n }\n skuArr[index] = [skuName, skuVersion].join(skuValueSeparator);\n}\n\n/** @internal */\nexport class ServerTelemetryManager {\n private cacheManager: CacheManager;\n private apiId: number;\n private correlationId: string;\n private telemetryCacheKey: string;\n private wrapperSKU: String;\n private wrapperVer: String;\n private regionUsed: string | undefined;\n private regionSource: RegionDiscoverySources | undefined;\n private regionOutcome: RegionDiscoveryOutcomes | undefined;\n private cacheOutcome: CacheOutcome = CacheOutcome.NOT_APPLICABLE;\n\n constructor(\n telemetryRequest: ServerTelemetryRequest,\n cacheManager: CacheManager\n ) {\n this.cacheManager = cacheManager;\n this.apiId = telemetryRequest.apiId;\n this.correlationId = telemetryRequest.correlationId;\n this.wrapperSKU = telemetryRequest.wrapperSKU || Constants.EMPTY_STRING;\n this.wrapperVer = telemetryRequest.wrapperVer || Constants.EMPTY_STRING;\n\n this.telemetryCacheKey =\n SERVER_TELEM_CONSTANTS.CACHE_KEY +\n Separators.CACHE_KEY_SEPARATOR +\n telemetryRequest.clientId;\n }\n\n /**\n * API to add MSER Telemetry to request\n */\n generateCurrentRequestHeaderValue(): string {\n const request = `${this.apiId}${SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR}${this.cacheOutcome}`;\n const platformFieldsArr = [this.wrapperSKU, this.wrapperVer];\n const nativeBrokerErrorCode = this.getNativeBrokerErrorCode();\n if (nativeBrokerErrorCode?.length) {\n platformFieldsArr.push(`broker_error=${nativeBrokerErrorCode}`);\n }\n const platformFields = platformFieldsArr.join(\n SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR\n );\n const regionDiscoveryFields = this.getRegionDiscoveryFields();\n const requestWithRegionDiscoveryFields = [\n request,\n regionDiscoveryFields,\n ].join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR);\n\n return [\n SERVER_TELEM_CONSTANTS.SCHEMA_VERSION,\n requestWithRegionDiscoveryFields,\n platformFields,\n ].join(SERVER_TELEM_CONSTANTS.CATEGORY_SEPARATOR);\n }\n\n /**\n * API to add MSER Telemetry for the last failed request\n */\n generateLastRequestHeaderValue(): string {\n const lastRequests = this.getLastRequests();\n\n const maxErrors = ServerTelemetryManager.maxErrorsToSend(lastRequests);\n const failedRequests = lastRequests.failedRequests\n .slice(0, 2 * maxErrors)\n .join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR);\n const errors = lastRequests.errors\n .slice(0, maxErrors)\n .join(SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR);\n const errorCount = lastRequests.errors.length;\n\n // Indicate whether this header contains all data or partial data\n const overflow =\n maxErrors < errorCount\n ? SERVER_TELEM_CONSTANTS.OVERFLOW_TRUE\n : SERVER_TELEM_CONSTANTS.OVERFLOW_FALSE;\n const platformFields = [errorCount, overflow].join(\n SERVER_TELEM_CONSTANTS.VALUE_SEPARATOR\n );\n\n return [\n SERVER_TELEM_CONSTANTS.SCHEMA_VERSION,\n lastRequests.cacheHits,\n failedRequests,\n errors,\n platformFields,\n ].join(SERVER_TELEM_CONSTANTS.CATEGORY_SEPARATOR);\n }\n\n /**\n * API to cache token failures for MSER data capture\n * @param error\n */\n cacheFailedRequest(error: unknown): void {\n const lastRequests = this.getLastRequests();\n if (\n lastRequests.errors.length >=\n SERVER_TELEM_CONSTANTS.MAX_CACHED_ERRORS\n ) {\n // Remove a cached error to make room, first in first out\n lastRequests.failedRequests.shift(); // apiId\n lastRequests.failedRequests.shift(); // correlationId\n lastRequests.errors.shift();\n }\n\n lastRequests.failedRequests.push(this.apiId, this.correlationId);\n\n if (error instanceof Error && !!error && error.toString()) {\n if (error instanceof AuthError) {\n if (error.subError) {\n lastRequests.errors.push(error.subError);\n } else if (error.errorCode) {\n lastRequests.errors.push(error.errorCode);\n } else {\n lastRequests.errors.push(error.toString());\n }\n } else {\n lastRequests.errors.push(error.toString());\n }\n } else {\n lastRequests.errors.push(SERVER_TELEM_CONSTANTS.UNKNOWN_ERROR);\n }\n\n this.cacheManager.setServerTelemetry(\n this.telemetryCacheKey,\n lastRequests\n );\n\n return;\n }\n\n /**\n * Update server telemetry cache entry by incrementing cache hit counter\n */\n incrementCacheHits(): number {\n const lastRequests = this.getLastRequests();\n lastRequests.cacheHits += 1;\n\n this.cacheManager.setServerTelemetry(\n this.telemetryCacheKey,\n lastRequests\n );\n return lastRequests.cacheHits;\n }\n\n /**\n * Get the server telemetry entity from cache or initialize a new one\n */\n getLastRequests(): ServerTelemetryEntity {\n const initialValue: ServerTelemetryEntity = {\n failedRequests: [],\n errors: [],\n cacheHits: 0,\n };\n const lastRequests = this.cacheManager.getServerTelemetry(\n this.telemetryCacheKey\n ) as ServerTelemetryEntity;\n\n return lastRequests || initialValue;\n }\n\n /**\n * Remove server telemetry cache entry\n */\n clearTelemetryCache(): void {\n const lastRequests = this.getLastRequests();\n const numErrorsFlushed =\n ServerTelemetryManager.maxErrorsToSend(lastRequests);\n const errorCount = lastRequests.errors.length;\n if (numErrorsFlushed === errorCount) {\n // All errors were sent on last request, clear Telemetry cache\n this.cacheManager.removeItem(this.telemetryCacheKey);\n } else {\n // Partial data was flushed to server, construct a new telemetry cache item with errors that were not flushed\n const serverTelemEntity: ServerTelemetryEntity = {\n failedRequests: lastRequests.failedRequests.slice(\n numErrorsFlushed * 2\n ), // failedRequests contains 2 items for each error\n errors: lastRequests.errors.slice(numErrorsFlushed),\n cacheHits: 0,\n };\n\n this.cacheManager.setServerTelemetry(\n this.telemetryCacheKey,\n serverTelemEntity\n );\n }\n }\n\n /**\n * Returns the maximum number of errors that can be flushed to the server in the next network request\n * @param serverTelemetryEntity\n */\n static maxErrorsToSend(\n serverTelemetryEntity: ServerTelemetryEntity\n ): number {\n let i;\n let maxErrors = 0;\n let dataSize = 0;\n const errorCount = serverTelemetryEntity.errors.length;\n for (i = 0; i < errorCount; i++) {\n // failedRequests parameter contains pairs of apiId and correlationId, multiply index by 2 to preserve pairs\n const apiId =\n serverTelemetryEntity.failedRequests[2 * i] ||\n Constants.EMPTY_STRING;\n const correlationId =\n serverTelemetryEntity.failedRequests[2 * i + 1] ||\n Constants.EMPTY_STRING;\n const errorCode =\n serverTelemetryEntity.errors[i] || Constants.EMPTY_STRING;\n\n // Count number of characters that would be added to header, each character is 1 byte. Add 3 at the end to account for separators\n dataSize +=\n apiId.toString().length +\n correlationId.toString().length +\n errorCode.length +\n 3;\n\n if (dataSize < SERVER_TELEM_CONSTANTS.MAX_LAST_HEADER_BYTES) {\n // Adding this entry to the header would still keep header size below the limit\n maxErrors += 1;\n } else {\n break;\n }\n }\n\n return maxErrors;\n }\n\n /**\n * Get the region discovery fields\n *\n * @returns string\n */\n getRegionDiscoveryFields(): string {\n const regionDiscoveryFields: string[] = [];\n\n regionDiscoveryFields.push(this.regionUsed || Constants.EMPTY_STRING);\n regionDiscoveryFields.push(this.regionSource || Constants.EMPTY_STRING);\n regionDiscoveryFields.push(\n this.regionOutcome || Constants.EMPTY_STRING\n );\n\n return regionDiscoveryFields.join(\",\");\n }\n\n /**\n * Update the region discovery metadata\n *\n * @param regionDiscoveryMetadata\n * @returns void\n */\n updateRegionDiscoveryMetadata(\n regionDiscoveryMetadata: RegionDiscoveryMetadata\n ): void {\n this.regionUsed = regionDiscoveryMetadata.region_used;\n this.regionSource = regionDiscoveryMetadata.region_source;\n this.regionOutcome = regionDiscoveryMetadata.region_outcome;\n }\n\n /**\n * Set cache outcome\n */\n setCacheOutcome(cacheOutcome: CacheOutcome): void {\n this.cacheOutcome = cacheOutcome;\n }\n\n setNativeBrokerErrorCode(errorCode: string): void {\n const lastRequests = this.getLastRequests();\n lastRequests.nativeBrokerErrorCode = errorCode;\n this.cacheManager.setServerTelemetry(\n this.telemetryCacheKey,\n lastRequests\n );\n }\n\n getNativeBrokerErrorCode(): string | undefined {\n return this.getLastRequests().nativeBrokerErrorCode;\n }\n\n clearNativeBrokerErrorCode(): void {\n const lastRequests = this.getLastRequests();\n delete lastRequests.nativeBrokerErrorCode;\n this.cacheManager.setServerTelemetry(\n this.telemetryCacheKey,\n lastRequests\n );\n }\n\n static makeExtraSkuString(params: SkuParams): string {\n return makeExtraSkuString(params);\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport {\n ICrypto,\n INetworkModule,\n Logger,\n AccountInfo,\n AccountEntity,\n UrlString,\n ServerTelemetryManager,\n ServerTelemetryRequest,\n createClientConfigurationError,\n ClientConfigurationErrorCodes,\n Authority,\n AuthorityOptions,\n AuthorityFactory,\n IPerformanceClient,\n PerformanceEvents,\n AzureCloudOptions,\n invokeAsync,\n StringDict,\n} from \"@azure/msal-common/browser\";\nimport { BrowserConfiguration } from \"../config/Configuration.js\";\nimport { BrowserCacheManager } from \"../cache/BrowserCacheManager.js\";\nimport { EventHandler } from \"../event/EventHandler.js\";\nimport { EndSessionRequest } from \"../request/EndSessionRequest.js\";\nimport { RedirectRequest } from \"../request/RedirectRequest.js\";\nimport { PopupRequest } from \"../request/PopupRequest.js\";\nimport { SsoSilentRequest } from \"../request/SsoSilentRequest.js\";\nimport { version } from \"../packageMetadata.js\";\nimport { BrowserConstants } from \"../utils/BrowserConstants.js\";\nimport * as BrowserUtils from \"../utils/BrowserUtils.js\";\nimport { INavigationClient } from \"../navigation/INavigationClient.js\";\nimport { NativeMessageHandler } from \"../broker/nativeBroker/NativeMessageHandler.js\";\nimport { AuthenticationResult } from \"../response/AuthenticationResult.js\";\nimport { ClearCacheRequest } from \"../request/ClearCacheRequest.js\";\nimport { createNewGuid } from \"../crypto/BrowserCrypto.js\";\n\nexport abstract class BaseInteractionClient {\n protected config: BrowserConfiguration;\n protected browserStorage: BrowserCacheManager;\n protected browserCrypto: ICrypto;\n protected networkClient: INetworkModule;\n protected logger: Logger;\n protected eventHandler: EventHandler;\n protected navigationClient: INavigationClient;\n protected nativeMessageHandler: NativeMessageHandler | undefined;\n protected correlationId: string;\n protected performanceClient: IPerformanceClient;\n\n constructor(\n config: BrowserConfiguration,\n storageImpl: BrowserCacheManager,\n browserCrypto: ICrypto,\n logger: Logger,\n eventHandler: EventHandler,\n navigationClient: INavigationClient,\n performanceClient: IPerformanceClient,\n nativeMessageHandler?: NativeMessageHandler,\n correlationId?: string\n ) {\n this.config = config;\n this.browserStorage = storageImpl;\n this.browserCrypto = browserCrypto;\n this.networkClient = this.config.system.networkClient;\n this.eventHandler = eventHandler;\n this.navigationClient = navigationClient;\n this.nativeMessageHandler = nativeMessageHandler;\n this.correlationId = correlationId || createNewGuid();\n this.logger = logger.clone(\n BrowserConstants.MSAL_SKU,\n version,\n this.correlationId\n );\n this.performanceClient = performanceClient;\n }\n\n abstract acquireToken(\n request: RedirectRequest | PopupRequest | SsoSilentRequest\n ): Promise;\n\n abstract logout(\n request: EndSessionRequest | ClearCacheRequest | undefined\n ): Promise;\n\n protected async clearCacheOnLogout(\n account?: AccountInfo | null\n ): Promise {\n if (account) {\n if (\n AccountEntity.accountInfoIsEqual(\n account,\n this.browserStorage.getActiveAccount(),\n false\n )\n ) {\n this.logger.verbose(\"Setting active account to null\");\n this.browserStorage.setActiveAccount(null);\n }\n // Clear given account.\n try {\n await this.browserStorage.removeAccount(\n AccountEntity.generateAccountCacheKey(account)\n );\n this.logger.verbose(\n \"Cleared cache items belonging to the account provided in the logout request.\"\n );\n } catch (error) {\n this.logger.error(\n \"Account provided in logout request was not found. Local cache unchanged.\"\n );\n }\n } else {\n try {\n this.logger.verbose(\n \"No account provided in logout request, clearing all cache items.\",\n this.correlationId\n );\n // Clear all accounts and tokens\n await this.browserStorage.clear();\n // Clear any stray keys from IndexedDB\n await this.browserCrypto.clearKeystore();\n } catch (e) {\n this.logger.error(\n \"Attempted to clear all MSAL cache items and failed. Local cache unchanged.\"\n );\n }\n }\n }\n\n /**\n *\n * Use to get the redirect uri configured in MSAL or null.\n * @param requestRedirectUri\n * @returns Redirect URL\n *\n */\n getRedirectUri(requestRedirectUri?: string): string {\n this.logger.verbose(\"getRedirectUri called\");\n const redirectUri = requestRedirectUri || this.config.auth.redirectUri;\n return UrlString.getAbsoluteUrl(\n redirectUri,\n BrowserUtils.getCurrentUri()\n );\n }\n\n /**\n *\n * @param apiId\n * @param correlationId\n * @param forceRefresh\n */\n protected initializeServerTelemetryManager(\n apiId: number,\n forceRefresh?: boolean\n ): ServerTelemetryManager {\n this.logger.verbose(\"initializeServerTelemetryManager called\");\n const telemetryPayload: ServerTelemetryRequest = {\n clientId: this.config.auth.clientId,\n correlationId: this.correlationId,\n apiId: apiId,\n forceRefresh: forceRefresh || false,\n wrapperSKU: this.browserStorage.getWrapperMetadata()[0],\n wrapperVer: this.browserStorage.getWrapperMetadata()[1],\n };\n\n return new ServerTelemetryManager(\n telemetryPayload,\n this.browserStorage\n );\n }\n\n /**\n * Used to get a discovered version of the default authority.\n * @param params {\n * requestAuthority?: string;\n * requestAzureCloudOptions?: AzureCloudOptions;\n * requestExtraQueryParameters?: StringDict;\n * account?: AccountInfo;\n * }\n */\n protected async getDiscoveredAuthority(params: {\n requestAuthority?: string;\n requestAzureCloudOptions?: AzureCloudOptions;\n requestExtraQueryParameters?: StringDict;\n account?: AccountInfo;\n }): Promise {\n const { account } = params;\n const instanceAwareEQ =\n params.requestExtraQueryParameters &&\n params.requestExtraQueryParameters.hasOwnProperty(\"instance_aware\")\n ? params.requestExtraQueryParameters[\"instance_aware\"]\n : undefined;\n\n this.performanceClient.addQueueMeasurement(\n PerformanceEvents.StandardInteractionClientGetDiscoveredAuthority,\n this.correlationId\n );\n const authorityOptions: AuthorityOptions = {\n protocolMode: this.config.auth.protocolMode,\n OIDCOptions: this.config.auth.OIDCOptions,\n knownAuthorities: this.config.auth.knownAuthorities,\n cloudDiscoveryMetadata: this.config.auth.cloudDiscoveryMetadata,\n authorityMetadata: this.config.auth.authorityMetadata,\n skipAuthorityMetadataCache:\n this.config.auth.skipAuthorityMetadataCache,\n };\n\n // build authority string based on auth params, precedence - azureCloudInstance + tenant >> authority\n const resolvedAuthority =\n params.requestAuthority || this.config.auth.authority;\n const resolvedInstanceAware = instanceAwareEQ?.length\n ? instanceAwareEQ === \"true\"\n : this.config.auth.instanceAware;\n\n const userAuthority =\n account && resolvedInstanceAware\n ? this.config.auth.authority.replace(\n UrlString.getDomainFromUrl(resolvedAuthority),\n account.environment\n )\n : resolvedAuthority;\n\n // fall back to the authority from config\n const builtAuthority = Authority.generateAuthority(\n userAuthority,\n params.requestAzureCloudOptions ||\n this.config.auth.azureCloudOptions\n );\n const discoveredAuthority = await invokeAsync(\n AuthorityFactory.createDiscoveredInstance,\n PerformanceEvents.AuthorityFactoryCreateDiscoveredInstance,\n this.logger,\n this.performanceClient,\n this.correlationId\n )(\n builtAuthority,\n this.config.system.networkClient,\n this.browserStorage,\n authorityOptions,\n this.logger,\n this.correlationId,\n this.performanceClient\n );\n\n if (account && !discoveredAuthority.isAlias(account.environment)) {\n throw createClientConfigurationError(\n ClientConfigurationErrorCodes.authorityMismatch\n );\n }\n\n return discoveredAuthority;\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport {\n IPerformanceClient,\n Logger,\n PerformanceEvents,\n PkceCodes,\n invoke,\n invokeAsync,\n} from \"@azure/msal-common/browser\";\nimport {\n createBrowserAuthError,\n BrowserAuthErrorCodes,\n} from \"../error/BrowserAuthError.js\";\nimport { urlEncodeArr } from \"../encode/Base64Encode.js\";\nimport { getRandomValues, sha256Digest } from \"./BrowserCrypto.js\";\n\n// Constant byte array length\nconst RANDOM_BYTE_ARR_LENGTH = 32;\n\n/**\n * This file defines APIs to generate PKCE codes and code verifiers.\n */\n\n/**\n * Generates PKCE Codes. See the RFC for more information: https://tools.ietf.org/html/rfc7636\n */\nexport async function generatePkceCodes(\n performanceClient: IPerformanceClient,\n logger: Logger,\n correlationId: string\n): Promise {\n performanceClient.addQueueMeasurement(\n PerformanceEvents.GeneratePkceCodes,\n correlationId\n );\n const codeVerifier = invoke(\n generateCodeVerifier,\n PerformanceEvents.GenerateCodeVerifier,\n logger,\n performanceClient,\n correlationId\n )(performanceClient, logger, correlationId);\n const codeChallenge = await invokeAsync(\n generateCodeChallengeFromVerifier,\n PerformanceEvents.GenerateCodeChallengeFromVerifier,\n logger,\n performanceClient,\n correlationId\n )(codeVerifier, performanceClient, logger, correlationId);\n return {\n verifier: codeVerifier,\n challenge: codeChallenge,\n };\n}\n\n/**\n * Generates a random 32 byte buffer and returns the base64\n * encoded string to be used as a PKCE Code Verifier\n */\nfunction generateCodeVerifier(\n performanceClient: IPerformanceClient,\n logger: Logger,\n correlationId: string\n): string {\n try {\n // Generate random values as utf-8\n const buffer: Uint8Array = new Uint8Array(RANDOM_BYTE_ARR_LENGTH);\n invoke(\n getRandomValues,\n PerformanceEvents.GetRandomValues,\n logger,\n performanceClient,\n correlationId\n )(buffer);\n // encode verifier as base64\n const pkceCodeVerifierB64: string = urlEncodeArr(buffer);\n return pkceCodeVerifierB64;\n } catch (e) {\n throw createBrowserAuthError(BrowserAuthErrorCodes.pkceNotCreated);\n }\n}\n\n/**\n * Creates a base64 encoded PKCE Code Challenge string from the\n * hash created from the PKCE Code Verifier supplied\n */\nasync function generateCodeChallengeFromVerifier(\n pkceCodeVerifier: string,\n performanceClient: IPerformanceClient,\n logger: Logger,\n correlationId: string\n): Promise {\n performanceClient.addQueueMeasurement(\n PerformanceEvents.GenerateCodeChallengeFromVerifier,\n correlationId\n );\n try {\n // hashed verifier\n const pkceHashedCodeVerifier = await invokeAsync(\n sha256Digest,\n PerformanceEvents.Sha256Digest,\n logger,\n performanceClient,\n correlationId\n )(pkceCodeVerifier, performanceClient, correlationId);\n // encode hash as base64\n return urlEncodeArr(new Uint8Array(pkceHashedCodeVerifier));\n } catch (e) {\n throw createBrowserAuthError(BrowserAuthErrorCodes.pkceNotCreated);\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport {\n AccountInfo,\n AuthenticationScheme,\n BaseAuthRequest,\n ClientConfigurationErrorCodes,\n CommonSilentFlowRequest,\n IPerformanceClient,\n Logger,\n PerformanceEvents,\n StringUtils,\n createClientConfigurationError,\n invokeAsync,\n} from \"@azure/msal-common/browser\";\nimport { BrowserConfiguration } from \"../config/Configuration.js\";\nimport { SilentRequest } from \"./SilentRequest.js\";\nimport { hashString } from \"../crypto/BrowserCrypto.js\";\n\n/**\n * Initializer function for all request APIs\n * @param request\n */\nexport async function initializeBaseRequest(\n request: Partial & { correlationId: string },\n config: BrowserConfiguration,\n performanceClient: IPerformanceClient,\n logger: Logger\n): Promise {\n performanceClient.addQueueMeasurement(\n PerformanceEvents.InitializeBaseRequest,\n request.correlationId\n );\n const authority = request.authority || config.auth.authority;\n\n const scopes = [...((request && request.scopes) || [])];\n\n const validatedRequest: BaseAuthRequest = {\n ...request,\n correlationId: request.correlationId,\n authority,\n scopes,\n };\n\n // Set authenticationScheme to BEARER if not explicitly set in the request\n if (!validatedRequest.authenticationScheme) {\n validatedRequest.authenticationScheme = AuthenticationScheme.BEARER;\n logger.verbose(\n 'Authentication Scheme wasn\\'t explicitly set in request, defaulting to \"Bearer\" request'\n );\n } else {\n if (\n validatedRequest.authenticationScheme === AuthenticationScheme.SSH\n ) {\n if (!request.sshJwk) {\n throw createClientConfigurationError(\n ClientConfigurationErrorCodes.missingSshJwk\n );\n }\n if (!request.sshKid) {\n throw createClientConfigurationError(\n ClientConfigurationErrorCodes.missingSshKid\n );\n }\n }\n logger.verbose(\n `Authentication Scheme set to \"${validatedRequest.authenticationScheme}\" as configured in Auth request`\n );\n }\n\n // Set requested claims hash if claims-based caching is enabled and claims were requested\n if (\n config.cache.claimsBasedCachingEnabled &&\n request.claims &&\n // Checks for empty stringified object \"{}\" which doesn't qualify as requested claims\n !StringUtils.isEmptyObj(request.claims)\n ) {\n validatedRequest.requestedClaimsHash = await hashString(request.claims);\n }\n\n return validatedRequest;\n}\n\nexport async function initializeSilentRequest(\n request: SilentRequest & { correlationId: string },\n account: AccountInfo,\n config: BrowserConfiguration,\n performanceClient: IPerformanceClient,\n logger: Logger\n): Promise {\n performanceClient.addQueueMeasurement(\n PerformanceEvents.InitializeSilentRequest,\n request.correlationId\n );\n\n const baseRequest = await invokeAsync(\n initializeBaseRequest,\n PerformanceEvents.InitializeBaseRequest,\n logger,\n performanceClient,\n request.correlationId\n )(request, config, performanceClient, logger);\n return {\n ...request,\n ...baseRequest,\n account: account,\n forceRefresh: request.forceRefresh || false,\n };\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport {\n ServerTelemetryManager,\n CommonAuthorizationCodeRequest,\n Constants,\n AuthorizationCodeClient,\n ClientConfiguration,\n UrlString,\n CommonEndSessionRequest,\n ProtocolUtils,\n ResponseMode,\n IdTokenClaims,\n AccountInfo,\n AzureCloudOptions,\n PerformanceEvents,\n invokeAsync,\n BaseAuthRequest,\n StringDict,\n} from \"@azure/msal-common/browser\";\nimport { BaseInteractionClient } from \"./BaseInteractionClient.js\";\nimport { AuthorizationUrlRequest } from \"../request/AuthorizationUrlRequest.js\";\nimport {\n BrowserConstants,\n InteractionType,\n} from \"../utils/BrowserConstants.js\";\nimport { version } from \"../packageMetadata.js\";\nimport { BrowserStateObject } from \"../utils/BrowserProtocolUtils.js\";\nimport { EndSessionRequest } from \"../request/EndSessionRequest.js\";\nimport * as BrowserUtils from \"../utils/BrowserUtils.js\";\nimport { RedirectRequest } from \"../request/RedirectRequest.js\";\nimport { PopupRequest } from \"../request/PopupRequest.js\";\nimport { SsoSilentRequest } from \"../request/SsoSilentRequest.js\";\nimport { generatePkceCodes } from \"../crypto/PkceGenerator.js\";\nimport { createNewGuid } from \"../crypto/BrowserCrypto.js\";\nimport { initializeBaseRequest } from \"../request/RequestHelpers.js\";\n\n/**\n * Defines the class structure and helper functions used by the \"standard\", non-brokered auth flows (popup, redirect, silent (RT), silent (iframe))\n */\nexport abstract class StandardInteractionClient extends BaseInteractionClient {\n /**\n * Generates an auth code request tied to the url request.\n * @param request\n */\n protected async initializeAuthorizationCodeRequest(\n request: AuthorizationUrlRequest\n ): Promise {\n this.performanceClient.addQueueMeasurement(\n PerformanceEvents.StandardInteractionClientInitializeAuthorizationCodeRequest,\n this.correlationId\n );\n const generatedPkceParams = await invokeAsync(\n generatePkceCodes,\n PerformanceEvents.GeneratePkceCodes,\n this.logger,\n this.performanceClient,\n this.correlationId\n )(this.performanceClient, this.logger, this.correlationId);\n\n const authCodeRequest: CommonAuthorizationCodeRequest = {\n ...request,\n redirectUri: request.redirectUri,\n code: Constants.EMPTY_STRING,\n codeVerifier: generatedPkceParams.verifier,\n };\n\n request.codeChallenge = generatedPkceParams.challenge;\n request.codeChallengeMethod = Constants.S256_CODE_CHALLENGE_METHOD;\n\n return authCodeRequest;\n }\n\n /**\n * Initializer for the logout request.\n * @param logoutRequest\n */\n protected initializeLogoutRequest(\n logoutRequest?: EndSessionRequest\n ): CommonEndSessionRequest {\n this.logger.verbose(\n \"initializeLogoutRequest called\",\n logoutRequest?.correlationId\n );\n\n const validLogoutRequest: CommonEndSessionRequest = {\n correlationId: this.correlationId || createNewGuid(),\n ...logoutRequest,\n };\n\n /**\n * Set logout_hint to be login_hint from ID Token Claims if present\n * and logoutHint attribute wasn't manually set in logout request\n */\n if (logoutRequest) {\n // If logoutHint isn't set and an account was passed in, try to extract logoutHint from ID Token Claims\n if (!logoutRequest.logoutHint) {\n if (logoutRequest.account) {\n const logoutHint = this.getLogoutHintFromIdTokenClaims(\n logoutRequest.account\n );\n if (logoutHint) {\n this.logger.verbose(\n \"Setting logoutHint to login_hint ID Token Claim value for the account provided\"\n );\n validLogoutRequest.logoutHint = logoutHint;\n }\n } else {\n this.logger.verbose(\n \"logoutHint was not set and account was not passed into logout request, logoutHint will not be set\"\n );\n }\n } else {\n this.logger.verbose(\n \"logoutHint has already been set in logoutRequest\"\n );\n }\n } else {\n this.logger.verbose(\n \"logoutHint will not be set since no logout request was configured\"\n );\n }\n\n /*\n * Only set redirect uri if logout request isn't provided or the set uri isn't null.\n * Otherwise, use passed uri, config, or current page.\n */\n if (!logoutRequest || logoutRequest.postLogoutRedirectUri !== null) {\n if (logoutRequest && logoutRequest.postLogoutRedirectUri) {\n this.logger.verbose(\n \"Setting postLogoutRedirectUri to uri set on logout request\",\n validLogoutRequest.correlationId\n );\n validLogoutRequest.postLogoutRedirectUri =\n UrlString.getAbsoluteUrl(\n logoutRequest.postLogoutRedirectUri,\n BrowserUtils.getCurrentUri()\n );\n } else if (this.config.auth.postLogoutRedirectUri === null) {\n this.logger.verbose(\n \"postLogoutRedirectUri configured as null and no uri set on request, not passing post logout redirect\",\n validLogoutRequest.correlationId\n );\n } else if (this.config.auth.postLogoutRedirectUri) {\n this.logger.verbose(\n \"Setting postLogoutRedirectUri to configured uri\",\n validLogoutRequest.correlationId\n );\n validLogoutRequest.postLogoutRedirectUri =\n UrlString.getAbsoluteUrl(\n this.config.auth.postLogoutRedirectUri,\n BrowserUtils.getCurrentUri()\n );\n } else {\n this.logger.verbose(\n \"Setting postLogoutRedirectUri to current page\",\n validLogoutRequest.correlationId\n );\n validLogoutRequest.postLogoutRedirectUri =\n UrlString.getAbsoluteUrl(\n BrowserUtils.getCurrentUri(),\n BrowserUtils.getCurrentUri()\n );\n }\n } else {\n this.logger.verbose(\n \"postLogoutRedirectUri passed as null, not setting post logout redirect uri\",\n validLogoutRequest.correlationId\n );\n }\n\n return validLogoutRequest;\n }\n\n /**\n * Parses login_hint ID Token Claim out of AccountInfo object to be used as\n * logout_hint in end session request.\n * @param account\n */\n protected getLogoutHintFromIdTokenClaims(\n account: AccountInfo\n ): string | null {\n const idTokenClaims: IdTokenClaims | undefined = account.idTokenClaims;\n if (idTokenClaims) {\n if (idTokenClaims.login_hint) {\n return idTokenClaims.login_hint;\n } else {\n this.logger.verbose(\n \"The ID Token Claims tied to the provided account do not contain a login_hint claim, logoutHint will not be added to logout request\"\n );\n }\n } else {\n this.logger.verbose(\n \"The provided account does not contain ID Token Claims, logoutHint will not be added to logout request\"\n );\n }\n\n return null;\n }\n\n /**\n * Creates an Authorization Code Client with the given authority, or the default authority.\n * @param params {\n * serverTelemetryManager: ServerTelemetryManager;\n * authorityUrl?: string;\n * requestAzureCloudOptions?: AzureCloudOptions;\n * requestExtraQueryParameters?: StringDict;\n * account?: AccountInfo;\n * }\n */\n protected async createAuthCodeClient(params: {\n serverTelemetryManager: ServerTelemetryManager;\n requestAuthority?: string;\n requestAzureCloudOptions?: AzureCloudOptions;\n requestExtraQueryParameters?: StringDict;\n account?: AccountInfo;\n }): Promise {\n this.performanceClient.addQueueMeasurement(\n PerformanceEvents.StandardInteractionClientCreateAuthCodeClient,\n this.correlationId\n );\n // Create auth module.\n const clientConfig = await invokeAsync(\n this.getClientConfiguration.bind(this),\n PerformanceEvents.StandardInteractionClientGetClientConfiguration,\n this.logger,\n this.performanceClient,\n this.correlationId\n )(params);\n\n return new AuthorizationCodeClient(\n clientConfig,\n this.performanceClient\n );\n }\n\n /**\n * Creates a Client Configuration object with the given request authority, or the default authority.\n * @param params {\n * serverTelemetryManager: ServerTelemetryManager;\n * requestAuthority?: string;\n * requestAzureCloudOptions?: AzureCloudOptions;\n * requestExtraQueryParameters?: boolean;\n * account?: AccountInfo;\n * }\n */\n protected async getClientConfiguration(params: {\n serverTelemetryManager: ServerTelemetryManager;\n requestAuthority?: string;\n requestAzureCloudOptions?: AzureCloudOptions;\n requestExtraQueryParameters?: StringDict;\n account?: AccountInfo;\n }): Promise {\n const {\n serverTelemetryManager,\n requestAuthority,\n requestAzureCloudOptions,\n requestExtraQueryParameters,\n account,\n } = params;\n\n this.performanceClient.addQueueMeasurement(\n PerformanceEvents.StandardInteractionClientGetClientConfiguration,\n this.correlationId\n );\n const discoveredAuthority = await invokeAsync(\n this.getDiscoveredAuthority.bind(this),\n PerformanceEvents.StandardInteractionClientGetDiscoveredAuthority,\n this.logger,\n this.performanceClient,\n this.correlationId\n )({\n requestAuthority,\n requestAzureCloudOptions,\n requestExtraQueryParameters,\n account,\n });\n const logger = this.config.system.loggerOptions;\n\n return {\n authOptions: {\n clientId: this.config.auth.clientId,\n authority: discoveredAuthority,\n clientCapabilities: this.config.auth.clientCapabilities,\n redirectUri: this.config.auth.redirectUri,\n },\n systemOptions: {\n tokenRenewalOffsetSeconds:\n this.config.system.tokenRenewalOffsetSeconds,\n preventCorsPreflight: true,\n },\n loggerOptions: {\n loggerCallback: logger.loggerCallback,\n piiLoggingEnabled: logger.piiLoggingEnabled,\n logLevel: logger.logLevel,\n correlationId: this.correlationId,\n },\n cacheOptions: {\n claimsBasedCachingEnabled:\n this.config.cache.claimsBasedCachingEnabled,\n },\n cryptoInterface: this.browserCrypto,\n networkInterface: this.networkClient,\n storageInterface: this.browserStorage,\n serverTelemetryManager: serverTelemetryManager,\n libraryInfo: {\n sku: BrowserConstants.MSAL_SKU,\n version: version,\n cpu: Constants.EMPTY_STRING,\n os: Constants.EMPTY_STRING,\n },\n telemetry: this.config.telemetry,\n };\n }\n\n /**\n * Helper to initialize required request parameters for interactive APIs and ssoSilent()\n * @param request\n * @param interactionType\n */\n protected async initializeAuthorizationRequest(\n request: RedirectRequest | PopupRequest | SsoSilentRequest,\n interactionType: InteractionType\n ): Promise {\n this.performanceClient.addQueueMeasurement(\n PerformanceEvents.StandardInteractionClientInitializeAuthorizationRequest,\n this.correlationId\n );\n\n const redirectUri = this.getRedirectUri(request.redirectUri);\n const browserState: BrowserStateObject = {\n interactionType: interactionType,\n };\n const state = ProtocolUtils.setRequestState(\n this.browserCrypto,\n (request && request.state) || Constants.EMPTY_STRING,\n browserState\n );\n\n const baseRequest: BaseAuthRequest = await invokeAsync(\n initializeBaseRequest,\n PerformanceEvents.InitializeBaseRequest,\n this.logger,\n this.performanceClient,\n this.correlationId\n )(\n { ...request, correlationId: this.correlationId },\n this.config,\n this.performanceClient,\n this.logger\n );\n\n const validatedRequest: AuthorizationUrlRequest = {\n ...baseRequest,\n redirectUri: redirectUri,\n state: state,\n nonce: request.nonce || createNewGuid(),\n responseMode: this.config.auth.OIDCOptions\n .serverResponseType as ResponseMode,\n };\n\n // Skip active account lookup if either login hint or session id is set\n if (request.loginHint || request.sid) {\n return validatedRequest;\n }\n\n const account =\n request.account || this.browserStorage.getActiveAccount();\n if (account) {\n this.logger.verbose(\n \"Setting validated request account\",\n this.correlationId\n );\n this.logger.verbosePii(\n `Setting validated request account: ${account.homeAccountId}`,\n this.correlationId\n );\n validatedRequest.account = account;\n }\n\n // Check for ADAL/MSAL v1 SSO\n if (!validatedRequest.loginHint && !account) {\n const legacyLoginHint = this.browserStorage.getLegacyLoginHint();\n if (legacyLoginHint) {\n validatedRequest.loginHint = legacyLoginHint;\n }\n }\n\n return validatedRequest;\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nexport const contentError = \"ContentError\";\nexport const userSwitch = \"user_switch\";\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport {\n AuthError,\n InteractionRequiredAuthError,\n InteractionRequiredAuthErrorCodes,\n createInteractionRequiredAuthError,\n} from \"@azure/msal-common/browser\";\nimport {\n createBrowserAuthError,\n BrowserAuthErrorCodes,\n} from \"./BrowserAuthError.js\";\n\nimport * as NativeAuthErrorCodes from \"./NativeAuthErrorCodes.js\";\nimport * as NativeStatusCodes from \"../broker/nativeBroker/NativeStatusCodes.js\";\nexport { NativeAuthErrorCodes };\n\nexport type OSError = {\n error?: number;\n protocol_error?: string;\n properties?: object;\n status?: string;\n retryable?: boolean;\n};\n\nconst INVALID_METHOD_ERROR = -2147186943;\n\nexport const NativeAuthErrorMessages = {\n [NativeAuthErrorCodes.userSwitch]:\n \"User attempted to switch accounts in the native broker, which is not allowed. All new accounts must sign-in through the standard web flow first, please try again.\",\n};\n\nexport class NativeAuthError extends AuthError {\n ext: OSError | undefined;\n\n constructor(errorCode: string, description?: string, ext?: OSError) {\n super(errorCode, description);\n\n Object.setPrototypeOf(this, NativeAuthError.prototype);\n this.name = \"NativeAuthError\";\n this.ext = ext;\n }\n}\n\n/**\n * These errors should result in a fallback to the 'standard' browser based auth flow.\n */\nexport function isFatalNativeAuthError(error: NativeAuthError): boolean {\n if (\n error.ext &&\n error.ext.status &&\n (error.ext.status === NativeStatusCodes.PERSISTENT_ERROR ||\n error.ext.status === NativeStatusCodes.DISABLED)\n ) {\n return true;\n }\n\n if (\n error.ext &&\n error.ext.error &&\n error.ext.error === INVALID_METHOD_ERROR\n ) {\n return true;\n }\n\n switch (error.errorCode) {\n case NativeAuthErrorCodes.contentError:\n return true;\n default:\n return false;\n }\n}\n\n/**\n * Create the appropriate error object based on the WAM status code.\n * @param code\n * @param description\n * @param ext\n * @returns\n */\nexport function createNativeAuthError(\n code: string,\n description?: string,\n ext?: OSError\n): AuthError {\n if (ext && ext.status) {\n switch (ext.status) {\n case NativeStatusCodes.ACCOUNT_UNAVAILABLE:\n return createInteractionRequiredAuthError(\n InteractionRequiredAuthErrorCodes.nativeAccountUnavailable\n );\n case NativeStatusCodes.USER_INTERACTION_REQUIRED:\n return new InteractionRequiredAuthError(code, description);\n case NativeStatusCodes.USER_CANCEL:\n return createBrowserAuthError(\n BrowserAuthErrorCodes.userCancelled\n );\n case NativeStatusCodes.NO_NETWORK:\n return createBrowserAuthError(\n BrowserAuthErrorCodes.noNetworkConnectivity\n );\n }\n }\n\n return new NativeAuthError(\n code,\n NativeAuthErrorMessages[code] || description,\n ext\n );\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\n// Status Codes that can be thrown by WAM\nexport const USER_INTERACTION_REQUIRED = \"USER_INTERACTION_REQUIRED\";\nexport const USER_CANCEL = \"USER_CANCEL\";\nexport const NO_NETWORK = \"NO_NETWORK\";\nexport const TRANSIENT_ERROR = \"TRANSIENT_ERROR\";\nexport const PERSISTENT_ERROR = \"PERSISTENT_ERROR\";\nexport const DISABLED = \"DISABLED\";\nexport const ACCOUNT_UNAVAILABLE = \"ACCOUNT_UNAVAILABLE\";\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport {\n ClientConfiguration,\n isOidcProtocolMode,\n} from \"../config/ClientConfiguration.js\";\nimport { BaseClient } from \"./BaseClient.js\";\nimport { CommonRefreshTokenRequest } from \"../request/CommonRefreshTokenRequest.js\";\nimport { Authority } from \"../authority/Authority.js\";\nimport { ServerAuthorizationTokenResponse } from \"../response/ServerAuthorizationTokenResponse.js\";\nimport { RequestParameterBuilder } from \"../request/RequestParameterBuilder.js\";\nimport {\n GrantType,\n AuthenticationScheme,\n Errors,\n HeaderNames,\n} from \"../utils/Constants.js\";\nimport * as AADServerParamKeys from \"../constants/AADServerParamKeys.js\";\nimport { ResponseHandler } from \"../response/ResponseHandler.js\";\nimport { AuthenticationResult } from \"../response/AuthenticationResult.js\";\nimport { PopTokenGenerator } from \"../crypto/PopTokenGenerator.js\";\nimport { StringUtils } from \"../utils/StringUtils.js\";\nimport { RequestThumbprint } from \"../network/RequestThumbprint.js\";\nimport { NetworkResponse } from \"../network/NetworkResponse.js\";\nimport { CommonSilentFlowRequest } from \"../request/CommonSilentFlowRequest.js\";\nimport {\n createClientConfigurationError,\n ClientConfigurationErrorCodes,\n} from \"../error/ClientConfigurationError.js\";\nimport {\n createClientAuthError,\n ClientAuthErrorCodes,\n} from \"../error/ClientAuthError.js\";\nimport { ServerError } from \"../error/ServerError.js\";\nimport * as TimeUtils from \"../utils/TimeUtils.js\";\nimport { UrlString } from \"../url/UrlString.js\";\nimport { CcsCredentialType } from \"../account/CcsCredential.js\";\nimport { buildClientInfoFromHomeAccountId } from \"../account/ClientInfo.js\";\nimport {\n InteractionRequiredAuthError,\n InteractionRequiredAuthErrorCodes,\n createInteractionRequiredAuthError,\n} from \"../error/InteractionRequiredAuthError.js\";\nimport { PerformanceEvents } from \"../telemetry/performance/PerformanceEvent.js\";\nimport { IPerformanceClient } from \"../telemetry/performance/IPerformanceClient.js\";\nimport { invoke, invokeAsync } from \"../utils/FunctionWrappers.js\";\nimport { generateCredentialKey } from \"../cache/utils/CacheHelpers.js\";\nimport { ClientAssertion } from \"../account/ClientCredentials.js\";\nimport { getClientAssertion } from \"../utils/ClientAssertionUtils.js\";\n\nconst DEFAULT_REFRESH_TOKEN_EXPIRATION_OFFSET_SECONDS = 300; // 5 Minutes\n\n/**\n * OAuth2.0 refresh token client\n * @internal\n */\nexport class RefreshTokenClient extends BaseClient {\n constructor(\n configuration: ClientConfiguration,\n performanceClient?: IPerformanceClient\n ) {\n super(configuration, performanceClient);\n }\n public async acquireToken(\n request: CommonRefreshTokenRequest\n ): Promise {\n this.performanceClient?.addQueueMeasurement(\n PerformanceEvents.RefreshTokenClientAcquireToken,\n request.correlationId\n );\n\n const reqTimestamp = TimeUtils.nowSeconds();\n const response = await invokeAsync(\n this.executeTokenRequest.bind(this),\n PerformanceEvents.RefreshTokenClientExecuteTokenRequest,\n this.logger,\n this.performanceClient,\n request.correlationId\n )(request, this.authority);\n\n // Retrieve requestId from response headers\n const requestId = response.headers?.[HeaderNames.X_MS_REQUEST_ID];\n const responseHandler = new ResponseHandler(\n this.config.authOptions.clientId,\n this.cacheManager,\n this.cryptoUtils,\n this.logger,\n this.config.serializableCache,\n this.config.persistencePlugin\n );\n responseHandler.validateTokenResponse(response.body);\n\n return invokeAsync(\n responseHandler.handleServerTokenResponse.bind(responseHandler),\n PerformanceEvents.HandleServerTokenResponse,\n this.logger,\n this.performanceClient,\n request.correlationId\n )(\n response.body,\n this.authority,\n reqTimestamp,\n request,\n undefined,\n undefined,\n true,\n request.forceCache,\n requestId\n );\n }\n\n /**\n * Gets cached refresh token and attaches to request, then calls acquireToken API\n * @param request\n */\n public async acquireTokenByRefreshToken(\n request: CommonSilentFlowRequest\n ): Promise {\n // Cannot renew token if no request object is given.\n if (!request) {\n throw createClientConfigurationError(\n ClientConfigurationErrorCodes.tokenRequestEmpty\n );\n }\n\n this.performanceClient?.addQueueMeasurement(\n PerformanceEvents.RefreshTokenClientAcquireTokenByRefreshToken,\n request.correlationId\n );\n\n // We currently do not support silent flow for account === null use cases; This will be revisited for confidential flow usecases\n if (!request.account) {\n throw createClientAuthError(\n ClientAuthErrorCodes.noAccountInSilentRequest\n );\n }\n\n // try checking if FOCI is enabled for the given application\n const isFOCI = this.cacheManager.isAppMetadataFOCI(\n request.account.environment\n );\n\n // if the app is part of the family, retrive a Family refresh token if present and make a refreshTokenRequest\n if (isFOCI) {\n try {\n return await invokeAsync(\n this.acquireTokenWithCachedRefreshToken.bind(this),\n PerformanceEvents.RefreshTokenClientAcquireTokenWithCachedRefreshToken,\n this.logger,\n this.performanceClient,\n request.correlationId\n )(request, true);\n } catch (e) {\n const noFamilyRTInCache =\n e instanceof InteractionRequiredAuthError &&\n e.errorCode ===\n InteractionRequiredAuthErrorCodes.noTokensFound;\n const clientMismatchErrorWithFamilyRT =\n e instanceof ServerError &&\n e.errorCode === Errors.INVALID_GRANT_ERROR &&\n e.subError === Errors.CLIENT_MISMATCH_ERROR;\n\n // if family Refresh Token (FRT) cache acquisition fails or if client_mismatch error is seen with FRT, reattempt with application Refresh Token (ART)\n if (noFamilyRTInCache || clientMismatchErrorWithFamilyRT) {\n return invokeAsync(\n this.acquireTokenWithCachedRefreshToken.bind(this),\n PerformanceEvents.RefreshTokenClientAcquireTokenWithCachedRefreshToken,\n this.logger,\n this.performanceClient,\n request.correlationId\n )(request, false);\n // throw in all other cases\n } else {\n throw e;\n }\n }\n }\n // fall back to application refresh token acquisition\n return invokeAsync(\n this.acquireTokenWithCachedRefreshToken.bind(this),\n PerformanceEvents.RefreshTokenClientAcquireTokenWithCachedRefreshToken,\n this.logger,\n this.performanceClient,\n request.correlationId\n )(request, false);\n }\n\n /**\n * makes a network call to acquire tokens by exchanging RefreshToken available in userCache; throws if refresh token is not cached\n * @param request\n */\n private async acquireTokenWithCachedRefreshToken(\n request: CommonSilentFlowRequest,\n foci: boolean\n ) {\n this.performanceClient?.addQueueMeasurement(\n PerformanceEvents.RefreshTokenClientAcquireTokenWithCachedRefreshToken,\n request.correlationId\n );\n\n // fetches family RT or application RT based on FOCI value\n const refreshToken = invoke(\n this.cacheManager.getRefreshToken.bind(this.cacheManager),\n PerformanceEvents.CacheManagerGetRefreshToken,\n this.logger,\n this.performanceClient,\n request.correlationId\n )(\n request.account,\n foci,\n undefined,\n this.performanceClient,\n request.correlationId\n );\n\n if (!refreshToken) {\n throw createInteractionRequiredAuthError(\n InteractionRequiredAuthErrorCodes.noTokensFound\n );\n }\n\n if (\n refreshToken.expiresOn &&\n TimeUtils.isTokenExpired(\n refreshToken.expiresOn,\n request.refreshTokenExpirationOffsetSeconds ||\n DEFAULT_REFRESH_TOKEN_EXPIRATION_OFFSET_SECONDS\n )\n ) {\n throw createInteractionRequiredAuthError(\n InteractionRequiredAuthErrorCodes.refreshTokenExpired\n );\n }\n // attach cached RT size to the current measurement\n\n const refreshTokenRequest: CommonRefreshTokenRequest = {\n ...request,\n refreshToken: refreshToken.secret,\n authenticationScheme:\n request.authenticationScheme || AuthenticationScheme.BEARER,\n ccsCredential: {\n credential: request.account.homeAccountId,\n type: CcsCredentialType.HOME_ACCOUNT_ID,\n },\n };\n\n try {\n return await invokeAsync(\n this.acquireToken.bind(this),\n PerformanceEvents.RefreshTokenClientAcquireToken,\n this.logger,\n this.performanceClient,\n request.correlationId\n )(refreshTokenRequest);\n } catch (e) {\n if (\n e instanceof InteractionRequiredAuthError &&\n e.subError === InteractionRequiredAuthErrorCodes.badToken\n ) {\n // Remove bad refresh token from cache\n this.logger.verbose(\n \"acquireTokenWithRefreshToken: bad refresh token, removing from cache\"\n );\n const badRefreshTokenKey = generateCredentialKey(refreshToken);\n this.cacheManager.removeRefreshToken(badRefreshTokenKey);\n }\n\n throw e;\n }\n }\n\n /**\n * Constructs the network message and makes a NW call to the underlying secure token service\n * @param request\n * @param authority\n */\n private async executeTokenRequest(\n request: CommonRefreshTokenRequest,\n authority: Authority\n ): Promise> {\n this.performanceClient?.addQueueMeasurement(\n PerformanceEvents.RefreshTokenClientExecuteTokenRequest,\n request.correlationId\n );\n\n const queryParametersString = this.createTokenQueryParameters(request);\n const endpoint = UrlString.appendQueryString(\n authority.tokenEndpoint,\n queryParametersString\n );\n\n const requestBody = await invokeAsync(\n this.createTokenRequestBody.bind(this),\n PerformanceEvents.RefreshTokenClientCreateTokenRequestBody,\n this.logger,\n this.performanceClient,\n request.correlationId\n )(request);\n const headers: Record = this.createTokenRequestHeaders(\n request.ccsCredential\n );\n const thumbprint: RequestThumbprint = {\n clientId:\n request.tokenBodyParameters?.clientId ||\n this.config.authOptions.clientId,\n authority: authority.canonicalAuthority,\n scopes: request.scopes,\n claims: request.claims,\n authenticationScheme: request.authenticationScheme,\n resourceRequestMethod: request.resourceRequestMethod,\n resourceRequestUri: request.resourceRequestUri,\n shrClaims: request.shrClaims,\n sshKid: request.sshKid,\n };\n\n return invokeAsync(\n this.executePostToTokenEndpoint.bind(this),\n PerformanceEvents.RefreshTokenClientExecutePostToTokenEndpoint,\n this.logger,\n this.performanceClient,\n request.correlationId\n )(\n endpoint,\n requestBody,\n headers,\n thumbprint,\n request.correlationId,\n PerformanceEvents.RefreshTokenClientExecutePostToTokenEndpoint\n );\n }\n\n /**\n * Helper function to create the token request body\n * @param request\n */\n private async createTokenRequestBody(\n request: CommonRefreshTokenRequest\n ): Promise {\n this.performanceClient?.addQueueMeasurement(\n PerformanceEvents.RefreshTokenClientCreateTokenRequestBody,\n request.correlationId\n );\n\n const correlationId = request.correlationId;\n const parameterBuilder = new RequestParameterBuilder(\n correlationId,\n this.performanceClient\n );\n\n parameterBuilder.addClientId(\n request.embeddedClientId ||\n request.tokenBodyParameters?.[AADServerParamKeys.CLIENT_ID] ||\n this.config.authOptions.clientId\n );\n\n if (request.redirectUri) {\n parameterBuilder.addRedirectUri(request.redirectUri);\n }\n\n parameterBuilder.addScopes(\n request.scopes,\n true,\n this.config.authOptions.authority.options.OIDCOptions?.defaultScopes\n );\n\n parameterBuilder.addGrantType(GrantType.REFRESH_TOKEN_GRANT);\n\n parameterBuilder.addClientInfo();\n\n parameterBuilder.addLibraryInfo(this.config.libraryInfo);\n parameterBuilder.addApplicationTelemetry(\n this.config.telemetry.application\n );\n parameterBuilder.addThrottling();\n\n if (this.serverTelemetryManager && !isOidcProtocolMode(this.config)) {\n parameterBuilder.addServerTelemetry(this.serverTelemetryManager);\n }\n\n parameterBuilder.addRefreshToken(request.refreshToken);\n\n if (this.config.clientCredentials.clientSecret) {\n parameterBuilder.addClientSecret(\n this.config.clientCredentials.clientSecret\n );\n }\n\n if (this.config.clientCredentials.clientAssertion) {\n const clientAssertion: ClientAssertion =\n this.config.clientCredentials.clientAssertion;\n\n parameterBuilder.addClientAssertion(\n await getClientAssertion(\n clientAssertion.assertion,\n this.config.authOptions.clientId,\n request.resourceRequestUri\n )\n );\n parameterBuilder.addClientAssertionType(\n clientAssertion.assertionType\n );\n }\n\n if (request.authenticationScheme === AuthenticationScheme.POP) {\n const popTokenGenerator = new PopTokenGenerator(\n this.cryptoUtils,\n this.performanceClient\n );\n\n let reqCnfData;\n if (!request.popKid) {\n const generatedReqCnfData = await invokeAsync(\n popTokenGenerator.generateCnf.bind(popTokenGenerator),\n PerformanceEvents.PopTokenGenerateCnf,\n this.logger,\n this.performanceClient,\n request.correlationId\n )(request, this.logger);\n\n reqCnfData = generatedReqCnfData.reqCnfString;\n } else {\n reqCnfData = this.cryptoUtils.encodeKid(request.popKid);\n }\n\n // SPA PoP requires full Base64Url encoded req_cnf string (unhashed)\n parameterBuilder.addPopToken(reqCnfData);\n } else if (request.authenticationScheme === AuthenticationScheme.SSH) {\n if (request.sshJwk) {\n parameterBuilder.addSshJwk(request.sshJwk);\n } else {\n throw createClientConfigurationError(\n ClientConfigurationErrorCodes.missingSshJwk\n );\n }\n }\n\n if (\n !StringUtils.isEmptyObj(request.claims) ||\n (this.config.authOptions.clientCapabilities &&\n this.config.authOptions.clientCapabilities.length > 0)\n ) {\n parameterBuilder.addClaims(\n request.claims,\n this.config.authOptions.clientCapabilities\n );\n }\n\n if (\n this.config.systemOptions.preventCorsPreflight &&\n request.ccsCredential\n ) {\n switch (request.ccsCredential.type) {\n case CcsCredentialType.HOME_ACCOUNT_ID:\n try {\n const clientInfo = buildClientInfoFromHomeAccountId(\n request.ccsCredential.credential\n );\n parameterBuilder.addCcsOid(clientInfo);\n } catch (e) {\n this.logger.verbose(\n \"Could not parse home account ID for CCS Header: \" +\n e\n );\n }\n break;\n case CcsCredentialType.UPN:\n parameterBuilder.addCcsUpn(\n request.ccsCredential.credential\n );\n break;\n }\n }\n\n if (request.embeddedClientId) {\n parameterBuilder.addBrokerParameters({\n brokerClientId: this.config.authOptions.clientId,\n brokerRedirectUri: this.config.authOptions.redirectUri,\n });\n }\n\n if (request.tokenBodyParameters) {\n parameterBuilder.addExtraQueryParameters(\n request.tokenBodyParameters\n );\n }\n\n return parameterBuilder.createQueryString();\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { BaseClient } from \"./BaseClient.js\";\nimport { ClientConfiguration } from \"../config/ClientConfiguration.js\";\nimport { CommonSilentFlowRequest } from \"../request/CommonSilentFlowRequest.js\";\nimport { AuthenticationResult } from \"../response/AuthenticationResult.js\";\nimport * as TimeUtils from \"../utils/TimeUtils.js\";\nimport { RefreshTokenClient } from \"./RefreshTokenClient.js\";\nimport {\n ClientAuthError,\n ClientAuthErrorCodes,\n createClientAuthError,\n} from \"../error/ClientAuthError.js\";\nimport { ResponseHandler } from \"../response/ResponseHandler.js\";\nimport { CacheRecord } from \"../cache/entities/CacheRecord.js\";\nimport { CacheOutcome, OIDC_DEFAULT_SCOPES } from \"../utils/Constants.js\";\nimport { IPerformanceClient } from \"../telemetry/performance/IPerformanceClient.js\";\nimport { StringUtils } from \"../utils/StringUtils.js\";\nimport { checkMaxAge, extractTokenClaims } from \"../account/AuthToken.js\";\nimport { TokenClaims } from \"../account/TokenClaims.js\";\nimport { PerformanceEvents } from \"../telemetry/performance/PerformanceEvent.js\";\nimport { invokeAsync } from \"../utils/FunctionWrappers.js\";\nimport { getTenantFromAuthorityString } from \"../authority/Authority.js\";\n\n/** @internal */\nexport class SilentFlowClient extends BaseClient {\n constructor(\n configuration: ClientConfiguration,\n performanceClient?: IPerformanceClient\n ) {\n super(configuration, performanceClient);\n }\n\n /**\n * Retrieves a token from cache if it is still valid, or uses the cached refresh token to renew\n * the given token and returns the renewed token\n * @param request\n */\n async acquireToken(\n request: CommonSilentFlowRequest\n ): Promise {\n try {\n const [authResponse, cacheOutcome] = await this.acquireCachedToken({\n ...request,\n scopes: request.scopes?.length\n ? request.scopes\n : [...OIDC_DEFAULT_SCOPES],\n });\n\n // if the token is not expired but must be refreshed; get a new one in the background\n if (cacheOutcome === CacheOutcome.PROACTIVELY_REFRESHED) {\n this.logger.info(\n \"SilentFlowClient:acquireCachedToken - Cached access token's refreshOn property has been exceeded'. It's not expired, but must be refreshed.\"\n );\n\n // refresh the access token in the background\n const refreshTokenClient = new RefreshTokenClient(\n this.config,\n this.performanceClient\n );\n\n refreshTokenClient\n .acquireTokenByRefreshToken(request)\n .catch(() => {\n // do nothing, this is running in the background and no action is to be taken upon success or failure\n });\n }\n\n // return the cached token\n return authResponse;\n } catch (e) {\n if (\n e instanceof ClientAuthError &&\n e.errorCode === ClientAuthErrorCodes.tokenRefreshRequired\n ) {\n const refreshTokenClient = new RefreshTokenClient(\n this.config,\n this.performanceClient\n );\n return refreshTokenClient.acquireTokenByRefreshToken(request);\n } else {\n throw e;\n }\n }\n }\n\n /**\n * Retrieves token from cache or throws an error if it must be refreshed.\n * @param request\n */\n async acquireCachedToken(\n request: CommonSilentFlowRequest\n ): Promise<[AuthenticationResult, CacheOutcome]> {\n this.performanceClient?.addQueueMeasurement(\n PerformanceEvents.SilentFlowClientAcquireCachedToken,\n request.correlationId\n );\n let lastCacheOutcome: CacheOutcome = CacheOutcome.NOT_APPLICABLE;\n\n if (\n request.forceRefresh ||\n (!this.config.cacheOptions.claimsBasedCachingEnabled &&\n !StringUtils.isEmptyObj(request.claims))\n ) {\n // Must refresh due to present force_refresh flag.\n this.setCacheOutcome(\n CacheOutcome.FORCE_REFRESH_OR_CLAIMS,\n request.correlationId\n );\n throw createClientAuthError(\n ClientAuthErrorCodes.tokenRefreshRequired\n );\n }\n\n // We currently do not support silent flow for account === null use cases; This will be revisited for confidential flow usecases\n if (!request.account) {\n throw createClientAuthError(\n ClientAuthErrorCodes.noAccountInSilentRequest\n );\n }\n\n const requestTenantId =\n request.account.tenantId ||\n getTenantFromAuthorityString(request.authority);\n const tokenKeys = this.cacheManager.getTokenKeys();\n const cachedAccessToken = this.cacheManager.getAccessToken(\n request.account,\n request,\n tokenKeys,\n requestTenantId,\n this.performanceClient,\n request.correlationId\n );\n\n if (!cachedAccessToken) {\n // must refresh due to non-existent access_token\n this.setCacheOutcome(\n CacheOutcome.NO_CACHED_ACCESS_TOKEN,\n request.correlationId\n );\n throw createClientAuthError(\n ClientAuthErrorCodes.tokenRefreshRequired\n );\n } else if (\n TimeUtils.wasClockTurnedBack(cachedAccessToken.cachedAt) ||\n TimeUtils.isTokenExpired(\n cachedAccessToken.expiresOn,\n this.config.systemOptions.tokenRenewalOffsetSeconds\n )\n ) {\n // must refresh due to the expires_in value\n this.setCacheOutcome(\n CacheOutcome.CACHED_ACCESS_TOKEN_EXPIRED,\n request.correlationId\n );\n throw createClientAuthError(\n ClientAuthErrorCodes.tokenRefreshRequired\n );\n } else if (\n cachedAccessToken.refreshOn &&\n TimeUtils.isTokenExpired(cachedAccessToken.refreshOn, 0)\n ) {\n // must refresh (in the background) due to the refresh_in value\n lastCacheOutcome = CacheOutcome.PROACTIVELY_REFRESHED;\n\n // don't throw ClientAuthError.createRefreshRequiredError(), return cached token instead\n }\n\n const environment =\n request.authority || this.authority.getPreferredCache();\n const cacheRecord: CacheRecord = {\n account: this.cacheManager.readAccountFromCache(request.account),\n accessToken: cachedAccessToken,\n idToken: this.cacheManager.getIdToken(\n request.account,\n tokenKeys,\n requestTenantId,\n this.performanceClient,\n request.correlationId\n ),\n refreshToken: null,\n appMetadata:\n this.cacheManager.readAppMetadataFromCache(environment),\n };\n\n this.setCacheOutcome(lastCacheOutcome, request.correlationId);\n\n if (this.config.serverTelemetryManager) {\n this.config.serverTelemetryManager.incrementCacheHits();\n }\n\n return [\n await invokeAsync(\n this.generateResultFromCacheRecord.bind(this),\n PerformanceEvents.SilentFlowClientGenerateResultFromCacheRecord,\n this.logger,\n this.performanceClient,\n request.correlationId\n )(cacheRecord, request),\n lastCacheOutcome,\n ];\n }\n\n private setCacheOutcome(\n cacheOutcome: CacheOutcome,\n correlationId: string\n ): void {\n this.serverTelemetryManager?.setCacheOutcome(cacheOutcome);\n this.performanceClient?.addFields(\n {\n cacheOutcome: cacheOutcome,\n },\n correlationId\n );\n if (cacheOutcome !== CacheOutcome.NOT_APPLICABLE) {\n this.logger.info(\n `Token refresh is required due to cache outcome: ${cacheOutcome}`\n );\n }\n }\n\n /**\n * Helper function to build response object from the CacheRecord\n * @param cacheRecord\n */\n private async generateResultFromCacheRecord(\n cacheRecord: CacheRecord,\n request: CommonSilentFlowRequest\n ): Promise {\n this.performanceClient?.addQueueMeasurement(\n PerformanceEvents.SilentFlowClientGenerateResultFromCacheRecord,\n request.correlationId\n );\n let idTokenClaims: TokenClaims | undefined;\n if (cacheRecord.idToken) {\n idTokenClaims = extractTokenClaims(\n cacheRecord.idToken.secret,\n this.config.cryptoInterface.base64Decode\n );\n }\n\n // token max_age check\n if (request.maxAge || request.maxAge === 0) {\n const authTime = idTokenClaims?.auth_time;\n if (!authTime) {\n throw createClientAuthError(\n ClientAuthErrorCodes.authTimeNotFound\n );\n }\n\n checkMaxAge(authTime, request.maxAge);\n }\n\n return ResponseHandler.generateAuthenticationResult(\n this.cryptoUtils,\n this.authority,\n cacheRecord,\n true,\n request,\n idTokenClaims\n );\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { StandardInteractionClient } from \"./StandardInteractionClient.js\";\nimport {\n CommonSilentFlowRequest,\n SilentFlowClient,\n PerformanceEvents,\n invokeAsync,\n} from \"@azure/msal-common/browser\";\nimport { ApiId } from \"../utils/BrowserConstants.js\";\nimport {\n BrowserAuthError,\n BrowserAuthErrorCodes,\n} from \"../error/BrowserAuthError.js\";\nimport { AuthenticationResult } from \"../response/AuthenticationResult.js\";\nimport { ClearCacheRequest } from \"../request/ClearCacheRequest.js\";\n\nexport class SilentCacheClient extends StandardInteractionClient {\n /**\n * Returns unexpired tokens from the cache, if available\n * @param silentRequest\n */\n async acquireToken(\n silentRequest: CommonSilentFlowRequest\n ): Promise {\n this.performanceClient.addQueueMeasurement(\n PerformanceEvents.SilentCacheClientAcquireToken,\n silentRequest.correlationId\n );\n // Telemetry manager only used to increment cacheHits here\n const serverTelemetryManager = this.initializeServerTelemetryManager(\n ApiId.acquireTokenSilent_silentFlow\n );\n\n const clientConfig = await invokeAsync(\n this.getClientConfiguration.bind(this),\n PerformanceEvents.StandardInteractionClientGetClientConfiguration,\n this.logger,\n this.performanceClient,\n this.correlationId\n )({\n serverTelemetryManager,\n requestAuthority: silentRequest.authority,\n requestAzureCloudOptions: silentRequest.azureCloudOptions,\n account: silentRequest.account,\n });\n const silentAuthClient = new SilentFlowClient(\n clientConfig,\n this.performanceClient\n );\n this.logger.verbose(\"Silent auth client created\");\n\n try {\n const response = await invokeAsync(\n silentAuthClient.acquireCachedToken.bind(silentAuthClient),\n PerformanceEvents.SilentFlowClientAcquireCachedToken,\n this.logger,\n this.performanceClient,\n silentRequest.correlationId\n )(silentRequest);\n const authResponse = response[0] as AuthenticationResult;\n\n this.performanceClient.addFields(\n {\n fromCache: true,\n },\n silentRequest.correlationId\n );\n return authResponse;\n } catch (error) {\n if (\n error instanceof BrowserAuthError &&\n error.errorCode === BrowserAuthErrorCodes.cryptoKeyNotFound\n ) {\n this.logger.verbose(\n \"Signing keypair for bound access token not found. Refreshing bound access token and generating a new crypto keypair.\"\n );\n }\n throw error;\n }\n }\n\n /**\n * API to silenty clear the browser cache.\n * @param logoutRequest\n */\n logout(logoutRequest?: ClearCacheRequest): Promise {\n this.logger.verbose(\"logoutRedirect called\");\n const validLogoutRequest = this.initializeLogoutRequest(logoutRequest);\n return this.clearCacheOnLogout(validLogoutRequest?.account);\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport {\n Logger,\n ICrypto,\n PromptValue,\n AuthToken,\n Constants,\n AccountEntity,\n AuthorityType,\n ScopeSet,\n TimeUtils,\n AuthenticationScheme,\n UrlString,\n OIDC_DEFAULT_SCOPES,\n PopTokenGenerator,\n SignedHttpRequestParameters,\n IPerformanceClient,\n PerformanceEvents,\n IdTokenEntity,\n AccessTokenEntity,\n AuthError,\n CommonSilentFlowRequest,\n AccountInfo,\n AADServerParamKeys,\n TokenClaims,\n createClientAuthError,\n ClientAuthErrorCodes,\n invokeAsync,\n createAuthError,\n AuthErrorCodes,\n updateAccountTenantProfileData,\n CacheHelpers,\n buildAccountToCache,\n InProgressPerformanceEvent,\n ServerTelemetryManager,\n} from \"@azure/msal-common/browser\";\nimport { BaseInteractionClient } from \"./BaseInteractionClient.js\";\nimport { BrowserConfiguration } from \"../config/Configuration.js\";\nimport { BrowserCacheManager } from \"../cache/BrowserCacheManager.js\";\nimport { EventHandler } from \"../event/EventHandler.js\";\nimport { PopupRequest } from \"../request/PopupRequest.js\";\nimport { SilentRequest } from \"../request/SilentRequest.js\";\nimport { SsoSilentRequest } from \"../request/SsoSilentRequest.js\";\nimport { NativeMessageHandler } from \"../broker/nativeBroker/NativeMessageHandler.js\";\nimport {\n NativeExtensionMethod,\n ApiId,\n TemporaryCacheKeys,\n NativeConstants,\n BrowserConstants,\n} from \"../utils/BrowserConstants.js\";\nimport {\n NativeExtensionRequestBody,\n NativeTokenRequest,\n} from \"../broker/nativeBroker/NativeRequest.js\";\nimport { MATS, NativeResponse } from \"../broker/nativeBroker/NativeResponse.js\";\nimport {\n NativeAuthError,\n NativeAuthErrorCodes,\n createNativeAuthError,\n isFatalNativeAuthError,\n} from \"../error/NativeAuthError.js\";\nimport { RedirectRequest } from \"../request/RedirectRequest.js\";\nimport { NavigationOptions } from \"../navigation/NavigationOptions.js\";\nimport { INavigationClient } from \"../navigation/INavigationClient.js\";\nimport {\n createBrowserAuthError,\n BrowserAuthErrorCodes,\n} from \"../error/BrowserAuthError.js\";\nimport { SilentCacheClient } from \"./SilentCacheClient.js\";\nimport { AuthenticationResult } from \"../response/AuthenticationResult.js\";\nimport { base64Decode } from \"../encode/Base64Decode.js\";\nimport { version } from \"../packageMetadata.js\";\n\nexport class NativeInteractionClient extends BaseInteractionClient {\n protected apiId: ApiId;\n protected accountId: string;\n protected nativeMessageHandler: NativeMessageHandler;\n protected silentCacheClient: SilentCacheClient;\n protected nativeStorageManager: BrowserCacheManager;\n protected skus: string;\n protected serverTelemetryManager: ServerTelemetryManager;\n\n constructor(\n config: BrowserConfiguration,\n browserStorage: BrowserCacheManager,\n browserCrypto: ICrypto,\n logger: Logger,\n eventHandler: EventHandler,\n navigationClient: INavigationClient,\n apiId: ApiId,\n performanceClient: IPerformanceClient,\n provider: NativeMessageHandler,\n accountId: string,\n nativeStorageImpl: BrowserCacheManager,\n correlationId?: string\n ) {\n super(\n config,\n browserStorage,\n browserCrypto,\n logger,\n eventHandler,\n navigationClient,\n performanceClient,\n provider,\n correlationId\n );\n this.apiId = apiId;\n this.accountId = accountId;\n this.nativeMessageHandler = provider;\n this.nativeStorageManager = nativeStorageImpl;\n this.silentCacheClient = new SilentCacheClient(\n config,\n this.nativeStorageManager,\n browserCrypto,\n logger,\n eventHandler,\n navigationClient,\n performanceClient,\n provider,\n correlationId\n );\n this.serverTelemetryManager = this.initializeServerTelemetryManager(\n this.apiId\n );\n\n const extensionName =\n this.nativeMessageHandler.getExtensionId() ===\n NativeConstants.PREFERRED_EXTENSION_ID\n ? \"chrome\"\n : this.nativeMessageHandler.getExtensionId()?.length\n ? \"unknown\"\n : undefined;\n this.skus = ServerTelemetryManager.makeExtraSkuString({\n libraryName: BrowserConstants.MSAL_SKU,\n libraryVersion: version,\n extensionName: extensionName,\n extensionVersion: this.nativeMessageHandler.getExtensionVersion(),\n });\n }\n\n /**\n * Adds SKUs to request extra query parameters\n * @param request {NativeTokenRequest}\n * @private\n */\n private addRequestSKUs(request: NativeTokenRequest) {\n request.extraParameters = {\n ...request.extraParameters,\n [AADServerParamKeys.X_CLIENT_EXTRA_SKU]: this.skus,\n };\n }\n\n /**\n * Acquire token from native platform via browser extension\n * @param request\n */\n async acquireToken(\n request: PopupRequest | SilentRequest | SsoSilentRequest\n ): Promise {\n this.performanceClient.addQueueMeasurement(\n PerformanceEvents.NativeInteractionClientAcquireToken,\n request.correlationId\n );\n this.logger.trace(\"NativeInteractionClient - acquireToken called.\");\n\n // start the perf measurement\n const nativeATMeasurement = this.performanceClient.startMeasurement(\n PerformanceEvents.NativeInteractionClientAcquireToken,\n request.correlationId\n );\n const reqTimestamp = TimeUtils.nowSeconds();\n\n try {\n // initialize native request\n const nativeRequest = await this.initializeNativeRequest(request);\n\n // check if the tokens can be retrieved from internal cache\n try {\n const result = await this.acquireTokensFromCache(\n this.accountId,\n nativeRequest\n );\n nativeATMeasurement.end({\n success: true,\n isNativeBroker: false, // Should be true only when the result is coming directly from the broker\n fromCache: true,\n });\n return result;\n } catch (e) {\n // continue with a native call for any and all errors\n this.logger.info(\n \"MSAL internal Cache does not contain tokens, proceed to make a native call\"\n );\n }\n\n const { ...nativeTokenRequest } = nativeRequest;\n\n // fall back to native calls\n const messageBody: NativeExtensionRequestBody = {\n method: NativeExtensionMethod.GetToken,\n request: nativeTokenRequest,\n };\n\n const response: object =\n await this.nativeMessageHandler.sendMessage(messageBody);\n const validatedResponse: NativeResponse =\n this.validateNativeResponse(response);\n\n return await this.handleNativeResponse(\n validatedResponse,\n nativeRequest,\n reqTimestamp\n )\n .then((result: AuthenticationResult) => {\n nativeATMeasurement.end({\n success: true,\n isNativeBroker: true,\n requestId: result.requestId,\n });\n this.serverTelemetryManager.clearNativeBrokerErrorCode();\n return result;\n })\n .catch((error: AuthError) => {\n nativeATMeasurement.end({\n success: false,\n errorCode: error.errorCode,\n subErrorCode: error.subError,\n isNativeBroker: true,\n });\n throw error;\n });\n } catch (e) {\n if (e instanceof NativeAuthError) {\n this.serverTelemetryManager.setNativeBrokerErrorCode(\n e.errorCode\n );\n }\n throw e;\n }\n }\n\n /**\n * Creates silent flow request\n * @param request\n * @param cachedAccount\n * @returns CommonSilentFlowRequest\n */\n private createSilentCacheRequest(\n request: NativeTokenRequest,\n cachedAccount: AccountInfo\n ): CommonSilentFlowRequest {\n return {\n authority: request.authority,\n correlationId: this.correlationId,\n scopes: ScopeSet.fromString(request.scope).asArray(),\n account: cachedAccount,\n forceRefresh: false,\n };\n }\n\n /**\n * Fetches the tokens from the cache if un-expired\n * @param nativeAccountId\n * @param request\n * @returns authenticationResult\n */\n protected async acquireTokensFromCache(\n nativeAccountId: string,\n request: NativeTokenRequest\n ): Promise {\n if (!nativeAccountId) {\n this.logger.warning(\n \"NativeInteractionClient:acquireTokensFromCache - No nativeAccountId provided\"\n );\n throw createClientAuthError(ClientAuthErrorCodes.noAccountFound);\n }\n // fetch the account from browser cache\n const account = this.browserStorage.getBaseAccountInfo({\n nativeAccountId,\n });\n\n if (!account) {\n throw createClientAuthError(ClientAuthErrorCodes.noAccountFound);\n }\n\n // leverage silent flow for cached tokens retrieval\n try {\n const silentRequest = this.createSilentCacheRequest(\n request,\n account\n );\n const result = await this.silentCacheClient.acquireToken(\n silentRequest\n );\n\n const fullAccount = {\n ...account,\n idTokenClaims: result?.idTokenClaims as TokenClaims,\n idToken: result?.idToken,\n };\n\n return {\n ...result,\n account: fullAccount,\n };\n } catch (e) {\n throw e;\n }\n }\n\n /**\n * Acquires a token from native platform then redirects to the redirectUri instead of returning the response\n * @param {RedirectRequest} request\n * @param {InProgressPerformanceEvent} rootMeasurement\n */\n async acquireTokenRedirect(\n request: RedirectRequest,\n rootMeasurement: InProgressPerformanceEvent\n ): Promise {\n this.logger.trace(\n \"NativeInteractionClient - acquireTokenRedirect called.\"\n );\n\n const { ...remainingParameters } = request;\n delete remainingParameters.onRedirectNavigate;\n\n const nativeRequest = await this.initializeNativeRequest(\n remainingParameters\n );\n\n const messageBody: NativeExtensionRequestBody = {\n method: NativeExtensionMethod.GetToken,\n request: nativeRequest,\n };\n\n try {\n const response: object =\n await this.nativeMessageHandler.sendMessage(messageBody);\n this.validateNativeResponse(response);\n } catch (e) {\n // Only throw fatal errors here to allow application to fallback to regular redirect. Otherwise proceed and the error will be thrown in handleRedirectPromise\n if (e instanceof NativeAuthError) {\n this.serverTelemetryManager.setNativeBrokerErrorCode(\n e.errorCode\n );\n if (isFatalNativeAuthError(e)) {\n throw e;\n }\n }\n }\n this.browserStorage.setTemporaryCache(\n TemporaryCacheKeys.NATIVE_REQUEST,\n JSON.stringify(nativeRequest),\n true\n );\n\n const navigationOptions: NavigationOptions = {\n apiId: ApiId.acquireTokenRedirect,\n timeout: this.config.system.redirectNavigationTimeout,\n noHistory: false,\n };\n const redirectUri = this.config.auth.navigateToLoginRequestUrl\n ? window.location.href\n : this.getRedirectUri(request.redirectUri);\n rootMeasurement.end({ success: true });\n await this.navigationClient.navigateExternal(\n redirectUri,\n navigationOptions\n ); // Need to treat this as external to ensure handleRedirectPromise is run again\n }\n\n /**\n * If the previous page called native platform for a token using redirect APIs, send the same request again and return the response\n * @param performanceClient {IPerformanceClient?}\n * @param correlationId {string?} correlation identifier\n */\n async handleRedirectPromise(\n performanceClient?: IPerformanceClient,\n correlationId?: string\n ): Promise {\n this.logger.trace(\n \"NativeInteractionClient - handleRedirectPromise called.\"\n );\n if (!this.browserStorage.isInteractionInProgress(true)) {\n this.logger.info(\n \"handleRedirectPromise called but there is no interaction in progress, returning null.\"\n );\n return null;\n }\n\n // remove prompt from the request to prevent WAM from prompting twice\n const cachedRequest = this.browserStorage.getCachedNativeRequest();\n if (!cachedRequest) {\n this.logger.verbose(\n \"NativeInteractionClient - handleRedirectPromise called but there is no cached request, returning null.\"\n );\n if (performanceClient && correlationId) {\n performanceClient?.addFields(\n { errorCode: \"no_cached_request\" },\n correlationId\n );\n }\n return null;\n }\n\n const { prompt, ...request } = cachedRequest;\n if (prompt) {\n this.logger.verbose(\n \"NativeInteractionClient - handleRedirectPromise called and prompt was included in the original request, removing prompt from cached request to prevent second interaction with native broker window.\"\n );\n }\n\n this.browserStorage.removeItem(\n this.browserStorage.generateCacheKey(\n TemporaryCacheKeys.NATIVE_REQUEST\n )\n );\n\n const messageBody: NativeExtensionRequestBody = {\n method: NativeExtensionMethod.GetToken,\n request: request,\n };\n\n const reqTimestamp = TimeUtils.nowSeconds();\n\n try {\n this.logger.verbose(\n \"NativeInteractionClient - handleRedirectPromise sending message to native broker.\"\n );\n const response: object =\n await this.nativeMessageHandler.sendMessage(messageBody);\n this.validateNativeResponse(response);\n const result = this.handleNativeResponse(\n response as NativeResponse,\n request,\n reqTimestamp\n );\n this.browserStorage.setInteractionInProgress(false);\n const res = await result;\n this.serverTelemetryManager.clearNativeBrokerErrorCode();\n return res;\n } catch (e) {\n this.browserStorage.setInteractionInProgress(false);\n throw e;\n }\n }\n\n /**\n * Logout from native platform via browser extension\n * @param request\n */\n logout(): Promise {\n this.logger.trace(\"NativeInteractionClient - logout called.\");\n return Promise.reject(\"Logout not implemented yet\");\n }\n\n /**\n * Transform response from native platform into AuthenticationResult object which will be returned to the end user\n * @param response\n * @param request\n * @param reqTimestamp\n */\n protected async handleNativeResponse(\n response: NativeResponse,\n request: NativeTokenRequest,\n reqTimestamp: number\n ): Promise {\n this.logger.trace(\n \"NativeInteractionClient - handleNativeResponse called.\"\n );\n\n // generate identifiers\n const idTokenClaims = AuthToken.extractTokenClaims(\n response.id_token,\n base64Decode\n );\n\n const homeAccountIdentifier = this.createHomeAccountIdentifier(\n response,\n idTokenClaims\n );\n\n const cachedhomeAccountId =\n this.browserStorage.getAccountInfoFilteredBy({\n nativeAccountId: request.accountId,\n })?.homeAccountId;\n\n if (\n homeAccountIdentifier !== cachedhomeAccountId &&\n response.account.id !== request.accountId\n ) {\n // User switch in native broker prompt is not supported. All users must first sign in through web flow to ensure server state is in sync\n throw createNativeAuthError(NativeAuthErrorCodes.userSwitch);\n }\n\n // Get the preferred_cache domain for the given authority\n const authority = await this.getDiscoveredAuthority({\n requestAuthority: request.authority,\n });\n\n const baseAccount = buildAccountToCache(\n this.browserStorage,\n authority,\n homeAccountIdentifier,\n base64Decode,\n idTokenClaims,\n response.client_info,\n undefined, // environment\n idTokenClaims.tid,\n undefined, // auth code payload\n response.account.id,\n this.logger\n );\n\n // generate authenticationResult\n const result = await this.generateAuthenticationResult(\n response,\n request,\n idTokenClaims,\n baseAccount,\n authority.canonicalAuthority,\n reqTimestamp\n );\n\n // cache accounts and tokens in the appropriate storage\n this.cacheAccount(baseAccount);\n this.cacheNativeTokens(\n response,\n request,\n homeAccountIdentifier,\n idTokenClaims,\n response.access_token,\n result.tenantId,\n reqTimestamp\n );\n\n return result;\n }\n\n /**\n * creates an homeAccountIdentifier for the account\n * @param response\n * @param idTokenObj\n * @returns\n */\n protected createHomeAccountIdentifier(\n response: NativeResponse,\n idTokenClaims: TokenClaims\n ): string {\n // Save account in browser storage\n const homeAccountIdentifier = AccountEntity.generateHomeAccountId(\n response.client_info || Constants.EMPTY_STRING,\n AuthorityType.Default,\n this.logger,\n this.browserCrypto,\n idTokenClaims\n );\n\n return homeAccountIdentifier;\n }\n\n /**\n * Helper to generate scopes\n * @param response\n * @param request\n * @returns\n */\n generateScopes(\n response: NativeResponse,\n request: NativeTokenRequest\n ): ScopeSet {\n return response.scope\n ? ScopeSet.fromString(response.scope)\n : ScopeSet.fromString(request.scope);\n }\n\n /**\n * If PoP token is requesred, records the PoP token if returned from the WAM, else generates one in the browser\n * @param request\n * @param response\n */\n async generatePopAccessToken(\n response: NativeResponse,\n request: NativeTokenRequest\n ): Promise {\n if (\n request.tokenType === AuthenticationScheme.POP &&\n request.signPopToken\n ) {\n /**\n * This code prioritizes SHR returned from the native layer. In case of error/SHR not calculated from WAM and the AT\n * is still received, SHR is calculated locally\n */\n\n // Check if native layer returned an SHR token\n if (response.shr) {\n this.logger.trace(\n \"handleNativeServerResponse: SHR is enabled in native layer\"\n );\n return response.shr;\n }\n\n // Generate SHR in msal js if WAM does not compute it when POP is enabled\n const popTokenGenerator: PopTokenGenerator = new PopTokenGenerator(\n this.browserCrypto\n );\n const shrParameters: SignedHttpRequestParameters = {\n resourceRequestMethod: request.resourceRequestMethod,\n resourceRequestUri: request.resourceRequestUri,\n shrClaims: request.shrClaims,\n shrNonce: request.shrNonce,\n };\n\n /**\n * KeyID must be present in the native request from when the PoP key was generated in order for\n * PopTokenGenerator to query the full key for signing\n */\n if (!request.keyId) {\n throw createClientAuthError(ClientAuthErrorCodes.keyIdMissing);\n }\n return popTokenGenerator.signPopToken(\n response.access_token,\n request.keyId,\n shrParameters\n );\n } else {\n return response.access_token;\n }\n }\n\n /**\n * Generates authentication result\n * @param response\n * @param request\n * @param idTokenObj\n * @param accountEntity\n * @param authority\n * @param reqTimestamp\n * @returns\n */\n protected async generateAuthenticationResult(\n response: NativeResponse,\n request: NativeTokenRequest,\n idTokenClaims: TokenClaims,\n accountEntity: AccountEntity,\n authority: string,\n reqTimestamp: number\n ): Promise {\n // Add Native Broker fields to Telemetry\n const mats = this.addTelemetryFromNativeResponse(response);\n\n // If scopes not returned in server response, use request scopes\n const responseScopes = response.scope\n ? ScopeSet.fromString(response.scope)\n : ScopeSet.fromString(request.scope);\n\n const accountProperties = response.account.properties || {};\n const uid =\n accountProperties[\"UID\"] ||\n idTokenClaims.oid ||\n idTokenClaims.sub ||\n Constants.EMPTY_STRING;\n const tid =\n accountProperties[\"TenantId\"] ||\n idTokenClaims.tid ||\n Constants.EMPTY_STRING;\n\n const accountInfo: AccountInfo | null = updateAccountTenantProfileData(\n accountEntity.getAccountInfo(),\n undefined, // tenantProfile optional\n idTokenClaims,\n response.id_token\n );\n\n /**\n * In pairwise broker flows, this check prevents the broker's native account id\n * from being returned over the embedded app's account id.\n */\n if (accountInfo.nativeAccountId !== response.account.id) {\n accountInfo.nativeAccountId = response.account.id;\n }\n\n // generate PoP token as needed\n const responseAccessToken = await this.generatePopAccessToken(\n response,\n request\n );\n const tokenType =\n request.tokenType === AuthenticationScheme.POP\n ? AuthenticationScheme.POP\n : AuthenticationScheme.BEARER;\n\n const result: AuthenticationResult = {\n authority: authority,\n uniqueId: uid,\n tenantId: tid,\n scopes: responseScopes.asArray(),\n account: accountInfo,\n idToken: response.id_token,\n idTokenClaims: idTokenClaims,\n accessToken: responseAccessToken,\n fromCache: mats ? this.isResponseFromCache(mats) : false,\n expiresOn: new Date(\n Number(reqTimestamp + response.expires_in) * 1000\n ),\n tokenType: tokenType,\n correlationId: this.correlationId,\n state: response.state,\n fromNativeBroker: true,\n };\n\n return result;\n }\n\n /**\n * cache the account entity in browser storage\n * @param accountEntity\n */\n cacheAccount(accountEntity: AccountEntity): void {\n // Store the account info and hence `nativeAccountId` in browser cache\n this.browserStorage.setAccount(accountEntity);\n\n // Remove any existing cached tokens for this account in browser storage\n this.browserStorage.removeAccountContext(accountEntity).catch((e) => {\n this.logger.error(\n `Error occurred while removing account context from browser storage. ${e}`\n );\n });\n }\n\n /**\n * Stores the access_token and id_token in inmemory storage\n * @param response\n * @param request\n * @param homeAccountIdentifier\n * @param idTokenObj\n * @param responseAccessToken\n * @param tenantId\n * @param reqTimestamp\n */\n cacheNativeTokens(\n response: NativeResponse,\n request: NativeTokenRequest,\n homeAccountIdentifier: string,\n idTokenClaims: TokenClaims,\n responseAccessToken: string,\n tenantId: string,\n reqTimestamp: number\n ): void {\n const cachedIdToken: IdTokenEntity | null =\n CacheHelpers.createIdTokenEntity(\n homeAccountIdentifier,\n request.authority,\n response.id_token || \"\",\n request.clientId,\n idTokenClaims.tid || \"\"\n );\n\n // cache accessToken in inmemory storage\n const expiresIn: number =\n request.tokenType === AuthenticationScheme.POP\n ? Constants.SHR_NONCE_VALIDITY\n : (typeof response.expires_in === \"string\"\n ? parseInt(response.expires_in, 10)\n : response.expires_in) || 0;\n const tokenExpirationSeconds = reqTimestamp + expiresIn;\n const responseScopes = this.generateScopes(response, request);\n\n const cachedAccessToken: AccessTokenEntity | null =\n CacheHelpers.createAccessTokenEntity(\n homeAccountIdentifier,\n request.authority,\n responseAccessToken,\n request.clientId,\n idTokenClaims.tid || tenantId,\n responseScopes.printScopes(),\n tokenExpirationSeconds,\n 0,\n base64Decode,\n undefined,\n request.tokenType as AuthenticationScheme,\n undefined,\n request.keyId\n );\n\n const nativeCacheRecord = {\n idToken: cachedIdToken,\n accessToken: cachedAccessToken,\n };\n\n void this.nativeStorageManager.saveCacheRecord(\n nativeCacheRecord,\n request.storeInCache\n );\n }\n\n protected addTelemetryFromNativeResponse(\n response: NativeResponse\n ): MATS | null {\n const mats = this.getMATSFromResponse(response);\n\n if (!mats) {\n return null;\n }\n\n this.performanceClient.addFields(\n {\n extensionId: this.nativeMessageHandler.getExtensionId(),\n extensionVersion:\n this.nativeMessageHandler.getExtensionVersion(),\n matsBrokerVersion: mats.broker_version,\n matsAccountJoinOnStart: mats.account_join_on_start,\n matsAccountJoinOnEnd: mats.account_join_on_end,\n matsDeviceJoin: mats.device_join,\n matsPromptBehavior: mats.prompt_behavior,\n matsApiErrorCode: mats.api_error_code,\n matsUiVisible: mats.ui_visible,\n matsSilentCode: mats.silent_code,\n matsSilentBiSubCode: mats.silent_bi_sub_code,\n matsSilentMessage: mats.silent_message,\n matsSilentStatus: mats.silent_status,\n matsHttpStatus: mats.http_status,\n matsHttpEventCount: mats.http_event_count,\n },\n this.correlationId\n );\n\n return mats;\n }\n\n /**\n * Validates native platform response before processing\n * @param response\n */\n private validateNativeResponse(response: object): NativeResponse {\n if (\n response.hasOwnProperty(\"access_token\") &&\n response.hasOwnProperty(\"id_token\") &&\n response.hasOwnProperty(\"client_info\") &&\n response.hasOwnProperty(\"account\") &&\n response.hasOwnProperty(\"scope\") &&\n response.hasOwnProperty(\"expires_in\")\n ) {\n return response as NativeResponse;\n } else {\n throw createAuthError(\n AuthErrorCodes.unexpectedError,\n \"Response missing expected properties.\"\n );\n }\n }\n\n /**\n * Gets MATS telemetry from native response\n * @param response\n * @returns\n */\n private getMATSFromResponse(response: NativeResponse): MATS | null {\n if (response.properties.MATS) {\n try {\n return JSON.parse(response.properties.MATS);\n } catch (e) {\n this.logger.error(\n \"NativeInteractionClient - Error parsing MATS telemetry, returning null instead\"\n );\n }\n }\n\n return null;\n }\n\n /**\n * Returns whether or not response came from native cache\n * @param response\n * @returns\n */\n protected isResponseFromCache(mats: MATS): boolean {\n if (typeof mats.is_cached === \"undefined\") {\n this.logger.verbose(\n \"NativeInteractionClient - MATS telemetry does not contain field indicating if response was served from cache. Returning false.\"\n );\n return false;\n }\n\n return !!mats.is_cached;\n }\n\n /**\n * Translates developer provided request object into NativeRequest object\n * @param request\n */\n protected async initializeNativeRequest(\n request: PopupRequest | SsoSilentRequest\n ): Promise {\n this.logger.trace(\n \"NativeInteractionClient - initializeNativeRequest called\"\n );\n\n const requestAuthority =\n request.authority || this.config.auth.authority;\n\n if (request.account) {\n // validate authority\n await this.getDiscoveredAuthority({\n requestAuthority,\n requestAzureCloudOptions: request.azureCloudOptions,\n account: request.account,\n });\n }\n\n const canonicalAuthority = new UrlString(requestAuthority);\n canonicalAuthority.validateAsUri();\n\n // scopes are expected to be received by the native broker as \"scope\" and will be added to the request below. Other properties that should be dropped from the request to the native broker can be included in the object destructuring here.\n const { scopes, ...remainingProperties } = request;\n const scopeSet = new ScopeSet(scopes || []);\n scopeSet.appendScopes(OIDC_DEFAULT_SCOPES);\n\n const getPrompt = () => {\n // If request is silent, prompt is always none\n switch (this.apiId) {\n case ApiId.ssoSilent:\n case ApiId.acquireTokenSilent_silentFlow:\n this.logger.trace(\n \"initializeNativeRequest: silent request sets prompt to none\"\n );\n return PromptValue.NONE;\n default:\n break;\n }\n\n // Prompt not provided, request may proceed and native broker decides if it needs to prompt\n if (!request.prompt) {\n this.logger.trace(\n \"initializeNativeRequest: prompt was not provided\"\n );\n return undefined;\n }\n\n // If request is interactive, check if prompt provided is allowed to go directly to native broker\n switch (request.prompt) {\n case PromptValue.NONE:\n case PromptValue.CONSENT:\n case PromptValue.LOGIN:\n this.logger.trace(\n \"initializeNativeRequest: prompt is compatible with native flow\"\n );\n return request.prompt;\n default:\n this.logger.trace(\n `initializeNativeRequest: prompt = ${request.prompt} is not compatible with native flow`\n );\n throw createBrowserAuthError(\n BrowserAuthErrorCodes.nativePromptNotSupported\n );\n }\n };\n\n const validatedRequest: NativeTokenRequest = {\n ...remainingProperties,\n accountId: this.accountId,\n clientId: this.config.auth.clientId,\n authority: canonicalAuthority.urlString,\n scope: scopeSet.printScopes(),\n redirectUri: this.getRedirectUri(request.redirectUri),\n prompt: getPrompt(),\n correlationId: this.correlationId,\n tokenType: request.authenticationScheme,\n windowTitleSubstring: document.title,\n extraParameters: {\n ...request.extraQueryParameters,\n ...request.tokenQueryParameters,\n },\n extendedExpiryToken: false, // Make this configurable?\n keyId: request.popKid,\n };\n\n // Check for PoP token requests: signPopToken should only be set to true if popKid is not set\n if (validatedRequest.signPopToken && !!request.popKid) {\n throw createBrowserAuthError(\n BrowserAuthErrorCodes.invalidPopTokenRequest\n );\n }\n\n this.handleExtraBrokerParams(validatedRequest);\n validatedRequest.extraParameters =\n validatedRequest.extraParameters || {};\n validatedRequest.extraParameters.telemetry =\n NativeConstants.MATS_TELEMETRY;\n\n if (request.authenticationScheme === AuthenticationScheme.POP) {\n // add POP request type\n const shrParameters: SignedHttpRequestParameters = {\n resourceRequestUri: request.resourceRequestUri,\n resourceRequestMethod: request.resourceRequestMethod,\n shrClaims: request.shrClaims,\n shrNonce: request.shrNonce,\n };\n\n const popTokenGenerator = new PopTokenGenerator(this.browserCrypto);\n\n // generate reqCnf if not provided in the request\n let reqCnfData;\n if (!validatedRequest.keyId) {\n const generatedReqCnfData = await invokeAsync(\n popTokenGenerator.generateCnf.bind(popTokenGenerator),\n PerformanceEvents.PopTokenGenerateCnf,\n this.logger,\n this.performanceClient,\n request.correlationId\n )(shrParameters, this.logger);\n reqCnfData = generatedReqCnfData.reqCnfString;\n validatedRequest.keyId = generatedReqCnfData.kid;\n validatedRequest.signPopToken = true;\n } else {\n reqCnfData = this.browserCrypto.base64UrlEncode(\n JSON.stringify({ kid: validatedRequest.keyId })\n );\n validatedRequest.signPopToken = false;\n }\n\n // SPAs require whole string to be passed to broker\n validatedRequest.reqCnf = reqCnfData;\n }\n this.addRequestSKUs(validatedRequest);\n\n return validatedRequest;\n }\n\n /**\n * Handles extra broker request parameters\n * @param request {NativeTokenRequest}\n * @private\n */\n private handleExtraBrokerParams(request: NativeTokenRequest): void {\n const hasExtraBrokerParams =\n request.extraParameters &&\n request.extraParameters.hasOwnProperty(\n AADServerParamKeys.BROKER_CLIENT_ID\n ) &&\n request.extraParameters.hasOwnProperty(\n AADServerParamKeys.BROKER_REDIRECT_URI\n ) &&\n request.extraParameters.hasOwnProperty(\n AADServerParamKeys.CLIENT_ID\n );\n\n if (!request.embeddedClientId && !hasExtraBrokerParams) {\n return;\n }\n\n let child_client_id: string = \"\";\n const child_redirect_uri = request.redirectUri;\n\n if (request.embeddedClientId) {\n request.redirectUri = this.config.auth.redirectUri;\n child_client_id = request.embeddedClientId;\n } else if (request.extraParameters) {\n request.redirectUri =\n request.extraParameters[AADServerParamKeys.BROKER_REDIRECT_URI];\n child_client_id =\n request.extraParameters[AADServerParamKeys.CLIENT_ID];\n }\n\n request.extraParameters = {\n child_client_id,\n child_redirect_uri,\n };\n\n this.performanceClient?.addFields(\n {\n embeddedClientId: child_client_id,\n embeddedRedirectUri: child_redirect_uri,\n },\n request.correlationId\n );\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport {\n NativeConstants,\n NativeExtensionMethod,\n} from \"../../utils/BrowserConstants.js\";\nimport {\n Logger,\n AuthError,\n createAuthError,\n AuthErrorCodes,\n AuthenticationScheme,\n InProgressPerformanceEvent,\n PerformanceEvents,\n IPerformanceClient,\n} from \"@azure/msal-common/browser\";\nimport {\n NativeExtensionRequest,\n NativeExtensionRequestBody,\n} from \"./NativeRequest.js\";\nimport { createNativeAuthError } from \"../../error/NativeAuthError.js\";\nimport {\n createBrowserAuthError,\n BrowserAuthErrorCodes,\n} from \"../../error/BrowserAuthError.js\";\nimport { BrowserConfiguration } from \"../../config/Configuration.js\";\nimport { createNewGuid } from \"../../crypto/BrowserCrypto.js\";\n\ntype ResponseResolvers = {\n resolve: (value: T | PromiseLike) => void;\n reject: (\n value: AuthError | Error | PromiseLike | PromiseLike\n ) => void;\n};\n\nexport class NativeMessageHandler {\n private extensionId: string | undefined;\n private extensionVersion: string | undefined;\n private logger: Logger;\n private readonly handshakeTimeoutMs: number;\n private timeoutId: number | undefined;\n private resolvers: Map>;\n private handshakeResolvers: Map>;\n private messageChannel: MessageChannel;\n private readonly windowListener: (event: MessageEvent) => void;\n private readonly performanceClient: IPerformanceClient;\n private readonly handshakeEvent: InProgressPerformanceEvent;\n\n constructor(\n logger: Logger,\n handshakeTimeoutMs: number,\n performanceClient: IPerformanceClient,\n extensionId?: string\n ) {\n this.logger = logger;\n this.handshakeTimeoutMs = handshakeTimeoutMs;\n this.extensionId = extensionId;\n this.resolvers = new Map(); // Used for non-handshake messages\n this.handshakeResolvers = new Map(); // Used for handshake messages\n this.messageChannel = new MessageChannel();\n this.windowListener = this.onWindowMessage.bind(this); // Window event callback doesn't have access to 'this' unless it's bound\n this.performanceClient = performanceClient;\n this.handshakeEvent = performanceClient.startMeasurement(\n PerformanceEvents.NativeMessageHandlerHandshake\n );\n }\n\n /**\n * Sends a given message to the extension and resolves with the extension response\n * @param body\n */\n async sendMessage(body: NativeExtensionRequestBody): Promise {\n this.logger.trace(\"NativeMessageHandler - sendMessage called.\");\n const req: NativeExtensionRequest = {\n channel: NativeConstants.CHANNEL_ID,\n extensionId: this.extensionId,\n responseId: createNewGuid(),\n body: body,\n };\n\n this.logger.trace(\n \"NativeMessageHandler - Sending request to browser extension\"\n );\n this.logger.tracePii(\n `NativeMessageHandler - Sending request to browser extension: ${JSON.stringify(\n req\n )}`\n );\n this.messageChannel.port1.postMessage(req);\n\n return new Promise((resolve, reject) => {\n this.resolvers.set(req.responseId, { resolve, reject });\n });\n }\n\n /**\n * Returns an instance of the MessageHandler that has successfully established a connection with an extension\n * @param {Logger} logger\n * @param {number} handshakeTimeoutMs\n * @param {IPerformanceClient} performanceClient\n * @param {ICrypto} crypto\n */\n static async createProvider(\n logger: Logger,\n handshakeTimeoutMs: number,\n performanceClient: IPerformanceClient\n ): Promise {\n logger.trace(\"NativeMessageHandler - createProvider called.\");\n try {\n const preferredProvider = new NativeMessageHandler(\n logger,\n handshakeTimeoutMs,\n performanceClient,\n NativeConstants.PREFERRED_EXTENSION_ID\n );\n await preferredProvider.sendHandshakeRequest();\n return preferredProvider;\n } catch (e) {\n // If preferred extension fails for whatever reason, fallback to using any installed extension\n const backupProvider = new NativeMessageHandler(\n logger,\n handshakeTimeoutMs,\n performanceClient\n );\n await backupProvider.sendHandshakeRequest();\n return backupProvider;\n }\n }\n\n /**\n * Send handshake request helper.\n */\n private async sendHandshakeRequest(): Promise {\n this.logger.trace(\n \"NativeMessageHandler - sendHandshakeRequest called.\"\n );\n // Register this event listener before sending handshake\n window.addEventListener(\"message\", this.windowListener, false); // false is important, because content script message processing should work first\n\n const req: NativeExtensionRequest = {\n channel: NativeConstants.CHANNEL_ID,\n extensionId: this.extensionId,\n responseId: createNewGuid(),\n body: {\n method: NativeExtensionMethod.HandshakeRequest,\n },\n };\n this.handshakeEvent.add({\n extensionId: this.extensionId,\n extensionHandshakeTimeoutMs: this.handshakeTimeoutMs,\n });\n\n this.messageChannel.port1.onmessage = (event) => {\n this.onChannelMessage(event);\n };\n\n window.postMessage(req, window.origin, [this.messageChannel.port2]);\n\n return new Promise((resolve, reject) => {\n this.handshakeResolvers.set(req.responseId, { resolve, reject });\n this.timeoutId = window.setTimeout(() => {\n /*\n * Throw an error if neither HandshakeResponse nor original Handshake request are received in a reasonable timeframe.\n * This typically suggests an event handler stopped propagation of the Handshake request but did not respond to it on the MessageChannel port\n */\n window.removeEventListener(\n \"message\",\n this.windowListener,\n false\n );\n this.messageChannel.port1.close();\n this.messageChannel.port2.close();\n this.handshakeEvent.end({\n extensionHandshakeTimedOut: true,\n success: false,\n });\n reject(\n createBrowserAuthError(\n BrowserAuthErrorCodes.nativeHandshakeTimeout\n )\n );\n this.handshakeResolvers.delete(req.responseId);\n }, this.handshakeTimeoutMs); // Use a reasonable timeout in milliseconds here\n });\n }\n\n /**\n * Invoked when a message is posted to the window. If a handshake request is received it means the extension is not installed.\n * @param event\n */\n private onWindowMessage(event: MessageEvent): void {\n this.logger.trace(\"NativeMessageHandler - onWindowMessage called\");\n // We only accept messages from ourselves\n if (event.source !== window) {\n return;\n }\n\n const request = event.data;\n\n if (\n !request.channel ||\n request.channel !== NativeConstants.CHANNEL_ID\n ) {\n return;\n }\n\n if (request.extensionId && request.extensionId !== this.extensionId) {\n return;\n }\n\n if (request.body.method === NativeExtensionMethod.HandshakeRequest) {\n const handshakeResolver = this.handshakeResolvers.get(\n request.responseId\n );\n /*\n * Filter out responses with no matched resolvers sooner to keep channel ports open while waiting for\n * the proper response.\n */\n if (!handshakeResolver) {\n this.logger.trace(\n `NativeMessageHandler.onWindowMessage - resolver can't be found for request ${request.responseId}`\n );\n return;\n }\n\n // If we receive this message back it means no extension intercepted the request, meaning no extension supporting handshake protocol is installed\n this.logger.verbose(\n request.extensionId\n ? `Extension with id: ${request.extensionId} not installed`\n : \"No extension installed\"\n );\n clearTimeout(this.timeoutId);\n this.messageChannel.port1.close();\n this.messageChannel.port2.close();\n window.removeEventListener(\"message\", this.windowListener, false);\n this.handshakeEvent.end({\n success: false,\n extensionInstalled: false,\n });\n handshakeResolver.reject(\n createBrowserAuthError(\n BrowserAuthErrorCodes.nativeExtensionNotInstalled\n )\n );\n }\n }\n\n /**\n * Invoked when a message is received from the extension on the MessageChannel port\n * @param event\n */\n private onChannelMessage(event: MessageEvent): void {\n this.logger.trace(\"NativeMessageHandler - onChannelMessage called.\");\n const request = event.data;\n\n const resolver = this.resolvers.get(request.responseId);\n const handshakeResolver = this.handshakeResolvers.get(\n request.responseId\n );\n\n try {\n const method = request.body.method;\n\n if (method === NativeExtensionMethod.Response) {\n if (!resolver) {\n return;\n }\n const response = request.body.response;\n this.logger.trace(\n \"NativeMessageHandler - Received response from browser extension\"\n );\n this.logger.tracePii(\n `NativeMessageHandler - Received response from browser extension: ${JSON.stringify(\n response\n )}`\n );\n if (response.status !== \"Success\") {\n resolver.reject(\n createNativeAuthError(\n response.code,\n response.description,\n response.ext\n )\n );\n } else if (response.result) {\n if (\n response.result[\"code\"] &&\n response.result[\"description\"]\n ) {\n resolver.reject(\n createNativeAuthError(\n response.result[\"code\"],\n response.result[\"description\"],\n response.result[\"ext\"]\n )\n );\n } else {\n resolver.resolve(response.result);\n }\n } else {\n throw createAuthError(\n AuthErrorCodes.unexpectedError,\n \"Event does not contain result.\"\n );\n }\n this.resolvers.delete(request.responseId);\n } else if (method === NativeExtensionMethod.HandshakeResponse) {\n if (!handshakeResolver) {\n this.logger.trace(\n `NativeMessageHandler.onChannelMessage - resolver can't be found for request ${request.responseId}`\n );\n return;\n }\n clearTimeout(this.timeoutId); // Clear setTimeout\n window.removeEventListener(\n \"message\",\n this.windowListener,\n false\n ); // Remove 'No extension' listener\n this.extensionId = request.extensionId;\n this.extensionVersion = request.body.version;\n this.logger.verbose(\n `NativeMessageHandler - Received HandshakeResponse from extension: ${this.extensionId}`\n );\n this.handshakeEvent.end({\n extensionInstalled: true,\n success: true,\n });\n\n handshakeResolver.resolve();\n this.handshakeResolvers.delete(request.responseId);\n }\n // Do nothing if method is not Response or HandshakeResponse\n } catch (err) {\n this.logger.error(\"Error parsing response from WAM Extension\");\n this.logger.errorPii(\n `Error parsing response from WAM Extension: ${err as string}`\n );\n this.logger.errorPii(`Unable to parse ${event}`);\n\n if (resolver) {\n resolver.reject(err as AuthError);\n } else if (handshakeResolver) {\n handshakeResolver.reject(err as AuthError);\n }\n }\n }\n\n /**\n * Returns the Id for the browser extension this handler is communicating with\n * @returns\n */\n getExtensionId(): string | undefined {\n return this.extensionId;\n }\n\n /**\n * Returns the version for the browser extension this handler is communicating with\n * @returns\n */\n getExtensionVersion(): string | undefined {\n return this.extensionVersion;\n }\n\n /**\n * Returns boolean indicating whether or not the request should attempt to use native broker\n * @param logger\n * @param config\n * @param nativeExtensionProvider\n * @param authenticationScheme\n */\n static isNativeAvailable(\n config: BrowserConfiguration,\n logger: Logger,\n nativeExtensionProvider?: NativeMessageHandler,\n authenticationScheme?: AuthenticationScheme\n ): boolean {\n logger.trace(\"isNativeAvailable called\");\n if (!config.system.allowNativeBroker) {\n logger.trace(\n \"isNativeAvailable: allowNativeBroker is not enabled, returning false\"\n );\n // Developer disabled WAM\n return false;\n }\n\n if (!nativeExtensionProvider) {\n logger.trace(\n \"isNativeAvailable: WAM extension provider is not initialized, returning false\"\n );\n // Extension is not available\n return false;\n }\n\n if (authenticationScheme) {\n switch (authenticationScheme) {\n case AuthenticationScheme.BEARER:\n case AuthenticationScheme.POP:\n logger.trace(\n \"isNativeAvailable: authenticationScheme is supported, returning true\"\n );\n return true;\n default:\n logger.trace(\n \"isNativeAvailable: authenticationScheme is not supported, returning false\"\n );\n return false;\n }\n }\n\n return true;\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport {\n AuthorizationCodePayload,\n CommonAuthorizationCodeRequest,\n AuthorizationCodeClient,\n CcsCredential,\n Logger,\n ServerError,\n IPerformanceClient,\n PerformanceEvents,\n invokeAsync,\n CcsCredentialType,\n ServerAuthorizationCodeResponse,\n} from \"@azure/msal-common/browser\";\n\nimport { BrowserCacheManager } from \"../cache/BrowserCacheManager.js\";\nimport {\n createBrowserAuthError,\n BrowserAuthErrorCodes,\n} from \"../error/BrowserAuthError.js\";\nimport { AuthenticationResult } from \"../response/AuthenticationResult.js\";\nimport { AuthorizationUrlRequest } from \"../request/AuthorizationUrlRequest.js\";\n\n/**\n * Abstract class which defines operations for a browser interaction handling class.\n */\nexport class InteractionHandler {\n protected authModule: AuthorizationCodeClient;\n protected browserStorage: BrowserCacheManager;\n protected authCodeRequest: CommonAuthorizationCodeRequest;\n protected logger: Logger;\n protected performanceClient: IPerformanceClient;\n\n constructor(\n authCodeModule: AuthorizationCodeClient,\n storageImpl: BrowserCacheManager,\n authCodeRequest: CommonAuthorizationCodeRequest,\n logger: Logger,\n performanceClient: IPerformanceClient\n ) {\n this.authModule = authCodeModule;\n this.browserStorage = storageImpl;\n this.authCodeRequest = authCodeRequest;\n this.logger = logger;\n this.performanceClient = performanceClient;\n }\n\n /**\n * Function to handle response parameters from hash.\n * @param locationHash\n */\n async handleCodeResponse(\n response: ServerAuthorizationCodeResponse,\n request: AuthorizationUrlRequest\n ): Promise {\n this.performanceClient.addQueueMeasurement(\n PerformanceEvents.HandleCodeResponse,\n request.correlationId\n );\n\n let authCodeResponse;\n try {\n authCodeResponse = this.authModule.handleFragmentResponse(\n response,\n request.state\n );\n } catch (e) {\n if (\n e instanceof ServerError &&\n e.subError === BrowserAuthErrorCodes.userCancelled\n ) {\n // Translate server error caused by user closing native prompt to corresponding first class MSAL error\n throw createBrowserAuthError(\n BrowserAuthErrorCodes.userCancelled\n );\n } else {\n throw e;\n }\n }\n\n return invokeAsync(\n this.handleCodeResponseFromServer.bind(this),\n PerformanceEvents.HandleCodeResponseFromServer,\n this.logger,\n this.performanceClient,\n request.correlationId\n )(authCodeResponse, request);\n }\n\n /**\n * Process auth code response from AAD\n * @param authCodeResponse\n * @param state\n * @param authority\n * @param networkModule\n * @returns\n */\n async handleCodeResponseFromServer(\n authCodeResponse: AuthorizationCodePayload,\n request: AuthorizationUrlRequest,\n validateNonce: boolean = true\n ): Promise {\n this.performanceClient.addQueueMeasurement(\n PerformanceEvents.HandleCodeResponseFromServer,\n request.correlationId\n );\n this.logger.trace(\n \"InteractionHandler.handleCodeResponseFromServer called\"\n );\n\n // Assign code to request\n this.authCodeRequest.code = authCodeResponse.code;\n\n // Check for new cloud instance\n if (authCodeResponse.cloud_instance_host_name) {\n await invokeAsync(\n this.authModule.updateAuthority.bind(this.authModule),\n PerformanceEvents.UpdateTokenEndpointAuthority,\n this.logger,\n this.performanceClient,\n request.correlationId\n )(authCodeResponse.cloud_instance_host_name, request.correlationId);\n }\n\n // Nonce validation not needed when redirect not involved (e.g. hybrid spa, renewing token via rt)\n if (validateNonce) {\n // TODO: Assigning \"response nonce\" to \"request nonce\" is confusing. Refactor the function doing validation to accept request nonce directly\n authCodeResponse.nonce = request.nonce || undefined;\n }\n\n authCodeResponse.state = request.state;\n\n // Add CCS parameters if available\n if (authCodeResponse.client_info) {\n this.authCodeRequest.clientInfo = authCodeResponse.client_info;\n } else {\n const ccsCred = this.createCcsCredentials(request);\n if (ccsCred) {\n this.authCodeRequest.ccsCredential = ccsCred;\n }\n }\n\n // Acquire token with retrieved code.\n const tokenResponse = (await invokeAsync(\n this.authModule.acquireToken.bind(this.authModule),\n PerformanceEvents.AuthClientAcquireToken,\n this.logger,\n this.performanceClient,\n request.correlationId\n )(this.authCodeRequest, authCodeResponse)) as AuthenticationResult;\n return tokenResponse;\n }\n\n /**\n * Build ccs creds if available\n */\n protected createCcsCredentials(\n request: AuthorizationUrlRequest\n ): CcsCredential | null {\n if (request.account) {\n return {\n credential: request.account.homeAccountId,\n type: CcsCredentialType.HOME_ACCOUNT_ID,\n };\n } else if (request.loginHint) {\n return {\n credential: request.loginHint,\n type: CcsCredentialType.UPN,\n };\n }\n\n return null;\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport {\n ICrypto,\n Logger,\n ServerAuthorizationCodeResponse,\n UrlUtils,\n} from \"@azure/msal-common/browser\";\nimport {\n BrowserAuthErrorCodes,\n createBrowserAuthError,\n} from \"../error/BrowserAuthError.js\";\nimport { extractBrowserRequestState } from \"../utils/BrowserProtocolUtils.js\";\nimport { InteractionType } from \"../utils/BrowserConstants.js\";\n\nexport function deserializeResponse(\n responseString: string,\n responseLocation: string,\n logger: Logger\n): ServerAuthorizationCodeResponse {\n // Deserialize hash fragment response parameters.\n const serverParams = UrlUtils.getDeserializedResponse(responseString);\n if (!serverParams) {\n if (!UrlUtils.stripLeadingHashOrQuery(responseString)) {\n // Hash or Query string is empty\n logger.error(\n `The request has returned to the redirectUri but a ${responseLocation} is not present. It's likely that the ${responseLocation} has been removed or the page has been redirected by code running on the redirectUri page.`\n );\n throw createBrowserAuthError(BrowserAuthErrorCodes.hashEmptyError);\n } else {\n logger.error(\n `A ${responseLocation} is present in the iframe but it does not contain known properties. It's likely that the ${responseLocation} has been replaced by code running on the redirectUri page.`\n );\n logger.errorPii(\n `The ${responseLocation} detected is: ${responseString}`\n );\n throw createBrowserAuthError(\n BrowserAuthErrorCodes.hashDoesNotContainKnownProperties\n );\n }\n }\n return serverParams;\n}\n\n/**\n * Returns the interaction type that the response object belongs to\n */\nexport function validateInteractionType(\n response: ServerAuthorizationCodeResponse,\n browserCrypto: ICrypto,\n interactionType: InteractionType\n): void {\n if (!response.state) {\n throw createBrowserAuthError(BrowserAuthErrorCodes.noStateInHash);\n }\n\n const platformStateObj = extractBrowserRequestState(\n browserCrypto,\n response.state\n );\n if (!platformStateObj) {\n throw createBrowserAuthError(BrowserAuthErrorCodes.unableToParseState);\n }\n\n if (platformStateObj.interactionType !== interactionType) {\n throw createBrowserAuthError(\n BrowserAuthErrorCodes.stateInteractionTypeMismatch\n );\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport {\n CommonAuthorizationCodeRequest,\n AuthorizationCodeClient,\n ThrottlingUtils,\n CommonEndSessionRequest,\n UrlString,\n AuthError,\n OIDC_DEFAULT_SCOPES,\n ProtocolUtils,\n PerformanceEvents,\n IPerformanceClient,\n Logger,\n ICrypto,\n ProtocolMode,\n ServerResponseType,\n invokeAsync,\n invoke,\n} from \"@azure/msal-common/browser\";\nimport { StandardInteractionClient } from \"./StandardInteractionClient.js\";\nimport { EventType } from \"../event/EventType.js\";\nimport {\n InteractionType,\n ApiId,\n BrowserConstants,\n} from \"../utils/BrowserConstants.js\";\nimport { EndSessionPopupRequest } from \"../request/EndSessionPopupRequest.js\";\nimport { NavigationOptions } from \"../navigation/NavigationOptions.js\";\nimport * as BrowserUtils from \"../utils/BrowserUtils.js\";\nimport { PopupRequest } from \"../request/PopupRequest.js\";\nimport { NativeInteractionClient } from \"./NativeInteractionClient.js\";\nimport { NativeMessageHandler } from \"../broker/nativeBroker/NativeMessageHandler.js\";\nimport {\n createBrowserAuthError,\n BrowserAuthErrorCodes,\n} from \"../error/BrowserAuthError.js\";\nimport { INavigationClient } from \"../navigation/INavigationClient.js\";\nimport { EventHandler } from \"../event/EventHandler.js\";\nimport { BrowserCacheManager } from \"../cache/BrowserCacheManager.js\";\nimport { BrowserConfiguration } from \"../config/Configuration.js\";\nimport { InteractionHandler } from \"../interaction_handler/InteractionHandler.js\";\nimport { PopupWindowAttributes } from \"../request/PopupWindowAttributes.js\";\nimport { EventError } from \"../event/EventMessage.js\";\nimport { AuthenticationResult } from \"../response/AuthenticationResult.js\";\nimport * as ResponseHandler from \"../response/ResponseHandler.js\";\n\nexport type PopupParams = {\n popup?: Window | null;\n popupName: string;\n popupWindowAttributes: PopupWindowAttributes;\n popupWindowParent: Window;\n};\n\nexport class PopupClient extends StandardInteractionClient {\n private currentWindow: Window | undefined;\n protected nativeStorage: BrowserCacheManager;\n\n constructor(\n config: BrowserConfiguration,\n storageImpl: BrowserCacheManager,\n browserCrypto: ICrypto,\n logger: Logger,\n eventHandler: EventHandler,\n navigationClient: INavigationClient,\n performanceClient: IPerformanceClient,\n nativeStorageImpl: BrowserCacheManager,\n nativeMessageHandler?: NativeMessageHandler,\n correlationId?: string\n ) {\n super(\n config,\n storageImpl,\n browserCrypto,\n logger,\n eventHandler,\n navigationClient,\n performanceClient,\n nativeMessageHandler,\n correlationId\n );\n // Properly sets this reference for the unload event.\n this.unloadWindow = this.unloadWindow.bind(this);\n this.nativeStorage = nativeStorageImpl;\n }\n\n /**\n * Acquires tokens by opening a popup window to the /authorize endpoint of the authority\n * @param request\n */\n acquireToken(request: PopupRequest): Promise {\n try {\n const popupName = this.generatePopupName(\n request.scopes || OIDC_DEFAULT_SCOPES,\n request.authority || this.config.auth.authority\n );\n const popupParams: PopupParams = {\n popupName,\n popupWindowAttributes: request.popupWindowAttributes || {},\n popupWindowParent: request.popupWindowParent ?? window,\n };\n\n // asyncPopups flag is true. Acquires token without first opening popup. Popup will be opened later asynchronously.\n if (this.config.system.asyncPopups) {\n this.logger.verbose(\"asyncPopups set to true, acquiring token\");\n // Passes on popup position and dimensions if in request\n return this.acquireTokenPopupAsync(request, popupParams);\n } else {\n // asyncPopups flag is set to false. Opens popup before acquiring token.\n this.logger.verbose(\n \"asyncPopup set to false, opening popup before acquiring token\"\n );\n popupParams.popup = this.openSizedPopup(\n \"about:blank\",\n popupParams\n );\n return this.acquireTokenPopupAsync(request, popupParams);\n }\n } catch (e) {\n return Promise.reject(e);\n }\n }\n\n /**\n * Clears local cache for the current user then opens a popup window prompting the user to sign-out of the server\n * @param logoutRequest\n */\n logout(logoutRequest?: EndSessionPopupRequest): Promise {\n try {\n this.logger.verbose(\"logoutPopup called\");\n const validLogoutRequest =\n this.initializeLogoutRequest(logoutRequest);\n const popupParams: PopupParams = {\n popupName: this.generateLogoutPopupName(validLogoutRequest),\n popupWindowAttributes:\n logoutRequest?.popupWindowAttributes || {},\n popupWindowParent: logoutRequest?.popupWindowParent ?? window,\n };\n const authority = logoutRequest && logoutRequest.authority;\n const mainWindowRedirectUri =\n logoutRequest && logoutRequest.mainWindowRedirectUri;\n\n // asyncPopups flag is true. Acquires token without first opening popup. Popup will be opened later asynchronously.\n if (this.config.system.asyncPopups) {\n this.logger.verbose(\"asyncPopups set to true\");\n // Passes on popup position and dimensions if in request\n return this.logoutPopupAsync(\n validLogoutRequest,\n popupParams,\n authority,\n mainWindowRedirectUri\n );\n } else {\n // asyncPopups flag is set to false. Opens popup before logging out.\n this.logger.verbose(\"asyncPopup set to false, opening popup\");\n popupParams.popup = this.openSizedPopup(\n \"about:blank\",\n popupParams\n );\n return this.logoutPopupAsync(\n validLogoutRequest,\n popupParams,\n authority,\n mainWindowRedirectUri\n );\n }\n } catch (e) {\n // Since this function is synchronous we need to reject\n return Promise.reject(e);\n }\n }\n\n /**\n * Helper which obtains an access_token for your API via opening a popup window in the user's browser\n * @param validRequest\n * @param popupName\n * @param popup\n * @param popupWindowAttributes\n *\n * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised.\n */\n protected async acquireTokenPopupAsync(\n request: PopupRequest,\n popupParams: PopupParams\n ): Promise {\n this.logger.verbose(\"acquireTokenPopupAsync called\");\n const serverTelemetryManager = this.initializeServerTelemetryManager(\n ApiId.acquireTokenPopup\n );\n\n const validRequest = await invokeAsync(\n this.initializeAuthorizationRequest.bind(this),\n PerformanceEvents.StandardInteractionClientInitializeAuthorizationRequest,\n this.logger,\n this.performanceClient,\n this.correlationId\n )(request, InteractionType.Popup);\n\n BrowserUtils.preconnect(validRequest.authority);\n\n try {\n // Create auth code request and generate PKCE params\n const authCodeRequest: CommonAuthorizationCodeRequest =\n await invokeAsync(\n this.initializeAuthorizationCodeRequest.bind(this),\n PerformanceEvents.StandardInteractionClientInitializeAuthorizationCodeRequest,\n this.logger,\n this.performanceClient,\n this.correlationId\n )(validRequest);\n\n // Initialize the client\n const authClient: AuthorizationCodeClient = await invokeAsync(\n this.createAuthCodeClient.bind(this),\n PerformanceEvents.StandardInteractionClientCreateAuthCodeClient,\n this.logger,\n this.performanceClient,\n this.correlationId\n )({\n serverTelemetryManager,\n requestAuthority: validRequest.authority,\n requestAzureCloudOptions: validRequest.azureCloudOptions,\n requestExtraQueryParameters: validRequest.extraQueryParameters,\n account: validRequest.account,\n });\n\n const isNativeBroker = NativeMessageHandler.isNativeAvailable(\n this.config,\n this.logger,\n this.nativeMessageHandler,\n request.authenticationScheme\n );\n // Start measurement for server calls with native brokering enabled\n let fetchNativeAccountIdMeasurement;\n if (isNativeBroker) {\n fetchNativeAccountIdMeasurement =\n this.performanceClient.startMeasurement(\n PerformanceEvents.FetchAccountIdWithNativeBroker,\n request.correlationId\n );\n }\n\n // Create acquire token url.\n const navigateUrl = await authClient.getAuthCodeUrl({\n ...validRequest,\n nativeBroker: isNativeBroker,\n });\n\n // Create popup interaction handler.\n const interactionHandler = new InteractionHandler(\n authClient,\n this.browserStorage,\n authCodeRequest,\n this.logger,\n this.performanceClient\n );\n\n // Show the UI once the url has been created. Get the window handle for the popup.\n const popupWindow: Window = this.initiateAuthRequest(\n navigateUrl,\n popupParams\n );\n this.eventHandler.emitEvent(\n EventType.POPUP_OPENED,\n InteractionType.Popup,\n { popupWindow },\n null\n );\n\n // Monitor the window for the hash. Return the string value and close the popup when the hash is received. Default timeout is 60 seconds.\n const responseString = await this.monitorPopupForHash(\n popupWindow,\n popupParams.popupWindowParent\n );\n\n const serverParams = invoke(\n ResponseHandler.deserializeResponse,\n PerformanceEvents.DeserializeResponse,\n this.logger,\n this.performanceClient,\n this.correlationId\n )(\n responseString,\n this.config.auth.OIDCOptions.serverResponseType,\n this.logger\n );\n // Remove throttle if it exists\n ThrottlingUtils.removeThrottle(\n this.browserStorage,\n this.config.auth.clientId,\n authCodeRequest\n );\n\n if (serverParams.accountId) {\n this.logger.verbose(\n \"Account id found in hash, calling WAM for token\"\n );\n // end measurement for server call with native brokering enabled\n if (fetchNativeAccountIdMeasurement) {\n fetchNativeAccountIdMeasurement.end({\n success: true,\n isNativeBroker: true,\n });\n }\n\n if (!this.nativeMessageHandler) {\n throw createBrowserAuthError(\n BrowserAuthErrorCodes.nativeConnectionNotEstablished\n );\n }\n const nativeInteractionClient = new NativeInteractionClient(\n this.config,\n this.browserStorage,\n this.browserCrypto,\n this.logger,\n this.eventHandler,\n this.navigationClient,\n ApiId.acquireTokenPopup,\n this.performanceClient,\n this.nativeMessageHandler,\n serverParams.accountId,\n this.nativeStorage,\n validRequest.correlationId\n );\n const { userRequestState } = ProtocolUtils.parseRequestState(\n this.browserCrypto,\n validRequest.state\n );\n return await nativeInteractionClient.acquireToken({\n ...validRequest,\n state: userRequestState,\n prompt: undefined, // Server should handle the prompt, ideally native broker can do this part silently\n });\n }\n\n // Handle response from hash string.\n const result = await interactionHandler.handleCodeResponse(\n serverParams,\n validRequest\n );\n\n return result;\n } catch (e) {\n // Close the synchronous popup if an error is thrown before the window unload event is registered\n popupParams.popup?.close();\n\n if (e instanceof AuthError) {\n (e as AuthError).setCorrelationId(this.correlationId);\n serverTelemetryManager.cacheFailedRequest(e);\n }\n\n throw e;\n }\n }\n\n /**\n *\n * @param validRequest\n * @param popupName\n * @param requestAuthority\n * @param popup\n * @param mainWindowRedirectUri\n * @param popupWindowAttributes\n */\n protected async logoutPopupAsync(\n validRequest: CommonEndSessionRequest,\n popupParams: PopupParams,\n requestAuthority?: string,\n mainWindowRedirectUri?: string\n ): Promise {\n this.logger.verbose(\"logoutPopupAsync called\");\n this.eventHandler.emitEvent(\n EventType.LOGOUT_START,\n InteractionType.Popup,\n validRequest\n );\n\n const serverTelemetryManager = this.initializeServerTelemetryManager(\n ApiId.logoutPopup\n );\n\n try {\n // Clear cache on logout\n await this.clearCacheOnLogout(validRequest.account);\n\n // Initialize the client\n const authClient = await invokeAsync(\n this.createAuthCodeClient.bind(this),\n PerformanceEvents.StandardInteractionClientCreateAuthCodeClient,\n this.logger,\n this.performanceClient,\n this.correlationId\n )({\n serverTelemetryManager,\n requestAuthority: requestAuthority,\n account: validRequest.account || undefined,\n });\n\n try {\n authClient.authority.endSessionEndpoint;\n } catch {\n if (\n validRequest.account?.homeAccountId &&\n validRequest.postLogoutRedirectUri &&\n authClient.authority.protocolMode === ProtocolMode.OIDC\n ) {\n void this.browserStorage.removeAccount(\n validRequest.account?.homeAccountId\n );\n\n this.eventHandler.emitEvent(\n EventType.LOGOUT_SUCCESS,\n InteractionType.Popup,\n validRequest\n );\n\n if (mainWindowRedirectUri) {\n const navigationOptions: NavigationOptions = {\n apiId: ApiId.logoutPopup,\n timeout:\n this.config.system.redirectNavigationTimeout,\n noHistory: false,\n };\n const absoluteUrl = UrlString.getAbsoluteUrl(\n mainWindowRedirectUri,\n BrowserUtils.getCurrentUri()\n );\n await this.navigationClient.navigateInternal(\n absoluteUrl,\n navigationOptions\n );\n }\n\n popupParams.popup?.close();\n\n return;\n }\n }\n\n // Create logout string and navigate user window to logout.\n const logoutUri: string = authClient.getLogoutUri(validRequest);\n\n this.eventHandler.emitEvent(\n EventType.LOGOUT_SUCCESS,\n InteractionType.Popup,\n validRequest\n );\n\n // Open the popup window to requestUrl.\n const popupWindow = this.openPopup(logoutUri, popupParams);\n this.eventHandler.emitEvent(\n EventType.POPUP_OPENED,\n InteractionType.Popup,\n { popupWindow },\n null\n );\n\n await this.monitorPopupForHash(\n popupWindow,\n popupParams.popupWindowParent\n ).catch(() => {\n // Swallow any errors related to monitoring the window. Server logout is best effort\n });\n\n if (mainWindowRedirectUri) {\n const navigationOptions: NavigationOptions = {\n apiId: ApiId.logoutPopup,\n timeout: this.config.system.redirectNavigationTimeout,\n noHistory: false,\n };\n const absoluteUrl = UrlString.getAbsoluteUrl(\n mainWindowRedirectUri,\n BrowserUtils.getCurrentUri()\n );\n\n this.logger.verbose(\n \"Redirecting main window to url specified in the request\"\n );\n this.logger.verbosePii(\n `Redirecting main window to: ${absoluteUrl}`\n );\n await this.navigationClient.navigateInternal(\n absoluteUrl,\n navigationOptions\n );\n } else {\n this.logger.verbose(\"No main window navigation requested\");\n }\n } catch (e) {\n // Close the synchronous popup if an error is thrown before the window unload event is registered\n popupParams.popup?.close();\n\n if (e instanceof AuthError) {\n (e as AuthError).setCorrelationId(this.correlationId);\n serverTelemetryManager.cacheFailedRequest(e);\n }\n this.browserStorage.setInteractionInProgress(false);\n this.eventHandler.emitEvent(\n EventType.LOGOUT_FAILURE,\n InteractionType.Popup,\n null,\n e as EventError\n );\n this.eventHandler.emitEvent(\n EventType.LOGOUT_END,\n InteractionType.Popup\n );\n throw e;\n }\n\n this.eventHandler.emitEvent(\n EventType.LOGOUT_END,\n InteractionType.Popup\n );\n }\n\n /**\n * Opens a popup window with given request Url.\n * @param requestUrl\n */\n initiateAuthRequest(requestUrl: string, params: PopupParams): Window {\n // Check that request url is not empty.\n if (requestUrl) {\n this.logger.infoPii(`Navigate to: ${requestUrl}`);\n // Open the popup window to requestUrl.\n return this.openPopup(requestUrl, params);\n } else {\n // Throw error if request URL is empty.\n this.logger.error(\"Navigate url is empty\");\n throw createBrowserAuthError(\n BrowserAuthErrorCodes.emptyNavigateUri\n );\n }\n }\n\n /**\n * Monitors a window until it loads a url with the same origin.\n * @param popupWindow - window that is being monitored\n * @param timeout - timeout for processing hash once popup is redirected back to application\n */\n monitorPopupForHash(\n popupWindow: Window,\n popupWindowParent: Window\n ): Promise {\n return new Promise((resolve, reject) => {\n this.logger.verbose(\n \"PopupHandler.monitorPopupForHash - polling started\"\n );\n\n const intervalId = setInterval(() => {\n // Window is closed\n if (popupWindow.closed) {\n this.logger.error(\n \"PopupHandler.monitorPopupForHash - window closed\"\n );\n clearInterval(intervalId);\n reject(\n createBrowserAuthError(\n BrowserAuthErrorCodes.userCancelled\n )\n );\n return;\n }\n\n let href = \"\";\n try {\n /*\n * Will throw if cross origin,\n * which should be caught and ignored\n * since we need the interval to keep running while on STS UI.\n */\n href = popupWindow.location.href;\n } catch (e) {}\n\n // Don't process blank pages or cross domain\n if (!href || href === \"about:blank\") {\n return;\n }\n clearInterval(intervalId);\n\n let responseString = \"\";\n const responseType =\n this.config.auth.OIDCOptions.serverResponseType;\n if (popupWindow) {\n if (responseType === ServerResponseType.QUERY) {\n responseString = popupWindow.location.search;\n } else {\n responseString = popupWindow.location.hash;\n }\n }\n\n this.logger.verbose(\n \"PopupHandler.monitorPopupForHash - popup window is on same origin as caller\"\n );\n\n resolve(responseString);\n }, this.config.system.pollIntervalMilliseconds);\n }).finally(() => {\n this.cleanPopup(popupWindow, popupWindowParent);\n });\n }\n\n /**\n * @hidden\n *\n * Configures popup window for login.\n *\n * @param urlNavigate\n * @param title\n * @param popUpWidth\n * @param popUpHeight\n * @param popupWindowAttributes\n * @ignore\n * @hidden\n */\n openPopup(urlNavigate: string, popupParams: PopupParams): Window {\n try {\n let popupWindow;\n // Popup window passed in, setting url to navigate to\n if (popupParams.popup) {\n popupWindow = popupParams.popup;\n this.logger.verbosePii(\n `Navigating popup window to: ${urlNavigate}`\n );\n popupWindow.location.assign(urlNavigate);\n } else if (typeof popupParams.popup === \"undefined\") {\n // Popup will be undefined if it was not passed in\n this.logger.verbosePii(\n `Opening popup window to: ${urlNavigate}`\n );\n popupWindow = this.openSizedPopup(urlNavigate, popupParams);\n }\n\n // Popup will be null if popups are blocked\n if (!popupWindow) {\n throw createBrowserAuthError(\n BrowserAuthErrorCodes.emptyWindowError\n );\n }\n if (popupWindow.focus) {\n popupWindow.focus();\n }\n this.currentWindow = popupWindow;\n popupParams.popupWindowParent.addEventListener(\n \"beforeunload\",\n this.unloadWindow\n );\n\n return popupWindow;\n } catch (e) {\n this.logger.error(\n \"error opening popup \" + (e as AuthError).message\n );\n this.browserStorage.setInteractionInProgress(false);\n throw createBrowserAuthError(\n BrowserAuthErrorCodes.popupWindowError\n );\n }\n }\n\n /**\n * Helper function to set popup window dimensions and position\n * @param urlNavigate\n * @param popupName\n * @param popupWindowAttributes\n * @returns\n */\n openSizedPopup(\n urlNavigate: string,\n { popupName, popupWindowAttributes, popupWindowParent }: PopupParams\n ): Window | null {\n /**\n * adding winLeft and winTop to account for dual monitor\n * using screenLeft and screenTop for IE8 and earlier\n */\n const winLeft = popupWindowParent.screenLeft\n ? popupWindowParent.screenLeft\n : popupWindowParent.screenX;\n const winTop = popupWindowParent.screenTop\n ? popupWindowParent.screenTop\n : popupWindowParent.screenY;\n /**\n * window.innerWidth displays browser window\"s height and width excluding toolbars\n * using document.documentElement.clientWidth for IE8 and earlier\n */\n const winWidth =\n popupWindowParent.innerWidth ||\n document.documentElement.clientWidth ||\n document.body.clientWidth;\n const winHeight =\n popupWindowParent.innerHeight ||\n document.documentElement.clientHeight ||\n document.body.clientHeight;\n\n let width = popupWindowAttributes.popupSize?.width;\n let height = popupWindowAttributes.popupSize?.height;\n let top = popupWindowAttributes.popupPosition?.top;\n let left = popupWindowAttributes.popupPosition?.left;\n\n if (!width || width < 0 || width > winWidth) {\n this.logger.verbose(\n \"Default popup window width used. Window width not configured or invalid.\"\n );\n width = BrowserConstants.POPUP_WIDTH;\n }\n\n if (!height || height < 0 || height > winHeight) {\n this.logger.verbose(\n \"Default popup window height used. Window height not configured or invalid.\"\n );\n height = BrowserConstants.POPUP_HEIGHT;\n }\n\n if (!top || top < 0 || top > winHeight) {\n this.logger.verbose(\n \"Default popup window top position used. Window top not configured or invalid.\"\n );\n top = Math.max(\n 0,\n winHeight / 2 - BrowserConstants.POPUP_HEIGHT / 2 + winTop\n );\n }\n\n if (!left || left < 0 || left > winWidth) {\n this.logger.verbose(\n \"Default popup window left position used. Window left not configured or invalid.\"\n );\n left = Math.max(\n 0,\n winWidth / 2 - BrowserConstants.POPUP_WIDTH / 2 + winLeft\n );\n }\n\n return popupWindowParent.open(\n urlNavigate,\n popupName,\n `width=${width}, height=${height}, top=${top}, left=${left}, scrollbars=yes`\n );\n }\n\n /**\n * Event callback to unload main window.\n */\n unloadWindow(e: Event): void {\n this.browserStorage.cleanRequestByInteractionType(\n InteractionType.Popup\n );\n if (this.currentWindow) {\n this.currentWindow.close();\n }\n // Guarantees browser unload will happen, so no other errors will be thrown.\n e.preventDefault();\n }\n\n /**\n * Closes popup, removes any state vars created during popup calls.\n * @param popupWindow\n */\n cleanPopup(popupWindow: Window, popupWindowParent: Window): void {\n // Close window.\n popupWindow.close();\n\n // Remove window unload function\n popupWindowParent.removeEventListener(\n \"beforeunload\",\n this.unloadWindow\n );\n\n // Interaction is completed - remove interaction status.\n this.browserStorage.setInteractionInProgress(false);\n }\n\n /**\n * Generates the name for the popup based on the client id and request\n * @param clientId\n * @param request\n */\n generatePopupName(scopes: Array, authority: string): string {\n return `${BrowserConstants.POPUP_NAME_PREFIX}.${\n this.config.auth.clientId\n }.${scopes.join(\"-\")}.${authority}.${this.correlationId}`;\n }\n\n /**\n * Generates the name for the popup based on the client id and request for logouts\n * @param clientId\n * @param request\n */\n generateLogoutPopupName(request: CommonEndSessionRequest): string {\n const homeAccountId = request.account && request.account.homeAccountId;\n return `${BrowserConstants.POPUP_NAME_PREFIX}.${this.config.auth.clientId}.${homeAccountId}.${this.correlationId}`;\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport {\n AuthorizationCodeClient,\n CommonAuthorizationCodeRequest,\n Logger,\n ServerError,\n IPerformanceClient,\n createClientAuthError,\n ClientAuthErrorCodes,\n CcsCredential,\n invokeAsync,\n PerformanceEvents,\n ServerAuthorizationCodeResponse,\n} from \"@azure/msal-common/browser\";\nimport {\n createBrowserAuthError,\n BrowserAuthErrorCodes,\n} from \"../error/BrowserAuthError.js\";\nimport { ApiId, TemporaryCacheKeys } from \"../utils/BrowserConstants.js\";\nimport { BrowserCacheManager } from \"../cache/BrowserCacheManager.js\";\nimport { INavigationClient } from \"../navigation/INavigationClient.js\";\nimport { NavigationOptions } from \"../navigation/NavigationOptions.js\";\nimport { AuthenticationResult } from \"../response/AuthenticationResult.js\";\n\nexport type RedirectParams = {\n navigationClient: INavigationClient;\n redirectTimeout: number;\n redirectStartPage: string;\n onRedirectNavigate?: (url: string) => void | boolean;\n};\n\nexport class RedirectHandler {\n authModule: AuthorizationCodeClient;\n browserStorage: BrowserCacheManager;\n authCodeRequest: CommonAuthorizationCodeRequest;\n logger: Logger;\n performanceClient: IPerformanceClient;\n\n constructor(\n authCodeModule: AuthorizationCodeClient,\n storageImpl: BrowserCacheManager,\n authCodeRequest: CommonAuthorizationCodeRequest,\n logger: Logger,\n performanceClient: IPerformanceClient\n ) {\n this.authModule = authCodeModule;\n this.browserStorage = storageImpl;\n this.authCodeRequest = authCodeRequest;\n this.logger = logger;\n this.performanceClient = performanceClient;\n }\n\n /**\n * Redirects window to given URL.\n * @param urlNavigate\n */\n async initiateAuthRequest(\n requestUrl: string,\n params: RedirectParams\n ): Promise {\n this.logger.verbose(\"RedirectHandler.initiateAuthRequest called\");\n // Navigate if valid URL\n if (requestUrl) {\n // Cache start page, returns to this page after redirectUri if navigateToLoginRequestUrl is true\n if (params.redirectStartPage) {\n this.logger.verbose(\n \"RedirectHandler.initiateAuthRequest: redirectStartPage set, caching start page\"\n );\n this.browserStorage.setTemporaryCache(\n TemporaryCacheKeys.ORIGIN_URI,\n params.redirectStartPage,\n true\n );\n }\n\n // Set interaction status in the library.\n this.browserStorage.setTemporaryCache(\n TemporaryCacheKeys.CORRELATION_ID,\n this.authCodeRequest.correlationId,\n true\n );\n this.browserStorage.cacheCodeRequest(this.authCodeRequest);\n this.logger.infoPii(\n `RedirectHandler.initiateAuthRequest: Navigate to: ${requestUrl}`\n );\n const navigationOptions: NavigationOptions = {\n apiId: ApiId.acquireTokenRedirect,\n timeout: params.redirectTimeout,\n noHistory: false,\n };\n\n // If onRedirectNavigate is implemented, invoke it and provide requestUrl\n if (typeof params.onRedirectNavigate === \"function\") {\n this.logger.verbose(\n \"RedirectHandler.initiateAuthRequest: Invoking onRedirectNavigate callback\"\n );\n const navigate = params.onRedirectNavigate(requestUrl);\n\n // Returning false from onRedirectNavigate will stop navigation\n if (navigate !== false) {\n this.logger.verbose(\n \"RedirectHandler.initiateAuthRequest: onRedirectNavigate did not return false, navigating\"\n );\n await params.navigationClient.navigateExternal(\n requestUrl,\n navigationOptions\n );\n return;\n } else {\n this.logger.verbose(\n \"RedirectHandler.initiateAuthRequest: onRedirectNavigate returned false, stopping navigation\"\n );\n return;\n }\n } else {\n // Navigate window to request URL\n this.logger.verbose(\n \"RedirectHandler.initiateAuthRequest: Navigating window to navigate url\"\n );\n await params.navigationClient.navigateExternal(\n requestUrl,\n navigationOptions\n );\n return;\n }\n } else {\n // Throw error if request URL is empty.\n this.logger.info(\n \"RedirectHandler.initiateAuthRequest: Navigate url is empty\"\n );\n throw createBrowserAuthError(\n BrowserAuthErrorCodes.emptyNavigateUri\n );\n }\n }\n\n /**\n * Handle authorization code response in the window.\n * @param hash\n */\n async handleCodeResponse(\n response: ServerAuthorizationCodeResponse,\n state: string\n ): Promise {\n this.logger.verbose(\"RedirectHandler.handleCodeResponse called\");\n\n // Interaction is completed - remove interaction status.\n this.browserStorage.setInteractionInProgress(false);\n\n // Handle code response.\n const stateKey = this.browserStorage.generateStateKey(state);\n const requestState = this.browserStorage.getTemporaryCache(stateKey);\n if (!requestState) {\n throw createClientAuthError(\n ClientAuthErrorCodes.stateNotFound,\n \"Cached State\"\n );\n }\n\n let authCodeResponse;\n try {\n authCodeResponse = this.authModule.handleFragmentResponse(\n response,\n requestState\n );\n } catch (e) {\n if (\n e instanceof ServerError &&\n e.subError === BrowserAuthErrorCodes.userCancelled\n ) {\n // Translate server error caused by user closing native prompt to corresponding first class MSAL error\n throw createBrowserAuthError(\n BrowserAuthErrorCodes.userCancelled\n );\n } else {\n throw e;\n }\n }\n\n // Get cached items\n const nonceKey = this.browserStorage.generateNonceKey(requestState);\n const cachedNonce = this.browserStorage.getTemporaryCache(nonceKey);\n\n // Assign code to request\n this.authCodeRequest.code = authCodeResponse.code;\n\n // Check for new cloud instance\n if (authCodeResponse.cloud_instance_host_name) {\n await invokeAsync(\n this.authModule.updateAuthority.bind(this.authModule),\n PerformanceEvents.UpdateTokenEndpointAuthority,\n this.logger,\n this.performanceClient,\n this.authCodeRequest.correlationId\n )(\n authCodeResponse.cloud_instance_host_name,\n this.authCodeRequest.correlationId\n );\n }\n\n authCodeResponse.nonce = cachedNonce || undefined;\n authCodeResponse.state = requestState;\n\n // Add CCS parameters if available\n if (authCodeResponse.client_info) {\n this.authCodeRequest.clientInfo = authCodeResponse.client_info;\n } else {\n const cachedCcsCred = this.checkCcsCredentials();\n if (cachedCcsCred) {\n this.authCodeRequest.ccsCredential = cachedCcsCred;\n }\n }\n\n // Acquire token with retrieved code.\n const tokenResponse = (await this.authModule.acquireToken(\n this.authCodeRequest,\n authCodeResponse\n )) as AuthenticationResult;\n\n this.browserStorage.cleanRequestByState(state);\n return tokenResponse;\n }\n\n /**\n * Looks up ccs creds in the cache\n */\n protected checkCcsCredentials(): CcsCredential | null {\n // Look up ccs credential in temp cache\n const cachedCcsCred = this.browserStorage.getTemporaryCache(\n TemporaryCacheKeys.CCS_CREDENTIAL,\n true\n );\n if (cachedCcsCred) {\n try {\n return JSON.parse(cachedCcsCred) as CcsCredential;\n } catch (e) {\n this.authModule.logger.error(\n \"Cache credential could not be parsed\"\n );\n this.authModule.logger.errorPii(\n `Cache credential could not be parsed: ${cachedCcsCred}`\n );\n }\n }\n return null;\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport {\n CommonAuthorizationCodeRequest,\n AuthorizationCodeClient,\n UrlString,\n AuthError,\n ServerTelemetryManager,\n Constants,\n ProtocolUtils,\n ServerAuthorizationCodeResponse,\n ThrottlingUtils,\n ICrypto,\n Logger,\n IPerformanceClient,\n PerformanceEvents,\n ProtocolMode,\n invokeAsync,\n ServerResponseType,\n UrlUtils,\n InProgressPerformanceEvent,\n} from \"@azure/msal-common/browser\";\nimport { StandardInteractionClient } from \"./StandardInteractionClient.js\";\nimport {\n ApiId,\n InteractionType,\n TemporaryCacheKeys,\n} from \"../utils/BrowserConstants.js\";\nimport { RedirectHandler } from \"../interaction_handler/RedirectHandler.js\";\nimport * as BrowserUtils from \"../utils/BrowserUtils.js\";\nimport { EndSessionRequest } from \"../request/EndSessionRequest.js\";\nimport { EventType } from \"../event/EventType.js\";\nimport { NavigationOptions } from \"../navigation/NavigationOptions.js\";\nimport {\n createBrowserAuthError,\n BrowserAuthErrorCodes,\n} from \"../error/BrowserAuthError.js\";\nimport { RedirectRequest } from \"../request/RedirectRequest.js\";\nimport { NativeInteractionClient } from \"./NativeInteractionClient.js\";\nimport { NativeMessageHandler } from \"../broker/nativeBroker/NativeMessageHandler.js\";\nimport { BrowserConfiguration } from \"../config/Configuration.js\";\nimport { BrowserCacheManager } from \"../cache/BrowserCacheManager.js\";\nimport { EventHandler } from \"../event/EventHandler.js\";\nimport { INavigationClient } from \"../navigation/INavigationClient.js\";\nimport { EventError } from \"../event/EventMessage.js\";\nimport { AuthenticationResult } from \"../response/AuthenticationResult.js\";\nimport * as ResponseHandler from \"../response/ResponseHandler.js\";\n\nfunction getNavigationType(): NavigationTimingType | undefined {\n if (\n typeof window === \"undefined\" ||\n typeof window.performance === \"undefined\" ||\n typeof window.performance.getEntriesByType !== \"function\"\n ) {\n return undefined;\n }\n\n const navigationEntries = window.performance.getEntriesByType(\"navigation\");\n const navigation = navigationEntries.length\n ? (navigationEntries[0] as PerformanceNavigationTiming)\n : undefined;\n return navigation?.type;\n}\n\nexport class RedirectClient extends StandardInteractionClient {\n protected nativeStorage: BrowserCacheManager;\n\n constructor(\n config: BrowserConfiguration,\n storageImpl: BrowserCacheManager,\n browserCrypto: ICrypto,\n logger: Logger,\n eventHandler: EventHandler,\n navigationClient: INavigationClient,\n performanceClient: IPerformanceClient,\n nativeStorageImpl: BrowserCacheManager,\n nativeMessageHandler?: NativeMessageHandler,\n correlationId?: string\n ) {\n super(\n config,\n storageImpl,\n browserCrypto,\n logger,\n eventHandler,\n navigationClient,\n performanceClient,\n nativeMessageHandler,\n correlationId\n );\n this.nativeStorage = nativeStorageImpl;\n }\n\n /**\n * Redirects the page to the /authorize endpoint of the IDP\n * @param request\n */\n async acquireToken(request: RedirectRequest): Promise {\n const validRequest = await invokeAsync(\n this.initializeAuthorizationRequest.bind(this),\n PerformanceEvents.StandardInteractionClientInitializeAuthorizationRequest,\n this.logger,\n this.performanceClient,\n this.correlationId\n )(request, InteractionType.Redirect);\n\n this.browserStorage.updateCacheEntries(\n validRequest.state,\n validRequest.nonce,\n validRequest.authority,\n validRequest.loginHint || \"\",\n validRequest.account || null\n );\n const serverTelemetryManager = this.initializeServerTelemetryManager(\n ApiId.acquireTokenRedirect\n );\n\n const handleBackButton = (event: PageTransitionEvent) => {\n // Clear temporary cache if the back button is clicked during the redirect flow.\n if (event.persisted) {\n this.logger.verbose(\n \"Page was restored from back/forward cache. Clearing temporary cache.\"\n );\n this.browserStorage.cleanRequestByState(validRequest.state);\n this.eventHandler.emitEvent(\n EventType.RESTORE_FROM_BFCACHE,\n InteractionType.Redirect\n );\n }\n };\n\n try {\n // Create auth code request and generate PKCE params\n const authCodeRequest: CommonAuthorizationCodeRequest =\n await invokeAsync(\n this.initializeAuthorizationCodeRequest.bind(this),\n PerformanceEvents.StandardInteractionClientInitializeAuthorizationCodeRequest,\n this.logger,\n this.performanceClient,\n this.correlationId\n )(validRequest);\n\n // Initialize the client\n const authClient: AuthorizationCodeClient = await invokeAsync(\n this.createAuthCodeClient.bind(this),\n PerformanceEvents.StandardInteractionClientCreateAuthCodeClient,\n this.logger,\n this.performanceClient,\n this.correlationId\n )({\n serverTelemetryManager,\n requestAuthority: validRequest.authority,\n requestAzureCloudOptions: validRequest.azureCloudOptions,\n requestExtraQueryParameters: validRequest.extraQueryParameters,\n account: validRequest.account,\n });\n\n // Create redirect interaction handler.\n const interactionHandler = new RedirectHandler(\n authClient,\n this.browserStorage,\n authCodeRequest,\n this.logger,\n this.performanceClient\n );\n\n // Create acquire token url.\n const navigateUrl = await authClient.getAuthCodeUrl({\n ...validRequest,\n nativeBroker: NativeMessageHandler.isNativeAvailable(\n this.config,\n this.logger,\n this.nativeMessageHandler,\n request.authenticationScheme\n ),\n });\n\n const redirectStartPage = this.getRedirectStartPage(\n request.redirectStartPage\n );\n this.logger.verbosePii(`Redirect start page: ${redirectStartPage}`);\n\n // Clear temporary cache if the back button is clicked during the redirect flow.\n window.addEventListener(\"pageshow\", handleBackButton);\n\n // Show the UI once the url has been created. Response will come back in the hash, which will be handled in the handleRedirectCallback function.\n return await interactionHandler.initiateAuthRequest(navigateUrl, {\n navigationClient: this.navigationClient,\n redirectTimeout: this.config.system.redirectNavigationTimeout,\n redirectStartPage: redirectStartPage,\n onRedirectNavigate:\n request.onRedirectNavigate ||\n this.config.auth.onRedirectNavigate,\n });\n } catch (e) {\n if (e instanceof AuthError) {\n e.setCorrelationId(this.correlationId);\n serverTelemetryManager.cacheFailedRequest(e);\n }\n window.removeEventListener(\"pageshow\", handleBackButton);\n this.browserStorage.cleanRequestByState(validRequest.state);\n throw e;\n }\n }\n\n /**\n * Checks if navigateToLoginRequestUrl is set, and:\n * - if true, performs logic to cache and navigate\n * - if false, handles hash string and parses response\n * @param hash {string} url hash\n * @param parentMeasurement {InProgressPerformanceEvent} parent measurement\n */\n async handleRedirectPromise(\n hash: string = \"\",\n parentMeasurement: InProgressPerformanceEvent\n ): Promise {\n const serverTelemetryManager = this.initializeServerTelemetryManager(\n ApiId.handleRedirectPromise\n );\n\n try {\n if (!this.browserStorage.isInteractionInProgress(true)) {\n this.logger.info(\n \"handleRedirectPromise called but there is no interaction in progress, returning null.\"\n );\n return null;\n }\n const [serverParams, responseString] = this.getRedirectResponse(\n hash || \"\"\n );\n if (!serverParams) {\n // Not a recognized server response hash or hash not associated with a redirect request\n this.logger.info(\n \"handleRedirectPromise did not detect a response as a result of a redirect. Cleaning temporary cache.\"\n );\n this.browserStorage.cleanRequestByInteractionType(\n InteractionType.Redirect\n );\n\n // Do not instrument \"no_server_response\" if user clicked back button\n if (getNavigationType() !== \"back_forward\") {\n parentMeasurement.event.errorCode = \"no_server_response\";\n } else {\n this.logger.verbose(\n \"Back navigation event detected. Muting no_server_response error\"\n );\n }\n return null;\n }\n\n // If navigateToLoginRequestUrl is true, get the url where the redirect request was initiated\n const loginRequestUrl =\n this.browserStorage.getTemporaryCache(\n TemporaryCacheKeys.ORIGIN_URI,\n true\n ) || Constants.EMPTY_STRING;\n const loginRequestUrlNormalized =\n UrlString.removeHashFromUrl(loginRequestUrl);\n const currentUrlNormalized = UrlString.removeHashFromUrl(\n window.location.href\n );\n\n if (\n loginRequestUrlNormalized === currentUrlNormalized &&\n this.config.auth.navigateToLoginRequestUrl\n ) {\n // We are on the page we need to navigate to - handle hash\n this.logger.verbose(\n \"Current page is loginRequestUrl, handling response\"\n );\n\n if (loginRequestUrl.indexOf(\"#\") > -1) {\n // Replace current hash with non-msal hash, if present\n BrowserUtils.replaceHash(loginRequestUrl);\n }\n\n const handleHashResult = await this.handleResponse(\n serverParams,\n serverTelemetryManager\n );\n\n return handleHashResult;\n } else if (!this.config.auth.navigateToLoginRequestUrl) {\n this.logger.verbose(\n \"NavigateToLoginRequestUrl set to false, handling response\"\n );\n return await this.handleResponse(\n serverParams,\n serverTelemetryManager\n );\n } else if (\n !BrowserUtils.isInIframe() ||\n this.config.system.allowRedirectInIframe\n ) {\n /*\n * Returned from authority using redirect - need to perform navigation before processing response\n * Cache the hash to be retrieved after the next redirect\n */\n this.browserStorage.setTemporaryCache(\n TemporaryCacheKeys.URL_HASH,\n responseString,\n true\n );\n const navigationOptions: NavigationOptions = {\n apiId: ApiId.handleRedirectPromise,\n timeout: this.config.system.redirectNavigationTimeout,\n noHistory: true,\n };\n\n /**\n * Default behavior is to redirect to the start page and not process the hash now.\n * The start page is expected to also call handleRedirectPromise which will process the hash in one of the checks above.\n */\n let processHashOnRedirect: boolean = true;\n if (!loginRequestUrl || loginRequestUrl === \"null\") {\n // Redirect to home page if login request url is null (real null or the string null)\n const homepage = BrowserUtils.getHomepage();\n // Cache the homepage under ORIGIN_URI to ensure cached hash is processed on homepage\n this.browserStorage.setTemporaryCache(\n TemporaryCacheKeys.ORIGIN_URI,\n homepage,\n true\n );\n this.logger.warning(\n \"Unable to get valid login request url from cache, redirecting to home page\"\n );\n processHashOnRedirect =\n await this.navigationClient.navigateInternal(\n homepage,\n navigationOptions\n );\n } else {\n // Navigate to page that initiated the redirect request\n this.logger.verbose(\n `Navigating to loginRequestUrl: ${loginRequestUrl}`\n );\n processHashOnRedirect =\n await this.navigationClient.navigateInternal(\n loginRequestUrl,\n navigationOptions\n );\n }\n\n // If navigateInternal implementation returns false, handle the hash now\n if (!processHashOnRedirect) {\n return await this.handleResponse(\n serverParams,\n serverTelemetryManager\n );\n }\n }\n\n return null;\n } catch (e) {\n if (e instanceof AuthError) {\n (e as AuthError).setCorrelationId(this.correlationId);\n serverTelemetryManager.cacheFailedRequest(e);\n }\n this.browserStorage.cleanRequestByInteractionType(\n InteractionType.Redirect\n );\n throw e;\n }\n }\n\n /**\n * Gets the response hash for a redirect request\n * Returns null if interactionType in the state value is not \"redirect\" or the hash does not contain known properties\n * @param hash\n */\n protected getRedirectResponse(\n userProvidedResponse: string\n ): [ServerAuthorizationCodeResponse | null, string] {\n this.logger.verbose(\"getRedirectResponseHash called\");\n // Get current location hash from window or cache.\n let responseString = userProvidedResponse;\n if (!responseString) {\n if (\n this.config.auth.OIDCOptions.serverResponseType ===\n ServerResponseType.QUERY\n ) {\n responseString = window.location.search;\n } else {\n responseString = window.location.hash;\n }\n }\n let response = UrlUtils.getDeserializedResponse(responseString);\n\n if (response) {\n try {\n ResponseHandler.validateInteractionType(\n response,\n this.browserCrypto,\n InteractionType.Redirect\n );\n } catch (e) {\n if (e instanceof AuthError) {\n this.logger.error(\n `Interaction type validation failed due to ${e.errorCode}: ${e.errorMessage}`\n );\n }\n return [null, \"\"];\n }\n\n BrowserUtils.clearHash(window);\n this.logger.verbose(\n \"Hash contains known properties, returning response hash\"\n );\n return [response, responseString];\n }\n\n const cachedHash = this.browserStorage.getTemporaryCache(\n TemporaryCacheKeys.URL_HASH,\n true\n );\n this.browserStorage.removeItem(\n this.browserStorage.generateCacheKey(TemporaryCacheKeys.URL_HASH)\n );\n\n if (cachedHash) {\n response = UrlUtils.getDeserializedResponse(cachedHash);\n if (response) {\n this.logger.verbose(\n \"Hash does not contain known properties, returning cached hash\"\n );\n return [response, cachedHash];\n }\n }\n\n return [null, \"\"];\n }\n\n /**\n * Checks if hash exists and handles in window.\n * @param hash\n * @param state\n */\n protected async handleResponse(\n serverParams: ServerAuthorizationCodeResponse,\n serverTelemetryManager: ServerTelemetryManager\n ): Promise {\n const state = serverParams.state;\n if (!state) {\n throw createBrowserAuthError(BrowserAuthErrorCodes.noStateInHash);\n }\n\n const cachedRequest = this.browserStorage.getCachedRequest(state);\n this.logger.verbose(\"handleResponse called, retrieved cached request\");\n\n if (serverParams.accountId) {\n this.logger.verbose(\n \"Account id found in hash, calling WAM for token\"\n );\n if (!this.nativeMessageHandler) {\n throw createBrowserAuthError(\n BrowserAuthErrorCodes.nativeConnectionNotEstablished\n );\n }\n const nativeInteractionClient = new NativeInteractionClient(\n this.config,\n this.browserStorage,\n this.browserCrypto,\n this.logger,\n this.eventHandler,\n this.navigationClient,\n ApiId.acquireTokenPopup,\n this.performanceClient,\n this.nativeMessageHandler,\n serverParams.accountId,\n this.nativeStorage,\n cachedRequest.correlationId\n );\n const { userRequestState } = ProtocolUtils.parseRequestState(\n this.browserCrypto,\n state\n );\n return nativeInteractionClient\n .acquireToken({\n ...cachedRequest,\n state: userRequestState,\n prompt: undefined, // Server should handle the prompt, ideally native broker can do this part silently\n })\n .finally(() => {\n this.browserStorage.cleanRequestByState(state);\n });\n }\n\n // Hash contains known properties - handle and return in callback\n const currentAuthority = this.browserStorage.getCachedAuthority(state);\n if (!currentAuthority) {\n throw createBrowserAuthError(\n BrowserAuthErrorCodes.noCachedAuthorityError\n );\n }\n\n const authClient = await invokeAsync(\n this.createAuthCodeClient.bind(this),\n PerformanceEvents.StandardInteractionClientCreateAuthCodeClient,\n this.logger,\n this.performanceClient,\n this.correlationId\n )({ serverTelemetryManager, requestAuthority: currentAuthority });\n\n ThrottlingUtils.removeThrottle(\n this.browserStorage,\n this.config.auth.clientId,\n cachedRequest\n );\n const interactionHandler = new RedirectHandler(\n authClient,\n this.browserStorage,\n cachedRequest,\n this.logger,\n this.performanceClient\n );\n return interactionHandler.handleCodeResponse(serverParams, state);\n }\n\n /**\n * Use to log out the current user, and redirect the user to the postLogoutRedirectUri.\n * Default behaviour is to redirect the user to `window.location.href`.\n * @param logoutRequest\n */\n async logout(logoutRequest?: EndSessionRequest): Promise {\n this.logger.verbose(\"logoutRedirect called\");\n const validLogoutRequest = this.initializeLogoutRequest(logoutRequest);\n const serverTelemetryManager = this.initializeServerTelemetryManager(\n ApiId.logout\n );\n\n try {\n this.eventHandler.emitEvent(\n EventType.LOGOUT_START,\n InteractionType.Redirect,\n logoutRequest\n );\n\n // Clear cache on logout\n await this.clearCacheOnLogout(validLogoutRequest.account);\n\n const navigationOptions: NavigationOptions = {\n apiId: ApiId.logout,\n timeout: this.config.system.redirectNavigationTimeout,\n noHistory: false,\n };\n\n const authClient = await invokeAsync(\n this.createAuthCodeClient.bind(this),\n PerformanceEvents.StandardInteractionClientCreateAuthCodeClient,\n this.logger,\n this.performanceClient,\n this.correlationId\n )({\n serverTelemetryManager,\n requestAuthority: logoutRequest && logoutRequest.authority,\n requestExtraQueryParameters:\n logoutRequest?.extraQueryParameters,\n account: (logoutRequest && logoutRequest.account) || undefined,\n });\n\n if (authClient.authority.protocolMode === ProtocolMode.OIDC) {\n try {\n authClient.authority.endSessionEndpoint;\n } catch {\n if (validLogoutRequest.account?.homeAccountId) {\n void this.browserStorage.removeAccount(\n validLogoutRequest.account?.homeAccountId\n );\n\n this.eventHandler.emitEvent(\n EventType.LOGOUT_SUCCESS,\n InteractionType.Redirect,\n validLogoutRequest\n );\n\n return;\n }\n }\n }\n\n // Create logout string and navigate user window to logout.\n const logoutUri: string =\n authClient.getLogoutUri(validLogoutRequest);\n\n this.eventHandler.emitEvent(\n EventType.LOGOUT_SUCCESS,\n InteractionType.Redirect,\n validLogoutRequest\n );\n // Check if onRedirectNavigate is implemented, and invoke it if so\n if (\n logoutRequest &&\n typeof logoutRequest.onRedirectNavigate === \"function\"\n ) {\n const navigate = logoutRequest.onRedirectNavigate(logoutUri);\n\n if (navigate !== false) {\n this.logger.verbose(\n \"Logout onRedirectNavigate did not return false, navigating\"\n );\n // Ensure interaction is in progress\n if (!this.browserStorage.getInteractionInProgress()) {\n this.browserStorage.setInteractionInProgress(true);\n }\n await this.navigationClient.navigateExternal(\n logoutUri,\n navigationOptions\n );\n return;\n } else {\n // Ensure interaction is not in progress\n this.browserStorage.setInteractionInProgress(false);\n this.logger.verbose(\n \"Logout onRedirectNavigate returned false, stopping navigation\"\n );\n }\n } else {\n // Ensure interaction is in progress\n if (!this.browserStorage.getInteractionInProgress()) {\n this.browserStorage.setInteractionInProgress(true);\n }\n await this.navigationClient.navigateExternal(\n logoutUri,\n navigationOptions\n );\n return;\n }\n } catch (e) {\n if (e instanceof AuthError) {\n (e as AuthError).setCorrelationId(this.correlationId);\n serverTelemetryManager.cacheFailedRequest(e);\n }\n this.eventHandler.emitEvent(\n EventType.LOGOUT_FAILURE,\n InteractionType.Redirect,\n null,\n e as EventError\n );\n this.eventHandler.emitEvent(\n EventType.LOGOUT_END,\n InteractionType.Redirect\n );\n throw e;\n }\n\n this.eventHandler.emitEvent(\n EventType.LOGOUT_END,\n InteractionType.Redirect\n );\n }\n\n /**\n * Use to get the redirectStartPage either from request or use current window\n * @param requestStartPage\n */\n protected getRedirectStartPage(requestStartPage?: string): string {\n const redirectStartPage = requestStartPage || window.location.href;\n return UrlString.getAbsoluteUrl(\n redirectStartPage,\n BrowserUtils.getCurrentUri()\n );\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport {\n Logger,\n IPerformanceClient,\n PerformanceEvents,\n invokeAsync,\n invoke,\n ServerResponseType,\n} from \"@azure/msal-common/browser\";\nimport {\n createBrowserAuthError,\n BrowserAuthErrorCodes,\n} from \"../error/BrowserAuthError.js\";\nimport { DEFAULT_IFRAME_TIMEOUT_MS } from \"../config/Configuration.js\";\n\n/**\n * Creates a hidden iframe to given URL using user-requested scopes as an id.\n * @param urlNavigate\n * @param userRequestScopes\n */\nexport async function initiateAuthRequest(\n requestUrl: string,\n performanceClient: IPerformanceClient,\n logger: Logger,\n correlationId: string,\n navigateFrameWait?: number\n): Promise {\n performanceClient.addQueueMeasurement(\n PerformanceEvents.SilentHandlerInitiateAuthRequest,\n correlationId\n );\n\n if (!requestUrl) {\n // Throw error if request URL is empty.\n logger.info(\"Navigate url is empty\");\n throw createBrowserAuthError(BrowserAuthErrorCodes.emptyNavigateUri);\n }\n if (navigateFrameWait) {\n return invokeAsync(\n loadFrame,\n PerformanceEvents.SilentHandlerLoadFrame,\n logger,\n performanceClient,\n correlationId\n )(requestUrl, navigateFrameWait, performanceClient, correlationId);\n }\n return invoke(\n loadFrameSync,\n PerformanceEvents.SilentHandlerLoadFrameSync,\n logger,\n performanceClient,\n correlationId\n )(requestUrl);\n}\n\n/**\n * Monitors an iframe content window until it loads a url with a known hash, or hits a specified timeout.\n * @param iframe\n * @param timeout\n */\nexport async function monitorIframeForHash(\n iframe: HTMLIFrameElement,\n timeout: number,\n pollIntervalMilliseconds: number,\n performanceClient: IPerformanceClient,\n logger: Logger,\n correlationId: string,\n responseType: ServerResponseType\n): Promise {\n performanceClient.addQueueMeasurement(\n PerformanceEvents.SilentHandlerMonitorIframeForHash,\n correlationId\n );\n\n return new Promise((resolve, reject) => {\n if (timeout < DEFAULT_IFRAME_TIMEOUT_MS) {\n logger.warning(\n `system.loadFrameTimeout or system.iframeHashTimeout set to lower (${timeout}ms) than the default (${DEFAULT_IFRAME_TIMEOUT_MS}ms). This may result in timeouts.`\n );\n }\n\n /*\n * Polling for iframes can be purely timing based,\n * since we don't need to account for interaction.\n */\n const timeoutId = window.setTimeout(() => {\n window.clearInterval(intervalId);\n reject(\n createBrowserAuthError(\n BrowserAuthErrorCodes.monitorWindowTimeout\n )\n );\n }, timeout);\n\n const intervalId = window.setInterval(() => {\n let href: string = \"\";\n const contentWindow = iframe.contentWindow;\n try {\n /*\n * Will throw if cross origin,\n * which should be caught and ignored\n * since we need the interval to keep running while on STS UI.\n */\n href = contentWindow ? contentWindow.location.href : \"\";\n } catch (e) {}\n\n if (!href || href === \"about:blank\") {\n return;\n }\n\n let responseString = \"\";\n if (contentWindow) {\n if (responseType === ServerResponseType.QUERY) {\n responseString = contentWindow.location.search;\n } else {\n responseString = contentWindow.location.hash;\n }\n }\n window.clearTimeout(timeoutId);\n window.clearInterval(intervalId);\n resolve(responseString);\n }, pollIntervalMilliseconds);\n }).finally(() => {\n invoke(\n removeHiddenIframe,\n PerformanceEvents.RemoveHiddenIframe,\n logger,\n performanceClient,\n correlationId\n )(iframe);\n });\n}\n\n/**\n * @hidden\n * Loads iframe with authorization endpoint URL\n * @ignore\n * @deprecated\n */\nfunction loadFrame(\n urlNavigate: string,\n navigateFrameWait: number,\n performanceClient: IPerformanceClient,\n correlationId: string\n): Promise {\n performanceClient.addQueueMeasurement(\n PerformanceEvents.SilentHandlerLoadFrame,\n correlationId\n );\n\n /*\n * This trick overcomes iframe navigation in IE\n * IE does not load the page consistently in iframe\n */\n\n return new Promise((resolve, reject) => {\n const frameHandle = createHiddenIframe();\n\n window.setTimeout(() => {\n if (!frameHandle) {\n reject(\"Unable to load iframe\");\n return;\n }\n\n frameHandle.src = urlNavigate;\n\n resolve(frameHandle);\n }, navigateFrameWait);\n });\n}\n/**\n * @hidden\n * Loads the iframe synchronously when the navigateTimeFrame is set to `0`\n * @param urlNavigate\n * @param frameName\n * @param logger\n */\nfunction loadFrameSync(urlNavigate: string): HTMLIFrameElement {\n const frameHandle = createHiddenIframe();\n\n frameHandle.src = urlNavigate;\n\n return frameHandle;\n}\n\n/**\n * @hidden\n * Creates a new hidden iframe or gets an existing one for silent token renewal.\n * @ignore\n */\nfunction createHiddenIframe(): HTMLIFrameElement {\n const authFrame = document.createElement(\"iframe\");\n\n authFrame.className = \"msalSilentIframe\";\n authFrame.style.visibility = \"hidden\";\n authFrame.style.position = \"absolute\";\n authFrame.style.width = authFrame.style.height = \"0\";\n authFrame.style.border = \"0\";\n authFrame.setAttribute(\n \"sandbox\",\n \"allow-scripts allow-same-origin allow-forms\"\n );\n document.body.appendChild(authFrame);\n\n return authFrame;\n}\n\n/**\n * @hidden\n * Removes a hidden iframe from the page.\n * @ignore\n */\nfunction removeHiddenIframe(iframe: HTMLIFrameElement): void {\n if (document.body === iframe.parentNode) {\n document.body.removeChild(iframe);\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport {\n ICrypto,\n Logger,\n PromptValue,\n CommonAuthorizationCodeRequest,\n AuthorizationCodeClient,\n AuthError,\n ProtocolUtils,\n IPerformanceClient,\n PerformanceEvents,\n invokeAsync,\n invoke,\n} from \"@azure/msal-common/browser\";\nimport { StandardInteractionClient } from \"./StandardInteractionClient.js\";\nimport { AuthorizationUrlRequest } from \"../request/AuthorizationUrlRequest.js\";\nimport { BrowserConfiguration } from \"../config/Configuration.js\";\nimport { BrowserCacheManager } from \"../cache/BrowserCacheManager.js\";\nimport { EventHandler } from \"../event/EventHandler.js\";\nimport { INavigationClient } from \"../navigation/INavigationClient.js\";\nimport {\n createBrowserAuthError,\n BrowserAuthErrorCodes,\n} from \"../error/BrowserAuthError.js\";\nimport {\n InteractionType,\n ApiId,\n BrowserConstants,\n} from \"../utils/BrowserConstants.js\";\nimport {\n initiateAuthRequest,\n monitorIframeForHash,\n} from \"../interaction_handler/SilentHandler.js\";\nimport { SsoSilentRequest } from \"../request/SsoSilentRequest.js\";\nimport { NativeMessageHandler } from \"../broker/nativeBroker/NativeMessageHandler.js\";\nimport { NativeInteractionClient } from \"./NativeInteractionClient.js\";\nimport { AuthenticationResult } from \"../response/AuthenticationResult.js\";\nimport { InteractionHandler } from \"../interaction_handler/InteractionHandler.js\";\nimport * as BrowserUtils from \"../utils/BrowserUtils.js\";\nimport * as ResponseHandler from \"../response/ResponseHandler.js\";\n\nexport class SilentIframeClient extends StandardInteractionClient {\n protected apiId: ApiId;\n protected nativeStorage: BrowserCacheManager;\n\n constructor(\n config: BrowserConfiguration,\n storageImpl: BrowserCacheManager,\n browserCrypto: ICrypto,\n logger: Logger,\n eventHandler: EventHandler,\n navigationClient: INavigationClient,\n apiId: ApiId,\n performanceClient: IPerformanceClient,\n nativeStorageImpl: BrowserCacheManager,\n nativeMessageHandler?: NativeMessageHandler,\n correlationId?: string\n ) {\n super(\n config,\n storageImpl,\n browserCrypto,\n logger,\n eventHandler,\n navigationClient,\n performanceClient,\n nativeMessageHandler,\n correlationId\n );\n this.apiId = apiId;\n this.nativeStorage = nativeStorageImpl;\n }\n\n /**\n * Acquires a token silently by opening a hidden iframe to the /authorize endpoint with prompt=none or prompt=no_session\n * @param request\n */\n async acquireToken(\n request: SsoSilentRequest\n ): Promise {\n this.performanceClient.addQueueMeasurement(\n PerformanceEvents.SilentIframeClientAcquireToken,\n request.correlationId\n );\n // Check that we have some SSO data\n if (\n !request.loginHint &&\n !request.sid &&\n (!request.account || !request.account.username)\n ) {\n this.logger.warning(\n \"No user hint provided. The authorization server may need more information to complete this request.\"\n );\n }\n\n // Check the prompt value\n const inputRequest = { ...request };\n if (inputRequest.prompt) {\n if (\n inputRequest.prompt !== PromptValue.NONE &&\n inputRequest.prompt !== PromptValue.NO_SESSION\n ) {\n this.logger.warning(\n `SilentIframeClient. Replacing invalid prompt ${inputRequest.prompt} with ${PromptValue.NONE}`\n );\n inputRequest.prompt = PromptValue.NONE;\n }\n } else {\n inputRequest.prompt = PromptValue.NONE;\n }\n\n // Create silent request\n const silentRequest: AuthorizationUrlRequest = await invokeAsync(\n this.initializeAuthorizationRequest.bind(this),\n PerformanceEvents.StandardInteractionClientInitializeAuthorizationRequest,\n this.logger,\n this.performanceClient,\n request.correlationId\n )(inputRequest, InteractionType.Silent);\n BrowserUtils.preconnect(silentRequest.authority);\n\n const serverTelemetryManager = this.initializeServerTelemetryManager(\n this.apiId\n );\n\n let authClient: AuthorizationCodeClient | undefined;\n\n try {\n // Initialize the client\n authClient = await invokeAsync(\n this.createAuthCodeClient.bind(this),\n PerformanceEvents.StandardInteractionClientCreateAuthCodeClient,\n this.logger,\n this.performanceClient,\n request.correlationId\n )({\n serverTelemetryManager,\n requestAuthority: silentRequest.authority,\n requestAzureCloudOptions: silentRequest.azureCloudOptions,\n requestExtraQueryParameters: silentRequest.extraQueryParameters,\n account: silentRequest.account,\n });\n\n return await invokeAsync(\n this.silentTokenHelper.bind(this),\n PerformanceEvents.SilentIframeClientTokenHelper,\n this.logger,\n this.performanceClient,\n request.correlationId\n )(authClient, silentRequest);\n } catch (e) {\n if (e instanceof AuthError) {\n (e as AuthError).setCorrelationId(this.correlationId);\n serverTelemetryManager.cacheFailedRequest(e);\n }\n\n if (\n !authClient ||\n !(e instanceof AuthError) ||\n e.errorCode !== BrowserConstants.INVALID_GRANT_ERROR\n ) {\n throw e;\n }\n\n this.performanceClient.addFields(\n {\n retryError: e.errorCode,\n },\n this.correlationId\n );\n\n const retrySilentRequest: AuthorizationUrlRequest =\n await invokeAsync(\n this.initializeAuthorizationRequest.bind(this),\n PerformanceEvents.StandardInteractionClientInitializeAuthorizationRequest,\n this.logger,\n this.performanceClient,\n request.correlationId\n )(inputRequest, InteractionType.Silent);\n\n return await invokeAsync(\n this.silentTokenHelper.bind(this),\n PerformanceEvents.SilentIframeClientTokenHelper,\n this.logger,\n this.performanceClient,\n this.correlationId\n )(authClient, retrySilentRequest);\n }\n }\n\n /**\n * Currently Unsupported\n */\n logout(): Promise {\n // Synchronous so we must reject\n return Promise.reject(\n createBrowserAuthError(\n BrowserAuthErrorCodes.silentLogoutUnsupported\n )\n );\n }\n\n /**\n * Helper which acquires an authorization code silently using a hidden iframe from given url\n * using the scopes requested as part of the id, and exchanges the code for a set of OAuth tokens.\n * @param navigateUrl\n * @param userRequestScopes\n */\n protected async silentTokenHelper(\n authClient: AuthorizationCodeClient,\n silentRequest: AuthorizationUrlRequest\n ): Promise {\n const correlationId = silentRequest.correlationId;\n this.performanceClient.addQueueMeasurement(\n PerformanceEvents.SilentIframeClientTokenHelper,\n correlationId\n );\n\n // Create auth code request and generate PKCE params\n const authCodeRequest: CommonAuthorizationCodeRequest =\n await invokeAsync(\n this.initializeAuthorizationCodeRequest.bind(this),\n PerformanceEvents.StandardInteractionClientInitializeAuthorizationCodeRequest,\n this.logger,\n this.performanceClient,\n correlationId\n )(silentRequest);\n\n // Create authorize request url\n const navigateUrl = await invokeAsync(\n authClient.getAuthCodeUrl.bind(authClient),\n PerformanceEvents.GetAuthCodeUrl,\n this.logger,\n this.performanceClient,\n correlationId\n )({\n ...silentRequest,\n nativeBroker: NativeMessageHandler.isNativeAvailable(\n this.config,\n this.logger,\n this.nativeMessageHandler,\n silentRequest.authenticationScheme\n ),\n });\n\n // Create silent handler\n const interactionHandler = new InteractionHandler(\n authClient,\n this.browserStorage,\n authCodeRequest,\n this.logger,\n this.performanceClient\n );\n // Get the frame handle for the silent request\n const msalFrame = await invokeAsync(\n initiateAuthRequest,\n PerformanceEvents.SilentHandlerInitiateAuthRequest,\n this.logger,\n this.performanceClient,\n correlationId\n )(\n navigateUrl,\n this.performanceClient,\n this.logger,\n correlationId,\n this.config.system.navigateFrameWait\n );\n const responseType = this.config.auth.OIDCOptions.serverResponseType;\n // Monitor the window for the hash. Return the string value and close the popup when the hash is received. Default timeout is 60 seconds.\n const responseString = await invokeAsync(\n monitorIframeForHash,\n PerformanceEvents.SilentHandlerMonitorIframeForHash,\n this.logger,\n this.performanceClient,\n correlationId\n )(\n msalFrame,\n this.config.system.iframeHashTimeout,\n this.config.system.pollIntervalMilliseconds,\n this.performanceClient,\n this.logger,\n correlationId,\n responseType\n );\n const serverParams = invoke(\n ResponseHandler.deserializeResponse,\n PerformanceEvents.DeserializeResponse,\n this.logger,\n this.performanceClient,\n this.correlationId\n )(responseString, responseType, this.logger);\n\n if (serverParams.accountId) {\n this.logger.verbose(\n \"Account id found in hash, calling WAM for token\"\n );\n if (!this.nativeMessageHandler) {\n throw createBrowserAuthError(\n BrowserAuthErrorCodes.nativeConnectionNotEstablished\n );\n }\n const nativeInteractionClient = new NativeInteractionClient(\n this.config,\n this.browserStorage,\n this.browserCrypto,\n this.logger,\n this.eventHandler,\n this.navigationClient,\n this.apiId,\n this.performanceClient,\n this.nativeMessageHandler,\n serverParams.accountId,\n this.browserStorage,\n correlationId\n );\n const { userRequestState } = ProtocolUtils.parseRequestState(\n this.browserCrypto,\n silentRequest.state\n );\n return invokeAsync(\n nativeInteractionClient.acquireToken.bind(\n nativeInteractionClient\n ),\n PerformanceEvents.NativeInteractionClientAcquireToken,\n this.logger,\n this.performanceClient,\n correlationId\n )({\n ...silentRequest,\n state: userRequestState,\n prompt: silentRequest.prompt || PromptValue.NONE,\n });\n }\n\n // Handle response from hash string\n return invokeAsync(\n interactionHandler.handleCodeResponse.bind(interactionHandler),\n PerformanceEvents.HandleCodeResponse,\n this.logger,\n this.performanceClient,\n correlationId\n )(serverParams, silentRequest);\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { StandardInteractionClient } from \"./StandardInteractionClient.js\";\nimport {\n CommonSilentFlowRequest,\n ServerTelemetryManager,\n RefreshTokenClient,\n AuthError,\n AzureCloudOptions,\n PerformanceEvents,\n invokeAsync,\n AccountInfo,\n StringDict,\n} from \"@azure/msal-common/browser\";\nimport { ApiId } from \"../utils/BrowserConstants.js\";\nimport {\n createBrowserAuthError,\n BrowserAuthErrorCodes,\n} from \"../error/BrowserAuthError.js\";\nimport { AuthenticationResult } from \"../response/AuthenticationResult.js\";\nimport { initializeBaseRequest } from \"../request/RequestHelpers.js\";\n\nexport class SilentRefreshClient extends StandardInteractionClient {\n /**\n * Exchanges the refresh token for new tokens\n * @param request\n */\n async acquireToken(\n request: CommonSilentFlowRequest\n ): Promise {\n this.performanceClient.addQueueMeasurement(\n PerformanceEvents.SilentRefreshClientAcquireToken,\n request.correlationId\n );\n\n const baseRequest = await invokeAsync(\n initializeBaseRequest,\n PerformanceEvents.InitializeBaseRequest,\n this.logger,\n this.performanceClient,\n request.correlationId\n )(request, this.config, this.performanceClient, this.logger);\n const silentRequest: CommonSilentFlowRequest = {\n ...request,\n ...baseRequest,\n };\n\n if (request.redirectUri) {\n // Make sure any passed redirectUri is converted to an absolute URL - redirectUri is not a required parameter for refresh token redemption so only include if explicitly provided\n silentRequest.redirectUri = this.getRedirectUri(\n request.redirectUri\n );\n }\n\n const serverTelemetryManager = this.initializeServerTelemetryManager(\n ApiId.acquireTokenSilent_silentFlow\n );\n\n const refreshTokenClient = await this.createRefreshTokenClient({\n serverTelemetryManager,\n authorityUrl: silentRequest.authority,\n azureCloudOptions: silentRequest.azureCloudOptions,\n account: silentRequest.account,\n });\n // Send request to renew token. Auth module will throw errors if token cannot be renewed.\n return invokeAsync(\n refreshTokenClient.acquireTokenByRefreshToken.bind(\n refreshTokenClient\n ),\n PerformanceEvents.RefreshTokenClientAcquireTokenByRefreshToken,\n this.logger,\n this.performanceClient,\n request.correlationId\n )(silentRequest).catch((e: AuthError) => {\n (e as AuthError).setCorrelationId(this.correlationId);\n serverTelemetryManager.cacheFailedRequest(e);\n throw e;\n }) as Promise;\n }\n\n /**\n * Currently Unsupported\n */\n logout(): Promise {\n // Synchronous so we must reject\n return Promise.reject(\n createBrowserAuthError(\n BrowserAuthErrorCodes.silentLogoutUnsupported\n )\n );\n }\n\n /**\n * Creates a Refresh Client with the given authority, or the default authority.\n * @param params {\n * serverTelemetryManager: ServerTelemetryManager;\n * authorityUrl?: string;\n * azureCloudOptions?: AzureCloudOptions;\n * extraQueryParams?: StringDict;\n * account?: AccountInfo;\n * }\n */\n protected async createRefreshTokenClient(params: {\n serverTelemetryManager: ServerTelemetryManager;\n authorityUrl?: string;\n azureCloudOptions?: AzureCloudOptions;\n extraQueryParameters?: StringDict;\n account?: AccountInfo;\n }): Promise {\n // Create auth module.\n const clientConfig = await invokeAsync(\n this.getClientConfiguration.bind(this),\n PerformanceEvents.StandardInteractionClientGetClientConfiguration,\n this.logger,\n this.performanceClient,\n this.correlationId\n )({\n serverTelemetryManager: params.serverTelemetryManager,\n requestAuthority: params.authorityUrl,\n requestAzureCloudOptions: params.azureCloudOptions,\n requestExtraQueryParameters: params.extraQueryParameters,\n account: params.account,\n });\n return new RefreshTokenClient(clientConfig, this.performanceClient);\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport {\n AccessTokenEntity,\n ICrypto,\n IdTokenEntity,\n Logger,\n ScopeSet,\n Authority,\n AuthorityOptions,\n ExternalTokenResponse,\n AccountEntity,\n AuthToken,\n RefreshTokenEntity,\n CacheRecord,\n TokenClaims,\n CacheHelpers,\n buildAccountToCache,\n} from \"@azure/msal-common/browser\";\nimport { BrowserConfiguration } from \"../config/Configuration.js\";\nimport { SilentRequest } from \"../request/SilentRequest.js\";\nimport { BrowserCacheManager } from \"./BrowserCacheManager.js\";\nimport { ITokenCache } from \"./ITokenCache.js\";\nimport {\n createBrowserAuthError,\n BrowserAuthErrorCodes,\n} from \"../error/BrowserAuthError.js\";\nimport { AuthenticationResult } from \"../response/AuthenticationResult.js\";\nimport { base64Decode } from \"../encode/Base64Decode.js\";\nimport * as BrowserCrypto from \"../crypto/BrowserCrypto.js\";\n\nexport type LoadTokenOptions = {\n clientInfo?: string;\n expiresOn?: number;\n extendedExpiresOn?: number;\n};\n\n/**\n * Token cache manager\n */\nexport class TokenCache implements ITokenCache {\n // Flag to indicate if in browser environment\n public isBrowserEnvironment: boolean;\n // Input configuration by developer/user\n protected config: BrowserConfiguration;\n // Browser cache storage\n private storage: BrowserCacheManager;\n // Logger\n private logger: Logger;\n // Crypto class\n private cryptoObj: ICrypto;\n\n constructor(\n configuration: BrowserConfiguration,\n storage: BrowserCacheManager,\n logger: Logger,\n cryptoObj: ICrypto\n ) {\n this.isBrowserEnvironment = typeof window !== \"undefined\";\n this.config = configuration;\n this.storage = storage;\n this.logger = logger;\n this.cryptoObj = cryptoObj;\n }\n\n // Move getAllAccounts here and cache utility APIs\n\n /**\n * API to load tokens to msal-browser cache.\n * @param request\n * @param response\n * @param options\n * @returns `AuthenticationResult` for the response that was loaded.\n */\n loadExternalTokens(\n request: SilentRequest,\n response: ExternalTokenResponse,\n options: LoadTokenOptions\n ): AuthenticationResult {\n if (!this.isBrowserEnvironment) {\n throw createBrowserAuthError(\n BrowserAuthErrorCodes.nonBrowserEnvironment\n );\n }\n\n const idTokenClaims = response.id_token\n ? AuthToken.extractTokenClaims(response.id_token, base64Decode)\n : undefined;\n\n const authorityOptions: AuthorityOptions = {\n protocolMode: this.config.auth.protocolMode,\n knownAuthorities: this.config.auth.knownAuthorities,\n cloudDiscoveryMetadata: this.config.auth.cloudDiscoveryMetadata,\n authorityMetadata: this.config.auth.authorityMetadata,\n skipAuthorityMetadataCache:\n this.config.auth.skipAuthorityMetadataCache,\n };\n const authority = request.authority\n ? new Authority(\n Authority.generateAuthority(\n request.authority,\n request.azureCloudOptions\n ),\n this.config.system.networkClient,\n this.storage,\n authorityOptions,\n this.logger,\n request.correlationId || BrowserCrypto.createNewGuid()\n )\n : undefined;\n\n const cacheRecordAccount: AccountEntity = this.loadAccount(\n request,\n options.clientInfo || response.client_info || \"\",\n idTokenClaims,\n authority\n );\n\n const idToken = this.loadIdToken(\n response,\n cacheRecordAccount.homeAccountId,\n cacheRecordAccount.environment,\n cacheRecordAccount.realm\n );\n\n const accessToken = this.loadAccessToken(\n request,\n response,\n cacheRecordAccount.homeAccountId,\n cacheRecordAccount.environment,\n cacheRecordAccount.realm,\n options\n );\n\n const refreshToken = this.loadRefreshToken(\n response,\n cacheRecordAccount.homeAccountId,\n cacheRecordAccount.environment\n );\n\n return this.generateAuthenticationResult(\n request,\n {\n account: cacheRecordAccount,\n idToken,\n accessToken,\n refreshToken,\n },\n idTokenClaims,\n authority\n );\n }\n\n /**\n * Helper function to load account to msal-browser cache\n * @param idToken\n * @param environment\n * @param clientInfo\n * @param authorityType\n * @param requestHomeAccountId\n * @returns `AccountEntity`\n */\n private loadAccount(\n request: SilentRequest,\n clientInfo: string,\n idTokenClaims?: TokenClaims,\n authority?: Authority\n ): AccountEntity {\n this.logger.verbose(\"TokenCache - loading account\");\n\n if (request.account) {\n const accountEntity = AccountEntity.createFromAccountInfo(\n request.account\n );\n this.storage.setAccount(accountEntity);\n return accountEntity;\n } else if (!authority || (!clientInfo && !idTokenClaims)) {\n this.logger.error(\n \"TokenCache - if an account is not provided on the request, authority and either clientInfo or idToken must be provided instead.\"\n );\n throw createBrowserAuthError(\n BrowserAuthErrorCodes.unableToLoadToken\n );\n }\n\n const homeAccountId = AccountEntity.generateHomeAccountId(\n clientInfo,\n authority.authorityType,\n this.logger,\n this.cryptoObj,\n idTokenClaims\n );\n\n const claimsTenantId = idTokenClaims?.tid;\n\n const cachedAccount = buildAccountToCache(\n this.storage,\n authority,\n homeAccountId,\n base64Decode,\n idTokenClaims,\n clientInfo,\n authority.hostnameAndPort,\n claimsTenantId,\n undefined, // authCodePayload\n undefined, // nativeAccountId\n this.logger\n );\n\n this.storage.setAccount(cachedAccount);\n return cachedAccount;\n }\n\n /**\n * Helper function to load id tokens to msal-browser cache\n * @param idToken\n * @param homeAccountId\n * @param environment\n * @param tenantId\n * @returns `IdTokenEntity`\n */\n private loadIdToken(\n response: ExternalTokenResponse,\n homeAccountId: string,\n environment: string,\n tenantId: string\n ): IdTokenEntity | null {\n if (!response.id_token) {\n this.logger.verbose(\"TokenCache - no id token found in response\");\n return null;\n }\n\n this.logger.verbose(\"TokenCache - loading id token\");\n const idTokenEntity = CacheHelpers.createIdTokenEntity(\n homeAccountId,\n environment,\n response.id_token,\n this.config.auth.clientId,\n tenantId\n );\n\n this.storage.setIdTokenCredential(idTokenEntity);\n return idTokenEntity;\n }\n\n /**\n * Helper function to load access tokens to msal-browser cache\n * @param request\n * @param response\n * @param homeAccountId\n * @param environment\n * @param tenantId\n * @returns `AccessTokenEntity`\n */\n private loadAccessToken(\n request: SilentRequest,\n response: ExternalTokenResponse,\n homeAccountId: string,\n environment: string,\n tenantId: string,\n options: LoadTokenOptions\n ): AccessTokenEntity | null {\n if (!response.access_token) {\n this.logger.verbose(\n \"TokenCache - no access token found in response\"\n );\n return null;\n } else if (!response.expires_in) {\n this.logger.error(\n \"TokenCache - no expiration set on the access token. Cannot add it to the cache.\"\n );\n return null;\n } else if (\n !response.scope &&\n (!request.scopes || !request.scopes.length)\n ) {\n this.logger.error(\n \"TokenCache - scopes not specified in the request or response. Cannot add token to the cache.\"\n );\n return null;\n }\n\n this.logger.verbose(\"TokenCache - loading access token\");\n\n const scopes = response.scope\n ? ScopeSet.fromString(response.scope)\n : new ScopeSet(request.scopes);\n const expiresOn =\n options.expiresOn ||\n response.expires_in + new Date().getTime() / 1000;\n\n const extendedExpiresOn =\n options.extendedExpiresOn ||\n (response.ext_expires_in || response.expires_in) +\n new Date().getTime() / 1000;\n\n const accessTokenEntity = CacheHelpers.createAccessTokenEntity(\n homeAccountId,\n environment,\n response.access_token,\n this.config.auth.clientId,\n tenantId,\n scopes.printScopes(),\n expiresOn,\n extendedExpiresOn,\n base64Decode\n );\n\n this.storage.setAccessTokenCredential(accessTokenEntity);\n return accessTokenEntity;\n }\n\n /**\n * Helper function to load refresh tokens to msal-browser cache\n * @param request\n * @param response\n * @param homeAccountId\n * @param environment\n * @returns `RefreshTokenEntity`\n */\n private loadRefreshToken(\n response: ExternalTokenResponse,\n homeAccountId: string,\n environment: string\n ): RefreshTokenEntity | null {\n if (!response.refresh_token) {\n this.logger.verbose(\n \"TokenCache - no refresh token found in response\"\n );\n return null;\n }\n\n this.logger.verbose(\"TokenCache - loading refresh token\");\n const refreshTokenEntity = CacheHelpers.createRefreshTokenEntity(\n homeAccountId,\n environment,\n response.refresh_token,\n this.config.auth.clientId,\n response.foci,\n undefined, // userAssertionHash\n response.refresh_token_expires_in\n );\n\n this.storage.setRefreshTokenCredential(refreshTokenEntity);\n return refreshTokenEntity;\n }\n\n /**\n * Helper function to generate an `AuthenticationResult` for the result.\n * @param request\n * @param idTokenObj\n * @param cacheRecord\n * @param authority\n * @returns `AuthenticationResult`\n */\n private generateAuthenticationResult(\n request: SilentRequest,\n cacheRecord: CacheRecord & { account: AccountEntity },\n idTokenClaims?: TokenClaims,\n authority?: Authority\n ): AuthenticationResult {\n let accessToken: string = \"\";\n let responseScopes: Array = [];\n let expiresOn: Date | null = null;\n let extExpiresOn: Date | undefined;\n\n if (cacheRecord?.accessToken) {\n accessToken = cacheRecord.accessToken.secret;\n responseScopes = ScopeSet.fromString(\n cacheRecord.accessToken.target\n ).asArray();\n expiresOn = new Date(\n Number(cacheRecord.accessToken.expiresOn) * 1000\n );\n extExpiresOn = new Date(\n Number(cacheRecord.accessToken.extendedExpiresOn) * 1000\n );\n }\n\n const accountEntity = cacheRecord.account;\n\n return {\n authority: authority ? authority.canonicalAuthority : \"\",\n uniqueId: cacheRecord.account.localAccountId,\n tenantId: cacheRecord.account.realm,\n scopes: responseScopes,\n account: accountEntity.getAccountInfo(),\n idToken: cacheRecord.idToken?.secret || \"\",\n idTokenClaims: idTokenClaims || {},\n accessToken: accessToken,\n fromCache: true,\n expiresOn: expiresOn,\n correlationId: request.correlationId || \"\",\n requestId: \"\",\n extExpiresOn: extExpiresOn,\n familyId: cacheRecord.refreshToken?.familyId || \"\",\n tokenType: cacheRecord?.accessToken?.tokenType || \"\",\n state: request.state || \"\",\n cloudGraphHostName: accountEntity.cloudGraphHostName || \"\",\n msGraphHost: accountEntity.msGraphHost || \"\",\n fromNativeBroker: false,\n };\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport {\n AuthorizationCodeClient,\n ClientConfiguration,\n} from \"@azure/msal-common/browser\";\n\nexport class HybridSpaAuthorizationCodeClient extends AuthorizationCodeClient {\n constructor(config: ClientConfiguration) {\n super(config);\n this.includeRedirectUri = false;\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport {\n ICrypto,\n Logger,\n CommonAuthorizationCodeRequest,\n AuthError,\n IPerformanceClient,\n PerformanceEvents,\n invokeAsync,\n} from \"@azure/msal-common/browser\";\nimport { StandardInteractionClient } from \"./StandardInteractionClient.js\";\nimport { AuthorizationUrlRequest } from \"../request/AuthorizationUrlRequest.js\";\nimport { BrowserConfiguration } from \"../config/Configuration.js\";\nimport { BrowserCacheManager } from \"../cache/BrowserCacheManager.js\";\nimport { EventHandler } from \"../event/EventHandler.js\";\nimport { INavigationClient } from \"../navigation/INavigationClient.js\";\nimport {\n createBrowserAuthError,\n BrowserAuthErrorCodes,\n} from \"../error/BrowserAuthError.js\";\nimport { InteractionType, ApiId } from \"../utils/BrowserConstants.js\";\nimport { AuthorizationCodeRequest } from \"../request/AuthorizationCodeRequest.js\";\nimport { HybridSpaAuthorizationCodeClient } from \"./HybridSpaAuthorizationCodeClient.js\";\nimport { NativeMessageHandler } from \"../broker/nativeBroker/NativeMessageHandler.js\";\nimport { AuthenticationResult } from \"../response/AuthenticationResult.js\";\nimport { InteractionHandler } from \"../interaction_handler/InteractionHandler.js\";\n\nexport class SilentAuthCodeClient extends StandardInteractionClient {\n private apiId: ApiId;\n\n constructor(\n config: BrowserConfiguration,\n storageImpl: BrowserCacheManager,\n browserCrypto: ICrypto,\n logger: Logger,\n eventHandler: EventHandler,\n navigationClient: INavigationClient,\n apiId: ApiId,\n performanceClient: IPerformanceClient,\n nativeMessageHandler?: NativeMessageHandler,\n correlationId?: string\n ) {\n super(\n config,\n storageImpl,\n browserCrypto,\n logger,\n eventHandler,\n navigationClient,\n performanceClient,\n nativeMessageHandler,\n correlationId\n );\n this.apiId = apiId;\n }\n\n /**\n * Acquires a token silently by redeeming an authorization code against the /token endpoint\n * @param request\n */\n async acquireToken(\n request: AuthorizationCodeRequest\n ): Promise {\n // Auth code payload is required\n if (!request.code) {\n throw createBrowserAuthError(\n BrowserAuthErrorCodes.authCodeRequired\n );\n }\n\n // Create silent request\n const silentRequest: AuthorizationUrlRequest = await invokeAsync(\n this.initializeAuthorizationRequest.bind(this),\n PerformanceEvents.StandardInteractionClientInitializeAuthorizationRequest,\n this.logger,\n this.performanceClient,\n request.correlationId\n )(request, InteractionType.Silent);\n\n const serverTelemetryManager = this.initializeServerTelemetryManager(\n this.apiId\n );\n\n try {\n // Create auth code request (PKCE not needed)\n const authCodeRequest: CommonAuthorizationCodeRequest = {\n ...silentRequest,\n code: request.code,\n };\n\n // Initialize the client\n const clientConfig = await invokeAsync(\n this.getClientConfiguration.bind(this),\n PerformanceEvents.StandardInteractionClientGetClientConfiguration,\n this.logger,\n this.performanceClient,\n request.correlationId\n )({\n serverTelemetryManager,\n requestAuthority: silentRequest.authority,\n requestAzureCloudOptions: silentRequest.azureCloudOptions,\n requestExtraQueryParameters: silentRequest.extraQueryParameters,\n account: silentRequest.account,\n });\n const authClient: HybridSpaAuthorizationCodeClient =\n new HybridSpaAuthorizationCodeClient(clientConfig);\n this.logger.verbose(\"Auth code client created\");\n\n // Create silent handler\n const interactionHandler = new InteractionHandler(\n authClient,\n this.browserStorage,\n authCodeRequest,\n this.logger,\n this.performanceClient\n );\n\n // Handle auth code parameters from request\n return await invokeAsync(\n interactionHandler.handleCodeResponseFromServer.bind(\n interactionHandler\n ),\n PerformanceEvents.HandleCodeResponseFromServer,\n this.logger,\n this.performanceClient,\n request.correlationId\n )(\n {\n code: request.code,\n msgraph_host: request.msGraphHost,\n cloud_graph_host_name: request.cloudGraphHostName,\n cloud_instance_host_name: request.cloudInstanceHostName,\n },\n silentRequest,\n false\n );\n } catch (e) {\n if (e instanceof AuthError) {\n (e as AuthError).setCorrelationId(this.correlationId);\n serverTelemetryManager.cacheFailedRequest(e);\n }\n throw e;\n }\n }\n\n /**\n * Currently Unsupported\n */\n logout(): Promise {\n // Synchronous so we must reject\n return Promise.reject(\n createBrowserAuthError(\n BrowserAuthErrorCodes.silentLogoutUnsupported\n )\n );\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { CryptoOps } from \"../crypto/CryptoOps.js\";\nimport {\n InteractionRequiredAuthError,\n AccountInfo,\n Constants,\n INetworkModule,\n Logger,\n CommonSilentFlowRequest,\n ICrypto,\n DEFAULT_CRYPTO_IMPLEMENTATION,\n AuthError,\n PerformanceEvents,\n PerformanceCallbackFunction,\n IPerformanceClient,\n BaseAuthRequest,\n PromptValue,\n InProgressPerformanceEvent,\n RequestThumbprint,\n AccountEntity,\n invokeAsync,\n createClientAuthError,\n ClientAuthErrorCodes,\n AccountFilter,\n buildStaticAuthorityOptions,\n InteractionRequiredAuthErrorCodes,\n PersistentCacheKeys,\n CacheManager,\n} from \"@azure/msal-common/browser\";\nimport {\n BrowserCacheManager,\n DEFAULT_BROWSER_CACHE_MANAGER,\n} from \"../cache/BrowserCacheManager.js\";\nimport * as AccountManager from \"../cache/AccountManager.js\";\nimport { BrowserConfiguration, CacheOptions } from \"../config/Configuration.js\";\nimport {\n InteractionType,\n ApiId,\n BrowserCacheLocation,\n WrapperSKU,\n TemporaryCacheKeys,\n CacheLookupPolicy,\n DEFAULT_REQUEST,\n BrowserConstants,\n iFrameRenewalPolicies,\n} from \"../utils/BrowserConstants.js\";\nimport * as BrowserUtils from \"../utils/BrowserUtils.js\";\nimport { RedirectRequest } from \"../request/RedirectRequest.js\";\nimport { PopupRequest } from \"../request/PopupRequest.js\";\nimport { SsoSilentRequest } from \"../request/SsoSilentRequest.js\";\nimport { EventCallbackFunction, EventError } from \"../event/EventMessage.js\";\nimport { EventType } from \"../event/EventType.js\";\nimport { EndSessionRequest } from \"../request/EndSessionRequest.js\";\nimport { EndSessionPopupRequest } from \"../request/EndSessionPopupRequest.js\";\nimport { INavigationClient } from \"../navigation/INavigationClient.js\";\nimport { EventHandler } from \"../event/EventHandler.js\";\nimport { PopupClient } from \"../interaction_client/PopupClient.js\";\nimport { RedirectClient } from \"../interaction_client/RedirectClient.js\";\nimport { SilentIframeClient } from \"../interaction_client/SilentIframeClient.js\";\nimport { SilentRefreshClient } from \"../interaction_client/SilentRefreshClient.js\";\nimport { TokenCache } from \"../cache/TokenCache.js\";\nimport { ITokenCache } from \"../cache/ITokenCache.js\";\nimport { NativeInteractionClient } from \"../interaction_client/NativeInteractionClient.js\";\nimport { NativeMessageHandler } from \"../broker/nativeBroker/NativeMessageHandler.js\";\nimport { SilentRequest } from \"../request/SilentRequest.js\";\nimport {\n NativeAuthError,\n isFatalNativeAuthError,\n} from \"../error/NativeAuthError.js\";\nimport { SilentCacheClient } from \"../interaction_client/SilentCacheClient.js\";\nimport { SilentAuthCodeClient } from \"../interaction_client/SilentAuthCodeClient.js\";\nimport {\n createBrowserAuthError,\n BrowserAuthErrorCodes,\n} from \"../error/BrowserAuthError.js\";\nimport { AuthorizationCodeRequest } from \"../request/AuthorizationCodeRequest.js\";\nimport { NativeTokenRequest } from \"../broker/nativeBroker/NativeRequest.js\";\nimport { StandardOperatingContext } from \"../operatingcontext/StandardOperatingContext.js\";\nimport { BaseOperatingContext } from \"../operatingcontext/BaseOperatingContext.js\";\nimport { IController } from \"./IController.js\";\nimport { AuthenticationResult } from \"../response/AuthenticationResult.js\";\nimport { ClearCacheRequest } from \"../request/ClearCacheRequest.js\";\nimport { createNewGuid } from \"../crypto/BrowserCrypto.js\";\nimport { initializeSilentRequest } from \"../request/RequestHelpers.js\";\nimport { InitializeApplicationRequest } from \"../request/InitializeApplicationRequest.js\";\n\nfunction getAccountType(\n account?: AccountInfo\n): \"AAD\" | \"MSA\" | \"B2C\" | undefined {\n const idTokenClaims = account?.idTokenClaims;\n if (idTokenClaims?.tfp || idTokenClaims?.acr) {\n return \"B2C\";\n }\n\n if (!idTokenClaims?.tid) {\n return undefined;\n } else if (idTokenClaims?.tid === \"9188040d-6c67-4c5b-b112-36a304b66dad\") {\n return \"MSA\";\n }\n return \"AAD\";\n}\n\nfunction preflightCheck(\n initialized: boolean,\n performanceEvent: InProgressPerformanceEvent\n) {\n try {\n BrowserUtils.preflightCheck(initialized);\n } catch (e) {\n performanceEvent.end({ success: false }, e);\n throw e;\n }\n}\n\nexport class StandardController implements IController {\n // OperatingContext\n protected readonly operatingContext: StandardOperatingContext;\n\n // Crypto interface implementation\n protected readonly browserCrypto: ICrypto;\n\n // Storage interface implementation\n protected readonly browserStorage: BrowserCacheManager;\n\n // Native Cache in memory storage implementation\n protected readonly nativeInternalStorage: BrowserCacheManager;\n\n // Network interface implementation\n protected readonly networkClient: INetworkModule;\n\n // Navigation interface implementation\n protected navigationClient: INavigationClient;\n\n // Input configuration by developer/user\n protected readonly config: BrowserConfiguration;\n\n // Token cache implementation\n private tokenCache: TokenCache;\n\n // Logger\n protected logger: Logger;\n\n // Flag to indicate if in browser environment\n protected isBrowserEnvironment: boolean;\n\n protected readonly eventHandler: EventHandler;\n\n // Redirect Response Object\n protected readonly redirectResponse: Map<\n string,\n Promise\n >;\n\n // Native Extension Provider\n protected nativeExtensionProvider: NativeMessageHandler | undefined;\n\n // Hybrid auth code responses\n private hybridAuthCodeResponses: Map>;\n\n // Performance telemetry client\n protected readonly performanceClient: IPerformanceClient;\n\n // Flag representing whether or not the initialize API has been called and completed\n protected initialized: boolean;\n\n // Active requests\n private activeSilentTokenRequests: Map<\n string,\n Promise\n >;\n\n // Active Iframe request\n private activeIframeRequest: [Promise, string] | undefined;\n\n private ssoSilentMeasurement?: InProgressPerformanceEvent;\n private acquireTokenByCodeAsyncMeasurement?: InProgressPerformanceEvent;\n\n // Flag which indicates if we're currently listening for account storage events\n private listeningToStorageEvents: boolean;\n /**\n * @constructor\n * Constructor for the PublicClientApplication used to instantiate the PublicClientApplication object\n *\n * Important attributes in the Configuration object for auth are:\n * - clientID: the application ID of your application. You can obtain one by registering your application with our Application registration portal : https://portal.azure.com/#blade/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/RegisteredAppsPreview\n * - authority: the authority URL for your application.\n * - redirect_uri: the uri of your application registered in the portal.\n *\n * In Azure AD, authority is a URL indicating the Azure active directory that MSAL uses to obtain tokens.\n * It is of the form https://login.microsoftonline.com/{Enter_the_Tenant_Info_Here}\n * If your application supports Accounts in one organizational directory, replace \"Enter_the_Tenant_Info_Here\" value with the Tenant Id or Tenant name (for example, contoso.microsoft.com).\n * If your application supports Accounts in any organizational directory, replace \"Enter_the_Tenant_Info_Here\" value with organizations.\n * If your application supports Accounts in any organizational directory and personal Microsoft accounts, replace \"Enter_the_Tenant_Info_Here\" value with common.\n * To restrict support to Personal Microsoft accounts only, replace \"Enter_the_Tenant_Info_Here\" value with consumers.\n *\n * In Azure B2C, authority is of the form https://{instance}/tfp/{tenant}/{policyName}/\n * Full B2C functionality will be available in this library in future versions.\n *\n * @param configuration Object for the MSAL PublicClientApplication instance\n */\n constructor(operatingContext: StandardOperatingContext) {\n this.operatingContext = operatingContext;\n this.isBrowserEnvironment =\n this.operatingContext.isBrowserEnvironment();\n // Set the configuration.\n this.config = operatingContext.getConfig();\n this.initialized = false;\n\n // Initialize logger\n this.logger = this.operatingContext.getLogger();\n\n // Initialize the network module class.\n this.networkClient = this.config.system.networkClient;\n\n // Initialize the navigation client class.\n this.navigationClient = this.config.system.navigationClient;\n\n // Initialize redirectResponse Map\n this.redirectResponse = new Map();\n\n // Initial hybrid spa map\n this.hybridAuthCodeResponses = new Map();\n\n // Initialize performance client\n this.performanceClient = this.config.telemetry.client;\n\n // Initialize the crypto class.\n this.browserCrypto = this.isBrowserEnvironment\n ? new CryptoOps(this.logger, this.performanceClient)\n : DEFAULT_CRYPTO_IMPLEMENTATION;\n\n this.eventHandler = new EventHandler(this.logger);\n\n // Initialize the browser storage class.\n this.browserStorage = this.isBrowserEnvironment\n ? new BrowserCacheManager(\n this.config.auth.clientId,\n this.config.cache,\n this.browserCrypto,\n this.logger,\n buildStaticAuthorityOptions(this.config.auth),\n this.performanceClient\n )\n : DEFAULT_BROWSER_CACHE_MANAGER(\n this.config.auth.clientId,\n this.logger\n );\n\n // initialize in memory storage for native flows\n const nativeCacheOptions: Required = {\n cacheLocation: BrowserCacheLocation.MemoryStorage,\n temporaryCacheLocation: BrowserCacheLocation.MemoryStorage,\n storeAuthStateInCookie: false,\n secureCookies: false,\n cacheMigrationEnabled: false,\n claimsBasedCachingEnabled: false,\n };\n this.nativeInternalStorage = new BrowserCacheManager(\n this.config.auth.clientId,\n nativeCacheOptions,\n this.browserCrypto,\n this.logger,\n undefined,\n this.performanceClient\n );\n\n // Initialize the token cache\n this.tokenCache = new TokenCache(\n this.config,\n this.browserStorage,\n this.logger,\n this.browserCrypto\n );\n\n this.activeSilentTokenRequests = new Map();\n\n // Register listener functions\n this.trackPageVisibility = this.trackPageVisibility.bind(this);\n\n // Register listener functions\n this.trackPageVisibilityWithMeasurement =\n this.trackPageVisibilityWithMeasurement.bind(this);\n\n // account storage events\n this.listeningToStorageEvents = false;\n this.handleAccountCacheChange =\n this.handleAccountCacheChange.bind(this);\n }\n\n static async createController(\n operatingContext: BaseOperatingContext,\n request?: InitializeApplicationRequest\n ): Promise {\n const controller = new StandardController(operatingContext);\n await controller.initialize(request);\n return controller;\n }\n\n private trackPageVisibility(correlationId?: string): void {\n if (!correlationId) {\n return;\n }\n this.logger.info(\"Perf: Visibility change detected\");\n this.performanceClient.incrementFields(\n { visibilityChangeCount: 1 },\n correlationId\n );\n }\n\n /**\n * Initializer function to perform async startup tasks such as connecting to WAM extension\n * @param request {?InitializeApplicationRequest} correlation id\n */\n async initialize(request?: InitializeApplicationRequest): Promise {\n this.logger.trace(\"initialize called\");\n if (this.initialized) {\n this.logger.info(\n \"initialize has already been called, exiting early.\"\n );\n return;\n }\n\n if (!this.isBrowserEnvironment) {\n this.logger.info(\"in non-browser environment, exiting early.\");\n this.initialized = true;\n this.eventHandler.emitEvent(EventType.INITIALIZE_END);\n return;\n }\n\n const initCorrelationId =\n request?.correlationId || this.getRequestCorrelationId();\n const allowNativeBroker = this.config.system.allowNativeBroker;\n const initMeasurement = this.performanceClient.startMeasurement(\n PerformanceEvents.InitializeClientApplication,\n initCorrelationId\n );\n this.eventHandler.emitEvent(EventType.INITIALIZE_START);\n\n if (allowNativeBroker) {\n try {\n this.nativeExtensionProvider =\n await NativeMessageHandler.createProvider(\n this.logger,\n this.config.system.nativeBrokerHandshakeTimeout,\n this.performanceClient\n );\n } catch (e) {\n this.logger.verbose(e as string);\n }\n }\n\n if (!this.config.cache.claimsBasedCachingEnabled) {\n this.logger.verbose(\n \"Claims-based caching is disabled. Clearing the previous cache with claims\"\n );\n\n await invokeAsync(\n this.browserStorage.clearTokensAndKeysWithClaims.bind(\n this.browserStorage\n ),\n PerformanceEvents.ClearTokensAndKeysWithClaims,\n this.logger,\n this.performanceClient,\n initCorrelationId\n )(this.performanceClient, initCorrelationId);\n }\n\n this.initialized = true;\n this.eventHandler.emitEvent(EventType.INITIALIZE_END);\n initMeasurement.end({ allowNativeBroker, success: true });\n }\n\n // #region Redirect Flow\n\n /**\n * Event handler function which allows users to fire events after the PublicClientApplication object\n * has loaded during redirect flows. This should be invoked on all page loads involved in redirect\n * auth flows.\n * @param hash Hash to process. Defaults to the current value of window.location.hash. Only needs to be provided explicitly if the response to be handled is not contained in the current value.\n * @returns Token response or null. If the return value is null, then no auth redirect was detected.\n */\n async handleRedirectPromise(\n hash?: string\n ): Promise {\n this.logger.verbose(\"handleRedirectPromise called\");\n // Block token acquisition before initialize has been called\n BrowserUtils.blockAPICallsBeforeInitialize(this.initialized);\n\n if (this.isBrowserEnvironment) {\n /**\n * Store the promise on the PublicClientApplication instance if this is the first invocation of handleRedirectPromise,\n * otherwise return the promise from the first invocation. Prevents race conditions when handleRedirectPromise is called\n * several times concurrently.\n */\n const redirectResponseKey = hash || \"\";\n let response = this.redirectResponse.get(redirectResponseKey);\n if (typeof response === \"undefined\") {\n response = this.handleRedirectPromiseInternal(hash);\n this.redirectResponse.set(redirectResponseKey, response);\n this.logger.verbose(\n \"handleRedirectPromise has been called for the first time, storing the promise\"\n );\n } else {\n this.logger.verbose(\n \"handleRedirectPromise has been called previously, returning the result from the first call\"\n );\n }\n\n return response;\n }\n this.logger.verbose(\n \"handleRedirectPromise returns null, not browser environment\"\n );\n return null;\n }\n\n /**\n * The internal details of handleRedirectPromise. This is separated out to a helper to allow handleRedirectPromise to memoize requests\n * @param hash\n * @returns\n */\n private async handleRedirectPromiseInternal(\n hash?: string\n ): Promise {\n const loggedInAccounts = this.getAllAccounts();\n const request: NativeTokenRequest | null =\n this.browserStorage.getCachedNativeRequest();\n const useNative =\n request &&\n NativeMessageHandler.isNativeAvailable(\n this.config,\n this.logger,\n this.nativeExtensionProvider\n ) &&\n this.nativeExtensionProvider &&\n !hash;\n const correlationId = useNative\n ? request?.correlationId\n : this.browserStorage.getTemporaryCache(\n TemporaryCacheKeys.CORRELATION_ID,\n true\n ) || \"\";\n const rootMeasurement = this.performanceClient.startMeasurement(\n PerformanceEvents.AcquireTokenRedirect,\n correlationId\n );\n this.eventHandler.emitEvent(\n EventType.HANDLE_REDIRECT_START,\n InteractionType.Redirect\n );\n\n let redirectResponse: Promise;\n if (useNative && this.nativeExtensionProvider) {\n this.logger.trace(\n \"handleRedirectPromise - acquiring token from native platform\"\n );\n const nativeClient = new NativeInteractionClient(\n this.config,\n this.browserStorage,\n this.browserCrypto,\n this.logger,\n this.eventHandler,\n this.navigationClient,\n ApiId.handleRedirectPromise,\n this.performanceClient,\n this.nativeExtensionProvider,\n request.accountId,\n this.nativeInternalStorage,\n request.correlationId\n );\n\n redirectResponse = invokeAsync(\n nativeClient.handleRedirectPromise.bind(nativeClient),\n PerformanceEvents.HandleNativeRedirectPromiseMeasurement,\n this.logger,\n this.performanceClient,\n rootMeasurement.event.correlationId\n )(this.performanceClient, rootMeasurement.event.correlationId);\n } else {\n this.logger.trace(\n \"handleRedirectPromise - acquiring token from web flow\"\n );\n const redirectClient = this.createRedirectClient(correlationId);\n redirectResponse = invokeAsync(\n redirectClient.handleRedirectPromise.bind(redirectClient),\n PerformanceEvents.HandleRedirectPromiseMeasurement,\n this.logger,\n this.performanceClient,\n rootMeasurement.event.correlationId\n )(hash, rootMeasurement);\n }\n\n return redirectResponse\n .then((result: AuthenticationResult | null) => {\n if (result) {\n // Emit login event if number of accounts change\n\n const isLoggingIn =\n loggedInAccounts.length < this.getAllAccounts().length;\n if (isLoggingIn) {\n this.eventHandler.emitEvent(\n EventType.LOGIN_SUCCESS,\n InteractionType.Redirect,\n result\n );\n this.logger.verbose(\n \"handleRedirectResponse returned result, login success\"\n );\n } else {\n this.eventHandler.emitEvent(\n EventType.ACQUIRE_TOKEN_SUCCESS,\n InteractionType.Redirect,\n result\n );\n this.logger.verbose(\n \"handleRedirectResponse returned result, acquire token success\"\n );\n }\n rootMeasurement.end({\n success: true,\n accountType: getAccountType(result.account),\n });\n } else {\n /*\n * Instrument an event only if an error code is set. Otherwise, discard it when the redirect response\n * is empty and the error code is missing.\n */\n if (rootMeasurement.event.errorCode) {\n rootMeasurement.end({ success: false });\n } else {\n rootMeasurement.discard();\n }\n }\n\n this.eventHandler.emitEvent(\n EventType.HANDLE_REDIRECT_END,\n InteractionType.Redirect\n );\n\n return result;\n })\n .catch((e) => {\n const eventError = e as EventError;\n // Emit login event if there is an account\n if (loggedInAccounts.length > 0) {\n this.eventHandler.emitEvent(\n EventType.ACQUIRE_TOKEN_FAILURE,\n InteractionType.Redirect,\n null,\n eventError\n );\n } else {\n this.eventHandler.emitEvent(\n EventType.LOGIN_FAILURE,\n InteractionType.Redirect,\n null,\n eventError\n );\n }\n this.eventHandler.emitEvent(\n EventType.HANDLE_REDIRECT_END,\n InteractionType.Redirect\n );\n\n rootMeasurement.end(\n {\n success: false,\n },\n eventError\n );\n\n throw e;\n });\n }\n\n /**\n * Use when you want to obtain an access_token for your API by redirecting the user's browser window to the authorization endpoint. This function redirects\n * the page, so any code that follows this function will not execute.\n *\n * IMPORTANT: It is NOT recommended to have code that is dependent on the resolution of the Promise. This function will navigate away from the current\n * browser window. It currently returns a Promise in order to reflect the asynchronous nature of the code running in this function.\n *\n * @param request\n */\n async acquireTokenRedirect(request: RedirectRequest): Promise {\n // Preflight request\n const correlationId = this.getRequestCorrelationId(request);\n this.logger.verbose(\"acquireTokenRedirect called\", correlationId);\n\n const atrMeasurement = this.performanceClient.startMeasurement(\n PerformanceEvents.AcquireTokenPreRedirect,\n correlationId\n );\n atrMeasurement.add({\n accountType: getAccountType(request.account),\n scenarioId: request.scenarioId,\n });\n\n // Override on request only if set, as onRedirectNavigate field is deprecated\n const onRedirectNavigateCb = request.onRedirectNavigate;\n if (onRedirectNavigateCb) {\n request.onRedirectNavigate = (url: string) => {\n const navigate =\n typeof onRedirectNavigateCb === \"function\"\n ? onRedirectNavigateCb(url)\n : undefined;\n if (navigate !== false) {\n atrMeasurement.end({ success: true });\n } else {\n atrMeasurement.discard();\n }\n return navigate;\n };\n } else {\n const configOnRedirectNavigateCb =\n this.config.auth.onRedirectNavigate;\n this.config.auth.onRedirectNavigate = (url: string) => {\n const navigate =\n typeof configOnRedirectNavigateCb === \"function\"\n ? configOnRedirectNavigateCb(url)\n : undefined;\n if (navigate !== false) {\n atrMeasurement.end({ success: true });\n } else {\n atrMeasurement.discard();\n }\n return navigate;\n };\n }\n\n // If logged in, emit acquire token events\n const isLoggedIn = this.getAllAccounts().length > 0;\n try {\n BrowserUtils.redirectPreflightCheck(this.initialized, this.config);\n this.browserStorage.setInteractionInProgress(true);\n\n if (isLoggedIn) {\n this.eventHandler.emitEvent(\n EventType.ACQUIRE_TOKEN_START,\n InteractionType.Redirect,\n request\n );\n } else {\n this.eventHandler.emitEvent(\n EventType.LOGIN_START,\n InteractionType.Redirect,\n request\n );\n }\n\n let result: Promise;\n\n if (this.nativeExtensionProvider && this.canUseNative(request)) {\n const nativeClient = new NativeInteractionClient(\n this.config,\n this.browserStorage,\n this.browserCrypto,\n this.logger,\n this.eventHandler,\n this.navigationClient,\n ApiId.acquireTokenRedirect,\n this.performanceClient,\n this.nativeExtensionProvider,\n this.getNativeAccountId(request),\n this.nativeInternalStorage,\n correlationId\n );\n result = nativeClient\n .acquireTokenRedirect(request, atrMeasurement)\n .catch((e: AuthError) => {\n if (\n e instanceof NativeAuthError &&\n isFatalNativeAuthError(e)\n ) {\n this.nativeExtensionProvider = undefined; // If extension gets uninstalled during session prevent future requests from continuing to attempt\n const redirectClient =\n this.createRedirectClient(correlationId);\n return redirectClient.acquireToken(request);\n } else if (e instanceof InteractionRequiredAuthError) {\n this.logger.verbose(\n \"acquireTokenRedirect - Resolving interaction required error thrown by native broker by falling back to web flow\"\n );\n const redirectClient =\n this.createRedirectClient(correlationId);\n return redirectClient.acquireToken(request);\n }\n this.browserStorage.setInteractionInProgress(false);\n throw e;\n });\n } else {\n const redirectClient = this.createRedirectClient(correlationId);\n result = redirectClient.acquireToken(request);\n }\n\n return await result;\n } catch (e) {\n atrMeasurement.end({ success: false }, e);\n if (isLoggedIn) {\n this.eventHandler.emitEvent(\n EventType.ACQUIRE_TOKEN_FAILURE,\n InteractionType.Redirect,\n null,\n e as EventError\n );\n } else {\n this.eventHandler.emitEvent(\n EventType.LOGIN_FAILURE,\n InteractionType.Redirect,\n null,\n e as EventError\n );\n }\n throw e;\n }\n }\n\n // #endregion\n\n // #region Popup Flow\n\n /**\n * Use when you want to obtain an access_token for your API via opening a popup window in the user's browser\n *\n * @param request\n *\n * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised.\n */\n acquireTokenPopup(request: PopupRequest): Promise {\n const correlationId = this.getRequestCorrelationId(request);\n const atPopupMeasurement = this.performanceClient.startMeasurement(\n PerformanceEvents.AcquireTokenPopup,\n correlationId\n );\n\n atPopupMeasurement.add({\n scenarioId: request.scenarioId,\n accountType: getAccountType(request.account),\n });\n\n try {\n this.logger.verbose(\"acquireTokenPopup called\", correlationId);\n preflightCheck(this.initialized, atPopupMeasurement);\n this.browserStorage.setInteractionInProgress(true);\n } catch (e) {\n // Since this function is syncronous we need to reject\n return Promise.reject(e);\n }\n\n // If logged in, emit acquire token events\n const loggedInAccounts = this.getAllAccounts();\n if (loggedInAccounts.length > 0) {\n this.eventHandler.emitEvent(\n EventType.ACQUIRE_TOKEN_START,\n InteractionType.Popup,\n request\n );\n } else {\n this.eventHandler.emitEvent(\n EventType.LOGIN_START,\n InteractionType.Popup,\n request\n );\n }\n\n let result: Promise;\n\n if (this.canUseNative(request)) {\n result = this.acquireTokenNative(\n {\n ...request,\n correlationId,\n },\n ApiId.acquireTokenPopup\n )\n .then((response) => {\n this.browserStorage.setInteractionInProgress(false);\n atPopupMeasurement.end({\n success: true,\n isNativeBroker: true,\n accountType: getAccountType(response.account),\n });\n return response;\n })\n .catch((e: AuthError) => {\n if (\n e instanceof NativeAuthError &&\n isFatalNativeAuthError(e)\n ) {\n this.nativeExtensionProvider = undefined; // If extension gets uninstalled during session prevent future requests from continuing to attempt\n const popupClient =\n this.createPopupClient(correlationId);\n return popupClient.acquireToken(request);\n } else if (e instanceof InteractionRequiredAuthError) {\n this.logger.verbose(\n \"acquireTokenPopup - Resolving interaction required error thrown by native broker by falling back to web flow\"\n );\n const popupClient =\n this.createPopupClient(correlationId);\n return popupClient.acquireToken(request);\n }\n this.browserStorage.setInteractionInProgress(false);\n throw e;\n });\n } else {\n const popupClient = this.createPopupClient(correlationId);\n result = popupClient.acquireToken(request);\n }\n\n return result\n .then((result) => {\n /*\n * If logged in, emit acquire token events\n */\n const isLoggingIn =\n loggedInAccounts.length < this.getAllAccounts().length;\n if (isLoggingIn) {\n this.eventHandler.emitEvent(\n EventType.LOGIN_SUCCESS,\n InteractionType.Popup,\n result\n );\n } else {\n this.eventHandler.emitEvent(\n EventType.ACQUIRE_TOKEN_SUCCESS,\n InteractionType.Popup,\n result\n );\n }\n\n atPopupMeasurement.end({\n success: true,\n accessTokenSize: result.accessToken.length,\n idTokenSize: result.idToken.length,\n accountType: getAccountType(result.account),\n });\n return result;\n })\n .catch((e: Error) => {\n if (loggedInAccounts.length > 0) {\n this.eventHandler.emitEvent(\n EventType.ACQUIRE_TOKEN_FAILURE,\n InteractionType.Popup,\n null,\n e\n );\n } else {\n this.eventHandler.emitEvent(\n EventType.LOGIN_FAILURE,\n InteractionType.Popup,\n null,\n e\n );\n }\n\n atPopupMeasurement.end(\n {\n success: false,\n },\n e\n );\n\n // Since this function is syncronous we need to reject\n return Promise.reject(e);\n });\n }\n\n private trackPageVisibilityWithMeasurement(): void {\n const measurement =\n this.ssoSilentMeasurement ||\n this.acquireTokenByCodeAsyncMeasurement;\n if (!measurement) {\n return;\n }\n\n this.logger.info(\n \"Perf: Visibility change detected in \",\n measurement.event.name\n );\n measurement.increment({\n visibilityChangeCount: 1,\n });\n }\n // #endregion\n\n // #region Silent Flow\n\n /**\n * This function uses a hidden iframe to fetch an authorization code from the eSTS. There are cases where this may not work:\n * - Any browser using a form of Intelligent Tracking Prevention\n * - If there is not an established session with the service\n *\n * In these cases, the request must be done inside a popup or full frame redirect.\n *\n * For the cases where interaction is required, you cannot send a request with prompt=none.\n *\n * If your refresh token has expired, you can use this function to fetch a new set of tokens silently as long as\n * you session on the server still exists.\n * @param request {@link SsoSilentRequest}\n *\n * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised.\n */\n async ssoSilent(request: SsoSilentRequest): Promise {\n const correlationId = this.getRequestCorrelationId(request);\n const validRequest = {\n ...request,\n // will be PromptValue.NONE or PromptValue.NO_SESSION\n prompt: request.prompt,\n correlationId: correlationId,\n };\n this.ssoSilentMeasurement = this.performanceClient.startMeasurement(\n PerformanceEvents.SsoSilent,\n correlationId\n );\n this.ssoSilentMeasurement?.add({\n scenarioId: request.scenarioId,\n accountType: getAccountType(request.account),\n });\n preflightCheck(this.initialized, this.ssoSilentMeasurement);\n this.ssoSilentMeasurement?.increment({\n visibilityChangeCount: 0,\n });\n\n document.addEventListener(\n \"visibilitychange\",\n this.trackPageVisibilityWithMeasurement\n );\n this.logger.verbose(\"ssoSilent called\", correlationId);\n this.eventHandler.emitEvent(\n EventType.SSO_SILENT_START,\n InteractionType.Silent,\n validRequest\n );\n\n let result: Promise;\n\n if (this.canUseNative(validRequest)) {\n result = this.acquireTokenNative(\n validRequest,\n ApiId.ssoSilent\n ).catch((e: AuthError) => {\n // If native token acquisition fails for availability reasons fallback to standard flow\n if (e instanceof NativeAuthError && isFatalNativeAuthError(e)) {\n this.nativeExtensionProvider = undefined; // If extension gets uninstalled during session prevent future requests from continuing to attempt\n const silentIframeClient = this.createSilentIframeClient(\n validRequest.correlationId\n );\n return silentIframeClient.acquireToken(validRequest);\n }\n throw e;\n });\n } else {\n const silentIframeClient = this.createSilentIframeClient(\n validRequest.correlationId\n );\n result = silentIframeClient.acquireToken(validRequest);\n }\n\n return result\n .then((response) => {\n this.eventHandler.emitEvent(\n EventType.SSO_SILENT_SUCCESS,\n InteractionType.Silent,\n response\n );\n this.ssoSilentMeasurement?.end({\n success: true,\n isNativeBroker: response.fromNativeBroker,\n accessTokenSize: response.accessToken.length,\n idTokenSize: response.idToken.length,\n accountType: getAccountType(response.account),\n });\n return response;\n })\n .catch((e: Error) => {\n this.eventHandler.emitEvent(\n EventType.SSO_SILENT_FAILURE,\n InteractionType.Silent,\n null,\n e\n );\n this.ssoSilentMeasurement?.end(\n {\n success: false,\n },\n e\n );\n throw e;\n })\n .finally(() => {\n document.removeEventListener(\n \"visibilitychange\",\n this.trackPageVisibilityWithMeasurement\n );\n });\n }\n\n /**\n * This function redeems an authorization code (passed as code) from the eSTS token endpoint.\n * This authorization code should be acquired server-side using a confidential client to acquire a spa_code.\n * This API is not indended for normal authorization code acquisition and redemption.\n *\n * Redemption of this authorization code will not require PKCE, as it was acquired by a confidential client.\n *\n * @param request {@link AuthorizationCodeRequest}\n * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised.\n */\n async acquireTokenByCode(\n request: AuthorizationCodeRequest\n ): Promise {\n const correlationId = this.getRequestCorrelationId(request);\n this.logger.trace(\"acquireTokenByCode called\", correlationId);\n const atbcMeasurement = this.performanceClient.startMeasurement(\n PerformanceEvents.AcquireTokenByCode,\n correlationId\n );\n preflightCheck(this.initialized, atbcMeasurement);\n this.eventHandler.emitEvent(\n EventType.ACQUIRE_TOKEN_BY_CODE_START,\n InteractionType.Silent,\n request\n );\n atbcMeasurement.add({ scenarioId: request.scenarioId });\n\n try {\n if (request.code && request.nativeAccountId) {\n // Throw error in case server returns both spa_code and spa_accountid in exchange for auth code.\n throw createBrowserAuthError(\n BrowserAuthErrorCodes.spaCodeAndNativeAccountIdPresent\n );\n } else if (request.code) {\n const hybridAuthCode = request.code;\n let response = this.hybridAuthCodeResponses.get(hybridAuthCode);\n if (!response) {\n this.logger.verbose(\n \"Initiating new acquireTokenByCode request\",\n correlationId\n );\n response = this.acquireTokenByCodeAsync({\n ...request,\n correlationId,\n })\n .then((result: AuthenticationResult) => {\n this.eventHandler.emitEvent(\n EventType.ACQUIRE_TOKEN_BY_CODE_SUCCESS,\n InteractionType.Silent,\n result\n );\n this.hybridAuthCodeResponses.delete(hybridAuthCode);\n atbcMeasurement.end({\n success: true,\n isNativeBroker: result.fromNativeBroker,\n accessTokenSize: result.accessToken.length,\n idTokenSize: result.idToken.length,\n accountType: getAccountType(result.account),\n });\n return result;\n })\n .catch((error: Error) => {\n this.hybridAuthCodeResponses.delete(hybridAuthCode);\n this.eventHandler.emitEvent(\n EventType.ACQUIRE_TOKEN_BY_CODE_FAILURE,\n InteractionType.Silent,\n null,\n error\n );\n atbcMeasurement.end(\n {\n success: false,\n },\n error\n );\n throw error;\n });\n this.hybridAuthCodeResponses.set(hybridAuthCode, response);\n } else {\n this.logger.verbose(\n \"Existing acquireTokenByCode request found\",\n correlationId\n );\n atbcMeasurement.discard();\n }\n return await response;\n } else if (request.nativeAccountId) {\n if (this.canUseNative(request, request.nativeAccountId)) {\n const result = await this.acquireTokenNative(\n {\n ...request,\n correlationId,\n },\n ApiId.acquireTokenByCode,\n request.nativeAccountId\n ).catch((e: AuthError) => {\n // If native token acquisition fails for availability reasons fallback to standard flow\n if (\n e instanceof NativeAuthError &&\n isFatalNativeAuthError(e)\n ) {\n this.nativeExtensionProvider = undefined; // If extension gets uninstalled during session prevent future requests from continuing to attempt\n }\n throw e;\n });\n atbcMeasurement.end({\n accountType: getAccountType(result.account),\n success: true,\n });\n return result;\n } else {\n throw createBrowserAuthError(\n BrowserAuthErrorCodes.unableToAcquireTokenFromNativePlatform\n );\n }\n } else {\n throw createBrowserAuthError(\n BrowserAuthErrorCodes.authCodeOrNativeAccountIdRequired\n );\n }\n } catch (e) {\n this.eventHandler.emitEvent(\n EventType.ACQUIRE_TOKEN_BY_CODE_FAILURE,\n InteractionType.Silent,\n null,\n e as EventError\n );\n atbcMeasurement.end(\n {\n success: false,\n },\n e\n );\n throw e;\n }\n }\n\n /**\n * Creates a SilentAuthCodeClient to redeem an authorization code.\n * @param request\n * @returns Result of the operation to redeem the authorization code\n */\n private async acquireTokenByCodeAsync(\n request: AuthorizationCodeRequest\n ): Promise {\n this.logger.trace(\n \"acquireTokenByCodeAsync called\",\n request.correlationId\n );\n this.acquireTokenByCodeAsyncMeasurement =\n this.performanceClient.startMeasurement(\n PerformanceEvents.AcquireTokenByCodeAsync,\n request.correlationId\n );\n this.acquireTokenByCodeAsyncMeasurement?.increment({\n visibilityChangeCount: 0,\n });\n document.addEventListener(\n \"visibilitychange\",\n this.trackPageVisibilityWithMeasurement\n );\n const silentAuthCodeClient = this.createSilentAuthCodeClient(\n request.correlationId\n );\n const silentTokenResult = await silentAuthCodeClient\n .acquireToken(request)\n .then((response) => {\n this.acquireTokenByCodeAsyncMeasurement?.end({\n success: true,\n fromCache: response.fromCache,\n isNativeBroker: response.fromNativeBroker,\n });\n return response;\n })\n .catch((tokenRenewalError: Error) => {\n this.acquireTokenByCodeAsyncMeasurement?.end(\n {\n success: false,\n },\n tokenRenewalError\n );\n throw tokenRenewalError;\n })\n .finally(() => {\n document.removeEventListener(\n \"visibilitychange\",\n this.trackPageVisibilityWithMeasurement\n );\n });\n return silentTokenResult;\n }\n\n /**\n * Attempt to acquire an access token from the cache\n * @param silentCacheClient SilentCacheClient\n * @param commonRequest CommonSilentFlowRequest\n * @param silentRequest SilentRequest\n * @returns A promise that, when resolved, returns the access token\n */\n protected async acquireTokenFromCache(\n commonRequest: CommonSilentFlowRequest,\n cacheLookupPolicy: CacheLookupPolicy\n ): Promise {\n this.performanceClient.addQueueMeasurement(\n PerformanceEvents.AcquireTokenFromCache,\n commonRequest.correlationId\n );\n switch (cacheLookupPolicy) {\n case CacheLookupPolicy.Default:\n case CacheLookupPolicy.AccessToken:\n case CacheLookupPolicy.AccessTokenAndRefreshToken:\n const silentCacheClient = this.createSilentCacheClient(\n commonRequest.correlationId\n );\n return invokeAsync(\n silentCacheClient.acquireToken.bind(silentCacheClient),\n PerformanceEvents.SilentCacheClientAcquireToken,\n this.logger,\n this.performanceClient,\n commonRequest.correlationId\n )(commonRequest);\n default:\n throw createClientAuthError(\n ClientAuthErrorCodes.tokenRefreshRequired\n );\n }\n }\n\n /**\n * Attempt to acquire an access token via a refresh token\n * @param commonRequest CommonSilentFlowRequest\n * @param cacheLookupPolicy CacheLookupPolicy\n * @returns A promise that, when resolved, returns the access token\n */\n public async acquireTokenByRefreshToken(\n commonRequest: CommonSilentFlowRequest,\n cacheLookupPolicy: CacheLookupPolicy\n ): Promise {\n this.performanceClient.addQueueMeasurement(\n PerformanceEvents.AcquireTokenByRefreshToken,\n commonRequest.correlationId\n );\n switch (cacheLookupPolicy) {\n case CacheLookupPolicy.Default:\n case CacheLookupPolicy.AccessTokenAndRefreshToken:\n case CacheLookupPolicy.RefreshToken:\n case CacheLookupPolicy.RefreshTokenAndNetwork:\n const silentRefreshClient = this.createSilentRefreshClient(\n commonRequest.correlationId\n );\n\n return invokeAsync(\n silentRefreshClient.acquireToken.bind(silentRefreshClient),\n PerformanceEvents.SilentRefreshClientAcquireToken,\n this.logger,\n this.performanceClient,\n commonRequest.correlationId\n )(commonRequest);\n default:\n throw createClientAuthError(\n ClientAuthErrorCodes.tokenRefreshRequired\n );\n }\n }\n\n /**\n * Attempt to acquire an access token via an iframe\n * @param request CommonSilentFlowRequest\n * @returns A promise that, when resolved, returns the access token\n */\n protected async acquireTokenBySilentIframe(\n request: CommonSilentFlowRequest\n ): Promise {\n this.performanceClient.addQueueMeasurement(\n PerformanceEvents.AcquireTokenBySilentIframe,\n request.correlationId\n );\n\n const silentIframeClient = this.createSilentIframeClient(\n request.correlationId\n );\n\n return invokeAsync(\n silentIframeClient.acquireToken.bind(silentIframeClient),\n PerformanceEvents.SilentIframeClientAcquireToken,\n this.logger,\n this.performanceClient,\n request.correlationId\n )(request);\n }\n\n // #endregion\n\n // #region Logout\n\n /**\n * Deprecated logout function. Use logoutRedirect or logoutPopup instead\n * @param logoutRequest\n * @deprecated\n */\n async logout(logoutRequest?: EndSessionRequest): Promise {\n const correlationId = this.getRequestCorrelationId(logoutRequest);\n this.logger.warning(\n \"logout API is deprecated and will be removed in msal-browser v3.0.0. Use logoutRedirect instead.\",\n correlationId\n );\n return this.logoutRedirect({\n correlationId,\n ...logoutRequest,\n });\n }\n\n /**\n * Use to log out the current user, and redirect the user to the postLogoutRedirectUri.\n * Default behaviour is to redirect the user to `window.location.href`.\n * @param logoutRequest\n */\n async logoutRedirect(logoutRequest?: EndSessionRequest): Promise {\n const correlationId = this.getRequestCorrelationId(logoutRequest);\n BrowserUtils.redirectPreflightCheck(this.initialized, this.config);\n this.browserStorage.setInteractionInProgress(true);\n\n const redirectClient = this.createRedirectClient(correlationId);\n return redirectClient.logout(logoutRequest);\n }\n\n /**\n * Clears local cache for the current user then opens a popup window prompting the user to sign-out of the server\n * @param logoutRequest\n */\n logoutPopup(logoutRequest?: EndSessionPopupRequest): Promise {\n try {\n const correlationId = this.getRequestCorrelationId(logoutRequest);\n BrowserUtils.preflightCheck(this.initialized);\n this.browserStorage.setInteractionInProgress(true);\n\n const popupClient = this.createPopupClient(correlationId);\n return popupClient.logout(logoutRequest);\n } catch (e) {\n // Since this function is syncronous we need to reject\n return Promise.reject(e);\n }\n }\n\n /**\n * Creates a cache interaction client to clear broswer cache.\n * @param logoutRequest\n */\n async clearCache(logoutRequest?: ClearCacheRequest): Promise {\n if (!this.isBrowserEnvironment) {\n this.logger.info(\"in non-browser environment, returning early.\");\n return;\n }\n const correlationId = this.getRequestCorrelationId(logoutRequest);\n const cacheClient = this.createSilentCacheClient(correlationId);\n return cacheClient.logout(logoutRequest);\n }\n\n // #endregion\n\n // #region Account APIs\n\n /**\n * Returns all the accounts in the cache that match the optional filter. If no filter is provided, all accounts are returned.\n * @param accountFilter - (Optional) filter to narrow down the accounts returned\n * @returns Array of AccountInfo objects in cache\n */\n getAllAccounts(accountFilter?: AccountFilter): AccountInfo[] {\n return AccountManager.getAllAccounts(\n this.logger,\n this.browserStorage,\n this.isBrowserEnvironment,\n accountFilter\n );\n }\n\n /**\n * Returns the first account found in the cache that matches the account filter passed in.\n * @param accountFilter\n * @returns The first account found in the cache matching the provided filter or null if no account could be found.\n */\n getAccount(accountFilter: AccountFilter): AccountInfo | null {\n return AccountManager.getAccount(\n accountFilter,\n this.logger,\n this.browserStorage\n );\n }\n\n /**\n * Returns the signed in account matching username.\n * (the account object is created at the time of successful login)\n * or null when no matching account is found.\n * This API is provided for convenience but getAccountById should be used for best reliability\n * @param username\n * @returns The account object stored in MSAL\n */\n getAccountByUsername(username: string): AccountInfo | null {\n return AccountManager.getAccountByUsername(\n username,\n this.logger,\n this.browserStorage\n );\n }\n\n /**\n * Returns the signed in account matching homeAccountId.\n * (the account object is created at the time of successful login)\n * or null when no matching account is found\n * @param homeAccountId\n * @returns The account object stored in MSAL\n */\n getAccountByHomeId(homeAccountId: string): AccountInfo | null {\n return AccountManager.getAccountByHomeId(\n homeAccountId,\n this.logger,\n this.browserStorage\n );\n }\n\n /**\n * Returns the signed in account matching localAccountId.\n * (the account object is created at the time of successful login)\n * or null when no matching account is found\n * @param localAccountId\n * @returns The account object stored in MSAL\n */\n getAccountByLocalId(localAccountId: string): AccountInfo | null {\n return AccountManager.getAccountByLocalId(\n localAccountId,\n this.logger,\n this.browserStorage\n );\n }\n\n /**\n * Sets the account to use as the active account. If no account is passed to the acquireToken APIs, then MSAL will use this active account.\n * @param account\n */\n setActiveAccount(account: AccountInfo | null): void {\n AccountManager.setActiveAccount(account, this.browserStorage);\n }\n\n /**\n * Gets the currently active account\n */\n getActiveAccount(): AccountInfo | null {\n return AccountManager.getActiveAccount(this.browserStorage);\n }\n\n // #endregion\n\n /**\n * Hydrates the cache with the tokens from an AuthenticationResult\n * @param result\n * @param request\n * @returns\n */\n async hydrateCache(\n result: AuthenticationResult,\n request:\n | SilentRequest\n | SsoSilentRequest\n | RedirectRequest\n | PopupRequest\n ): Promise {\n this.logger.verbose(\"hydrateCache called\");\n\n // Account gets saved to browser storage regardless of native or not\n const accountEntity = AccountEntity.createFromAccountInfo(\n result.account,\n result.cloudGraphHostName,\n result.msGraphHost\n );\n this.browserStorage.setAccount(accountEntity);\n\n if (result.fromNativeBroker) {\n this.logger.verbose(\n \"Response was from native broker, storing in-memory\"\n );\n // Tokens from native broker are stored in-memory\n return this.nativeInternalStorage.hydrateCache(result, request);\n } else {\n return this.browserStorage.hydrateCache(result, request);\n }\n }\n\n // #region Helpers\n\n /**\n * Acquire a token from native device (e.g. WAM)\n * @param request\n */\n public async acquireTokenNative(\n request: PopupRequest | SilentRequest | SsoSilentRequest,\n apiId: ApiId,\n accountId?: string\n ): Promise {\n this.logger.trace(\"acquireTokenNative called\");\n if (!this.nativeExtensionProvider) {\n throw createBrowserAuthError(\n BrowserAuthErrorCodes.nativeConnectionNotEstablished\n );\n }\n\n const nativeClient = new NativeInteractionClient(\n this.config,\n this.browserStorage,\n this.browserCrypto,\n this.logger,\n this.eventHandler,\n this.navigationClient,\n apiId,\n this.performanceClient,\n this.nativeExtensionProvider,\n accountId || this.getNativeAccountId(request),\n this.nativeInternalStorage,\n request.correlationId\n );\n\n return nativeClient.acquireToken(request);\n }\n\n /**\n * Returns boolean indicating if this request can use the native broker\n * @param request\n */\n public canUseNative(\n request: RedirectRequest | PopupRequest | SsoSilentRequest,\n accountId?: string\n ): boolean {\n this.logger.trace(\"canUseNative called\");\n if (\n !NativeMessageHandler.isNativeAvailable(\n this.config,\n this.logger,\n this.nativeExtensionProvider,\n request.authenticationScheme\n )\n ) {\n this.logger.trace(\n \"canUseNative: isNativeAvailable returned false, returning false\"\n );\n return false;\n }\n\n if (request.prompt) {\n switch (request.prompt) {\n case PromptValue.NONE:\n case PromptValue.CONSENT:\n case PromptValue.LOGIN:\n this.logger.trace(\n \"canUseNative: prompt is compatible with native flow\"\n );\n break;\n default:\n this.logger.trace(\n `canUseNative: prompt = ${request.prompt} is not compatible with native flow, returning false`\n );\n return false;\n }\n }\n\n if (!accountId && !this.getNativeAccountId(request)) {\n this.logger.trace(\n \"canUseNative: nativeAccountId is not available, returning false\"\n );\n return false;\n }\n\n return true;\n }\n\n /**\n * Get the native accountId from the account\n * @param request\n * @returns\n */\n public getNativeAccountId(\n request: RedirectRequest | PopupRequest | SsoSilentRequest\n ): string {\n const account =\n request.account ||\n this.getAccount({\n loginHint: request.loginHint,\n sid: request.sid,\n }) ||\n this.getActiveAccount();\n\n return (account && account.nativeAccountId) || \"\";\n }\n\n /**\n * Returns new instance of the Popup Interaction Client\n * @param correlationId\n */\n public createPopupClient(correlationId?: string): PopupClient {\n return new PopupClient(\n this.config,\n this.browserStorage,\n this.browserCrypto,\n this.logger,\n this.eventHandler,\n this.navigationClient,\n this.performanceClient,\n this.nativeInternalStorage,\n this.nativeExtensionProvider,\n correlationId\n );\n }\n\n /**\n * Returns new instance of the Redirect Interaction Client\n * @param correlationId\n */\n protected createRedirectClient(correlationId?: string): RedirectClient {\n return new RedirectClient(\n this.config,\n this.browserStorage,\n this.browserCrypto,\n this.logger,\n this.eventHandler,\n this.navigationClient,\n this.performanceClient,\n this.nativeInternalStorage,\n this.nativeExtensionProvider,\n correlationId\n );\n }\n\n /**\n * Returns new instance of the Silent Iframe Interaction Client\n * @param correlationId\n */\n public createSilentIframeClient(\n correlationId?: string\n ): SilentIframeClient {\n return new SilentIframeClient(\n this.config,\n this.browserStorage,\n this.browserCrypto,\n this.logger,\n this.eventHandler,\n this.navigationClient,\n ApiId.ssoSilent,\n this.performanceClient,\n this.nativeInternalStorage,\n this.nativeExtensionProvider,\n correlationId\n );\n }\n\n /**\n * Returns new instance of the Silent Cache Interaction Client\n */\n protected createSilentCacheClient(\n correlationId?: string\n ): SilentCacheClient {\n return new SilentCacheClient(\n this.config,\n this.browserStorage,\n this.browserCrypto,\n this.logger,\n this.eventHandler,\n this.navigationClient,\n this.performanceClient,\n this.nativeExtensionProvider,\n correlationId\n );\n }\n\n /**\n * Returns new instance of the Silent Refresh Interaction Client\n */\n protected createSilentRefreshClient(\n correlationId?: string\n ): SilentRefreshClient {\n return new SilentRefreshClient(\n this.config,\n this.browserStorage,\n this.browserCrypto,\n this.logger,\n this.eventHandler,\n this.navigationClient,\n this.performanceClient,\n this.nativeExtensionProvider,\n correlationId\n );\n }\n\n /**\n * Returns new instance of the Silent AuthCode Interaction Client\n */\n protected createSilentAuthCodeClient(\n correlationId?: string\n ): SilentAuthCodeClient {\n return new SilentAuthCodeClient(\n this.config,\n this.browserStorage,\n this.browserCrypto,\n this.logger,\n this.eventHandler,\n this.navigationClient,\n ApiId.acquireTokenByCode,\n this.performanceClient,\n this.nativeExtensionProvider,\n correlationId\n );\n }\n\n /**\n * Adds event callbacks to array\n * @param callback\n */\n addEventCallback(\n callback: EventCallbackFunction,\n eventTypes?: Array\n ): string | null {\n return this.eventHandler.addEventCallback(callback, eventTypes);\n }\n\n /**\n * Removes callback with provided id from callback array\n * @param callbackId\n */\n removeEventCallback(callbackId: string): void {\n this.eventHandler.removeEventCallback(callbackId);\n }\n\n /**\n * Registers a callback to receive performance events.\n *\n * @param {PerformanceCallbackFunction} callback\n * @returns {string}\n */\n addPerformanceCallback(callback: PerformanceCallbackFunction): string {\n BrowserUtils.blockNonBrowserEnvironment();\n return this.performanceClient.addPerformanceCallback(callback);\n }\n\n /**\n * Removes a callback registered with addPerformanceCallback.\n *\n * @param {string} callbackId\n * @returns {boolean}\n */\n removePerformanceCallback(callbackId: string): boolean {\n return this.performanceClient.removePerformanceCallback(callbackId);\n }\n\n /**\n * Adds event listener that emits an event when a user account is added or removed from localstorage in a different browser tab or window\n */\n enableAccountStorageEvents(): void {\n if (typeof window === \"undefined\") {\n return;\n }\n\n if (!this.listeningToStorageEvents) {\n this.logger.verbose(\"Adding account storage listener.\");\n this.listeningToStorageEvents = true;\n window.addEventListener(\"storage\", this.handleAccountCacheChange);\n } else {\n this.logger.verbose(\"Account storage listener already registered.\");\n }\n }\n\n /**\n * Removes event listener that emits an event when a user account is added or removed from localstorage in a different browser tab or window\n */\n disableAccountStorageEvents(): void {\n if (typeof window === \"undefined\") {\n return;\n }\n\n if (this.listeningToStorageEvents) {\n this.logger.verbose(\"Removing account storage listener.\");\n window.removeEventListener(\n \"storage\",\n this.handleAccountCacheChange\n );\n this.listeningToStorageEvents = false;\n } else {\n this.logger.verbose(\"No account storage listener registered.\");\n }\n }\n\n /**\n * Emit account added/removed events when cached accounts are changed in a different tab or frame\n */\n protected handleAccountCacheChange(e: StorageEvent): void {\n try {\n // Handle active account filter change\n if (e.key?.includes(PersistentCacheKeys.ACTIVE_ACCOUNT_FILTERS)) {\n // This event has no payload, it only signals cross-tab app instances that the results of calling getActiveAccount() will have changed\n this.eventHandler.emitEvent(EventType.ACTIVE_ACCOUNT_CHANGED);\n }\n\n // Handle account object change\n const cacheValue = e.newValue || e.oldValue;\n if (!cacheValue) {\n return;\n }\n const parsedValue = JSON.parse(cacheValue);\n if (\n typeof parsedValue !== \"object\" ||\n !AccountEntity.isAccountEntity(parsedValue)\n ) {\n return;\n }\n const accountEntity = CacheManager.toObject(\n new AccountEntity(),\n parsedValue\n );\n const accountInfo = accountEntity.getAccountInfo();\n if (!e.oldValue && e.newValue) {\n this.logger.info(\n \"Account was added to cache in a different window\"\n );\n this.eventHandler.emitEvent(\n EventType.ACCOUNT_ADDED,\n undefined,\n accountInfo\n );\n } else if (!e.newValue && e.oldValue) {\n this.logger.info(\n \"Account was removed from cache in a different window\"\n );\n this.eventHandler.emitEvent(\n EventType.ACCOUNT_REMOVED,\n undefined,\n accountInfo\n );\n }\n } catch (e) {\n return;\n }\n }\n\n /**\n * Gets the token cache for the application.\n */\n getTokenCache(): ITokenCache {\n return this.tokenCache;\n }\n\n /**\n * Returns the logger instance\n */\n public getLogger(): Logger {\n return this.logger;\n }\n\n /**\n * Replaces the default logger set in configurations with new Logger with new configurations\n * @param logger Logger instance\n */\n setLogger(logger: Logger): void {\n this.logger = logger;\n }\n\n /**\n * Called by wrapper libraries (Angular & React) to set SKU and Version passed down to telemetry, logger, etc.\n * @param sku\n * @param version\n */\n initializeWrapperLibrary(sku: WrapperSKU, version: string): void {\n // Validate the SKU passed in is one we expect\n this.browserStorage.setWrapperMetadata(sku, version);\n }\n\n /**\n * Sets navigation client\n * @param navigationClient\n */\n setNavigationClient(navigationClient: INavigationClient): void {\n this.navigationClient = navigationClient;\n }\n\n /**\n * Returns the configuration object\n */\n public getConfiguration(): BrowserConfiguration {\n return this.config;\n }\n\n /**\n * Returns the performance client\n */\n public getPerformanceClient(): IPerformanceClient {\n return this.performanceClient;\n }\n\n /**\n * Returns the browser env indicator\n */\n public isBrowserEnv(): boolean {\n return this.isBrowserEnvironment;\n }\n\n /**\n * Generates a correlation id for a request if none is provided.\n *\n * @protected\n * @param {?Partial} [request]\n * @returns {string}\n */\n protected getRequestCorrelationId(\n request?: Partial\n ): string {\n if (request?.correlationId) {\n return request.correlationId;\n }\n\n if (this.isBrowserEnvironment) {\n return createNewGuid();\n }\n\n /*\n * Included for fallback for non-browser environments,\n * and to ensure this method always returns a string.\n */\n return Constants.EMPTY_STRING;\n }\n\n // #endregion\n\n /**\n * Use when initiating the login process by redirecting the user's browser to the authorization endpoint. This function redirects the page, so\n * any code that follows this function will not execute.\n *\n * IMPORTANT: It is NOT recommended to have code that is dependent on the resolution of the Promise. This function will navigate away from the current\n * browser window. It currently returns a Promise in order to reflect the asynchronous nature of the code running in this function.\n *\n * @param request\n */\n async loginRedirect(request?: RedirectRequest): Promise {\n const correlationId: string = this.getRequestCorrelationId(request);\n this.logger.verbose(\"loginRedirect called\", correlationId);\n return this.acquireTokenRedirect({\n correlationId,\n ...(request || DEFAULT_REQUEST),\n });\n }\n\n /**\n * Use when initiating the login process via opening a popup window in the user's browser\n *\n * @param request\n *\n * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised.\n */\n loginPopup(request?: PopupRequest): Promise {\n const correlationId: string = this.getRequestCorrelationId(request);\n this.logger.verbose(\"loginPopup called\", correlationId);\n return this.acquireTokenPopup({\n correlationId,\n ...(request || DEFAULT_REQUEST),\n });\n }\n\n /**\n * Silently acquire an access token for a given set of scopes. Returns currently processing promise if parallel requests are made.\n *\n * @param {@link (SilentRequest:type)}\n * @returns {Promise.} - a promise that is fulfilled when this function has completed, or rejected if an error was raised. Returns the {@link AuthResponse} object\n */\n async acquireTokenSilent(\n request: SilentRequest\n ): Promise {\n const correlationId = this.getRequestCorrelationId(request);\n const atsMeasurement = this.performanceClient.startMeasurement(\n PerformanceEvents.AcquireTokenSilent,\n correlationId\n );\n atsMeasurement.add({\n cacheLookupPolicy: request.cacheLookupPolicy,\n scenarioId: request.scenarioId,\n });\n\n preflightCheck(this.initialized, atsMeasurement);\n this.logger.verbose(\"acquireTokenSilent called\", correlationId);\n\n const account = request.account || this.getActiveAccount();\n if (!account) {\n throw createBrowserAuthError(BrowserAuthErrorCodes.noAccountError);\n }\n atsMeasurement.add({ accountType: getAccountType(account) });\n\n const thumbprint: RequestThumbprint = {\n clientId: this.config.auth.clientId,\n authority: request.authority || Constants.EMPTY_STRING,\n scopes: request.scopes,\n homeAccountIdentifier: account.homeAccountId,\n claims: request.claims,\n authenticationScheme: request.authenticationScheme,\n resourceRequestMethod: request.resourceRequestMethod,\n resourceRequestUri: request.resourceRequestUri,\n shrClaims: request.shrClaims,\n sshKid: request.sshKid,\n shrOptions: request.shrOptions,\n };\n const silentRequestKey = JSON.stringify(thumbprint);\n\n const cachedResponse =\n this.activeSilentTokenRequests.get(silentRequestKey);\n if (typeof cachedResponse === \"undefined\") {\n this.logger.verbose(\n \"acquireTokenSilent called for the first time, storing active request\",\n correlationId\n );\n\n const response = invokeAsync(\n this.acquireTokenSilentAsync.bind(this),\n PerformanceEvents.AcquireTokenSilentAsync,\n this.logger,\n this.performanceClient,\n correlationId\n )(\n {\n ...request,\n correlationId,\n },\n account\n )\n .then((result) => {\n this.activeSilentTokenRequests.delete(silentRequestKey);\n atsMeasurement.end({\n success: true,\n fromCache: result.fromCache,\n isNativeBroker: result.fromNativeBroker,\n cacheLookupPolicy: request.cacheLookupPolicy,\n accessTokenSize: result.accessToken.length,\n idTokenSize: result.idToken.length,\n });\n return result;\n })\n .catch((error: Error) => {\n this.activeSilentTokenRequests.delete(silentRequestKey);\n atsMeasurement.end(\n {\n success: false,\n },\n error\n );\n throw error;\n });\n this.activeSilentTokenRequests.set(silentRequestKey, response);\n return {\n ...(await response),\n state: request.state,\n };\n } else {\n this.logger.verbose(\n \"acquireTokenSilent has been called previously, returning the result from the first call\",\n correlationId\n );\n // Discard measurements for memoized calls, as they are usually only a couple of ms and will artificially deflate metrics\n atsMeasurement.discard();\n return {\n ...(await cachedResponse),\n state: request.state,\n };\n }\n }\n\n /**\n * Silently acquire an access token for a given set of scopes. Will use cached token if available, otherwise will attempt to acquire a new token from the network via refresh token.\n * @param {@link (SilentRequest:type)}\n * @param {@link (AccountInfo:type)}\n * @returns {Promise.} - a promise that is fulfilled when this function has completed, or rejected if an error was raised. Returns the {@link AuthResponse}\n */\n protected async acquireTokenSilentAsync(\n request: SilentRequest & { correlationId: string },\n account: AccountInfo\n ): Promise {\n const trackPageVisibility = () =>\n this.trackPageVisibility(request.correlationId);\n this.performanceClient.addQueueMeasurement(\n PerformanceEvents.AcquireTokenSilentAsync,\n request.correlationId\n );\n\n this.eventHandler.emitEvent(\n EventType.ACQUIRE_TOKEN_START,\n InteractionType.Silent,\n request\n );\n\n if (request.correlationId) {\n this.performanceClient.incrementFields(\n { visibilityChangeCount: 0 },\n request.correlationId\n );\n }\n\n document.addEventListener(\"visibilitychange\", trackPageVisibility);\n\n const silentRequest = await invokeAsync(\n initializeSilentRequest,\n PerformanceEvents.InitializeSilentRequest,\n this.logger,\n this.performanceClient,\n request.correlationId\n )(request, account, this.config, this.performanceClient, this.logger);\n const cacheLookupPolicy =\n request.cacheLookupPolicy || CacheLookupPolicy.Default;\n\n const result = this.acquireTokenSilentNoIframe(\n silentRequest,\n cacheLookupPolicy\n ).catch(async (refreshTokenError: AuthError) => {\n const shouldTryToResolveSilently =\n checkIfRefreshTokenErrorCanBeResolvedSilently(\n refreshTokenError,\n cacheLookupPolicy\n );\n\n if (shouldTryToResolveSilently) {\n if (!this.activeIframeRequest) {\n let _resolve: (result: boolean) => void;\n // Always set the active request tracker immediately after checking it to prevent races\n this.activeIframeRequest = [\n new Promise((resolve) => {\n _resolve = resolve;\n }),\n silentRequest.correlationId,\n ];\n this.logger.verbose(\n \"Refresh token expired/invalid or CacheLookupPolicy is set to Skip, attempting acquire token by iframe.\",\n silentRequest.correlationId\n );\n return invokeAsync(\n this.acquireTokenBySilentIframe.bind(this),\n PerformanceEvents.AcquireTokenBySilentIframe,\n this.logger,\n this.performanceClient,\n silentRequest.correlationId\n )(silentRequest)\n .then((iframeResult) => {\n _resolve(true);\n return iframeResult;\n })\n .catch((e) => {\n _resolve(false);\n throw e;\n })\n .finally(() => {\n this.activeIframeRequest = undefined;\n });\n } else if (cacheLookupPolicy !== CacheLookupPolicy.Skip) {\n const [activePromise, activeCorrelationId] =\n this.activeIframeRequest;\n this.logger.verbose(\n `Iframe request is already in progress, awaiting resolution for request with correlationId: ${activeCorrelationId}`,\n silentRequest.correlationId\n );\n const awaitConcurrentIframeMeasure =\n this.performanceClient.startMeasurement(\n PerformanceEvents.AwaitConcurrentIframe,\n silentRequest.correlationId\n );\n awaitConcurrentIframeMeasure.add({\n awaitIframeCorrelationId: activeCorrelationId,\n });\n\n const activePromiseResult = await activePromise;\n awaitConcurrentIframeMeasure.end({\n success: activePromiseResult,\n });\n if (activePromiseResult) {\n this.logger.verbose(\n `Parallel iframe request with correlationId: ${activeCorrelationId} succeeded. Retrying cache and/or RT redemption`,\n silentRequest.correlationId\n );\n // Retry cache lookup and/or RT exchange after iframe completes\n return this.acquireTokenSilentNoIframe(\n silentRequest,\n cacheLookupPolicy\n );\n } else {\n this.logger.info(\n `Iframe request with correlationId: ${activeCorrelationId} failed. Interaction is required.`\n );\n // If previous iframe request failed, it's unlikely to succeed this time. Throw original error.\n throw refreshTokenError;\n }\n } else {\n // Cache policy set to skip and another iframe request is already in progress\n this.logger.warning(\n \"Another iframe request is currently in progress and CacheLookupPolicy is set to Skip. This may result in degraded performance and/or reliability for both calls. Please consider changing the CacheLookupPolicy to take advantage of request queuing and token cache.\",\n silentRequest.correlationId\n );\n return invokeAsync(\n this.acquireTokenBySilentIframe.bind(this),\n PerformanceEvents.AcquireTokenBySilentIframe,\n this.logger,\n this.performanceClient,\n silentRequest.correlationId\n )(silentRequest);\n }\n } else {\n // Error cannot be silently resolved or iframe renewal is not allowed, interaction required\n throw refreshTokenError;\n }\n });\n\n return result\n .then((response) => {\n this.eventHandler.emitEvent(\n EventType.ACQUIRE_TOKEN_SUCCESS,\n InteractionType.Silent,\n response\n );\n if (request.correlationId) {\n this.performanceClient.addFields(\n {\n fromCache: response.fromCache,\n isNativeBroker: response.fromNativeBroker,\n },\n request.correlationId\n );\n }\n\n return response;\n })\n .catch((tokenRenewalError: Error) => {\n this.eventHandler.emitEvent(\n EventType.ACQUIRE_TOKEN_FAILURE,\n InteractionType.Silent,\n null,\n tokenRenewalError\n );\n throw tokenRenewalError;\n })\n .finally(() => {\n document.removeEventListener(\n \"visibilitychange\",\n trackPageVisibility\n );\n });\n }\n\n /**\n * AcquireTokenSilent without the iframe fallback. This is used to enable the correct fallbacks in cases where there's a potential for multiple silent requests to be made in parallel and prevent those requests from making concurrent iframe requests.\n * @param silentRequest\n * @param cacheLookupPolicy\n * @returns\n */\n private async acquireTokenSilentNoIframe(\n silentRequest: CommonSilentFlowRequest,\n cacheLookupPolicy: CacheLookupPolicy\n ): Promise {\n if (\n NativeMessageHandler.isNativeAvailable(\n this.config,\n this.logger,\n this.nativeExtensionProvider,\n silentRequest.authenticationScheme\n ) &&\n silentRequest.account.nativeAccountId\n ) {\n this.logger.verbose(\n \"acquireTokenSilent - attempting to acquire token from native platform\"\n );\n return this.acquireTokenNative(\n silentRequest,\n ApiId.acquireTokenSilent_silentFlow\n ).catch(async (e: AuthError) => {\n // If native token acquisition fails for availability reasons fallback to web flow\n if (e instanceof NativeAuthError && isFatalNativeAuthError(e)) {\n this.logger.verbose(\n \"acquireTokenSilent - native platform unavailable, falling back to web flow\"\n );\n this.nativeExtensionProvider = undefined; // Prevent future requests from continuing to attempt\n\n // Cache will not contain tokens, given that previous WAM requests succeeded. Skip cache and RT renewal and go straight to iframe renewal\n throw createClientAuthError(\n ClientAuthErrorCodes.tokenRefreshRequired\n );\n }\n throw e;\n });\n } else {\n this.logger.verbose(\n \"acquireTokenSilent - attempting to acquire token from web flow\"\n );\n return invokeAsync(\n this.acquireTokenFromCache.bind(this),\n PerformanceEvents.AcquireTokenFromCache,\n this.logger,\n this.performanceClient,\n silentRequest.correlationId\n )(silentRequest, cacheLookupPolicy).catch(\n (cacheError: AuthError) => {\n if (cacheLookupPolicy === CacheLookupPolicy.AccessToken) {\n throw cacheError;\n }\n\n this.eventHandler.emitEvent(\n EventType.ACQUIRE_TOKEN_NETWORK_START,\n InteractionType.Silent,\n silentRequest\n );\n\n return invokeAsync(\n this.acquireTokenByRefreshToken.bind(this),\n PerformanceEvents.AcquireTokenByRefreshToken,\n this.logger,\n this.performanceClient,\n silentRequest.correlationId\n )(silentRequest, cacheLookupPolicy);\n }\n );\n }\n }\n}\n\n/**\n * Determines whether an error thrown by the refresh token endpoint can be resolved without interaction\n * @param refreshTokenError\n * @param silentRequest\n * @param cacheLookupPolicy\n * @returns\n */\nfunction checkIfRefreshTokenErrorCanBeResolvedSilently(\n refreshTokenError: AuthError,\n cacheLookupPolicy: CacheLookupPolicy\n): boolean {\n const noInteractionRequired = !(\n refreshTokenError instanceof InteractionRequiredAuthError &&\n // For refresh token errors, bad_token does not always require interaction (silently resolvable)\n refreshTokenError.subError !==\n InteractionRequiredAuthErrorCodes.badToken\n );\n\n // Errors that result when the refresh token needs to be replaced\n const refreshTokenRefreshRequired =\n refreshTokenError.errorCode === BrowserConstants.INVALID_GRANT_ERROR ||\n refreshTokenError.errorCode ===\n ClientAuthErrorCodes.tokenRefreshRequired;\n\n // Errors that may be resolved before falling back to interaction (through iframe renewal)\n const isSilentlyResolvable =\n (noInteractionRequired && refreshTokenRefreshRequired) ||\n refreshTokenError.errorCode ===\n InteractionRequiredAuthErrorCodes.noTokensFound ||\n refreshTokenError.errorCode ===\n InteractionRequiredAuthErrorCodes.refreshTokenExpired;\n\n // Only these policies allow for an iframe renewal attempt\n const tryIframeRenewal = iFrameRenewalPolicies.includes(cacheLookupPolicy);\n\n return isSilentlyResolvable && tryIframeRenewal;\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { AccountInfo, AccountFilter, Logger } from \"@azure/msal-common/browser\";\nimport { BrowserCacheManager } from \"./BrowserCacheManager.js\";\n\n/**\n * Returns all the accounts in the cache that match the optional filter. If no filter is provided, all accounts are returned.\n * @param accountFilter - (Optional) filter to narrow down the accounts returned\n * @returns Array of AccountInfo objects in cache\n */\nexport function getAllAccounts(\n logger: Logger,\n browserStorage: BrowserCacheManager,\n isInBrowser: boolean,\n accountFilter?: AccountFilter\n): AccountInfo[] {\n logger.verbose(\"getAllAccounts called\");\n return isInBrowser ? browserStorage.getAllAccounts(accountFilter) : [];\n}\n\n/**\n * Returns the first account found in the cache that matches the account filter passed in.\n * @param accountFilter\n * @returns The first account found in the cache matching the provided filter or null if no account could be found.\n */\nexport function getAccount(\n accountFilter: AccountFilter,\n logger: Logger,\n browserStorage: BrowserCacheManager\n): AccountInfo | null {\n logger.trace(\"getAccount called\");\n if (Object.keys(accountFilter).length === 0) {\n logger.warning(\"getAccount: No accountFilter provided\");\n return null;\n }\n\n const account: AccountInfo | null =\n browserStorage.getAccountInfoFilteredBy(accountFilter);\n\n if (account) {\n logger.verbose(\n \"getAccount: Account matching provided filter found, returning\"\n );\n return account;\n } else {\n logger.verbose(\"getAccount: No matching account found, returning null\");\n return null;\n }\n}\n\n/**\n * Returns the signed in account matching username.\n * (the account object is created at the time of successful login)\n * or null when no matching account is found.\n * This API is provided for convenience but getAccountById should be used for best reliability\n * @param username\n * @returns The account object stored in MSAL\n */\nexport function getAccountByUsername(\n username: string,\n logger: Logger,\n browserStorage: BrowserCacheManager\n): AccountInfo | null {\n logger.trace(\"getAccountByUsername called\");\n if (!username) {\n logger.warning(\"getAccountByUsername: No username provided\");\n return null;\n }\n\n const account = browserStorage.getAccountInfoFilteredBy({\n username,\n });\n if (account) {\n logger.verbose(\n \"getAccountByUsername: Account matching username found, returning\"\n );\n logger.verbosePii(\n `getAccountByUsername: Returning signed-in accounts matching username: ${username}`\n );\n return account;\n } else {\n logger.verbose(\n \"getAccountByUsername: No matching account found, returning null\"\n );\n return null;\n }\n}\n\n/**\n * Returns the signed in account matching homeAccountId.\n * (the account object is created at the time of successful login)\n * or null when no matching account is found\n * @param homeAccountId\n * @returns The account object stored in MSAL\n */\nexport function getAccountByHomeId(\n homeAccountId: string,\n logger: Logger,\n browserStorage: BrowserCacheManager\n): AccountInfo | null {\n logger.trace(\"getAccountByHomeId called\");\n if (!homeAccountId) {\n logger.warning(\"getAccountByHomeId: No homeAccountId provided\");\n return null;\n }\n\n const account = browserStorage.getAccountInfoFilteredBy({\n homeAccountId,\n });\n if (account) {\n logger.verbose(\n \"getAccountByHomeId: Account matching homeAccountId found, returning\"\n );\n logger.verbosePii(\n `getAccountByHomeId: Returning signed-in accounts matching homeAccountId: ${homeAccountId}`\n );\n return account;\n } else {\n logger.verbose(\n \"getAccountByHomeId: No matching account found, returning null\"\n );\n return null;\n }\n}\n\n/**\n * Returns the signed in account matching localAccountId.\n * (the account object is created at the time of successful login)\n * or null when no matching account is found\n * @param localAccountId\n * @returns The account object stored in MSAL\n */\nexport function getAccountByLocalId(\n localAccountId: string,\n logger: Logger,\n browserStorage: BrowserCacheManager\n): AccountInfo | null {\n logger.trace(\"getAccountByLocalId called\");\n if (!localAccountId) {\n logger.warning(\"getAccountByLocalId: No localAccountId provided\");\n return null;\n }\n\n const account = browserStorage.getAccountInfoFilteredBy({\n localAccountId,\n });\n if (account) {\n logger.verbose(\n \"getAccountByLocalId: Account matching localAccountId found, returning\"\n );\n logger.verbosePii(\n `getAccountByLocalId: Returning signed-in accounts matching localAccountId: ${localAccountId}`\n );\n return account;\n } else {\n logger.verbose(\n \"getAccountByLocalId: No matching account found, returning null\"\n );\n return null;\n }\n}\n\n/**\n * Sets the account to use as the active account. If no account is passed to the acquireToken APIs, then MSAL will use this active account.\n * @param account\n */\nexport function setActiveAccount(\n account: AccountInfo | null,\n browserStorage: BrowserCacheManager\n): void {\n browserStorage.setActiveAccount(account);\n}\n\n/**\n * Gets the currently active account\n */\nexport function getActiveAccount(\n browserStorage: BrowserCacheManager\n): AccountInfo | null {\n return browserStorage.getActiveAccount();\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { ITokenCache } from \"../cache/ITokenCache.js\";\nimport { INavigationClient } from \"../navigation/INavigationClient.js\";\nimport { AuthorizationCodeRequest } from \"../request/AuthorizationCodeRequest.js\";\nimport { PopupRequest } from \"../request/PopupRequest.js\";\nimport { RedirectRequest } from \"../request/RedirectRequest.js\";\nimport { SilentRequest } from \"../request/SilentRequest.js\";\nimport { WrapperSKU } from \"../utils/BrowserConstants.js\";\nimport { IPublicClientApplication } from \"./IPublicClientApplication.js\";\nimport { IController } from \"../controllers/IController.js\";\nimport {\n PerformanceCallbackFunction,\n AccountInfo,\n AccountFilter,\n Logger,\n} from \"@azure/msal-common/browser\";\nimport { EndSessionRequest } from \"../request/EndSessionRequest.js\";\nimport { SsoSilentRequest } from \"../request/SsoSilentRequest.js\";\nimport * as ControllerFactory from \"../controllers/ControllerFactory.js\";\nimport { StandardController } from \"../controllers/StandardController.js\";\nimport {\n BrowserConfiguration,\n Configuration,\n} from \"../config/Configuration.js\";\nimport { StandardOperatingContext } from \"../operatingcontext/StandardOperatingContext.js\";\nimport { AuthenticationResult } from \"../response/AuthenticationResult.js\";\nimport { EventCallbackFunction } from \"../event/EventMessage.js\";\nimport { ClearCacheRequest } from \"../request/ClearCacheRequest.js\";\nimport { EndSessionPopupRequest } from \"../request/EndSessionPopupRequest.js\";\nimport { NestedAppAuthController } from \"../controllers/NestedAppAuthController.js\";\nimport { NestedAppOperatingContext } from \"../operatingcontext/NestedAppOperatingContext.js\";\nimport { InitializeApplicationRequest } from \"../request/InitializeApplicationRequest.js\";\nimport { EventType } from \"../event/EventType.js\";\n\n/**\n * The PublicClientApplication class is the object exposed by the library to perform authentication and authorization functions in Single Page Applications\n * to obtain JWT tokens as described in the OAuth 2.0 Authorization Code Flow with PKCE specification.\n */\nexport class PublicClientApplication implements IPublicClientApplication {\n protected controller: IController;\n\n /**\n * Creates StandardController and passes it to the PublicClientApplication\n *\n * @param configuration {Configuration}\n */\n public static async createPublicClientApplication(\n configuration: Configuration\n ): Promise {\n const controller = await ControllerFactory.createV3Controller(\n configuration\n );\n const pca = new PublicClientApplication(configuration, controller);\n\n return pca;\n }\n\n /**\n * @constructor\n * Constructor for the PublicClientApplication used to instantiate the PublicClientApplication object\n *\n * Important attributes in the Configuration object for auth are:\n * - clientID: the application ID of your application. You can obtain one by registering your application with our Application registration portal : https://portal.azure.com/#blade/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/RegisteredAppsPreview\n * - authority: the authority URL for your application.\n * - redirect_uri: the uri of your application registered in the portal.\n *\n * In Azure AD, authority is a URL indicating the Azure active directory that MSAL uses to obtain tokens.\n * It is of the form https://login.microsoftonline.com/{Enter_the_Tenant_Info_Here}\n * If your application supports Accounts in one organizational directory, replace \"Enter_the_Tenant_Info_Here\" value with the Tenant Id or Tenant name (for example, contoso.microsoft.com).\n * If your application supports Accounts in any organizational directory, replace \"Enter_the_Tenant_Info_Here\" value with organizations.\n * If your application supports Accounts in any organizational directory and personal Microsoft accounts, replace \"Enter_the_Tenant_Info_Here\" value with common.\n * To restrict support to Personal Microsoft accounts only, replace \"Enter_the_Tenant_Info_Here\" value with consumers.\n *\n * In Azure B2C, authority is of the form https://{instance}/tfp/{tenant}/{policyName}/\n * Full B2C functionality will be available in this library in future versions.\n *\n * @param configuration Object for the MSAL PublicClientApplication instance\n * @param IController Optional parameter to explictly set the controller. (Will be removed when we remove public constructor)\n */\n public constructor(configuration: Configuration, controller?: IController) {\n this.controller =\n controller ||\n new StandardController(new StandardOperatingContext(configuration));\n }\n\n /**\n * Initializer function to perform async startup tasks such as connecting to WAM extension\n * @param request {?InitializeApplicationRequest}\n */\n async initialize(request?: InitializeApplicationRequest): Promise {\n return this.controller.initialize(request);\n }\n\n /**\n * Use when you want to obtain an access_token for your API via opening a popup window in the user's browser\n *\n * @param request\n *\n * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised.\n */\n async acquireTokenPopup(\n request: PopupRequest\n ): Promise {\n return this.controller.acquireTokenPopup(request);\n }\n\n /**\n * Use when you want to obtain an access_token for your API by redirecting the user's browser window to the authorization endpoint. This function redirects\n * the page, so any code that follows this function will not execute.\n *\n * IMPORTANT: It is NOT recommended to have code that is dependent on the resolution of the Promise. This function will navigate away from the current\n * browser window. It currently returns a Promise in order to reflect the asynchronous nature of the code running in this function.\n *\n * @param request\n */\n acquireTokenRedirect(request: RedirectRequest): Promise {\n return this.controller.acquireTokenRedirect(request);\n }\n\n /**\n * Silently acquire an access token for a given set of scopes. Returns currently processing promise if parallel requests are made.\n *\n * @param {@link (SilentRequest:type)}\n * @returns {Promise.} - a promise that is fulfilled when this function has completed, or rejected if an error was raised. Returns the {@link AuthenticationResult} object\n */\n acquireTokenSilent(\n silentRequest: SilentRequest\n ): Promise {\n return this.controller.acquireTokenSilent(silentRequest);\n }\n\n /**\n * This function redeems an authorization code (passed as code) from the eSTS token endpoint.\n * This authorization code should be acquired server-side using a confidential client to acquire a spa_code.\n * This API is not indended for normal authorization code acquisition and redemption.\n *\n * Redemption of this authorization code will not require PKCE, as it was acquired by a confidential client.\n *\n * @param request {@link AuthorizationCodeRequest}\n * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised.\n */\n acquireTokenByCode(\n request: AuthorizationCodeRequest\n ): Promise {\n return this.controller.acquireTokenByCode(request);\n }\n\n /**\n * Adds event callbacks to array\n * @param callback\n * @param eventTypes\n */\n addEventCallback(\n callback: EventCallbackFunction,\n eventTypes?: Array\n ): string | null {\n return this.controller.addEventCallback(callback, eventTypes);\n }\n\n /**\n * Removes callback with provided id from callback array\n * @param callbackId\n */\n removeEventCallback(callbackId: string): void {\n return this.controller.removeEventCallback(callbackId);\n }\n\n /**\n * Registers a callback to receive performance events.\n *\n * @param {PerformanceCallbackFunction} callback\n * @returns {string}\n */\n addPerformanceCallback(callback: PerformanceCallbackFunction): string {\n return this.controller.addPerformanceCallback(callback);\n }\n\n /**\n * Removes a callback registered with addPerformanceCallback.\n *\n * @param {string} callbackId\n * @returns {boolean}\n */\n removePerformanceCallback(callbackId: string): boolean {\n return this.controller.removePerformanceCallback(callbackId);\n }\n\n /**\n * Adds event listener that emits an event when a user account is added or removed from localstorage in a different browser tab or window\n */\n enableAccountStorageEvents(): void {\n this.controller.enableAccountStorageEvents();\n }\n\n /**\n * Removes event listener that emits an event when a user account is added or removed from localstorage in a different browser tab or window\n */\n disableAccountStorageEvents(): void {\n this.controller.disableAccountStorageEvents();\n }\n\n /**\n * Returns the first account found in the cache that matches the account filter passed in.\n * @param accountFilter\n * @returns The first account found in the cache matching the provided filter or null if no account could be found.\n */\n getAccount(accountFilter: AccountFilter): AccountInfo | null {\n return this.controller.getAccount(accountFilter);\n }\n\n /**\n * Returns the signed in account matching homeAccountId.\n * (the account object is created at the time of successful login)\n * or null when no matching account is found\n * @param homeAccountId\n * @returns The account object stored in MSAL\n * @deprecated - Use getAccount instead\n */\n getAccountByHomeId(homeAccountId: string): AccountInfo | null {\n return this.controller.getAccountByHomeId(homeAccountId);\n }\n\n /**\n * Returns the signed in account matching localAccountId.\n * (the account object is created at the time of successful login)\n * or null when no matching account is found\n * @param localAccountId\n * @returns The account object stored in MSAL\n * @deprecated - Use getAccount instead\n */\n getAccountByLocalId(localId: string): AccountInfo | null {\n return this.controller.getAccountByLocalId(localId);\n }\n\n /**\n * Returns the signed in account matching username.\n * (the account object is created at the time of successful login)\n * or null when no matching account is found.\n * This API is provided for convenience but getAccountById should be used for best reliability\n * @param userName\n * @returns The account object stored in MSAL\n * @deprecated - Use getAccount instead\n */\n getAccountByUsername(userName: string): AccountInfo | null {\n return this.controller.getAccountByUsername(userName);\n }\n\n /**\n * Returns all the accounts in the cache that match the optional filter. If no filter is provided, all accounts are returned.\n * @param accountFilter - (Optional) filter to narrow down the accounts returned\n * @returns Array of AccountInfo objects in cache\n */\n getAllAccounts(accountFilter?: AccountFilter): AccountInfo[] {\n return this.controller.getAllAccounts(accountFilter);\n }\n\n /**\n * Event handler function which allows users to fire events after the PublicClientApplication object\n * has loaded during redirect flows. This should be invoked on all page loads involved in redirect\n * auth flows.\n * @param hash Hash to process. Defaults to the current value of window.location.hash. Only needs to be provided explicitly if the response to be handled is not contained in the current value.\n * @returns Token response or null. If the return value is null, then no auth redirect was detected.\n */\n handleRedirectPromise(\n hash?: string | undefined\n ): Promise {\n return this.controller.handleRedirectPromise(hash);\n }\n\n /**\n * Use when initiating the login process via opening a popup window in the user's browser\n *\n * @param request\n *\n * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised.\n */\n loginPopup(\n request?: PopupRequest | undefined\n ): Promise {\n return this.controller.loginPopup(request);\n }\n\n /**\n * Use when initiating the login process by redirecting the user's browser to the authorization endpoint. This function redirects the page, so\n * any code that follows this function will not execute.\n *\n * IMPORTANT: It is NOT recommended to have code that is dependent on the resolution of the Promise. This function will navigate away from the current\n * browser window. It currently returns a Promise in order to reflect the asynchronous nature of the code running in this function.\n *\n * @param request\n */\n loginRedirect(request?: RedirectRequest | undefined): Promise {\n return this.controller.loginRedirect(request);\n }\n\n /**\n * Deprecated logout function. Use logoutRedirect or logoutPopup instead\n * @param logoutRequest\n * @deprecated\n */\n logout(logoutRequest?: EndSessionRequest): Promise {\n return this.controller.logout(logoutRequest);\n }\n\n /**\n * Use to log out the current user, and redirect the user to the postLogoutRedirectUri.\n * Default behaviour is to redirect the user to `window.location.href`.\n * @param logoutRequest\n */\n logoutRedirect(logoutRequest?: EndSessionRequest): Promise {\n return this.controller.logoutRedirect(logoutRequest);\n }\n\n /**\n * Clears local cache for the current user then opens a popup window prompting the user to sign-out of the server\n * @param logoutRequest\n */\n logoutPopup(logoutRequest?: EndSessionPopupRequest): Promise {\n return this.controller.logoutPopup(logoutRequest);\n }\n\n /**\n * This function uses a hidden iframe to fetch an authorization code from the eSTS. There are cases where this may not work:\n * - Any browser using a form of Intelligent Tracking Prevention\n * - If there is not an established session with the service\n *\n * In these cases, the request must be done inside a popup or full frame redirect.\n *\n * For the cases where interaction is required, you cannot send a request with prompt=none.\n *\n * If your refresh token has expired, you can use this function to fetch a new set of tokens silently as long as\n * you session on the server still exists.\n * @param request {@link SsoSilentRequest}\n *\n * @returns A promise that is fulfilled when this function has completed, or rejected if an error was raised.\n */\n ssoSilent(request: SsoSilentRequest): Promise {\n return this.controller.ssoSilent(request);\n }\n\n /**\n * Gets the token cache for the application.\n */\n getTokenCache(): ITokenCache {\n return this.controller.getTokenCache();\n }\n\n /**\n * Returns the logger instance\n */\n getLogger(): Logger {\n return this.controller.getLogger();\n }\n\n /**\n * Replaces the default logger set in configurations with new Logger with new configurations\n * @param logger Logger instance\n */\n setLogger(logger: Logger): void {\n this.controller.setLogger(logger);\n }\n\n /**\n * Sets the account to use as the active account. If no account is passed to the acquireToken APIs, then MSAL will use this active account.\n * @param account\n */\n setActiveAccount(account: AccountInfo | null): void {\n this.controller.setActiveAccount(account);\n }\n\n /**\n * Gets the currently active account\n */\n getActiveAccount(): AccountInfo | null {\n return this.controller.getActiveAccount();\n }\n\n /**\n * Called by wrapper libraries (Angular & React) to set SKU and Version passed down to telemetry, logger, etc.\n * @param sku\n * @param version\n */\n initializeWrapperLibrary(sku: WrapperSKU, version: string): void {\n return this.controller.initializeWrapperLibrary(sku, version);\n }\n\n /**\n * Sets navigation client\n * @param navigationClient\n */\n setNavigationClient(navigationClient: INavigationClient): void {\n this.controller.setNavigationClient(navigationClient);\n }\n\n /**\n * Returns the configuration object\n * @internal\n */\n getConfiguration(): BrowserConfiguration {\n return this.controller.getConfiguration();\n }\n\n /**\n * Hydrates cache with the tokens and account in the AuthenticationResult object\n * @param result\n * @param request - The request object that was used to obtain the AuthenticationResult\n * @returns\n */\n async hydrateCache(\n result: AuthenticationResult,\n request:\n | SilentRequest\n | SsoSilentRequest\n | RedirectRequest\n | PopupRequest\n ): Promise {\n return this.controller.hydrateCache(result, request);\n }\n\n /**\n * Clears tokens and account from the browser cache.\n * @param logoutRequest\n */\n clearCache(logoutRequest?: ClearCacheRequest): Promise {\n return this.controller.clearCache(logoutRequest);\n }\n}\n\n/**\n * creates NestedAppAuthController and passes it to the PublicClientApplication,\n * falls back to StandardController if NestedAppAuthController is not available\n *\n * @param configuration\n * @returns IPublicClientApplication\n *\n */\nexport async function createNestablePublicClientApplication(\n configuration: Configuration\n): Promise {\n const nestedAppAuth = new NestedAppOperatingContext(configuration);\n await nestedAppAuth.initialize();\n\n if (nestedAppAuth.isAvailable()) {\n const controller = new NestedAppAuthController(nestedAppAuth);\n return new PublicClientApplication(configuration, controller);\n }\n\n return createStandardPublicClientApplication(configuration);\n}\n\n/**\n * creates PublicClientApplication using StandardController\n *\n * @param configuration\n * @returns IPublicClientApplication\n *\n */\nexport async function createStandardPublicClientApplication(\n configuration: Configuration\n): Promise {\n const pca = new PublicClientApplication(configuration);\n await pca.initialize();\n return pca;\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { NestedAppOperatingContext } from \"../operatingcontext/NestedAppOperatingContext.js\";\nimport { StandardOperatingContext } from \"../operatingcontext/StandardOperatingContext.js\";\nimport { IController } from \"./IController.js\";\nimport { Configuration } from \"../config/Configuration.js\";\nimport { StandardController } from \"./StandardController.js\";\nimport { NestedAppAuthController } from \"./NestedAppAuthController.js\";\nimport { InitializeApplicationRequest } from \"../request/InitializeApplicationRequest.js\";\n\nexport async function createV3Controller(\n config: Configuration,\n request?: InitializeApplicationRequest\n): Promise {\n const standard = new StandardOperatingContext(config);\n\n await standard.initialize();\n return StandardController.createController(standard, request);\n}\n\nexport async function createController(\n config: Configuration\n): Promise {\n const standard = new StandardOperatingContext(config);\n const nestedApp = new NestedAppOperatingContext(config);\n\n const operatingContexts = [standard.initialize(), nestedApp.initialize()];\n\n await Promise.all(operatingContexts);\n\n if (nestedApp.isAvailable() && config.auth.supportsNestedAppAuth) {\n return NestedAppAuthController.createController(nestedApp);\n } else if (standard.isAvailable()) {\n return StandardController.createController(standard);\n } else {\n // Since neither of the actual operating contexts are available keep the UnknownOperatingContextController\n return null;\n }\n}\n","/*\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License.\r\n */\r\n\r\nimport { LogLevel, PublicClientApplication } from '@azure/msal-browser'\r\n\r\n/**\r\n * Configuration object to be passed to MSAL instance on creation.\r\n * For a full list of MSAL.js configuration parameters, visit:\r\n * https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-browser/docs/configuration.md\r\n */\r\nexport const msalConfig = {\r\n auth: {\r\n clientId: `${process.env.REACT_APP_DEFAULT_CLIENTID}`,\r\n authority: `${process.env.REACT_APP_DEFAULT_AUTHORITY}`,\r\n redirectUri: `${process.env.REACT_APP_DEFAULT_CLIENTROOT}/pcs`,\r\n },\r\n cache: {\r\n cacheLocation: 'localStorage', // This configures where your cache will be stored\r\n storeAuthStateInCookie: false, // Set this to \"true\" if you are having issues on IE11 or Edge\r\n },\r\n system: {\r\n loggerOptions: {\r\n loggerCallback: (level: any, message: any, containsPii: any) => {\r\n if (containsPii) {\r\n return\r\n }\r\n switch (level) {\r\n case LogLevel.Error:\r\n console.error(message)\r\n return\r\n case LogLevel.Info:\r\n console.info(message)\r\n return\r\n case LogLevel.Verbose:\r\n console.debug(message)\r\n return\r\n case LogLevel.Warning:\r\n console.warn(message)\r\n return\r\n }\r\n },\r\n },\r\n },\r\n}\r\n\r\n/**\r\n * Scopes you add here will be prompted for user consent during sign-in.\r\n * By default, MSAL.js will add OIDC scopes (openid, profile, email) to any login request.\r\n * For more information about OIDC scopes, visit:\r\n * https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-permissions-and-consent#openid-connect-scopes\r\n */\r\nexport const loginRequest = {\r\n scopes: [`User.Read`],\r\n}\r\n\r\n/**\r\n * Add here the scopes to request when obtaining an access token for MS Graph API. For more information, see:\r\n * https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-browser/docs/resources-and-scopes.md\r\n */\r\nexport const graphConfig = {\r\n graphMeEndpoint: `${process.env.REACT_APP_MS_GRAPH_ENDPOINT}` + `/me`,\r\n graphEndpoint: `${process.env.REACT_APP_MS_GRAPH_ENDPOINT}`,\r\n graphSearcUserEndpoint:\r\n `${process.env.REACT_APP_MS_GRAPH_ENDPOINT}` + '/users?$search=',\r\n graphAvatarEndpoint: 'https://graph.microsoft.com/v1.0/me/photo/$value',\r\n}\r\n\r\nexport const msalInstance = new PublicClientApplication(msalConfig);","import { useEffect, useMemo } from \"react\";\r\n\r\nconst useBroadcast = ({\r\n channelName,\r\n messageHandler,\r\n}: {\r\n channelName: string;\r\n messageHandler: (message: MessageEvent) => void;\r\n}) => {\r\n const channel = useMemo(\r\n () => new BroadcastChannel(channelName),\r\n [channelName]\r\n );\r\n const receiveChannel = useMemo(\r\n () => new BroadcastChannel(channelName),\r\n [channelName]\r\n );\r\n\r\n const broadcast = (message: TInput) => {\r\n channel.postMessage(message);\r\n };\r\n\r\n useEffect(() => {\r\n channel.addEventListener(\"message\", messageHandler);\r\n receiveChannel.addEventListener(\"message\", messageHandler);\r\n\r\n return () => {\r\n channel.removeEventListener(\"message\", messageHandler);\r\n receiveChannel.removeEventListener(\"message\", messageHandler);\r\n };\r\n }, [channel, receiveChannel, messageHandler]);\r\n\r\n return {\r\n broadcast,\r\n };\r\n};\r\n\r\nexport default useBroadcast;","import React, { Fragment, useEffect, useState } from 'react'\r\nimport { Grid, Loader, Button, Modal, Image, Icon } from 'semantic-ui-react'\r\nimport Messages from '../../components/messages/Messages'\r\nimport Input from '../../containers/InputChat/InputMessage'\r\nimport { useAppDispatch } from '../../redux/store'\r\nimport { useSelector } from 'react-redux'\r\nimport {\r\n channelSetChannel,\r\n ChannelSetMessage,\r\n selectChannelArn,\r\n selectChannelMessage,\r\n selectChannelName,\r\n selectIsTranslate,\r\n selectMeetingIDOnLive,\r\n selectMessageWithLinkId,\r\n selectMetadata,\r\n selectOnHanldeClearMeeting,\r\n selectOnHanldeLeaveMeeting,\r\n SetMeetingIDOnLive,\r\n SetMessageWithLinkId,\r\n SetOnHanldeClearMeeting,\r\n SetOnHanldeLeaveMeeting,\r\n} from '../../redux/chimeSlide'\r\nimport {\r\n createMemberArn,\r\n describeChannel,\r\n listChannelMessages,\r\n MessageType,\r\n Persistence,\r\n sendChannelMessage,\r\n updateChannelMessage,\r\n updateChannelReadMarker,\r\n} from '../../api/ChimeAPI'\r\nimport './style.css'\r\nimport { selectAccount } from '../../redux/account'\r\nimport { ChannelList } from 'amazon-chime-sdk-component-library-react'\r\nimport {\r\n channelPopChannelUnreadList,\r\n selectChannelAllListState,\r\n selectChannelUnreadListState,\r\n} from '../../redux/channel'\r\nimport {\r\n createMeeting,\r\n meetingSetChannelName,\r\n selectMeetingState,\r\n} from '../../redux/meeting'\r\nimport { liveTranslateMessage } from '../../helpers/api'\r\nimport httpPCS from '../../services/HttpServicePCS'\r\nimport { CommonService } from '../../services/Common'\r\nimport ListMemberChannelModal from '../../components/modals/ListMemberChannelModal'\r\nimport { ReactComponent as Chat } from '../../assets/svg/livechat.svg'\r\nimport { ReactComponent as VoiceCall } from '../../assets/svg/call.svg'\r\nimport { ReactComponent as VoiceCallBlack } from '../../assets/svg/call_black.svg'\r\nimport { ReactComponent as CloseChannel } from '../../assets/svg/close.svg'\r\nimport { ReactComponent as Notification } from '../../assets/svg/notification.svg'\r\nimport { useTranslation } from 'react-i18next'\r\nimport ARIcon from '../../assets/AR-white.png'\r\nimport ModalSendInviteChattingChannel from '../../components/modals/ModalSendInviteChattingChannel'\r\nimport ModalSendInviteVisualConnect from '../../components/modals/ModalSendInviteVisualConnect'\r\nimport {\r\n visualConnectSetList,\r\n visualConnectSetActive,\r\n selectVisualConnectListState,\r\n visualConnectIsSendEmail,\r\n visualConnectClearList,\r\n} from '../../redux/visualConnect'\r\nimport ModalNotiEndMeetting from '../../components/modals/ModalNotiEndMeetting'\r\nimport { ReactComponent as Antendees } from '../../assets/svg/user-mouth-spreechless.svg'\r\nimport Boschicon from '../../common-components/boschIcon/Boschicon'\r\nimport { selectIsSignIn } from '../../redux/auth'\r\nimport { loginRequest, msalInstance } from '../../authConfig'\r\nimport { Buffer } from 'buffer';\r\nimport { addSelectedContactPerson, getTicketInfor, selectSelectedContactPerson, selectTicketState } from '../../redux/ticket'\r\nimport CustomLoader from '../../common-components/RDComponents/CustomLoader'\r\nimport useBroadcast from '../../hooks/useBroadcast'\r\nimport { callAvatarGraph } from '../../graph'\r\ninterface MessagesViewProps {\r\n message: any[]\r\n stopChannel: Function\r\n startChattingChannel: Function\r\n messageDelete: string\r\n}\r\n\r\nconst MessagesView = ({\r\n message,\r\n stopChannel,\r\n startChattingChannel,\r\n messageDelete\r\n}: MessagesViewProps) => {\r\n const dispatchReduxToolkit = useAppDispatch()\r\n const messages = useSelector(selectChannelMessage)\r\n const account = useSelector(selectAccount)\r\n const channelArn = useSelector(selectChannelArn)\r\n const channelName = useSelector(selectChannelName)\r\n const [statusMessageShow, setStatusMessageShow] = useState(-1) //useState(false);\r\n const meetingData = useSelector(selectMeetingState)\r\n const channelList = useSelector(selectChannelAllListState)\r\n const channelListUnread = useSelector(selectChannelUnreadListState)\r\n const visualConnectList = useSelector(selectVisualConnectListState)\r\n const [isLoading, setIsLoading] = useState(false)\r\n const [displayErrorModal, setDisplayErrorModal] = useState(false)\r\n const [errorModalMessage, setErrorModalMessage] = useState('')\r\n const [onMeetting, setOnMeetting] = useState(false)\r\n const [phoneNumber, setPhoneNumber] = useState('')\r\n const [openInviteChatModal, setOpenInviteChatModal] = useState(false)\r\n const [\r\n openInviteVisualConnectModal,\r\n setOpenInviteVisualConnectModal,\r\n ] = useState(false)\r\n const [ticketDetail, setTicketDetail] = useState()\r\n const [isInCall, setIsInCall] = useState(false)\r\n const browserLanguage = window.navigator.language\r\n const { t } = useTranslation()\r\n const channelMetaData = useSelector(selectMetadata)\r\n const isTranslate = useSelector(selectIsTranslate);\r\n const isSignIn = useSelector(selectIsSignIn);\r\n const ticketState = useSelector(selectTicketState);\r\n const [isOpenMobileMenu, setOpenMobileMenu] = useState(false)\r\n const [isOpenContactDetail, setOpenContactDetail] = useState(false)\r\n const [isOpenRequestDetails, setOpenRequestDetails] = useState(false)\r\n const selectedContactPerson = useSelector(selectSelectedContactPerson)\r\n const selectedOnHanldeClearMeeting = useSelector(selectOnHanldeClearMeeting)\r\n const selectedOnHanldeLeaveMeeting = useSelector(selectOnHanldeLeaveMeeting)\r\n const messageWithLinkId = useSelector(selectMessageWithLinkId);\r\n const selectedMeetingId = useSelector(selectMeetingIDOnLive);\r\n const [isOpenAttendees, setOpenAttendees] = useState(false)\r\n const [meetingIdState, setMeetingIdState] = useState(selectedMeetingId)\r\n const [avatarData, setAvatarData] = useState(null)\r\n const [avatarDataEmpty, setAvatarDataEmpty] = useState(true)\r\n const [onVoiceCall, setOnVoiceCall] = useState(false)\r\n const currentDomain = window.location.protocol + '//' + window.location.host;\r\n\r\n\r\n const { broadcast } = useBroadcast({\r\n channelName: \"meeting-status\",\r\n messageHandler: (message: MessageEvent) => {\r\n if (message.data !== \"\") {\r\n let messageParse = JSON.parse(message.data);\r\n switch (messageParse.type) {\r\n case 'start_metting':\r\n setOnMeetting(true)\r\n break;\r\n case 'end_metting':\r\n case 'leave_metting':\r\n setOnMeetting(false)\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n return;\r\n },\r\n });\r\n\r\n const channelGetContactPersonHandler = async (channelMetaDataParsed: any, ticketDetail: any) => {\r\n let contactPersonCiamID = channelMetaDataParsed ? channelMetaDataParsed.customerCiamId : \"\";\r\n let ticketDetailObject = ticketDetail ? ticketDetail : {};\r\n let ticketSetContactPerson: any;\r\n\r\n if (contactPersonCiamID === ticketDetailObject.ciamId) {\r\n ticketSetContactPerson = ticketDetailObject\r\n } else {\r\n let ticketContactPersonDetail = ticketDetailObject?.contactPersons?.filter((x: any) => {\r\n return contactPersonCiamID === x.ciamId\r\n })\r\n ticketSetContactPerson = ticketContactPersonDetail?.length > 0 && ticketContactPersonDetail[0];\r\n }\r\n\r\n let ticketCreatorDetail = {\r\n ciamId: ticketSetContactPerson?.ciamId || \"\",\r\n firstName: ticketSetContactPerson?.firstName || \"\",\r\n lastName: ticketSetContactPerson?.lastName || \"\",\r\n mobilePhone: ticketSetContactPerson?.mobilePhone || \"\",\r\n phoneNumber: ticketSetContactPerson?.phoneNumber || \"\",\r\n hasWSA: ticketSetContactPerson?.hasWSA || false,\r\n email: ticketSetContactPerson?.email || \"\"\r\n }\r\n dispatchReduxToolkit(addSelectedContactPerson(ticketCreatorDetail))\r\n return;\r\n }\r\n\r\n const channelIdChangeHandler = async (channel: any) => {\r\n setIsLoading(true)\r\n let channelName = channel.Name ?? \"\";\r\n let channelARN = channel.ChannelArn ?? \"\";\r\n if (channelName != \"\") {\r\n let channel = await describeChannel(\r\n channelARN,\r\n account.chimeUserId,\r\n )\r\n updateChannelReadMarker(channelARN, account.chimeUserId)\r\n if (channel && channel.Privacy !== \"PUBLIC\") {\r\n updateChannelReadMarker(channelARN, account.chimeUserId);\r\n let ticket = await dispatchReduxToolkit(\r\n getTicketInfor({ ticketId: channelName, email: account.email })\r\n );\r\n if (getTicketInfor.fulfilled.match(ticket)) {\r\n if (!ticket.payload || !ticket.payload.dataObject?.ciamId) {\r\n setIsLoading(false);\r\n setErrorModalMessage(\"Cannot find ticket\");\r\n setDisplayErrorModal(true);\r\n }\r\n }\r\n if (getTicketInfor.rejected.match(ticket)) {\r\n setErrorModalMessage(\"Cannot find ticket\");\r\n if (\r\n ticket.payload &&\r\n ticket.payload.response?.data.httpStatusCode == 403\r\n ) {\r\n setErrorModalMessage(\"Permission denied\");\r\n }\r\n setTimeout(() => {\r\n setIsLoading(false);\r\n setDisplayErrorModal(true);\r\n }, 2000);\r\n }\r\n }\r\n dispatchReduxToolkit(channelPopChannelUnreadList(channelARN))\r\n dispatchReduxToolkit(channelSetChannel(channel))\r\n setStatusMessageShow(0)\r\n }\r\n setIsLoading(false)\r\n }\r\n\r\n const getTeachnicanInfor = async (onVoiceCall: boolean = false) => {\r\n setIsLoading(true)\r\n const data = {\r\n ticketId: channelName,\r\n email: account.email,\r\n }\r\n setOnVoiceCall(onVoiceCall);\r\n if (meetingData.Meeting && meetingData.Meeting?.meetingId === '') {\r\n await httpPCS\r\n .post(`/api/Ticket/GetTicketInfor`, data)\r\n .then((res) => {\r\n setIsLoading(false)\r\n setPhoneNumber(res.data.dataObject.mobilePhone || \"\")\r\n setOpenInviteVisualConnectModal(true)\r\n })\r\n .catch((e) => {\r\n setIsLoading(false)\r\n setPhoneNumber('')\r\n setOpenInviteVisualConnectModal(true)\r\n })\r\n return\r\n }\r\n setOpenInviteVisualConnectModal(true)\r\n }\r\n\r\n const onStartMeeting = async (phoneNumber: string, isSendSMS: boolean = true) => {\r\n setOpenInviteVisualConnectModal(false)\r\n setIsLoading(true)\r\n const meeting = await dispatchReduxToolkit(createMeeting())\r\n if (createMeeting.fulfilled.match(meeting)) {\r\n let meetingId =\r\n meeting.payload.dataObject.createMeetingResponse.meeting.meetingId\r\n if (phoneNumber && isSendSMS) {\r\n await CommonService.sendSMSToStartVideoSession({\r\n Phone: phoneNumber,\r\n MeetingId: meetingId,\r\n onStartVoiceCall: onVoiceCall ? true : false\r\n })\r\n }\r\n if (phoneNumber && !isSendSMS) {\r\n await CommonService.sendEmailToStartVideoSession({\r\n subject: onVoiceCall ? 'Invitation to join Voice Call session' : 'Invitation to join Visual Connect session',\r\n mailTo: phoneNumber,\r\n message: meetingId,\r\n onStartVoiceCall: onVoiceCall ? true : false\r\n })\r\n }\r\n if (!phoneNumber || visualConnectList.phoneNumber == '') {\r\n const options = JSON.stringify({\r\n meeting: {\r\n meetingId: meetingId,\r\n pathRoute: `${currentDomain}/pcs/meeting/`,\r\n },\r\n language: browserLanguage,\r\n onStartVoiceCall: onVoiceCall ? true : false\r\n })\r\n const memberSender = { userId: account.chimeUserId }\r\n\r\n const messageRes = await sendChannelMessage(\r\n channelArn,\r\n onVoiceCall ? 'Please join voice call via ' : 'Please join video call via ',\r\n Persistence.PERSISTENT,\r\n MessageType.STANDARD,\r\n memberSender,\r\n options,\r\n onVoiceCall,\r\n onVoiceCall ? meetingId : \"\"\r\n )\r\n const messageId = messageRes ? messageRes.response?.MessageId : \"\"\r\n await dispatchReduxToolkit(SetMessageWithLinkId(messageId))\r\n await setMeetingIdState(meetingId)\r\n await dispatchReduxToolkit(SetMeetingIDOnLive(meetingId))\r\n await updateChannelReadMarker(channelArn, memberSender.userId)\r\n }\r\n await dispatchReduxToolkit(meetingSetChannelName((visualConnectList.active ? \"\" : channelName)))\r\n setIsLoading(false)\r\n await setOnMeetting(true)\r\n //check voice call or video call\r\n let meetingUrlPath = onVoiceCall ? `/pcs/meeting/${meetingId}/?user_id=${account.chimeUserId}&mtype=voice` : `/pcs/meeting/${meetingId}/?user_id=${account.chimeUserId}`;\r\n void window.open(\r\n meetingUrlPath,\r\n 'null',\r\n 'popup,width=1200,height=680,left=300,top=500, menubar=0, toolbar=0, scrollbar=1',\r\n )\r\n }\r\n if (createMeeting.rejected.match(meeting)) {\r\n setErrorModalMessage('Cannot start video session')\r\n setDisplayErrorModal(true)\r\n }\r\n }\r\n const sendEmailVisualConnect = async (email: string) => {\r\n let isSendSms = false;\r\n dispatchReduxToolkit(visualConnectIsSendEmail(true))\r\n onStartMeeting(email, isSendSms);\r\n }\r\n\r\n const onTrigger = () => {\r\n setDisplayErrorModal(false)\r\n }\r\n\r\n const onHanldeStartChattingChannel = (data: string) => {\r\n dispatchReduxToolkit(visualConnectSetList(''))\r\n dispatchReduxToolkit(visualConnectSetActive(false))\r\n dispatchReduxToolkit(visualConnectIsSendEmail(false));\r\n startChattingChannel(data)\r\n setOpenInviteChatModal(false)\r\n }\r\n\r\n const handleBackToList = () => {\r\n setStatusMessageShow(-1)\r\n setOpenMobileMenu(false)\r\n dispatchReduxToolkit(visualConnectSetActive(false))\r\n }\r\n const handleMobilestopChannel = (channelArn: any) => {\r\n setStatusMessageShow(-1)\r\n setOpenMobileMenu(false)\r\n stopChannel(channelArn)\r\n }\r\n\r\n\r\n const renderContactDetail = () => {\r\n return (\r\n
\r\n {(ticketDetail && ticketDetail !== 'PUBLIC') && (\r\n <>\r\n
\r\n

\r\n {ticketDetail.ticketDetails?.customer?.assignedAccount?.name1 || ''}\r\n

\r\n

\r\n {ticketDetail.ticketDetails?.customer?.address1 || ''}\r\n

\r\n

\r\n {ticketDetail.ticketDetails?.customer?.address2 || ''}\r\n

\r\n

\r\n {ticketDetail.ticketDetails.customer?.city || ''}\r\n

\r\n
\r\n
\r\n

\r\n {(selectedContactPerson?.firstName || '') +\r\n (selectedContactPerson?.lastName || '')}\r\n

\r\n

{selectedContactPerson?.phoneNumber || selectedContactPerson?.mobilePhone || \"\"}

\r\n

\r\n \r\n {selectedContactPerson?.email || ''}\r\n \r\n

\r\n
\r\n
\r\n

\r\n {t(\"Wsa_status_title\")}{selectedContactPerson?.hasWSA ? \"Active\" : \"Not used\"}\r\n

\r\n
\r\n \r\n )}\r\n
\r\n )\r\n }\r\n const renderRequestDetails = () => {\r\n return (\r\n
\r\n {ticketDetail && (\r\n
\r\n \r\n \r\n

{t(\"Id_panel\")}

\r\n

{t(\"Topic_panel\")}

\r\n

{t(\"Make_panel\")}

\r\n

{t(\"Model_pane\")}

\r\n

{t(\"Engine_code_panel\")}

\r\n

{t(\"Year_panel\")}

\r\n

{t(\"Vin_panel\")}

\r\n

{t(\"Plate_panel\")}

\r\n

{t(\"Hardware_panel\")}

\r\n \r\n \r\n

\r\n {\r\n ticketDetail === 'PUBLIC' ? (<>{channelName}) : (<> {ticketDetail.ticketDetails?.ticketId || '-'})\r\n }\r\n

\r\n

\r\n {ticketDetail.ticketDetails?.topic?.serviceType ||\r\n '-'}\r\n

\r\n

\r\n {ticketDetail.ticketDetails?.vehicleDetails?.carBrand || '-'}\r\n

\r\n

\r\n {ticketDetail.ticketDetails?.vehicleDetails?.carModel || '-'}\r\n

\r\n

\r\n {ticketDetail.ticketDetails?.vehicleDetails?.engineCode || '-'}\r\n

\r\n

\r\n {ticketDetail.ticketDetails?.vehicleDetails?.modelYear || '-'}\r\n

\r\n

\r\n {ticketDetail.ticketDetails?.vehicleDetails?.vin || '-'}\r\n

\r\n

\r\n {ticketDetail.ticketDetails?.vehicleDetails?.licensePlate || '-'}\r\n

\r\n

\r\n {ticketDetail.ticketDetails?.customer?.hardware ? ticketDetail.ticketDetails?.customer?.hardware[0]?.model : '-'}\r\n

\r\n
\r\n
\r\n
\r\n )}\r\n
\r\n )\r\n }\r\n\r\n //use Effect\r\n useEffect(() => {\r\n const getAvatarFormMS = async () => {\r\n if (isSignIn && !avatarData) {\r\n try {\r\n const loginResponse = await msalInstance.ssoSilent(loginRequest);\r\n if (loginResponse) {\r\n callAvatarGraph(loginResponse.accessToken).then((response) => {\r\n setAvatarData(response)\r\n setAvatarDataEmpty(false)\r\n }\r\n ).catch(() =>\r\n setAvatarDataEmpty(true)\r\n )\r\n }\r\n } catch (err) {\r\n console.error(\"Get Avatar Error ...: \", err);\r\n }\r\n }\r\n }\r\n getAvatarFormMS()\r\n }, [isSignIn, avatarData])\r\n\r\n //handle progres message after leave or end meeting\r\n useEffect(() => {\r\n if (channelArn) {\r\n if (selectedOnHanldeClearMeeting) {\r\n const metaData = {\r\n deleted: true,\r\n }\r\n const handleRemoveMessageLink = async () => {\r\n await dispatchReduxToolkit(SetMessageWithLinkId(\"\"));\r\n await dispatchReduxToolkit(SetOnHanldeClearMeeting(false));\r\n await updateChannelMessage(channelArn, messageWithLinkId, \"Deleted\", JSON.stringify(metaData), account.chimeUserId)\r\n await dispatchReduxToolkit(SetMeetingIDOnLive(\"\"));\r\n }\r\n handleRemoveMessageLink()\r\n }\r\n\r\n if (selectedOnHanldeLeaveMeeting) {\r\n const metaData = JSON.stringify({\r\n meeting: {\r\n meetingId: meetingIdState,\r\n pathRoute: `${currentDomain}/pcs/meeting/`,\r\n },\r\n language: browserLanguage,\r\n onStartVoiceCall: onVoiceCall ? true : false\r\n })\r\n\r\n const handleRemoveMessageLink = async () => {\r\n await dispatchReduxToolkit(SetMeetingIDOnLive(\"\"));\r\n await dispatchReduxToolkit(SetOnHanldeLeaveMeeting(false));\r\n await updateChannelMessage(channelArn, messageWithLinkId, t(\"Leave_meeting_meesage_Warning\"), metaData, account.chimeUserId)\r\n }\r\n handleRemoveMessageLink()\r\n }\r\n }\r\n }, [selectedOnHanldeClearMeeting, selectedOnHanldeLeaveMeeting, channelArn])\r\n\r\n useEffect(() => {\r\n const updateMessage = async () => {\r\n if (channelArn && channelArn !== '') {\r\n const newMessages = await listChannelMessages(\r\n channelArn,\r\n account?.chimeUserId,\r\n )\r\n const message_translate = await Promise.all(\r\n newMessages.Messages.map(async (message: any) => {\r\n if (\r\n createMemberArn(account.chimeUserId) !== message.Sender.Arn &&\r\n isTranslate.status\r\n ) {\r\n // const sourceLanguageCode = JSON.parse(message.Metadata)?.language || \"\";\r\n const translateMessage = await liveTranslateMessage(\r\n message.Content,\r\n isTranslate.langSource,\r\n isTranslate.langTarget,\r\n )\r\n return { ...message, Content: translateMessage }\r\n }\r\n return message\r\n }),\r\n )\r\n\r\n await dispatchReduxToolkit(\r\n ChannelSetMessage({\r\n ChannelMessages: message_translate,\r\n NextToken: newMessages.NextToken,\r\n }),\r\n )\r\n setStatusMessageShow(1)\r\n }\r\n }\r\n updateMessage()\r\n }, [channelArn, message, isTranslate])\r\n\r\n useEffect(() => {\r\n if (messageDelete) {\r\n const filterDeleteMessage = messages.ChannelMessages.filter((item) => item.MessageId !== messageDelete);\r\n dispatchReduxToolkit(\r\n ChannelSetMessage({\r\n ChannelMessages: filterDeleteMessage,\r\n NextToken: messages.NextToken,\r\n })\r\n );\r\n }\r\n }, [messageDelete])\r\n\r\n useEffect(() => {\r\n if (channelArn === '' && channelList.length > 0) {\r\n const fetchChannels = async () => {\r\n const channel = await describeChannel(\r\n channelList[0].ChannelArn,\r\n account.chimeUserId,\r\n )\r\n await channelIdChangeHandler(channel)\r\n setStatusMessageShow(0)\r\n }\r\n if (statusMessageShow !== -1) {\r\n fetchChannels()\r\n }\r\n } else if (channelArn === '' && channelList.length === 0) {\r\n setStatusMessageShow(-1)\r\n }\r\n }, [channelList])\r\n\r\n useEffect(() => {\r\n if (channelArn === '' && channelList.length === 0) {\r\n setStatusMessageShow(-1)\r\n }\r\n }, [channelList, channelArn])\r\n\r\n useEffect(() => {\r\n\r\n const getTicketInforHandler = async () => {\r\n const channelype = channelMetaData ? JSON.parse(channelMetaData)?.channelType : \"\";\r\n const channelMetaDataParsed = channelMetaData ? JSON.parse(channelMetaData) : \"\";\r\n if (channelype !== 'PUBLIC') {\r\n channelGetContactPersonHandler(channelMetaDataParsed, ticketState);\r\n setTicketDetail(ticketState)\r\n } else {\r\n setTicketDetail('PUBLIC');\r\n }\r\n }\r\n\r\n if (channelMetaData) {\r\n getTicketInforHandler()\r\n }\r\n }, [channelMetaData])\r\n\r\n useEffect(() => {\r\n\r\n const getTicketInforHandler = async () => {\r\n setTicketDetail(ticketState)\r\n }\r\n\r\n if (ticketState.ciamId) {\r\n getTicketInforHandler()\r\n }\r\n }, [ticketState])\r\n\r\n useEffect(() => {\r\n if (!meetingData.Meeting?.meetingId) {\r\n setOnMeetting(false)\r\n }\r\n }, [meetingData.Meeting?.meetingId])\r\n\r\n useEffect(() => {\r\n if (\r\n visualConnectList.phoneNumber !== '' &&\r\n visualConnectList.hasFirstStart\r\n ) {\r\n let isSendSMS = !visualConnectList.isSendEmail;\r\n onStartMeeting(visualConnectList.phoneNumber, isSendSMS);\r\n }\r\n }, [visualConnectList.phoneNumber])\r\n\r\n return (\r\n
\r\n \r\n {/* computer view */}\r\n \r\n
\r\n
\r\n
\r\n { }}\r\n icon={\r\n \r\n }\r\n >\r\n
\r\n
\r\n
\r\n {avatarData ? (\r\n \"User\r\n ) : (\r\n <>\r\n {\r\n !avatarDataEmpty ? () : ()\r\n }\r\n \r\n )}\r\n\r\n
\r\n

{account.name}

\r\n
\r\n
\r\n
\r\n
{t('Channel_List')}
\r\n \r\n {channelList.map((channel: any) => (\r\n \r\n
{\r\n dispatchReduxToolkit(visualConnectSetActive(false))\r\n if (channel.ChannelArn === channelArn) {\r\n setStatusMessageShow(1)\r\n return\r\n }\r\n channelIdChangeHandler(channel)\r\n }}>\r\n
\r\n
\r\n {\r\n JSON.parse(channel.Metadata).channelType === 'PUBLIC' ? (\r\n <>\r\n

\r\n {t('Anonymous')} ({channel.Name})\r\n

\r\n \r\n ) : (\r\n <>\r\n {JSON.parse(channel.Metadata).companyName ? (\r\n <>\r\n

\r\n {JSON.parse(channel.Metadata).fullNameCustomer} ({JSON.parse(channel.Metadata).serviceType})\r\n

\r\n

{JSON.parse(channel.Metadata).companyName}

\r\n \r\n ) : (\r\n JSON.parse(channel.Metadata).nameWithRecipient ||\r\n channel.Name\r\n )}\r\n \r\n\r\n )\r\n }\r\n
\r\n {channelListUnread.includes(channel.ChannelArn) && (\r\n
\r\n \r\n \r\n \r\n
\r\n )}\r\n
\r\n
\r\n\r\n
stopChannel(channel.ChannelArn)}>\r\n {channel.ChannelArn !== channelArn && (\r\n \r\n )}\r\n
\r\n
\r\n ))}\r\n {channelList.length == 0 &&\r\n visualConnectList.phoneNumber == '' && (\r\n

\r\n Empty list\r\n

\r\n )}\r\n {visualConnectList.phoneNumber !== '' && (\r\n \r\n
{\r\n dispatchReduxToolkit(visualConnectSetActive(true))\r\n setStatusMessageShow(0)\r\n }}>\r\n
\r\n

{t(\"Visual_Connect_Label\")}

\r\n
\r\n
\r\n\r\n
{ dispatchReduxToolkit(visualConnectClearList()) }}>\r\n \r\n
\r\n
\r\n )}\r\n \r\n
\r\n \r\n \r\n\r\n {/* No actived channel */}\r\n {statusMessageShow !== 1 && !visualConnectList.active && (\r\n <>\r\n {/* computer view */}\r\n \r\n {statusMessageShow == 0 && (\r\n
\r\n \r\n
\r\n )}\r\n {statusMessageShow == -1 && (\r\n
\r\n {t('Welcome_Label')}\r\n
\r\n )}\r\n
\r\n {/* mobile and tablet view */}\r\n \r\n
\r\n
\r\n
\r\n Hi, {account.name}!\r\n
\r\n
\r\n
\r\n {avatarData ? (\r\n \"User\r\n ) : (\r\n <>\r\n {\r\n !avatarDataEmpty ? () : ()\r\n }\r\n \r\n )}\r\n
\r\n
\r\n
\r\n
\r\n {\r\n channelList.length > 0 && (\r\n
\r\n
{t('Channel_List')}
\r\n \r\n {channelList.map((channel: any) => (\r\n \r\n
{\r\n dispatchReduxToolkit(visualConnectSetActive(false))\r\n if (channel.ChannelArn === channelArn) {\r\n setStatusMessageShow(1)\r\n return\r\n }\r\n channelIdChangeHandler(channel)\r\n }}>\r\n
\r\n
\r\n {\r\n JSON.parse(channel.Metadata).channelType === 'PUBLIC' ? (\r\n <>\r\n

\r\n {t('Anonymous')} ({channel.Name})\r\n

\r\n \r\n ) : (\r\n <>\r\n {JSON.parse(channel.Metadata).companyName ? (\r\n <>\r\n

\r\n {JSON.parse(channel.Metadata).fullNameCustomer} ({JSON.parse(channel.Metadata).serviceType})\r\n

\r\n

{JSON.parse(channel.Metadata).companyName}

\r\n \r\n ) : (\r\n JSON.parse(channel.Metadata).nameWithRecipient ||\r\n channel.Name\r\n )}\r\n \r\n\r\n )\r\n }\r\n
\r\n {channelListUnread.includes(channel.ChannelArn) && (\r\n
\r\n \r\n \r\n \r\n
\r\n )}\r\n
\r\n
\r\n\r\n
stopChannel(channel.ChannelArn)}>\r\n {channel.ChannelArn !== channelArn && (\r\n \r\n )}\r\n
\r\n
\r\n ))}\r\n {visualConnectList.phoneNumber !== '' && (\r\n \r\n
{\r\n dispatchReduxToolkit(visualConnectSetActive(true))\r\n setStatusMessageShow(0)\r\n }}>\r\n
\r\n

{t(\"Visual_Connect_Label\")}

\r\n
\r\n
\r\n\r\n
{ dispatchReduxToolkit(visualConnectClearList()) }}>\r\n \r\n
\r\n \r\n )}\r\n \r\n \r\n )\r\n }\r\n
\r\n {(channelList.length == 0) && (\r\n \r\n
\r\n {t('Welcome_Label')}\r\n
\r\n
\r\n )}\r\n \r\n )}\r\n\r\n {/* Have actived channel */}\r\n {statusMessageShow == 1 && !visualConnectList.active && (\r\n <>\r\n {/* computer view */}\r\n \r\n
\r\n
\r\n {statusMessageShow == 1 && (\r\n <>\r\n
\r\n
\r\n
\r\n { }\r\n : () => setOpenInviteChatModal(true)\r\n }\r\n icon={\r\n \r\n \r\n \r\n }\r\n >\r\n \r\n {t('Chat_Label')}\r\n
\r\n
\r\n
\r\n {\r\n setIsInCall(true)\r\n }\r\n : () => { }\r\n : () => getTeachnicanInfor()\r\n }\r\n icon={\r\n \r\n \r\n \r\n }\r\n >\r\n \r\n {t('Visual_Connect_Label')}\r\n
\r\n
\r\n
\r\n {\r\n setIsInCall(true)\r\n }\r\n : () => { }\r\n : () => getTeachnicanInfor(true)\r\n }\r\n icon={\r\n \r\n \r\n \r\n }\r\n >\r\n \r\n {t('Voice_Call_Label')}\r\n
\r\n
\r\n \r\n
\r\n
\r\n stopChannel(channelArn)}\r\n icon={\r\n \r\n \r\n \r\n }\r\n >\r\n \r\n {t('Stop_Channel_Label')}\r\n
\r\n\r\n
\r\n \r\n \r\n )}\r\n \r\n
\r\n
\r\n {statusMessageShow == 1 && (\r\n \r\n \r\n \r\n \r\n )}\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n

{t('Contact_Details_Label')}

\r\n
\r\n {ticketState.ciamId && renderContactDetail()}\r\n
\r\n
\r\n
\r\n

{t('Request_Details_Label')}

\r\n
\r\n {ticketState.ciamId && renderRequestDetails()}\r\n
\r\n
\r\n
\r\n

{t('Attendees_Label')}

\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n {/* mobile and tablet view */}\r\n \r\n
\r\n
\r\n {(ticketDetail && ticketDetail !== 'PUBLIC') && (\r\n <>\r\n
\r\n \r\n
\r\n
\r\n

{\"#\" + ticketDetail.ticketDetails?.ticketId || '#'}

\r\n

{(ticketDetail.firstName || '') +\r\n (ticketDetail.lastName || '') + ` (${ticketDetail.ticketDetails?.customer?.assignedAccount?.name1 || ''})`}

\r\n

Online

\r\n
\r\n
\r\n setOpenMobileMenu(true)} />\r\n
\r\n \r\n )}\r\n {(ticketDetail && ticketDetail === 'PUBLIC') && (\r\n <>\r\n
\r\n \r\n
\r\n
\r\n

{\"#\" + channelName || '#'}

\r\n

{t(\"Anonymous\")}

\r\n

Online

\r\n
\r\n
\r\n setOpenMobileMenu(true)} />\r\n
\r\n \r\n )}\r\n
\r\n
\r\n {!isOpenMobileMenu ? (
\r\n {statusMessageShow == 1 && (\r\n \r\n \r\n \r\n \r\n )}\r\n
) : (
\r\n
\r\n setOpenMobileMenu(false)} />\r\n
\r\n
\r\n
\r\n

{t(\"Functionality_Label\")}

\r\n
\r\n
\r\n {\r\n setIsInCall(true)\r\n }\r\n : () => { }\r\n : () => getTeachnicanInfor()\r\n }\r\n >\r\n \r\n
\r\n
\r\n {t('Visual_Connect_Label')}\r\n \r\n
\r\n
\r\n {\r\n setIsInCall(true)\r\n }\r\n : () => { }\r\n : () => getTeachnicanInfor(true)\r\n }\r\n >\r\n \r\n \r\n \r\n {t('Voice_Call_Label')}\r\n \r\n
\r\n
\r\n
\r\n
\r\n

{t(\"Meeting_Information_Label\")}

\r\n
\r\n
\r\n { setOpenContactDetail(!isOpenContactDetail) }}\r\n >\r\n {'Contact Details'}\r\n \r\n \r\n {isOpenContactDetail && (\r\n
\r\n {renderContactDetail()}\r\n
\r\n )}\r\n
\r\n
\r\n { setOpenRequestDetails(!isOpenRequestDetails) }}\r\n >\r\n {' Request Details'}\r\n \r\n \r\n {isOpenRequestDetails && (\r\n
\r\n {renderRequestDetails()}\r\n
\r\n )}\r\n
\r\n
\r\n { setOpenAttendees(!isOpenAttendees) }}\r\n >\r\n {'Attendees'}\r\n \r\n \r\n {isOpenAttendees && (\r\n
\r\n \r\n
\r\n )}\r\n
\r\n
\r\n
\r\n { handleMobilestopChannel(channelArn) }}\r\n >\r\n {'Close Channel'}\r\n \r\n
\r\n
)}\r\n
\r\n \r\n )}\r\n\r\n {/* Have visual connect channel */}\r\n {visualConnectList.phoneNumber !== '' && visualConnectList.active && (\r\n <>\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n { }}\r\n disabled\r\n icon={\r\n \r\n \r\n \r\n }\r\n >\r\n
{t('Chat_Label')}
\r\n
\r\n
\r\n {\r\n setIsInCall(true)\r\n }\r\n : () => { }\r\n : () => getTeachnicanInfor()\r\n }\r\n icon={\r\n \r\n \r\n \r\n }\r\n >\r\n \r\n {t('Visual_Connect_Label')}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n stopChannel(channelArn)}\r\n icon={\r\n \r\n \r\n \r\n }\r\n >\r\n {t('Stop_Channel_Label')}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n

{t(\"Press_Chatting_Button_Label\")}

\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n

{t('Contact_Details_Label')}

\r\n
\r\n
\r\n
\r\n {account.email}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n

{t('Request_Details_Label')}

\r\n
\r\n
\r\n {ticketDetail &&
}\r\n
\r\n
\r\n
\r\n
\r\n

{t('Attendees_Label')}

\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n {account.name + ' (' + t('Bosch_Expert_Label') + ')'}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n {/* mobile and tablet view */}\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n

{t(\"Visual_Connect_Label\")}

\r\n

Online

\r\n
\r\n
\r\n setOpenMobileMenu(true)} />\r\n
\r\n
\r\n
\r\n {!isOpenMobileMenu ? (
\r\n
) : (
\r\n
\r\n setOpenMobileMenu(false)} />\r\n
\r\n
\r\n
\r\n

{t(\"Functionality_Label\")}

\r\n
\r\n
\r\n {\r\n setIsInCall(true)\r\n }\r\n : () => { }\r\n : () => getTeachnicanInfor()\r\n }\r\n >\r\n \r\n
\r\n
\r\n {t('Visual_Connect_Label')}\r\n \r\n
\r\n
\r\n {\r\n setIsInCall(true)\r\n }\r\n : () => { }\r\n : () => getTeachnicanInfor(true)\r\n }\r\n >\r\n \r\n \r\n \r\n {t('Voice_Call_Label')}\r\n \r\n
\r\n
\r\n
\r\n { handleMobilestopChannel(channelArn) }}\r\n >\r\n {'Close Channel'}\r\n \r\n
\r\n
)}\r\n
\r\n \r\n )}\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n Error\r\n \r\n \r\n {errorModalMessage && (\r\n \r\n {errorModalMessage}\r\n \r\n )}\r\n\r\n \r\n \r\n Close\r\n \r\n \r\n \r\n \r\n \r\n \r\n {isLoading && (\r\n \r\n \r\n \r\n )}\r\n {openInviteChatModal && (\r\n setOpenInviteChatModal(false)}\r\n onchangeTextSearchInput={onHanldeStartChattingChannel}\r\n >\r\n )}\r\n {openInviteVisualConnectModal && (\r\n setOpenInviteVisualConnectModal(false)}\r\n onHanldeSendSMS={onStartMeeting}\r\n sendEmailVisualConnect={sendEmailVisualConnect}\r\n onVoiceCall={onVoiceCall}\r\n >\r\n )}\r\n {isInCall && (\r\n setIsInCall(false)}\r\n >\r\n )}\r\n \r\n \r\n )\r\n}\r\n\r\nexport default MessagesView\r\n","import axios from 'axios'\r\nimport { graphConfig } from './authConfig'\r\n\r\nexport async function callAvatarGraph(token: string) {\r\n try {\r\n const response = await axios.get(graphConfig.graphAvatarEndpoint, {\r\n responseType: 'arraybuffer', // Set the response type to arraybuffer to handle image data\r\n headers: {\r\n Authorization: `Bearer ${token}`,\r\n },\r\n })\r\n\r\n return response.data\r\n } catch (error) {\r\n console.error('Error fetching user avatar:', error)\r\n throw error\r\n }\r\n}\r\n","import React, { Fragment, useEffect, useState, useRef, ReactNode } from 'react';\r\nimport { useSelector } from 'react-redux';\r\nimport { Grid, Button, Modal } from \"semantic-ui-react\";\r\nimport { createChannelMembership } from '../../api/ChimeAPI';\r\nimport { selectAccount } from '../../redux/account';\r\nimport { useTranslation } from \"react-i18next\";\r\ninterface ModalJoinCurrentChannelProps {\r\n isOpen: boolean,\r\n onClose: Function,\r\n onJoinFinish: Function,\r\n data: any\r\n}\r\n\r\nconst ModalJoinCurrentChannel = ({ isOpen, onClose, onJoinFinish, data }: ModalJoinCurrentChannelProps) => {\r\n const { t } = useTranslation();\r\n const account = useSelector(selectAccount);\r\n const [isLoading, setIsLoading] = useState(false);\r\n\r\n const onJoinChannel = async () => {\r\n const result = await onAddMember()\r\n setIsLoading(false)\r\n onJoinFinish(result);\r\n }\r\n\r\n const onAddMember = async () => {\r\n\r\n try {\r\n setIsLoading(true)\r\n await createChannelMembership(\r\n data.ChannelArn,\r\n `${process.env.REACT_APP_AWS_APP_INSTANCE_ARN}/user/${account.chimeUserId}`,\r\n data.CreatedBy.Arn.substring(data.CreatedBy.Arn.lastIndexOf('/') + 1)\r\n );\r\n return true;\r\n } catch {\r\n console.log(\"Error occurred. Member not added to channel.\");\r\n return false;\r\n }\r\n };\r\n\r\n return (\r\n \r\n onClose()}\r\n open={isOpen}\r\n dimmer={{ className: \"test-dimmer\" }}\r\n size={\"mini\"}\r\n closeIcon\r\n closeOnDimmerClick={false}\r\n >\r\n {t(\"Start_Channel_Session\")}\r\n \r\n \r\n \r\n {t(\"Start_Channel_Session_Content\") + data?.Name}\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n );\r\n};\r\n\r\nexport default ModalJoinCurrentChannel;\r\n","import React, { Fragment, useState } from 'react'\r\nimport { Grid, Button, Modal, Icon, Input } from 'semantic-ui-react'\r\nimport { useTranslation } from 'react-i18next'\r\nimport './css/ModalCreateNewChannel.css'\r\nimport PhoneInput from 'react-phone-input-2'\r\nimport 'react-phone-input-2/lib/style.css'\r\nimport Boschicon from '../../common-components/boschIcon/Boschicon'\r\ninterface ModalCreateNewChannelProps {\r\n isOpen: boolean\r\n onClose: Function\r\n onchangeTextSearchInput: Function\r\n sendLinkVisualConnect: Function\r\n sendEmailVisualConnect: Function\r\n onStartRandomChannel: Function\r\n onStartRandomVSC: Function\r\n}\r\n\r\nconst ModalCreateNewChannel = ({\r\n isOpen,\r\n onClose,\r\n onchangeTextSearchInput,\r\n onStartRandomChannel,\r\n sendLinkVisualConnect,\r\n sendEmailVisualConnect,\r\n onStartRandomVSC\r\n}: ModalCreateNewChannelProps) => {\r\n const [openSendInviteChat, setOpenSendInviteChat] = useState(false)\r\n const [\r\n openSendInviteVisualConnect,\r\n setOpenSendInviteVisualConnect,\r\n ] = useState(false)\r\n const [textSearchInput, setTextSearchInput] = useState('')\r\n const [openCodeInput, setOpenCodeInput] = useState(false)\r\n const [openPhoneInput, setOpenPhoneInput] = useState(false)\r\n const [openEmailInput, setOpenEmailInput] = useState(false)\r\n const [phoneNumber, setPhoneNumber] = useState('')\r\n const [email, setEmail] = useState('')\r\n const { t } = useTranslation()\r\n const onChangeEmail = (e: any) => {\r\n setEmail(e.target.value)\r\n }\r\n\r\n const randomNumberFunc = () => {\r\n return Math.floor(Math.random() * 100000000).toString().padStart(8, '0');\r\n }\r\n\r\n const onHandleGenerateRandomCode = (e: any) => {\r\n const randomNumber = randomNumberFunc()\r\n onStartRandomChannel(randomNumber)\r\n }\r\n const onHandleGenerateRandomCodeVSC = (e: any) => {\r\n const randomNumber = randomNumberFunc()\r\n onStartRandomVSC(randomNumber)\r\n }\r\n\r\n return (\r\n \r\n {!openSendInviteChat && !openSendInviteVisualConnect && (\r\n onClose()}\r\n open={isOpen}\r\n dimmer={{ className: 'test-dimmer' }}\r\n size={'tiny'}\r\n closeIcon\r\n closeOnDimmerClick={false}\r\n className='create-new-modal'\r\n >\r\n
\r\n \r\n {t('Start_New_Question')}\r\n \r\n \r\n \r\n \r\n setOpenSendInviteChat(true)}\r\n >\r\n \r\n

{t('Chat_Room_Label')}

\r\n \r\n
\r\n \r\n setOpenSendInviteVisualConnect(true)}\r\n >\r\n \r\n
\r\n
\r\n

{t('Visual_Connect_Label')}

\r\n \r\n
\r\n
\r\n
\r\n \r\n )}\r\n {openSendInviteChat && (\r\n onClose()}\r\n open={isOpen}\r\n dimmer={{ className: 'test-dimmer' }}\r\n size={'tiny'}\r\n closeIcon\r\n closeOnDimmerClick={false}\r\n className='create-new-modal'\r\n >\r\n
\r\n {(!openCodeInput) && (\r\n <>\r\n \r\n {t('Invite_To_Chat_Question')}\r\n \r\n \r\n \r\n \r\n setOpenCodeInput(true)}\r\n >\r\n \r\n {t('Ticket_Id_Label')}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )}\r\n {openCodeInput && (\r\n <>\r\n \r\n {t('Invite_To_Chat_By_Ticket_ID')}\r\n \r\n \r\n {\r\n setTextSearchInput(e.target.value)\r\n }}\r\n onKeyPress={(e: React.KeyboardEvent) => {\r\n if (e.key === 'Enter') {\r\n onchangeTextSearchInput(textSearchInput)\r\n }\r\n }}\r\n />\r\n onchangeTextSearchInput(textSearchInput)}\r\n >\r\n {t('Start_Label')}\r\n \r\n \r\n \r\n )}\r\n \r\n )}\r\n {openSendInviteVisualConnect && (\r\n onClose()}\r\n open={isOpen}\r\n dimmer={{ className: 'test-dimmer' }}\r\n size={'tiny'}\r\n closeIcon\r\n closeOnDimmerClick={false}\r\n className='create-new-modal'\r\n >\r\n {openPhoneInput || openEmailInput ? (\r\n <>\r\n {openPhoneInput && (\r\n <>\r\n
\r\n \r\n {t('Invite_Sms_Question')}\r\n \r\n \r\n \r\n \r\n \r\n setPhoneNumber(e)}\r\n value={phoneNumber}\r\n onEnterKeyPress={(\r\n e: React.KeyboardEvent,\r\n ) => {\r\n if (e.key === 'Enter') {\r\n sendLinkVisualConnect(phoneNumber)\r\n }\r\n }}\r\n />\r\n \r\n \r\n\r\n \r\n sendLinkVisualConnect(phoneNumber)}\r\n primary\r\n className=\"button-search\"\r\n >\r\n {t('Send_Invite_Label')}\r\n \r\n \r\n \r\n \r\n \r\n )}\r\n {openEmailInput && (\r\n <>\r\n
\r\n \r\n {t('Invite_Email_Question')}\r\n \r\n \r\n \r\n \r\n \r\n ,\r\n ) => {\r\n if (e.key === 'Enter') {\r\n sendEmailVisualConnect(email)\r\n }\r\n }}\r\n />\r\n \r\n \r\n\r\n \r\n sendEmailVisualConnect(email)}\r\n primary\r\n className=\"button-search\"\r\n >\r\n {t('Send_Invite_Label')}\r\n \r\n \r\n \r\n \r\n \r\n )}\r\n \r\n ) : (\r\n <>\r\n
\r\n \r\n {t('Invite_To_Visual_Question')}\r\n \r\n \r\n \r\n \r\n setOpenPhoneInput(true)}\r\n >\r\n \r\n {t('Sms_label')}\r\n \r\n \r\n \r\n \r\n setOpenEmailInput(true)}\r\n >\r\n \r\n {t('Email_label')}\r\n \r\n \r\n \r\n \r\n \r\n )}\r\n \r\n )}\r\n
\r\n )\r\n}\r\n\r\nexport default ModalCreateNewChannel\r\n","// extracted by mini-css-extract-plugin\nexport default {\"wrapper_modal\":\"ModalTranlationOptionsPublic_wrapper_modal__c8Ok5\",\"modal\":\"ModalTranlationOptionsPublic_modal__Wf2BE\",\"warning\":\"ModalTranlationOptionsPublic_warning__vAuAz\",\"error\":\"ModalTranlationOptionsPublic_error__Yx97h\",\"success\":\"ModalTranlationOptionsPublic_success__qg1Lw\",\"info\":\"ModalTranlationOptionsPublic_info__AcHCK\",\"header\":\"ModalTranlationOptionsPublic_header__Cb+LA\",\"title\":\"ModalTranlationOptionsPublic_title__dUJOY\",\"close_button_header\":\"ModalTranlationOptionsPublic_close_button_header__kZFp5\",\"content\":\"ModalTranlationOptionsPublic_content__RL5xi\",\"ui\":\"ModalTranlationOptionsPublic_ui__SALz+\",\"grid\":\"ModalTranlationOptionsPublic_grid__u5bz-\",\"row\":\"ModalTranlationOptionsPublic_row__zu-u+\",\"content_header\":\"ModalTranlationOptionsPublic_content_header__R09-6\",\"actions\":\"ModalTranlationOptionsPublic_actions__33oKw\",\"column\":\"ModalTranlationOptionsPublic_column__em9ge\",\"dropdown_select_country\":\"ModalTranlationOptionsPublic_dropdown_select_country__j0wUK\",\"divider\":\"ModalTranlationOptionsPublic_divider__hNHNX\",\"rd_icon\":\"ModalTranlationOptionsPublic_rd_icon__VUuNQ\"};","// extracted by mini-css-extract-plugin\nexport default {\"button\":\"RDButton_button__NE4H7\",\"disabled\":\"RDButton_disabled__GCmCH\",\"primary\":\"RDButton_primary__3sOCn\",\"secondary\":\"RDButton_secondary__-HddH\",\"tertiary\":\"RDButton_tertiary__eDdmr\",\"integrated\":\"RDButton_integrated__z3bld\",\"small\":\"RDButton_small__y0v8X\",\"fluid\":\"RDButton_fluid__MXASC\",\"maxContent\":\"RDButton_maxContent__kCosU\"};","import React from \"react\";\r\nimport style from \"./RDButton.module.css\";\r\nimport { Button, ButtonProps } from \"semantic-ui-react\";\r\n\r\ninterface Props extends ButtonProps {\r\n variant?: \"primary\" | \"secondary\" | \"tertiary\" | \"integrated\";\r\n minWidth?: \"fluid\" | \"maxContent\";\r\n small?: boolean;\r\n testId?: string;\r\n}\r\n\r\nconst RDButton = (props: Props) => {\r\n const {\r\n primary,\r\n secondary,\r\n disabled,\r\n variant,\r\n minWidth,\r\n small,\r\n testId,\r\n ...restProps\r\n } = props;\r\n\r\n const getButtonClassNames = () => {\r\n const defaultClassNames: string[] = [style.button];\r\n\r\n defaultClassNames.push(!variant ? style.primary : style[variant]);\r\n defaultClassNames.push(!!disabled ? style.disabled : \"\");\r\n defaultClassNames.push(!!small ? style.small : \"\");\r\n defaultClassNames.push(restProps.className ? restProps.className : \"\");\r\n defaultClassNames.push(minWidth ? style[minWidth] : \"\");\r\n\r\n return defaultClassNames.join(\" \");\r\n };\r\n\r\n return (\r\n \r\n {props.children}\r\n \r\n );\r\n};\r\n\r\nexport default RDButton;\r\n","// extracted by mini-css-extract-plugin\nexport default {\"rd_input_group\":\"RDDropdown_rd_input_group__JPp8L\",\"dropdown\":\"RDDropdown_dropdown__VVL2J\",\"rd_icon\":\"RDDropdown_rd_icon__pXhYT\",\"header\":\"RDDropdown_header__dTvRt\",\"error\":\"RDDropdown_error__L0332\"};","import { FC } from \"react\";\r\nimport { Dropdown, DropdownProps } from \"semantic-ui-react\";\r\nimport Styles from \"./RDDropdown.module.css\";\r\nimport React from \"react\";\r\nimport Boschicon from \"../boschIcon/Boschicon\";\r\n\r\ninterface RDDropdownProps extends DropdownProps {\r\n title: string;\r\n errorMessage?: string;\r\n}\r\n\r\nconst RDDropdown: FC = (props) => {\r\n return (\r\n <>\r\n
\r\n {props.header}
\r\n }\r\n className={`${Styles.dropdown} ${props.className ?? \"\"}`}\r\n icon={\r\n
\r\n \r\n
\r\n }\r\n />\r\n \r\n {!!props.errorMessage && (\r\n \r\n {props.errorMessage}\r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default RDDropdown;\r\n","import React, { Fragment, useState } from 'react';\r\nimport { Modal, Grid } from \"semantic-ui-react\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport Boschicon from '../../../common-components/boschIcon/Boschicon';\r\nimport { useAppDispatch } from '../../../redux/store';\r\nimport { SetIsTranslate } from '../../../redux/chimeSlide';\r\nimport Styles from '../css/ModalTranlationOptionsPublic.module.css'\r\nimport { countryOptions } from '../../../helpers/AppConstants';\r\nimport RDButton from '../../../common-components/RDComponents/RDButton';\r\nimport RDDropdown from '../../../common-components/RDComponents/RDDropdown';\r\ninterface ModalTranlationOptionsProps {\r\n isOpen: boolean,\r\n onClose: () => void | null,\r\n translateModeData: any,\r\n enableByBotWidget?: boolean,\r\n acceptButtonText: string;\r\n}\r\n\r\nconst ModalTranlationOptionsPublic = ({ isOpen, translateModeData, onClose, enableByBotWidget = false, acceptButtonText }: ModalTranlationOptionsProps) => {\r\n const { t } = useTranslation();\r\n const dispatchReduxToolkit = useAppDispatch();\r\n const [isTranslate, setIsTranslate] = useState(translateModeData.status);\r\n const [langSource, setLangSource] = useState(translateModeData.langSource);\r\n const [langTarget, setTarget] = useState(translateModeData.langTarget);\r\n\r\n const handleOnClick = () => {\r\n dispatchReduxToolkit(SetIsTranslate({\r\n ...translateModeData,\r\n status: true,\r\n langSource: langSource,\r\n langTarget: langTarget,\r\n languagebox: false\r\n }))\r\n onClose()\r\n }\r\n return (\r\n \r\n \r\n \r\n \r\n {t('En_live_translate')}\r\n \r\n \r\n \r\n \r\n \r\n {t('Translate_from')}\r\n \r\n \r\n setLangSource(data.value)}\r\n selection\r\n search\r\n options={countryOptions}\r\n title={''}\r\n />\r\n \r\n \r\n \r\n \r\n {t('Translate_to')}\r\n \r\n \r\n setTarget(data.value)}\r\n options={countryOptions}\r\n title={''}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n {acceptButtonText}\r\n \r\n \r\n\r\n \r\n );\r\n};\r\n\r\nexport default ModalTranlationOptionsPublic;\r\n","import React, { Fragment } from 'react'\r\nimport { Button, Modal } from 'semantic-ui-react'\r\nimport { useTranslation } from 'react-i18next'\r\nimport './css/ModalCreateNewChannel.css'\r\n\r\ninterface ModalShowRandomIdProps {\r\n isOpen: boolean\r\n onClose: Function\r\n randomId: string\r\n}\r\n\r\nconst ModalShowRandomId = ({\r\n isOpen,\r\n onClose,\r\n randomId\r\n}: ModalShowRandomIdProps) => {\r\n const { t } = useTranslation()\r\n\r\n return (\r\n \r\n onClose()}\r\n open={isOpen}\r\n dimmer={{ className: 'test-dimmer' }}\r\n size={'tiny'}\r\n closeIcon\r\n closeOnDimmerClick={false}\r\n className='create-new-modal'\r\n >\r\n
\r\n \r\n
\r\n
\r\n {t('Generated_ID')}\r\n
\r\n
\r\n {t('Your_ID')} {randomId}\r\n
\r\n onClose()}\r\n >\r\n {t('Continue_panel')}\r\n \r\n
\r\n
\r\n \r\n
\r\n )\r\n}\r\n\r\nexport default ModalShowRandomId\r\n","// extracted by mini-css-extract-plugin\nexport default {\"notification_bar\":\"RDNotification_notification_bar__Jx45c\",\"warning\":\"RDNotification_warning__+2NZW\",\"success\":\"RDNotification_success__4d9p0\",\"notification_message\":\"RDNotification_notification_message__wzKsC\",\"icon_noti\":\"RDNotification_icon_noti__l0zlX\",\"icon_close\":\"RDNotification_icon_close__+hxfi\"};","import { FC } from \"react\";\r\nimport Styles from \"./RDNotification.module.css\";\r\nimport React from \"react\";\r\nimport Boschicon from \"../boschIcon/Boschicon\";\r\n\r\ninterface RDNotificationProps {\r\n message: string;\r\n onClose: Function;\r\n type: string;\r\n isOpen: boolean\r\n}\r\n\r\nconst RDNotification: FC = ({ message, onClose, type, isOpen }) => {\r\n return (\r\n <>\r\n {\r\n isOpen && (
\r\n
\r\n \r\n
\r\n\r\n
\r\n

{message}

\r\n
\r\n
\r\n onClose()} />\r\n
\r\n\r\n
)\r\n };\r\n \r\n )\r\n\r\n\r\n};\r\n\r\nexport default RDNotification;\r\n","import { Fragment, useState, useEffect } from \"react\";\r\nimport React from \"react\";\r\nimport { Grid, Button, Modal } from \"semantic-ui-react\";\r\nimport { useSelector } from \"react-redux\";\r\nimport \"./DashBoard.css\";\r\nimport MessagingService from \"../../../services/MessagingService\";\r\nimport { useAppDispatch } from \"../../../redux/store\";\r\nimport {\r\n ChannelClearState,\r\n channelSetChannel,\r\n selectChannelArn,\r\n selectIsTranslate,\r\n SetCleanPresenceOfUserInChannel,\r\n SetNewMemberJoinChannel,\r\n SetOnHanldeClearMeeting,\r\n SetOnHanldeLeaveMeeting,\r\n SetPresenceOfUserInChannel\r\n} from \"../../../redux/chimeSlide\";\r\nimport {\r\n MessageType,\r\n Persistence,\r\n createChannel,\r\n createChannelMembership,\r\n createMemberArn,\r\n deleteChannel,\r\n describeChannel,\r\n listChannelMembershipsForAppInstanceUser,\r\n listChannels,\r\n} from \"../../../api/ChimeAPI\";\r\nimport MessagesView from \"../../../views/Messages\";\r\nimport { selectIsSignIn } from \"../../../redux/auth\";\r\nimport { loginAsync, selectAccount, selectRedirectUrl, setRedirectUrl } from \"../../../redux/account\";\r\nimport AWS from \"aws-sdk\";\r\nimport { getTicketInfor } from \"../../../redux/ticket\";\r\nimport {\r\n channelSetChannelList,\r\n channelSetChannelUnreadList,\r\n channelClearChannelUnreadList,\r\n} from \"../../../redux/channel\";\r\nimport {\r\n visualConnectSetList,\r\n selectVisualConnectListState,\r\n visualConnectSetActive,\r\n visualConnectSetFirstStart,\r\n visualConnectIsSendEmail\r\n} from \"../../../redux/visualConnect\";\r\nimport addNotification from \"react-push-notification\";\r\nimport { CommonService } from \"../../../services/Common\";\r\nimport ModalJoinCurrentChannel from \"../../modals/ModalJoinCurrentChannel\";\r\nimport ModalCreateNewChannel from \"../../modals/ModalCreateNewChannel\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { createMeetingByRandomCode, endMeeting, leaveMeeting, selectMeetingState } from \"../../../redux/meeting\";\r\nimport ModalNotiEndMeetting from \"../../modals/ModalNotiEndMeetting\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport { RSADecrypt } from \"../../../services/RSA_Encrypt\";\r\nimport ModalTranlationOptionsPublic from \"../../modals/publicChannelModal/ModalTranlationOptionsPublic\";\r\nimport ModalShowRandomId from \"../../modals/ModalShowRandomId\";\r\nimport CustomLoader from \"../../../common-components/RDComponents/CustomLoader\";\r\nimport RDNotification from \"../../../common-components/RDComponents/RDNotification\";\r\nimport { TimeOutOnlineStatus } from \"../../../helpers/AppConstants\";\r\nimport useBroadcast from \"../../../hooks/useBroadcast\";\r\nimport SignalRService from \"../../../services/SignalRService\";\r\n\r\nconst DashBoard = () => {\r\n const [isLoading, setIsLoading] = useState(false);\r\n const [isConfiged, setIsConfiged] = useState(false);\r\n const isLoggedIn = useSelector(selectIsSignIn);\r\n const account = useSelector(selectAccount);\r\n const [displayErrorModal, setDisplayErrorModal] = useState(false);\r\n const [errorModalMessage, setErrorModalMessage] = useState(\"\");\r\n const [notificationType, setNotificationType] = useState(\"\");\r\n const [messageDelete, setMessageDelete] = useState(\"\");\r\n const [isStopChannel, setIsStopChannel] = useState(false);\r\n const [channelStopArn, setChannelStopArn] = useState(\"\");\r\n const [messagingService] = useState(MessagingService.getInstance());\r\n const [unReadChannel, setUnReadChannel] = useState(\"\");\r\n const [displayJoinCurrentChannelModal, setDisplayJoinCurrentChannelModal] = useState(false);\r\n const [dataCurrentChannel, setDataCurrentChannel] = useState(null);\r\n const [openCreateChannelModel, setOpenCreateChannelModel] = useState(false);\r\n const [messageProp, setMessageProp] = useState();\r\n const channelArn = useSelector(selectChannelArn);\r\n const visualConnectList = useSelector(selectVisualConnectListState);\r\n const meetingData = useSelector(selectMeetingState);\r\n const [isInCall, setIsInCall] = useState(false);\r\n const history = useHistory();\r\n const isTranslate = useSelector(selectIsTranslate);\r\n const { t } = useTranslation();\r\n const urlParams = new URLSearchParams(window.location.search);\r\n const ticketId = window.location.search !== \"\" ? urlParams.get(\"ticketId\") : \"\";\r\n const sessionId = window.location.search !== \"\" ? urlParams.get(\"joinMeeting\") : \"\";\r\n const redirectUrl = useSelector(selectRedirectUrl);\r\n const [openModalShowRandomId, setOpenModalShowRandomId] = useState(false);\r\n const [randomCode, setRandomCode] = useState(\"\");\r\n const dispatchReduxToolkit = useAppDispatch();\r\n const [displayDeleteModal, setDisplayDeleteModal] = useState(false);\r\n const [tabHasFocusState, setTabHasFocusState] = useState(true);\r\n const accountAdmin = process.env.REACT_APP_AWS_ACCOUNT_ADMIN || \"\";\r\n const signalRConnectorInstance = SignalRService.getInstance();\r\n const [sinalRHubConnected, setSinalRHubConnected] = useState(false);\r\n\r\n const appInstance = process.env.REACT_APP_AWS_APP_INSTANCE_ARN || \"\";\r\n\r\n const sendLinkVisualConnect = async (phoneNumber: string) => {\r\n if (!meetingData.Meeting?.meetingId) {\r\n dispatchReduxToolkit(visualConnectSetList(phoneNumber));\r\n dispatchReduxToolkit(visualConnectSetActive(true));\r\n dispatchReduxToolkit(visualConnectSetFirstStart(true));\r\n setOpenCreateChannelModel(false);\r\n return;\r\n }\r\n setIsInCall(true)\r\n }\r\n const sendEmailVisualConnect = async (email: string) => {\r\n if (!meetingData.Meeting?.meetingId) {\r\n dispatchReduxToolkit(visualConnectSetList(email));\r\n dispatchReduxToolkit(visualConnectSetActive(true));\r\n dispatchReduxToolkit(visualConnectSetFirstStart(true));\r\n dispatchReduxToolkit(visualConnectIsSendEmail(true));\r\n setOpenCreateChannelModel(false);\r\n return;\r\n }\r\n setIsInCall(true)\r\n }\r\n\r\n const messagesProcessor = async (message: any) => {\r\n const messageType = message?.headers[\"x-amz-chime-event-type\"];\r\n const record = JSON.parse(message?.payload);\r\n switch (messageType) {\r\n // Channel Messages\r\n case \"CHANNEL_DETAILS\":\r\n console.log(\"CHANNEL_DETAILS\");\r\n // addMemberPresence(record.ChannelMemberships)\r\n //setActiveChannelMembershipsWithPresence([...activeChannelMembershipsWithPresence, record.ChannelMemberships])\r\n processUnreadChannelInit(record);\r\n break;\r\n case \"CREATE_CHANNEL_MESSAGE\":\r\n case \"REDACT_CHANNEL_MESSAGE\":\r\n case \"UPDATE_CHANNEL_MESSAGE\":\r\n case \"DENIED_CREATE_CHANNEL_MESSAGE\":\r\n case \"FAILED_CREATE_CHANNEL_MESSAGE\":\r\n case \"DENIED_UPDATE_CHANNEL_MESSAGE\":\r\n case \"FAILED_UPDATE_CHANNEL_MESSAGE\":\r\n case \"PENDING_CREATE_CHANNEL_MESSAGE\":\r\n case \"PENDING_UPDATE_CHANNEL_MESSAGE\":\r\n processChannelMessage(record);\r\n break;\r\n case \"DELETE_CHANNEL_MESSAGE\":\r\n if (record) {\r\n setMessageDelete(record.MessageId)\r\n }\r\n break;\r\n case \"CREATE_CHANNEL\":\r\n case \"UPDATE_CHANNEL\":\r\n break;\r\n case \"DELETE_CHANNEL\":\r\n dispatchReduxToolkit(ChannelClearState());\r\n fetchChannels();\r\n break;\r\n case \"CREATE_CHANNEL_MEMBERSHIP\":\r\n if (!record?.Member?.Arn.includes(account.chimeUserId)) {\r\n setErrorModalMessage(t('Join_Channel_note'));\r\n setNotificationType(\"success\")\r\n setDisplayDeleteModal(true);\r\n }\r\n dispatchReduxToolkit(SetNewMemberJoinChannel(true));\r\n break;\r\n case \"UPDATE_CHANNEL_MEMBERSHIP\":\r\n dispatchReduxToolkit(SetNewMemberJoinChannel(true));\r\n break;\r\n case \"DELETE_CHANNEL_MEMBERSHIP\":\r\n dispatchReduxToolkit(SetNewMemberJoinChannel(true));\r\n if (record?.Member?.Arn.includes(account.chimeUserId)) {\r\n dispatchReduxToolkit(ChannelClearState());\r\n fetchChannels();\r\n } else {\r\n dispatchReduxToolkit(SetCleanPresenceOfUserInChannel([]));\r\n setErrorModalMessage(t('Leave_Channel_note'));\r\n setNotificationType(\"warning\")\r\n setDisplayDeleteModal(true);\r\n }\r\n break;\r\n default:\r\n console.log(`Unexpected message type! ${messageType}`);\r\n }\r\n };\r\n\r\n const processUnreadChannelInit = async (record: any) => {\r\n const promise = Promise.resolve(record);\r\n const channelPrefetch = await promise.then((m) => m);\r\n\r\n if (channelPrefetch) {\r\n try {\r\n if (\r\n new Date(channelPrefetch.ReadMarkerTimestamp).getTime() <\r\n new Date(channelPrefetch.Channel.LastMessageTimestamp).getTime()\r\n ) {\r\n setUnReadChannel(channelPrefetch.Channel.ChannelArn);\r\n }\r\n } catch { }\r\n }\r\n };\r\n var tabHasFocus = true;\r\n\r\n const handleFocus = () => {\r\n tabHasFocus = true;\r\n setTabHasFocusState(true)\r\n };\r\n\r\n const handleBlur = () => {\r\n tabHasFocus = false;\r\n setTabHasFocusState(false)\r\n };\r\n\r\n\r\n const processChannelMessage = async (message: any) => {\r\n const promise = Promise.resolve(message);\r\n const newMessage = await promise.then((m) => m);\r\n if (newMessage.Persistence === Persistence.NON_PERSISTENT && newMessage.Type === MessageType.CONTROL) {\r\n dispatchReduxToolkit(SetPresenceOfUserInChannel(newMessage));\r\n } else {\r\n if (newMessage.Sender.Arn !== createMemberArn(account.chimeUserId)) {\r\n setUnReadChannel(newMessage.ChannelArn);\r\n setUnReadChannel(\"\");\r\n\r\n let metaData = JSON.parse(newMessage.Metadata)\r\n let checkHistoryType = metaData.type ? (metaData.type === 'history' ? true : false) : false;\r\n\r\n if (!tabHasFocus && !checkHistoryType) {\r\n addNotification({\r\n title: newMessage.Sender.Name + \" sent you a message\",\r\n message: newMessage.Content,\r\n theme: \"darkblue\",\r\n duration: 10000,\r\n native: true,\r\n onClick: notifiOnclick,\r\n });\r\n }\r\n }\r\n setMessageProp(newMessage);\r\n }\r\n };\r\n\r\n const notifiOnclick = () => {\r\n window.focus();\r\n };\r\n\r\n const registerGroup = (channelArn: string) => {\r\n if (channelArn) {\r\n signalRConnectorInstance.onConnectionEstablished(() => {\r\n signalRConnectorInstance.joinGroup(channelArn).then(() => {\r\n console.log(`Joined into group ${channelArn}`);\r\n }).catch((err: any) =>\r\n console.log(\r\n `Join to group ${channelArn} failed. Err: ${err}`\r\n )\r\n );\r\n });\r\n }\r\n };\r\n\r\n const fetchChannels = async () => {\r\n const userChannelMemberships =\r\n await listChannelMembershipsForAppInstanceUser(account.chimeUserId);\r\n\r\n const userChannelList = userChannelMemberships\r\n .map((channelMembership: any) => channelMembership.ChannelSummary)\r\n .sort((current: any, next: any) => {\r\n try {\r\n const newDate = new Date();\r\n const nextLast = next.LastMessageTimestamp\r\n ? next.LastMessageTimestamp.getTime()\r\n : newDate.getTime();\r\n const currentLast = current.LastMessageTimestamp\r\n ? current.LastMessageTimestamp.getTime()\r\n : newDate.getTime();\r\n\r\n return nextLast - currentLast;\r\n } catch {\r\n return null;\r\n }\r\n });\r\n dispatchReduxToolkit(channelSetChannelList(userChannelList));\r\n };\r\n\r\n const handleChannelDeletion = async (e: any) => {\r\n e.preventDefault();\r\n if (visualConnectList.phoneNumber !== \"\" && visualConnectList.active) {\r\n dispatchReduxToolkit(visualConnectSetList(\"\"));\r\n dispatchReduxToolkit(visualConnectSetActive(false));\r\n dispatchReduxToolkit(visualConnectSetFirstStart(false));\r\n setIsStopChannel(false);\r\n setTimeout(() => {\r\n history.push(\"/pcs\");\r\n }, 2000);\r\n return;\r\n }\r\n\r\n setIsLoading(true);\r\n setIsStopChannel(false);\r\n if (channelStopArn && channelStopArn !== \"\") {\r\n await stopChannel(channelStopArn, account?.chimeUserId);//await deleteChannel(channelArn, account?.chimeUserId);\r\n await CommonService.deleteAllChannelAttachments(\r\n channelStopArn.substring(channelStopArn.lastIndexOf(\"/\") + 1)\r\n );\r\n // dispatchReduxToolkit(ChannelClearState());\r\n }\r\n setIsLoading(false);\r\n };\r\n\r\n const stopChannel = async (channelArn: string, ciamId: string) => {\r\n const channel = await describeChannel(channelArn, ciamId);\r\n const userArn = channel.CreatedBy.Arn.substring(channel.CreatedBy.Arn.lastIndexOf('/') + 1);\r\n await deleteChannel(channel.ChannelArn, userArn);\r\n }\r\n\r\n const onStartChannel = async (data: string) => {\r\n setOpenCreateChannelModel(false);\r\n excuteStartChannel(data);\r\n };\r\n\r\n const onStartChannelRandomCode = async (code: string) => {\r\n setOpenCreateChannelModel(false);\r\n excuteStartChannel(code, true);\r\n setOpenModalShowRandomId(true);\r\n setRandomCode(code)\r\n };\r\n\r\n const onStartRandomVSC = async (code: string) => {\r\n if (!meetingData.Meeting?.meetingId) {\r\n setOpenCreateChannelModel(false);\r\n onStartVSCByRandomCode(code);\r\n setOpenModalShowRandomId(true);\r\n setRandomCode(code)\r\n dispatchReduxToolkit(visualConnectSetFirstStart(true));\r\n return;\r\n }\r\n setIsInCall(true)\r\n };\r\n\r\n const onStartVSCByRandomCode = async (code: string) => {\r\n setIsLoading(true)\r\n const meeting = await dispatchReduxToolkit(createMeetingByRandomCode(code))\r\n if (createMeetingByRandomCode.fulfilled.match(meeting)) {\r\n let meetingId = meeting.payload.dataObject.createMeetingResponse.meeting.meetingId\r\n setIsLoading(false)\r\n openMeetingPopup(meetingId);\r\n }\r\n if (createMeetingByRandomCode.rejected.match(meeting)) {\r\n setErrorModalMessage('Cannot start video session')\r\n setDisplayErrorModal(true)\r\n }\r\n }\r\n\r\n const openMeetingPopup = (meetingId: string) => {\r\n const popup = window.open(\r\n `/pcs/meeting/${meetingId}/?user_id=${account.chimeUserId}`,\r\n 'null',\r\n 'popup,width=1200,height=680,left=300,top=500, menubar=0, toolbar=0, scrollbar=1',\r\n )\r\n if (popup) {\r\n broadcast(\"\")\r\n }\r\n };\r\n\r\n const { broadcast } = useBroadcast({\r\n channelName: \"meeting-status\",\r\n messageHandler: (message: MessageEvent) => {\r\n if (message.data !== \"\") {\r\n let messageParse = JSON.parse(message.data);\r\n if (messageParse.type === 'end_metting') {\r\n endMeetingHandle(messageParse.metaData);\r\n } else if (messageParse.type === 'leave_metting') {\r\n leaveMeetingHandle()\r\n } else {\r\n return\r\n }\r\n }\r\n return\r\n },\r\n });\r\n\r\n const endMeetingHandle = async (bodyMeeting: any) => {\r\n await dispatchReduxToolkit(SetOnHanldeClearMeeting(true));\r\n await dispatchReduxToolkit(endMeeting(bodyMeeting));\r\n await dispatchReduxToolkit(visualConnectSetFirstStart(false));\r\n }\r\n\r\n const leaveMeetingHandle = async () => {\r\n await dispatchReduxToolkit(SetOnHanldeLeaveMeeting(true));\r\n await dispatchReduxToolkit(leaveMeeting());\r\n await dispatchReduxToolkit(visualConnectSetFirstStart(false));\r\n }\r\n\r\n const excuteStartChannel = async (ticketIdParam: string, randomChannel?: boolean) => {\r\n setIsLoading(true);\r\n if (randomChannel) {\r\n const response = await listChannels(appInstance, account?.chimeUserId);\r\n const exitChannel = response.find(\r\n (x: any) =>\r\n x.Name == ticketIdParam\r\n );\r\n\r\n if (exitChannel) {\r\n setIsLoading(false);\r\n setErrorModalMessage(`Channel with ID: ${ticketIdParam} has already exited. Please try again`);\r\n setDisplayErrorModal(true);\r\n return null\r\n }\r\n\r\n const channelArn = await createChannel(\r\n appInstance,\r\n JSON.stringify({\r\n ticket: ticketIdParam,\r\n channelType: \"PUBLIC\",\r\n memberArn: `${account?.chimeUserId}`\r\n }),\r\n ticketIdParam,\r\n \"RESTRICTED\",\r\n \"PUBLIC\",\r\n account?.chimeUserId\r\n );\r\n if (channelArn) {\r\n connectChannel(\r\n channelArn,\r\n account?.chimeUserId ? account.chimeUserId : \"\",\r\n false\r\n );\r\n\r\n setIsLoading(false);\r\n } else {\r\n setIsLoading(false);\r\n setErrorModalMessage(\"Cannot create new Channel\");\r\n setDisplayErrorModal(true);\r\n }\r\n\r\n setIsLoading(false);\r\n return null\r\n } else {\r\n var ticket = await dispatchReduxToolkit(\r\n getTicketInfor({ ticketId: ticketIdParam, email: account.email })\r\n );\r\n if (getTicketInfor.fulfilled.match(ticket)) {\r\n if (!ticket.payload || !ticket.payload.dataObject?.ciamId) {\r\n setIsLoading(false);\r\n setErrorModalMessage(\"Cannot find ticket\");\r\n setDisplayErrorModal(true);\r\n } else {\r\n setIsLoading(true);\r\n let ticketObject = ticket.payload.dataObject;\r\n let ticketId = ticketObject.ticketDetails.ticketId;\r\n let channelArn = `${appInstance}/channel/${ticketId}`;\r\n let channelDescribe = await describeChannel(channelArn, accountAdmin);\r\n if (channelDescribe) {\r\n const channelArn = channelDescribe.ChannelArn;\r\n if (channelArn) {\r\n connectChannel(\r\n channelArn,\r\n accountAdmin,\r\n false,\r\n ticket.payload.dataObject.ciamId\r\n );\r\n setIsLoading(false);\r\n } else {\r\n setIsLoading(false);\r\n setErrorModalMessage(\"Cannot create new Channel\");\r\n setDisplayErrorModal(true);\r\n }\r\n } else {\r\n console.error(\"Channel not exited!\")\r\n // choose contact person\r\n // setOpenModalContactPerson(true);\r\n createChannelProcess(ticket.payload.dataObject)\r\n // setTicketDetailFullFill(ticket.payload.dataObject);\r\n setIsLoading(false)\r\n }\r\n }\r\n }\r\n\r\n if (getTicketInfor.rejected.match(ticket)) {\r\n setErrorModalMessage(\"Cannot find ticket\");\r\n if (\r\n ticket.payload &&\r\n ticket.payload.response?.data.httpStatusCode == 403\r\n ) {\r\n setErrorModalMessage(\"Permission denied\");\r\n }\r\n setTimeout(() => {\r\n setIsLoading(false);\r\n setDisplayErrorModal(true);\r\n }, 2000);\r\n\r\n }\r\n }\r\n }\r\n\r\n const createChannelProcess = async (ticketInfo: any) => {\r\n try {\r\n const channelName = String(ticketInfo.ticketDetails?.ticketId);\r\n let channelArn = await createChannel(\r\n appInstance,\r\n JSON.stringify({\r\n ticket: channelName,\r\n nameWithRecipient:\r\n channelName + \" - \" + ticketInfo.firstName,\r\n companyName: ticketInfo.ticketDetails?.customer?.assignedAccount?.name1,\r\n fullNameCustomer: ticketInfo.firstName + \" \" + ticketInfo.lastName,\r\n serviceType: ticketInfo.ticketDetails?.topic?.serviceType,\r\n memberArn: `${account?.chimeUserId}`,\r\n channelType: \"PRIVATE\",\r\n customerCiamId: ticketInfo.ciamId\r\n }),\r\n channelName,\r\n \"RESTRICTED\",\r\n \"PRIVATE\",\r\n account?.chimeUserId\r\n );\r\n if (channelArn) {\r\n connectChannel(\r\n channelArn,\r\n account?.chimeUserId ? account.chimeUserId : \"\",\r\n true,\r\n ticketInfo.ciamId\r\n );\r\n setIsLoading(false);\r\n } else {\r\n setIsLoading(false);\r\n setErrorModalMessage(\"Cannot create new Channel 1\");\r\n setDisplayErrorModal(true);\r\n }\r\n } catch (error) {\r\n setErrorModalMessage(\"Cannot create new Channel 2\");\r\n setDisplayErrorModal(true);\r\n }\r\n }\r\n\r\n const connectChannel = async (\r\n channelDescribe: string,\r\n userId: string,\r\n addMember: boolean,\r\n ticketCiamId?: string\r\n ) => {\r\n const promise = Promise.resolve(channelDescribe);\r\n const channelArnCurrent = await promise.then((m) => m);\r\n const channel = await describeChannel(channelArnCurrent, userId);\r\n if (channel) {\r\n if (addMember && ticketCiamId) {\r\n const statusAdd = await onAddMember(channel, ticketCiamId);\r\n if (statusAdd) {\r\n dispatchReduxToolkit(channelSetChannel(channel));\r\n fetchChannels();\r\n }\r\n } else {\r\n if (channelArn === channelArnCurrent) return;\r\n const statusAdd = await onAddMember(channel, account.chimeUserId);\r\n if (statusAdd) {\r\n dispatchReduxToolkit(channelSetChannel(channel));\r\n fetchChannels();\r\n }\r\n }\r\n // toggleOpen(true);\r\n } else {\r\n console.log(\"Error, could not retrieve channel information.\");\r\n }\r\n };\r\n\r\n const onJoinChannel = async (result: boolean) => {\r\n if (result) {\r\n dispatchReduxToolkit(channelSetChannel(dataCurrentChannel));\r\n fetchChannels();\r\n setDataCurrentChannel(null);\r\n setDisplayJoinCurrentChannelModal(false);\r\n } else {\r\n setDataCurrentChannel(null);\r\n setDisplayJoinCurrentChannelModal(false);\r\n setErrorModalMessage(\"Cannot join this channel\");\r\n setDisplayErrorModal(true);\r\n }\r\n\r\n }\r\n\r\n const onAddMember = async (channel: any, technician: string) => {\r\n const promise = Promise.resolve(channel);\r\n const channelArn = await promise.then((m) => m.ChannelArn);\r\n try {\r\n const membership = await createChannelMembership(\r\n channelArn,\r\n `${appInstance}/user/${technician}`,\r\n accountAdmin\r\n );\r\n return membership;\r\n } catch {\r\n console.log(\"Error occurred. Member not added to channel.\");\r\n }\r\n };\r\n\r\n const onTrigger = () => {\r\n setDisplayErrorModal(false);\r\n };\r\n\r\n const login = async () => {\r\n dispatchReduxToolkit(loginAsync());\r\n };\r\n\r\n //Use Effect\r\n useEffect(() => {\r\n window.addEventListener(\"focus\", handleFocus);\r\n window.addEventListener(\"blur\", handleBlur);\r\n\r\n return () => {\r\n window.removeEventListener(\"focus\", handleFocus);\r\n window.removeEventListener(\"blur\", handleBlur);\r\n };\r\n }, []);\r\n\r\n\r\n useEffect(() => {\r\n // if (isConfiged) {\r\n if (ticketId && ticketId !== \"\") {\r\n excuteStartChannel(ticketId);\r\n }\r\n if (sessionId && sessionId !== \"\") {\r\n excuteStartChannel(sessionId);\r\n }\r\n\r\n }, [ticketId, sessionId]);\r\n\r\n useEffect(() => {\r\n if (!sinalRHubConnected) {\r\n registerGroup(channelArn);\r\n\r\n signalRConnectorInstance.setupEmitter();\r\n setSinalRHubConnected(true);\r\n }\r\n }, [sinalRHubConnected])\r\n\r\n useEffect(() => {\r\n if (channelArn) {\r\n signalRConnectorInstance.joinGroup(channelArn).then(() => {\r\n console.log(`Joined into group ${channelArn}`);\r\n }).catch((err: any) =>\r\n console.log(\r\n `Join to group ${channelArn} failed. Err: ${err}`\r\n )\r\n );\r\n }\r\n }, [channelArn])\r\n\r\n useEffect(() => {\r\n let messageObj = {\r\n key: channelArn,\r\n value: [\r\n {\r\n memberARN: account.chimeUserId,\r\n status: \"online\",\r\n datetime: new Date().toISOString(),\r\n role: \"bosch_expert\"\r\n }\r\n ]\r\n }\r\n const sendMessageToGroup = (message: any) => {\r\n signalRConnectorInstance.sendMessageToGroup(\"SendSinalToGroup\", channelArn, JSON.stringify(message));\r\n };\r\n const intervalId = setInterval(() => {\r\n // send online to active channel\r\n messageObj.value = [{\r\n memberARN: account.chimeUserId,\r\n status: \"online\",\r\n datetime: new Date().toISOString(),\r\n role: \"bosch_expert\"\r\n }]\r\n if (isLoggedIn) {\r\n sendMessageToGroup(messageObj);\r\n }\r\n }, TimeOutOnlineStatus);\r\n\r\n //clear inteval\r\n if (!tabHasFocusState || !channelArn || !account) {\r\n clearInterval(intervalId);\r\n }\r\n // send onhold signal\r\n if (!tabHasFocusState && channelArn && account) {\r\n messageObj.value = [{\r\n memberARN: account.chimeUserId,\r\n status: \"onhold\",\r\n datetime: new Date().toISOString(),\r\n role: \"bosch_expert\"\r\n }]\r\n if (isLoggedIn) {\r\n sendMessageToGroup(messageObj);\r\n }\r\n clearInterval(intervalId);\r\n } else {\r\n if (isLoggedIn) {\r\n sendMessageToGroup(messageObj);\r\n }\r\n }\r\n return () => clearInterval(intervalId);\r\n }, [tabHasFocusState, channelArn, account]);\r\n\r\n useEffect(() => {\r\n if (!unReadChannel || channelArn === unReadChannel) return;\r\n dispatchReduxToolkit(channelSetChannelUnreadList(unReadChannel));\r\n setUnReadChannel(\"\");\r\n }, [unReadChannel]);\r\n\r\n useEffect(() => {\r\n const setAwsKeysAndConnect = async () => {\r\n Notification.requestPermission();\r\n const awsKeys = await CommonService.getChimeSecret();\r\n if (awsKeys) {\r\n AWS.config.region = process.env.REACT_APP_REACT_REGION;\r\n const awsKeysDecrypt = await RSADecrypt.RSADecrypt(awsKeys);\r\n if (awsKeysDecrypt) {\r\n let awsKeysDecryptData = JSON.parse(awsKeysDecrypt!)\r\n AWS.config.credentials = {\r\n accessKeyId: awsKeysDecryptData.AccessKey,\r\n secretAccessKey: awsKeysDecryptData.SecretKey,\r\n };\r\n }\r\n } else {\r\n console.log(\"Cannot get AWS keys\");\r\n }\r\n\r\n const member = {\r\n username: account?.chimeName,\r\n userId: account?.chimeUserId,\r\n };\r\n messagingService.connect(member);\r\n\r\n dispatchReduxToolkit(channelClearChannelUnreadList());\r\n dispatchReduxToolkit(ChannelClearState());\r\n\r\n setIsConfiged(true);\r\n }\r\n\r\n if (\r\n isLoggedIn && account &&\r\n account?.chimeName &&\r\n account?.chimeUserId &&\r\n account?.hasPermission\r\n ) {\r\n setAwsKeysAndConnect();\r\n }\r\n\r\n return () => {\r\n messagingService.close();\r\n };\r\n }, [isLoggedIn]);\r\n\r\n useEffect(() => {\r\n if (!isLoggedIn) return;\r\n messagingService.subscribeToMessageUpdate(messagesProcessor);\r\n\r\n return () => {\r\n messagingService.unsubscribeFromMessageUpdate(messagesProcessor);\r\n };\r\n }, [messagingService, isLoggedIn]);\r\n\r\n useEffect(() => {\r\n if (isConfiged) {\r\n fetchChannels();\r\n }\r\n }, [messageProp, isConfiged]);\r\n\r\n useEffect(() => {\r\n if (isLoggedIn && redirectUrl !== '') {\r\n dispatchReduxToolkit(setRedirectUrl(\"\"));\r\n window.location.href = redirectUrl;\r\n }\r\n }, [isLoggedIn, redirectUrl])\r\n\r\n return (\r\n <>\r\n \r\n
\r\n
\r\n

{t(\"Service_Assist_Label\")}

\r\n
\r\n
\r\n {isLoggedIn && account.hasPermission && (\r\n setOpenCreateChannelModel(true)}\r\n >\r\n {t(\"Start_New_LabelBtn\")}\r\n \r\n )}\r\n {!isLoggedIn && (\r\n { login() }}\r\n >\r\n {t(\"Login_Label\")}\r\n \r\n )}\r\n
\r\n
\r\n\r\n
\r\n {isLoggedIn && account.hasPermission && isConfiged && (\r\n {\r\n if (e !== \"\") {\r\n setChannelStopArn(e)\r\n setIsStopChannel(true);\r\n }\r\n }}\r\n startChattingChannel={onStartChannel}\r\n messageDelete={messageDelete}\r\n />\r\n )}\r\n {isLoggedIn && !account.hasPermission && (\r\n
\r\n
{t(\"Account_Permission_Label\")}
\r\n
\r\n )}\r\n\r\n {!isLoggedIn && (\r\n
\r\n
\r\n
{t(\"Login_Is_Required_Label\")}
\r\n
\r\n {\r\n (navigator.userAgent.indexOf('Firefox') !== -1) &&\r\n
\r\n

{t(\"Noted_Recommend\")}

\r\n
\r\n }\r\n\r\n
\r\n\r\n )}\r\n\r\n
\r\n \r\n\r\n {isLoading && (\r\n \r\n \r\n \r\n )}\r\n\r\n {isInCall && (\r\n setIsInCall(false)}\r\n >\r\n )}\r\n\r\n {isTranslate.languagebox && (\r\n { }} acceptButtonText={t('Continue_panel')} />\r\n )}\r\n\r\n {\r\n openCreateChannelModel && setOpenCreateChannelModel(false)} onchangeTextSearchInput={onStartChannel} sendLinkVisualConnect={sendLinkVisualConnect} sendEmailVisualConnect={sendEmailVisualConnect} onStartRandomChannel={onStartChannelRandomCode} onStartRandomVSC={onStartRandomVSC}>\r\n }\r\n\r\n\r\n {/* Remove step choose contact person => auto choose ticket creator */}\r\n\r\n {\r\n openModalShowRandomId && ( setOpenModalShowRandomId(false)} randomId={randomCode}>)\r\n }\r\n\r\n {\r\n displayDeleteModal && ( { setDisplayDeleteModal(false) }} type={notificationType} />)\r\n }\r\n\r\n <>\r\n \r\n {displayJoinCurrentChannelModal && { setDataCurrentChannel(null); setDisplayJoinCurrentChannelModal(false) }} onJoinFinish={onJoinChannel} />}\r\n \r\n \r\n \r\n \r\n \r\n Error\r\n \r\n \r\n {errorModalMessage && (\r\n \r\n {errorModalMessage}\r\n \r\n )}\r\n\r\n \r\n \r\n Close\r\n \r\n \r\n \r\n \r\n \r\n \r\n setIsStopChannel(false)}\r\n open={isStopChannel}\r\n dimmer={{ className: \"test-dimmer black-dimmer\" }}\r\n closeOnDimmerClick={false}\r\n size={\"mini\"}\r\n >\r\n \r\n \r\n {t(\"Stop_Channel_Question\")}\r\n \r\n \r\n {\r\n handleChannelDeletion(e);\r\n }}\r\n >\r\n Yes\r\n \r\n setIsStopChannel(false)}\r\n >\r\n Cancel\r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default DashBoard;\r\n","import { Fragment, useEffect } from \"react\";\r\nimport { AppDispatch, useAppDispatch } from \"../../redux/store\";\r\nimport { logoutCallbackAsync } from \"../../redux/account\";\r\nimport { AuthService } from \"../../services/AuthService\";\r\nimport React from \"react\";\r\nimport CustomLoader from \"../../common-components/RDComponents/CustomLoader\";\r\n\r\nconst SignOutCallback = () => {\r\n const dispatchReduxToolkit: AppDispatch = useAppDispatch();\r\n\r\n useEffect(() => {\r\n async function performLogout() {\r\n const response = await dispatchReduxToolkit(logoutCallbackAsync());\r\n if (logoutCallbackAsync.fulfilled.match(response)) {\r\n const authService = AuthService.getInstance();\r\n await authService.clearLoginUserState();\r\n setTimeout(() => {\r\n window.location.href = \"/pcs\";\r\n }, 2000)\r\n }\r\n }\r\n\r\n performLogout();\r\n\r\n }, [])\r\n\r\n return (\r\n //
\r\n //

Loading...

\r\n //
\r\n \r\n \r\n \r\n )\r\n}\r\n\r\nexport default SignOutCallback;","import * as React from 'react';\r\nimport { useHistory } from 'react-router-dom';\r\nimport { useEffect } from 'react';\r\nimport { loginAsync } from '../../redux/account';\r\nimport { useDispatch } from 'react-redux';\r\nimport { authSetSignIn } from '../../redux/auth';\r\n\r\nconst SessionTimeout = () => {\r\n const history = useHistory();\r\n const dispatch = useDispatch();\r\n\r\n const goToHomePage = () => {\r\n setTimeout(() => {\r\n history.push(\"/pcs\");\r\n }, 1000)\r\n }\r\n\r\n const login = () => {\r\n dispatch(loginAsync());\r\n };\r\n\r\n useEffect(() => {\r\n dispatch(authSetSignIn(false));\r\n }, [])\r\n\r\n return (\r\n
\r\n
Your working session has been ended.
\r\n

Please click goToHomePage()}>here to go to home page or login()}>login again and continue!

\r\n
\r\n )\r\n}\r\n\r\nexport default SessionTimeout;","import { Logger, POSTLogger } from 'amazon-chime-sdk-js';\r\n\r\nexport type FormattedDeviceType = {\r\n deviceId: string;\r\n label: string;\r\n};\r\n\r\nexport type DeviceType = MediaDeviceInfo | FormattedDeviceType;\r\n\r\nexport type SelectedDeviceType = string | null;\r\n\r\nexport type DeviceTypeContext = {\r\n devices: DeviceType[];\r\n selectedDevice: SelectedDeviceType;\r\n};\r\n\r\nexport type LocalVideoContextType = {\r\n isVideoEnabled: boolean;\r\n toggleVideo: () => Promise;\r\n};\r\n\r\nexport type DeviceConfig = {\r\n additionalDevices?: boolean;\r\n};\r\n\r\nexport type LocalAudioOutputContextType = {\r\n isAudioOn: boolean;\r\n toggleAudio: () => void;\r\n};\r\n\r\nexport type ContentShareControlContextType = {\r\n isContentSharePaused: boolean;\r\n toggleContentShare: () => Promise;\r\n togglePauseContentShare: () => void;\r\n};\r\n\r\nexport enum MeetingMode {\r\n Spectator,\r\n Attendee,\r\n}\r\n\r\nexport enum Layout {\r\n Gallery,\r\n Featured,\r\n}\r\n\r\nexport const VideoFiltersCpuUtilization = {\r\n Disabled: '0',\r\n CPU10Percent: '10',\r\n CPU20Percent: '20',\r\n CPU40Percent: '40',\r\n};\r\n\r\nexport const VideoTransformOptions = {\r\n None: 'None',\r\n Blur: 'Background Blur',\r\n Replacement: 'Background Replacement',\r\n};\r\n\r\nexport type VideoTransformDropdownOptionType = {\r\n label: string;\r\n value: string;\r\n};\r\n\r\nexport type MeetingConfig = {\r\n simulcastEnabled: boolean;\r\n logger: Logger;\r\n postLogger?: POSTLogger;\r\n};\r\n","import { ConsoleLogger, MultiLogger, POSTLogger } from 'amazon-chime-sdk-js';\r\nimport { SDK_LOG_LEVELS } from '../helpers/AppConstants';\r\nimport { MeetingConfig } from '../types';\r\n\r\n// const urlParams = new URLSearchParams(window.location.search);\r\nconst logLevel = SDK_LOG_LEVELS.info;\r\n\r\nconst meetingConfig: MeetingConfig = {\r\n simulcastEnabled: false,\r\n logger: new ConsoleLogger('ChimeComponentLibraryReactDemo', logLevel),\r\n};\r\n\r\n// const BASE_URL: string = [location.protocol, '//', location.host, location.pathname.replace(/\\/*$/, '/')].join('');\r\n\r\n// if (!['0.0.0.0', '127.0.0.1', 'localhost'].includes(location.hostname)) {\r\n// const postLogger = new POSTLogger({\r\n// url: `${BASE_URL}logs`,\r\n// logLevel,\r\n// metadata: {\r\n// appName: 'ChimeComponentLibraryReactDemo',\r\n// timestamp: Date.now().toString(), // Add current timestamp for unique AWS CloudWatch log stream generation. This will be unique per POSTLogger creation in time.\r\n// },\r\n// });\r\n// meetingConfig.logger = new MultiLogger(meetingConfig.logger, postLogger);\r\n// meetingConfig.postLogger = postLogger;\r\n// }\r\n\r\nexport default meetingConfig;\r\n","import React, { useState } from 'react';\r\nimport {\r\n PreviewVideo,\r\n QualitySelection,\r\n CameraSelection,\r\n Label,\r\n useMeetingManager\r\n} from 'amazon-chime-sdk-component-library-react';\r\n\r\nconst CameraDevices = () => {\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n );\r\n};\r\n\r\nexport default CameraDevices;","// Copyright 2020-2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.\r\n// SPDX-License-Identifier: MIT-0\r\n\r\nimport React from 'react';\r\nimport styled from 'styled-components';\r\n\r\nconst Track = styled.div`\r\n width: 100%;\r\n height: 0.625rem;\r\n background-color: #ecf0f1;\r\n border-radius: 0.25rem;\r\n`;\r\n\r\nconst Progress = styled.div`\r\n height: 0.625rem;\r\n background-color: #18bc9c;\r\n border-radius: 0.25rem;\r\n transform: scaleX(0);\r\n transform-origin: left;\r\n transition: transform 33ms ease-in-out;\r\n will-change: transform;\r\n`;\r\n\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nconst ActivityBar = React.forwardRef((props, ref: any) => (\r\n \r\n \r\n \r\n));\r\n\r\nActivityBar.displayName = 'ActivityBar';\r\n\r\nexport default ActivityBar;","// Copyright 2020-2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.\r\n// SPDX-License-Identifier: MIT-0\r\n\r\nimport React, { useRef } from 'react';\r\nimport { useLocalAudioInputActivityPreview } from 'amazon-chime-sdk-component-library-react';\r\n\r\nimport ActivityBar from '../../ActivityBar';\r\n\r\nconst MicrophoneActivityPreviewBar = () => {\r\n const activityBarRef = useRef();\r\n useLocalAudioInputActivityPreview(activityBarRef);\r\n\r\n return ;\r\n};\r\n\r\nexport default MicrophoneActivityPreviewBar;\r\n","import React, { Fragment } from 'react';\r\nimport { Label } from 'amazon-chime-sdk-component-library-react';\r\n\r\nimport MicrophoneActivityPreviewBar from './MicrophoneActivityPreviewBar';\r\n\r\nconst MicrophoneActivityPreview = () => {\r\n return (\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default MicrophoneActivityPreview;\r\n","import React from 'react';\r\nimport {\r\n MicSelection,\r\n} from 'amazon-chime-sdk-component-library-react';\r\n\r\nimport MicrophoneActivityPreview from './MicrophoneActivityPreview';\r\n\r\nconst MicrophoneDevices = () => {\r\n\r\n return (\r\n
\r\n \r\n \r\n
\r\n );\r\n};\r\n\r\nexport default MicrophoneDevices;\r\n","import React, { useState } from 'react';\r\nimport {\r\n SpeakerSelection,\r\n SecondaryButton,\r\n useAudioOutputs,\r\n} from 'amazon-chime-sdk-component-library-react';\r\n\r\n// import TestSound from '../../../utils/TestSound';\r\n\r\nconst SpeakerDevices = () => {\r\n const { selectedDevice } = useAudioOutputs();\r\n const [selectedOutput, setSelectedOutput] = useState(selectedDevice);\r\n\r\n const handleChange = (deviceId: string): void => {\r\n setSelectedOutput(deviceId);\r\n };\r\n\r\n // const handleTestSpeaker = () => {\r\n // new TestSound(selectedOutput);\r\n // };\r\n\r\n return (\r\n
\r\n \r\n {/* */}\r\n
\r\n );\r\n};\r\n\r\nexport default SpeakerDevices;","import React, { Fragment } from 'react';\r\nimport { Grid } from 'semantic-ui-react';\r\n\r\nimport CameraDevices from './CameraDevices';\r\nimport MicrophoneDevices from './MicrophoneDevices';\r\nimport SpeakerDevices from './SpeakerDevices';\r\n\r\nconst DeviceSelection = () => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n);\r\n\r\nexport default DeviceSelection;\r\n","import React, { Fragment } from 'react';\r\nimport { Heading } from 'amazon-chime-sdk-component-library-react';\r\nimport DeviceSelection from '../../DeviceSelection';\r\nimport { useHistory } from 'react-router-dom';\r\n\r\nconst DeviceSetup: React.FC = () => {\r\n\r\n return (\r\n \r\n {/* \r\n Device settings\r\n */}\r\n \r\n \r\n )\r\n};\r\n\r\nexport default DeviceSetup;\r\n","import React from 'react';\r\n\r\nimport {\r\n RosterAttendee,\r\n useAttendeeStatus,\r\n} from 'amazon-chime-sdk-component-library-react';\r\n\r\ninterface Props {\r\n /** The Chime attendee ID */\r\n attendeeId: string;\r\n}\r\n\r\nconst RosterAttendeeWrapper: React.FC = ({ attendeeId }) => {\r\n const { videoEnabled } = useAttendeeStatus(attendeeId);\r\n return (\r\n
\r\n : null\r\n // }\r\n />\r\n
\r\n );\r\n};\r\n\r\nexport default RosterAttendeeWrapper;\r\n","import React, { Fragment } from 'react';\r\nimport {\r\n RosterGroup,\r\n useRosterState,\r\n RosterAttendeeType,\r\n} from 'amazon-chime-sdk-component-library-react';\r\nimport RosterAttendeeWrapper from './RosterAttendeeWrapper';\r\nimport { useTranslation } from \"react-i18next\";\r\n\r\nconst MeetingRoster = () => {\r\n const { roster } = useRosterState();\r\n const { t } = useTranslation();\r\n const attendees = Object.values(roster);\r\n\r\n const attendeeItems = attendees.map((attendee: RosterAttendeeType) => {\r\n const { chimeAttendeeId } = attendee || {};\r\n return ;\r\n });\r\n\r\n return (\r\n
{\r\n (attendeeItems && attendeeItems.length > 0 &&\r\n \r\n {t(\"Attendees_Label\") + \": \"}\r\n
\r\n \r\n
\r\n {attendeeItems}\r\n
\r\n )\r\n }\r\n
\r\n );\r\n};\r\n\r\nexport default MeetingRoster;\r\n","import React from 'react';\r\n\r\nimport { Flex } from 'amazon-chime-sdk-component-library-react';\r\nimport { useSelector } from 'react-redux';\r\nimport { selectMeetingState } from '../../redux/meeting';\r\nimport MeetingRoster from '../../components/MeetingRoster/MeetingRoster';\r\nimport { useTranslation } from \"react-i18next\";\r\n\r\nconst MeetingDetails = () => {\r\n\r\n const meetingData = useSelector(selectMeetingState);\r\n const meetingTitle = \"meetingTitle\";\r\n const { t } = useTranslation();\r\n return (\r\n \r\n \r\n

\r\n {t(\"Meeting_Information_Label\")}\r\n

\r\n
\r\n
\r\n
\r\n {t(\"Meeting_ID_Label\") + \": \"} \r\n {meetingData.Meeting.meetingId}\r\n
\r\n
\r\n {\r\n meetingData.Meeting.externalMeetingId.toLowerCase() !== meetingTitle.toLowerCase() && (\r\n
\r\n {t(\"Public_Meeting_ID_Label\")} \r\n {meetingData.Meeting.externalMeetingId}\r\n
\r\n )\r\n }\r\n\r\n
\r\n {/*
\r\n Hosted region: \r\n {meetingData.Meeting.mediaRegion}\r\n
*/}\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default MeetingDetails;\r\n","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgLightbulbHalogenCrackedDisabledLight(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 192 192\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M56 119.03V112h7.03L56 119.03zm28-28V43.656l9.211 9.211-5 11 6.183 6.183-5.699 16.283 13.04-13.04 1.871-5.345-5.817-5.817 5-11L91.657 40H108v27.03l8-8V39.38c0-6.635-4.415-8.045-6.786-8.803a17.401 17.401 0 0 1-1.358-.473c-1.904-.79-2.478-1.028-3.661-4.233-.358-.968-.608-1.876-.85-2.755C102.61 20.455 101.384 16 96 16s-6.611 4.455-7.345 7.116c-.242.879-.492 1.787-.85 2.757-1.183 3.203-1.757 3.441-3.661 4.231-.414.172-.873.318-1.358.473C80.415 31.335 76 32.745 76 39.38v59.65l8-8zm31.985 11.028c.01-.117.015-.234.015-.35V92.97l-8 8v.56L107.08 112H100v-3.03L88.97 120H112v8H80.97l-8 8H76v24h8v-24h24v24h8v-24h4v-16h16v-8h-20.89l.875-9.942zm58.844-79.23l-5.658-5.657-152 152 5.658 5.658 152-152z\"\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgLightbulbHalogenCrackedDisabledLight);\nexport default __webpack_public_path__ + \"static/media/lightbulb-halogen-cracked-disabled-light.24172a0dadc9eba752dc296dc97b2f82.svg\";\nexport { ForwardRef as ReactComponent };","import React, { Fragment, } from 'react'\r\nimport { Button, Modal } from 'semantic-ui-react'\r\nimport { useTranslation } from 'react-i18next'\r\nimport './css/ModalCreateNewChannel.css'\r\ninterface ModalShowContentOCRProps {\r\n isOpen: boolean\r\n onClose: Function\r\n ocrData: string\r\n}\r\n\r\nconst ModalShowContentOCR = ({\r\n isOpen,\r\n onClose,\r\n ocrData\r\n}: ModalShowContentOCRProps) => {\r\n const { t } = useTranslation()\r\n\r\n return (\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n {t(\"OCR_Detected_title\")}\r\n
\r\n
\r\n {ocrData}\r\n
\r\n onClose()}\r\n >\r\n {t('Close_panel')}\r\n \r\n
\r\n
\r\n \r\n
\r\n )\r\n}\r\n\r\nexport default ModalShowContentOCR\r\n","import React, { Fragment, useEffect, useState } from 'react';\r\nimport {\r\n ControlBar,\r\n AudioInputVFControl,\r\n ContentShareControl,\r\n AudioOutputControl,\r\n ControlBarButton,\r\n VideoInputControl,\r\n Phone,\r\n useMeetingManager,\r\n useAudioVideo,\r\n PopOver,\r\n PopOverItem,\r\n Cog,\r\n PopOverHeader\r\n} from 'amazon-chime-sdk-component-library-react';\r\nimport {\r\n selectVisualConnectListState,\r\n visualConnectSetFirstStart\r\n} from \"../../redux/visualConnect\";\r\nimport './MeetingControls.css';\r\nimport { useAppDispatch } from '../../redux/store';\r\nimport { endMeeting, leaveMeeting, selectMeetingState, changeActionMeeting, selectActionMeetingState, selectListAttendeeState } from '../../redux/meeting';\r\nimport { useSelector } from 'react-redux';\r\nimport { AudioVideoObserver, VideoTileState } from 'amazon-chime-sdk-js';\r\nimport { Button, Icon, Message, Modal } from 'semantic-ui-react';\r\nimport { useHistory } from 'react-router-dom';\r\nimport { useTranslation } from \"react-i18next\";\r\nimport Boschicon from '../../common-components/boschIcon/Boschicon';\r\nimport { ReactComponent as Flash_Off } from \"../../assets/svg/lightbulb-halogen-cracked-disabled-light.svg\";\r\nimport { v4 } from 'uuid';\r\nimport { DATA_MESSAGE_ACTION, DATA_MESSAGE_TYPE } from '../../helpers/AppConstants';\r\nimport ModalShowContentOCR from '../../components/modals/ModalShowContentOCR';\r\nimport CustomLoader from '../../common-components/RDComponents/CustomLoader';\r\nimport useBroadcast from '../../hooks/useBroadcast';\r\n\r\ntype RealtimeDataCmd = \"TEXT\" | \"WHITEBOARD\"\r\n\r\nexport type RealtimeData = {\r\n uuid: string\r\n action: string\r\n cmd: RealtimeDataCmd\r\n data: any\r\n createdDate: number\r\n senderName: string\r\n}\r\n\r\n\r\nconst MeetingControls = (props: { mtype: string | null, isNewMemberJoined: boolean, resetMemberJoined: any, isWebVersion: boolean }) => {\r\n\r\n const dispatchReduxToolkit = useAppDispatch();\r\n const meetingManager = useMeetingManager();\r\n const meetingData = useSelector(selectMeetingState);\r\n const actionMeeting = useSelector(selectActionMeetingState);\r\n const vcpState = useSelector(selectVisualConnectListState);\r\n const [meetingId, setMeetingId] = useState(\"\");\r\n const [externalMeetingId, setExternalMeetingId] = useState(\"\");\r\n const [hasRemoteVideo, setRemoteVideo] = useState(false);\r\n const [remoteVideoIsPause, setRemoteVideoIsPause] = useState(false);\r\n const [onFlash, setOnFlash] = useState(false);\r\n const [onAR, setOnAR] = useState(false);\r\n const [onARDraw, setOnARDraw] = useState(false);\r\n const [onPointer, setOnPointer] = useState(false);\r\n const [ArAvailable, setArAvailable] = useState(true);\r\n const [showArAvailable, setShowArAvailable] = useState(false);\r\n const [showSwitchFunction, setShowSwitchFunction] = useState(false);\r\n const [showRejectSwitchFunction, setShowRejectSwitchFunction] = useState(false);\r\n const [isMobile, setIsMobile] = useState(false);\r\n const [overNumberAttendees, setOverNumberAttendees] = useState(false);\r\n const [tempDataCapture, setTempDataCapture] = useState(null);\r\n const [ocrData, setOcrData] = useState(\"\");\r\n const [onOcrModal, setOnOcrModal] = useState(false);\r\n const audioVideo = useAudioVideo();\r\n const { t } = useTranslation();\r\n const history = useHistory();\r\n const [showModal, setShowModal] = useState(false);\r\n const toggleModal = (): void => setShowModal(!showModal);\r\n const [isLoading, setIsLoading] = useState(false);\r\n const [onVoiceCallMode, setOnVoiceCallMode] = useState(false);\r\n const listAttendee = useSelector(selectListAttendeeState);\r\n\r\n useEffect(() => {\r\n if (listAttendee && listAttendee.length > 2) {\r\n setOverNumberAttendees(true)\r\n } else {\r\n setOverNumberAttendees(false)\r\n }\r\n }, [listAttendee]);\r\n\r\n useEffect(() => {\r\n if (props.mtype && props.mtype !== \"\") {\r\n setOnVoiceCallMode(true)\r\n setSwitchCallFunctionAction(true);\r\n } else {\r\n setOnVoiceCallMode(false)\r\n }\r\n }, [props.mtype]);\r\n\r\n useEffect(() => {\r\n if (props.isNewMemberJoined) {\r\n setSwitchCallFunctionAction(onVoiceCallMode)\r\n props.resetMemberJoined()\r\n }\r\n }, [props.isNewMemberJoined]);\r\n\r\n useEffect(() => {\r\n setMeetingId(meetingData.Meeting.meetingId)\r\n setExternalMeetingId(meetingData.Meeting.externalMeetingId)\r\n let bodyMessageBroadcast = {\r\n type: \"start_metting\",\r\n metaData: null\r\n }\r\n broadcast(JSON.stringify(bodyMessageBroadcast))\r\n }, [meetingData]);\r\n\r\n useEffect(() => {\r\n const handleTabClose = () => {\r\n dispatchReduxToolkit(leaveMeeting());\r\n dispatchReduxToolkit(visualConnectSetFirstStart(false));\r\n };\r\n window.addEventListener('beforeunload', handleTabClose);\r\n return () => {\r\n window.removeEventListener('beforeunload', handleTabClose);\r\n };\r\n }, []);\r\n\r\n const { broadcast } = useBroadcast({\r\n channelName: \"meeting-status\",\r\n messageHandler: (message: MessageEvent) => { },\r\n });\r\n\r\n const endMeetingHandle = async () => {\r\n const bodyMeeting = {\r\n meetingId,\r\n externalMeetingId\r\n }\r\n let bodyMessageBroadcast = {\r\n type: \"end_metting\",\r\n metaData: bodyMeeting\r\n }\r\n await broadcast(JSON.stringify(bodyMessageBroadcast))\r\n meetingManager.leave();\r\n }\r\n\r\n\r\n const leaveMeetingHandle = async () => {\r\n let bodyMessageBroadcast = {\r\n type: \"leave_metting\",\r\n metaData: null\r\n }\r\n await broadcast(JSON.stringify(bodyMessageBroadcast))\r\n setTimeout(() => {\r\n history.push(\"/pcs\");\r\n }, 2000);\r\n window.close();\r\n }\r\n\r\n useEffect(() => {\r\n if (!audioVideo) {\r\n return;\r\n }\r\n const observer: AudioVideoObserver = {\r\n videoTileDidUpdate: (tileState: VideoTileState): void => {\r\n showingBtnPauseCapture(audioVideo);\r\n }, videoTileWasRemoved: (tileId: number): void => {\r\n showingBtnPauseCapture(audioVideo);\r\n }\r\n };\r\n\r\n audioVideo.addObserver(observer);\r\n\r\n return (): void => audioVideo.removeObserver(observer);\r\n }, [audioVideo]);\r\n\r\n useEffect(() => {\r\n let data = { ...actionMeeting };\r\n data.AR = onAR;\r\n data.Draw = onARDraw;\r\n data.MousePointer = onPointer;\r\n\r\n if (!onAR) {\r\n data.Draw = false;\r\n }\r\n dispatchReduxToolkit(changeActionMeeting(data));\r\n }, [onAR, onARDraw, onPointer]);\r\n\r\n useEffect(() => {\r\n audioVideo!.realtimeSubscribeToReceiveDataMessage(\r\n DATA_MESSAGE_TYPE.Command,\r\n receiveChatData\r\n )\r\n return () => {\r\n audioVideo!.realtimeUnsubscribeFromReceiveDataMessage(DATA_MESSAGE_TYPE.Command)\r\n }\r\n })\r\n\r\n\r\n const showingBtnPauseCapture = (audioVideo: any) => {\r\n const listVideoTile = audioVideo.getAllRemoteVideoTiles();\r\n if (listVideoTile.length > 0) {\r\n setRemoteVideo(true);\r\n listVideoTile[0].state().paused ? setRemoteVideoIsPause(true) : setRemoteVideoIsPause(false)\r\n }\r\n else setRemoteVideo(false)\r\n }\r\n\r\n const pauseVideo = async () => {\r\n if (!isMobile) {\r\n await takeTempImageCapture();\r\n const videoTileList = audioVideo?.getAllRemoteVideoTiles();\r\n if (videoTileList && videoTileList.length > 0) {\r\n audioVideo?.pauseVideoTile(videoTileList[0].id())\r\n }\r\n } else {\r\n let uuid = v4();\r\n const mess: RealtimeData = {\r\n uuid: uuid,\r\n action: DATA_MESSAGE_ACTION.PauseVideo,\r\n cmd: \"TEXT\",\r\n data: \"pause_video\",\r\n createdDate: new Date().getTime(),\r\n senderName: 'member' + uuid\r\n }\r\n audioVideo!.realtimeSendDataMessage(DATA_MESSAGE_TYPE.Command, JSON.stringify(mess));\r\n setRemoteVideoIsPause(true);\r\n return () => {\r\n audioVideo!.realtimeUnsubscribeFromReceiveDataMessage(DATA_MESSAGE_TYPE.Command)\r\n }\r\n }\r\n }\r\n\r\n const unPauseVideo = () => {\r\n if (!isMobile) {\r\n const videoTileList = audioVideo?.getAllRemoteVideoTiles()\r\n if (videoTileList && videoTileList.length > 0) {\r\n audioVideo?.unpauseVideoTile(videoTileList[0].id())\r\n }\r\n } else {\r\n let uuid = v4();\r\n const mess: RealtimeData = {\r\n uuid: uuid,\r\n action: DATA_MESSAGE_ACTION.UnPauseVideo,\r\n cmd: \"TEXT\",\r\n data: \"un_pause_video\",\r\n createdDate: new Date().getTime(),\r\n senderName: 'member' + uuid\r\n }\r\n audioVideo!.realtimeSendDataMessage(DATA_MESSAGE_TYPE.Command, JSON.stringify(mess));\r\n setRemoteVideoIsPause(false);\r\n return () => {\r\n audioVideo!.realtimeUnsubscribeFromReceiveDataMessage(DATA_MESSAGE_TYPE.Command)\r\n }\r\n }\r\n }\r\n\r\n const ImageDataToBlob = function (imageData: ImageData) {\r\n let canvas = document.createElement(\"canvas\");\r\n canvas.width = imageData.width\r\n canvas.height = imageData.height\r\n let ctx = canvas.getContext(\"2d\");\r\n if (ctx !== null) {\r\n ctx.putImageData(imageData, 0, 0);\r\n return new Promise((resolve) => {\r\n canvas.toBlob(resolve);\r\n });\r\n }\r\n }\r\n\r\n function downloadBlob(blob: any, name = 'capture.png') {\r\n const blobUrl = URL.createObjectURL(blob);\r\n\r\n // Create a link element\r\n const link = document.createElement(\"a\");\r\n link.target = \"blank\";\r\n link.href = blobUrl;\r\n link.download = name;\r\n\r\n document.body.appendChild(link);\r\n\r\n link.dispatchEvent(\r\n new MouseEvent('click', {\r\n bubbles: true,\r\n cancelable: true,\r\n view: window\r\n })\r\n );\r\n document.body.removeChild(link);\r\n }\r\n\r\n const captureVideo = async (isPause: boolean) => {\r\n if (isPause && tempDataCapture) {\r\n downloadBlob(tempDataCapture);\r\n } else {\r\n const videoTileList = audioVideo?.getAllRemoteVideoTiles()\r\n if (videoTileList && videoTileList.length > 0) {\r\n // if (meetingData.videoTiles.length > 0) {\r\n const data = videoTileList[0].capture();\r\n if (data) {\r\n const image: any = await ImageDataToBlob(data);\r\n\r\n downloadBlob(image);\r\n }\r\n }\r\n }\r\n }\r\n\r\n const takeTempImageCapture = async () => {\r\n\r\n const videoTileList = audioVideo?.getAllRemoteVideoTiles()\r\n if (videoTileList && videoTileList.length > 0) {\r\n const data = videoTileList[0].capture();\r\n if (data) {\r\n const image: any = await ImageDataToBlob(data);\r\n\r\n setTempDataCapture(image);\r\n }\r\n }\r\n }\r\n\r\n const handleFlashLight = async (isTurnFlash: boolean) => {\r\n let uuid = v4();\r\n const mess: RealtimeData = {\r\n uuid: uuid,\r\n action: isTurnFlash ? DATA_MESSAGE_ACTION.TurnOnFlash : DATA_MESSAGE_ACTION.TurnOffFlash,\r\n cmd: \"TEXT\",\r\n data: isTurnFlash ? \"Turn_On_Light\" : \"Turn_Off_Light\",\r\n createdDate: new Date().getTime(),\r\n senderName: 'member' + uuid\r\n }\r\n audioVideo!.realtimeSendDataMessage(DATA_MESSAGE_TYPE.Command, JSON.stringify(mess));\r\n setOnFlash(isTurnFlash);\r\n return () => {\r\n audioVideo!.realtimeUnsubscribeFromReceiveDataMessage(DATA_MESSAGE_TYPE.Command)\r\n }\r\n\r\n }\r\n const handleAR = async (isTurnAR: boolean) => {\r\n if (!ArAvailable) {\r\n setShowArAvailable(true)\r\n setTimeout(() => setShowArAvailable(false), 7000);\r\n return;\r\n }\r\n let uuid = v4();\r\n const mess: RealtimeData = {\r\n uuid: uuid,\r\n action: isTurnAR ? DATA_MESSAGE_ACTION.TurnOnAR : DATA_MESSAGE_ACTION.TurnOffAR,\r\n cmd: \"TEXT\",\r\n data: isTurnAR ? \"Turn_On_AR\" : \"Turn_Off_AR\",\r\n createdDate: new Date().getTime(),\r\n senderName: 'member' + uuid\r\n }\r\n audioVideo!.realtimeSendDataMessage(DATA_MESSAGE_TYPE.Command, JSON.stringify(mess));\r\n setOnAR(isTurnAR);\r\n if (!isTurnAR) {\r\n setDrawAction(false);\r\n } else {\r\n setOnPointer(false)\r\n }\r\n return () => {\r\n audioVideo!.realtimeUnsubscribeFromReceiveDataMessage(DATA_MESSAGE_TYPE.Command)\r\n }\r\n }\r\n const handleOCR = async () => {\r\n let uuid = v4();\r\n const mess: RealtimeData = {\r\n uuid: uuid,\r\n action: DATA_MESSAGE_ACTION.OCR,\r\n cmd: \"TEXT\",\r\n data: \"OCR\",\r\n createdDate: new Date().getTime(),\r\n senderName: 'member' + uuid\r\n }\r\n audioVideo!.realtimeSendDataMessage(DATA_MESSAGE_TYPE.Command, JSON.stringify(mess));\r\n setIsLoading(true);\r\n return () => {\r\n audioVideo!.realtimeUnsubscribeFromReceiveDataMessage(DATA_MESSAGE_TYPE.Command)\r\n }\r\n }\r\n\r\n const setArAction = async (type: string) => {\r\n let uuid = v4();\r\n const mess: RealtimeData = {\r\n uuid: uuid,\r\n action: type,\r\n cmd: \"TEXT\",\r\n data: type,\r\n createdDate: new Date().getTime(),\r\n senderName: 'member' + uuid\r\n }\r\n audioVideo!.realtimeSendDataMessage(DATA_MESSAGE_TYPE.Command, JSON.stringify(mess));\r\n return () => {\r\n audioVideo!.realtimeUnsubscribeFromReceiveDataMessage(DATA_MESSAGE_TYPE.Command)\r\n }\r\n }\r\n\r\n const setDrawAction = async (isDraw: boolean) => {\r\n let uuid = v4();\r\n const mess: RealtimeData = {\r\n uuid: uuid,\r\n action: isDraw ? DATA_MESSAGE_ACTION.TurnOnDraw : DATA_MESSAGE_ACTION.TurnOffDraw,\r\n cmd: \"TEXT\",\r\n data: isDraw ? DATA_MESSAGE_ACTION.TurnOnDraw : DATA_MESSAGE_ACTION.TurnOffDraw,\r\n createdDate: new Date().getTime(),\r\n senderName: 'member' + uuid\r\n }\r\n audioVideo!.realtimeSendDataMessage(DATA_MESSAGE_TYPE.Command, JSON.stringify(mess));\r\n setOnARDraw(isDraw);\r\n return () => {\r\n audioVideo!.realtimeUnsubscribeFromReceiveDataMessage(DATA_MESSAGE_TYPE.Command)\r\n }\r\n }\r\n const setPointerAction = async (isPointer: boolean) => {\r\n let uuid = v4();\r\n const mess: RealtimeData = {\r\n uuid: uuid,\r\n action: isPointer ? DATA_MESSAGE_ACTION.TurnOnMouse : DATA_MESSAGE_ACTION.TurnOffMouse,\r\n cmd: \"TEXT\",\r\n data: isPointer ? DATA_MESSAGE_ACTION.TurnOnMouse : DATA_MESSAGE_ACTION.TurnOffMouse,\r\n createdDate: new Date().getTime(),\r\n senderName: 'member' + uuid\r\n }\r\n audioVideo!.realtimeSendDataMessage(DATA_MESSAGE_TYPE.Command, JSON.stringify(mess));\r\n setOnPointer(isPointer);\r\n return () => {\r\n audioVideo!.realtimeUnsubscribeFromReceiveDataMessage(DATA_MESSAGE_TYPE.Command)\r\n }\r\n }\r\n\r\n const setSwitchCallFunctionAction = async (onVoiceCall: boolean) => {\r\n let uuid = v4();\r\n const mess: RealtimeData = {\r\n uuid: uuid,\r\n action: onVoiceCall ? DATA_MESSAGE_ACTION.onVoiceCall : DATA_MESSAGE_ACTION.onVideoCall,\r\n cmd: \"TEXT\",\r\n data: onVoiceCall ? DATA_MESSAGE_ACTION.onVoiceCall : DATA_MESSAGE_ACTION.onVideoCall,\r\n createdDate: new Date().getTime(),\r\n senderName: 'member' + uuid,\r\n }\r\n audioVideo!.realtimeSendDataMessage(DATA_MESSAGE_TYPE.Command, JSON.stringify(mess));\r\n return () => {\r\n audioVideo!.realtimeUnsubscribeFromReceiveDataMessage(DATA_MESSAGE_TYPE.Command)\r\n }\r\n }\r\n\r\n const handleSwitchAction = async (onVoiceCall: boolean) => {\r\n if (!onVoiceCall) {\r\n setSwitchCallFunctionAction(onVoiceCall);\r\n return;\r\n }\r\n setOnVoiceCallMode(onVoiceCall);\r\n setSwitchCallFunctionAction(onVoiceCall);\r\n }\r\n\r\n\r\n const receiveChatData = (mess: any) => {\r\n const data = JSON.parse(mess.text()) as RealtimeData\r\n //strigger send message type call\r\n switch (data?.action.trim()) {\r\n case DATA_MESSAGE_ACTION.TurnOnFlash:\r\n setOnFlash(true)\r\n break;\r\n case DATA_MESSAGE_ACTION.TurnOffFlash:\r\n setOnFlash(false)\r\n break;\r\n case DATA_MESSAGE_ACTION.TurnOnAR:\r\n setOnAR(true)\r\n break;\r\n case DATA_MESSAGE_ACTION.TurnOffAR:\r\n setOnAR(false)\r\n break;\r\n case DATA_MESSAGE_ACTION.ArAvailable:\r\n setSwitchCallFunctionAction(onVoiceCallMode)\r\n setArAvailable(true)\r\n break;\r\n case DATA_MESSAGE_ACTION.ArNoAvailable:\r\n setSwitchCallFunctionAction(onVoiceCallMode)\r\n setArAvailable(false)\r\n break;\r\n case DATA_MESSAGE_ACTION.TurnOnDraw:\r\n setOnARDraw(true)\r\n break;\r\n case DATA_MESSAGE_ACTION.TurnOffDraw:\r\n setOnARDraw(false)\r\n break;\r\n case DATA_MESSAGE_ACTION.IsMobile:\r\n setIsMobile(true)\r\n break;\r\n case DATA_MESSAGE_ACTION.OCR:\r\n let dataOCR = data?.data || \"\";\r\n setOcrData(dataOCR);\r\n setOnOcrModal(true);\r\n setIsLoading(false);\r\n break;\r\n case DATA_MESSAGE_ACTION.acceptVideoCall:\r\n setOnVoiceCallMode(false);\r\n setShowSwitchFunction(true);\r\n setTimeout(() => setShowSwitchFunction(false), 7000);\r\n break;\r\n case DATA_MESSAGE_ACTION.rejectVideoCall:\r\n setOnVoiceCallMode(true);\r\n setShowRejectSwitchFunction(true);\r\n setTimeout(() => setShowRejectSwitchFunction(false), 7000);\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n return (\r\n \r\n \r\n {\r\n onVoiceCallMode ? (\r\n <>\r\n
\r\n \r\n \r\n
\r\n {\r\n !props.isWebVersion && (
\r\n } label=\"Switch\" onClick={() => handleSwitchAction(!onVoiceCallMode)} />\r\n
)\r\n }\r\n \r\n ) : (\r\n <>\r\n
\r\n \r\n \r\n \r\n
\r\n\r\n
\r\n {\r\n !props.isWebVersion && (
\r\n } label=\"Switch\" onClick={() => handleSwitchAction(!onVoiceCallMode)} />\r\n
)\r\n }\r\n \r\n {\r\n hasRemoteVideo && (\r\n \r\n {\r\n remoteVideoIsPause ? (\r\n <>\r\n } label=\"Capture Screenshot\" onClick={() => captureVideo(true)} />\r\n } label=\"Optical Character Recognition\" onClick={() => handleOCR()} />\r\n {\r\n !onAR && (onPointer ? (} label=\"Off Live Pointer\" onClick={() => setPointerAction(false)} />) : (} label=\"On Live Pointer\" onClick={() => setPointerAction(true)} />))\r\n }\r\n\r\n \r\n ) :\r\n (} label=\"Capture Screenshot\" onClick={() => captureVideo(false)} />)\r\n }\r\n {\r\n (isMobile && !remoteVideoIsPause && !overNumberAttendees) && (\r\n <>\r\n {\r\n (onAR && ArAvailable) ? (\r\n \r\n } label=\"Augmented Reality\" onClick={() => handleAR(false)} />\r\n } label=\"AR Actions\" onClick={() => { }} />}\r\n >\r\n \r\n setDrawAction(!onARDraw)}\r\n checked={onARDraw}\r\n children={Annotate}\r\n />\r\n setArAction(DATA_MESSAGE_ACTION.UndoAR)}\r\n children={Undo}\r\n />\r\n setArAction(DATA_MESSAGE_ACTION.RemoveAR)}\r\n children={Remove All}\r\n />\r\n \r\n \r\n ) : (} label=\"Augmented Reality\" onClick={() => handleAR(true)} />)\r\n }\r\n } label=\"Optical Character Recognition\" onClick={() => handleOCR()} />\r\n {\r\n !onAR && (onPointer ? (} label=\"Off Live Pointer\" onClick={() => setPointerAction(false)} />) : (} label=\"On Live Pointer\" onClick={() => setPointerAction(true)} />))\r\n }\r\n {\r\n (onFlash) ? (} label=\"Flashlight\" onClick={() => handleFlashLight(false)} />) : (} label=\"Enable flashlight\" onClick={() => handleFlashLight(true)} />)\r\n }\r\n \r\n )\r\n }\r\n {\r\n remoteVideoIsPause ? (} label=\"Start Video\" onClick={unPauseVideo} />) :\r\n (} label=\"Pause Video\" onClick={pauseVideo} />)\r\n }\r\n \r\n )\r\n }\r\n
\r\n \r\n )\r\n }\r\n } label=\"Leave\" onClick={toggleModal} />\r\n \r\n \r\n \r\n {vcpState.hasFirstStart ? t(\"End_meeting_Warning\") : t(\"Leave_meeting_Warning\")}\r\n \r\n
\r\n {\r\n vcpState.hasFirstStart ? (\r\n <>\r\n \r\n \r\n ) : (\r\n <>\r\n \r\n \r\n \r\n )\r\n }\r\n\r\n
\r\n
\r\n \r\n \r\n {(hasRemoteVideo && showArAvailable) &&\r\n (\r\n
\r\n \r\n {t(\"AR_mode\")}\r\n

{t(\"ar_mode_warning\")}

\r\n
\r\n
\r\n )\r\n }\r\n {isLoading &&\r\n \r\n \r\n }\r\n {onOcrModal && (\r\n setOnOcrModal(false)} ocrData={ocrData}>\r\n )}\r\n {showSwitchFunction &&\r\n (\r\n
\r\n \r\n {t(\"Switch_modal_title\")}\r\n {\r\n !onVoiceCallMode ? (\r\n

{t(\"Switch_modal_content_Video\")}

\r\n ) : (

{t(\"Switch_modal_content_Voice\")}

)\r\n }\r\n\r\n
\r\n
\r\n )\r\n }\r\n {showRejectSwitchFunction &&\r\n (\r\n
\r\n \r\n {t(\"Switch_modal_title\")}\r\n

{t(\"Reject_Switch_modal_content_Voice\")}

\r\n
\r\n
\r\n )\r\n }\r\n
\r\n\r\n );\r\n};\r\n\r\nexport default MeetingControls;\r\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport cx from 'clsx';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport { childrenUtils, createShorthandFactory, customPropTypes, getElementType, getUnhandledProps } from '../../lib';\n/**\n * Headers may contain subheaders.\n */\n\nfunction HeaderSubheader(props) {\n var children = props.children,\n className = props.className,\n content = props.content;\n var classes = cx('sub header', className);\n var rest = getUnhandledProps(HeaderSubheader, props);\n var ElementType = getElementType(HeaderSubheader, props);\n return /*#__PURE__*/React.createElement(ElementType, _extends({}, rest, {\n className: classes\n }), childrenUtils.isNil(children) ? content : children);\n}\n\nHeaderSubheader.handledProps = [\"as\", \"children\", \"className\", \"content\"];\nHeaderSubheader.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /** An element type to render as (string or function). */\n as: PropTypes.elementType,\n\n /** Primary content. */\n children: PropTypes.node,\n\n /** Additional classes. */\n className: PropTypes.string,\n\n /** Shorthand for primary content. */\n content: customPropTypes.contentShorthand\n} : {};\nHeaderSubheader.create = createShorthandFactory(HeaderSubheader, function (content) {\n return {\n content: content\n };\n});\nexport default HeaderSubheader;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport cx from 'clsx';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport { childrenUtils, customPropTypes, getElementType, getUnhandledProps } from '../../lib';\n/**\n * Header content wraps the main content when there is an adjacent Icon or Image.\n */\n\nfunction HeaderContent(props) {\n var children = props.children,\n className = props.className,\n content = props.content;\n var classes = cx('content', className);\n var rest = getUnhandledProps(HeaderContent, props);\n var ElementType = getElementType(HeaderContent, props);\n return /*#__PURE__*/React.createElement(ElementType, _extends({}, rest, {\n className: classes\n }), childrenUtils.isNil(children) ? content : children);\n}\n\nHeaderContent.handledProps = [\"as\", \"children\", \"className\", \"content\"];\nHeaderContent.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /** An element type to render as (string or function). */\n as: PropTypes.elementType,\n\n /** Primary content. */\n children: PropTypes.node,\n\n /** Additional classes. */\n className: PropTypes.string,\n\n /** Shorthand for primary content. */\n content: customPropTypes.contentShorthand\n} : {};\nexport default HeaderContent;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _without from \"lodash-es/without\";\nimport cx from 'clsx';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport { childrenUtils, customPropTypes, getElementType, getUnhandledProps, SUI, useValueAndKey, useTextAlignProp, useKeyOrValueAndKey, useKeyOnly } from '../../lib';\nimport Icon from '../Icon';\nimport Image from '../Image';\nimport HeaderSubheader from './HeaderSubheader';\nimport HeaderContent from './HeaderContent';\n/**\n * A header provides a short summary of content\n */\n\nfunction Header(props) {\n var attached = props.attached,\n block = props.block,\n children = props.children,\n className = props.className,\n color = props.color,\n content = props.content,\n disabled = props.disabled,\n dividing = props.dividing,\n floated = props.floated,\n icon = props.icon,\n image = props.image,\n inverted = props.inverted,\n size = props.size,\n sub = props.sub,\n subheader = props.subheader,\n textAlign = props.textAlign;\n var classes = cx('ui', color, size, useKeyOnly(block, 'block'), useKeyOnly(disabled, 'disabled'), useKeyOnly(dividing, 'dividing'), useValueAndKey(floated, 'floated'), useKeyOnly(icon === true, 'icon'), useKeyOnly(image === true, 'image'), useKeyOnly(inverted, 'inverted'), useKeyOnly(sub, 'sub'), useKeyOrValueAndKey(attached, 'attached'), useTextAlignProp(textAlign), 'header', className);\n var rest = getUnhandledProps(Header, props);\n var ElementType = getElementType(Header, props);\n\n if (!childrenUtils.isNil(children)) {\n return /*#__PURE__*/React.createElement(ElementType, _extends({}, rest, {\n className: classes\n }), children);\n }\n\n var iconElement = Icon.create(icon, {\n autoGenerateKey: false\n });\n var imageElement = Image.create(image, {\n autoGenerateKey: false\n });\n var subheaderElement = HeaderSubheader.create(subheader, {\n autoGenerateKey: false\n });\n\n if (iconElement || imageElement) {\n return /*#__PURE__*/React.createElement(ElementType, _extends({}, rest, {\n className: classes\n }), iconElement || imageElement, (content || subheaderElement) && /*#__PURE__*/React.createElement(HeaderContent, null, content, subheaderElement));\n }\n\n return /*#__PURE__*/React.createElement(ElementType, _extends({}, rest, {\n className: classes\n }), content, subheaderElement);\n}\n\nHeader.handledProps = [\"as\", \"attached\", \"block\", \"children\", \"className\", \"color\", \"content\", \"disabled\", \"dividing\", \"floated\", \"icon\", \"image\", \"inverted\", \"size\", \"sub\", \"subheader\", \"textAlign\"];\nHeader.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /** An element type to render as (string or function). */\n as: PropTypes.elementType,\n\n /** Attach header to other content, like a segment. */\n attached: PropTypes.oneOfType([PropTypes.bool, PropTypes.oneOf(['top', 'bottom'])]),\n\n /** Format header to appear inside a content block. */\n block: PropTypes.bool,\n\n /** Primary content. */\n children: PropTypes.node,\n\n /** Additional classes. */\n className: PropTypes.string,\n\n /** Color of the header. */\n color: PropTypes.oneOf(SUI.COLORS),\n\n /** Shorthand for primary content. */\n content: customPropTypes.contentShorthand,\n\n /** Show that the header is inactive. */\n disabled: PropTypes.bool,\n\n /** Divide header from the content below it. */\n dividing: PropTypes.bool,\n\n /** Header can sit to the left or right of other content. */\n floated: PropTypes.oneOf(SUI.FLOATS),\n\n /** Add an icon by icon name or pass an Icon. */\n icon: customPropTypes.every([customPropTypes.disallow(['image']), PropTypes.oneOfType([PropTypes.bool, customPropTypes.itemShorthand])]),\n\n /** Add an image by img src or pass an Image. */\n image: customPropTypes.every([customPropTypes.disallow(['icon']), PropTypes.oneOfType([PropTypes.bool, customPropTypes.itemShorthand])]),\n\n /** Inverts the color of the header for dark backgrounds. */\n inverted: PropTypes.bool,\n\n /** Content headings are sized with em and are based on the font-size of their container. */\n size: PropTypes.oneOf(_without(SUI.SIZES, 'big', 'massive', 'mini')),\n\n /** Headers may be formatted to label smaller or de-emphasized content. */\n sub: PropTypes.bool,\n\n /** Shorthand for Header.Subheader. */\n subheader: customPropTypes.itemShorthand,\n\n /** Align header content. */\n textAlign: PropTypes.oneOf(SUI.TEXT_ALIGNMENTS)\n} : {};\nHeader.Content = HeaderContent;\nHeader.Subheader = HeaderSubheader;\nexport default Header;","import React, { Fragment, useEffect, useLayoutEffect, useRef, useState } from 'react';\r\nimport { VideoTileGrid, UserActivityProvider, useMeetingManager, useAudioVideo, useActiveSpeakersState, useRosterState, RosterAttendeeType } from 'amazon-chime-sdk-component-library-react';\r\nimport './meeting.css'\r\n\r\nimport { MeetingMode } from '../../../types';\r\nimport MeetingDetails from '../../../containers/MeetingDetails';\r\nimport MeetingControls from '../../../containers/MeetingControls/MeetingControls';\r\nimport { useSelector } from 'react-redux';\r\nimport { addListAttendee, selectAttendeeState, selectListAttendeeState, selectActionMeetingState } from '../../../redux/meeting';\r\nimport { Header, Message } from 'semantic-ui-react';\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { useAppDispatch } from '../../../redux/store';\r\nimport { v4 } from 'uuid';\r\nimport { DATA_MESSAGE_ACTION, DATA_MESSAGE_TYPE } from '../../../helpers/AppConstants';\r\n\r\ntype RealtimeDataCmd = \"TEXT\" | \"WHITEBOARD\"\r\n\r\nexport type RealtimeData = {\r\n uuid: string\r\n action: string\r\n cmd: RealtimeDataCmd\r\n data: any\r\n createdDate: number\r\n senderName: string\r\n}\r\nconst MeetingView = (props: { mode: MeetingMode, mtype: string | null, isWebVersion: boolean}) => {\r\n const dispatchReduxToolkit = useAppDispatch()\r\n const meetingManager = useMeetingManager();\r\n const { roster } = useRosterState();\r\n const attendeeData = useSelector(selectAttendeeState);\r\n const actionMeeting = useSelector(selectActionMeetingState);\r\n const { t } = useTranslation();\r\n const attendees = Object.values(roster);\r\n const listAttendee = useSelector(selectListAttendeeState);\r\n const [showNotification, setShowNotification] = useState(false);\r\n const [notification, setNotification] = useState(\"\");\r\n const audioVideo = useAudioVideo();\r\n const ref = useRef() as React.MutableRefObject;\r\n const [width, setWidth] = useState(0);\r\n const [height, setHeight] = useState(0);\r\n const [isMouseDown, setIsMouseDown] = useState(false);\r\n const [isNewMemberJoined, setIsNewMemberJoined] = useState(false);\r\n\r\n useEffect(() => {\r\n function handleWindowResize() {\r\n setWidth(ref.current.clientWidth);\r\n setHeight(ref.current.clientHeight);\r\n }\r\n\r\n window.addEventListener('resize', handleWindowResize);\r\n\r\n return () => {\r\n window.removeEventListener('resize', handleWindowResize);\r\n };\r\n }, []);\r\n\r\n useEffect(() => {\r\n setWidth(ref.current?.offsetWidth);\r\n setHeight(ref.current?.offsetHeight);\r\n }, []);\r\n\r\n useEffect(() => {\r\n // //check attendee join or leave\r\n if (listAttendee[0]?.chimeAttendeeId != \"\" && attendees.length > listAttendee.length) {\r\n const output = attendees.filter(({ chimeAttendeeId: id1 }) => !listAttendee.some(({ chimeAttendeeId: id2 }) => id2 === id1));\r\n let attendeeChimeID = output[0]?.chimeAttendeeId;\r\n //join\r\n if (attendeeData.attendeeId !== attendeeChimeID) {\r\n setShowNotification(true);\r\n setIsNewMemberJoined(true);\r\n setNotification(\"New Attendee has join in the meeting\")\r\n setTimeout(() => {\r\n setShowNotification(false)\r\n }, 8000);\r\n }\r\n }\r\n if (listAttendee[0]?.chimeAttendeeId != \"\" && attendees.length < listAttendee.length) {\r\n const output = listAttendee.filter(({ chimeAttendeeId: id1 }) => !attendees.some(({ chimeAttendeeId: id2 }) => id2 === id1));\r\n //leave\r\n setShowNotification(true);\r\n setNotification(`${output[0]?.name}` + \" has leave out the meeting\")\r\n setTimeout(() => setShowNotification(false), 8000);\r\n }\r\n\r\n dispatchReduxToolkit(addListAttendee(attendees));\r\n }, [roster]);\r\n\r\n useEffect(() => {\r\n if (!meetingManager.meetingSession) {\r\n return;\r\n }\r\n\r\n meetingManager.meetingSession.audioVideo.addObserver({\r\n audioVideoDidStop: () => {\r\n window.close()\r\n },\r\n })\r\n }, [meetingManager.meetingSession]);\r\n\r\n\r\n const handleMouseDown = (event: any) => {\r\n setIsMouseDown(true);\r\n sendActionMouseDown(\"mouse_down\", event);\r\n };\r\n\r\n const handleMouseUp = (event: any) => {\r\n setIsMouseDown(false);\r\n sendActionMouseDown(\"mouse_up\", event);\r\n };\r\n\r\n const handleResetMemberJoined = () => {\r\n setIsNewMemberJoined(false);\r\n };\r\n\r\n const onMove = (event: any) => {\r\n //Get mouse position relative to element\r\n let rect = event.target.getBoundingClientRect();\r\n let localX = event.clientX - rect.left;\r\n let localY = event.clientY - rect.top;\r\n if ((actionMeeting.AR && actionMeeting.Draw)) {\r\n if (isMouseDown) {\r\n let data = {\r\n position: { x: localX, y: localY },\r\n resolution: {\r\n width: width,\r\n height: height\r\n },\r\n status: \"mouse_move\"\r\n }\r\n hanldeDrawPoint(data)\r\n }\r\n } else if ((actionMeeting.MousePointer)) {\r\n let data = {\r\n position: { x: localX, y: localY },\r\n resolution: {\r\n width: width,\r\n height: height\r\n }\r\n }\r\n hanldeMouseMove(data)\r\n }\r\n };\r\n\r\n const getPosition = (event: any) => {\r\n let rect = event.target.getBoundingClientRect();\r\n let localX = event.clientX - rect.left;\r\n let localY = event.clientY - rect.top;\r\n let data = {\r\n position: { x: localX, y: localY },\r\n resolution: {\r\n width: width,\r\n height: height\r\n }\r\n }\r\n if (actionMeeting.AR) {\r\n if (!actionMeeting.Draw) {\r\n hanldeClickPoint(data)\r\n }\r\n }\r\n };\r\n\r\n const hanldeClickPoint = async (data: any) => {\r\n let uuid = v4();\r\n const mess: RealtimeData = {\r\n uuid: uuid,\r\n action: DATA_MESSAGE_ACTION.Pointer,\r\n cmd: \"TEXT\",\r\n data: JSON.stringify(data),\r\n createdDate: new Date().getTime(),\r\n senderName: 'member' + uuid\r\n }\r\n audioVideo!.realtimeSendDataMessage(DATA_MESSAGE_TYPE.Command, JSON.stringify(mess));\r\n return () => {\r\n audioVideo!.realtimeUnsubscribeFromReceiveDataMessage(DATA_MESSAGE_TYPE.Command)\r\n }\r\n }\r\n const hanldeDrawPoint = async (data: any) => {\r\n let uuid = v4();\r\n const mess: RealtimeData = {\r\n uuid: uuid,\r\n action: DATA_MESSAGE_ACTION.Draw,\r\n cmd: \"TEXT\",\r\n data: JSON.stringify(data),\r\n createdDate: new Date().getTime(),\r\n senderName: 'member' + uuid\r\n }\r\n audioVideo!.realtimeSendDataMessage(DATA_MESSAGE_TYPE.Command, JSON.stringify(mess));\r\n return () => {\r\n audioVideo!.realtimeUnsubscribeFromReceiveDataMessage(DATA_MESSAGE_TYPE.Command)\r\n }\r\n }\r\n const hanldeMouseMove = async (data: any) => {\r\n let uuid = v4();\r\n const mess: RealtimeData = {\r\n uuid: uuid,\r\n action: DATA_MESSAGE_ACTION.MouseMove,\r\n cmd: \"TEXT\",\r\n data: JSON.stringify(data),\r\n createdDate: new Date().getTime(),\r\n senderName: 'member' + uuid\r\n }\r\n audioVideo!.realtimeSendDataMessage(DATA_MESSAGE_TYPE.Command, JSON.stringify(mess));\r\n return () => {\r\n audioVideo!.realtimeUnsubscribeFromReceiveDataMessage(DATA_MESSAGE_TYPE.Command)\r\n }\r\n }\r\n const sendActionMouseDown = async (type: string, event: any) => {\r\n if ((actionMeeting.AR && actionMeeting.Draw)) {\r\n let rect = event.target.getBoundingClientRect();\r\n let localX = event.clientX - rect.left;\r\n let localY = event.clientY - rect.top;\r\n let data = {\r\n position: { x: localX, y: localY },\r\n resolution: {\r\n width: width,\r\n height: height\r\n },\r\n status: type\r\n }\r\n // console.log(\"status draw:=======: \", data);\r\n let uuid = v4();\r\n const mess: RealtimeData = {\r\n uuid: uuid,\r\n action: DATA_MESSAGE_ACTION.Draw,\r\n cmd: \"TEXT\",\r\n data: JSON.stringify(data),\r\n createdDate: new Date().getTime(),\r\n senderName: 'member' + uuid\r\n }\r\n audioVideo!.realtimeSendDataMessage(DATA_MESSAGE_TYPE.Command, JSON.stringify(mess));\r\n return () => {\r\n audioVideo!.realtimeUnsubscribeFromReceiveDataMessage(DATA_MESSAGE_TYPE.Command)\r\n }\r\n }\r\n\r\n }\r\n\r\n return (\r\n \r\n {meetingManager.meetingSession ?\r\n
\r\n
\r\n }\r\n >\r\n \r\n
\r\n
\r\n \r\n
\r\n\r\n {showNotification &&\r\n (\r\n
\r\n \r\n {t(\"Attendees_Label\")}\r\n

{notification}

\r\n
\r\n
\r\n )\r\n }\r\n
\r\n :\r\n
{t(\"Meeting_Ended\")}
\r\n }\r\n
\r\n );\r\n};\r\n\r\nexport default MeetingView;\r\n","import React, { Fragment, useEffect, useState } from 'react';\r\nimport {\r\n Button,\r\n DeviceLabels,\r\n useMeetingManager,\r\n} from 'amazon-chime-sdk-component-library-react';\r\nimport { MeetingSessionConfiguration } from 'amazon-chime-sdk-js';\r\nimport { MeetingMode } from '../../types';\r\nimport { MeetingManagerJoinOptions } from 'amazon-chime-sdk-component-library-react/lib/providers/MeetingProvider/types';\r\nimport meetingConfig from '../../services/MeetingConfig';\r\nimport DeviceSetup from '../../components/views/DeviceSetup/DeviceSetup';\r\nimport MeetingView from '../../components/views/Meeting';\r\nimport { useSelector } from 'react-redux';\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { leaveMeeting, selectMeetingState } from '../../redux/meeting';\r\nimport {\r\n visualConnectSetFirstStart\r\n} from \"../../redux/visualConnect\";\r\nimport { useAppDispatch } from '../../redux/store';\r\nimport httpPCSPublic from '../../services/HttpServicePCSPublic';\r\n\r\ninterface MeetingFormProps {\r\n mtype: string | null,\r\n paramIsWebVer: boolean\r\n}\r\n\r\nconst MeetingForm = ({\r\n mtype,\r\n paramIsWebVer\r\n}: MeetingFormProps) => {\r\n const dispatchReduxToolkit = useAppDispatch();\r\n const meetingManager = useMeetingManager();\r\n const [deviceMode, setDeviceMode] = useState(false);\r\n const [meetingMode, setMeetingMode] = useState(false);\r\n const meetingData = useSelector(selectMeetingState);\r\n const { t } = useTranslation();\r\n const handleJoinMeeting = async () => {\r\n\r\n // meetingManager.getAttendee = createGetAttendeeCallback(account.chimeUserId);\r\n meetingManager.getAttendee = async (chimeAttendeeId: string, externalUserId?: string) => {\r\n const headers = {\r\n 'ApiKey': process.env.REACT_APP_PCS_KEY || \"\"\r\n };\r\n const res = await httpPCSPublic.get(`/api/Chime/GetNameChimeUser?ciamId=${externalUserId}`, { headers });\r\n return {\r\n name: res.data.name,\r\n };\r\n }\r\n try {\r\n const JoinInfo = meetingData;\r\n const meetingSessionConfiguration = new MeetingSessionConfiguration(JoinInfo?.Meeting, JoinInfo?.Attendee);\r\n if (\r\n meetingConfig.postLogger &&\r\n meetingSessionConfiguration.meetingId &&\r\n meetingSessionConfiguration.credentials &&\r\n meetingSessionConfiguration.credentials.attendeeId\r\n ) {\r\n const existingMetadata = meetingConfig.postLogger.metadata;\r\n meetingConfig.postLogger.metadata = {\r\n ...existingMetadata,\r\n meetingId: meetingSessionConfiguration.meetingId,\r\n attendeeId: meetingSessionConfiguration.credentials.attendeeId,\r\n };\r\n }\r\n\r\n meetingSessionConfiguration.enableSimulcastForUnifiedPlanChromiumBasedBrowsers = false;\r\n\r\n meetingSessionConfiguration.keepLastFrameWhenPaused = true;//keepLastFrameWhenPaused;\r\n const options: MeetingManagerJoinOptions = {\r\n deviceLabels: DeviceLabels.AudioAndVideo,//meetingMode === MeetingMode.Spectator ? DeviceLabels.None : DeviceLabels.AudioAndVideo,\r\n enableWebAudio: true//isWebAudioEnabled,\r\n };\r\n\r\n await meetingManager.join(meetingSessionConfiguration, options);\r\n setDeviceMode(true)\r\n // }\r\n } catch (error) {\r\n // updateErrorMessage((error as Error).message);\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n handleJoinMeeting();\r\n }, []);\r\n\r\n useEffect(() => {\r\n const handleTabClose = () => {\r\n dispatchReduxToolkit(leaveMeeting());\r\n dispatchReduxToolkit(visualConnectSetFirstStart(false));\r\n };\r\n window.addEventListener('beforeunload', handleTabClose);\r\n return () => {\r\n window.removeEventListener('beforeunload', handleTabClose);\r\n };\r\n }, []);\r\n return (\r\n \r\n {meetingMode ? :\r\n deviceMode && \r\n \r\n \r\n \r\n }\r\n \r\n );\r\n};\r\n\r\nexport default MeetingForm;\r\n","import { GlobalStyles, MeetingProvider, useVoiceFocus, VoiceFocusProvider } from 'amazon-chime-sdk-component-library-react';\r\nimport { AudioInputDevice, Device, VoiceFocusTransformDevice } from 'amazon-chime-sdk-js';\r\nimport React, { Fragment, useEffect, useState } from 'react';\r\nimport { ThemeProvider } from 'styled-components';\r\nimport MeetingForm from '../../../containers/MeetingForm/MeetingForm';\r\nimport { addAttendee } from '../../../redux/meeting';\r\nimport { lightTheme } from 'amazon-chime-sdk-component-library-react';\r\nimport { useParams } from \"react-router-dom\";\r\nimport { useAppDispatch } from '../../../redux/store';\r\nimport { Button, Grid, Modal } from 'semantic-ui-react';\r\nimport './WindowMeeting.css'\r\nimport CustomLoader from '../../../common-components/RDComponents/CustomLoader';\r\n\r\nconst MeetingProviderWithDeviceReplacement: React.FC = ({ children }) => {\r\n const { addVoiceFocus } = useVoiceFocus();\r\n\r\n const onDeviceReplacement = (\r\n nextDevice: string,\r\n currentDevice: AudioInputDevice\r\n ): Promise => {\r\n if (currentDevice instanceof VoiceFocusTransformDevice) {\r\n return addVoiceFocus(nextDevice);\r\n }\r\n return Promise.resolve(nextDevice);\r\n };\r\n\r\n const meetingConfigValue = {\r\n onDeviceReplacement,\r\n };\r\n\r\n return {children};\r\n};\r\n\r\nconst WindowMeeting = () => {\r\n\r\n const dispatchReduxToolkit = useAppDispatch();\r\n const [isLoading, setIsLoading] = useState(false);\r\n const [vfConfigeValue, setVfConfigeValue] = useState();\r\n const [displayErrorModal, setDisplayErrorModal] = useState(false);\r\n const [errorModalMessage, setErrorModalMessage] = useState(\"\");\r\n const { meeting } = useParams<{\r\n meeting?: string;\r\n }>();\r\n const urlParams = new URLSearchParams(window.location.search);\r\n const paramCiamId = window.location.search !== \"\" ? urlParams.get(\"user_id\") : \"\";\r\n const paramMType = window.location.search !== \"\" ? urlParams.get(\"mtype\") : \"\";\r\n const paramIsWebVer = window.location.search !== \"\" ? urlParams.get(\"isWebVer\") : \"\";\r\n\r\n function getMobileOperatingSystem() {\r\n var userAgent = navigator.userAgent || navigator.vendor;\r\n if (userAgent.match(/iPad/i) || userAgent.match(/iPhone/i) || userAgent.match(/iPod/i)) {\r\n return 'iOS';\r\n }\r\n else if (userAgent.match(/Android/i)) {\r\n return 'Android';\r\n }\r\n else if (userAgent.match(/Windows/i)) {\r\n return 'Windows';\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n let appURL = \"\";\r\n let isMobile = false;\r\n switch (getMobileOperatingSystem()) {\r\n case 'Android':\r\n appURL = process.env.REACT_APP_MOBILE_APP_CHPLAY_URL || \"\";\r\n isMobile = true;\r\n break;\r\n case 'iOS':\r\n appURL = process.env.REACT_APP_MOBILE_APP_APPSTORE_URL || \"\";\r\n isMobile = true;\r\n break;\r\n case 'Windows':\r\n appURL = process.env.REACT_APP_REDI_PAGE || \"\";\r\n isMobile = false;\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n if (isMobile) {\r\n setTimeout(() => {\r\n window.location.href = appURL;\r\n }, 1000);\r\n } else {\r\n if (paramCiamId) {\r\n fetchMeetingInfor();\r\n } else {\r\n setTimeout(() => {\r\n window.location.href = appURL;\r\n }, 1000);\r\n }\r\n }\r\n }, [])\r\n\r\n const fetchMeetingInfor = async () => {\r\n if (meeting) {\r\n setIsLoading(true);\r\n const attendeeReq = {\r\n meetingId: meeting,\r\n externalUserId: paramCiamId\r\n }\r\n const meetingInfor = await dispatchReduxToolkit(addAttendee(attendeeReq));\r\n\r\n if (addAttendee.fulfilled.match(meetingInfor)) {\r\n console.log(meetingInfor)\r\n setIsLoading(false);\r\n setVfConfigeValue({\r\n \"spec\": {\r\n \"name\": \"ns_es\"\r\n },\r\n \"createMeetingResponse\": meetingInfor.payload.dataObject.createMeetingResponse\r\n })\r\n\r\n }\r\n if (addAttendee.rejected.match(meetingInfor)) {\r\n setTimeout(() => {\r\n setIsLoading(false);\r\n setErrorModalMessage(\"Cannot join video session\");\r\n setDisplayErrorModal(true);\r\n }, 2000);\r\n };\r\n }\r\n }\r\n\r\n const onTrigger = () => {\r\n setDisplayErrorModal(false);\r\n };\r\n\r\n return (\r\n\r\n \r\n \r\n \r\n {isLoading &&\r\n \r\n \r\n }\r\n {vfConfigeValue && \r\n \r\n \r\n \r\n }\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {errorModalMessage && (\r\n \r\n {errorModalMessage}\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\nexport default WindowMeeting;\r\n","import { FC, Fragment, useState } from \"react\";\r\nimport { Button, Dropdown, Icon } from \"semantic-ui-react\";\r\nimport { ReactComponent as Language } from \"../../../../assets/svg/languagePopup.svg\";\r\nimport i18n from \"i18next\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport React from \"react\";\r\nimport \"./css/TranslateButton.css\";\r\nimport { languageOptions } from \"../../../../translations/languageOptions\";\r\nimport { useAppDispatch } from \"../../../../redux/store\";\r\nimport { SetIsTranslate, selectIsTranslate } from \"../../../../redux/chimeSlide\";\r\nimport { useSelector } from \"react-redux\";\r\n\r\nconst TranslateButton: FC = () => {\r\n const [language, setLanguage] = useState(i18n.language);\r\n const { t } = useTranslation();\r\n const isTranslate = useSelector(selectIsTranslate);\r\n const dispatchReduxToolkit = useAppDispatch();\r\n const switchLanguage = (event: any, data: any) => {\r\n i18n.changeLanguage(data.value);\r\n setLanguage(data.value)\r\n dispatchReduxToolkit(SetIsTranslate({\r\n ...isTranslate,\r\n langTarget: language,\r\n }));\r\n };\r\n\r\n return (\r\n \r\n
\r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default TranslateButton;\r\n","import { Fragment, FC } from \"react\";\r\nimport boschSupergraphic from \"../../../../assets/Bosch-Supergraphic_.png\";\r\nimport logo from \"../../../../assets/Bosch_DigitalLogo_BlackAnchor_144x96px.png\";\r\nimport \"./css/HeaderLandingPage.css\";\r\nimport { Image } from \"semantic-ui-react\";\r\nimport { Link } from \"react-router-dom\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport React from \"react\";\r\nimport routes from \"../../../../routes\";\r\nimport TranslateButton from \"./TranslateButton\";\r\n\r\ninterface HeaderLandingPageProps {\r\n noTranslate?: boolean\r\n}\r\n\r\nconst HeaderLandingPage: FC<\r\n HeaderLandingPageProps\r\n> = ({ noTranslate }) => {\r\n const { t } = useTranslation();\r\n return (\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n {\r\n !noTranslate && \r\n }\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default HeaderLandingPage;\r\n","/* eslint-disable no-plusplus */\r\n// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\r\n// SPDX-License-Identifier: MIT-0\r\n\r\nimport { Badge, formatDate } from 'amazon-chime-sdk-component-library-react'\r\nimport React from 'react'\r\n\r\nimport './styles.css'\r\n\r\nconst insertDateHeadersPublic = (messageItems) => {\r\n const items = [...messageItems]\r\n const dateMap = {}\r\n let messageDate\r\n let dateCount = 0\r\n\r\n messageItems.forEach((m, i) => {\r\n if (!m || !m.content) {\r\n return // not a message\r\n }\r\n if (i === 0) {\r\n items.splice(\r\n 0,\r\n 0,\r\n
\r\n
\r\n \r\n
\r\n
\r\n

You have joined the session…

\r\n
\r\n
,\r\n )\r\n dateMap[new Date(m.createdTimestamp).toLocaleDateString()] = 1\r\n dateCount++\r\n } else if (\r\n new Date(m.createdTimestamp).toLocaleDateString() !== messageDate &&\r\n !dateMap[new Date(m.createdTimestamp).toLocaleDateString()]\r\n ) {\r\n items.splice(\r\n i + dateCount,\r\n 0,\r\n ,\r\n )\r\n messageDate = new Date(m.createdTimestamp).toLocaleDateString()\r\n dateMap[new Date(m.createdTimestamp).toLocaleDateString()] = 1\r\n dateCount++\r\n }\r\n })\r\n return items\r\n}\r\n\r\nexport default insertDateHeadersPublic\r\n","import React, { useEffect, useRef, useState } from 'react';\r\nimport { AttachmentService } from '../../../../services/AttachmentService';\r\nimport defaultImage from '../../../../assets/default-img.jpg';\r\nimport Boschicon from '../../../../common-components/boschIcon/Boschicon';\r\nimport './Attachment.css'\r\ninterface AttachmentProps {\r\n fileKey: string,\r\n name: string,\r\n size: string,\r\n isImage: boolean\r\n}\r\n\r\nconst Attachment = ({ fileKey, name, size = \"0\", isImage }: AttachmentProps) => {\r\n const [url, setUrl] = useState(defaultImage);\r\n const [downUrl, setDownUrl] = useState(\"\");\r\n\r\n const attachmentService = AttachmentService.getInstance();\r\n\r\n useEffect(() => {\r\n setDownUrl(`${process.env.REACT_APP_API_KEY_PCS}/api/Document/DownloadFile/` + fileKey + `/${name}`);\r\n async function getUrl() {\r\n const data = await attachmentService.getPresignURL(fileKey);\r\n setUrl(data);\r\n }\r\n getUrl();\r\n }, [fileKey]);\r\n\r\n const handleOnClick = (url: string) => {\r\n window.open(url, '_blank')\r\n }\r\n\r\n return (\r\n // \r\n
\r\n
\r\n
\r\n \r\n
\r\n
handleOnClick(downUrl)}>\r\n

{name}

\r\n

{size}

\r\n
\r\n
\r\n {\r\n isImage && (\r\n
\r\n \r\n
\r\n )\r\n }\r\n
\r\n );\r\n};\r\n\r\nexport default Attachment;\r\n","import React, { useState } from 'react';\r\nimport {\r\n ChatBubble,\r\n ChatBubbleContainer,\r\n formatDate,\r\n InfiniteList,\r\n MessageAttachment\r\n} from 'amazon-chime-sdk-component-library-react';\r\n\r\nimport {\r\n listChannelMessages,\r\n createMemberArn\r\n} from '../../../../api/ChimeAPI';\r\nimport './PublicMessages.css';\r\nimport { useAppDispatch } from '../../../../redux/store';\r\nimport { ChannelMessagesState, ChannelSetMessage, MessageState, SetIsTranslate, selectIsTranslate } from '../../../../redux/chimeSlide';\r\nimport { AttachmentService } from '../../../../services/AttachmentService';\r\nimport { liveTranslateMessage } from '../../../../helpers/api';\r\nimport { useTranslation } from 'react-i18next';\r\nimport insertDateHeadersPublic from '../../../../utilities/insertDateHeadersPublic';\r\nimport { useSelector } from 'react-redux';\r\nimport { CommonService } from '../../../../services/Common';\r\nimport Attachment from '../PublicInputChat/Attachment';\r\nimport i18n from '../../../../translations/i18n';\r\nimport { senderNameType } from '../../../../redux/assistantBot';\r\nimport formatTime from '../../../../services/FormatTime';\r\n\r\ninterface MessagesProps {\r\n messages: MessageState,\r\n channelArn?: string,\r\n userId?: string,\r\n // isTranslate: boolean,\r\n translateModeData: any,\r\n uuid: string\r\n}\r\n\r\nconst PublicMessages = ({ messages, channelArn, userId, translateModeData, uuid }: MessagesProps) => {\r\n const { t } = useTranslation()\r\n const [isLoading, setIsLoading] = useState(false);\r\n const isTranslate = useSelector(selectIsTranslate);\r\n const dispatchReduxToolkit = useAppDispatch();\r\n var isLoadImg = false;\r\n const browserLanguage = i18n.language;\r\n\r\n const resize = (size: string) => {\r\n let size_num = Number(size)\r\n return size_num < 1024 ? `${size} bytes` : size_num < 1024 * 1024 ? `${String((size_num / 1024).toFixed(2))} KB` : `${String((size_num / 1024 / 1024).toFixed(2))} MB`\r\n }\r\n\r\n const onTranslate = async (message: string) => {\r\n if (isTranslate.status) {\r\n dispatchReduxToolkit(SetIsTranslate({\r\n status: false,\r\n langSource: \"auto\",\r\n langTarget: \"auto\",\r\n languagebox: false\r\n }));\r\n } else {\r\n let messageDetectLanguage = await CommonService.detectLanguage({ text: message });\r\n dispatchReduxToolkit(SetIsTranslate({\r\n status: true,\r\n langSource: messageDetectLanguage,\r\n langTarget: browserLanguage,\r\n languagebox: true\r\n }));\r\n }\r\n\r\n }\r\n\r\n const handleScrollTop = async () => {\r\n\r\n if (isLoadImg) {\r\n isLoadImg = false;\r\n return;\r\n }\r\n\r\n setIsLoading(true);\r\n if (!messages?.NextToken) {\r\n setIsLoading(false);\r\n return;\r\n }\r\n const oldMessages = await listChannelMessages(\r\n channelArn,\r\n userId,\r\n messages.NextToken\r\n );\r\n\r\n const message_translate = await Promise.all(oldMessages.Messages.map(async (message: any) => {\r\n if (createMemberArn(userId) !== message.Sender.Arn && translateModeData.isTranslate) {\r\n // const sourceLanguageCode = JSON.parse(message.Metadata)?.language || \"\";\r\n const translateMessage = await liveTranslateMessage(message.Content, translateModeData.langSource, translateModeData.langTarget);\r\n return { ...message, Content: translateMessage }\r\n }\r\n return message;\r\n }));\r\n\r\n const newMessages = [...message_translate, ...messages?.ChannelMessages ? messages.ChannelMessages : []];\r\n dispatchReduxToolkit(ChannelSetMessage({ ChannelMessages: newMessages, NextToken: oldMessages.NextToken }));\r\n setIsLoading(false);\r\n };\r\n\r\n\r\n\r\n\r\n let lastSeen = -1;\r\n let lastSent = -1;\r\n\r\n const flattenedMessages = messages.ChannelMessages.map((m: ChannelMessagesState, index: number) => {\r\n\r\n const content = !m.Content || m.Redacted ? '(Deleted)' : m.Content;\r\n let editedNote;\r\n if (m.LastEditedTimestamp && !m.Redacted) {\r\n const time = formatTime(m.LastEditedTimestamp);\r\n const date = formatDate(\r\n m.LastEditedTimestamp,\r\n undefined,\r\n undefined,\r\n 'today',\r\n 'yesterday'\r\n );\r\n editedNote = (\r\n {` (edited ${date} at ${time})`}\r\n );\r\n }\r\n\r\n const messageStatus = m.Status.Value == null ? 'SENT' : m.Status.Value;\r\n let statusNote;\r\n if (messageStatus !== 'SENT') {\r\n statusNote = (\r\n {` (${messageStatus})`}\r\n );\r\n } else {\r\n lastSent = index;\r\n }\r\n\r\n if (m.Metadata && m.Sender.Arn === createMemberArn(userId)) {\r\n lastSeen = JSON.parse(m.Metadata)?.status === \"Read\" ? index : lastSeen;\r\n }\r\n\r\n return {\r\n content: content,\r\n editedNote: editedNote,\r\n messageId: m.MessageId,\r\n createdTimestamp: m.CreatedTimestamp,\r\n redacted: m.Redacted,\r\n senderName: m.Sender.Name,\r\n senderId: m.Sender.Arn,\r\n metadata: m.Metadata,\r\n status: m.Status.Value,\r\n statusNote: statusNote\r\n };\r\n });\r\n\r\n const attachmentService = AttachmentService.getInstance();\r\n\r\n const onloadimg = () => {\r\n isLoadImg = true;\r\n }\r\n\r\n const detectSenderName = (message: any) => {\r\n let technician = senderNameType.technician;\r\n if (message.senderId.includes(technician)) {\r\n return message.senderName\r\n }\r\n\r\n return \"Bosch Expert\"\r\n }\r\n\r\n const listItems = insertDateHeadersPublic(flattenedMessages);\r\n\r\n const messageList = listItems.map((m, i, self) => {\r\n if (!m.content) {\r\n return m;\r\n }\r\n\r\n let hasAttachment = -1;\r\n\r\n let metadata: {\r\n isMeetingInfo: boolean,\r\n attachment: {\r\n fileKey: string,\r\n type: string,\r\n size: string,\r\n name: string\r\n },\r\n status: string,\r\n meeting: {\r\n meetingId: string,\r\n pathRoute: string\r\n },\r\n onStartVoiceCall: boolean\r\n } = {\r\n isMeetingInfo: false,\r\n attachment: {\r\n fileKey: '',\r\n type: '',\r\n size: '',\r\n name: ''\r\n },\r\n status: '',\r\n meeting: {\r\n meetingId: '',\r\n pathRoute: ''\r\n },\r\n onStartVoiceCall: false\r\n };\r\n\r\n let preSignURL;\r\n\r\n if (m.metadata) {\r\n metadata = JSON.parse(m.metadata);\r\n if (metadata.isMeetingInfo) {\r\n return m;\r\n };\r\n\r\n if (metadata?.attachment?.fileKey) {\r\n preSignURL = attachmentService.getPresignURL(metadata.attachment.fileKey);\r\n if (metadata.attachment?.type.includes('image')) {\r\n hasAttachment = 0;\r\n } else {\r\n hasAttachment = 1;\r\n }\r\n }\r\n }\r\n\r\n const variant = createMemberArn(userId) === m.senderId ? 'outgoing' : 'incoming';\r\n\r\n const prevMessage = self[i - 1];\r\n const nextMessage = self[i + 1];\r\n // if (!m.content) {\r\n // nextMessage = self[i + 2];\r\n // }\r\n\r\n let statusMessageShow = true;\r\n let showName = true;\r\n let createdTimestamp = null;\r\n let senderName = detectSenderName(m);\r\n if (m.senderId && prevMessage?.senderId && m.senderId === prevMessage?.senderId) {\r\n showName = false;\r\n }\r\n createdTimestamp = formatTime(m.createdTimestamp);\r\n\r\n if (m.senderId && nextMessage?.senderId && m.senderId === nextMessage?.senderId) {\r\n try {\r\n\r\n if (nextMessage.status === m.status) {\r\n statusMessageShow = false;\r\n }\r\n //TODO:\r\n // if (nextMessage.metadata != m.metadata) {\r\n // statusMessageShow = true;\r\n // }\r\n\r\n if (JSON.parse(nextMessage.metadata || { status: \"\" }).status != metadata.status) {\r\n statusMessageShow = true;\r\n }\r\n\r\n if ((Math.abs(nextMessage.createdTimestamp.getTime() - m.createdTimestamp.getTime()) / 1000 / 60) > 1) {\r\n createdTimestamp = formatTime(m.createdTimestamp);\r\n } else {\r\n createdTimestamp = null;\r\n }\r\n } catch {\r\n createdTimestamp = null;\r\n }\r\n }\r\n\r\n if (metadata.status !== \"\" && i < (lastSeen + (self.length - flattenedMessages.length) - 1)) {\r\n statusMessageShow = false;\r\n }\r\n if (metadata.status == \"\" && (i <= (lastSent + (self.length - flattenedMessages.length) - 1) || i <= (lastSeen + (self.length - flattenedMessages.length) - 1))) {\r\n statusMessageShow = false;\r\n }\r\n\r\n if (variant === 'outgoing' && statusMessageShow)\r\n\r\n if (metadata.status) {\r\n createdTimestamp = createdTimestamp ? createdTimestamp + `(${t('Read_panel')})` : `(${t('Read_panel')})`;\r\n } else {\r\n createdTimestamp = createdTimestamp ? createdTimestamp + `(${t('Sent_panel')})` : `(${t('Sent_panel')})`;\r\n }\r\n\r\n return (\r\n
\r\n\r\n {variant === 'outgoing' ? <>\r\n \r\n\r\n \r\n {hasAttachment !== -1 &&\r\n
\r\n {hasAttachment === 0 &&\r\n \r\n }\r\n {hasAttachment === 1 &&\r\n \r\n }\r\n
\r\n }\r\n {m.content}\r\n {metadata?.meeting?.meetingId && {t('Link_label')}}\r\n\r\n \r\n \r\n :\r\n \r\n {showName ?\r\n <>\r\n \r\n {hasAttachment !== -1 &&\r\n
\r\n {hasAttachment === 0 &&\r\n // handleAttachmentClick(`${process.env.REACT_APP_API_KEY_PCS}/api/Document/DownloadFile/` + metadata.attachment.fileKey + `/${metadata.attachment.name}`)} />\r\n \r\n }\r\n {hasAttachment === 1 &&\r\n \r\n }\r\n
\r\n }\r\n
\r\n {m.content}\r\n {metadata?.meeting?.meetingId && {t('Link_label')}}\r\n {\r\n <>\r\n

\r\n onTranslate(m.content)}>{isTranslate.status ? t('Dis_translation') : t('En_translation')}\r\n \r\n }\r\n
\r\n \r\n
{createdTimestamp}
\r\n \r\n\r\n :\r\n\r\n <>\r\n \r\n
\r\n {hasAttachment !== -1 &&\r\n
\r\n {hasAttachment === 0 &&\r\n \r\n }\r\n {hasAttachment === 1 &&\r\n \r\n }\r\n
\r\n }\r\n {m.content}\r\n {metadata?.meeting?.meetingId && {t('Link_label')}}\r\n {<>\r\n

\r\n onTranslate(m.content)}>{isTranslate.status ? t('Dis_translation') : t('En_translation')}\r\n \r\n }\r\n
\r\n \r\n
{createdTimestamp}
\r\n \r\n\r\n }\r\n \r\n }\r\n\r\n
\r\n );\r\n });\r\n\r\n return (\r\n
\r\n {(messages) &&\r\n \r\n }\r\n
\r\n );\r\n};\r\nexport default PublicMessages;","import React, { useState, useRef, Fragment, useEffect } from 'react'\r\nimport {\r\n Persistence,\r\n MessageType,\r\n sendChannelMessage,\r\n updateChannelReadMarker,\r\n} from '../../../../api/ChimeAPI'\r\nimport './Input.css'\r\nimport {\r\n Button,\r\n Icon,\r\n Input as InputAV,\r\n Popup,\r\n} from 'semantic-ui-react'\r\nimport { EmojiClickData } from 'emoji-picker-react'\r\nimport { ReactComponent as Emoji } from '../../../../assets/svg/emoji-happy.svg'\r\nimport ModalGetEmoji from '../../../../components/modals/ModalGetEmoji'\r\nimport { useTranslation } from 'react-i18next'\r\nimport { checkText } from 'smile2emoji'\r\nimport Boschicon from '../../../../common-components/boschIcon/Boschicon'\r\nimport autosize from 'autosize'\r\ninterface InputProps {\r\n activeChannelArn: string\r\n member: string\r\n browserLanguage: string\r\n}\r\n\r\nconst PublicInputMessage = ({\r\n activeChannelArn,\r\n member,\r\n browserLanguage,\r\n}: InputProps) => {\r\n const [text, setText] = useState('')\r\n const [openEmoji, setOpenEmoji] = useState(false)\r\n const inputRef = useRef()\r\n const { t } = useTranslation()\r\n const memberSender = { userId: member }\r\n const [countWordMesssage, setCountWordMesssage] = useState(0)\r\n const maxSizeMessageInWord = 4000;\r\n const resetState = () => {\r\n setText('')\r\n setCountWordMesssage(0)\r\n }\r\n\r\n const onChange = (e: any) => {\r\n let text = e.target.value\r\n //convert text to emoji\r\n let result = checkText(text)\r\n let countWord = result.length;\r\n if (countWord <= maxSizeMessageInWord) {\r\n setText(result);\r\n setCountWordMesssage(countWord)\r\n }\r\n\r\n if (countWord > maxSizeMessageInWord) {\r\n let maxSizeMessageInWordInText = result.substring(0, maxSizeMessageInWord);\r\n setText(maxSizeMessageInWordInText);\r\n setCountWordMesssage(maxSizeMessageInWordInText.length)\r\n }\r\n\r\n\r\n }\r\n\r\n const onSubmit = async (e: any) => {\r\n e.preventDefault()\r\n let textMessage = text;\r\n const options = {\r\n language: browserLanguage,\r\n isBoschExpert: true\r\n }\r\n if ((textMessage.trim() !== \"\") && (countWordMesssage < maxSizeMessageInWord)) {\r\n await sendChannelMessage(\r\n activeChannelArn,\r\n textMessage,\r\n Persistence.PERSISTENT,\r\n MessageType.STANDARD,\r\n memberSender,\r\n JSON.stringify(options),\r\n )\r\n updateChannelReadMarker(activeChannelArn, memberSender.userId)\r\n resetState()\r\n }\r\n }\r\n\r\n const clearInput = async (e: any) => {\r\n e.preventDefault()\r\n setText(\"\");\r\n }\r\n\r\n const getEmoji = (data: EmojiClickData) => {\r\n setText(text + data.emoji)\r\n setOpenEmoji(false)\r\n }\r\n\r\n const insertLineBreak = () => {\r\n const textarea = inputRef.current;\r\n\r\n if (!textarea) {\r\n return;\r\n }\r\n\r\n const { selectionStart, selectionEnd, value } = textarea;\r\n const newText = `${value.substring(0, selectionStart)}\\n${value.substring(selectionEnd)}`;\r\n\r\n setText(newText);\r\n\r\n // Move the cursor to the position after the inserted line break\r\n const newPosition = selectionStart + 1;\r\n textarea.setSelectionRange(newPosition, newPosition);\r\n };\r\n\r\n useEffect(() => {\r\n if (inputRef.current) {\r\n autosize(inputRef.current);\r\n return () => {\r\n autosize.destroy(inputRef.current!);\r\n };\r\n }\r\n }, [text, inputRef.current]);\r\n\r\n\r\n return (\r\n
\r\n
\r\n \r\n
\r\n ) => {\r\n if (e.key === 'Enter' && e.altKey) {\r\n e.preventDefault();\r\n insertLineBreak();\r\n } else if (e.key === 'Enter') {\r\n onSubmit(e);\r\n }\r\n }}\r\n ref={inputRef}\r\n />\r\n
\r\n
= maxSizeMessageInWord) ? 'input-text-count limited' : 'input-text-count'}>\r\n

{`${countWordMesssage}/${maxSizeMessageInWord}`}

\r\n
\r\n
\r\n
\r\n setOpenEmoji(!openEmoji)}\r\n type=\"button\"\r\n >\r\n \r\n \r\n \r\n }\r\n />\r\n \r\n\r\n
\r\n
\r\n {\r\n onSubmit(e)\r\n }}\r\n >\r\n }\r\n />\r\n \r\n {\r\n clearInput(e)\r\n }}\r\n >\r\n }\r\n />\r\n \r\n\r\n
\r\n
\r\n
\r\n
\r\n\r\n {openEmoji && (\r\n setOpenEmoji(false)}\r\n getEmoji={(e: EmojiClickData) => getEmoji(e)}\r\n >\r\n )}\r\n\r\n
\r\n )\r\n}\r\n\r\nexport default PublicInputMessage\r\n","import React, { Fragment, useEffect, useState } from 'react'\r\nimport { useAppDispatch } from '../../../../redux/store'\r\nimport './PublicMessageBox.css'\r\nimport { useTranslation } from 'react-i18next'\r\nimport PublicMessages from '../PublicMessages/PublicMessages'\r\nimport { useSelector } from 'react-redux'\r\nimport { ChannelSetMessage, selectChannelMessage, selectIsTranslate } from '../../../../redux/chimeSlide'\r\nimport { createMemberArn, listChannelMessages } from '../../../../api/ChimeAPI'\r\nimport PublicInputMessage from '../PublicInputChat/PublicInputMessage'\r\nimport { CommonService } from '../../../../services/Common'\r\nimport CustomLoader from '../../../../common-components/RDComponents/CustomLoader'\r\ninterface MessagesViewProps {\r\n message: any[]\r\n stopChannel: Function\r\n userId: string\r\n channelArn: string\r\n uuid: string\r\n}\r\n\r\nconst PublicMessageBox = ({\r\n message,\r\n stopChannel,\r\n userId,\r\n channelArn,\r\n uuid\r\n}: MessagesViewProps) => {\r\n const dispatchReduxToolkit = useAppDispatch()\r\n const browserLanguage = window.navigator.language\r\n const { t } = useTranslation()\r\n const [isLoading, setIsLoading] = useState(false);\r\n const messages = useSelector(selectChannelMessage)\r\n const [statusMessageShow, setStatusMessageShow] = useState(-1) //useState(false);\r\n const isTranslate = useSelector(selectIsTranslate);\r\n \r\n useEffect(() => {\r\n const updateMessage = async () => {\r\n if (channelArn && channelArn !== '') {\r\n const newMessages = await listChannelMessages(\r\n channelArn,\r\n userId\r\n )\r\n\r\n const message_translate = await Promise.all(\r\n newMessages.Messages.map(async (message: any) => {\r\n if (\r\n createMemberArn(userId) !== message.Sender.Arn &&\r\n isTranslate.status\r\n ) {\r\n // const sourceLanguageCode = JSON.parse(message.Metadata)?.language || \"\";\r\n const translateMessage = await CommonService.liveTranslateMessage(\r\n message.Content,\r\n isTranslate.langSource,\r\n isTranslate.langTarget,\r\n )\r\n return { ...message, Content: translateMessage }\r\n }\r\n return message\r\n }),\r\n )\r\n await dispatchReduxToolkit(\r\n ChannelSetMessage({\r\n ChannelMessages: message_translate,\r\n NextToken: newMessages.NextToken,\r\n }),\r\n )\r\n setStatusMessageShow(1)\r\n }\r\n }\r\n updateMessage()\r\n }, [channelArn, message, isTranslate])\r\n\r\n return (\r\n
\r\n
\r\n {statusMessageShow == 1 && (\r\n \r\n \r\n \r\n \r\n )}\r\n\r\n
\r\n {isLoading && (\r\n \r\n \r\n \r\n )}\r\n
\r\n )\r\n}\r\n\r\nexport default PublicMessageBox\r\n","import React from \"react\";\r\nimport { FC, Fragment, useEffect, useState } from \"react\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport {\r\n Button,\r\n Modal,\r\n} from \"semantic-ui-react\";\r\nimport '../css/SessionNotStartedModal.css'\r\nimport Boschicon from \"../../../common-components/boschIcon/Boschicon\";\r\n\r\nconst SessionNotStartedModal: FC = (props: any) => {\r\n const [openErrorModal, setOpenErrorModal] = useState(false);\r\n const [errorMessage, setErrorMessage] = useState(\"\");\r\n const { t } = useTranslation();\r\n\r\n useEffect(() => {\r\n if (props.showError && props.errorMessage != null && props.errorMessage != '') {\r\n setErrorMessage(props.errorMessage);\r\n setOpenErrorModal(true);\r\n }\r\n else {\r\n setErrorMessage('');\r\n }\r\n }, [props]);\r\n\r\n\r\n const closeErrorModal = () => {\r\n setErrorMessage('');\r\n setOpenErrorModal(false);\r\n props.onSetErrorTrigger();\r\n }\r\n\r\n return (\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n

\r\n {errorMessage}\r\n

\r\n
\r\n
\r\n

{t('Retry_note')}

\r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n )\r\n}\r\n\r\nexport default SessionNotStartedModal;","import React from \"react\";\r\nimport { FC, Fragment, useEffect, useState } from \"react\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport {\r\n Button,\r\n Modal,\r\n} from \"semantic-ui-react\";\r\nimport '../css/DeletedChannelModal.css'\r\nimport Boschicon from \"../../../common-components/boschIcon/Boschicon\";\r\n\r\nconst DeletedChannelModal: FC = (props: any) => {\r\n const [openErrorModal, setOpenErrorModal] = useState(false);\r\n const [errorMessage, setErrorMessage] = useState(\"\");\r\n const { t } = useTranslation();\r\n\r\n useEffect(() => {\r\n if (props.showError && props.errorMessage != null && props.errorMessage != '') {\r\n setErrorMessage(props.errorMessage);\r\n setOpenErrorModal(true);\r\n }\r\n else {\r\n setErrorMessage('');\r\n }\r\n }, [props]);\r\n\r\n\r\n const handleClose = () => {\r\n setErrorMessage('');\r\n setOpenErrorModal(false);\r\n window.close()\r\n }\r\n\r\n return (\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n

\r\n {errorMessage}\r\n

\r\n
\r\n
\r\n

{t('Thanks_note')}

\r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n )\r\n}\r\n\r\nexport default DeletedChannelModal;","import { Fragment, useEffect, useState } from \"react\";\r\nimport React from \"react\";\r\nimport \"./PublicDashBoard.css\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport PublicMessageBox from \"./PublicMessageBox/PublicMessageBox\";\r\nimport { createChannelMembership, createMemberArn, describeChannel, listChannelMemberships, listChannelMembershipsForAppInstanceUser, listChannelMessages, listChannels } from \"../../../api/ChimeAPI\";\r\nimport { CommonService } from \"../../../services/Common\";\r\nimport AWS from \"aws-sdk\";\r\nimport { RSADecrypt } from \"../../../services/RSA_Encrypt\";\r\nimport MessagingService from \"../../../services/MessagingService\";\r\nimport SessionNotStartedModal from \"../../modals/publicChannelModal/SessionNotStartedModal\";\r\nimport { useAppDispatch } from \"../../../redux/store\";\r\nimport { ChannelClearState, ChannelSetMessage, SetNewMemberJoinChannel, channelSetChannel, selectChannelMessage, selectIsTranslate } from \"../../../redux/chimeSlide\";\r\nimport DeletedChannelModal from \"../../modals/publicChannelModal/DeletedChannelModal\";\r\nimport { useSelector } from \"react-redux\";\r\nimport Boschicon from \"../../../common-components/boschIcon/Boschicon\";\r\nimport ModalTranlationOptionsPublic from \"../../modals/publicChannelModal/ModalTranlationOptionsPublic\";\r\nimport { v4 } from 'uuid';\r\nimport CustomLoader from \"../../../common-components/RDComponents/CustomLoader\";\r\n\r\ninterface MemberModel {\r\n username: string,\r\n userId: string\r\n}\r\n\r\nconst PublicDashBoard = () => {\r\n const { t } = useTranslation();\r\n const [isLoading, setIsLoading] = useState(false);\r\n const [isActiveChannel, setIsActiveChannel] = useState(false);\r\n const urlParams = new URLSearchParams(window.location.search);\r\n const sessionId = window.location.search !== \"\" ? urlParams.get(\"sessionId\") : \"\";\r\n const name = window.location.search !== \"\" ? urlParams.get(\"name\") : \"\";\r\n const [messageProp, setMessageProp] = useState();\r\n const messagesRedux = useSelector(selectChannelMessage)\r\n const [isStopChannel, setIsStopChannel] = useState(false);\r\n const [messagingService] = useState(MessagingService.getInstance());\r\n const [displayErrorModal, setDisplayErrorModal] = useState(false);\r\n const [displayDeleteModal, setDisplayDeleteModal] = useState(false);\r\n const [errorModalMessage, setErrorModalMessage] = useState(\"\");\r\n const [unReadChannel, setUnReadChannel] = useState(\"\");\r\n const [channelArnString, setChannelArnString] = useState(\"\");\r\n const [member, setMember] = useState(null);\r\n const isTranslate = useSelector(selectIsTranslate);\r\n const dispatchReduxToolkit = useAppDispatch();\r\n let uuid = v4();\r\n\r\n const beforeUnloadHandler = (event: any) => {\r\n // Recommended\r\n event.preventDefault();\r\n // Included for legacy support, e.g. Chrome/Edge < 119\r\n event.returnValue = true;\r\n };\r\n\r\n\r\n useEffect(() => {\r\n if (channelArnString !== \"\") {\r\n window.addEventListener(\"beforeunload\", beforeUnloadHandler);\r\n } else {\r\n window.removeEventListener(\"beforeunload\", beforeUnloadHandler);\r\n }\r\n }, [channelArnString]);\r\n\r\n const messagesProcessor = async (message: any) => {\r\n const messageType = message?.headers[\"x-amz-chime-event-type\"];\r\n const record = JSON.parse(message?.payload);\r\n switch (messageType) {\r\n // Channel Messages\r\n case \"CHANNEL_DETAILS\":\r\n // addMemberPresence(record.ChannelMemberships)\r\n //setActiveChannelMembershipsWithPresence([...activeChannelMembershipsWithPresence, record.ChannelMemberships])\r\n // processUnreadChannelInit(record);\r\n break;\r\n case \"CREATE_CHANNEL_MESSAGE\":\r\n case \"REDACT_CHANNEL_MESSAGE\":\r\n case \"UPDATE_CHANNEL_MESSAGE\":\r\n case \"DELETE_CHANNEL_MESSAGE\":\r\n case \"DENIED_CREATE_CHANNEL_MESSAGE\":\r\n case \"FAILED_CREATE_CHANNEL_MESSAGE\":\r\n case \"DENIED_UPDATE_CHANNEL_MESSAGE\":\r\n case \"FAILED_UPDATE_CHANNEL_MESSAGE\":\r\n case \"PENDING_CREATE_CHANNEL_MESSAGE\":\r\n case \"PENDING_UPDATE_CHANNEL_MESSAGE\":\r\n processChannelMessage(record);\r\n break;\r\n case \"CREATE_CHANNEL\":\r\n case \"UPDATE_CHANNEL\":\r\n break;\r\n case \"DELETE_CHANNEL\":\r\n dispatchReduxToolkit(ChannelClearState());\r\n setErrorModalMessage(t('Terminated_Channel_note'));\r\n setDisplayDeleteModal(true);\r\n // fetchChannels();\r\n break;\r\n case \"CREATE_CHANNEL_MEMBERSHIP\":\r\n dispatchReduxToolkit(SetNewMemberJoinChannel(true));\r\n break;\r\n case \"UPDATE_CHANNEL_MEMBERSHIP\":\r\n dispatchReduxToolkit(SetNewMemberJoinChannel(true));\r\n break;\r\n case \"DELETE_CHANNEL_MEMBERSHIP\":\r\n dispatchReduxToolkit(SetNewMemberJoinChannel(true));\r\n if (record?.Member?.Arn.includes(member?.username.toLowerCase())) {\r\n setErrorModalMessage(t('Terminated_Channel_note'));\r\n setDisplayDeleteModal(true);\r\n dispatchReduxToolkit(ChannelClearState());\r\n }\r\n break;\r\n default:\r\n console.log(`Unexpected message type! ${messageType}`);\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n const checkUser = async () => {\r\n setIsLoading(true);\r\n let memberTemp = {\r\n username: \"anonymous\",\r\n userId: \"adfs.anonymous\",\r\n };\r\n let newMemberChime = {\r\n ciamId: memberTemp.userId,\r\n name: memberTemp.username,\r\n mobile: \"\",\r\n email: \"\"\r\n }\r\n if (name && name !== \"\") {\r\n let nameTrim = name.replace(/\\s/g, '');\r\n memberTemp.username = nameTrim;\r\n memberTemp.userId = `adfs.anonymous_${nameTrim.toLowerCase()}_` + `${uuid}`;\r\n newMemberChime.ciamId = memberTemp.userId;\r\n newMemberChime.name = memberTemp.username;\r\n } else {\r\n memberTemp.userId = `adfs.anonymous_` + `${uuid}`;\r\n newMemberChime.ciamId = memberTemp.userId;\r\n newMemberChime.name = memberTemp.username;\r\n }\r\n await CommonService.getChimeUserForPublic(newMemberChime)\r\n await setMember(memberTemp);\r\n }\r\n if (!member) {\r\n checkUser()\r\n }\r\n }, []);\r\n\r\n\r\n useEffect(() => {\r\n if (member) {\r\n AWS.config.region = process.env.REACT_APP_REACT_REGION;\r\n const setAwsKeysAndConnect = async () => {\r\n const awsKeys = await CommonService.getChimeSecretPublic();\r\n if (awsKeys) {\r\n const awsKeysDecrypt = await RSADecrypt.RSADecrypt(awsKeys);\r\n if (awsKeysDecrypt) {\r\n let awsKeysDecryptData = JSON.parse(awsKeysDecrypt!)\r\n AWS.config.credentials = {\r\n accessKeyId: awsKeysDecryptData.AccessKey,\r\n secretAccessKey: awsKeysDecryptData.SecretKey,\r\n };\r\n console.log(\"Get AWS keys Success\");\r\n }\r\n if (sessionId && sessionId !== \"\") {\r\n excuteStartChannel(sessionId);\r\n }\r\n } else {\r\n console.log(\"Cannot get AWS keys\");\r\n }\r\n\r\n messagingService.connect(member);\r\n }\r\n\r\n setAwsKeysAndConnect();\r\n\r\n return () => {\r\n messagingService.close();\r\n };\r\n }\r\n }, [member]);\r\n\r\n useEffect(() => {\r\n if (member) {\r\n messagingService.subscribeToMessageUpdate(messagesProcessor);\r\n }\r\n\r\n return () => {\r\n messagingService.unsubscribeFromMessageUpdate(messagesProcessor);\r\n };\r\n }, [messagingService, member]);\r\n\r\n const excuteStartChannel = async (ticketIdParam: string) => {\r\n setIsLoading(true);\r\n // Create a messaging session\r\n const channelName = ticketIdParam; // Replace with the channel name\r\n const anonymousUserId = member?.userId; // Replace with the anonymous user ID\r\n const response = await listChannels(process.env.REACT_APP_AWS_APP_INSTANCE_ARN, anonymousUserId);\r\n const exitChannel = response.find(\r\n (x: any) =>\r\n x.Name == channelName\r\n );\r\n if (exitChannel) {\r\n const channelArn = exitChannel.ChannelArn;\r\n const memberArn = JSON.parse(exitChannel.Metadata)?.memberArn;\r\n if (channelArn) {\r\n connectChannel(\r\n channelArn,\r\n member ? member.userId : \"\",\r\n memberArn\r\n );\r\n setIsLoading(false);\r\n setIsActiveChannel(true);\r\n setChannelArnString(channelArn)\r\n } else {\r\n setIsLoading(false);\r\n setErrorModalMessage(\"Cannot create new Channel\");\r\n setDisplayErrorModal(true);\r\n }\r\n } else {\r\n setIsLoading(false);\r\n setErrorModalMessage(`${t('Session_title')} ${channelName} ${t('Not_start_note')} `);\r\n setDisplayErrorModal(true);\r\n }\r\n\r\n }\r\n\r\n\r\n const connectChannel = async (\r\n channelDescribe: string,\r\n userId: string,\r\n memberArn: string\r\n ) => {\r\n const promise = Promise.resolve(channelDescribe);\r\n const channelArnCurrent = await promise.then((m) => m);\r\n const channel = await describeChannel(channelArnCurrent, userId);\r\n const memberShip = await listChannelMemberships(\r\n channelArnCurrent,\r\n userId,\r\n )\r\n const exitMember = memberShip.find(\r\n (x: any) =>\r\n x.Member.Name == member?.username\r\n );\r\n if (channel) {\r\n if (!exitMember) {\r\n const statusAdd = await onAddMember(channel, memberArn, userId);\r\n if (statusAdd) {\r\n dispatchReduxToolkit(channelSetChannel(channel));\r\n if (channelArnCurrent && channelArnCurrent !== '') {\r\n const newMessages = await listChannelMessages(\r\n channelArnCurrent,\r\n userId\r\n )\r\n const message_translate = await Promise.all(\r\n newMessages.Messages.map(async (message: any) => {\r\n if (\r\n createMemberArn(userId) !== message.Sender.Arn &&\r\n isTranslate.status\r\n ) {\r\n // const sourceLanguageCode = JSON.parse(message.Metadata)?.language || \"\";\r\n const translateMessage = await CommonService.liveTranslateMessage(\r\n message.Content,\r\n isTranslate.langSource,\r\n isTranslate.langTarget,\r\n )\r\n return { ...message, Content: translateMessage }\r\n }\r\n return message\r\n }),\r\n )\r\n await dispatchReduxToolkit(\r\n ChannelSetMessage({\r\n ChannelMessages: message_translate,\r\n NextToken: newMessages.NextToken,\r\n }),\r\n )\r\n }\r\n fetchChannels();\r\n }\r\n }\r\n } else {\r\n console.log(\"Error, could not retrieve channel information.\");\r\n }\r\n };\r\n\r\n const onAddMember = async (channel: any, memberArn: string, userId: string) => {\r\n const promise = Promise.resolve(channel);\r\n const channelArn = await promise.then((m) => m.ChannelArn);\r\n\r\n try {\r\n // this function have swap position of memberArn and annonymous arn\r\n const membership = await createChannelMembership(\r\n channelArn,\r\n `${process.env.REACT_APP_AWS_APP_INSTANCE_ARN}/user/${userId}`,\r\n memberArn,\r\n );\r\n return membership;\r\n } catch {\r\n console.log(\"Error occurred. Member not added to channel.\");\r\n }\r\n };\r\n\r\n\r\n const fetchChannels = async () => {\r\n const userChannelMemberships =\r\n await listChannelMembershipsForAppInstanceUser(member?.userId);\r\n const userChannelList = userChannelMemberships\r\n .map((channelMembership: any) => channelMembership.ChannelSummary)\r\n .sort((current: any, next: any) => {\r\n try {\r\n const newDate = new Date();\r\n const nextLast = next.LastMessageTimestamp\r\n ? next.LastMessageTimestamp.getTime()\r\n : newDate.getTime();\r\n const currentLast = current.LastMessageTimestamp\r\n ? current.LastMessageTimestamp.getTime()\r\n : newDate.getTime();\r\n\r\n return nextLast - currentLast;\r\n } catch {\r\n return null;\r\n }\r\n });\r\n };\r\n\r\n const processChannelMessage = async (message: any) => {\r\n const promise = Promise.resolve(message);\r\n const newMessage = await promise.then((m) => m);\r\n if (newMessage.Sender.Arn !== createMemberArn(member?.userId)) {\r\n setUnReadChannel(newMessage.ChannelArn);\r\n setUnReadChannel(\"\");\r\n }\r\n setMessageProp(newMessage);\r\n };\r\n\r\n const onTrigger = () => {\r\n window.location.reload()\r\n }\r\n const onSetCloseTrigger = () => {\r\n window.close()\r\n }\r\n\r\n\r\n return (\r\n <>\r\n \r\n
\r\n {isTranslate.status && (
\r\n \r\n

\r\n {t('Live_Translation')} {t('Enabled_panel')}\r\n

\r\n
)}\r\n\r\n

{t(\"WSA_label\")}​

\r\n
\r\n
\r\n

{t(\"Session_title\")}: {sessionId}

\r\n
\r\n {\r\n (isActiveChannel && messagesRedux.ChannelMessages.length == 0) && (\r\n
\r\n
{t('Today_panel')}
\r\n
\r\n

{t('Joined_note')}

\r\n
\r\n
\r\n )\r\n }\r\n\r\n
\r\n {\r\n setIsStopChannel(true);\r\n }}\r\n userId={member ? member.userId : \"\"}\r\n channelArn={channelArnString}\r\n uuid={uuid}\r\n />\r\n
\r\n\r\n \r\n\r\n {isLoading && (\r\n \r\n \r\n \r\n )}\r\n\r\n {\r\n displayErrorModal && ()\r\n }\r\n {\r\n displayDeleteModal && ()\r\n }\r\n {isTranslate.languagebox && (\r\n { }} acceptButtonText={t('Continue_panel')} />\r\n )}\r\n\r\n \r\n );\r\n};\r\n\r\nexport default PublicDashBoard;\r\n\r\n","import React, { Fragment, useEffect, useState } from 'react';\r\nimport {\r\n Button,\r\n DeviceLabels,\r\n useMeetingManager,\r\n} from 'amazon-chime-sdk-component-library-react';\r\nimport { MeetingSessionConfiguration } from 'amazon-chime-sdk-js';\r\nimport { MeetingMode } from '../../types';\r\nimport { MeetingManagerJoinOptions } from 'amazon-chime-sdk-component-library-react/lib/providers/MeetingProvider/types';\r\nimport meetingConfig from '../../services/MeetingConfig';\r\nimport DeviceSetup from '../../components/views/DeviceSetup/DeviceSetup';\r\nimport MeetingView from '../../components/views/Meeting';\r\nimport { useSelector } from 'react-redux';\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { leaveMeeting, selectMeetingState } from '../../redux/meeting';\r\nimport {\r\n visualConnectSetFirstStart\r\n} from \"../../redux/visualConnect\";\r\nimport { useAppDispatch } from '../../redux/store';\r\nimport httpPCSPublic from '../../services/HttpServicePCSPublic';\r\n\r\nconst MeetingFormPublic: React.FC = () => {\r\n const dispatchReduxToolkit = useAppDispatch();\r\n const meetingManager = useMeetingManager();\r\n const [deviceMode, setDeviceMode] = useState(false);\r\n const [meetingMode, setMeetingMode] = useState(false);\r\n const meetingData = useSelector(selectMeetingState);\r\n const { t } = useTranslation();\r\n const handleJoinMeeting = async () => {\r\n meetingManager.getAttendee = async (chimeAttendeeId: string, externalUserId?: string) => {\r\n const headers = {\r\n 'ApiKey': process.env.REACT_APP_PCS_KEY || \"\"\r\n };\r\n const res = await httpPCSPublic.get(`/api/Chime/GetNameChimeUser?ciamId=${externalUserId}`, { headers });\r\n return {\r\n name: res.data.name,\r\n };\r\n }\r\n try {\r\n const JoinInfo = meetingData;\r\n const meetingSessionConfiguration = new MeetingSessionConfiguration(JoinInfo?.Meeting, JoinInfo?.Attendee);\r\n if (\r\n meetingConfig.postLogger &&\r\n meetingSessionConfiguration.meetingId &&\r\n meetingSessionConfiguration.credentials &&\r\n meetingSessionConfiguration.credentials.attendeeId\r\n ) {\r\n const existingMetadata = meetingConfig.postLogger.metadata;\r\n meetingConfig.postLogger.metadata = {\r\n ...existingMetadata,\r\n meetingId: meetingSessionConfiguration.meetingId,\r\n attendeeId: meetingSessionConfiguration.credentials.attendeeId,\r\n };\r\n }\r\n\r\n meetingSessionConfiguration.enableSimulcastForUnifiedPlanChromiumBasedBrowsers = false;\r\n\r\n meetingSessionConfiguration.keepLastFrameWhenPaused = true;//keepLastFrameWhenPaused;\r\n const options: MeetingManagerJoinOptions = {\r\n deviceLabels: DeviceLabels.AudioAndVideo,//meetingMode === MeetingMode.Spectator ? DeviceLabels.None : DeviceLabels.AudioAndVideo,\r\n enableWebAudio: true//isWebAudioEnabled,\r\n };\r\n\r\n await meetingManager.join(meetingSessionConfiguration, options);\r\n setDeviceMode(true)\r\n // }\r\n } catch (error) {\r\n // updateErrorMessage((error as Error).message);\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n handleJoinMeeting();\r\n }, []);\r\n\r\n useEffect(() => {\r\n const handleTabClose = () => {\r\n dispatchReduxToolkit(leaveMeeting());\r\n dispatchReduxToolkit(visualConnectSetFirstStart(false));\r\n };\r\n window.addEventListener('beforeunload', handleTabClose);\r\n return () => {\r\n window.removeEventListener('beforeunload', handleTabClose);\r\n };\r\n }, []);\r\n return (\r\n \r\n {meetingMode ? :\r\n deviceMode && \r\n \r\n \r\n \r\n }\r\n \r\n );\r\n};\r\n\r\nexport default MeetingFormPublic;\r\n","import { GlobalStyles, MeetingProvider, useVoiceFocus, VoiceFocusProvider } from 'amazon-chime-sdk-component-library-react';\r\nimport { AudioInputDevice, Device, VoiceFocusTransformDevice } from 'amazon-chime-sdk-js';\r\nimport React, { Fragment, useEffect, useState } from 'react';\r\nimport { ThemeProvider } from 'styled-components';\r\nimport { addAttendeeByRandomCode } from '../../../../redux/meeting';\r\nimport { lightTheme } from 'amazon-chime-sdk-component-library-react';\r\nimport { useParams } from \"react-router-dom\";\r\nimport { useAppDispatch } from '../../../../redux/store';\r\nimport { Button, Grid, Modal } from 'semantic-ui-react';\r\nimport './PublicWindowMeeting.css'\r\nimport MeetingFormPublic from '../../../../containers/MeetingFormPublic/MeetingFormPublic';\r\nimport { CommonService } from '../../../../services/Common';\r\nimport { v4 } from 'uuid';\r\nimport CustomLoader from '../../../../common-components/RDComponents/CustomLoader';\r\n\r\nconst MeetingProviderWithDeviceReplacement: React.FC = ({ children }) => {\r\n const { addVoiceFocus } = useVoiceFocus();\r\n\r\n const onDeviceReplacement = (\r\n nextDevice: string,\r\n currentDevice: AudioInputDevice\r\n ): Promise => {\r\n if (currentDevice instanceof VoiceFocusTransformDevice) {\r\n return addVoiceFocus(nextDevice);\r\n }\r\n return Promise.resolve(nextDevice);\r\n };\r\n\r\n const meetingConfigValue = {\r\n onDeviceReplacement,\r\n };\r\n\r\n return {children};\r\n};\r\n\r\nconst PublicWindowMeeting = () => {\r\n\r\n const dispatchReduxToolkit = useAppDispatch();\r\n const [isLoading, setIsLoading] = useState(false);\r\n const [vfConfigeValue, setVfConfigeValue] = useState();\r\n const [displayErrorModal, setDisplayErrorModal] = useState(false);\r\n const [errorModalMessage, setErrorModalMessage] = useState(\"\");\r\n const urlParams = new URLSearchParams(window.location.search);\r\n const meeting = window.location.search !== \"\" ? urlParams.get(\"sessionId\") : \"\";\r\n const name = window.location.search !== \"\" ? urlParams.get(\"name\") : \"\";\r\n let uuid = v4();\r\n function getMobileOperatingSystem() {\r\n var userAgent = navigator.userAgent || navigator.vendor;\r\n if (userAgent.match(/iPad/i) || userAgent.match(/iPhone/i) || userAgent.match(/iPod/i)) {\r\n return 'iOS';\r\n }\r\n else if (userAgent.match(/Android/i)) {\r\n return 'Android';\r\n }\r\n else if (userAgent.match(/Windows/i)) {\r\n return 'Windows';\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n let appURL = \"\";\r\n let isMobile = false;\r\n switch (getMobileOperatingSystem()) {\r\n case 'Android':\r\n appURL = process.env.REACT_APP_MOBILE_APP_CHPLAY_URL || \"\";\r\n isMobile = true;\r\n break;\r\n case 'iOS':\r\n appURL = process.env.REACT_APP_MOBILE_APP_APPSTORE_URL || \"\";\r\n isMobile = true;\r\n break;\r\n case 'Windows':\r\n appURL = process.env.REACT_APP_REDI_PAGE || \"\";\r\n isMobile = false;\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n if (isMobile) {\r\n setTimeout(() => {\r\n window.location.href = appURL;\r\n }, 1000);\r\n } else {\r\n fetchMeetingInfor();\r\n }\r\n }, [])\r\n\r\n const fetchMeetingInfor = async () => {\r\n if (meeting) {\r\n setIsLoading(true);\r\n \r\n let newMemberChime = {\r\n ciamId: `anonymous_` + `${uuid}`,\r\n name: name ? name : \"anonymous\",\r\n mobile: \"\",\r\n email: \"\"\r\n }\r\n let newChimeUser = await CommonService.getChimeUserForPublic(newMemberChime)\r\n if (newChimeUser.isSuccess) {\r\n const attendeeReq = {\r\n randomID: meeting,\r\n externalUserId: newChimeUser.userId\r\n }\r\n const meetingInfor = await dispatchReduxToolkit(addAttendeeByRandomCode(attendeeReq));\r\n\r\n if (addAttendeeByRandomCode.fulfilled.match(meetingInfor)) {\r\n console.log(meetingInfor)\r\n setIsLoading(false);\r\n setVfConfigeValue({\r\n \"spec\": {\r\n \"name\": \"ns_es\"\r\n },\r\n \"createMeetingResponse\": meetingInfor.payload.dataObject.createMeetingResponse\r\n })\r\n\r\n }\r\n if (addAttendeeByRandomCode.rejected.match(meetingInfor)) {\r\n setTimeout(() => {\r\n setIsLoading(false);\r\n setErrorModalMessage(\"Meeting ID is not exist.\");\r\n setDisplayErrorModal(true);\r\n }, 2000);\r\n };\r\n }else{\r\n setTimeout(() => {\r\n setIsLoading(false);\r\n setErrorModalMessage(\"Cannot create new user in PCS. Please try again!\");\r\n setDisplayErrorModal(true);\r\n }, 2000);\r\n }\r\n\r\n\r\n }\r\n }\r\n\r\n const onTrigger = () => {\r\n setDisplayErrorModal(false);\r\n };\r\n\r\n return (\r\n\r\n \r\n \r\n \r\n {isLoading &&\r\n \r\n \r\n }\r\n {vfConfigeValue && \r\n \r\n \r\n \r\n }\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {errorModalMessage && (\r\n \r\n {errorModalMessage}\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\nexport default PublicWindowMeeting;\r\n","// extracted by mini-css-extract-plugin\nexport default {\"publicDashboard\":\"AssistantDashBoard_publicDashboard__LCrnr\",\"header_title\":\"AssistantDashBoard_header_title__NmiMF\",\"translate_modal_btn\":\"AssistantDashBoard_translate_modal_btn__nhL5I\",\"disable\":\"AssistantDashBoard_disable__EqNch\",\"session_title\":\"AssistantDashBoard_session_title__A9+yn\",\"chatting_area\":\"AssistantDashBoard_chatting_area__kAGnc\",\"chatting\":\"AssistantDashBoard_chatting__Sjk+K\"};","// extracted by mini-css-extract-plugin\nexport default {\"sc_message_list\":\"message_sc_message_list__db6o1\",\"sc_message_today\":\"message_sc_message_today__Gg5Qf\",\"messages\":\"message_messages__xhxpH\",\"sc_message\":\"message_sc_message__vLCtU\",\"sc_message--content\":\"message_sc_message--content__ZF43r\",\"received\":\"message_received__hHiAQ\",\"sent\":\"message_sent__tdKP3\",\"sc_message--avatar\":\"message_sc_message--avatar__ok-Q5\",\"sc_message--text\":\"message_sc_message--text__nS0oP\",\"sc_message--emoji\":\"message_sc_message--emoji__B9i0W\",\"sc_message--file\":\"message_sc_message--file__2VpfM\",\"sc-user-input--file-icon\":\"message_sc-user-input--file-icon__lWu3X\",\"sc-author-name\":\"message_sc-author-name__-uY54\",\"sc-timestamp\":\"message_sc-timestamp__jyHxc\",\"ch-timestamp\":\"message_ch-timestamp__jmMNZ\",\"message_time\":\"message_message_time__q1Hat\",\"joined_session\":\"message_joined_session__4vruV\",\"message_bubble\":\"message_message_bubble__BBsSX\",\"icon_sender\":\"message_icon_sender__bXHqJ\",\"sc-hiDMwi\":\"message_sc-hiDMwi__bLLay\",\"fMBhyc\":\"message_fMBhyc__Lxs2c\",\"busy_icon\":\"message_busy_icon__avPqM\",\"offline_icon\":\"message_offline_icon__vxyps\",\"onhold_icon\":\"message_onhold_icon__kYjc2\",\"online_icon\":\"message_online_icon__E7zYQ\",\"avatarIcon\":\"message_avatarIcon__uoc7B\",\"progress-bar\":\"message_progress-bar__jdp6p\",\"ch-attachment-icon\":\"message_ch-attachment-icon__l1iEs\"};","// extracted by mini-css-extract-plugin\nexport default {\"loading\":\"Loading-dots_loading__qw6V7\",\"dot_container\":\"Loading-dots_dot_container__sWJQ3\",\"dot\":\"Loading-dots_dot__IdiJ-\",\"bounce\":\"Loading-dots_bounce__MiN8U\"};","import React from 'react';\r\nimport Style from './Loading-dots.module.css';\r\n\r\nconst LoadingDots: React.FC = () => {\r\n return (\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default LoadingDots;\r\n","import { Fragment, useEffect, useRef, useState } from \"react\";\r\nimport Style from \"./styles/message.module.css\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport React from \"react\";\r\nimport { ChatBubble, ChatBubbleContainer, InfiniteList, MessageAttachment } from \"amazon-chime-sdk-component-library-react\";\r\nimport { messageListModal, selectChatChannelHistory, selectShowLoadingDot, selectUserChime, senderENUM, setShowLoadingDot } from \"../../../../redux/assistantBot\";\r\nimport LoadingDots from \"../../../../common-components/loading-dots/Loading-dots\";\r\nimport { useSelector } from \"react-redux\";\r\nimport { useAppDispatch } from \"../../../../redux/store\";\r\nimport Boschicon from \"../../../../common-components/boschIcon/Boschicon\";\r\nimport Attachment from \"../../../../containers/InputChat/Attachment\";\r\nimport { MemberPresence } from \"./BotWidget\";\r\nimport { OnlinePresenceStatus } from \"../../../../helpers/AppConstants\";\r\n\r\ninterface MessagesProps {\r\n messagesAssit: messageListModal[];\r\n messagesChanel?: messageListModal[] | null;\r\n memberPresenceList: MemberPresence[]\r\n}\r\n\r\nconst Messages = ({\r\n messagesAssit,\r\n messagesChanel,\r\n memberPresenceList\r\n}: MessagesProps) => {\r\n const [isLoading, setIsLoading] = useState(false);\r\n const [onHideChatHistory, setOnHideChatHistory] = useState(false);\r\n const showLoadingDot = useSelector(selectShowLoadingDot);\r\n const chatChannelHistoryData = useSelector(selectChatChannelHistory);\r\n const userChimeId = useSelector(selectUserChime);\r\n const dispatchReduxToolkit = useAppDispatch();\r\n const { t } = useTranslation();\r\n const scrollableDivRef = useRef(null);\r\n var isLoadImg = false;\r\n const resize = (size: string) => {\r\n let size_num = Number(size)\r\n return size_num < 1024 ? `${size} bytes` : size_num < 1024 * 1024 ? `${String((size_num / 1024).toFixed(2))} KB` : `${String((size_num / 1024 / 1024).toFixed(2))} MB`\r\n }\r\n\r\n const onloadimg = () => {\r\n isLoadImg = true;\r\n }\r\n\r\n const onClickMessageFunction = () => {\r\n setOnHideChatHistory(!onHideChatHistory)\r\n }\r\n\r\n const removeDuplicatesMessage = (messageList: messageListModal[]) => {\r\n const uniqueMessages: { [key: string]: boolean } = {};\r\n const result: messageListModal[] = [];\r\n\r\n for (const message of messageList) {\r\n const key = `${message.sender}_${message.message}`;\r\n\r\n if (!uniqueMessages[key]) {\r\n result.push(message);\r\n uniqueMessages[key] = true;\r\n }\r\n }\r\n\r\n return result;\r\n };\r\n\r\n\r\n const getHistoryMessageCheck = () => {\r\n const listHistoryMessageId: string[] = chatChannelHistoryData ? chatChannelHistoryData.map((item: { messageId: any; }) => item.messageId) : [];\r\n let assistantMessages = removeDuplicatesMessage(messagesAssit)\r\n let channelMessages = messagesChanel;\r\n let historyMessage = chatChannelHistoryData\r\n let listNewChannelMessageExcludeHistory = channelMessages ? channelMessages?.filter((m: messageListModal, i, seif) => {\r\n if (m.messageId && !listHistoryMessageId.includes(m.messageId)) {\r\n return true;\r\n }\r\n return false;\r\n }) : [];\r\n\r\n // return assitant message when no channel start\r\n if (!channelMessages || (channelMessages && channelMessages.length == 0)) {\r\n let flatMessages = flattenedMessages(assistantMessages);\r\n let resultMessages = messageList(flatMessages);\r\n return resultMessages;\r\n }\r\n\r\n // return assitant message when channel has started\r\n let mappingListMessage = assistantMessages.concat(channelMessages)\r\n //if channel has history message\r\n if (chatChannelHistoryData && chatChannelHistoryData.length > 0 && chatChannelHistoryData[0] !== \"empty\") {\r\n if (!onHideChatHistory) {\r\n mappingListMessage = assistantMessages.concat({\r\n sender: senderENUM.channel,\r\n message: t(\"Show_Message_Label\"),\r\n datetime: \"\",\r\n metaData: \"\",\r\n messageId: \"\",\r\n senderName: \"\",\r\n senderArn: \"\"\r\n }).concat(listNewChannelMessageExcludeHistory)\r\n } else {\r\n mappingListMessage = assistantMessages.concat(historyMessage).concat({\r\n sender: senderENUM.channel,\r\n message: t(\"Hide_Message_label\"),\r\n datetime: \"\",\r\n metaData: \"\",\r\n messageId: \"\",\r\n senderName: \"\",\r\n senderArn: \"\"\r\n }).concat(listNewChannelMessageExcludeHistory)\r\n }\r\n }\r\n let flatMessages = flattenedMessages(mappingListMessage);\r\n let resultMessages = messageList(flatMessages);\r\n\r\n return resultMessages;\r\n }\r\n\r\n const flattenedMessages = (messages: messageListModal[]) => {\r\n return messages.filter((m: messageListModal, index: number) => {\r\n if (m.metaData) {\r\n const messageWithDeleted = JSON.parse(m.metaData).deleted ? true : false;\r\n return !messageWithDeleted\r\n }\r\n return true\r\n }).map((m: messageListModal, index: number) => {\r\n const content = !m.message ? '(Deleted)' : m.message;\r\n return {\r\n sender: m.sender,\r\n message: content,\r\n datetime: m.datetime,\r\n metaData: m.metaData,\r\n messageId: m.messageId || \"\",\r\n senderName: m.senderName,\r\n senderArn: m.senderArn\r\n };\r\n });\r\n }\r\n\r\n let iconPresenceStatus = (status: string) => {\r\n switch (status) {\r\n case OnlinePresenceStatus.busy:\r\n return (
)\r\n case OnlinePresenceStatus.offline:\r\n return (
)\r\n case OnlinePresenceStatus.onhold:\r\n return (
)\r\n case OnlinePresenceStatus.online:\r\n return (
)\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n let iconAvatarMember = (m: messageListModal) => {\r\n let memmberArn = m.senderArn || \"\";\r\n let memberPresence = OnlinePresenceStatus.offline\r\n let exitMemberStatus = memberPresenceList.find(\r\n (x: any) =>\r\n memmberArn.includes(x.userArn)\r\n );\r\n if (exitMemberStatus) {\r\n memberPresence = exitMemberStatus.status\r\n }\r\n return (\r\n <>\r\n {\r\n m.sender === senderENUM.boschExpert && (\r\n
\r\n \r\n {\r\n iconPresenceStatus(memberPresence)\r\n }\r\n
\r\n\r\n )\r\n }\r\n {\r\n m.sender === senderENUM.assistant && (\r\n
\r\n \r\n {\r\n iconPresenceStatus(OnlinePresenceStatus.online)\r\n }\r\n
\r\n )\r\n }\r\n {\r\n m.sender === senderENUM.member && (\r\n
\r\n \r\n {\r\n iconPresenceStatus(memberPresence)\r\n }\r\n
\r\n )\r\n }\r\n \r\n )\r\n }\r\n\r\n const messageList = (flattenedMessages: messageListModal[]) => {\r\n return flattenedMessages.map((m, i, self) => {\r\n if (!m.message) {\r\n return m;\r\n }\r\n\r\n let hasAttachment = -1;\r\n\r\n let metadata: {\r\n isMeetingInfo: boolean,\r\n attachment: {\r\n fileKey: string,\r\n type: string,\r\n size: string,\r\n name: string\r\n },\r\n status: string,\r\n meeting: {\r\n meetingId: string,\r\n pathRoute: string\r\n },\r\n onStartVoiceCall: boolean\r\n } = {\r\n isMeetingInfo: false,\r\n attachment: {\r\n fileKey: '',\r\n type: '',\r\n size: '',\r\n name: ''\r\n },\r\n status: '',\r\n meeting: {\r\n meetingId: '',\r\n pathRoute: ''\r\n },\r\n onStartVoiceCall: false\r\n };\r\n\r\n let preSignURL;\r\n\r\n if (m.metaData) {\r\n metadata = JSON.parse(m.metaData);\r\n if (metadata.isMeetingInfo) {\r\n return m;\r\n };\r\n\r\n if (metadata?.attachment?.fileKey) {\r\n // preSignURL = attachmentService.getPresignURL(metadata.attachment.fileKey);\r\n if (metadata.attachment?.type.includes('image')) {\r\n hasAttachment = 0;\r\n } else {\r\n hasAttachment = 1;\r\n }\r\n }\r\n }\r\n\r\n const variant = m.sender === senderENUM.user ? \"outgoing\" : \"incoming\";\r\n\r\n //check sender name\r\n let senderNameDetect = \"\";\r\n switch (m.sender) {\r\n case senderENUM.boschExpert:\r\n senderNameDetect = t(\"BoschExpert_Label_Sender\");\r\n break;\r\n case senderENUM.assistant:\r\n senderNameDetect = t(\"Assistant_Label_Bot\");\r\n break;\r\n case senderENUM.member:\r\n senderNameDetect = m.senderName || \"\";\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n return (\r\n
\r\n {variant === \"outgoing\" ? (\r\n <>\r\n \r\n \r\n
\r\n {m.message}\r\n
\r\n \r\n \r\n \r\n ) : (\r\n \r\n {m.sender === senderENUM.system && (\r\n
\r\n

{m.message}

\r\n
\r\n )\r\n }\r\n {m.sender === senderENUM.channel && (\r\n
\r\n {m.message}\r\n
\r\n )\r\n }\r\n {\r\n (m.sender === senderENUM.boschExpert || m.sender === senderENUM.assistant || m.sender === senderENUM.member) && (\r\n
\r\n
\r\n {iconAvatarMember(m)}\r\n
\r\n \r\n \r\n {hasAttachment !== -1 &&\r\n
\r\n {hasAttachment === 0 &&\r\n \r\n }\r\n {hasAttachment === 1 &&\r\n \r\n }\r\n
\r\n }\r\n
\r\n {m.message}\r\n {metadata?.meeting?.meetingId && Link}\r\n
\r\n \r\n
{m.datetime}
\r\n \r\n
\r\n )\r\n }\r\n
\r\n )}\r\n
\r\n );\r\n });\r\n }\r\n\r\n\r\n\r\n useEffect(() => {\r\n if (messagesAssit?.length > 0 || (messagesChanel && messagesChanel?.length > 0)) {\r\n setTimeout(() => {\r\n dispatchReduxToolkit(setShowLoadingDot(false));\r\n }, 2000);\r\n if (scrollableDivRef.current) {\r\n scrollableDivRef.current.scrollTop = scrollableDivRef.current.scrollHeight;\r\n }\r\n }\r\n }, [messagesAssit, messagesChanel])\r\n\r\n\r\n useEffect(() => {\r\n }, [memberPresenceList])\r\n\r\n return (\r\n
\r\n
\r\n

{t(\"Assistant_today_label\")}

\r\n
\r\n {\r\n showLoadingDot ? (\r\n \r\n ) : (\r\n <>\r\n {messagesAssit?.length > 0 && (\r\n { }}\r\n isLoading={isLoading}\r\n />\r\n )}\r\n \r\n )\r\n }\r\n\r\n\r\n
\r\n );\r\n};\r\n\r\nexport default Messages;\r\n","// extracted by mini-css-extract-plugin\nexport default {\"startFeature\":\"button-action_startFeature__1XTfh\",\"startFeature__button\":\"button-action_startFeature__button__oK4HI\",\"gray\":\"button-action_gray__sTAsT\"};","import React from \"react\";\r\nimport { Button } from \"semantic-ui-react\";\r\nimport Style from \"./button-action.module.css\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { actionTypeENUM, funtionalTypeENUM, stepENUM } from \"../../../../../redux/assistantBot\";\r\n\r\ninterface UserInputProps {\r\n onSubmit: any;\r\n type: number;\r\n}\r\n\r\nconst ButtonAction = (props: UserInputProps) => {\r\n const { t } = useTranslation();\r\n const handleClickBtn = (action: number) => {\r\n props.onSubmit({\r\n type: actionTypeENUM.chooseOption,\r\n data: action\r\n })\r\n };\r\n return (\r\n
\r\n {\r\n (props.type === stepENUM.chooseAction || props.type === stepENUM.goBackToFirstStep) && (\r\n <>\r\n
\r\n );\r\n};\r\n\r\nexport default ButtonAction;\r\n","// extracted by mini-css-extract-plugin\nexport default {\"rd_input_group\":\"input-action_rd_input_group__fXNLu\",\"sc_user_input\":\"input-action_sc_user_input__sixOS\",\"active\":\"input-action_active__rjpTI\",\"sc_user_input__text\":\"input-action_sc_user_input__text__Rx3v4\",\"userInput__button\":\"input-action_userInput__button__+Yl-F\"};","import baseSet from './_baseSet.js';\n\n/**\n * Sets the value at `path` of `object`. If a portion of `path` doesn't exist,\n * it's created. Arrays are created for missing index properties while objects\n * are created for all other missing properties. Use `_.setWith` to customize\n * `path` creation.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.set(object, 'a[0].b.c', 4);\n * console.log(object.a[0].b.c);\n * // => 4\n *\n * _.set(object, ['x', '0', 'y', 'z'], 5);\n * console.log(object.x[0].y.z);\n * // => 5\n */\nfunction set(object, path, value) {\n return object == null ? object : baseSet(object, path, value);\n}\n\nexport default set;\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport _set from \"lodash-es/set\";\nimport _invoke from \"lodash-es/invoke\";\nimport _get from \"lodash-es/get\";\nimport _isNil from \"lodash-es/isNil\";\nimport { Ref } from '@fluentui/react-component-ref';\nimport cx from 'clsx';\nimport PropTypes from 'prop-types';\nimport React, { createRef } from 'react';\nimport { ModernAutoControlledComponent as Component, createHTMLLabel, customPropTypes, getElementType, getUnhandledProps, htmlInputAttrs, partitionHTMLProps, useKeyOnly } from '../../lib';\n\n/**\n * A checkbox allows a user to select a value from a small set of options, often binary.\n * @see Form\n * @see Radio\n */\nvar Checkbox = /*#__PURE__*/function (_Component) {\n _inheritsLoose(Checkbox, _Component);\n\n function Checkbox() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _Component.call.apply(_Component, [this].concat(args)) || this;\n _this.inputRef = /*#__PURE__*/createRef();\n _this.labelRef = /*#__PURE__*/createRef();\n\n _this.canToggle = function () {\n var _this$props = _this.props,\n disabled = _this$props.disabled,\n radio = _this$props.radio,\n readOnly = _this$props.readOnly;\n var checked = _this.state.checked;\n return !disabled && !readOnly && !(radio && checked);\n };\n\n _this.computeTabIndex = function () {\n var _this$props2 = _this.props,\n disabled = _this$props2.disabled,\n tabIndex = _this$props2.tabIndex;\n if (!_isNil(tabIndex)) return tabIndex;\n return disabled ? -1 : 0;\n };\n\n _this.handleClick = function (e) {\n var id = _this.props.id;\n var _this$state = _this.state,\n checked = _this$state.checked,\n indeterminate = _this$state.indeterminate;\n\n var isInputClick = _invoke(_this.inputRef.current, 'contains', e.target);\n\n var isLabelClick = _invoke(_this.labelRef.current, 'contains', e.target);\n\n var isRootClick = !isLabelClick && !isInputClick;\n var hasId = !_isNil(id);\n var isLabelClickAndForwardedToInput = isLabelClick && hasId; // https://github.com/Semantic-Org/Semantic-UI-React/pull/3351\n\n if (!isLabelClickAndForwardedToInput) {\n _invoke(_this.props, 'onClick', e, _extends({}, _this.props, {\n checked: !checked,\n indeterminate: !!indeterminate\n }));\n }\n\n if (_this.isClickFromMouse) {\n _this.isClickFromMouse = false;\n\n if (isLabelClick && !hasId) {\n _this.handleChange(e);\n } // Changes should be triggered for the slider variation\n\n\n if (isRootClick) {\n _this.handleChange(e);\n }\n\n if (isLabelClick && hasId) {\n // To prevent two clicks from being fired from the component we have to stop the propagation\n // from the \"input\" click: https://github.com/Semantic-Org/Semantic-UI-React/issues/3433\n e.stopPropagation();\n }\n }\n };\n\n _this.handleChange = function (e) {\n var checked = _this.state.checked;\n if (!_this.canToggle()) return;\n\n _invoke(_this.props, 'onChange', e, _extends({}, _this.props, {\n checked: !checked,\n indeterminate: false\n }));\n\n _this.setState({\n checked: !checked,\n indeterminate: false\n });\n };\n\n _this.handleMouseDown = function (e) {\n var _this$state2 = _this.state,\n checked = _this$state2.checked,\n indeterminate = _this$state2.indeterminate;\n\n _invoke(_this.props, 'onMouseDown', e, _extends({}, _this.props, {\n checked: !!checked,\n indeterminate: !!indeterminate\n }));\n\n if (!e.defaultPrevented) {\n _invoke(_this.inputRef.current, 'focus');\n } // Heads up!\n // We need to call \"preventDefault\" to keep element focused.\n\n\n e.preventDefault();\n };\n\n _this.handleMouseUp = function (e) {\n var _this$state3 = _this.state,\n checked = _this$state3.checked,\n indeterminate = _this$state3.indeterminate;\n _this.isClickFromMouse = true;\n\n _invoke(_this.props, 'onMouseUp', e, _extends({}, _this.props, {\n checked: !!checked,\n indeterminate: !!indeterminate\n }));\n };\n\n _this.setIndeterminate = function () {\n var indeterminate = _this.state.indeterminate;\n\n _set(_this.inputRef, 'current.indeterminate', !!indeterminate);\n };\n\n return _this;\n }\n\n var _proto = Checkbox.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n this.setIndeterminate();\n };\n\n _proto.componentDidUpdate = function componentDidUpdate() {\n this.setIndeterminate();\n };\n\n _proto.render = function render() {\n var _this$props3 = this.props,\n className = _this$props3.className,\n disabled = _this$props3.disabled,\n label = _this$props3.label,\n id = _this$props3.id,\n name = _this$props3.name,\n radio = _this$props3.radio,\n readOnly = _this$props3.readOnly,\n slider = _this$props3.slider,\n toggle = _this$props3.toggle,\n type = _this$props3.type,\n value = _this$props3.value;\n var _this$state4 = this.state,\n checked = _this$state4.checked,\n indeterminate = _this$state4.indeterminate;\n var classes = cx('ui', useKeyOnly(checked, 'checked'), useKeyOnly(disabled, 'disabled'), useKeyOnly(indeterminate, 'indeterminate'), // auto apply fitted class to compact white space when there is no label\n // https://semantic-ui.com/modules/checkbox.html#fitted\n useKeyOnly(_isNil(label), 'fitted'), useKeyOnly(radio, 'radio'), useKeyOnly(readOnly, 'read-only'), useKeyOnly(slider, 'slider'), useKeyOnly(toggle, 'toggle'), 'checkbox', className);\n var unhandled = getUnhandledProps(Checkbox, this.props);\n var ElementType = getElementType(Checkbox, this.props);\n\n var _partitionHTMLProps = partitionHTMLProps(unhandled, {\n htmlProps: htmlInputAttrs\n }),\n htmlInputProps = _partitionHTMLProps[0],\n rest = _partitionHTMLProps[1]; // Heads Up!\n // Do not remove empty labels, they are required by SUI CSS\n\n\n var labelElement = createHTMLLabel(label, {\n defaultProps: {\n htmlFor: id\n },\n autoGenerateKey: false\n }) || /*#__PURE__*/React.createElement(\"label\", {\n htmlFor: id\n });\n return /*#__PURE__*/React.createElement(ElementType, _extends({}, rest, {\n className: classes,\n onClick: this.handleClick,\n onChange: this.handleChange,\n onMouseDown: this.handleMouseDown,\n onMouseUp: this.handleMouseUp\n }), /*#__PURE__*/React.createElement(Ref, {\n innerRef: this.inputRef\n }, /*#__PURE__*/React.createElement(\"input\", _extends({}, htmlInputProps, {\n checked: checked,\n className: \"hidden\",\n disabled: disabled,\n id: id,\n name: name,\n readOnly: true,\n tabIndex: this.computeTabIndex(),\n type: type,\n value: value\n }))), /*#__PURE__*/React.createElement(Ref, {\n innerRef: this.labelRef\n }, labelElement));\n };\n\n return Checkbox;\n}(Component);\n\nCheckbox.handledProps = [\"as\", \"checked\", \"className\", \"defaultChecked\", \"defaultIndeterminate\", \"disabled\", \"fitted\", \"id\", \"indeterminate\", \"label\", \"name\", \"onChange\", \"onClick\", \"onMouseDown\", \"onMouseUp\", \"radio\", \"readOnly\", \"slider\", \"tabIndex\", \"toggle\", \"type\", \"value\"];\nexport { Checkbox as default };\nCheckbox.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /** An element type to render as (string or function). */\n as: PropTypes.elementType,\n\n /** Whether or not checkbox is checked. */\n checked: PropTypes.bool,\n\n /** Additional classes. */\n className: PropTypes.string,\n\n /** The initial value of checked. */\n defaultChecked: PropTypes.bool,\n\n /** Whether or not checkbox is indeterminate. */\n defaultIndeterminate: PropTypes.bool,\n\n /** A checkbox can appear disabled and be unable to change states */\n disabled: PropTypes.bool,\n\n /** Removes padding for a label. Auto applied when there is no label. */\n fitted: PropTypes.bool,\n\n /** A unique identifier. */\n id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n\n /** Whether or not checkbox is indeterminate. */\n indeterminate: PropTypes.bool,\n\n /** The text of the associated label element. */\n label: customPropTypes.itemShorthand,\n\n /** The HTML input name. */\n name: PropTypes.string,\n\n /**\n * Called when the user attempts to change the checked state.\n *\n * @param {SyntheticEvent} event - React's original SyntheticEvent.\n * @param {object} data - All props and proposed checked/indeterminate state.\n */\n onChange: PropTypes.func,\n\n /**\n * Called when the checkbox or label is clicked.\n *\n * @param {SyntheticEvent} event - React's original SyntheticEvent.\n * @param {object} data - All props and current checked/indeterminate state.\n */\n onClick: PropTypes.func,\n\n /**\n * Called when the user presses down on the mouse.\n *\n * @param {SyntheticEvent} event - React's original SyntheticEvent.\n * @param {object} data - All props and current checked/indeterminate state.\n */\n onMouseDown: PropTypes.func,\n\n /**\n * Called when the user releases the mouse.\n *\n * @param {SyntheticEvent} event - React's original SyntheticEvent.\n * @param {object} data - All props and current checked/indeterminate state.\n */\n onMouseUp: PropTypes.func,\n\n /** Format as a radio element. This means it is an exclusive option. */\n radio: customPropTypes.every([PropTypes.bool, customPropTypes.disallow(['slider', 'toggle'])]),\n\n /** A checkbox can be read-only and unable to change states. */\n readOnly: PropTypes.bool,\n\n /** Format to emphasize the current selection state. */\n slider: customPropTypes.every([PropTypes.bool, customPropTypes.disallow(['radio', 'toggle'])]),\n\n /** A checkbox can receive focus. */\n tabIndex: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n\n /** Format to show an on or off choice. */\n toggle: customPropTypes.every([PropTypes.bool, customPropTypes.disallow(['radio', 'slider'])]),\n\n /** HTML input type, either checkbox or radio. */\n type: PropTypes.oneOf(['checkbox', 'radio']),\n\n /** The HTML input value. */\n value: PropTypes.oneOfType([PropTypes.string, PropTypes.number])\n} : {};\nCheckbox.defaultProps = {\n type: 'checkbox'\n};\nCheckbox.autoControlledProps = ['checked', 'indeterminate'];","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport React from 'react';\nimport { getUnhandledProps } from '../../lib';\nimport Checkbox from '../../modules/Checkbox';\n/**\n * A Radio is sugar for .\n * Useful for exclusive groups of sliders or toggles.\n * @see Checkbox\n * @see Form\n */\n\nfunction Radio(props) {\n var slider = props.slider,\n toggle = props.toggle,\n type = props.type;\n var rest = getUnhandledProps(Radio, props); // const ElementType = getElementType(Radio, props)\n // radio, slider, toggle are exclusive\n // use an undefined radio if slider or toggle are present\n\n var radio = !(slider || toggle) || undefined;\n return /*#__PURE__*/React.createElement(Checkbox, _extends({}, rest, {\n type: type,\n radio: radio,\n slider: slider,\n toggle: toggle\n }));\n}\n\nRadio.handledProps = [\"slider\", \"toggle\", \"type\"];\nRadio.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /** Format to emphasize the current selection state. */\n slider: Checkbox.propTypes.slider,\n\n /** Format to show an on or off choice. */\n toggle: Checkbox.propTypes.toggle,\n\n /** HTML input type, either checkbox or radio. */\n type: Checkbox.propTypes.type\n} : {};\nRadio.defaultProps = {\n type: 'radio'\n};\nexport default Radio;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _isNil from \"lodash-es/isNil\";\nimport _get from \"lodash-es/get\";\nimport cx from 'clsx';\nimport PropTypes from 'prop-types';\nimport React, { createElement } from 'react';\nimport { childrenUtils, createHTMLLabel, customPropTypes, getElementType, getUnhandledProps, SUI, useKeyOnly, useWidthProp } from '../../lib';\nimport Label from '../../elements/Label';\nimport Checkbox from '../../modules/Checkbox';\nimport Radio from '../../addons/Radio';\n/**\n * A field is a form element containing a label and an input.\n * @see Form\n * @see Button\n * @see Checkbox\n * @see Dropdown\n * @see Input\n * @see Radio\n * @see Select\n * @see Visibility\n */\n\nfunction FormField(props) {\n var children = props.children,\n className = props.className,\n content = props.content,\n control = props.control,\n disabled = props.disabled,\n error = props.error,\n inline = props.inline,\n label = props.label,\n required = props.required,\n type = props.type,\n width = props.width,\n id = props.id;\n var classes = cx(useKeyOnly(disabled, 'disabled'), useKeyOnly(error, 'error'), useKeyOnly(inline, 'inline'), useKeyOnly(required, 'required'), useWidthProp(width, 'wide'), 'field', className);\n var rest = getUnhandledProps(FormField, props);\n var ElementType = getElementType(FormField, props);\n\n var errorPointing = _get(error, 'pointing', 'above');\n\n var errorLabel = Label.create(error, {\n autoGenerateKey: false,\n defaultProps: {\n prompt: true,\n pointing: errorPointing,\n id: id ? id + \"-error-message\" : undefined,\n role: 'alert',\n 'aria-atomic': true\n }\n });\n var errorLabelBefore = (errorPointing === 'below' || errorPointing === 'right') && errorLabel;\n var errorLabelAfter = (errorPointing === 'above' || errorPointing === 'left') && errorLabel; // ----------------------------------------\n // No Control\n // ----------------------------------------\n\n if (_isNil(control)) {\n if (_isNil(label)) {\n return /*#__PURE__*/React.createElement(ElementType, _extends({}, rest, {\n className: classes,\n id: id\n }), childrenUtils.isNil(children) ? content : children);\n }\n\n return /*#__PURE__*/React.createElement(ElementType, _extends({}, rest, {\n className: classes,\n id: id\n }), errorLabelBefore, createHTMLLabel(label, {\n autoGenerateKey: false\n }), errorLabelAfter);\n } // ----------------------------------------\n // Checkbox/Radio Control\n // ----------------------------------------\n\n\n var ariaDescribedBy = id && error ? id + \"-error-message\" : null;\n var ariaAttrs = {\n 'aria-describedby': ariaDescribedBy,\n 'aria-invalid': error ? true : undefined\n };\n\n var controlProps = _extends({}, rest, {\n content: content,\n children: children,\n disabled: disabled,\n required: required,\n type: type,\n id: id\n }); // wrap HTML checkboxes/radios in the label\n\n\n if (control === 'input' && (type === 'checkbox' || type === 'radio')) {\n return /*#__PURE__*/React.createElement(ElementType, {\n className: classes\n }, /*#__PURE__*/React.createElement(\"label\", null, errorLabelBefore, /*#__PURE__*/createElement(control, _extends({}, ariaAttrs, controlProps)), \" \", label, errorLabelAfter));\n } // pass label prop to controls that support it\n\n\n if (control === Checkbox || control === Radio) {\n return /*#__PURE__*/React.createElement(ElementType, {\n className: classes\n }, errorLabelBefore, /*#__PURE__*/createElement(control, _extends({}, ariaAttrs, controlProps, {\n label: label\n })), errorLabelAfter);\n } // ----------------------------------------\n // Other Control\n // ----------------------------------------\n\n\n return /*#__PURE__*/React.createElement(ElementType, {\n className: classes\n }, createHTMLLabel(label, {\n defaultProps: {\n htmlFor: id\n },\n autoGenerateKey: false\n }), errorLabelBefore, /*#__PURE__*/createElement(control, _extends({}, ariaAttrs, controlProps)), errorLabelAfter);\n}\n\nFormField.handledProps = [\"as\", \"children\", \"className\", \"content\", \"control\", \"disabled\", \"error\", \"id\", \"inline\", \"label\", \"required\", \"type\", \"width\"];\nFormField.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /** An element type to render as (string or function). */\n as: PropTypes.elementType,\n\n /** Primary content. */\n children: PropTypes.node,\n\n /** Additional classes. */\n className: PropTypes.string,\n\n /** Shorthand for primary content. */\n content: customPropTypes.contentShorthand,\n\n /**\n * A form control component (i.e. Dropdown) or HTML tagName (i.e. 'input').\n * Extra FormField props are passed to the control component.\n * Mutually exclusive with children.\n */\n control: PropTypes.oneOfType([PropTypes.elementType, PropTypes.oneOf(['button', 'input', 'select', 'textarea'])]),\n\n /** Individual fields may be disabled. */\n disabled: PropTypes.bool,\n\n /** Individual fields may display an error state along with a message. */\n error: PropTypes.oneOfType([PropTypes.bool, customPropTypes.itemShorthand]),\n\n /** The id of the control */\n id: PropTypes.string,\n\n /** A field can have its label next to instead of above it. */\n inline: PropTypes.bool,\n // Heads Up!\n // Do not disallow children with `label` shorthand\n // The `control` might accept a `label` prop and `children`\n\n /** Mutually exclusive with children. */\n label: PropTypes.oneOfType([PropTypes.node, PropTypes.object]),\n\n /** A field can show that input is mandatory. */\n required: PropTypes.bool,\n\n /** Passed to the control component (i.e. ) */\n type: customPropTypes.every([customPropTypes.demand(['control']) // don't strictly validate HTML types\n // a control might be passed that uses a `type` prop with unknown values\n // let the control validate if for us\n ]),\n\n /** A field can specify its width in grid columns */\n width: PropTypes.oneOf(SUI.WIDTHS)\n} : {};\nexport default FormField;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport { getElementType, getUnhandledProps } from '../../lib';\nimport Button from '../../elements/Button';\nimport FormField from './FormField';\n/**\n * Sugar for .\n * @see Button\n * @see Form\n */\n\nfunction FormButton(props) {\n var control = props.control;\n var rest = getUnhandledProps(FormButton, props);\n var ElementType = getElementType(FormButton, props);\n return /*#__PURE__*/React.createElement(ElementType, _extends({}, rest, {\n control: control\n }));\n}\n\nFormButton.handledProps = [\"as\", \"control\"];\nFormButton.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /** An element type to render as (string or function). */\n as: PropTypes.elementType,\n\n /** A FormField control prop. */\n control: FormField.propTypes.control\n} : {};\nFormButton.defaultProps = {\n as: FormField,\n control: Button\n};\nexport default FormButton;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport { getElementType, getUnhandledProps } from '../../lib';\nimport Checkbox from '../../modules/Checkbox';\nimport FormField from './FormField';\n/**\n * Sugar for .\n * @see Checkbox\n * @see Form\n */\n\nfunction FormCheckbox(props) {\n var control = props.control;\n var rest = getUnhandledProps(FormCheckbox, props);\n var ElementType = getElementType(FormCheckbox, props);\n return /*#__PURE__*/React.createElement(ElementType, _extends({}, rest, {\n control: control\n }));\n}\n\nFormCheckbox.handledProps = [\"as\", \"control\"];\nFormCheckbox.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /** An element type to render as (string or function). */\n as: PropTypes.elementType,\n\n /** A FormField control prop. */\n control: FormField.propTypes.control\n} : {};\nFormCheckbox.defaultProps = {\n as: FormField,\n control: Checkbox\n};\nexport default FormCheckbox;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport { getElementType, getUnhandledProps } from '../../lib';\nimport Dropdown from '../../modules/Dropdown';\nimport FormField from './FormField';\n/**\n * Sugar for .\n * @see Dropdown\n * @see Form\n */\n\nfunction FormDropdown(props) {\n var control = props.control;\n var rest = getUnhandledProps(FormDropdown, props);\n var ElementType = getElementType(FormDropdown, props);\n return /*#__PURE__*/React.createElement(ElementType, _extends({}, rest, {\n control: control\n }));\n}\n\nFormDropdown.handledProps = [\"as\", \"control\"];\nFormDropdown.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /** An element type to render as (string or function). */\n as: PropTypes.elementType,\n\n /** A FormField control prop. */\n control: FormField.propTypes.control\n} : {};\nFormDropdown.defaultProps = {\n as: FormField,\n control: Dropdown\n};\nexport default FormDropdown;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport cx from 'clsx';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport { customPropTypes, getElementType, getUnhandledProps, SUI, useKeyOnly, useWidthProp } from '../../lib';\n/**\n * A set of fields can appear grouped together.\n * @see Form\n */\n\nfunction FormGroup(props) {\n var children = props.children,\n className = props.className,\n grouped = props.grouped,\n inline = props.inline,\n unstackable = props.unstackable,\n widths = props.widths;\n var classes = cx(useKeyOnly(grouped, 'grouped'), useKeyOnly(inline, 'inline'), useKeyOnly(unstackable, 'unstackable'), useWidthProp(widths, null, true), 'fields', className);\n var rest = getUnhandledProps(FormGroup, props);\n var ElementType = getElementType(FormGroup, props);\n return /*#__PURE__*/React.createElement(ElementType, _extends({}, rest, {\n className: classes\n }), children);\n}\n\nFormGroup.handledProps = [\"as\", \"children\", \"className\", \"grouped\", \"inline\", \"unstackable\", \"widths\"];\nFormGroup.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /** An element type to render as (string or function). */\n as: PropTypes.elementType,\n\n /** Primary content. */\n children: PropTypes.node,\n\n /** Additional classes. */\n className: PropTypes.string,\n\n /** Fields can show related choices. */\n grouped: customPropTypes.every([customPropTypes.disallow(['inline']), PropTypes.bool]),\n\n /** Multiple fields may be inline in a row. */\n inline: customPropTypes.every([customPropTypes.disallow(['grouped']), PropTypes.bool]),\n\n /** A form group can prevent itself from stacking on mobile. */\n unstackable: PropTypes.bool,\n\n /** Fields Groups can specify their width in grid columns or automatically divide fields to be equal width. */\n widths: PropTypes.oneOf([].concat(SUI.WIDTHS, ['equal']))\n} : {};\nexport default FormGroup;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport { getElementType, getUnhandledProps } from '../../lib';\nimport Input from '../../elements/Input';\nimport FormField from './FormField';\n/**\n * Sugar for .\n * @see Form\n * @see Input\n */\n\nfunction FormInput(props) {\n var control = props.control;\n var rest = getUnhandledProps(FormInput, props);\n var ElementType = getElementType(FormInput, props);\n return /*#__PURE__*/React.createElement(ElementType, _extends({}, rest, {\n control: control\n }));\n}\n\nFormInput.handledProps = [\"as\", \"control\"];\nFormInput.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /** An element type to render as (string or function). */\n as: PropTypes.elementType,\n\n /** A FormField control prop. */\n control: FormField.propTypes.control\n} : {};\nFormInput.defaultProps = {\n as: FormField,\n control: Input\n};\nexport default FormInput;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport { getElementType, getUnhandledProps } from '../../lib';\nimport Radio from '../../addons/Radio';\nimport FormField from './FormField';\n/**\n * Sugar for .\n * @see Form\n * @see Radio\n */\n\nfunction FormRadio(props) {\n var control = props.control;\n var rest = getUnhandledProps(FormRadio, props);\n var ElementType = getElementType(FormRadio, props);\n return /*#__PURE__*/React.createElement(ElementType, _extends({}, rest, {\n control: control\n }));\n}\n\nFormRadio.handledProps = [\"as\", \"control\"];\nFormRadio.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /** An element type to render as (string or function). */\n as: PropTypes.elementType,\n\n /** A FormField control prop. */\n control: FormField.propTypes.control\n} : {};\nFormRadio.defaultProps = {\n as: FormField,\n control: Radio\n};\nexport default FormRadio;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport Dropdown from '../../modules/Dropdown';\n/**\n * A Select is sugar for .\n * @see Dropdown\n * @see Form\n */\n\nfunction Select(props) {\n return /*#__PURE__*/React.createElement(Dropdown, _extends({}, props, {\n selection: true\n }));\n}\n\nSelect.handledProps = [\"options\"];\nSelect.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /** Array of Dropdown.Item props e.g. `{ text: '', value: '' }` */\n options: PropTypes.arrayOf(PropTypes.shape(Dropdown.Item.propTypes)).isRequired\n} : {};\nSelect.Divider = Dropdown.Divider;\nSelect.Header = Dropdown.Header;\nSelect.Item = Dropdown.Item;\nSelect.Menu = Dropdown.Menu;\nexport default Select;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport { getElementType, getUnhandledProps } from '../../lib';\nimport Select from '../../addons/Select';\nimport Dropdown from '../../modules/Dropdown';\nimport FormField from './FormField';\n/**\n * Sugar for .\n * @see Form\n * @see Select\n */\n\nfunction FormSelect(props) {\n var control = props.control,\n options = props.options;\n var rest = getUnhandledProps(FormSelect, props);\n var ElementType = getElementType(FormSelect, props);\n return /*#__PURE__*/React.createElement(ElementType, _extends({}, rest, {\n control: control,\n options: options\n }));\n}\n\nFormSelect.handledProps = [\"as\", \"control\", \"options\"];\nFormSelect.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /** An element type to render as (string or function). */\n as: PropTypes.elementType,\n\n /** A FormField control prop. */\n control: FormField.propTypes.control,\n\n /** Array of Dropdown.Item props e.g. `{ text: '', value: '' }` */\n options: PropTypes.arrayOf(PropTypes.shape(Dropdown.Item.propTypes)).isRequired\n} : {};\nFormSelect.defaultProps = {\n as: FormField,\n control: Select\n};\nexport default FormSelect;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport _invoke from \"lodash-es/invoke\";\nimport _get from \"lodash-es/get\";\nimport { Ref } from '@fluentui/react-component-ref';\nimport PropTypes from 'prop-types';\nimport React, { Component, createRef } from 'react';\nimport { getElementType, getUnhandledProps } from '../../lib';\n/**\n * A TextArea can be used to allow for extended user input.\n * @see Form\n */\n\nvar TextArea = /*#__PURE__*/function (_Component) {\n _inheritsLoose(TextArea, _Component);\n\n function TextArea() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _Component.call.apply(_Component, [this].concat(args)) || this;\n _this.ref = /*#__PURE__*/createRef();\n\n _this.focus = function () {\n return _this.ref.current.focus();\n };\n\n _this.handleChange = function (e) {\n var value = _get(e, 'target.value');\n\n _invoke(_this.props, 'onChange', e, _extends({}, _this.props, {\n value: value\n }));\n };\n\n _this.handleInput = function (e) {\n var value = _get(e, 'target.value');\n\n _invoke(_this.props, 'onInput', e, _extends({}, _this.props, {\n value: value\n }));\n };\n\n return _this;\n }\n\n var _proto = TextArea.prototype;\n\n _proto.render = function render() {\n var _this$props = this.props,\n rows = _this$props.rows,\n value = _this$props.value;\n var rest = getUnhandledProps(TextArea, this.props);\n var ElementType = getElementType(TextArea, this.props);\n return /*#__PURE__*/React.createElement(Ref, {\n innerRef: this.ref\n }, /*#__PURE__*/React.createElement(ElementType, _extends({}, rest, {\n onChange: this.handleChange,\n onInput: this.handleInput,\n rows: rows,\n value: value\n })));\n };\n\n return TextArea;\n}(Component);\n\nTextArea.handledProps = [\"as\", \"onChange\", \"onInput\", \"rows\", \"value\"];\nTextArea.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /** An element type to render as (string or function). */\n as: PropTypes.elementType,\n\n /**\n * Called on change.\n * @param {SyntheticEvent} event - The React SyntheticEvent object\n * @param {object} data - All props and the event value.\n */\n onChange: PropTypes.func,\n\n /**\n * Called on input.\n * @param {SyntheticEvent} event - The React SyntheticEvent object\n * @param {object} data - All props and the event value.\n */\n onInput: PropTypes.func,\n\n /** Indicates row count for a TextArea. */\n rows: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n\n /** The value of the textarea. */\n value: PropTypes.oneOfType([PropTypes.number, PropTypes.string])\n} : {};\nTextArea.defaultProps = {\n as: 'textarea',\n rows: 3\n};\nexport default TextArea;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport { getElementType, getUnhandledProps } from '../../lib';\nimport TextArea from '../../addons/TextArea';\nimport FormField from './FormField';\n/**\n * Sugar for .\n * @see Form\n * @see TextArea\n */\n\nfunction FormTextArea(props) {\n var control = props.control;\n var rest = getUnhandledProps(FormTextArea, props);\n var ElementType = getElementType(FormTextArea, props);\n return /*#__PURE__*/React.createElement(ElementType, _extends({}, rest, {\n control: control\n }));\n}\n\nFormTextArea.handledProps = [\"as\", \"control\"];\nFormTextArea.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /** An element type to render as (string or function). */\n as: PropTypes.elementType,\n\n /** A FormField control prop. */\n control: FormField.propTypes.control\n} : {};\nFormTextArea.defaultProps = {\n as: FormField,\n control: TextArea\n};\nexport default FormTextArea;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport _without from \"lodash-es/without\";\nimport _invoke from \"lodash-es/invoke\";\nimport cx from 'clsx';\nimport PropTypes from 'prop-types';\nimport React, { Component } from 'react';\nimport { getElementType, getUnhandledProps, SUI, useKeyOnly, useWidthProp } from '../../lib';\nimport FormButton from './FormButton';\nimport FormCheckbox from './FormCheckbox';\nimport FormDropdown from './FormDropdown';\nimport FormField from './FormField';\nimport FormGroup from './FormGroup';\nimport FormInput from './FormInput';\nimport FormRadio from './FormRadio';\nimport FormSelect from './FormSelect';\nimport FormTextArea from './FormTextArea';\n/**\n * A Form displays a set of related user input fields in a structured way.\n * @see Button\n * @see Checkbox\n * @see Dropdown\n * @see Input\n * @see Message\n * @see Radio\n * @see Select\n * @see Visibility\n */\n\nvar Form = /*#__PURE__*/function (_Component) {\n _inheritsLoose(Form, _Component);\n\n function Form() {\n var _this;\n\n for (var _len = arguments.length, _args = new Array(_len), _key = 0; _key < _len; _key++) {\n _args[_key] = arguments[_key];\n }\n\n _this = _Component.call.apply(_Component, [this].concat(_args)) || this;\n\n _this.handleSubmit = function (e) {\n var action = _this.props.action; // Heads up! Third party libs can pass own data as first argument, we need to check that it has preventDefault()\n // method.\n\n if (typeof action !== 'string') _invoke(e, 'preventDefault');\n\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n _invoke.apply(void 0, [_this.props, 'onSubmit', e, _this.props].concat(args));\n };\n\n return _this;\n }\n\n var _proto = Form.prototype;\n\n _proto.render = function render() {\n var _this$props = this.props,\n action = _this$props.action,\n children = _this$props.children,\n className = _this$props.className,\n error = _this$props.error,\n inverted = _this$props.inverted,\n loading = _this$props.loading,\n reply = _this$props.reply,\n size = _this$props.size,\n success = _this$props.success,\n unstackable = _this$props.unstackable,\n warning = _this$props.warning,\n widths = _this$props.widths;\n var classes = cx('ui', size, useKeyOnly(error, 'error'), useKeyOnly(inverted, 'inverted'), useKeyOnly(loading, 'loading'), useKeyOnly(reply, 'reply'), useKeyOnly(success, 'success'), useKeyOnly(unstackable, 'unstackable'), useKeyOnly(warning, 'warning'), useWidthProp(widths, null, true), 'form', className);\n var rest = getUnhandledProps(Form, this.props);\n var ElementType = getElementType(Form, this.props);\n return /*#__PURE__*/React.createElement(ElementType, _extends({}, rest, {\n action: action,\n className: classes,\n onSubmit: this.handleSubmit\n }), children);\n };\n\n return Form;\n}(Component);\n\nForm.handledProps = [\"action\", \"as\", \"children\", \"className\", \"error\", \"inverted\", \"loading\", \"onSubmit\", \"reply\", \"size\", \"success\", \"unstackable\", \"warning\", \"widths\"];\nForm.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /** An element type to render as (string or function). */\n as: PropTypes.elementType,\n\n /** The HTML form action */\n action: PropTypes.string,\n\n /** Primary content. */\n children: PropTypes.node,\n\n /** Additional classes. */\n className: PropTypes.string,\n\n /** Automatically show any error Message children. */\n error: PropTypes.bool,\n\n /** A form can have its color inverted for contrast. */\n inverted: PropTypes.bool,\n\n /** Automatically show a loading indicator. */\n loading: PropTypes.bool,\n\n /** The HTML form submit handler. */\n onSubmit: PropTypes.func,\n\n /** A comment can contain a form to reply to a comment. This may have arbitrary content. */\n reply: PropTypes.bool,\n\n /** A form can vary in size. */\n size: PropTypes.oneOf(_without(SUI.SIZES, 'medium')),\n\n /** Automatically show any success Message children. */\n success: PropTypes.bool,\n\n /** A form can prevent itself from stacking on mobile. */\n unstackable: PropTypes.bool,\n\n /** Automatically show any warning Message children. */\n warning: PropTypes.bool,\n\n /** Forms can automatically divide fields to be equal width. */\n widths: PropTypes.oneOf(['equal'])\n} : {};\nForm.defaultProps = {\n as: 'form'\n};\nForm.Field = FormField;\nForm.Button = FormButton;\nForm.Checkbox = FormCheckbox;\nForm.Dropdown = FormDropdown;\nForm.Group = FormGroup;\nForm.Input = FormInput;\nForm.Radio = FormRadio;\nForm.Select = FormSelect;\nForm.TextArea = FormTextArea;\nexport default Form;","import React, { SyntheticEvent, useState } from \"react\";\r\nimport Style from \"./input-action.module.css\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { Button, Form, Input } from \"semantic-ui-react\";\r\nimport { actionTypeENUM } from \"../../../../../redux/assistantBot\";\r\n\r\ninterface UserInputProps {\r\n onSubmit: any;\r\n title: string\r\n type: string\r\n}\r\n\r\nconst InputAction = (props: UserInputProps) => {\r\n const { t } = useTranslation();\r\n const [inputActive, setInputActive] = useState(false);\r\n const [userInput, setUserInput] = useState(\"\");\r\n const userInputChangeHandler = (event: any, data: any) => {\r\n setUserInput(data.value);\r\n };\r\n\r\n const onSubmitInput = async (event?: SyntheticEvent) => {\r\n event?.preventDefault();\r\n if (userInput && userInput.length > 0) {\r\n props.onSubmit({\r\n type: actionTypeENUM.inputText,\r\n data: userInput\r\n });\r\n setUserInput(\"\");\r\n }\r\n };\r\n return (\r\n \r\n
\r\n {props.title}\r\n {\r\n setInputActive(true);\r\n }}\r\n onBlur={() => {\r\n setInputActive(false);\r\n }}\r\n onChange={userInputChangeHandler}\r\n value={userInput}\r\n className={Style.sc_user_input__text}\r\n onKeyPress={(e: React.KeyboardEvent) => {\r\n if (e.key === \"Enter\") {\r\n onSubmitInput(e)\r\n }\r\n }}\r\n type={props.type === \"name\" ? \"text\" : \"number\"}\r\n />\r\n
\r\n \r\n\r\n

{t(\"WSA_label\")}

\r\n \r\n
\r\n

{t(\"Assistant_Welcome_Bot\")}

\r\n
\r\n
\r\n
\r\n \r\n {\r\n (onStartAChatChannel && featureType && channelArn && userChime) ? (\r\n \r\n ) : (\r\n !showLoadingDot && (\r\n \r\n )\r\n )\r\n }\r\n
\r\n
\r\n {\r\n displayErrorModal && ()\r\n }\r\n {\r\n displayDeleteModal && ()\r\n }\r\n {\r\n displaydetectedLanguageModal && ()\r\n }\r\n {\r\n displaySelectLanguageModal && ( setDisplaySelectLanguageModal(false)} enableByBotWidget={displaySelectLanguageModal} acceptButtonText={t('Continue_panel')} />)\r\n }\r\n {isLoading && (\r\n \r\n \r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default AssistantDashBoard;","// extracted by mini-css-extract-plugin\nexport default {\"landing_page_container\":\"LandingPage_landing_page_container__30YwE\",\"page_main__header_title\":\"LandingPage_page_main__header_title__Mpwhb\",\"header_title\":\"LandingPage_header_title__Q8esF\",\"header_name\":\"LandingPage_header_name__G2-Ng\",\"main_content\":\"LandingPage_main_content__p9AMr\",\"item\":\"LandingPage_item__YbQky\",\"item-image\":\"LandingPage_item-image__zJnoy\",\"first\":\"LandingPage_first__GAOJb\",\"second\":\"LandingPage_second__8crxs\",\"page-main--footer\":\"LandingPage_page-main--footer__YTLbj\"};","// extracted by mini-css-extract-plugin\nexport default {\"product_card\":\"ProductCard_product_card__EIIeN\",\"product_card__image\":\"ProductCard_product_card__image__P9+ME\",\"product_card__name\":\"ProductCard_product_card__name__VwRCN\",\"product_card__learnmore\":\"ProductCard_product_card__learnmore__TcFZl\",\"image\":\"ProductCard_image__2L8sN\",\"right_icon\":\"ProductCard_right_icon__VhLpn\",\"learnmore__btn\":\"ProductCard_learnmore__btn__Siinj\"};","import * as React from \"react\";\r\nimport Styles from \"./ProductCard.module.css\";\r\nimport { useEffect, useState } from \"react\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { AppItemDetail } from \"../../models/AppItem.model\";\r\nimport Boschicon from \"../boschIcon/Boschicon\";\r\n\r\ninterface ProductsCardProps {\r\n item: AppItemDetail;\r\n}\r\n\r\nconst ProductsCardCom: React.FunctionComponent = ({\r\n item,\r\n}: ProductsCardProps) => {\r\n let [newImage, setNewImage] = useState(item.image);\r\n const { t } = useTranslation();\r\n useEffect(() => {\r\n import(\"../../assets/\" + item.image).then((image) => {\r\n setNewImage(image.default);\r\n });\r\n }, [item.image]);\r\n\r\n return (\r\n
\r\n
\r\n \"\"\r\n
\r\n
{item.title}
\r\n \r\n
\r\n );\r\n};\r\n\r\nexport { ProductsCardCom };\r\n","// extracted by mini-css-extract-plugin\nexport default {\"sc_widget\":\"bot-widget_sc_widget__OVnq9\",\"sc_launcher\":\"bot-widget_sc_launcher__uSt2K\",\"opened\":\"bot-widget_opened__+BtY-\",\"sc_closed_icon\":\"bot-widget_sc_closed_icon__7+LC0\"};","function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgRobothead(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 192 192\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M72 120h48c6.617 0 12-5.383 12-12V96H60v12c0 6.617 5.383 12 12 12zm12-8v-8h8v8h-8zm16-8h8v8h-8v-8zm24 4c0 2.206-1.794 4-4 4h-4v-8h8v4zm-56-4h8v8h-4c-2.206 0-4-1.794-4-4v-4zm6-20c7.72 0 14-6.28 14-14s-6.28-14-14-14-14 6.28-14 14 6.28 14 14 14zm0-20c3.309 0 6 2.691 6 6s-2.691 6-6 6-6-2.691-6-6 2.691-6 6-6zm102 24c0-11.87-8.664-21.75-20-23.66V40h-56v-9.079A7.99 7.99 0 0 0 104 24a8 8 0 0 0-16 0 7.99 7.99 0 0 0 4 6.921V40H36v24.34C24.664 66.25 16 76.13 16 88s8.664 21.75 20 23.66V136h32v16H36v24h120v-24h-36v-16h36v-24.34c11.336-1.91 20-11.79 20-23.66zM24 88c0-7.439 5.11-13.69 12-15.473v30.946C29.11 101.69 24 95.44 24 88zm124 72v8H44v-8h104zm-36-8H76v-16h36v16zm36-24H44V48h104v80zm8-24.527V72.527c6.89 1.783 12 8.034 12 15.473s-5.11 13.69-12 15.473zM118 84c7.72 0 14-6.28 14-14s-6.28-14-14-14-14 6.28-14 14 6.28 14 14 14zm0-20c3.309 0 6 2.691 6 6s-2.691 6-6 6-6-2.691-6-6 2.691-6 6-6z\",\n style: {\n fill: \"#ffffff\"\n }\n }));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgRobothead);\nexport default __webpack_public_path__ + \"static/media/robothead.4ce7845139a7c57b1b0e67e8517171d5.svg\";\nexport { ForwardRef as ReactComponent };","// extracted by mini-css-extract-plugin\nexport default {\"sc_chat_window\":\"chat-window_sc_chat_window__ya-iZ\",\"closed\":\"chat-window_closed__KzPW8\",\"btns_confirm_close_session\":\"chat-window_btns_confirm_close_session__qIsWi\",\"btn_confirm_close_session__button\":\"chat-window_btn_confirm_close_session__button__izPk3\",\"gray\":\"chat-window_gray__0dmgo\",\"content_confirm_close_session\":\"chat-window_content_confirm_close_session__VHl4A\"};","// extracted by mini-css-extract-plugin\nexport default {\"sc_header\":\"header_sc_header__2n5jF\",\"menu_icon_area\":\"header_menu_icon_area__q574l\",\"header_icon_button\":\"header_header_icon_button__VxMYZ\",\"dropdown_menu_icon\":\"header_dropdown_menu_icon__az4+-\",\"dropDown_box\":\"header_dropDown_box__CQmYq\",\"translate_modal_btn\":\"header_translate_modal_btn__39I7n\",\"disable\":\"header_disable__dQuT8\"};","import { FC, useState } from \"react\";\r\nimport { Button, Dropdown, Grid, Menu, Popup } from \"semantic-ui-react\";\r\nimport Style from \"./styles/header.module.css\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport React from \"react\";\r\nimport Boschicon from \"../../../../common-components/boschIcon/Boschicon\";\r\nimport { useSelector } from \"react-redux\";\r\nimport { selectChannelArn, selectIsTranslate } from \"../../../../redux/chimeSlide\";\r\n\r\nexport interface IHeader {\r\n title: string;\r\n onExpandWindow: () => void;\r\n onClose: () => void;\r\n onMinimize: () => void;\r\n onOpenTranslateModal: () => void;\r\n onCloseTranslateModal: () => void;\r\n}\r\n\r\nconst Header: FC = ({ onClose, title, onExpandWindow, onMinimize, onOpenTranslateModal, onCloseTranslateModal }) => {\r\n const { t } = useTranslation();\r\n const [open, setOpen] = useState(false);\r\n const isTranslate = useSelector(selectIsTranslate);\r\n const channelArn = useSelector(selectChannelArn);\r\n\r\n const onCheckClick = () => {\r\n if (isTranslate.status) {\r\n onCloseTranslateModal()\r\n } else {\r\n onOpenTranslateModal()\r\n }\r\n }\r\n\r\n return (\r\n
\r\n
\r\n
\r\n
\r\n setOpen(!open)}\r\n icon={\r\n open ? : \r\n }\r\n />\r\n {\r\n open &&
\r\n {t(\"Live_Translation\")}\r\n \r\n
\r\n }\r\n
\r\n

{title}

\r\n
\r\n\r\n
\r\n }\r\n onClick={() => {\r\n setOpen(false)\r\n onMinimize()\r\n }}\r\n className={Style.header_icon_button}\r\n />} position=\"top center\">\r\n {t(\"Minimize_Label\")}\r\n \r\n\r\n }\r\n onClick={() => {\r\n onExpandWindow()\r\n setOpen(false)\r\n }}\r\n className={Style.header_icon_button}\r\n\r\n />} position=\"top center\">\r\n {t(\"Maximize_Label\")}\r\n \r\n\r\n {\r\n channelArn && (}\r\n onClick={() => {\r\n onClose()\r\n setOpen(false)\r\n }}\r\n className={Style.header_icon_button}\r\n />} position=\"top left\">\r\n {t(\"Close_Session_Label\")}\r\n )\r\n }\r\n\r\n
\r\n\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default Header;\r\n","import { FC, useEffect, useRef, useState } from \"react\";\r\nimport React from \"react\";\r\nimport Style from './styles/chat-window.module.css';\r\nimport Header from \"./Header\";\r\nimport Messages from \"./MessageList\";\r\nimport UserInput from \"./UserInput\";\r\nimport { messageListModal, selectAssistantMessageListState, selectChatChannelHistory, selectFeatureType, selectOnSaveHistoryMessages, selectOnStartAChatChannel, selectShowLoadingDot, selectUserChime, senderENUM, setChatChannelHistory, setOnSaveHistoryMessages } from \"../../../../redux/assistantBot\";\r\nimport { useSelector } from \"react-redux\";\r\nimport PublicInputMessage from \"../../PublicDashBoard/PublicInputChat/PublicInputMessage\";\r\nimport { ChannelSetMessage, selectChannelArn, selectIsTranslate } from \"../../../../redux/chimeSlide\";\r\nimport { Button } from \"semantic-ui-react\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport Boschicon from \"../../../../common-components/boschIcon/Boschicon\";\r\nimport { createMemberArn, listChannelMessages } from \"../../../../api/ChimeAPI\";\r\nimport { CommonService } from \"../../../../services/Common\";\r\nimport { useAppDispatch } from \"../../../../redux/store\";\r\nimport { MemberPresence } from \"./BotWidget\";\r\nimport formatTime from \"../../../../services/FormatTime\";\r\n\r\nexport interface IChatProps {\r\n isOpen: boolean;\r\n onLoginAwsSuccess: boolean;\r\n onClose: () => void;\r\n onExpandWindow: () => void;\r\n onMinimize: () => void;\r\n onOpenTranslateModal: () => void;\r\n onCloseTranslateModal: () => void;\r\n title: string;\r\n message: messageListModal[];\r\n onUserInputSubmit: any;\r\n memberPresenceList: MemberPresence[]\r\n}\r\n\r\nconst ChatWindow: FC = ({ isOpen, onClose, title, message, onUserInputSubmit, onExpandWindow, onOpenTranslateModal, onCloseTranslateModal, onMinimize, onLoginAwsSuccess, memberPresenceList }) => {\r\n const showLoadingDot = useSelector(selectShowLoadingDot);\r\n const onStartAChatChannel = useSelector(selectOnStartAChatChannel);\r\n const assistantMessageListState = useSelector(selectAssistantMessageListState);\r\n const featureType = useSelector(selectFeatureType);\r\n const chatChannelHistory = useSelector(selectChatChannelHistory);\r\n const browserLanguage = window.navigator.language\r\n const channelArn = useSelector(selectChannelArn);\r\n const userChimeID = useSelector(selectUserChime);\r\n const onSaveHistoryMessages = useSelector(selectOnSaveHistoryMessages);\r\n const [onCloseSessionConfirm, setOnCloseSessionConfirm] = useState(false);\r\n const [updatedListMessage, setUpdatedListMessage] = useState([]);\r\n const [updatedListChannelMessage, setUpdatedListChannelMessage] = useState(null);\r\n const [channelMessageState, setChannelMessageState] = useState(null);\r\n const isTranslate = useSelector(selectIsTranslate);\r\n const chatWidgetDivRef = useRef(null);\r\n const dispatchReduxToolkit = useAppDispatch();\r\n const [onLoadChannelMessageSuccess, setOnLoadChannelMessageSuccess] = useState(false);\r\n const { t } = useTranslation();\r\n\r\n const handleOnCloseSession = () => {\r\n setOnCloseSessionConfirm(true)\r\n }\r\n\r\n const handleOnBeforeCloseSession = () => {\r\n onClose()\r\n setTimeout(() => { setOnCloseSessionConfirm(false) }, 500)\r\n }\r\n\r\n useEffect(() => {\r\n const progressMessages = async () => {\r\n let tempMessageList: messageListModal[] = [];\r\n if (assistantMessageListState) {\r\n tempMessageList = assistantMessageListState;\r\n }\r\n if (channelArn && channelMessageState && channelMessageState.ChannelMessages && onLoadChannelMessageSuccess) {\r\n let tempChannelMessage = await channelMessageState.ChannelMessages.map((m: any) => {\r\n const senderArn = m?.Sender?.Arn;\r\n let senderType = senderENUM.boschExpert;\r\n let currentTime = formatTime(m.CreatedTimestamp);\r\n if (senderArn.includes(`${userChimeID?.userId}`)) {\r\n senderType = senderENUM.user\r\n } else {\r\n senderType = senderENUM.member\r\n }\r\n\r\n if (senderArn.includes(`@bosch.com`)) {\r\n senderType = senderENUM.boschExpert\r\n }\r\n return {\r\n sender: senderType,\r\n message: m.Content,\r\n datetime: currentTime,\r\n metaData: m.Metadata,\r\n messageId: m.MessageId || \"\",\r\n senderName: m.Sender?.Name || \"\",\r\n senderArn: m.Sender?.Arn || \"\"\r\n }\r\n })\r\n if (!onSaveHistoryMessages && !chatChannelHistory) {\r\n let checkedTempChannelMessage = tempChannelMessage.length === 0 ? [\"empty\"] : tempChannelMessage;\r\n await dispatchReduxToolkit(\r\n setChatChannelHistory(checkedTempChannelMessage),\r\n )\r\n await dispatchReduxToolkit(\r\n setOnSaveHistoryMessages(true),\r\n )\r\n }\r\n setUpdatedListChannelMessage(tempChannelMessage);\r\n }\r\n setUpdatedListMessage(tempMessageList);\r\n }\r\n progressMessages();\r\n }, [message, channelMessageState, assistantMessageListState, onSaveHistoryMessages])\r\n\r\n\r\n useEffect(() => {\r\n const updateMessage = async () => {\r\n if (onLoginAwsSuccess && channelArn && channelArn !== '') {\r\n const newMessages = await listChannelMessages(\r\n channelArn,\r\n userChimeID?.userId\r\n )\r\n\r\n let listNewChannelMessage = newMessages.Messages ? newMessages.Messages.filter((m: any, i, seif) => {\r\n let checkType = m.Metadata ? JSON.parse(m.Metadata).type : \"\"\r\n if (checkType === 'history') {\r\n return false;\r\n }\r\n return true;\r\n }) : [];\r\n\r\n const message_translate = await Promise.all(\r\n listNewChannelMessage.map(async (message: any) => {\r\n if (\r\n createMemberArn(userChimeID) !== message.Sender.Arn &&\r\n isTranslate.status\r\n ) {\r\n const translateMessage = await CommonService.liveTranslateMessage(\r\n message.Content,\r\n isTranslate.langSource,\r\n isTranslate.langTarget,\r\n )\r\n return { ...message, Content: translateMessage }\r\n }\r\n return message\r\n }),\r\n )\r\n await dispatchReduxToolkit(\r\n ChannelSetMessage({\r\n ChannelMessages: message_translate,\r\n NextToken: newMessages.NextToken,\r\n }),\r\n )\r\n await setChannelMessageState(\r\n newMessages ? {\r\n ChannelMessages: message_translate,\r\n NextToken: newMessages.NextToken,\r\n } : null\r\n )\r\n setOnLoadChannelMessageSuccess(true);\r\n }\r\n }\r\n updateMessage()\r\n }, [channelArn, message, isTranslate, onLoginAwsSuccess])\r\n\r\n useEffect(() => {\r\n if (!channelArn) {\r\n setUpdatedListChannelMessage(null)\r\n setChannelMessageState(null)\r\n }\r\n }, [channelArn])\r\n\r\n useEffect(() => {\r\n /**\r\n * minimize chat widget clicked on outside of element\r\n */\r\n function handleClickOutside(e: any) {\r\n const hasClassContainer = e.target.classList.contains('container-landingpage');\r\n const hasClassContainerMainContent = e.target.classList.contains('LandingPage_main_content__47xmq');\r\n if (chatWidgetDivRef.current && !chatWidgetDivRef.current.contains(e.target) && (hasClassContainer || hasClassContainerMainContent)) {\r\n onMinimize()\r\n }\r\n }\r\n // Bind the event listener\r\n document.addEventListener(\"mousedown\", handleClickOutside);\r\n return () => {\r\n // Unbind the event listener on clean up\r\n document.removeEventListener(\"mousedown\", handleClickOutside);\r\n };\r\n }, [chatWidgetDivRef]);\r\n\r\n return (\r\n \r\n \r\n\r\n\r\n {\r\n onCloseSessionConfirm ? (\r\n <>\r\n
\r\n \r\n

{t(\"Close_Channel_Message_Question\")}

\r\n
\r\n
\r\n
\r\n \r\n ) : (\r\n <>\r\n \r\n {\r\n (onStartAChatChannel) ? (\r\n <>\r\n {\r\n (featureType && channelArn && userChimeID) && (\r\n \r\n )\r\n }\r\n \r\n ) : (\r\n !showLoadingDot ? (\r\n \r\n ) : (\r\n <>\r\n )\r\n )\r\n }\r\n \r\n )\r\n }\r\n \r\n );\r\n};\r\n\r\nexport default ChatWindow;\r\n","import { Fragment, useEffect, useState } from \"react\";\r\nimport React from \"react\";\r\nimport Style from './styles/bot-widget.module.css';\r\nimport launcherIcon from './assets/robothead.svg';\r\nimport ChatWindow from \"./ChatWindow\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { useAppDispatch } from \"../../../../redux/store\";\r\nimport {\r\n addMessageItem, funtionalTypeENUM, selectActiveState, selectAssistantMessageListState, selectStepAction, senderENUM, setActiveState, stepENUM,\r\n selectFeatureType,\r\n setSelectedFeatureState,\r\n setStepState,\r\n actionTypeENUM,\r\n selectOnStartAChatChannel,\r\n setOnStartAChatChannel,\r\n clearStateAfterEndChannel,\r\n clearAssistantState,\r\n setUserChime,\r\n selectUserChime,\r\n setPresenceOfUserInPublicChannel,\r\n} from \"../../../../redux/assistantBot\";\r\nimport { useSelector } from \"react-redux\";\r\nimport MessagingService from \"../../../../services/MessagingService\";\r\nimport { ChannelClearState, ChannelSetMessage, SetIsTranslate, SetNewMemberJoinChannel, channelSetChannel, selectChannelArn, selectIsTranslate } from \"../../../../redux/chimeSlide\";\r\nimport { v4 } from \"uuid\";\r\nimport { CommonService } from \"../../../../services/Common\";\r\nimport AWS from \"aws-sdk\";\r\nimport { RSADecrypt } from \"../../../../services/RSA_Encrypt\";\r\nimport { MessageType, Persistence, createChannelMembership, createMemberArn, deleteChannelMembership, describeChannel, listChannelMemberships, listChannelMembershipsForAppInstanceUser, listChannelMessages, listChannels, sendChannelMessage } from \"../../../../api/ChimeAPI\";\r\nimport addNotification from \"react-push-notification\";\r\nimport { TimeOutOnlineStatus, countryOptions } from \"../../../../helpers/AppConstants\";\r\nimport ModalTranlationOptionsPublic from \"../../../modals/publicChannelModal/ModalTranlationOptionsPublic\";\r\nimport RDAlert from \"../../../../common-components/RDComponents/RDAlert\";\r\nimport CustomLoader from \"../../../../common-components/RDComponents/CustomLoader\";\r\nimport { selectMeetingState } from \"../../../../redux/meeting\";\r\nimport SignalRService from \"../../../../services/SignalRService\";\r\n\r\ninterface MemberModel {\r\n username: string,\r\n userId: string\r\n}\r\n\r\ninterface memberSingal {\r\n memberARN: string,\r\n status: string,\r\n datetime: string,\r\n role: string\r\n}\r\n\r\nexport interface MemberPresence {\r\n userArn: string,\r\n status: string,\r\n role: string\r\n}\r\nexport interface languageDetectedCode {\r\n browserLang: string,\r\n messageLang: string\r\n}\r\n\r\nconst BotWidget = () => {\r\n\r\n const [isOpen, setIsOpen] = useState(false);\r\n const { t } = useTranslation();\r\n const dispatchReduxToolkit = useAppDispatch();\r\n const activeState = useSelector(selectActiveState);\r\n const messageList = useSelector(selectAssistantMessageListState);\r\n const stepAction = useSelector(selectStepAction);\r\n const featureType = useSelector(selectFeatureType);\r\n const onStartAChatChannel = useSelector(selectOnStartAChatChannel);\r\n const [isLoading, setIsLoading] = useState(false);\r\n const [channelArnString, setChannelArnString] = useState(\"\");\r\n const [messagingService] = useState(MessagingService.getInstance());\r\n const [member, setMember] = useState(null);\r\n const [errorModalMessage, setErrorModalMessage] = useState(\"\");\r\n const [displayErrorModal, setDisplayErrorModal] = useState(false);\r\n const [displayDeleteModal, setDisplayDeleteModal] = useState(false);\r\n const [displayBEOfflineModal, setDisplayBEOfflineModal] = useState(false);\r\n const [onDetectedLanguage, setOnDetectedLanguage] = useState(false);\r\n const [onLoginAwsSuccess, setOnLoginAwsSuccess] = useState(false);\r\n const [displaydetectedLanguageModal, setDisplaydetectedLanguageModal] = useState(false);\r\n const [displaySelectLanguageModal, setDisplaySelectLanguageModal] = useState(false);\r\n const [messageLanguageDetectedModal, setMessageLanguageDetectedModal] = useState(\"\");\r\n const [languageDetectedCode, setLanguageDetectedCode] = useState(null);\r\n const isTranslate = useSelector(selectIsTranslate);\r\n const userChime = useSelector(selectUserChime);\r\n const [messageProp, setMessageProp] = useState();\r\n const [sendStartedMessage, setSendStartedMessage] = useState(false);\r\n const [tabHasFocus, setTabHasFocus] = useState(false);\r\n const channelArn = useSelector(selectChannelArn);\r\n const [memberPresenceList, setMemberPresenceList] = useState([]);\r\n const meetingData = useSelector(selectMeetingState);\r\n AWS.config.region = process.env.REACT_APP_REACT_REGION;\r\n let uuid = v4();\r\n const signalRConnectorInstance = SignalRService.getInstance();\r\n const [sinalRHubConnected, setSinalRHubConnected] = useState(false);\r\n\r\n const handleFocus = () => {\r\n setTabHasFocus(true);\r\n };\r\n\r\n const handleBlur = () => {\r\n setTabHasFocus(false);\r\n };\r\n\r\n const handleClick = () => {\r\n setIsOpen(true)\r\n };\r\n\r\n const triggerBotAction = (code?: string, name?: string, nextStep?: number) => {\r\n let currentTime = getCurrentTime();\r\n // settimeout to delay response message of Bot\r\n setTimeout(() => {\r\n let messageSender = \"\";\r\n switch (nextStep) {\r\n case stepENUM.typeName:\r\n dispatchReduxToolkit(addMessageItem({\r\n sender: senderENUM.assistant,\r\n message: `${t(\"assistant_ask_name_message\")}`,\r\n datetime: currentTime,\r\n }));\r\n messageSender = t(\"assistant_ask_name_message\");\r\n break;\r\n case stepENUM.typeIdNumber:\r\n dispatchReduxToolkit(addMessageItem({\r\n sender: senderENUM.assistant,\r\n message: `${t(\"assistant_ask_code_message\")}`,\r\n datetime: currentTime,\r\n }));\r\n messageSender = t(\"assistant_ask_name_message\");\r\n break;\r\n case stepENUM.typeStart:\r\n const text = t(\"assistant__confirm_message\").replace(\"[code]\", code || \"\").replace(\"[name]\", name || \"\");\r\n dispatchReduxToolkit(addMessageItem({\r\n sender: senderENUM.assistant,\r\n message: text,\r\n datetime: currentTime,\r\n }));\r\n messageSender = text;\r\n break;\r\n case stepENUM.typeEdit:\r\n dispatchReduxToolkit(addMessageItem({\r\n sender: senderENUM.assistant,\r\n message: t(\"assistant_ask_change_message\"),\r\n datetime: currentTime,\r\n }));\r\n messageSender = t(\"assistant_ask_change_message\");\r\n break;\r\n case stepENUM.typeEditName:\r\n dispatchReduxToolkit(addMessageItem({\r\n sender: senderENUM.assistant,\r\n message: t(\"assistant_ask_change_name_message\"),\r\n datetime: currentTime,\r\n }));\r\n messageSender = t(\"assistant_ask_change_name_message\");\r\n break;\r\n case stepENUM.typeEditCode:\r\n dispatchReduxToolkit(addMessageItem({\r\n sender: senderENUM.assistant,\r\n message: t(\"assistant_ask_change_code_message\"),\r\n datetime: currentTime,\r\n }));\r\n messageSender = t(\"assistant_ask_change_code_message\");\r\n break;\r\n case stepENUM.goBackToFirstStep:\r\n dispatchReduxToolkit(addMessageItem({\r\n sender: senderENUM.assistant,\r\n message: t(\"assistant_ask_change_action_message\"),\r\n datetime: currentTime,\r\n }));\r\n messageSender = t(\"assistant_ask_change_action_message\");\r\n break;\r\n default:\r\n break;\r\n }\r\n setMessageProp(messageSender);\r\n }, 1000)\r\n\r\n\r\n };\r\n\r\n const hanldeCloseState = async () => {\r\n setIsOpen(false)\r\n const chimeBearerArn = await createMemberArn(member?.userId)\r\n await deleteChannelMembership(channelArnString, chimeBearerArn, member?.userId)\r\n await dispatchReduxToolkit(SetIsTranslate({\r\n status: false,\r\n langSource: \"auto\",\r\n langTarget: \"auto\",\r\n languagebox: false\r\n }));\r\n dispatchReduxToolkit(setOnStartAChatChannel(false))\r\n dispatchReduxToolkit(ChannelClearState())\r\n dispatchReduxToolkit(clearAssistantState())\r\n setDisplaydetectedLanguageModal(false)\r\n setDisplaySelectLanguageModal(false)\r\n setOnDetectedLanguage(false)\r\n setSendStartedMessage(false)\r\n setMember(null)\r\n };\r\n\r\n const onMinimize = () => {\r\n setIsOpen(false)\r\n };\r\n\r\n const hanldeExpandWindow = () => {\r\n setIsOpen(false)\r\n window.open(\r\n `/assistant`,\r\n 'null',\r\n 'popup,width=1200,height=680,left=300,top=500, menubar=0, toolbar=0, scrollbar=1',\r\n )\r\n };\r\n\r\n const hanldeOpenIframe = () => {\r\n if (featureType?.type === funtionalTypeENUM.chatting) {\r\n if (tabHasFocus) {\r\n dispatchReduxToolkit(setOnStartAChatChannel(true))\r\n }\r\n }\r\n\r\n if (featureType?.type === funtionalTypeENUM.vsc) {\r\n window.open(\r\n `/assistant/publicMeeting/?sessionId=${featureType?.code}&name=${featureType?.name}`,\r\n 'null',\r\n 'popup,width=1200,height=680,left=300,top=500, menubar=0, toolbar=0, scrollbar=1',\r\n )\r\n hanldeCloseState()\r\n }\r\n };\r\n\r\n const hanldeOnSubmitInput = (data: { type: number, data: any }) => {\r\n let actionType = data.type;\r\n let actionData = data.data;\r\n let currentTime = getCurrentTime();\r\n let name = featureType?.name || \"\";\r\n let code = featureType?.code || \"\";\r\n let nextStep = 0;\r\n let messageSender = \"\";\r\n switch (actionType) {\r\n case actionTypeENUM.chooseOption:\r\n if (actionData === funtionalTypeENUM.change) {\r\n nextStep = stepENUM.typeEdit\r\n dispatchReduxToolkit(addMessageItem({\r\n sender: senderENUM.user,\r\n message: t(\"Change_info_label\"),\r\n datetime: currentTime,\r\n }));\r\n messageSender = t(\"Change_info_label\");\r\n //use time out to delay response message of bot\r\n setTimeout(() => {\r\n dispatchReduxToolkit(setStepState(stepENUM.typeEdit));\r\n }, 1000)\r\n }\r\n\r\n if (actionData === funtionalTypeENUM.changeName) {\r\n nextStep = stepENUM.typeEditName\r\n dispatchReduxToolkit(addMessageItem({\r\n sender: senderENUM.user,\r\n message: t(\"Change_name_label\"),\r\n datetime: currentTime,\r\n }));\r\n messageSender = t(\"Change_name_label\");\r\n //use time out to delay response message of bot\r\n setTimeout(() => {\r\n dispatchReduxToolkit(setStepState(stepENUM.typeEditName));\r\n }, 1000)\r\n }\r\n\r\n if (actionData === funtionalTypeENUM.changeCode) {\r\n nextStep = stepENUM.typeEditCode\r\n dispatchReduxToolkit(addMessageItem({\r\n sender: senderENUM.user,\r\n message: t(\"Change_code_label\"),\r\n datetime: currentTime,\r\n }));\r\n messageSender = t(\"Change_code_label\");\r\n //use time out to delay response message of bot\r\n setTimeout(() => {\r\n dispatchReduxToolkit(setStepState(stepENUM.typeEditCode));\r\n }, 1000)\r\n }\r\n\r\n if (actionData === funtionalTypeENUM.changeAction) {\r\n nextStep = stepENUM.goBackToFirstStep\r\n dispatchReduxToolkit(addMessageItem({\r\n sender: senderENUM.user,\r\n message: t(\"Change_action_label\"),\r\n datetime: currentTime,\r\n }));\r\n messageSender = t(\"Change_action_label\");\r\n //use time out to delay response message of bot\r\n setTimeout(() => {\r\n dispatchReduxToolkit(setStepState(stepENUM.goBackToFirstStep));\r\n }, 1000)\r\n }\r\n\r\n if (actionData === funtionalTypeENUM.vsc || actionData === funtionalTypeENUM.chatting) {\r\n let dataMessage = actionData === funtionalTypeENUM.vsc ? t(\"Visual_Connect_Pro_btn\") : t(\"Join_chat_btn\")\r\n dispatchReduxToolkit(addMessageItem({\r\n sender: senderENUM.user,\r\n message: dataMessage,\r\n datetime: currentTime,\r\n }));\r\n messageSender = dataMessage;\r\n if (featureType && (featureType?.name !== \"\" && featureType?.code !== \"\")) {\r\n nextStep = stepENUM.typeStart\r\n //use time out to delay response message of bot\r\n setTimeout(() => {\r\n dispatchReduxToolkit(setStepState(nextStep));\r\n dispatchReduxToolkit(setSelectedFeatureState({\r\n type: actionData === funtionalTypeENUM.vsc ? funtionalTypeENUM.vsc : funtionalTypeENUM.chatting,\r\n name: featureType?.name || \"\",\r\n code: featureType?.code || \"\"\r\n }));\r\n }, 2000)\r\n } else {\r\n nextStep = stepENUM.typeName\r\n //use time out to delay response message of bot\r\n setTimeout(() => {\r\n dispatchReduxToolkit(setStepState(nextStep));\r\n dispatchReduxToolkit(setSelectedFeatureState({\r\n type: actionData === funtionalTypeENUM.vsc ? funtionalTypeENUM.vsc : funtionalTypeENUM.chatting,\r\n name: \"\",\r\n code: \"\"\r\n }));\r\n }, 1000)\r\n }\r\n }\r\n if (actionData === funtionalTypeENUM.start) {\r\n hanldeOpenIframe()\r\n }\r\n break;\r\n case actionTypeENUM.inputText:\r\n dispatchReduxToolkit(addMessageItem({\r\n sender: senderENUM.user,\r\n message: actionData,\r\n datetime: currentTime,\r\n }));\r\n messageSender = actionData;\r\n if (stepAction === stepENUM.typeName) {\r\n name = actionData;\r\n nextStep = stepENUM.typeIdNumber\r\n setTimeout(() => {\r\n dispatchReduxToolkit(setStepState(stepENUM.typeIdNumber));\r\n }, 1000)\r\n dispatchReduxToolkit(setSelectedFeatureState({\r\n type: featureType?.type,\r\n name: actionData,\r\n code: \"\"\r\n }));\r\n }\r\n if (stepAction === stepENUM.typeIdNumber) {\r\n code = actionData\r\n nextStep = stepENUM.typeStart\r\n setTimeout(() => {\r\n dispatchReduxToolkit(setStepState(stepENUM.typeStart));\r\n }, 2000)\r\n dispatchReduxToolkit(setSelectedFeatureState({\r\n type: featureType?.type,\r\n name: featureType?.name || \"\",\r\n code: actionData\r\n }));\r\n }\r\n if (stepAction === stepENUM.typeEditName) {\r\n name = actionData;\r\n nextStep = stepENUM.typeStart\r\n setTimeout(() => {\r\n dispatchReduxToolkit(setStepState(stepENUM.typeStart));\r\n }, 2000)\r\n dispatchReduxToolkit(setSelectedFeatureState({\r\n type: featureType?.type,\r\n name: actionData,\r\n code: featureType?.code || \"\",\r\n }));\r\n }\r\n if (stepAction === stepENUM.typeEditCode) {\r\n code = actionData\r\n nextStep = stepENUM.typeStart\r\n setTimeout(() => {\r\n dispatchReduxToolkit(setStepState(stepENUM.typeStart));\r\n }, 2000)\r\n dispatchReduxToolkit(setSelectedFeatureState({\r\n type: featureType?.type,\r\n name: featureType?.name || \"\",\r\n code: actionData\r\n }));\r\n }\r\n break;\r\n default:\r\n break;\r\n }\r\n setMessageProp(messageSender);\r\n triggerBotAction(code, name, nextStep);\r\n };\r\n\r\n const getCurrentTime = () => {\r\n const userLocale = navigator.language;\r\n const now = new Date();\r\n const timeFormat = new Intl.DateTimeFormat(userLocale, {\r\n hour: 'numeric',\r\n minute: '2-digit',\r\n hour12: true,\r\n });\r\n\r\n return timeFormat.format(now);\r\n };\r\n\r\n\r\n /* Chat Channel has started */\r\n const beforeUnloadHandler = (event: any) => {\r\n event.preventDefault();\r\n event.returnValue = true;\r\n };\r\n\r\n const messagesProcessor = async (message: any) => {\r\n const messageType = message?.headers[\"x-amz-chime-event-type\"];\r\n const record = JSON.parse(message?.payload);\r\n const currentTime = getCurrentTime();\r\n switch (messageType) {\r\n // Channel Messages\r\n case \"CHANNEL_DETAILS\":\r\n //send message joined channel\r\n dispatchReduxToolkit(addMessageItem({\r\n sender: senderENUM.system,\r\n message: t(\"Joined_note\"),\r\n datetime: currentTime,\r\n }));\r\n setSendStartedMessage(true)\r\n break;\r\n case \"CREATE_CHANNEL_MESSAGE\":\r\n case \"REDACT_CHANNEL_MESSAGE\":\r\n case \"UPDATE_CHANNEL_MESSAGE\":\r\n case \"DELETE_CHANNEL_MESSAGE\":\r\n case \"DENIED_CREATE_CHANNEL_MESSAGE\":\r\n case \"FAILED_CREATE_CHANNEL_MESSAGE\":\r\n case \"DENIED_UPDATE_CHANNEL_MESSAGE\":\r\n case \"FAILED_UPDATE_CHANNEL_MESSAGE\":\r\n case \"PENDING_CREATE_CHANNEL_MESSAGE\":\r\n case \"PENDING_UPDATE_CHANNEL_MESSAGE\":\r\n await processChannelMessage(record);\r\n break;\r\n case \"CREATE_CHANNEL\":\r\n case \"UPDATE_CHANNEL\":\r\n break;\r\n case \"DELETE_CHANNEL\":\r\n dispatchReduxToolkit(ChannelClearState());\r\n setErrorModalMessage(t('Terminated_Channel_note'));\r\n setDisplayDeleteModal(true);\r\n fetchChannels();\r\n break;\r\n case \"CREATE_CHANNEL_MEMBERSHIP\":\r\n if (!sendStartedMessage) {\r\n //send message joined channel\r\n dispatchReduxToolkit(addMessageItem({\r\n sender: senderENUM.system,\r\n message: t(\"Joined_note\"),\r\n datetime: currentTime,\r\n }));\r\n setSendStartedMessage(true)\r\n }\r\n dispatchReduxToolkit(SetNewMemberJoinChannel(true));\r\n fetchChannels();\r\n break;\r\n case \"UPDATE_CHANNEL_MEMBERSHIP\":\r\n dispatchReduxToolkit(SetNewMemberJoinChannel(true));\r\n break;\r\n case \"DELETE_CHANNEL_MEMBERSHIP\":\r\n dispatchReduxToolkit(SetNewMemberJoinChannel(true));\r\n if (record?.Member?.Arn.includes(member?.username.toLowerCase())) {\r\n setErrorModalMessage(t('End_Channel_note'));\r\n setDisplayDeleteModal(true);\r\n dispatchReduxToolkit(ChannelClearState());\r\n dispatchReduxToolkit(clearStateAfterEndChannel())\r\n }\r\n fetchChannels();\r\n break;\r\n default:\r\n console.log(`Unexpected message type! ${messageType}`);\r\n }\r\n };\r\n\r\n const excuteStartChannel = async (ticketIdParam: string) => {\r\n setIsLoading(true);\r\n // Create a messaging session\r\n const channelName = ticketIdParam; // Replace with the channel name\r\n const anonymousUserId = member?.userId; // Replace with the anonymous user ID\r\n const response = await listChannels(process.env.REACT_APP_AWS_APP_INSTANCE_ARN, anonymousUserId);\r\n const exitChannel = response.find(\r\n (x: any) =>\r\n x.Name == channelName\r\n );\r\n if (exitChannel) {\r\n const channelArn = exitChannel.ChannelArn;\r\n const memberArn = JSON.parse(exitChannel.Metadata)?.memberArn;\r\n if (channelArn) {\r\n connectChannel(\r\n channelArn,\r\n member ? member.userId : \"\",\r\n memberArn\r\n );\r\n setChannelArnString(channelArn)\r\n setIsLoading(false);\r\n } else {\r\n setIsLoading(false);\r\n setErrorModalMessage(\"Cannot create new Channel\");\r\n setDisplayErrorModal(true);\r\n }\r\n } else {\r\n setIsLoading(false);\r\n setErrorModalMessage(`${t('Session_title')} ${channelName} ${t('Not_start_note')} `);\r\n setDisplayErrorModal(true);\r\n }\r\n\r\n }\r\n\r\n const connectChannel = async (\r\n channelDescribe: string,\r\n userId: string,\r\n memberArn: string\r\n ) => {\r\n const promise = Promise.resolve(channelDescribe);\r\n const channelArnCurrent = await promise.then((m) => m);\r\n const channel = await describeChannel(channelArnCurrent, userId);\r\n const memberShip = await listChannelMemberships(\r\n channelArnCurrent,\r\n userId,\r\n )\r\n const exitMember = memberShip.find(\r\n (x: any) =>\r\n x.Member.Name == member?.username\r\n );\r\n if (channel) {\r\n if (!exitMember) {\r\n const statusAdd = await onAddMember(channel, memberArn, userId);\r\n if (statusAdd) {\r\n dispatchReduxToolkit(channelSetChannel(channel));\r\n if (channelArnCurrent && channelArnCurrent !== '') {\r\n const newMessages = await listChannelMessages(\r\n channelArnCurrent,\r\n userId\r\n )\r\n let listNewChannelMessage = newMessages.Messages ? newMessages.Messages.filter((m: any, i, seif) => {\r\n let checkType = m.Metadata ? JSON.parse(m.Metadata).type : \"\"\r\n if (checkType === 'history') {\r\n return false;\r\n }\r\n return true;\r\n }) : [];\r\n\r\n const message_translate = await Promise.all(\r\n listNewChannelMessage.map(async (message: any) => {\r\n if (\r\n createMemberArn(userId) !== message.Sender.Arn &&\r\n isTranslate.status\r\n ) {\r\n // const sourceLanguageCode = JSON.parse(message.Metadata)?.language || \"\";\r\n const translateMessage = await CommonService.liveTranslateMessage(\r\n message.Content,\r\n isTranslate.langSource,\r\n isTranslate.langTarget,\r\n )\r\n return { ...message, Content: translateMessage }\r\n }\r\n return message\r\n }),\r\n )\r\n await dispatchReduxToolkit(\r\n ChannelSetMessage({\r\n ChannelMessages: message_translate,\r\n NextToken: newMessages.NextToken,\r\n }),\r\n )\r\n\r\n }\r\n fetchChannels();\r\n }\r\n }\r\n } else {\r\n console.log(\"Error, could not retrieve channel information.\");\r\n }\r\n };\r\n\r\n const processChannelMessage = async (message: any) => {\r\n const promise = Promise.resolve(message);\r\n const newMessage = await promise.then((m) => m);\r\n let browserLanguage = window.navigator.language;\r\n let messageDetectLanguage = await CommonService.detectLanguage({ text: newMessage.Content });\r\n if (newMessage.Persistence === Persistence.NON_PERSISTENT && newMessage.Type === MessageType.CONTROL) {\r\n dispatchReduxToolkit(setPresenceOfUserInPublicChannel(newMessage));\r\n } else {\r\n //enable detected language\r\n if ((!browserLanguage.toLocaleLowerCase().includes(messageDetectLanguage)) && (newMessage.Sender.Arn !== createMemberArn(member?.userId))) {\r\n await processChannelMessageDetectLanguage(browserLanguage, messageDetectLanguage);\r\n }\r\n let metaData = JSON.parse(newMessage.Metadata)\r\n let checkHistoryType = metaData.type ? (metaData.type === 'history' ? true : false) : false;\r\n //send noti in browser\r\n if (!tabHasFocus && !checkHistoryType) {\r\n addNotification({\r\n title: newMessage.Sender.Name + \" sent you a message\",\r\n message: newMessage.Content,\r\n theme: \"darkblue\",\r\n duration: 10000,\r\n native: true,\r\n onClick: notifiOnclick,\r\n });\r\n }\r\n setMessageProp(newMessage);\r\n }\r\n };\r\n\r\n const processChannelMessageDetectLanguage = async (browserLanguage: string, messageDetectLanguage: string) => {\r\n if (!onDetectedLanguage) {\r\n let getCountyByBrowserLanguage = await getTextByKey(browserLanguage);\r\n let getCountyByMessageDetectLanguage = await getTextByKey(messageDetectLanguage);\r\n setOnDetectedLanguage(true)\r\n const messageForModal = t(\"Translation_is_available_detail\").replace(\"[tech_language]\", getCountyByBrowserLanguage || \"\").replace(\"[expert_language]\", getCountyByMessageDetectLanguage || \"\");\r\n await setMessageLanguageDetectedModal(messageForModal)\r\n setDisplaydetectedLanguageModal(true)\r\n setLanguageDetectedCode({\r\n browserLang: browserLanguage,\r\n messageLang: messageDetectLanguage\r\n })\r\n }\r\n }\r\n\r\n const getTextByKey = (key: string) => {\r\n let country = countryOptions.find(option => option.key.includes(key));\r\n if (!country) {\r\n country = countryOptions.find(option => key.includes(option.key));\r\n }\r\n return country ? country.text : undefined;\r\n }\r\n\r\n const onHanldeStartLiveTranslation = () => {\r\n dispatchReduxToolkit(SetIsTranslate({\r\n status: true,\r\n langSource: languageDetectedCode?.messageLang,\r\n langTarget: languageDetectedCode?.browserLang,\r\n languagebox: true\r\n }));\r\n setDisplaydetectedLanguageModal(false)\r\n };\r\n const onCancelStartLiveTranslation = () => {\r\n dispatchReduxToolkit(SetIsTranslate({\r\n status: false,\r\n langSource: languageDetectedCode?.messageLang,\r\n langTarget: languageDetectedCode?.browserLang,\r\n languagebox: false\r\n }));\r\n setDisplaydetectedLanguageModal(false)\r\n };\r\n\r\n const notifiOnclick = () => {\r\n window.focus();\r\n };\r\n\r\n const onTrigger = () => {\r\n setDisplayErrorModal(false)\r\n dispatchReduxToolkit(setOnStartAChatChannel(false))\r\n setMember(null)\r\n }\r\n const onCloseModal = () => {\r\n setDisplayBEOfflineModal(false)\r\n }\r\n\r\n const onDeleteChannel = () => {\r\n dispatchReduxToolkit(clearStateAfterEndChannel())\r\n setDisplayDeleteModal(false)\r\n dispatchReduxToolkit(setOnStartAChatChannel(false))\r\n dispatchReduxToolkit(ChannelClearState())\r\n setMember(null)\r\n setIsOpen(false)\r\n dispatchReduxToolkit(SetIsTranslate({\r\n status: false,\r\n langSource: \"auto\",\r\n langTarget: \"auto\",\r\n languagebox: false\r\n }));\r\n setDisplaydetectedLanguageModal(false);\r\n setDisplaySelectLanguageModal(false)\r\n setOnDetectedLanguage(false)\r\n setSendStartedMessage(false)\r\n }\r\n\r\n const onAddMember = async (channel: any, memberArn: string, userId: string) => {\r\n const promise = Promise.resolve(channel);\r\n const channelArn = await promise.then((m) => m.ChannelArn);\r\n\r\n try {\r\n // this function have swap position of memberArn and annonymous arn\r\n const membership = await createChannelMembership(\r\n channelArn,\r\n `${process.env.REACT_APP_AWS_APP_INSTANCE_ARN}/user/${userId}`,\r\n memberArn,\r\n );\r\n return membership;\r\n } catch {\r\n console.log(\"Error occurred. Member not added to channel.\");\r\n }\r\n };\r\n\r\n const fetchChannels = async () => {\r\n const userChannelMemberships = await listChannelMembershipsForAppInstanceUser(member?.userId);\r\n userChannelMemberships\r\n .map((channelMembership: any) => channelMembership.ChannelSummary)\r\n .sort((current: any, next: any) => {\r\n try {\r\n const newDate = new Date();\r\n const nextLast = next.LastMessageTimestamp\r\n ? next.LastMessageTimestamp.getTime()\r\n : newDate.getTime();\r\n const currentLast = current.LastMessageTimestamp\r\n ? current.LastMessageTimestamp.getTime()\r\n : newDate.getTime();\r\n\r\n return nextLast - currentLast;\r\n } catch {\r\n return null;\r\n }\r\n });\r\n\r\n };\r\n\r\n const handleOnOpenTranslateModal = (status: boolean) => {\r\n if (!status) {\r\n dispatchReduxToolkit(SetIsTranslate({\r\n ...isTranslate,\r\n status: false,\r\n languagebox: false\r\n }))\r\n }\r\n setDisplaySelectLanguageModal(status)\r\n };\r\n\r\n\r\n const registerGroup = (channelArn: string) => {\r\n signalRConnectorInstance.joinGroup(channelArn).then(() => {\r\n console.log(`Joined into group ${channelArn}`);\r\n }).catch((err: any) =>\r\n console.log(\r\n `Join to group ${channelArn} failed. Err: ${err}`\r\n )\r\n );\r\n };\r\n\r\n const handleReceiveMessage = (messages: any) => {\r\n if (messages) {\r\n let newArrayStatus = messages.map((item: memberSingal) => {\r\n let newItem: MemberPresence = {\r\n userArn: item.memberARN,\r\n status: item.status,\r\n role: item.role\r\n }\r\n return newItem\r\n })\r\n setMemberPresenceList(newArrayStatus)\r\n } else {\r\n setMemberPresenceList([])\r\n }\r\n }\r\n\r\n //connect to SignalR\r\n useEffect(() => {\r\n if (channelArn && !sinalRHubConnected) {\r\n signalRConnectorInstance.onConnectionEstablished(() => {\r\n registerGroup(channelArn);\r\n });\r\n \r\n signalRConnectorInstance.onRegisterMessageHandler(\r\n (message: any) => {\r\n handleReceiveMessage(message);\r\n }\r\n );\r\n signalRConnectorInstance.setupEmitter();\r\n setSinalRHubConnected(true);\r\n }\r\n }, [channelArn, channelArnString])\r\n\r\n //send ping message to channel\r\n useEffect(() => {\r\n let isExitedMetting = meetingData?.Meeting.meetingId ? true : false;\r\n let messageObj = {\r\n key: channelArn,\r\n value: [\r\n {\r\n memberARN: member?.userId,\r\n status: \"online\",\r\n datetime: new Date().toISOString(),\r\n role: \"technician\"\r\n }\r\n ]\r\n }\r\n const sendMessageToGroup = (message: any) => {\r\n signalRConnectorInstance.sendMessageToGroup(\"SendSinalToGroup\", channelArn, JSON.stringify(message));\r\n };\r\n sendMessageToGroup(messageObj);\r\n const intervalId = setInterval(() => {\r\n // send online to active channel\r\n messageObj.value = [{\r\n memberARN: member?.userId,\r\n status: \"online\",\r\n datetime: new Date().toISOString(),\r\n role: \"technician\"\r\n }]\r\n sendMessageToGroup(messageObj);\r\n }, TimeOutOnlineStatus);\r\n\r\n //clear inteval\r\n if ((!tabHasFocus && !isExitedMetting) || !channelArn || !member) {\r\n clearInterval(intervalId);\r\n }\r\n // send onhold signal\r\n if (!tabHasFocus && channelArn && member) {\r\n messageObj.value = [{\r\n memberARN: member?.userId,\r\n status: \"onhold\",\r\n datetime: new Date().toISOString(),\r\n role: \"technician\"\r\n }]\r\n sendMessageToGroup(messageObj);\r\n clearInterval(intervalId);\r\n } else {\r\n sendMessageToGroup(messageObj);\r\n }\r\n return () => clearInterval(intervalId);\r\n }, [tabHasFocus, channelArn, member, meetingData]);\r\n\r\n\r\n //get channel arn\r\n useEffect(() => {\r\n if (channelArnString !== \"\") {\r\n window.addEventListener(\"beforeunload\", beforeUnloadHandler);\r\n } else {\r\n window.removeEventListener(\"beforeunload\", beforeUnloadHandler);\r\n }\r\n }, [channelArnString]);\r\n\r\n // register user to chimeSDK\r\n useEffect(() => {\r\n if (featureType && !member && onStartAChatChannel) {\r\n setIsLoading(true);\r\n let memberTemp = {\r\n username: \"anonymous\",\r\n userId: \"adfs.anonymous\",\r\n };\r\n let newMemberChime = {\r\n ciamId: memberTemp.userId,\r\n name: memberTemp.username,\r\n mobile: \"\",\r\n email: \"\"\r\n }\r\n if (featureType.name && featureType.name !== \"\") {\r\n let nameTrim = featureType.name.replace(/\\s/g, '');\r\n memberTemp.username = nameTrim;\r\n memberTemp.userId = userChime?.userId || `adfs.anonymous_${nameTrim.toLowerCase()}_` + `${uuid}`\r\n newMemberChime.ciamId = memberTemp.userId;\r\n newMemberChime.name = memberTemp.username;\r\n\r\n } else {\r\n memberTemp.userId = `adfs.anonymous_` + `${uuid}`;\r\n newMemberChime.ciamId = memberTemp.userId;\r\n newMemberChime.name = memberTemp.username;\r\n }\r\n CommonService.getChimeUserForPublic(newMemberChime);\r\n dispatchReduxToolkit(setUserChime(memberTemp));\r\n setMember(memberTemp);\r\n }\r\n }, [featureType, onStartAChatChannel]);\r\n\r\n //Authen to AWS SDK\r\n useEffect(() => {\r\n if (member) {\r\n AWS.config.region = process.env.REACT_APP_REACT_REGION;\r\n const setAwsKeysAndConnect = async () => {\r\n const awsKeys = await CommonService.getChimeSecretPublic();\r\n if (awsKeys) {\r\n const awsKeysDecrypt = await RSADecrypt.RSADecrypt(awsKeys);\r\n if (awsKeysDecrypt) {\r\n let awsKeysDecryptData = JSON.parse(awsKeysDecrypt!)\r\n AWS.config.credentials = {\r\n accessKeyId: awsKeysDecryptData.AccessKey,\r\n secretAccessKey: awsKeysDecryptData.SecretKey,\r\n };\r\n console.log(\"Get AWS keys Success\");\r\n }\r\n if (featureType?.code && featureType.code !== \"\") {\r\n excuteStartChannel(featureType.code);\r\n }\r\n } else {\r\n console.log(\"Cannot get AWS keys\");\r\n }\r\n await messagingService.connect(member);\r\n setOnLoginAwsSuccess(true)\r\n }\r\n setAwsKeysAndConnect();\r\n return () => {\r\n messagingService.close();\r\n };\r\n }\r\n }, [member]);\r\n\r\n //subscribeToMessageUpdate\r\n useEffect(() => {\r\n if (member || !onDetectedLanguage || channelArn) {\r\n messagingService.subscribeToMessageUpdate(messagesProcessor);\r\n }\r\n\r\n return () => {\r\n messagingService.unsubscribeFromMessageUpdate(messagesProcessor);\r\n };\r\n }, [messagingService, member, onDetectedLanguage, channelArn]);\r\n\r\n //send history messages\r\n useEffect(() => {\r\n const sendChannelMessageFunc = async () => {\r\n //send history messages\r\n let options = {\r\n botHistory: messageList,\r\n type: `history`\r\n }\r\n let memberObject = {\r\n userId: member?.userId\r\n }\r\n await sendChannelMessage(\r\n channelArn,\r\n \"History\",\r\n Persistence.PERSISTENT,\r\n MessageType.STANDARD,\r\n memberObject,\r\n JSON.stringify(options),\r\n )\r\n setSendStartedMessage(false)\r\n }\r\n\r\n if (sendStartedMessage && channelArn && member) {\r\n sendChannelMessageFunc()\r\n }\r\n }, [sendStartedMessage, channelArn, member])\r\n\r\n //set to false when user reload page\r\n useEffect(() => {\r\n setOnLoginAwsSuccess(false)\r\n }, []);\r\n\r\n //detect focus or blur\r\n useEffect(() => {\r\n window.addEventListener(\"focus\", handleFocus);\r\n window.addEventListener(\"blur\", handleBlur);\r\n\r\n return () => {\r\n window.removeEventListener(\"focus\", handleFocus);\r\n window.removeEventListener(\"blur\", handleBlur);\r\n };\r\n }, []);\r\n\r\n //set first assistant message\r\n useEffect(() => {\r\n if (isOpen && !activeState && messageList.length === 0) {\r\n let currentTime = getCurrentTime();\r\n dispatchReduxToolkit(addMessageItem({\r\n sender: senderENUM.assistant,\r\n message: `${t(\"Assistant_first_message\")}`,\r\n datetime: currentTime,\r\n }));\r\n dispatchReduxToolkit(setActiveState(true));\r\n }\r\n }, [isOpen, activeState])\r\n return (\r\n
\r\n
\r\n \r\n
\r\n hanldeCloseState()}\r\n onExpandWindow={() => hanldeExpandWindow()}\r\n title={t(\"Assistant_Label_Bot\")}\r\n onUserInputSubmit={hanldeOnSubmitInput}\r\n message={messageProp}\r\n onMinimize={onMinimize}\r\n onOpenTranslateModal={() => { handleOnOpenTranslateModal(true) }}\r\n onCloseTranslateModal={() => { handleOnOpenTranslateModal(false) }}\r\n onLoginAwsSuccess={onLoginAwsSuccess}\r\n memberPresenceList={memberPresenceList}\r\n />\r\n {\r\n displayErrorModal && ()\r\n }\r\n {\r\n displayDeleteModal && ()\r\n }\r\n {\r\n displaydetectedLanguageModal && ()\r\n }\r\n {\r\n displaySelectLanguageModal && ( setDisplaySelectLanguageModal(false)} enableByBotWidget={displaySelectLanguageModal} acceptButtonText={t('Continue_panel')} />)\r\n }\r\n {\r\n displayBEOfflineModal && ()\r\n }\r\n {isLoading && (\r\n \r\n \r\n \r\n )}\r\n
\r\n );\r\n};\r\n\r\nexport default BotWidget;","import { Fragment, useEffect, useState } from \"react\";\r\nimport React from \"react\";\r\nimport Style from \"./LandingPage.module.css\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport Footer from \"./Footer/Footer\";\r\nimport { ProductsCardCom } from \"../../../common-components/ProductsCard/ProductsCardCom\";\r\nimport { AppConsts } from \"../../../helpers/AppConstants\";\r\nimport BotWidgetLauncher from \"./botWidgetLauncher/BotWidget\";\r\nimport CustomLoader from \"../../../common-components/RDComponents/CustomLoader\";\r\n\r\nconst LandingPage = () => {\r\n const [isLoading, setIsLoading] = useState(false);\r\n const { t } = useTranslation();\r\n const listAppItemData = AppConsts.listAppItem\r\n\r\n //Change Browser Tab Info\r\n useEffect(() => {\r\n const link = document.querySelector(\"link[rel~='icon']\") as HTMLLinkElement | null;\r\n if (link !== null) {\r\n link.href = \"/logo_wsa.png\"; // Replace 'newfavicon.ico' with your desired favicon\r\n } else {\r\n const newLink = document.createElement(\"link\");\r\n newLink.rel = \"icon\";\r\n newLink.href = \"/logo_wsa.png\"; // Replace 'newfavicon.ico' with your desired favicon\r\n document.head.appendChild(newLink);\r\n }\r\n window.document.title = \"Mobility Aftermarket Services\";\r\n }, []);\r\n\r\n return (\r\n <>\r\n \r\n
\r\n
\r\n

{t(\"WSA_label\")}​

\r\n
\r\n
\r\n

{t(\"WSA_Applications_label_full\")}

\r\n
\r\n
\r\n {listAppItemData.map((item, index) => {\r\n return (\r\n \r\n );\r\n })}\r\n
\r\n
\r\n\r\n \r\n {/*
\r\n
\r\n
*/}\r\n \r\n\r\n\r\n {isLoading && (\r\n \r\n \r\n \r\n )}\r\n\r\n \r\n );\r\n};\r\n\r\nexport default LandingPage;\r\n","import React, { createContext, useContext, useEffect, useMemo } from \"react\";\r\n\r\ninterface WebChatComponentContextType {}\r\n\r\nconst WebChatComponentContext = createContext<\r\n WebChatComponentContextType | undefined\r\n>(undefined);\r\ninterface WebChatComponentContextProviderProps {\r\n children: React.ReactNode;\r\n}\r\n\r\n//TODO: Need to fix interval stopped in idle issue\r\nexport const WebChatComponentContextProvider: React.FC<\r\n WebChatComponentContextProviderProps\r\n> = ({ children }) => {\r\n //TODO: Refactor code for web component reference\r\n useEffect(() => {\r\n // Adding CSS file dynamically\r\n const cssPath = process.env.REACT_APP_CHAT_WEB_COMPONENT_STYLE_URL ?? \"\";\r\n const isCssExisting = !!document.querySelector(`link[href^=\"${cssPath}\"]`);\r\n const cssLink = document.createElement(\"link\");\r\n if (!isCssExisting) {\r\n cssLink.href = `${\r\n process.env.REACT_APP_CHAT_WEB_COMPONENT_STYLE_URL ?? \"\"\r\n }?v=${Math.random()}`;\r\n cssLink.rel = \"stylesheet\";\r\n document.head.prepend(cssLink);\r\n }\r\n\r\n // Adding JS file dynamically\r\n const jsScriptPath =\r\n process.env.REACT_APP_CHAT_WEB_COMPONENT_JAVASCRIPT_URL ?? \"\";\r\n const isJsScriptExisting = !!document.querySelector(\r\n `script[src^=\"${jsScriptPath}\"]`\r\n );\r\n const jsScript = document.createElement(\"script\");\r\n if (!isJsScriptExisting) {\r\n jsScript.src = `${\r\n process.env.REACT_APP_CHAT_WEB_COMPONENT_JAVASCRIPT_URL ?? \"\"\r\n }?v=${Math.random()}`;\r\n jsScript.async = true;\r\n document.body.prepend(jsScript);\r\n }\r\n\r\n return () => {\r\n // Cleanup: remove the dynamically added files\r\n if (!isCssExisting) {\r\n document.head.removeChild(cssLink);\r\n }\r\n\r\n if (!isJsScriptExisting) {\r\n document.body.removeChild(jsScript);\r\n }\r\n };\r\n }, []);\r\n const contextValue = useMemo(() => ({}), []);\r\n\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n};\r\n\r\nexport const useWebChatComponentContext = () => {\r\n const context = useContext(WebChatComponentContext);\r\n if (!context) {\r\n throw new Error(\r\n \"use WebChatComponentContext must be used within a WebChatComponentContextProvider\"\r\n );\r\n }\r\n return context;\r\n};\r\n","import React, { useEffect, useState } from \"react\";\r\nimport './Chat.css'\r\nimport { useTranslation } from \"react-i18next\";\r\nimport RDAlert from \"../../../../common-components/RDComponents/RDAlert\";\r\nimport CustomLoader from \"../../../../common-components/RDComponents/CustomLoader\";\r\ndeclare global {\r\n namespace JSX {\r\n interface ExtendedButton\r\n extends React.DetailedHTMLProps<\r\n React.ButtonHTMLAttributes,\r\n HTMLButtonElement\r\n > {\r\n sessionid?: string;\r\n }\r\n interface IntrinsicElements {\r\n \"r-chat-channel-anonymous\": ExtendedButton;\r\n }\r\n }\r\n}\r\n\r\ninterface ChatProps {\r\n sessionId?: string,\r\n hanldeOnActiveChannel: Function\r\n}\r\n\r\nexport const Chat: React.FC = ({ sessionId, hanldeOnActiveChannel }) => {\r\n const { t } = useTranslation();\r\n const [isChatLoaded, setIsChatLoaded] = useState(false);\r\n const [status, setStatus] = useState(\"\");\r\n\r\n const closeTab = () => {\r\n setStatus(\"\")\r\n };\r\n\r\n useEffect(() => {\r\n\r\n const handleChatLoadedError = (e: any) => {\r\n console.log('Chat history loaded for ticket: ', e.detail);\r\n setStatus(\r\n e.detail.messages || \"\"\r\n )\r\n setIsChatLoaded(true);\r\n };\r\n\r\n const handleChatLoaded = (e: any) => {\r\n console.log('Chat loaded success: ', e.detail);\r\n setIsChatLoaded(e.detail);\r\n hanldeOnActiveChannel();\r\n };\r\n\r\n window.addEventListener('chatLoadedError', handleChatLoadedError, false);\r\n window.addEventListener('chatLoaded', handleChatLoaded, false);\r\n\r\n return () => {\r\n window.removeEventListener('chatLoadedError', handleChatLoadedError, false);\r\n window.removeEventListener('chatLoaded', handleChatLoaded, false);\r\n };\r\n }, []);\r\n\r\n return sessionId ? (\r\n
\r\n {!isChatLoaded && (\r\n \r\n )}\r\n {\r\n status && ()\r\n }\r\n \r\n \r\n
\r\n \r\n ) : (\r\n <>\r\n );\r\n};\r\n","import React, { useState } from \"react\";\r\nimport \"./PrivateChatAnonymous.css\";\r\nimport { WebChatComponentContextProvider } from \"../../../context/WebChatComponentContext\";\r\nimport { Chat } from \"./ChatComponent/Chat\";\r\nimport { useTranslation } from \"react-i18next\";\r\n\r\nconst PrivateChatAnonymous = () => {\r\n const urlParams = new URLSearchParams(window.location.search);\r\n const sessionId = window.location.search !== \"\" ? urlParams.get(\"sessionId\") : \"\";\r\n const { t } = useTranslation();\r\n const [isActiveChannel, setIsActiveChannel] = useState(false);\r\n\r\n const onActiveChannel = () => {\r\n setIsActiveChannel(true)\r\n }\r\n\r\n return (\r\n
\r\n \r\n {/*
\r\n

{t(\"Session_title\")}: {sessionId}

\r\n
*/}\r\n \r\n \r\n \r\n
\r\n \r\n );\r\n};\r\n\r\nexport default PrivateChatAnonymous;\r\n\r\n","import React, { useEffect } from 'react';\r\n\r\n\r\nconst DeepLinkForQR = () => {\r\n\r\n function getMobileOperatingSystem() {\r\n var userAgent = navigator.userAgent || navigator.vendor;\r\n if (userAgent.match(/iPad/i) || userAgent.match(/iPhone/i) || userAgent.match(/iPod/i)) {\r\n return 'iOS';\r\n }\r\n else if (userAgent.match(/Android/i)) {\r\n return 'Android';\r\n }\r\n else if (userAgent.match(/Windows/i)) {\r\n return 'Windows';\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n let appURL = \"\";\r\n switch (getMobileOperatingSystem()) {\r\n case 'Android':\r\n console.log(\"vô androi\");\r\n \r\n appURL = process.env.REACT_APP_MOBILE_APP_CHPLAY_URL || \"\";\r\n break;\r\n case 'iOS':\r\n console.log(\"vô ios\");\r\n appURL = process.env.REACT_APP_MOBILE_APP_APPSTORE_URL || \"\";\r\n break;\r\n case 'Windows':\r\n appURL = process.env.REACT_APP_DEFAULT_CLIENTROOT || \"\";\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n\r\n setTimeout(() => {\r\n window.location.href = appURL;\r\n }, 1000);\r\n }, [])\r\n\r\n\r\n return (\r\n <>\r\n );\r\n};\r\nexport default DeepLinkForQR;\r\n","import './semantic/dist/semantic.min.css';\r\nimport './App.css';\r\nimport * as React from \"react\";\r\nimport { BrowserRouter as Router, Route, Switch } from 'react-router-dom';\r\nimport { ThemeProvider } from 'styled-components';\r\nimport { lightTheme } from 'amazon-chime-sdk-component-library-react';\r\nimport routes from './routes';\r\nimport Header from './components/layout/Header';\r\nimport SignInCallback from './scenes/SignInCallback';\r\nimport DashBoard from \"./components/views/DashBoard/DashBoard\";\r\nimport SignOutCallback from \"./scenes/SignOutCallback\";\r\nimport SessionTimeout from './scenes/SessionTimeout';\r\nimport { Grid } from 'semantic-ui-react';\r\nimport WindowMeeting from './components/views/WindowMeeting/WindowMeeting';\r\nimport HeaderLandingPage from './components/views/LandingPage/Header/HeaderLandingPage';\r\nimport Info from './components/views/LandingPage/Footer/Info/Info';\r\nimport TermAndCondition from './components/views/LandingPage/Footer/TermAndCondition/TermAndCondition';\r\nimport LandingPageRedirect from './components/views/LandingPage/LandingPageRedirect/LandingPageRedirect';\r\nimport PublicDashBoard from './components/views/PublicDashBoard/PublicDashBoard';\r\nimport PublicWindowMeeting from './components/views/WindowMeeting/PublicWindowMeeting/PublicWindowMeeting';\r\nimport AssistantDashBoard from './components/views/AssistantDashBoard/AssistantDashBoard';\r\nimport LandingPage from './components/views/LandingPage/LandingPage';\r\nimport PrivateChatAnonymous from './components/views/PrivateChatAnonymous/PrivateChatAnonymous';\r\nimport HeaderBoschStyle from './components/views/LandingPage/Header/HeaderBoschStyle';\r\nimport DeepLinkForQR from './components/views/LandingPageForQr/DeepLinkForQR';\r\n\r\n\r\nexport default class App extends React.Component<{}> {\r\n render() {\r\n return (\r\n \r\n \r\n
\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n

Private Channel Solution

\r\n
\r\n \r\n
This account doesn't have permission to start channel
\r\n
\r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n {/* */}\r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n {/* \r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
*/}\r\n \r\n
\r\n
\r\n
\r\n );\r\n }\r\n}\r\n","function _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport React, { PureComponent } from 'react'; // eslint-disable-line import/no-unresolved\n\nexport var PersistGate =\n/*#__PURE__*/\nfunction (_PureComponent) {\n _inherits(PersistGate, _PureComponent);\n\n function PersistGate() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, PersistGate);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(PersistGate)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_this), \"state\", {\n bootstrapped: false\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_unsubscribe\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"handlePersistorState\", function () {\n var persistor = _this.props.persistor;\n\n var _persistor$getState = persistor.getState(),\n bootstrapped = _persistor$getState.bootstrapped;\n\n if (bootstrapped) {\n if (_this.props.onBeforeLift) {\n Promise.resolve(_this.props.onBeforeLift()).finally(function () {\n return _this.setState({\n bootstrapped: true\n });\n });\n } else {\n _this.setState({\n bootstrapped: true\n });\n }\n\n _this._unsubscribe && _this._unsubscribe();\n }\n });\n\n return _this;\n }\n\n _createClass(PersistGate, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this._unsubscribe = this.props.persistor.subscribe(this.handlePersistorState);\n this.handlePersistorState();\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this._unsubscribe && this._unsubscribe();\n }\n }, {\n key: \"render\",\n value: function render() {\n if (process.env.NODE_ENV !== 'production') {\n if (typeof this.props.children === 'function' && this.props.loading) console.error('redux-persist: PersistGate expects either a function child or loading prop, but not both. The loading prop will be ignored.');\n }\n\n if (typeof this.props.children === 'function') {\n return this.props.children(this.state.bootstrapped);\n }\n\n return this.state.bootstrapped ? this.props.children : this.props.loading;\n }\n }]);\n\n return PersistGate;\n}(PureComponent);\n\n_defineProperty(PersistGate, \"defaultProps\", {\n children: null,\n loading: null\n});","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport {\n AccountFilter,\n AccountInfo,\n Logger,\n PerformanceCallbackFunction,\n} from \"@azure/msal-common/browser\";\nimport { RedirectRequest } from \"../request/RedirectRequest.js\";\nimport { PopupRequest } from \"../request/PopupRequest.js\";\nimport { SilentRequest } from \"../request/SilentRequest.js\";\nimport { SsoSilentRequest } from \"../request/SsoSilentRequest.js\";\nimport { EndSessionRequest } from \"../request/EndSessionRequest.js\";\nimport {\n BrowserConfigurationAuthErrorCodes,\n createBrowserConfigurationAuthError,\n} from \"../error/BrowserConfigurationAuthError.js\";\nimport { WrapperSKU } from \"../utils/BrowserConstants.js\";\nimport { INavigationClient } from \"../navigation/INavigationClient.js\";\nimport { EndSessionPopupRequest } from \"../request/EndSessionPopupRequest.js\";\nimport { ITokenCache } from \"../cache/ITokenCache.js\";\nimport { AuthorizationCodeRequest } from \"../request/AuthorizationCodeRequest.js\";\nimport { BrowserConfiguration } from \"../config/Configuration.js\";\nimport { AuthenticationResult } from \"../response/AuthenticationResult.js\";\nimport { EventCallbackFunction } from \"../event/EventMessage.js\";\nimport { ClearCacheRequest } from \"../request/ClearCacheRequest.js\";\nimport { InitializeApplicationRequest } from \"../request/InitializeApplicationRequest.js\";\nimport { EventType } from \"../event/EventType.js\";\n\nexport interface IPublicClientApplication {\n // TODO: Make request mandatory in the next major version?\n initialize(request?: InitializeApplicationRequest): Promise;\n acquireTokenPopup(request: PopupRequest): Promise;\n acquireTokenRedirect(request: RedirectRequest): Promise;\n acquireTokenSilent(\n silentRequest: SilentRequest\n ): Promise;\n acquireTokenByCode(\n request: AuthorizationCodeRequest\n ): Promise;\n addEventCallback(\n callback: EventCallbackFunction,\n eventTypes?: Array\n ): string | null;\n removeEventCallback(callbackId: string): void;\n addPerformanceCallback(callback: PerformanceCallbackFunction): string;\n removePerformanceCallback(callbackId: string): boolean;\n enableAccountStorageEvents(): void;\n disableAccountStorageEvents(): void;\n getAccount(accountFilter: AccountFilter): AccountInfo | null;\n getAccountByHomeId(homeAccountId: string): AccountInfo | null;\n getAccountByLocalId(localId: string): AccountInfo | null;\n getAccountByUsername(userName: string): AccountInfo | null;\n getAllAccounts(): AccountInfo[];\n handleRedirectPromise(hash?: string): Promise;\n loginPopup(request?: PopupRequest): Promise;\n loginRedirect(request?: RedirectRequest): Promise;\n logout(logoutRequest?: EndSessionRequest): Promise;\n logoutRedirect(logoutRequest?: EndSessionRequest): Promise;\n logoutPopup(logoutRequest?: EndSessionPopupRequest): Promise;\n ssoSilent(request: SsoSilentRequest): Promise;\n getTokenCache(): ITokenCache;\n getLogger(): Logger;\n setLogger(logger: Logger): void;\n setActiveAccount(account: AccountInfo | null): void;\n getActiveAccount(): AccountInfo | null;\n initializeWrapperLibrary(sku: WrapperSKU, version: string): void;\n setNavigationClient(navigationClient: INavigationClient): void;\n /** @internal */\n getConfiguration(): BrowserConfiguration;\n hydrateCache(\n result: AuthenticationResult,\n request:\n | SilentRequest\n | SsoSilentRequest\n | RedirectRequest\n | PopupRequest\n ): Promise;\n clearCache(logoutRequest?: ClearCacheRequest): Promise;\n}\n\nexport const stubbedPublicClientApplication: IPublicClientApplication = {\n initialize: () => {\n return Promise.reject(\n createBrowserConfigurationAuthError(\n BrowserConfigurationAuthErrorCodes.stubbedPublicClientApplicationCalled\n )\n );\n },\n acquireTokenPopup: () => {\n return Promise.reject(\n createBrowserConfigurationAuthError(\n BrowserConfigurationAuthErrorCodes.stubbedPublicClientApplicationCalled\n )\n );\n },\n acquireTokenRedirect: () => {\n return Promise.reject(\n createBrowserConfigurationAuthError(\n BrowserConfigurationAuthErrorCodes.stubbedPublicClientApplicationCalled\n )\n );\n },\n acquireTokenSilent: () => {\n return Promise.reject(\n createBrowserConfigurationAuthError(\n BrowserConfigurationAuthErrorCodes.stubbedPublicClientApplicationCalled\n )\n );\n },\n acquireTokenByCode: () => {\n return Promise.reject(\n createBrowserConfigurationAuthError(\n BrowserConfigurationAuthErrorCodes.stubbedPublicClientApplicationCalled\n )\n );\n },\n getAllAccounts: () => {\n return [];\n },\n getAccount: () => {\n return null;\n },\n getAccountByHomeId: () => {\n return null;\n },\n getAccountByUsername: () => {\n return null;\n },\n getAccountByLocalId: () => {\n return null;\n },\n handleRedirectPromise: () => {\n return Promise.reject(\n createBrowserConfigurationAuthError(\n BrowserConfigurationAuthErrorCodes.stubbedPublicClientApplicationCalled\n )\n );\n },\n loginPopup: () => {\n return Promise.reject(\n createBrowserConfigurationAuthError(\n BrowserConfigurationAuthErrorCodes.stubbedPublicClientApplicationCalled\n )\n );\n },\n loginRedirect: () => {\n return Promise.reject(\n createBrowserConfigurationAuthError(\n BrowserConfigurationAuthErrorCodes.stubbedPublicClientApplicationCalled\n )\n );\n },\n logout: () => {\n return Promise.reject(\n createBrowserConfigurationAuthError(\n BrowserConfigurationAuthErrorCodes.stubbedPublicClientApplicationCalled\n )\n );\n },\n logoutRedirect: () => {\n return Promise.reject(\n createBrowserConfigurationAuthError(\n BrowserConfigurationAuthErrorCodes.stubbedPublicClientApplicationCalled\n )\n );\n },\n logoutPopup: () => {\n return Promise.reject(\n createBrowserConfigurationAuthError(\n BrowserConfigurationAuthErrorCodes.stubbedPublicClientApplicationCalled\n )\n );\n },\n ssoSilent: () => {\n return Promise.reject(\n createBrowserConfigurationAuthError(\n BrowserConfigurationAuthErrorCodes.stubbedPublicClientApplicationCalled\n )\n );\n },\n addEventCallback: () => {\n return null;\n },\n removeEventCallback: () => {\n return;\n },\n addPerformanceCallback: () => {\n return \"\";\n },\n removePerformanceCallback: () => {\n return false;\n },\n enableAccountStorageEvents: () => {\n return;\n },\n disableAccountStorageEvents: () => {\n return;\n },\n getTokenCache: () => {\n throw createBrowserConfigurationAuthError(\n BrowserConfigurationAuthErrorCodes.stubbedPublicClientApplicationCalled\n );\n },\n getLogger: () => {\n throw createBrowserConfigurationAuthError(\n BrowserConfigurationAuthErrorCodes.stubbedPublicClientApplicationCalled\n );\n },\n setLogger: () => {\n return;\n },\n setActiveAccount: () => {\n return;\n },\n getActiveAccount: () => {\n return null;\n },\n initializeWrapperLibrary: () => {\n return;\n },\n setNavigationClient: () => {\n return;\n },\n getConfiguration: () => {\n throw createBrowserConfigurationAuthError(\n BrowserConfigurationAuthErrorCodes.stubbedPublicClientApplicationCalled\n );\n },\n hydrateCache: () => {\n return Promise.reject(\n createBrowserConfigurationAuthError(\n BrowserConfigurationAuthErrorCodes.stubbedPublicClientApplicationCalled\n )\n );\n },\n clearCache: () => {\n return Promise.reject(\n createBrowserConfigurationAuthError(\n BrowserConfigurationAuthErrorCodes.stubbedPublicClientApplicationCalled\n )\n );\n },\n};\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport * as React from \"react\";\nimport {\n IPublicClientApplication,\n stubbedPublicClientApplication,\n Logger,\n InteractionStatus,\n AccountInfo,\n} from \"@azure/msal-browser\";\n\nexport interface IMsalContext {\n instance: IPublicClientApplication;\n inProgress: InteractionStatus;\n accounts: AccountInfo[];\n logger: Logger;\n}\n\n/*\n * Stubbed context implementation\n * Only used when there is no provider, which is an unsupported scenario\n */\nconst defaultMsalContext: IMsalContext = {\n instance: stubbedPublicClientApplication,\n inProgress: InteractionStatus.None,\n accounts: [],\n logger: new Logger({}),\n};\n\nexport const MsalContext =\n React.createContext(defaultMsalContext);\nexport const MsalConsumer = MsalContext.Consumer;\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { AuthError, AccountInfo } from \"@azure/msal-common/browser\";\nimport { EventType } from \"./EventType.js\";\nimport {\n InteractionStatus,\n InteractionType,\n} from \"../utils/BrowserConstants.js\";\nimport { PopupRequest } from \"../request/PopupRequest.js\";\nimport { RedirectRequest } from \"../request/RedirectRequest.js\";\nimport { SilentRequest } from \"../request/SilentRequest.js\";\nimport { SsoSilentRequest } from \"../request/SsoSilentRequest.js\";\nimport { EndSessionRequest } from \"../request/EndSessionRequest.js\";\nimport { AuthenticationResult } from \"../response/AuthenticationResult.js\";\n\nexport type EventMessage = {\n eventType: EventType;\n interactionType: InteractionType | null;\n payload: EventPayload;\n error: EventError;\n timestamp: number;\n};\n\nexport type PopupEvent = {\n popupWindow: Window;\n};\n\nexport type EventPayload =\n | AccountInfo\n | PopupRequest\n | RedirectRequest\n | SilentRequest\n | SsoSilentRequest\n | EndSessionRequest\n | AuthenticationResult\n | PopupEvent\n | null;\n\nexport type EventError = AuthError | Error | null;\n\nexport type EventCallbackFunction = (message: EventMessage) => void;\n\nexport class EventMessageUtils {\n /**\n * Gets interaction status from event message\n * @param message\n * @param currentStatus\n */\n static getInteractionStatusFromEvent(\n message: EventMessage,\n currentStatus?: InteractionStatus\n ): InteractionStatus | null {\n switch (message.eventType) {\n case EventType.LOGIN_START:\n return InteractionStatus.Login;\n case EventType.SSO_SILENT_START:\n return InteractionStatus.SsoSilent;\n case EventType.ACQUIRE_TOKEN_START:\n if (\n message.interactionType === InteractionType.Redirect ||\n message.interactionType === InteractionType.Popup\n ) {\n return InteractionStatus.AcquireToken;\n }\n break;\n case EventType.HANDLE_REDIRECT_START:\n return InteractionStatus.HandleRedirect;\n case EventType.LOGOUT_START:\n return InteractionStatus.Logout;\n case EventType.SSO_SILENT_SUCCESS:\n case EventType.SSO_SILENT_FAILURE:\n if (\n currentStatus &&\n currentStatus !== InteractionStatus.SsoSilent\n ) {\n // Prevent this event from clearing any status other than ssoSilent\n break;\n }\n return InteractionStatus.None;\n case EventType.LOGOUT_END:\n if (\n currentStatus &&\n currentStatus !== InteractionStatus.Logout\n ) {\n // Prevent this event from clearing any status other than logout\n break;\n }\n return InteractionStatus.None;\n case EventType.HANDLE_REDIRECT_END:\n if (\n currentStatus &&\n currentStatus !== InteractionStatus.HandleRedirect\n ) {\n // Prevent this event from clearing any status other than handleRedirect\n break;\n }\n return InteractionStatus.None;\n case EventType.LOGIN_SUCCESS:\n case EventType.LOGIN_FAILURE:\n case EventType.ACQUIRE_TOKEN_SUCCESS:\n case EventType.ACQUIRE_TOKEN_FAILURE:\n case EventType.RESTORE_FROM_BFCACHE:\n if (\n message.interactionType === InteractionType.Redirect ||\n message.interactionType === InteractionType.Popup\n ) {\n if (\n currentStatus &&\n currentStatus !== InteractionStatus.Login &&\n currentStatus !== InteractionStatus.AcquireToken\n ) {\n // Prevent this event from clearing any status other than login or acquireToken\n break;\n }\n return InteractionStatus.None;\n }\n break;\n default:\n break;\n }\n return null;\n }\n}\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { AccountIdentifiers } from \"../types/AccountIdentifiers.js\";\nimport { AccountInfo } from \"@azure/msal-browser\";\n\ntype FaaCFunction = (args: T) => React.ReactNode;\n\nexport function getChildrenOrFunction(\n children: React.ReactNode | FaaCFunction,\n args: T\n): React.ReactNode {\n if (typeof children === \"function\") {\n return children(args);\n }\n return children;\n}\n\n/*\n * Utility types\n * Reference: https://github.com/piotrwitek/utility-types\n */\nexport type SetDifference = A extends B ? never : A;\nexport type SetComplement = SetDifference;\nexport type Subtract = Pick<\n T,\n SetComplement\n>;\n\n/**\n * Helper function to determine whether 2 arrays are equal\n * Used to avoid unnecessary state updates\n * @param arrayA\n * @param arrayB\n */\nexport function accountArraysAreEqual(\n arrayA: Array,\n arrayB: Array\n): boolean {\n if (arrayA.length !== arrayB.length) {\n return false;\n }\n\n const comparisonArray = [...arrayB];\n\n return arrayA.every((elementA) => {\n const elementB = comparisonArray.shift();\n if (!elementA || !elementB) {\n return false;\n }\n\n return (\n elementA.homeAccountId === elementB.homeAccountId &&\n elementA.localAccountId === elementB.localAccountId &&\n elementA.username === elementB.username\n );\n });\n}\n\nexport function getAccountByIdentifiers(\n allAccounts: AccountInfo[],\n accountIdentifiers: AccountIdentifiers\n): AccountInfo | null {\n if (\n allAccounts.length > 0 &&\n (accountIdentifiers.homeAccountId ||\n accountIdentifiers.localAccountId ||\n accountIdentifiers.username)\n ) {\n const matchedAccounts = allAccounts.filter((accountObj) => {\n if (\n accountIdentifiers.username &&\n accountIdentifiers.username.toLowerCase() !==\n accountObj.username.toLowerCase()\n ) {\n return false;\n }\n if (\n accountIdentifiers.homeAccountId &&\n accountIdentifiers.homeAccountId.toLowerCase() !==\n accountObj.homeAccountId.toLowerCase()\n ) {\n return false;\n }\n if (\n accountIdentifiers.localAccountId &&\n accountIdentifiers.localAccountId.toLowerCase() !==\n accountObj.localAccountId.toLowerCase()\n ) {\n return false;\n }\n\n return true;\n });\n\n return matchedAccounts[0] || null;\n } else {\n return null;\n }\n}\n","/* eslint-disable header/header */\nexport const name = \"@azure/msal-react\";\nexport const version = \"2.2.0\";\n","/*\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport React, {\n useEffect,\n useReducer,\n PropsWithChildren,\n useMemo,\n} from \"react\";\nimport {\n IPublicClientApplication,\n EventMessage,\n EventMessageUtils,\n InteractionStatus,\n Logger,\n WrapperSKU,\n AccountInfo,\n} from \"@azure/msal-browser\";\nimport { MsalContext, IMsalContext } from \"./MsalContext.js\";\nimport { accountArraysAreEqual } from \"./utils/utilities.js\";\nimport { name as SKU, version } from \"./packageMetadata.js\";\n\nexport type MsalProviderProps = PropsWithChildren<{\n instance: IPublicClientApplication;\n}>;\n\ntype MsalState = {\n inProgress: InteractionStatus;\n accounts: AccountInfo[];\n};\n\nconst MsalProviderActionType = {\n UNBLOCK_INPROGRESS: \"UNBLOCK_INPROGRESS\",\n EVENT: \"EVENT\",\n} as const;\ntype MsalProviderActionType =\n (typeof MsalProviderActionType)[keyof typeof MsalProviderActionType];\n\ntype MsalProviderReducerAction = {\n type: MsalProviderActionType;\n payload: {\n logger: Logger;\n instance: IPublicClientApplication;\n message?: EventMessage;\n };\n};\n\n/**\n * Returns the next inProgress and accounts state based on event message\n * @param previousState\n * @param action\n */\nconst reducer = (\n previousState: MsalState,\n action: MsalProviderReducerAction\n): MsalState => {\n const { type, payload } = action;\n let newInProgress = previousState.inProgress;\n\n switch (type) {\n case MsalProviderActionType.UNBLOCK_INPROGRESS:\n if (previousState.inProgress === InteractionStatus.Startup) {\n newInProgress = InteractionStatus.None;\n payload.logger.info(\n \"MsalProvider - handleRedirectPromise resolved, setting inProgress to 'none'\"\n );\n }\n break;\n case MsalProviderActionType.EVENT:\n const message = payload.message as EventMessage;\n const status = EventMessageUtils.getInteractionStatusFromEvent(\n message,\n previousState.inProgress\n );\n if (status) {\n payload.logger.info(\n `MsalProvider - ${message.eventType} results in setting inProgress from ${previousState.inProgress} to ${status}`\n );\n newInProgress = status;\n }\n break;\n default:\n throw new Error(`Unknown action type: ${type}`);\n }\n\n const currentAccounts = payload.instance.getAllAccounts();\n if (\n newInProgress !== previousState.inProgress &&\n !accountArraysAreEqual(currentAccounts, previousState.accounts)\n ) {\n // Both inProgress and accounts changed\n return {\n ...previousState,\n inProgress: newInProgress,\n accounts: currentAccounts,\n };\n } else if (newInProgress !== previousState.inProgress) {\n // Only only inProgress changed\n return {\n ...previousState,\n inProgress: newInProgress,\n };\n } else if (\n !accountArraysAreEqual(currentAccounts, previousState.accounts)\n ) {\n // Only accounts changed\n return {\n ...previousState,\n accounts: currentAccounts,\n };\n } else {\n // Nothing changed\n return previousState;\n }\n};\n\n/**\n * MSAL context provider component. This must be rendered above any other components that use MSAL.\n */\nexport function MsalProvider({\n instance,\n children,\n}: MsalProviderProps): React.ReactElement {\n useEffect(() => {\n instance.initializeWrapperLibrary(WrapperSKU.React, version);\n }, [instance]);\n // Create a logger instance for msal-react with the same options as PublicClientApplication\n const logger = useMemo(() => {\n return instance.getLogger().clone(SKU, version);\n }, [instance]);\n\n const [state, updateState] = useReducer(reducer, undefined, () => {\n // Lazy initialization of the initial state\n return {\n inProgress: InteractionStatus.Startup,\n accounts: instance.getAllAccounts(),\n };\n });\n\n useEffect(() => {\n const callbackId = instance.addEventCallback(\n (message: EventMessage) => {\n updateState({\n payload: {\n instance,\n logger,\n message,\n },\n type: MsalProviderActionType.EVENT,\n });\n }\n );\n logger.verbose(\n `MsalProvider - Registered event callback with id: ${callbackId}`\n );\n\n instance\n .initialize()\n .then(() => {\n instance\n .handleRedirectPromise()\n .catch(() => {\n // Errors should be handled by listening to the LOGIN_FAILURE event\n return;\n })\n .finally(() => {\n /*\n * If handleRedirectPromise returns a cached promise the necessary events may not be fired\n * This is a fallback to prevent inProgress from getting stuck in 'startup'\n */\n updateState({\n payload: {\n instance,\n logger,\n },\n type: MsalProviderActionType.UNBLOCK_INPROGRESS,\n });\n });\n })\n .catch(() => {\n // Errors should be handled by listening to the LOGIN_FAILURE event\n return;\n });\n\n return () => {\n // Remove callback when component unmounts or accounts change\n if (callbackId) {\n logger.verbose(\n `MsalProvider - Removing event callback ${callbackId}`\n );\n instance.removeEventCallback(callbackId);\n }\n };\n }, [instance, logger]);\n\n const contextValue: IMsalContext = {\n instance,\n inProgress: state.inProgress,\n accounts: state.accounts,\n logger,\n };\n\n return (\n \n {children}\n \n );\n}\n","import 'react-app-polyfill/ie9';\r\nimport 'react-app-polyfill/ie11';\r\nimport 'react-app-polyfill/stable';\r\nimport React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport { Provider } from \"react-redux\";\r\nimport './index.css';\r\nimport App from './App';\r\nimport store from './redux/store';\r\nimport { persistStore } from 'redux-persist';\r\nimport { Notifications } from 'react-push-notification';\r\nimport { PersistGate } from 'redux-persist/integration/react';\r\nimport \"./translations/i18n\";\r\nimport i18n from \"i18next\";\r\nimport { msalInstance } from './authConfig';\r\nimport { MsalProvider } from \"@azure/msal-react\";\r\n\r\nlet persistor = persistStore(store);\r\ni18n.changeLanguage('en');\r\n\r\n\r\nReactDOM.render(\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ,\r\n document.getElementById(\"root\")\r\n);"],"names":["asap","require","noop","LAST_ERROR","IS_ERROR","Promise","fn","this","TypeError","_x","_y","_z","_A","doResolve","handle","self","deferred","_B","push","cb","onFulfilled","onRejected","ret","a","ex","tryCallOne","reject","promise","resolve","handleResolved","newValue","then","obj","getThen","finale","bind","_C","i","length","Handler","done","res","b","tryCallTwo","value","reason","module","exports","_D","prototype","constructor","safeThen","AWS","Service","apiLoader","services","CodeCommit","defineService","Object","defineProperty","get","model","paginators","enumerable","configurable","DESCRIPTORS","fails","writable","input","next_in","avail_in","total_in","output","next_out","avail_out","total_out","msg","state","data_type","adler","CryptoJS","enc","Utf8","$","aMap","iterate","target","proto","real","forced","keyOf","searchElement","result","key","MapHelpers","stat","from","createCollectionFrom","Map","set","speakerWeight","arguments","undefined","cutoffThreshold","silenceThreshold","takeoverRate","volumes","calculateScore","attendeeId","volume","muted","hasOwnProperty","score","otherAttendeeId","Math","max","prioritizeVideoSendBandwidthForActiveSpeaker","punycode","Url","protocol","slashes","auth","host","port","hostname","hash","search","query","pathname","path","href","parse","urlParse","source","relative","resolveObject","format","isString","call","protocolPattern","portPattern","unwise","concat","autoEscape","nonHostChars","hostEndingChars","hostnamePartPattern","hostnamePartStart","unsafeProtocol","hostlessProtocol","slashedProtocol","querystring","url","parseQueryString","slashesDenoteHost","isObject","u","arg","isNull","rest","trim","exec","lowerProto","toLowerCase","substr","match","atSign","hostEnd","hec","indexOf","lastIndexOf","slice","decodeURIComponent","parseHost","ipv6Hostname","hostparts","split","l","part","newpart","j","k","charCodeAt","validParts","notHost","bit","unshift","join","domainArray","newOut","s","encode","p","h","ae","esc","encodeURIComponent","escape","qm","replace","keys","stringify","charAt","rel","forEach","relPath","shift","isSourceAbs","isRelAbs","mustEndAbs","removeAllDots","srcPath","psychotic","pop","authInHost","last","hasTrailingSlash","up","splice","isAbsolute","util","convert","Translator","options","attrValue","convertEmptyValues","Boolean","wrapNumbers","translateInput","shape","mode","translate","translateOutput","type","translateStructure","translateMap","translateList","translateScalar","structure","struct","each","name","memberShape","members","list","out","arrayEach","member","map","toType","SessionStateControllerAction_1","SessionStateControllerDeferPriority_1","SessionStateControllerState_1","SessionStateControllerTransitionResult_1","logger","currentState","SessionStateControllerState","NotConnected","deferredAction","deferredWork","perform","action","work","SessionStateControllerAction","Connect","transition","Connecting","Fail","Disconnecting","FinishConnecting","Connected","Disconnect","Reconnect","Update","Updating","FinishUpdating","FinishDisconnecting","canDefer","info","deferAction","SessionStateControllerTransitionResult","DeferredTransition","warn","NoTransitionAvailable","e","error","TransitionFailed","performDeferredAction","Transitioned","newState","deferPriority","SessionStateControllerDeferPriority","VeryHigh","High","Medium","Low","DoNotDefer","PersonalizeEvents","DefaultVideoTile_1","__importDefault","makeTile","tileId","localTile","tileController","devicePixelRatioMonitor","resolutionMonitor","default","test","wellKnownSymbol","String","VideoQualityAdaptationPreference","DynamoDBStreams","JsonBuilder","JsonParser","populateHostPrefix","buildRequest","req","httpRequest","api","service","targetPrefix","operations","operation","version","jsonVersion","builder","awsQueryCompatible","params","assign","body","build","headers","extractError","resp","httpResponse","code","JSON","toString","__type","Code","message","Message","statusCode","statusMessage","Error","extractData","request","config","convertResponseTypes","data","parser","RangeError","observerQueue","Set","element","resizeObserver","ResizeObserver","entries","entry","width","height","contentRect","notifyObservers","newWidth","newHeight","observer","videoElementResolutionChanged","registerObserver","add","removeObserver","delete","bindVideoElement","newElement","unobserve","observe","CheckNetworkUDPConnectivityFeedback","CheckVideoConnectivityFeedback","workerTimer","callback","createWorkerTimer","timerBlob","Blob","Worker","window","URL","createObjectURL","start","delay","onmessage","event","lastTimeout","postMessage","setTimeout","destroy","clearTimeout","terminate","update","APIGateway","setAcceptHeader","Accept","setupRequestListeners","addListener","exportType","convertPayloadToString","eventMessageChunker","buffer","messages","offset","totalLength","readInt32BE","browserBehavior","meetingSessionConfiguration","signalingClient","peer","previousSdpOffer","sdpOfferInit","audioVideoController","realtimeController","videoTileController","mediaStreamBroker","activeAudioInput","activeVideoInput","audioMixController","transceiverController","indexFrame","iceCandidates","iceCandidateHandler","iceGatheringStateEventHandler","sdpAnswer","turnCredentials","reconnectController","removableObservers","audioProfile","videoStreamIndex","videoDownlinkBandwidthPolicy","videoUplinkBandwidthPolicy","lastKnownVideoAvailability","videoCaptureAndEncodeParameter","videosToReceive","lastVideosToReceive","videoSubscriptions","lastVideoSubscriptionConfiguration","videoSubscriptionLimit","DEFAULT_VIDEO_SUBSCRIPTION_LIMIT","previousSdpAnswerAsString","serverSupportsCompression","videoSendCodecPreferences","currentVideoSendCodec","meetingSupportedVideoSendCodecPreferences","prioritizedSendVideoCodecCapabilities","degradedVideoSendCodecs","videosPaused","videoDuplexMode","volumeIndicatorAdapter","statsCollector","connectionMonitor","videoInputAttachedTimestampMs","audioDeviceInformation","videoDeviceInformation","enableSimulcast","enableSVC","eventController","signalingOpenDurationMs","iceGatheringDurationMs","startAudioVideoTimestamp","attendeePresenceDurationMs","meetingStartDurationMs","poorConnectionCount","maxVideoTileCount","startTimeMs","isSessionConnected","resetConnectionSpecificState","close","reset","IotData","getBuiltIn","isCallable","isIterable","it","size","has","isSetLike","VideoFxConstants_1","targetSegmentationCycleTime","targetSegmentationCyclePercentage","frameCountOverSamplingPeriod","totalSegmentationDurationOverSamplingPeriod","samplingPeriodStartTime","performance","now","framesPerSegmentation","RESOURCE_CONSTRAINTS","SEGMENTATION_DEFAULT_FRAMES_PER_SEGMENTATION","submitFrame","shouldApplySegmentation","startSegmentation","frameSegmentationStartTime","completeSegmentation","SEGMENTATION_SAMPLING_PERIOD_FRAME_COUNT","adjustFramesPerSegmentation","currentSegmentationCycleTime","utils","defaults","fns","context","Route53","on","sanitizeUrl","retryableError","makeBuiltIn","descriptor","getter","setter","f","TaskStatus","forge","pki","oids","_IN","id","_I_","escapeAttribute","timeoutMs","timer","stop","sha1","md","algorithms","create","_initialized","_padding","fromCharCode","fillString","_state","_input","createBuffer","_w","Array","algorithm","blockLength","digestLength","messageLength","fullMessageLength","messageLengthSize","messageLength64","int32s","h0","h1","h2","h3","h4","encoding","encodeUtf8","len","putBytes","_update","read","compact","digest","finalBlock","bytes","next","overflow","bits","putInt32","s2","rval","w","t","c","d","getInt32","uncurryThis","hasOwn","toIndexedObject","hiddenKeys","object","names","O","stack","instance","QueryParamSerializer","ucfirst","isQueryName","toUpperCase","serializeStructure","prefix","rules","memberName","serializeMember","memberRules","v","n","suffix","flattened","parts","serializeList","position","keyName","valueName","serializeMap","toWireFormat","serialize","BUILD_ENGINE_REQUEST","BUILD_ENGINE_RESPONSE","PERFORM_SEGMENTATION_REQUEST","PERFORM_SEGMENTATION_RESPONSE","PERFORM_SEGMENTATION_SAB_REQUEST","PERFORM_SEGMENTATION_SAB_RESPONSE","DESTROY_ASSETS_REQUEST","DESTROY_ASSETS_RESPONSE","CLOSE_WORKER_REQUEST","FRAMES_PER_SECOND","WIDTH_IN_PIXEL","HEIGHT_IN_PIXEL","CHANNEL_COUNT","LOAD_SUCCESS","WIDTH_IN_PIXELS","HEIGHT_IN_PIXELS","DEFAULT_PROCESSING_BUDGET_PER_FRAME","BLUR_DEFAULT_CYCLE_PERCENTAGE","BLUR_SAMPLING_PERIOD_FRAME_COUNT","MIN_PROCESSING_BUDGET","MAX_PROCESSING_BUDGET","MFX_ASSET_PATH","paths","cdnBasePath","CDN_BASE_PATH","workerPath","WORKER_PATH","fxLibPath","FXLIB_PATH","DEFAULT_WHITELIST","ReferenceError","enabled","disable","matchWhitelist","some","cls","enable","displayId","rejections","onUnhandled","allRejections","whitelist","logged","console","line","logError","_E","onHandled","timeout","err","toSetLike","$symmetricDifference","symmetricDifference","other","asn1","_shortNames","publicKeyValidator","rsa","x509CertificateValidator","tagClass","Class","UNIVERSAL","Type","SEQUENCE","constructed","captureAsn1","CONTEXT_SPECIFIC","optional","INTEGER","capture","OID","UTCTIME","GENERALIZEDTIME","BITSTRING","captureBitStringValue","rsassaPssParameterValidator","certificationRequestInfoValidator","SET","certificationRequestValidator","_getAttribute","shortName","attr","attributes","RDNAttributesAsArray","rdn","si","derToOid","valueTagClass","CRIAttributesAsArray","seq","values","vi","extensionRequest","extensions","ei","certificateExtensionFromAsn1","_readSignatureParameters","oid","fillDefaults","algorithmOid","mgf","saltLength","errors","validate","hashOid","maskGenOid","maskGenHashOid","_createSignatureDigest","signatureOid","md5","sha256","sha384","sha512","_verifySignature","scheme","cert","certificate","sha1WithRSAEncryption","sha1WithRSASignature","signatureParameters","pss","publicKey","verify","getBytes","signature","_dnToAsn1","attrs","PRINTABLESTRING","UTF8","oidToDer","_fillMissingFields","attribute","valueConstructed","certificateExtensionToAsn1","_fillMissingExtensionFields","extension","unused","b2","b3","digitalSignature","nonRepudiation","keyEncipherment","dataEncipherment","keyAgreement","keyCertSign","cRLSign","encipherOnly","decipherOnly","cA","BOOLEAN","integerToDer","pathLenConstraint","client","server","email","objsign","reserved","sslCA","emailCA","objCA","altNames","altName","ip","bytesFromIP","comment","IA5STRING","ski","generateSubjectKeyIdentifier","subjectKeyIdentifier","toHex","OCTETSTRING","keyIdentifier","authorityCertIssuer","issuer","serialNumber","hexToBytes","subSeq","fullNameGeneralNames","_signatureParametersToAsn1","NULL","_CRIAttributesToAsn1","csr","certificateFromPem","pem","computeHash","strict","decode","headerType","procType","fromDer","certificateFromAsn1","certificateToPem","maxline","toDer","certificateToAsn1","publicKeyFromPem","publicKeyFromAsn1","publicKeyToPem","publicKeyToAsn1","publicKeyToRSAPublicKeyPem","publicKeyToRSAPublicKey","getPublicKeyFingerprint","hex","delimiter","certificationRequestFromPem","certificationRequestFromAsn1","certificationRequestToPem","certificationRequestToAsn1","createCertificate","siginfo","validity","notBefore","Date","notAfter","getField","sn","addField","subject","setSubject","uniqueId","setIssuer","setExtensions","exts","getExtension","ext","sign","tbsCertificate","getTBSCertificate","child","issued","expectedIssuer","actualIssuer","isIssuer","parent","iattr","sattr","verifySubjectKeyIdentifier","publicKeyOid","rsaEncryption","certVersion","serial","certSerialNumber","certSignatureOid","certSignatureParams","certinfoSignatureOid","parameters","certinfoSignatureParams","certSignature","certValidity1UTCTime","utcTimeToDate","certValidity2GeneralizedTime","generalizedTimeToDate","certValidity3UTCTime","certValidity4GeneralizedTime","imd","ibytes","certIssuer","certIssuerUniqueId","smd","sbytes","certSubject","certSubjectUniqueId","certExtensions","certificateExtensionsFromAsn1","subjectPublicKeyInfo","extseq","critical","ev","derToInteger","gn","bytesToIP","bytesToHex","createCertificationRequest","csrVersion","csrSignatureOid","csrSignatureParams","csrSignature","certificationRequestInfo","certificationRequestInfoSubject","getAttribute","addAttribute","certificationRequestInfoAttributes","setAttributes","getCertificationRequestInfo","cri","jan_1_1950","jan_1_2050","_dateToAsn1","date","dateToUtcTime","dateToGeneralizedTime","tbs","certificateExtensionsToAsn1","distinguishedNameToAsn1","dn","createCaStore","certs","caStore","getBySubject","ensureSubjectHasHash","getIssuer","addCertificate","hasCertificate","tmp","isArray","der1","listAllCertificates","certList","removeCertificate","certificateError","bad_certificate","unsupported_certificate","certificate_revoked","certificate_expired","certificate_unknown","unknown_ca","verifyCertificateChain","chain","validityCheckDate","first","depth","selfSigned","parents","verified","se","keyUsage","basicConstraints","bcExt","keyUsageExt","vfd","ContentShareConstants","$TypeError","$call","$actualApply","args","delegate","reportingPeriodMillis","filterCPUUtilization","_processingFilter","lastReportedEventTimestamp","lastFilterCompleteTimestamp","filterTotalMillis","filterCount","framerate","filterDurationNotifyMillis","setSegmentationDuration","reportEvent","timestamp","timeDiff","currentFilterCount","currentFilterTotalMillis","avgFilterDurationMillis","round","framesDropped","cpuUtilization","filterFrameDurationHigh","periodMillis","filterCPUUtilizationHigh","filterMillis","frameReceived","filterSubmitted","filterComplete","processingSegment","MarketplaceCatalog","CheckContentShareConnectivityFeedback","Function","apply","x","y","LogLevel_1","AsyncScheduler_1","task","dependencies","canceled","cancel","dep","nextTick","cancelPromise","logDependencies","getLogLevel","INFO","filter","run","all","ongoing","catch","setParent","parentTask","copy","fill","readUInt8","CostExplorer","groupId","matchesConstraints","constraints","EFS","FullJitterBackoff_1","DefaultEventController_1","NoOpDebugLogger_1","NoOpMediaStreamBroker_1","MeetingSessionConfiguration_1","MeetingSessionCredentials_1","MeetingSessionStatus_1","MeetingSessionStatusCode_1","MeetingSessionURLs_1","DefaultReconnectController_1","DefaultWebSocketAdapter_1","DefaultAudioVideoController_1","NoOpAudioVideoController","configuration","emptyConfiguration","meetingId","externalMeetingId","credentials","joinToken","urls","turnControlURL","audioHostURL","signalingURL","noOpLogger","super","setAudioProfile","_audioProfile","promoteToPrimaryMeeting","_","OK","demoteFromPrimaryMeeting","adler32","crc32","inflate_fast","inflate_table","Z_FINISH","Z_BLOCK","Z_TREES","Z_OK","Z_STREAM_END","Z_NEED_DICT","Z_STREAM_ERROR","Z_DATA_ERROR","Z_MEM_ERROR","Z_BUF_ERROR","Z_DEFLATED","HEAD","DICT","TYPE","TYPEDO","COPY_","LEN_","LEN","CHECK","BAD","MEM","zswap32","q","InflateState","strm","wrap","havedict","flags","dmax","check","total","head","wbits","wsize","whave","wnext","hold","extra","lencode","distcode","lenbits","distbits","ncode","nlen","ndist","have","lens","Uint16Array","lendyn","distdyn","sane","back","was","inflateStateCheck","inflateResetKeep","Int32Array","inflateReset","inflateReset2","windowBits","inflateInit2","lenfix","distfix","virgin","fixedtables","sym","updatewindow","src","end","dist","Uint8Array","subarray","inflateInit","inflate","flush","put","left","_in","_out","from_source","here_bits","here_op","here_val","last_bits","last_op","last_val","here","hbuf","opts","order","inf_leave","text","time","xflags","os","extra_len","hcrc","inflateEnd","inflateGetHeader","inflateSetDictionary","dictionary","dictLength","dictid","inflateInfo","num","SimulcastTransceiverController_1","SimulcastContentShareTransceiverController","meetingSessionContext","scale","videoQualityControlParameterMap","NAME_ARR_ASCENDING","ridName","rid","scaleResolutionDownBy","maxBitrate","BITRATE_ARR_ASCENDING","setEncodingParameters","encodingParamMap","_localCameraTransceiver","direction","sender","newEncodingParams","oldParam","getParameters","encodings","LOW_LEVEL_NAME","copyEncodingParams","HIGH_LEVEL_NAME","setParameters","logVideoTransceiverParameters","ForecastQueryService","IntervalScheduler_1","SignalingClientEventType_1","SignalingProtocol_js_1","Types_1","intervalMs","consecutivePongsUnaccountedFor","intervalScheduler","pingId","addObserver","forEachObserver","observerFunc","ready","startPingInterval","stopPingInterval","ping","Maybe","of","didMissPongs","SdkPingPongFrame","SdkPingPongType","PING","pingTimestampLocalMs","pingPong","debug","pong","PONG","handleSignalingClientEvent","WebSocketOpen","WebSocketFailed","WebSocketError","WebSocketClosing","WebSocketClosed","ReceivedSignalFrame","SdkSignalFrame","PING_PONG","pongTimestampRemoteMs","timestampMs","pingPongLocalIntervalMs","estimatedPingTimestampRemoteMs","estimatedClockSkewMs","didReceivePong","InterceptorManager","handlers","use","fulfilled","rejected","synchronous","runWhen","eject","isLE","mLen","nBytes","m","eLen","eMax","eBias","nBits","NaN","Infinity","pow","write","rt","abs","isNaN","floor","log","LN2","authenticationToken","eventsToIgnore","getAuthenticationToken","toJSON","CloudHSMV2","parseEvent","createEventStream","eventMessages","events","KinesisVideoSignalingChannels","DynamoDBSet","DynamoDB","DocumentClient","inherit","configure","bindServiceObject","putItem","Item","__super__","merge","makeServiceRequest","setupRequest","setupResponse","send","serviceClientOperationsMap","batchGet","batchWrite","scan","transactGet","transactWrite","createSet","getTranslator","translator","inputShape","_events","rawParams","outputShape","response","nextPage","paginationConfig","hasNextPage","nextPageTokens","inputTokens","inputToken","globalThis","userAgent","classof","userAgentStartsWith","string","Bun","Deno","process","document","aSet","callbackfn","boundFunction","dynamoDbCrc32","removeListener","EventListeners","Json","EXTRACT_DATA","checkCrc32","streaming","crc32IsValid","retryable","haltHandlersOnError","crc","parseInt","crypto","defaultRetryCount","retryDelays","retryCount","retryDelayOptions","base","calculateRetryDelay","ClientMetricReport_1","ClientMetricReportDirection_1","ClientMetricReportMediaType_1","RedundantAudioRecoveryMetricReport_1","StreamMetricReport_1","MeetingSessionLifecycleEvent_1","MeetingSessionLifecycleEventCondition_1","AudioLogEvent_1","VideoLogEvent_1","StatsCollector","interval","INTERVAL_MS","redRecoveryMetricReport","lastRedRecoveryMetricReportConsumedTimestampMs","videoCodecDegradationHighEncodeCpuCount","videoCodecDegradationEncodeFailureCount","resolutionMap","metricsAddTime","_name","_duration","_attributes","metricsLogEvent","toAttribute","str","toSuffix","substring","$1","logLatency","eventName","timeMs","logEventTime","logStateTimeout","stateName","logEvent","logAudioEvent","logVideoEvent","finalAttributes","call_id","client_type","CLIENT_TYPE","metric_type","logMeetingSessionStatus","status","statusEventName","statusAttribute","status_code","isTerminal","isAudioConnectionFailure","isFailure","logLifecycleEvent","lifecycleEvent","condition","lifecycle_event","lifecycle_event_code","lifecycle_event_condition","lifecycle_event_condition_code","clientMetricReport","__awaiter","getStatsWrapper","videoTileResolutionDidChange","videoTileUnbound","updateMetricValues","rawMetricReport","isStream","metricReport","streamMetricReports","Number","ssrc","globalMetricReport","metricMap","mediaType","getMetricMap","VIDEO","DOWNSTREAM","addRenderResolutionToVideoDownstreamMetrics","rawMetric","previousMetrics","currentMetrics","currentStringMetrics","previousObjectMetrics","currentObjectMetrics","processRawMetricReports","rawMetricReports","currentSsrcs","timeStamp","isVideoSourceMetricReport","isStreamRawMetricReport","existingStreamMetricReport","UPSTREAM","streamId","sendVideoStreamIdFromRid","streamIdForSSRC","streamMetricReport","getMediaType","getDirectionType","allStreams","empty","groupIdForSSRC","removeDestroyedSsrcs","previousTimestampMs","currentTimestampMs","print","addStreamMetricDimensionFrames","streamMetricFrame","streamDimensionMap","getStreamDimensionMap","metricName","dimensionFrame","SdkStreamDimension","dimensionValue","SdkDimensionValue","stringValue","dimensions","addMetricFrame","clientMetricFrame","metricSpec","transform","sourceMetric","streamMetricFramesLength","streamMetricFrames","latestStreamMetricFrame","metricFrame","SdkMetric","metrics","globalMetrics","addGlobalMetricsToProtobuf","addStreamMetricsToProtobuf","SdkStreamMetricFrame","AUDIO","SdkStreamMediaType","hasMetricDependenciesInReport","makeClientMetricProtobuf","SdkClientMetricFrame","sendClientMetricProtobuf","sendClientMetrics","includes","kind","isValidStandardRawMetric","isValidSsrc","validSsrc","isValidRawMetricReport","filterRawMetricReports","filteredRawMetricReports","handleRawMetricReports","customStatsReports","maybeAddRedRecoveryMetrics","videoUpstreamSsrc","getVideoUpstreamSsrcFromRawMetricReports","addVideoCodecDegradationMetrics","updateVideoSourceMetrics","metricsDidReceive","clone","rtcPeerConnection","report","getStats","rtcStatsReport","item","overrideObservableMetric","recoveryMetricsDidReceive","totalAudioPacketsLost","totalAudioPacketsExpected","totalAudioPacketsRecoveredRed","totalAudioPacketsRecoveredFec","videoCodecDegradationHighEncodeCpuDidReceive","videoCodecDegradationEncodeFailureDidReceive","videoCodecDegradationHighEncodeCpu","videoCodecDegradationEncodeFailure","attendeeIdForStreamId","videoUpstreamSsrcs","getVideoUpstreamSsrcs","Inspector","Lambda","isPrototypeOf","USE_SYMBOL_AS_UID","$Object","$Symbol","root","global","vendors","raf","caf","queue","frameDuration","_now","cp","cancelled","polyfill","requestAnimationFrame","cancelAnimationFrame","arr","warning","suppress","AWS_EXECUTION_ENV","AWS_SDK_JS_SUPPRESS_MAINTENANCE_MODE_MESSAGE","emitWarning","username","password","ttl","uris","CheckVideoInputFeedback","HttpAuthLocation","HttpApiKeyAuthLocation","EndpointURLScheme","AlgorithmId","FieldPosition","SMITHY_CONTEXT_KEY","IniSectionType","RequestHandlerProtocol","HttpRequest","method","fragment","cloned","reduce","carry","paramName","param","isInstance","HttpResponse","hostHeaderMiddlewareOptions","step","priority","tags","override","getHostHeaderPlugin","applyToStack","clientStack","async","handlerProtocol","requestHandler","metadata","hostHeaderMiddleware","loggerMiddlewareOptions","TRACE_ID_HEADER_NAME","addRecursionDetectionMiddlewareOptions","getRecursionDetectionPlugin","runtime","traceIdHeader","find","traceId","nonEmptyString","recursionDetectionMiddleware","getSmithyContext","normalizeProvider","promisified","httpAuthSchemeMiddleware","mwOptions","httpAuthSchemeProvider","httpAuthSchemeParametersProvider","authSchemes","httpAuthSchemes","schemeId","convertHttpAuthSchemesToMap","smithyContext","failureReasons","option","identityProvider","identityProviderConfigProvider","identityProperties","signingProperties","propertiesExtractor","selectedHttpAuthScheme","httpAuthOption","identity","signer","httpAuthSchemeEndpointRuleSetMiddlewareOptions","relation","toMiddleware","deserializerMiddlewareOption","serializerMiddlewareOption","getSerdePlugin","serializer","deserializer","commandStack","deserializerMiddleware","hint","$responseBodyText","$response","serializerMiddleware","endpoint","endpointV2","urlParser","defaultErrorHandler","defaultSuccessHandler","httpSigningMiddlewareOptions","aliases","getHttpSigningPlugin","addRelativeTo","errorHandler","successHandler","makePagedClientRequest","CommandCtor","withCommand","command","_len","_key","createPaginator","ClientCtor","inputTokenName","outputTokenName","pageSizeTokenName","page","token","startingToken","hasNext","_len2","additionalArguments","_key2","pageSize","prevToken","stopOnSameToken","fromObject","cursor","pathComponents","alphabetByEncoding","alphabetByValue","limit","char","index","fromBase64","totalByteLength","ArrayBuffer","dataView","DataView","bitLength","chunkOffset","byteLength","setUint8","fromUtf8","TextEncoder","toBase64","isArrayLike","isUint8Array","byteOffset","min","bitClusterCount","ceil","toUtf8","TextDecoder","Uint8ArrayBlobAdapter","fromString","mutate","transformFromString","setPrototypeOf","transformToString","payload","ReadableStream","escapeUri","uri","hexEncode","createRequest","requestOptions","Request","requestTimeout","timeoutInMs","timeoutError","keepAliveSupport","supported","FetchHttpHandler","instanceOrOptions","configProvider","abortSignal","requestTimeoutInMs","keepAlive","aborted","abortError","queryString","sort","iLen","qsEntry","buildQueryString","Headers","cache","duplex","AbortController","signal","keepalive","requestInit","removeSignalEventListener","fetchRequest","raceOfPromises","fetch","fetchHeaders","transformedHeaders","pair","statusText","blob","onAbort","addEventListener","once","removeEventListener","onabort","race","finally","updateHttpClientConfig","httpHandlerConfigs","streamCollector","stream","arrayBuffer","base64","reader","FileReader","onloadend","readyState","commaIndex","dataOffset","onerror","readAsDataURL","readToBase64","collectBlob","chunks","getReader","isDone","collected","chunk","collectStream","SHORT_TO_HEX","HEX_TO_SHORT","encodedByte","collectBody","streamBody","fromContext","extendedEncodeURIComponent","requestBuilder","RequestBuilder","resolvePathStack","basePath","resolvePath","hn","bp","uriLabel","endsWith","labelValueProvider","isGreedyLabel","resolvedPath","labelValue","segment","DefaultIdentityProviderConfig","getIdentityProvider","isIdentityExpired","expirationMs","doesIdentityRequireRefresh","expiration","getTime","IP_V4_REGEX","RegExp","isIpAddress","startsWith","VALID_HOST_LABEL_REGEX","isValidHostLabel","labels","label","customEndpointFunctions","debugId","toDebugString","ref","argv","EndpointError","getAttr","pathList","squareBracketIndex","arrayIndex","getAttrPathList","acc","DEFAULT_PORTS","HTTP","HTTPS","endpointFunctions","booleanEquals","value1","value2","isSet","not","parseURL","whatwgURL","_ref","urlString","isIp","authority","normalizedPath","stringEquals","reverse","uriEncode","evaluateTemplate","template","evaluatedTemplateArr","templateContext","endpointParams","referenceRecord","currentIndex","openingBraceIndex","closingBraceIndex","parameterName","refName","attrName","evaluateExpression","callFunction","getReferenceValue","evaluatedArgs","fnSegments","evaluateCondition","fnArgs","toAssign","evaluateConditions","conditions","conditionsReferenceRecord","getEndpointHeaders","headerKey","headerVal","headerValEntry","processedExpr","getEndpointProperty","property","propertyEntry","getEndpointProperties","properties","propertyKey","propertyVal","getEndpointUrl","endpointUrl","expression","evaluateEndpointRule","endpointRule","endpointRuleOptions","evaluateErrorRule","errorRule","evaluateTreeRule","treeRule","evaluateRules","rule","endpointOrUndefined","isVirtualHostableS3Bucket","selectedPartitionsInfo","selectedUserAgentPrefix","awsEndpointFunctions","parseArn","segments","arn","partition","region","accountId","resourcePath","resourceId","resource","flat","partitions","regions","outputs","regionData","regionRegex","DEFAULT_PARTITION","setFeature","feature","__aws_sdk_context","features","aws","ACCOUNT_ID_ENDPOINT_REGEX","USER_AGENT","X_AMZ_USER_AGENT","UA_NAME_ESCAPE_REGEX","UA_VALUE_ESCAPE_REGEX","userAgentMiddleware","escapeUserAgent","defaultUserAgent","defaultUserAgentProvider","retryStrategy","acquireInitialRetryToken","accountIdEndpointMode","__smithy_context","$source","checkFeatures","awsContext","val","encodeFeatures","customUserAgent","appId","userAgentAppId","sdkUserAgentValue","normalUAValue","section","userAgentPair","prefixSeparatorIndex","uaName","getUserAgentMiddlewareOptions","SelectorType","isFipsRegion","getRealRegion","CONTENT_LENGTH_HEADER","contentLengthMiddlewareOptions","getContentLengthPlugin","bodyLengthChecker","DOMAIN_PATTERN","IP_ADDRESS_PATTERN","DOTS_PATTERN","isDnsCompatibleBucketName","bucketName","isArnBucketName","bucket","isArn","isValidArn","createConfigValueProvider","configKey","canonicalEndpointParamKey","configValue","credentialScope","CredentialScope","AccountId","getEndpointFromConfig","parseUrl","toEndpointV1","resolveParams","commandInput","instructionsSupplier","clientConfig","instructions","getEndpointParameterInstructions","instruction","serviceId","Bucket","ForcePathStyle","Endpoint","DisableMultiRegionAccessPoints","disableMultiRegionAccessPoints","DisableMRAP","resolveParamsForS3","endpointMiddleware","endpointFromConfig","serviceConfiguredEndpoint","endpointProvider","getEndpointFromInstructions","authScheme","signingRegion","signingName","signing_region","signing_service","signingRegionSet","endpointMiddlewareOptions","getEndpointPlugin","RETRY_MODES","DEFAULT_RETRY_MODE","STANDARD","THROTTLING_ERROR_CODES","TRANSIENT_ERROR_CODES","TRANSIENT_ERROR_STATUS_CODES","NODEJS_TIMEOUT_ERROR_CODES","isThrottlingError","$metadata","httpStatusCode","$retryable","throttling","isTransientError","clockSkewCorrected","isClockSkewCorrectedError","cause","DefaultRateLimiter","currentCapacity","lastMaxRate","measuredTxRate","requestCount","lastTimestamp","timeWindow","beta","minCapacity","minFillRate","scaleConstant","smooth","currentTimeInSeconds","getCurrentTimeInSeconds","lastThrottleTime","lastTxRateBucket","fillRate","maxCapacity","getSendToken","acquireTokenBucket","amount","refillTokenBucket","setTimeoutFn","fillAmount","updateClientSendingRate","calculatedRate","updateMeasuredRate","rateToUse","calculateTimeWindow","cubicThrottle","enableTokenBucket","cubicSuccess","newRate","updateTokenBucketRate","getPrecise","timeBucket","currentRate","parseFloat","toFixed","DEFAULT_RETRY_DELAY_BASE","MAXIMUM_RETRY_DELAY","INVOCATION_ID_HEADER","REQUEST_HEADER","createDefaultRetryToken","retryDelay","retryCost","getRetryCount","getRetryDelay","getRetryCost","StandardRetryStrategy","maxAttempts","capacity","retryBackoffStrategy","getDefaultRetryBackoffStrategy","delayBase","computeNextBackoffDelay","attempts","random","setDelayBase","maxAttemptsProvider","retryTokenScope","refreshRetryTokenForRetry","errorInfo","getMaxAttempts","shouldRetry","errorType","delayFromErrorType","retryAfterHint","capacityCost","getCapacityCost","recordSuccess","getCapacity","tokenToRenew","isRetryableError","AdaptiveRetryStrategy","ADAPTIVE","rateLimiter","standardRetryStrategy","randomUUID","getRandomValues","rnds8","rng","byteToHex","unsafeStringify","buf","native","rnds","asSdkError","getAllAliases","_aliases","alias","getMiddlewareNameWithAliases","constructStack","absoluteEntries","relativeEntries","identifyOnResolve","entriesNameSet","cloneTo","toStack","middleware","expandRelativeMiddlewareList","expandedMiddlewareList","before","after","getMiddlewareList","normalizedAbsoluteEntries","normalizedRelativeEntries","normalizedEntriesNameMap","normalizedEntry","mainChain","stepWeights","priorityWeights","wholeList","toOverrideIndex","findIndex","toOverride","plugin","remove","toRemove","isRemoved","filterCb","removeByName","removeByReference","removeByTag","identify","mw","toggle","handler","initialize","finalizeRequest","deserialize","high","normal","low","Client","middlewareStack","optionsOrCb","cacheMiddleware","WeakMap","resolveMiddleware","Command","classBuilder","ClassBuilder","resolveMiddlewareWithContext","middlewareFn","clientName","commandName","inputFilterSensitiveLog","outputFilterSensitiveLog","additionalContext","handlerExecutionContext","commandInstance","_init","_ep","_middlewareFn","_commandName","_clientName","_additionalContext","_smithyContext","_inputFilterSensitiveLog","_outputFilterSensitiveLog","_serializer","_deserializer","init","ep","endpointParameterInstructions","middlewareSupplier","inputFilter","outputFilter","ser","de","closure","CommandRef","_ref2","SENSITIVE_STRING","expectBoolean","stackTraceWarning","lower","expectNumber","parsed","expectNonNull","location","expectObject","receivedType","expectString","strictParseDouble","parseNumber","NUMBER_REGEX","matches","parseEpochTimestamp","valueAsDouble","tag","ServiceException","getPrototypeOf","$fault","candidate","Symbol","hasInstance","decorateServiceException","exception","additions","deserializeMetadata","requestId","extendedRequestId","cfId","loadConfigsForDefaultMode","retryMode","connectionTimeout","getDefaultExtensionConfiguration","runtimeConfig","checksumAlgorithms","algorithmId","checksumConstructor","addChecksumAlgorithm","algo","getChecksumConfiguration","setRetryStrategy","getRetryConfiguration","isSerializableHeaderValue","LazyJsonString","deserializeJSON","NoOpLogger","trace","arg0","arg1","arg2","mapWithFilter","applyInstruction","take","_instructions","targetKey","nonNullish","valueFn","pass","sourceKey","_value","defaultFilterPassed","customFilterPassed","serializeDateTime","toISOString","_json","isStreamingPayload","isRetryStrategyV2","getRetryErrorInfo","getRetryErrorType","getRetryAfterHint","isServerError","retryMiddlewareOptions","getRetryPlugin","retry","retryToken","lastError","totalRetryDelay","isRequest","v4","retryErrorInfo","refreshError","retryMiddleware","retryAfterHeaderName","retryAfter","retryAfterSeconds","toUint8Array","isView","BYTES_PER_ELEMENT","AMZ_DATE_QUERY_PARAM","SIGNATURE_QUERY_PARAM","TOKEN_QUERY_PARAM","AUTH_HEADER","AMZ_DATE_HEADER","GENERATED_HEADERS","SIGNATURE_HEADER","SHA256_HEADER","TOKEN_HEADER","ALWAYS_UNSIGNABLE_HEADERS","authorization","connection","expect","pragma","referer","te","trailer","upgrade","PROXY_HEADER_PATTERN","SEC_HEADER_PATTERN","ALGORITHM_IDENTIFIER","EVENT_ALGORITHM_IDENTIFIER","KEY_TYPE_IDENTIFIER","signingKeyCache","cacheQueue","createScope","shortDate","hmac","ctor","secret","getCanonicalHeaders","unsignableHeaders","signableHeaders","canonical","headerName","canonicalHeaderName","getPayloadHash","hashConstructor","hashCtor","HeaderFormatter","formatHeaderValue","header","shortView","setInt16","intView","setInt32","longBytes","binView","setUint16","binBytes","utf8Bytes","strView","strBytes","tsBytes","Int64","fromNumber","valueOf","UUID_PATTERN","uuidBytes","encoded","fromHex","HEADER_VALUE_TYPE","number","remaining","negate","negative","prepareRequest","toDate","SignatureV4","applyChecksum","uriEscapePath","headerFormatter","regionProvider","credentialProvider","presign","originalRequest","signingDate","expiresIn","unhoistableHeaders","hoistableHeaders","signingService","validateResolvedCredentials","longDate","formatDate","scope","lname","moveHeadersToQuery","sessionToken","accessKeyId","canonicalHeaders","getCanonicalHeaderList","getSignature","getSigningKey","createCanonicalRequest","toSign","signString","signEvent","signMessage","signRequest","_ref3","priorSignature","hashedPayload","hashedHeaders","stringToSign","signableMessage","_ref4","requestToSign","payloadHash","hasHeader","soughtHeader","sortedHeaders","getCanonicalPath","serialized","encodedKey","getCanonicalQuery","createStringToSign","canonicalRequest","hashedRequest","_ref5","normalizedPathSegments","pathSegment","keyPromise","sha256Constructor","cacheKey","secretAccessKey","signable","resolveAwsSdkSigV4Config","resolvedCredentials","inputCredentials","isUserSupplied","memoizedProvider","credentialsProvider","credentialDefaultProvider","memoized","memoizeIdentityProvider","provider","isExpired","requiresRefresh","normalizedProvider","resolved","pending","hasResult","isConstant","coalesceProvider","forceRefresh","parentClientConfig","normalizeCredentialProvider","boundProvider","configBound","callerClientConfig","bindCallerConfig","attributed","creds","setCredentialFeature","signingEscapePath","systemClockOffset","regionInfoProvider","useFipsEndpoint","useDualstackEndpoint","regionInfo","signerConstructor","defaultSigningName","defaultChimeSDKMessagingHttpAuthSchemeParametersProvider","defaultChimeSDKMessagingHttpAuthSchemeProvider","authParameters","createAwsAuthSigv4HttpAuthOption","commonParams","UseFIPS","Region","UseDualStack","Buffer","convertToBuffer","isEmptyData","SHA_256_HASH","SHA_256_HMAC_ALGO","EMPTY_DATA_SHA_256","fallbackWindow","locateWindow","Sha256","toHash","typedArray","_this","subtle","importKey","thisArg","_arguments","P","generator","__generator","sent","trys","ops","g","Iterator","verb","iterator","op","SuppressedError","BLOCK_SIZE","KEY","Uint32Array","INIT","MAX_HASHABLE_LENGTH","RawSha256","temp","bufferLength","bytesHashed","finished","hashBuffer","bitsHashed","bufferView","undecoratedLength","setUint32","state0","state1","state2","state3","state4","state5","state6","state7","t1_1","t2_1","t1","t2","digestSync","outer","inner","bufferHash","bufferFromSecret","subtleCryptoMethods","supportsSubtleCrypto","every","methodName","supportsSecureRandom","supportsWebCrypto","JsSha256","WebCryptoSha256","createDefaultUserAgentProvider","clientVersion","parsedUA","navigator","bowser","sections","browser","TEXT_ENCODER","calculateBodyLength","getSkewCorrectedDate","getDateHeader","getUpdatedSystemClockOffset","clockTime","currentSystemClockOffset","clockTimeInMs","isClockSkewed","throwSigningPropertyError","AwsSdkSigV4Signer","validatedProps","signerFunction","validateSigningProperties","second","serverTime","ServerTime","initialSystemClockOffset","dateHeader","o","r","ruleSet","resolver","defaultEndpointResolver","resolveEndpoint","ruleSetObject","paramsWithDefault","paramKey","paramDefaultValue","requiredParams","required","requiredParam","DEFAULTS_MODE_OPTIONS","isMobileBrowser","platform","getRuntimeConfig","defaultsMode","memoize","toLocaleLowerCase","resolveDefaultsModeConfig","defaultConfigProvider","clientSharedValues","apiVersion","base64Decoder","base64Encoder","disableHostPrefix","ipc","utf8Decoder","utf8Encoder","getSharedRuntimeConfig","packageInfo","RequestHandler","resolveRuntimeExtensions","extensionConfiguration","setRegion","getAwsRegionExtensionConfiguration","setHttpHandler","httpHandler","getHttpHandlerExtensionConfiguration","_httpAuthSchemes","_httpAuthSchemeProvider","_credentials","setHttpAuthScheme","httpAuthScheme","setHttpAuthSchemeProvider","setCredentials","getHttpAuthExtensionConfiguration","checksumAlgorithm","resolveChecksumRuntimeConfig","retryStrategyConfiguration","resolveRetryRuntimeConfig","resolveHttpAuthRuntimeConfig","httpHandlerExtensionConfiguration","ChimeSDKMessagingClient","__Client","_config_0","__getRuntimeConfig","initConfig","_config_2","normalizedAppIdProvider","isValidUserAgentAppId","resolveUserAgentConfig","_config_7","config_0","resolveHttpAuthSchemeConfig","tls","customEndpointProvider","isCustomEndpoint","resolvedConfig","configuredEndpointPromise","resolveEndpointConfig","providedRegion","resolveRegionConfig","_retryMode","_maxAttempts","resolveRetryConfig","_config_8","dynamoDbDocumentClientOptions","overrideInputFilterSensitiveLog","overrideOutputFilterSensitiveLog","outputWithoutMetadata","getHttpAuthSchemeEndpointRuleSetPlugin","parseJsonBody","collectBodyString","parseJsonErrorBody","errorBody","ChimeSDKMessagingServiceException","__ServiceException","AllowNotifications","ALL","FILTERED","NONE","ChannelMembershipType","DEFAULT","HIDDEN","ErrorCode","AccessDenied","BadRequest","Conflict","Forbidden","NotFound","PhoneNumberAssociationsExist","PreconditionFailed","ResourceLimitExceeded","ServiceFailure","ServiceUnavailable","Throttled","Throttling","Unauthorized","Unprocessable","VoiceConnectorGroupAssociationsExist","BadRequestException","__BaseException","ConflictException","ForbiddenException","NotFoundException","ServiceFailureException","ServiceUnavailableException","ThrottledClientException","UnauthorizedClientException","ResourceLimitExceededException","ExpirationCriterion","CREATED_TIMESTAMP","LAST_MESSAGE_TIMESTAMP","ChannelMode","RESTRICTED","UNRESTRICTED","ChannelPrivacy","PRIVATE","PUBLIC","InvocationType","ASYNC","FallbackAction","ABORT","CONTINUE","PushNotificationType","VOIP","ChannelMessagePersistenceType","NON_PERSISTENT","PERSISTENT","ChannelMessageStatus","DENIED","FAILED","PENDING","SENT","ChannelMessageType","CONTROL","MessagingDataType","Channel","ChannelMessage","SortOrder","ASCENDING","DESCENDING","SearchFieldKey","MEMBERS","SearchFieldOperator","EQUALS","INCLUDES","IdentityFilterSensitiveLog","Name","BatchChannelMembershipsFilterSensitiveLog","InvitedBy","Members","BatchCreateChannelMembershipResponseFilterSensitiveLog","BatchChannelMemberships","ChannelFilterSensitiveLog","Metadata","CreatedBy","ChannelAssociatedWithFlowSummaryFilterSensitiveLog","ChannelBanFilterSensitiveLog","Member","ChannelBanSummaryFilterSensitiveLog","ProcessorFilterSensitiveLog","ChannelFlowFilterSensitiveLog","Processors","MessageAttributeValueFilterSensitiveLog","StringValues","PushNotificationConfigurationFilterSensitiveLog","Title","Body","ChannelMessageCallbackFilterSensitiveLog","Content","PushNotification","MessageAttributes","ContentType","ChannelFlowCallbackRequestFilterSensitiveLog","ChannelFlowSummaryFilterSensitiveLog","ChannelMembershipFilterSensitiveLog","ChannelSummaryFilterSensitiveLog","ChannelMembershipForAppInstanceUserSummaryFilterSensitiveLog","ChannelSummary","PushNotificationPreferencesFilterSensitiveLog","FilterRule","ChannelMembershipPreferencesFilterSensitiveLog","PushNotifications","ChannelMembershipSummaryFilterSensitiveLog","ChannelMessageFilterSensitiveLog","Sender","ChannelMessageSummaryFilterSensitiveLog","ChannelModeratedByAppInstanceUserSummaryFilterSensitiveLog","ChannelModeratorFilterSensitiveLog","Moderator","ChannelModeratorSummaryFilterSensitiveLog","TagFilterSensitiveLog","Key","Value","CreateChannelRequestFilterSensitiveLog","ClientRequestToken","Tags","ChannelId","CreateChannelBanResponseFilterSensitiveLog","CreateChannelFlowRequestFilterSensitiveLog","CreateChannelMembershipResponseFilterSensitiveLog","CreateChannelModeratorResponseFilterSensitiveLog","ChannelModerator","DescribeChannelResponseFilterSensitiveLog","DescribeChannelBanResponseFilterSensitiveLog","ChannelBan","DescribeChannelFlowResponseFilterSensitiveLog","ChannelFlow","DescribeChannelMembershipResponseFilterSensitiveLog","ChannelMembership","DescribeChannelMembershipForAppInstanceUserResponseFilterSensitiveLog","DescribeChannelModeratedByAppInstanceUserResponseFilterSensitiveLog","DescribeChannelModeratorResponseFilterSensitiveLog","GetChannelMembershipPreferencesResponseFilterSensitiveLog","Preferences","GetChannelMessageResponseFilterSensitiveLog","ListChannelBansRequestFilterSensitiveLog","NextToken","ListChannelBansResponseFilterSensitiveLog","ChannelBans","ListChannelFlowsRequestFilterSensitiveLog","ListChannelFlowsResponseFilterSensitiveLog","ChannelFlows","ListChannelMembershipsRequestFilterSensitiveLog","ListChannelMembershipsResponseFilterSensitiveLog","ChannelMemberships","ListChannelMembershipsForAppInstanceUserRequestFilterSensitiveLog","ListChannelMembershipsForAppInstanceUserResponseFilterSensitiveLog","ListChannelMessagesRequestFilterSensitiveLog","ListChannelMessagesResponseFilterSensitiveLog","ChannelMessages","ListChannelModeratorsRequestFilterSensitiveLog","ListChannelModeratorsResponseFilterSensitiveLog","ChannelModerators","ListChannelsRequestFilterSensitiveLog","ListChannelsResponseFilterSensitiveLog","Channels","ListChannelsAssociatedWithChannelFlowRequestFilterSensitiveLog","ListChannelsAssociatedWithChannelFlowResponseFilterSensitiveLog","ListChannelsModeratedByAppInstanceUserRequestFilterSensitiveLog","ListChannelsModeratedByAppInstanceUserResponseFilterSensitiveLog","ListSubChannelsRequestFilterSensitiveLog","ListSubChannelsResponseFilterSensitiveLog","ListTagsForResourceResponseFilterSensitiveLog","PutChannelMembershipPreferencesRequestFilterSensitiveLog","PutChannelMembershipPreferencesResponseFilterSensitiveLog","SearchChannelsRequestFilterSensitiveLog","SearchChannelsResponseFilterSensitiveLog","SendChannelMessageRequestFilterSensitiveLog","TagResourceRequestFilterSensitiveLog","UntagResourceRequestFilterSensitiveLog","TagKeys","UpdateChannelRequestFilterSensitiveLog","UpdateChannelFlowRequestFilterSensitiveLog","UpdateChannelMessageRequestFilterSensitiveLog","se_AssociateChannelFlowCommand","rb","_xacb","_CB","ChannelArn","ChannelFlowArn","se_BatchCreateChannelMembershipCommand","_o","MemberArns","SubChannelId","se_ChannelFlowCallbackCommand","CallbackId","generateIdempotencyToken","DeleteResource","se_CreateChannelCommand","AppInstanceArn","ElasticChannelConfiguration","ExpirationSettings","Mode","ModeratorArns","Privacy","se_CreateChannelBanCommand","MemberArn","se_CreateChannelFlowCommand","se_CreateChannelMembershipCommand","se_CreateChannelModeratorCommand","ChannelModeratorArn","se_DeleteChannelCommand","se_DeleteChannelBanCommand","se_DeleteChannelFlowCommand","se_DeleteChannelMembershipCommand","_sci","_SCI","se_DeleteChannelMessageCommand","MessageId","se_DeleteChannelModeratorCommand","se_DeleteMessagingStreamingConfigurationsCommand","se_DescribeChannelCommand","se_DescribeChannelBanCommand","se_DescribeChannelFlowCommand","se_DescribeChannelMembershipCommand","se_DescribeChannelMembershipForAppInstanceUserCommand","_s","_aiua","__expectNonNull","_AIUA","se_DescribeChannelModeratedByAppInstanceUserCommand","se_DescribeChannelModeratorCommand","se_DisassociateChannelFlowCommand","se_GetChannelMembershipPreferencesCommand","se_GetChannelMessageCommand","se_GetChannelMessageStatusCommand","se_GetMessagingSessionEndpointCommand","se_GetMessagingStreamingConfigurationsCommand","se_ListChannelBansCommand","_mr","MaxResults","_MR","_nt","_NT","se_ListChannelFlowsCommand","_aia","_AIA","se_ListChannelMembershipsCommand","_t","_T","se_ListChannelMembershipsForAppInstanceUserCommand","se_ListChannelMessagesCommand","_so","_SO","_nb","NotBefore","__serializeDateTime","_NB","_na","NotAfter","_NA","se_ListChannelModeratorsCommand","se_ListChannelsCommand","_p","_P","se_ListChannelsAssociatedWithChannelFlowCommand","_cfa","_CFA","se_ListChannelsModeratedByAppInstanceUserCommand","se_ListSubChannelsCommand","se_ListTagsForResourceCommand","_a","_RARN","se_PutChannelExpirationSettingsCommand","se_PutChannelMembershipPreferencesCommand","se_PutMessagingStreamingConfigurationsCommand","StreamingConfigurations","se_RedactChannelMessageCommand","se_SearchChannelsCommand","Fields","se_SendChannelMessageCommand","Persistence","Target","se_TagResourceCommand","ResourceARN","se_UntagResourceCommand","se_UpdateChannelCommand","se_UpdateChannelFlowCommand","se_UpdateChannelMessageCommand","se_UpdateChannelReadMarkerCommand","de_AssociateChannelFlowCommand","de_CommandError","contents","de_BatchCreateChannelMembershipCommand","__expectObject","parseBody","doc","Errors","de_ChannelFlowCallbackCommand","__expectString","de_CreateChannelCommand","de_CreateChannelBanCommand","de_CreateChannelFlowCommand","de_CreateChannelMembershipCommand","de_CreateChannelModeratorCommand","de_DeleteChannelCommand","de_DeleteChannelBanCommand","de_DeleteChannelFlowCommand","de_DeleteChannelMembershipCommand","de_DeleteChannelMessageCommand","de_DeleteChannelModeratorCommand","de_DeleteMessagingStreamingConfigurationsCommand","de_DescribeChannelCommand","de_Channel","de_DescribeChannelBanCommand","de_ChannelBan","de_DescribeChannelFlowCommand","de_ChannelFlow","de_DescribeChannelMembershipCommand","de_ChannelMembership","de_DescribeChannelMembershipForAppInstanceUserCommand","de_ChannelMembershipForAppInstanceUserSummary","de_DescribeChannelModeratedByAppInstanceUserCommand","de_ChannelModeratedByAppInstanceUserSummary","de_DescribeChannelModeratorCommand","de_ChannelModerator","de_DisassociateChannelFlowCommand","de_GetChannelMembershipPreferencesCommand","de_GetChannelMessageCommand","de_ChannelMessage","de_GetChannelMessageStatusCommand","Status","de_GetMessagingSessionEndpointCommand","de_GetMessagingStreamingConfigurationsCommand","de_ListChannelBansCommand","de_ListChannelFlowsCommand","de_ListChannelMembershipsCommand","de_ListChannelMembershipsForAppInstanceUserCommand","de_ChannelMembershipForAppInstanceUserSummaryList","de_ListChannelMessagesCommand","de_ChannelMessageSummaryList","de_ListChannelModeratorsCommand","de_ListChannelsCommand","de_ChannelSummaryList","de_ListChannelsAssociatedWithChannelFlowCommand","de_ListChannelsModeratedByAppInstanceUserCommand","de_ChannelModeratedByAppInstanceUserSummaryList","de_ListSubChannelsCommand","SubChannels","de_ListTagsForResourceCommand","de_PutChannelExpirationSettingsCommand","de_PutChannelMembershipPreferencesCommand","de_PutMessagingStreamingConfigurationsCommand","de_RedactChannelMessageCommand","de_SearchChannelsCommand","de_SendChannelMessageCommand","de_TagResourceCommand","de_UntagResourceCommand","de_UpdateChannelCommand","de_UpdateChannelFlowCommand","de_UpdateChannelMessageCommand","de_UpdateChannelReadMarkerCommand","parsedOutput","parseErrorBody","errorCode","loadRestJsonErrorCode","sanitizeErrorCode","rawValue","cleanValue","findKey","de_BadRequestExceptionRes","de_ConflictExceptionRes","de_ForbiddenExceptionRes","de_NotFoundExceptionRes","de_ServiceFailureExceptionRes","de_ServiceUnavailableExceptionRes","de_ThrottledClientExceptionRes","de_UnauthorizedClientExceptionRes","de_ResourceLimitExceededExceptionRes","parsedBody","throwDefaultError","ExceptionCtor","exceptionCtor","__decorateServiceException","CreatedTimestamp","__parseEpochTimestamp","__expectNumber","LastMessageTimestamp","LastUpdatedTimestamp","AppInstanceUserMembershipSummary","de_AppInstanceUserMembershipSummary","ReadMarkerTimestamp","de_ChannelSummary","retVal","LastEditedTimestamp","Redacted","__expectBoolean","de_ChannelMessageSummary","AssociateChannelFlowCommand","$Command","cs","BatchCreateChannelMembershipCommand","ChannelFlowCallbackCommand","CreateChannelBanCommand","CreateChannelCommand","CreateChannelFlowCommand","CreateChannelMembershipCommand","CreateChannelModeratorCommand","DeleteChannelBanCommand","DeleteChannelCommand","DeleteChannelFlowCommand","DeleteChannelMembershipCommand","DeleteChannelMessageCommand","DeleteChannelModeratorCommand","DeleteMessagingStreamingConfigurationsCommand","DescribeChannelBanCommand","DescribeChannelCommand","DescribeChannelFlowCommand","DescribeChannelMembershipCommand","DescribeChannelMembershipForAppInstanceUserCommand","DescribeChannelModeratedByAppInstanceUserCommand","DescribeChannelModeratorCommand","DisassociateChannelFlowCommand","GetChannelMembershipPreferencesCommand","GetChannelMessageCommand","GetChannelMessageStatusCommand","GetMessagingSessionEndpointCommand","GetMessagingStreamingConfigurationsCommand","ListChannelBansCommand","ListChannelFlowsCommand","ListChannelMembershipsCommand","ListChannelMembershipsForAppInstanceUserCommand","ListChannelMessagesCommand","ListChannelModeratorsCommand","ListChannelsAssociatedWithChannelFlowCommand","ListChannelsCommand","ListChannelsModeratedByAppInstanceUserCommand","ListSubChannelsCommand","ListTagsForResourceCommand","PutChannelExpirationSettingsCommand","PutChannelMembershipPreferencesCommand","PutMessagingStreamingConfigurationsCommand","RedactChannelMessageCommand","SearchChannelsCommand","SendChannelMessageCommand","TagResourceCommand","UntagResourceCommand","UpdateChannelCommand","UpdateChannelFlowCommand","UpdateChannelMessageCommand","UpdateChannelReadMarkerCommand","commands","ChimeSDKMessaging","createAggregatedClient","methodImpl","paginateListChannelBans","paginateListChannelFlows","paginateListChannelMembershipsForAppInstanceUser","paginateListChannelMemberships","paginateListChannelMessages","paginateListChannelModerators","paginateListChannelsAssociatedWithChannelFlow","paginateListChannelsModeratedByAppInstanceUser","paginateListChannels","paginateListSubChannels","paginateSearchChannels","ua_parser_js_1","Destroyable_1","EventIngestionConfiguration_1","DefaultMeetingEventReporter_1","MeetingEventsClientConfiguration_1","Versioning_1","flattenEventAttributes_1","DefaultEventController","eventReporter","meetingHistoryStates","observerSet","destroyed","setupEventReporter","parserResult","UAParser","getResult","browserMajorVersion","_c","_b","UNAVAILABLE","browserName","_d","browserVersion","_e","deviceName","_f","device","vendor","_g","publishEvent","eventAttributes","freeze","getAttributes","eventDidReceive","flattenedAttributes","_eventReporter","eventIngestionURL","meetingEventsClientConfiguration","eventIngestionConfiguration","externalUserId","meetingHistory","osName","osVersion","sdkVersion","sdkName","isDestroyable","DeviceFarm","mgf1","WorkDocs","beg","s_window","lcode","dcode","lmask","dmask","top","dolen","dodist","versions","v8","KinesisVideoMedia","mapValues","newMap","Shape","memoizedProperty","http","requestUri","authtype","endpointdiscovery","httpChecksumRequired","httpChecksum","requestChecksumRequired","documentation","documentationUrl","idempotentMembers","isIdempotent","topLevelShape","isEventStream","hasEventStream","store","SDPCandidateType","$isSubsetOf","isSubsetOf","typeOf","memberTypeToSetType","wrapperName","detectType","getSetRecord","otherRec","ELB","waiters","CloudFront","hoistPayloadMember","GetUserMediaError_1","PermissionDeniedError","$difference","difference","LexRuntimeV2","$defineProperty","hasPropertyDescriptors","hasArrayLengthDefineBug","normalizedName","DefaultVideoStreamIdSet_1","updateIndex","_videoIndex","updateMetrics","_clientMetricReport","wantsResubscribe","chooseSubscriptions","SignalingProtocol_1","ServerSideNetworkAdaption","adaption","None","Default","SdkServerSideNetworkAdaption","BANDWIDTH_PROBING","BandwidthProbing","BANDWIDTH_PROBING_AND_VIDEO_QUALITY_ADAPTION","BandwidthProbingAndRemoteVideoQualityAdaption","Firehose","SSM","Iterators","ITERATOR","ArrayPrototype","InMemoryJSONEventBuffer_1","reportingEvents","importantEvents","eventsClientConfiguration","ingestionURL","eventBufferConfiguration","eventBuffer","ts","addItem","kem","BigInteger","jsbn","_createKDF","kdf","counterStart","generate","ByteBuffer","truncate","prng","keyLength","getBytesSync","mod","compareTo","ONE","zeros","encapsulation","encrypt","privateKey","decrypt","kdf1","kdf2","Hmac","Md5","Sha1","createHash","alg","createHmac","createSign","DefaultBrowserBehavior_1","DefaultMediaDeviceFactory_1","PromiseQueue_1","DefaultVideoTransformDevice_1","AudioTransformDevice_1","DeviceSelection_1","NotFoundError_1","NotReadableError_1","OverconstrainedError_1","PermissionDeniedError_1","TypeError_1","VideoQualitySettings_1","VideoTransformDevice_1","DefaultDeviceController","deviceInfoCache","activeDevices","audio","video","chosenVideoTransformDevice","audioOutputDeviceId","deviceChangeObservers","mediaStreamBrokerObservers","deviceLabelTrigger","mediaDevices","getUserMedia","audioInputDestinationNode","audioInputSourceNode","videoInputQualitySettings","useWebAudio","useMediaConstraintsFallback","audioInputTaskQueue","videoInputTaskQueue","mediaStreamMuteObserver","audioInputMuteStateChanged","alreadyHandlingDeviceChange","enableWebAudio","defaultVideoWidth","defaultVideoHeight","defaultVideoFrameRate","dimension","requiresResolutionAlignment","videoWidth","videoHeight","mediaDeviceWrapper","supportedConstraints","getSupportedConstraints","isWatchingForDeviceChanges","onDeviceChangeCallback","ensureWatchingDeviceChanges","handleDeviceChange","stopWatchingDeviceChanges","shouldObserveDeviceChanges","watchForDeviceChangesIfNecessary","stopAudioInput","stopVideoInput","listAudioInputDevices","forceUpdate","listDevicesOfKind","listVideoInputDevices","listAudioOutputDevices","pushAudioMeetingStateForPermissions","audioStream","pushVideoMeetingStateForPermissions","videoStream","startAudioInput","startAudioInputTask","isAudioTransformDevice","chooseAudioTransformInputDevice","removeTransform","chooseInputIntrinsicDevice","attachAudioInputStreamToAudioContext","getMediaStreamDestinationNode","mute","publishAudioInputDidChangeEvent","stopAudioInputTask","releaseAudioTransformStream","stopTracksAndRemoveCallbacks","getAudioContext","OfflineAudioContext","resume","nodes","createAudioNode","intrinsicDevice","setTransform","chooseVideoTransformInputDevice","passEventControllerToProcessors","prevVideoTransformDevice","wasUsingTransformDevice","isMediaStreamReusableByDeviceId","onOutputStreamDisconnect","transformStream","startVideoInput","startVideoInputTask","isVideoTransformDevice","publishVideoInputDidChangeEvent","outputMediaStream","chosenVideoInputIsTransformDevice","stopVideoInputTask","releaseVideoTransformStream","chooseAudioOutput","deviceId","deviceInfo","deviceInfoFromDeviceId","publishAudioOutputDidChangeEvent","addDeviceChangeObserver","removeDeviceChangeObserver","createAnalyserNodeForAudioInput","node","analyser","createAnalyser","removeOriginalInputs","disconnect","connect","createAnalyserNodeForRawAudioInput","createAnalyserNodeForStream","audioContext","createMediaStreamSource","startVideoPreviewForVideoInput","connectVideoStreamToVideoElement","stopVideoPreviewForVideoInput","disconnectVideoStreamFromVideoElement","setDeviceLabelTrigger","trigger","mixIntoAudioInput","getMediaStreamOutputNode","chooseVideoInputQuality","frameRate","getVideoInputQualitySettings","acquireAudioInputStream","acquireVideoInputStream","acquireDisplayInputStream","_streamConstraints","activeDevice","endedCallback","trackMuteCallback","trackUnmuteCallback","track","getTracks","muteLocalAudioInputStream","toggleLocalAudioInputStream","unmuteLocalAudioInputStream","audioDevice","getIntrinsicDeviceId","deviceIdConstraints","constraintStringParams","exact","createEmptyAudioDevice","synthesizeAudioDevice","toneHz","outputNode","createMediaStreamDestination","gainNode","createGain","gain","oscillatorNode","createOscillator","frequency","createBufferSource","sampleRate","defaultSampleRate","getChannelData","loop","deviceKind","updateDeviceInfoCacheFromBrowser","listCachedDevicesOfKind","MediaDeviceInfo","devices","enumerateDevices","hasDeviceLabels","triggerStream","deviceLabelTriggerErrorMessage","getErrorMessage","devicesOfKind","oldAudioInputDevices","oldVideoInputDevices","oldAudioOutputDevices","newAudioInputDevices","newVideoInputDevices","newAudioOutputDevices","areDeviceListsEqual","audioInputsChanged","videoInputsChanged","audioOutputsChanged","handleDeviceStreamEnded","requiresAudioContextResetOnDeviceFailureForWebAudio","suspendAudioContext","resumeAudioContext","audioInputStreamEnded","videoInputStreamEnded","forEachMediaStreamBrokerObserver","intrinsicDeviceAsMediaStream","hasSameMediaStreamId","selection","proposedConstraints","hasSameGroupId","deviceIds","getGroupIdFromDeviceId","cachedDeviceInfo","cachedDevice","handleGetUserMediaError","errorTimeMs","permissionDeniedOriginDetectionThresholdMs","matchesDeviceSelection","active","getMediaStreamConstraints","newDevice","handleNewInputDevice","errorMessage","audioInputErrorMessage","videoInputErrorMessage","hasError","constraint","fallbackConstraints","fallbackConstraintsJSON","newDeviceId","getMediaTrackSettings","getAudioTracks","getSettings","calculateMediaStreamConstraints","minimal","trackConstraints","requiresNoExactMediaStreamConstraints","ideal","videoFrameRate","supportSampleRateConstraint","supportSampleSizeConstraint","sampleSize","defaultSampleSize","supportChannelCountConstraint","channelCount","defaultChannelCount","echoCancellation","googEchoCancellation","googEchoCancellation2","googAutoGainControl","googAutoGainControl2","googNoiseSuppression","googNoiseSuppression2","googHighpassFilter","getMediaStreamConstraintsFromTrackConstraints","requiresGroupIdMediaStreamConstraints","isMediaDeviceInfo","hasAppliedTransform","settings","reconnectAudioInputs","proc","dest","previous","setDefaultLatencyHint","latencyHint","defaultLatencyHint","requiresPlaybackLatencyHintForAudioContext","AudioContext","webkitAudioContext","suspend","closeAudioContext","addMediaStreamBrokerObserver","removeMediaStreamBrokerObserver","videoInputDidChange","audioInputDidChange","audioOutputDidChange","loader_1","support_1","ModelSpecBuilder_1","CREATE_DEFAULT_MODEL_SPEC","withSelfieSegmentationDefaults","DEFAULT_CDN","DEFAULT_PATHS","worker","wasm","simd","defaultAssetSpec","sdkVersionSemVer","assetGroup","major","minor","createUrlWithParams","queryParams","searchParams","resolveSpec","spec","revisionID","sdk","ua","sdkUserAgentLowResolution","resolveOptions","isSupported","supportsBackgroundFilter","supportsWASM","supportsWorker","workerURL","loadWorker","convertToBuffer_1","isEmptyData_1","numToUint8_1","numToUint8","uint32ArrayFrom_1","uint32ArrayFrom","fixedWaitMs","shortBackoffMs","longBackoffMs","currentRetry","nextBackoffAmountMs","fullJitterMs","baseN","_checkBitsParam","ByteStringBuffer","isArrayBuffer","isArrayBufferView","putByte","_constructedStringLength","setImmediate","callbacks","stopPropagation","MutationObserver","div","createElement","oldSetImmediate","setAttribute","isNodejs","globalScope","_optimizeConstructedString","isEmpty","fillWithByte","putString","putInt16","putInt24","putInt16Le","putInt24Le","putInt32Le","putInt","putSignedInt","putBuffer","getByte","getInt16","getInt24","getInt16Le","getInt24Le","getInt32Le","getInt","getSignedInt","count","clear","at","setAt","decodeUtf8","DataBuffer","readOffset","growSize","writeOffset","accommodate","dst","view","binary","raw","utf16","setInt8","getInt8","getUint8","utf8","xorBytes","s1","s3","int32ToBytes","_base64","_base64Idx","_base58","encode64","chr1","chr2","chr3","decode64","enc1","enc2","enc3","enc4","unescape","base58","deflate","_setStorageObject","removeItem","setItem","_getStorageObject","getItem","_setItem","_getItem","_removeItem","prop","_clearItems","_callStorageFunction","func","idx","localStorage","clearItems","re","argi","lastIndex","formatNumber","decimals","dec_point","thousands_sep","formatSize","bytesFromIPv4","bytesFromIPv6","blanks","bytesToIPv4","bytesToIPv6","zeroGroups","zeroMaxGroup","group","estimateCores","cores","hardwareConcurrency","blobUrl","st","et","sample","samples","numWorkers","avg","revokeObjectURL","workers","results","overlaps","r1","overlap","r2","stringifyPrimitive","isFinite","sep","eq","ks","sLen","hLen","salt_","salt","pssobj","modBits","emBits","emLen","mHash","m_","ps","db","maskLen","dbMask","maskedDB","mask","em","checkLen","Fragment","StrictMode","Profiler","Suspense","for","z","A","isMounted","enqueueForceUpdate","enqueueReplaceState","enqueueSetState","B","C","props","refs","updater","D","E","isReactComponent","setState","F","isPureReactComponent","G","current","H","I","__self","__source","J","children","defaultProps","$$typeof","_owner","L","M","N","K","Q","_status","_result","R","S","T","ReactCurrentDispatcher","ReactCurrentBatchConfig","ReactCurrentOwner","IsSomeRendererActing","Children","toArray","only","Component","PureComponent","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","cloneElement","createContext","_calculateChangedBits","_currentValue","_currentValue2","_threadCount","Provider","Consumer","_context","createFactory","createRef","forwardRef","render","isValidElement","lazy","_payload","memo","compare","useCallback","useContext","useDebugValue","useEffect","useImperativeHandle","useLayoutEffect","useMemo","useReducer","useRef","useState","shared","uid","TimeoutScheduler_1","AsyncScheduler","Signers","V2","RequestSigner","addAuthorization","getDate","Timestamp","iso8601","SignatureVersion","SignatureMethod","AWSAccessKeyId","SecurityToken","Signature","queryParamsToString","VideoStreamDescription_1","indexForSubscribe","indexForLastRemoteVideoUpdate","currentSubscribeAck","subscribeTrackToStreamMap","subscribeStreamToAttendeeMap","subscribeStreamToExternalUserIdMap","subscribeSsrcToStreamMap","subscribeSsrcToGroupMap","streamToAttendeeMap","groupIdToAttendeeMap","streamToExternalUserIdMap","videoStreamDescription","sendVideoStreamId","trackLabel","localStreamDescriptions","convertBpsToKbps","avgBitrateBps","trunc","remoteStreamDescriptions","sources","streamInfos","description","maxBitrateKbps","avgBitrateKbps","maxFrameRate","integrateUplinkPolicyDecision","encodingParam","maxFramerate","integrateIndexFrame","attendeeIdToMainGroupIdMap","attendeeWithMultipleGroupIdsExists","currentGroupId","subscribeFrameSent","remoteVideoUpdateSent","integrateSubscribeAckFrame","subscribeAck","buildTrackToStreamMap","buildSSRCToStreamMap","buildSSRCToGroupMap","buildStreamToAttendeeMap","buildStreamExternalUserIdMap","allocations","integrateBitratesFrame","bitrates","bitrate","sourceStreamId","allVideoSendingSourcesExcludingSelf","selfAttendeeId","videoSources","attendeeSet","attendee","streamSelectionUnderBandwidthConstraint","largeTileAttendeeIds","smallTileAttendeeIds","bandwidthKbps","newAttendees","attendeeToStreamDescriptorMap","buildAttendeeToSortedStreamDescriptorMapExcludingSelf","selectionMap","usage","streams","trySelectHighBitrateForAttendees","streamSelectionSet","highestQualityStreamFromEachGroupExcludingSelf","maxes","numberOfVideoPublishingParticipantsExcludingSelf","array","numberOfParticipants","numParticipants","attendeeIdForTrack","trackId","streamIdForTrack","externalUserIdForTrack","attendeeIdForGroupId","buildGroupIdToAttendeeMap","groupIdForStreamId","StreamIdsInSameGroup","streamId1","streamId2","ssrcId","overrideStreamIdMappings","streamsPausedAtSource","paused","pausedAtSourceIds","_rid","tracks","trackMapping","highAttendees","currentUsage","currentSelectionRef","_attendeeId","stream1","stream2","functionToString","inspectSource","SNS","_checkBufferLength","available","requested","APPLICATION","ODESC","EXTERNAL","REAL","ENUMERATED","EMBEDDED","ROID","BMPSTRING","composed","bitStringContents","original","excludeBitStringContents","equals","obj1","obj2","equal","includeBitStringContents","getBerValueLength","_fromDer","b1","longFormBytes","_getValueLength","decodeBitStrings","savedRead","savedRemaining","used","tc","asn1Options","parseAllBytes","byteCount","useBitStringContents","lenBytes","valueBytes","utc","year","MM","DD","hh","mm","ss","setUTCFullYear","setUTCHours","setTime","gentime","YYYY","fff","isUTC","setFullYear","setHours","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","integer","captureBitStringContents","_nonLatinRegex","prettyPrint","level","indentation","indent","IA5String","subvalues","sub","lib","base64Encode","queryEncode","replacements","signPolicy","policy","signWithCannedPolicy","expires","keyPairId","Statement","Resource","Condition","DateLessThan","Expires","signWithCustomPolicy","Policy","determineScheme","getRtmpUrl","rtmpUrl","handleError","handleSuccess","Signer","getSignedCookie","signatureHash","cookieHash","getSignedUrl","getResource","parsedUrl","signedUrl","definePropertyModule","defineGlobalProperty","simple","unsafe","nonConfigurable","nonWritable","ownKeys","getOwnPropertyDescriptorModule","exceptions","getOwnPropertyDescriptor","crcTable","makeTable","table","pos","topic","senderAttendeeId","senderExternalUserId","throttled","json","stringSlice","$apply","$reflectApply","VoiceFocusTransformDevice","voiceFocus","nodeOptions","failed","farEndStreamToAudioSourceNode","mixDestNode","mixSourceNode","getInnerDevice","chooseNewInnerDevice","isDefaultDevice","isUsingES","es","noiseSuppression","useBuiltInAGC","agc","autoGainControl","useVoiceFocusAGC","createNode","MediaStreamAudioDestinationNode","channelCountMode","assignFarEndStreamToAudioSourceNode","createMixSourceNode","onFallback","observeMeetingAudio","audioVideo","addAudioMixObserver","getCurrentMeetingAudioStream","addFarEndStream","unObserveMeetingAudio","removeAudioMixObserver","removeFarendStream","activeStream","inactiveStream","meetingAudioStreamBecameActive","meetingAudioStreamBecameInactive","streamToAdd","streamNodeToAdd","_v3","_v","_interopRequireDefault","_v2","_v4","__esModule","LongBits","lo","hi","zero","toNumber","zzEncode","zzDecode","zeroHash","Long","unsigned","toLong","fromHash","part0","part1","part2","$isSupersetOf","isSupersetOf","S3","ManagedUpload","SequentialExecutor","sliceFn","completeInfo","fillQueue","partSize","minPartSize","queueSize","leavePartsOnError","validateBody","adjustTotalBytes","maxTotalParts","runFill","fillBuffer","isNode","Stream","fillStream","partBuffers","cleanup","isDoneChunking","numParts","totalPartNumbers","doneParts","finishMultiPart","abort","singlePart","toBuffer","arraySliceFn","signatureVersion","getSignatureVersion","_originalConfig","totalBytes","newPartSize","partPos","totalChunkedBytes","totalUploadedBytes","activeParts","multipartReq","partBufferLength","bodyLen","nextChunk","endPos","pbuf","isDoneSending","partNumber","Tagging","getTaggingHeader","putObject","_managedUpload","progress","finishSinglePart","ContentMD5","ETag","UploadId","uploadPart","queueChunks","createMultipartUpload","kvPairStrings","uriEscape","partParams","ContentLength","PartNumber","partInfo","_lastUploadedBytes","isBrowser","removeAllListeners","abortMultipartUpload","completeParams","MultipartUpload","Parts","completeMultipartUpload","Location","putObjectTagging","TagSet","upload","httpReq","loaded","emit","mixin","addPromisesToClass","PromiseDependency","promisifyMethod","deletePromisesFromClass","addPromises","CodeBuild","CloudHSM","toStringTag","IE_PROTO","__data__","Cache","leading","maxWait","trailing","nodeType","binding","isTypedArray","V","propertyIsEnumerable","U","Ne","W","Z","Y","Pe","X","ee","ne","oe","ie","ue","ce","le","Me","xe","pe","me","ye","qe","ze","be","Ee","Se","De","ge","ve","$e","Ve","Le","Oe","Ue","je","Ae","Be","Ce","ke","Ke","Te","Ie","Fe","Re","Ge","fe","we","He","webpackPolyfill","deprecate","padEnd","repeat","__proto__","return","iso2","countryCode","dialCode","getOwnPropertySymbols","isAreaCode","areaCodeLength","mainCode","hasAreaCodes","filterRegions","sortTerritories","getFilteredCountryList","localizeCountries","localName","getCustomAreas","excludeCountries","onlyCountries","preferredCountries","hiddenAreaCodes","getProbableCandidate","guessSelectedCountry","enableAreaCodes","updateCountry","selectedCountry","formattedNumber","disableCountryCode","scrollTo","dropdownRef","offsetHeight","getBoundingClientRect","scrollTop","enableSearch","scrollToTop","enableAreaCodeStretch","enableLongNumbers","autoFormat","remainingText","formattedText","cursorToEnd","numberInputRef","activeElement","focus","setSelectionRange","getElement","getCountryData","handleFlagDropdownClick","preventDefault","showDropdown","disabled","concatPreferredCountries","highlightCountryIndex","handleInput","onChange","freezeSelection","countryCodeEditable","returnValue","country","persist","disableCountryGuess","selectionStart","handleInputClick","onClick","handleDoubleClick","handleFlagItemClick","searchValue","handleInputFocus","jumpCursorToEnd","placeholder","onFocus","handleInputBlur","onBlur","handleInputCopy","copyNumbersOnly","getSelection","clipboardData","setData","getHighlightCountryIndex","getSearchFilteredCountries","searchCountry","handleKeydown","className","which","ENTER","ESC","blur","UP","DOWN","TAB","SPACE","debouncedQueryStingSearcher","handleInputKeyDown","onEnterKeyPress","onKeyDown","handleClickOutside","dropdownContainerRef","contains","handleSearchChange","currentTarget","getDropdownCountryName","getCountryDropdownList","disableDropdown","searchNotFound","disableSearchIcon","searchClass","searchStyle","searchPlaceholder","autocompleteSearch","preferred","highlight","tabIndex","role","hide","dropdownClass","style","dropdownStyle","autoFocus","autoComplete","enableTerritories","preserveOrder","masks","areaCodes","localization","defaultMask","alwaysDefaultMask","disableInitialCountryGuess","enableClickOutside","onMount","updateFormattedNumber","renderStringAsFlag","isValid","defaultErrorMessage","specialLabel","containerClass","arrow","open","inputClass","buttonClass","containerStyle","inputStyle","onDoubleClick","onCopy","inputProps","buttonStyle","title","flagsImagePath","RIGHT","LEFT","PLUS","internalObjectKeys","getOwnPropertyNames","objA","objB","compareContext","keysA","keysB","bHasOwnProperty","valueA","valueB","isAbsoluteURL","combineURLs","baseURL","requestedURL","toStr","concatty","that","bound","arrLike","slicy","boundLength","boundArgs","joiner","joiny","Empty","GetIntrinsic","callBound","inspect","$Map","$mapGet","$mapSet","$mapHas","$mapDelete","$mapSize","$m","channel","assert","pkcs5","usePureJavaScript","pbkdf2","dkLen","pbkdf2Sync","prf","xor","u_c","u_c1","dk","CloudWatch","prime","GCD_30_DELTA","THIRTY","fromInt","op_or","generateProbablePrime","nextBytes","primeincFindPrimeWithoutWorkers","generateRandom","workLoad","range","workerScript","workerMessage","found","dAddOffset","primeincFindPrimeWithWorkers","primeincFindPrime","mrTests","getMillerRabinTests","millerRabinTests","maxBlockTime","_primeinc","deltaIdx","isProbablePrime","bits1","testBit","bitwiseTo","shiftLeft","byteValue","VideoTileState","localTileStarted","isContent","poorConnection","boundAttendeeId","boundExternalUserId","boundVideoStream","boundVideoElement","nameplate","videoStreamContentWidth","videoStreamContentHeight","videoElementCSSWidthPixels","videoElementCSSHeightPixels","devicePixelRatio","videoElementPhysicalWidthPixels","videoElementPhysicalHeightPixels","qs","regexp","maxKeys","kstr","vstr","IoTAnalytics","getSideChannelList","getSideChannelMap","makeChannel","$channelData","__1","BaseTask_1","PromoteToPrimaryMeetingTask","completionCallback","taskName","taskCanceler","receivePrimaryMeetingJoinAck","MeetingSessionStatus","MeetingSessionStatusCode","SignalingRequestFailed","interceptor","isConnectionTerminated","PRIMARY_MEETING_JOIN_ACK","fromSignalFrame","MeetingSessionVideoAvailability_1","DefaultModality_1","VideoCodecCapability_1","ReceiveVideoStreamIndexTask","isIngestionPaused","pendingIndex","handleIndexFrame","INDEX","pauseIngestion","resumeIngestion","modality","hasModality","MODALITY_CONTENT","oldVideoSources","resubscribe","updateVideoAvailability","handleIndexVideosPausedAtSource","supportedReceiveCodecIntersection","handleSupportedVideoReceiveCodecIntersection","newVideoSources","areVideoSourcesEqual","remoteVideoSourcesDidChange","videoSourceA","videoSourceB","localeCompare","sortedOldVideoSources","sortedNewVideoSources","resubscribeForDownlink","resubscribeForUplink","SdkStreamServiceType","TX","DUPLEX","shouldResubscribe","videoSubscriptionIdSet","chooseCaptureAndEncodeParameters","needsRenegotiation","videoAvailability","remoteVideoAvailable","canStartLocalVideo","atCapacity","videoAvailabilityDidChange","newMeetingSupportedVideoSendCodecPreferences","willNeedUpdate","capability","degradedCapability","codecName","signaledCapability","fromSignaled","firstMatchingCodecPreference","prioritizedCapability","setMeetingSupportedVideoSendCodecs","tile","getAllVideoTiles","tileState","contain","markPoorConnection","unmarkPoorConnection","dbits","nbi","am3","xl","xh","am","appName","DB","DM","DV","FV","F1","F2","rr","vv","BI_RC","int2char","intAt","nbv","nbits","Classic","Montgomery","mp","invDigit","mpl","mph","um","mt2","op_and","op_xor","op_andnot","lbit","cbit","NullExp","nNop","Barrett","q3","dlShiftTo","mu","divide","revert","divRemTo","mulTo","multiplyTo","sqrTo","squareTo","ZERO","subTo","copyTo","u0","clamp","drShiftTo","fromRadix","mi","sh","lShiftTo","bs","cbs","bm","ds","rShiftTo","pm","pt","ms","nsh","ys","y0","yt","d1","d2","qd","isEven","exp","toRadix","km","modPowInt","multiplyUpperTo","multiplyLowerTo","lowprimes","lplim","chunkSize","signum","intValue","dMultiply","changeBit","addTo","modInt","millerRabin","n1","subtract","getLowestSetBit","shiftRight","modPow","shortValue","toByteArray","and","or","andNot","bitCount","setBit","clearBit","flipBit","multiply","remainder","divideAndRemainder","k1","g2","is1","modInverse","ac","gcd","asn1Validator","privateKeyValidator","NativeBuffer","ed25519","messageToNativeBuffer","constants","PUBLIC_KEY_BYTE_LENGTH","PRIVATE_KEY_BYTE_LENGTH","SEED_BYTE_LENGTH","SIGN_BYTE_LENGTH","HASH_BYTE_LENGTH","generateKeyPair","seed","pk","sk","gf","scalarbase","pack","crypto_sign_keypair","privateKeyFromAsn1","privateKeyOid","ed25519Oid","EdDSA25519","privateKeyBytes","publicKeyBytes","ed25519PublicKey","publicKeyFromPrivateKey","signedMsg","sm","Float64Array","smlen","modL","crypto_sign","sig","chk","den","den2","den4","den6","set25519","gf1","unpack25519","pow2523","neq25519","par25519","gf0","unpackneg","scalarmult","crypto_verify_32","crypto_sign_open","D2","msgLen","cswap","sel25519","tx","ty","zi","inv25519","pack25519","car25519","xi","yi","vn","t0","t3","t4","t5","t6","t7","t8","t9","t10","t11","t12","t13","t14","t15","t16","t17","t18","t19","t20","t21","t22","t23","t24","t25","t26","t27","t28","t29","t30","b0","b4","b5","b6","b7","b8","b9","b10","b11","b12","b13","b14","b15","Credentials","hideProperties","expired","expireTime","refreshCallbacks","expiryWindow","needsRefresh","currentTime","adjustedTime","refresh","coalesceRefresh","sync","load","defer","getPromise","refreshPromise","blobPayloadOutputOps","validateService","validateResponseBody","bodyCheck","ROTL","_default","SignalingClientVideoSubscriptionConfiguration_1","receiveGroupIds","preferences","getMidForGroupId","configurations","attendeeIdToMid","attendeeIdToGroupId","mid","preference","MAX_SAFE_INTEGER","targetBitrateKbps","targetSizeToBitrateKbps","targetSize","qualityAdaptationPreference","degradationPreference","ObjectSet","items","replaceFirst","newItem","partialCompare","modify","SetBuilder","copied","cow","MutableVideoPreferences","pref","newPref","VideoPreferences","prepare","highestPriority","sorted","videoPreferences","arrayJoin","separator","ParallelGroupTask","tasksToRunParallel","taskResults","failures","failureMessage","logAndThrow","constants_1","RawSha256_1","util_1","Axios","mergeConfig","createInstance","defaultConfig","extend","axios","instanceConfig","Cancel","CancelToken","isCancel","promises","spread","isAxiosError","isStandardBrowserEnv","originURL","msie","urlParsingNode","resolveURL","requestURL","v4Credentials","expiresHeader","V4","serviceName","signatureCache","datetime","isPresigned","updateForPresigned","addHeaders","credString","credentialString","signedHeaders","isSignableHeader","lowerKey","signingKey","hexEncodedHash","canonicalString","hexEncodedBodyHash","canonicalHeaderValues","aCallable","anObject","tryToString","getIteratorMethod","argument","usingIterator","iteratorMethod","zlib_inflate","strings","ZStream","GZheader","Z_NO_FLUSH","Inflate","to","opt","ended","string2buf","inflator","flush_mode","_flush_mode","last_avail_out","onEnd","next_out_utf8","utf8border","tail","utf8str","buf2string","onData","flattenChunks","inflateRaw","ungzip","Attendee_1","ContentShareConstants_1","ServerSideNetworkAdaption_1","__importStar","VideoSource_1","AllHighestVideoBandwidthPolicy_1","TargetDisplaySize_1","VideoPreference_1","VideoPreferences_1","VideoPriorityBasedPolicyConfig_1","VideoQualityAdaptationPreference_1","LinkMediaStats","bandwidthEstimateKbps","usedBandwidthKbps","packetsLost","nackCount","rttMs","VideoPriorityBasedPolicy","videoPriorityBasedPolicyConfig","shouldPauseTiles","pausedBwAttendeeIds","wantsResubscribeObserver","serverSideNetworkAdaption","allHighestPolicy","optimalReceiveSet","optimalReceiveStreams","optimalNonPausedReceiveStreams","subscribedReceiveSet","subscribedReceiveStreams","defaultVideoPreferences","pausedStreamIds","videoPreferencesUpdated","logCount","startupPeriod","usingPrevTargetRate","rateProbeState","firstEstimateTimestamp","lastUpgradeRateKbps","timeBeforeAllowSubscribeMs","MIN_TIME_BETWEEN_SUBSCRIBE_MS","lastProbeTimestamp","timeBeforeAllowProbeMs","MIN_TIME_BETWEEN_PROBE_MS","downlinkStats","prevDownlinkStats","probeFailed","pendingActionAfterUpdatedPreferences","bindToTileController","setWantsResubscribeObserver","chooseRemoteVideoSources","serverSideNetworkAdaptionIsNoneOrDefault","desiredVideoSources","videoIndex","updateDefaultVideoPreferences","attendeeIds","prefs","numAttendees","targetDisplaySize","Maximum","getObservableMetrics","availableIncomingBitrate","ssrcStr","countPerSecond","bitsPerSecond","wants","calculateOptimalReceiveSet","lastSubscribeTimestamp","setVideoPriorityBasedPolicyConfigs","calculateOptimalReceiveStreams","chosenStreams","remoteInfos","lastProbeState","cleanBwPausedTiles","handleAppPausedStreams","attendeeIdToPreference","getCurrentVideoPreferences","remoteInfosWithPreference","sameStreamChoices","streamsWithPreferenceDidChange","noMajorChange","Modality","streamIdsToRemove","streamsForAttendees","lastInfo","maxPixels","totalPixels","MaintainResolution","MaintainFramerate","framerateExponentConstant","resolutionBaseConstant","weighByFramerate","filteredRemoteAttendeesWithPreference","rates","targetDownlinkBitrate","chosenTotalBitrate","deltaToNextUpgrade","determineTargetRate","currentEstimated","dontAllowSubscribe","allowSubscribe","upgradeStream","priorityPolicy","subscriptionChoice","setProbeState","handleProbe","maybeOverrideOrProbe","previousStreamsWithPreference","prevTargetRateKbps","subscribedRate","calculateSubscribeRate","preProbeNonPausedReceiveStreams","preProbeReceiveStreams","processBwPausedStreams","lastNumberPaused","LogLevel","policyStateLogStr","targetBitrate","DEFAULT_BANDWIDTH_KBPS","STARTUP_PERIOD_MS","SPURIOUS_PACKET_LOST_THRESHOLD","USED_BANDWIDTH_OVERRIDE_BUFFER_KBPS","LARGE_RATE_CHANGE_TRIGGER_PERCENT","probePendingStartTimestamp","MAX_HOLD_BEFORE_PROBE_MS","upgradeToStream","diffRate","MAX_ALLOWED_PROBE_TIME_MS","chosenStreamsSameAsLast","sameSubscriptions","useLastSubscriptions","triggerPercent","LOW_BITRATE_THRESHOLD_KBPS","TARGET_RATE_CHANGE_TRIGGER_PERCENT","minTargetBitrateDelta","targetRateBaselineForDeltaCheckKbps","subscribeRate","remoteTiles","getAllRemoteVideoTiles","videoTiles","videoTile","getVideoTileForAttendeeId","tileWillBeUnpausedByDownlinkPolicy","unpauseVideoTile","streamExists","tileWillBePausedByDownlinkPolicy","pauseVideoTile","newTile","addVideoTile","bindVideoStream","pause","tiles","removeVideoTile","nextPriority","increaseKbps","hasSimulcastStreams","canUpgrade","bitrateKbps","targetResolution","streamCount","prevInfo","lastStream","probeState","remoteInfoStr","logString","getServerSideNetworkAdaption","setServerSideNetworkAdaption","supportedServerSideNetworkAdaptions","getVideoPreferences","wantsAllTemporalLayersInIndex","Rest","XML","Builder","payloadMember","rootElement","toXML","upperFirst","populateBody","Parser","hasEventOutput","HttpClient","streamsApiVersion","isStreaming","WebSocketReadyState","CognitoIdentity","isOldChrome","supportsWASMStreaming","supportsSharedArrayBuffer","supportsAudioWorklet","supportsVoiceFocusWorker","supportsWASMPostMessage","isSafari","loader_js_1","hasSafari","hasChrome","isChrome","chromeVersion","fetchConfig","AudioWorklet","AudioWorkletNode","WebAssembly","compile","compileStreaming","SharedArrayBuffer","chrome","crossOriginIsolated","versionCheck","SDP_1","FinishGatheringICECandidatesTask","chromeVpnTimeoutMs","CHROME_VPN_TIMEOUT_MS","requiresIceCandidateGatheringTimeoutWorkaround","connectionTimeoutMs","startTimestampMs","ICEGatheringTimeoutWorkaround","requiresCheckForSdpConnectionAttributes","localDescription","sdp","hasCandidatesForAllMLines","hasFirefoxWebRTC","iceGatheringState","hasCandidates","isRTPCandidate","p7","pkcs7","_recipientFromAsn1","recipientInfoValidator","encryptedContent","encAlgorithm","parameter","encParameter","content","encKey","_recipientsToAsn1","recipients","_signerToAsn1","digestAlgorithm","authenticatedAttributesAsn1","signatureAlgorithm","unauthenticatedAttributes","attrsAsn1","_attributeToAsn1","contentType","messageDigest","signingTime","_fromAsn1","validator","rawCapture","_decryptContent","ciph","aes","createDecryptionCipher","des","finish","messageFromPem","messageFromAsn1","messageToPem","pemObj","toAsn1","contentInfoValidator","envelopedData","createEnvelopedData","encryptedData","createEncryptedData","signedData","createSignedData","fromAsn1","certificates","crls","signers","digestAlgorithmIdentifiers","contentInfo","signerInfos","signedDataValidator","addSigner","privateKeyFromPem","authenticatedAttributes","detached","detachedContent","mds","ai","_signersToAsn1","addSignerInfos","addDigestAlgorithmIds","addCertificateRevokationList","crl","encryptedDataValidator","envelopedDataValidator","infos","_recipientsFromAsn1","recipientInfos","ec","findRecipient","sAttr","rAttr","recipient","privKey","desCBC","addRecipient","cipher","keyLen","ivLen","ciphFn","createEncryptionCipher","formats","KMS","registerAlgorithm","Algorithm","startEncrypting","iv","_createCipher","startDecrypting","blockSize","inBlock","outBlock","_updateBlock","_keys","pc2bytes0","pc2bytes1","pc2bytes2","pc2bytes3","pc2bytes4","pc2bytes5","pc2bytes6","pc2bytes7","pc2bytes8","pc2bytes9","pc2bytes10","pc2bytes11","pc2bytes12","pc2bytes13","iterations","shifts","right","lefttmp","righttmp","_createKeys","modes","ecb","cbc","cfb","ofb","ctr","spfunction1","spfunction2","spfunction3","spfunction4","spfunction5","spfunction6","spfunction7","spfunction8","looping","endloop","loopinc","right1","right2","createDecipher","createCipher","$intersection","intersection","toPrimitive","isSymbol","splitMessage","BOOLEAN_TAG","parseHeaders","nameLength","readInt8","readInt16BE","binaryLength","readUInt16BE","stringLength","uuidChars","parseMessage","BaseConnectionHealthPolicy_1","UnusableAudioWarningConnectionHealthPolicy","coolDownTimeMs","cooldownTimeMs","pastSamplesToConsider","fractionalLoss","packetsExpected","maximumTimesToWarn","lastWarnTimestampMs","warnCount","calculateFractionalLoss","currentData","packetsReceivedInLastMinute","samplesToConsider","totalPacketsExpected","totalPacketsReceived","health","currentHealth","DefaultTransceiverController_1","VideoOnlyTransceiverController","setupLocalTransceivers","useTransceivers","defaultMediaStream","MediaStream","addTransceiver","ELBv2","subResources","responseHeaders","rfc822","canonicalizedAmzHeaders","canonicalizedResource","amzHeaders","virtualHostedBucket","resources","subresource","_typeof","storageType","storage","testKey","hasStorage","noopStorage","Version","Action","origRules","resultWrapper","memberNames","_XAMZRequestId","requestIdShape","NATIVE_SYMBOL","sham","TaskStatus_1","SerialGroupTask","tasksToRunSerially","currentTask","getStatus","CANCELED","documentAll","env","React","_classCallCheck","_defineProperties","_createClass","_defineProperty","_getPrototypeOf","_setPrototypeOf","_possibleConstructorReturn","_assertThisInitialized","EventSet","called","cloneMap","normalizeHandlers","normalizeTarget","isRefObject","EventPool","handlerSets","poolName","addHandlers","dispatchEvent","hasHandlers","removeHandlers","EventTarget","pools","createByType","addTargetHandler","removeTargetHandler","createEmitter","targets","canUseDOM","pool","getTarget","removeTarget","EventStack$1","_inherits","subscribe","unsubscribe","unsub","propTypes","MeetingSessionLifecycleEvent","_has","DirectConnect","NoOpDeviceController","_options","_device","_deviceId","_observer","_element","_trigger","_stream","_width","_height","_frameRate","VideoDisabled","ConnectionHealthData","connectionStartTimestampMs","consecutiveStatsWithNoPackets","consecutiveStatsWithNoAudioPacketsSent","lastPacketLossInboundTimestampMs","lastGoodSignalTimestampMs","lastWeakSignalTimestampMs","lastNoSignalTimestampMs","consecutiveMissedPongs","fractionPacketsLostInboundInLastMinute","audioSpeakerDelayMs","isVideoEncoderHardware","videoEncodingTimeInMs","videoEncodingTimePerFrameInMs","cpuLimitationDuration","videoInputFps","videoEncodeFps","isTimestampRecent","recentDurationMs","setConnectionStartTime","isConnectionStartRecent","isLastPacketLossRecent","isGoodSignalRecent","isWeakSignalRecent","isNoSignalRecent","setConsecutiveMissedPongs","pongs","setConsecutiveStatsWithNoPackets","stats","setConsecutiveStatsWithNoAudioPacketsSent","setLastPacketLossInboundTimestampMs","setLastNoSignalTimestampMs","setLastWeakSignalTimestampMs","setLastGoodSignalTimestampMs","setAudioSpeakerDelayMs","delayMs","setIsVideoEncoderHardware","isHardware","setVideoEncodingTimeInMs","setVideoEncodingTimePerFrameInMs","setCpuLimitationDuration","setVideoInputFps","setVideoEncodeFps","ieee754","customInspectSymbol","K_MAX_LENGTH","encodingOrOffset","allocUnsafe","isEncoding","actual","arrayView","fromArrayBuffer","fromArrayLike","fromArrayView","isBuffer","checked","numberIsNaN","assertSize","mustMatch","loweredCase","utf8ToBytes","base64ToBytes","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","bidirectionalIndexOf","dir","arrayIndexOf","indexSize","arrLength","valLength","foundIndex","hexWrite","strLen","utf8Write","blitBuffer","asciiWrite","byteArray","asciiToBytes","base64Write","ucs2Write","units","utf16leToBytes","fromByteArray","firstByte","codePoint","bytesPerSequence","secondByte","thirdByte","fourthByte","tempCodePoint","codePoints","MAX_ARGUMENTS_LENGTH","decodeCodePointsArray","TYPED_ARRAY_SUPPORT","foo","typedArraySupport","poolSize","alloc","allocUnsafeSlow","_isBuffer","swap16","swap32","swap64","toLocaleString","thisStart","thisEnd","thisCopy","targetCopy","_arr","hexSliceLookupTable","checkOffset","checkInt","wrtBigUInt64LE","checkIntBI","BigInt","wrtBigUInt64BE","checkIEEE754","writeFloat","littleEndian","noAssert","writeDouble","newBuf","readUintLE","readUIntLE","mul","readUintBE","readUIntBE","readUint8","readUint16LE","readUInt16LE","readUint16BE","readUint32LE","readUInt32LE","readUint32BE","readUInt32BE","readBigUInt64LE","defineBigIntMethod","validateNumber","boundsError","readBigUInt64BE","readIntLE","readIntBE","readInt16LE","readInt32LE","readBigInt64LE","readBigInt64BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUintLE","writeUIntLE","writeUintBE","writeUIntBE","writeUint8","writeUInt8","writeUint16LE","writeUInt16LE","writeUint16BE","writeUInt16BE","writeUint32LE","writeUInt32LE","writeUint32BE","writeUInt32BE","writeBigUInt64LE","writeBigUInt64BE","writeIntLE","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeBigInt64LE","writeBigInt64BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","copyWithin","getMessage","Base","addNumericalSeparator","ERR_OUT_OF_RANGE","checkBounds","ERR_INVALID_ARG_TYPE","ERR_BUFFER_OUT_OF_BOUNDS","received","isInteger","INVALID_BASE64_RE","leadSurrogate","base64clean","alphabet","i16","BufferBigIntNotDefined","subtitle","theme","styling","closeButton","Storage","Listener","popAndPush","NotificationId","setTimer","duration","listener","addNativeNotification","icon","vibrate","silent","Notification","permission","requestPermission","onclick","addWebNotification","backgroundBottom","backgroundTop","colorBottom","colorTop","newNotification","addNotification","_r","_k","sin","ForecastService","clientWidth","clientHeight","hasAttribute","removeAttribute","srcObject","play","IndexedObject","requireObjectCoercible","ModelSpecBuilder","withDefaultModel","channels","withPath","withInput","withOutput","applicationMetadata","disablePeriodicKeyframeRequestOnContentSender","unstable_now","MessageChannel","unstable_shouldYield","unstable_forceFrameRate","port2","port1","sortIndex","startTime","expirationTime","priorityLevel","unstable_IdlePriority","unstable_ImmediatePriority","unstable_LowPriority","unstable_NormalPriority","unstable_Profiling","unstable_UserBlockingPriority","unstable_cancelCallback","unstable_continueExecution","unstable_getCurrentPriorityLevel","unstable_getFirstCallbackNode","unstable_next","unstable_pauseExecution","unstable_requestPaint","unstable_runWithPriority","unstable_scheduleCallback","unstable_wrapCallback","EventEmitter","_maxListeners","isFunction","isUndefined","defaultMaxListeners","setMaxListeners","er","listeners","newListener","warned","fired","listenerCount","evlistener","emitter","pkcs1","rsa_mgf1","maskLength","encode_rsa_oaep","mgf1Md","maxLength","lHash","PS","PS_length","seedLength","seedMask","decode_rsa_oaep","expectedLength","maskedSeed","lHashPrime","in_ps","executor","resolvePromise","throwIfRequested","NATIVE_BIND","FunctionPrototype","uncurryThisWithBind","fetch_js_1","WORKER_FETCH_OPTIONS","redirect","referrerPolicy","fetchBehavior","workerURLIsSameOrigin","origin","workerURLWithQuery","withQueryString","fetchWithBehavior","ok","audioElement","observers","bindAudioElement","autoplay","bindAudioMix","unbindAudioElement","bindAudioStream","bindAudioDevice","supportsSetSinkId","previousStream","shouldSetSinkId","sinkId","newSinkId","existingAudioElement","existingStream","hasChromiumWebRTC","setSinkId","CognitoIdentityServiceProvider","VideoStreamDescription","timeEnabled","disabledByWebRTC","disabledByUplinkPolicy","newInfo","toStreamDescriptor","SdkStreamDescriptor","postfix","BlurStrengthMapper","getBlurAmount","bstrength","BLUR_STRENGTH_DIVISOR","LOW","MEDIUM","HIGH","setInterval","clearInterval","running","CleanStoppedSessionTask","closeConnection","receiveWebSocketClosedEvent","setTransceiverController","getLocalVideoTile","removeAllVideoTiles","CreateSDPTask","sessionUsesAudio","sessionUsesVideo","sending","hasVideoInput","hasStartedLocalVideoTile","receiving","usesVideo","offerOptions","offerToReceiveAudio","offerToReceiveVideo","createOffer","videoSendSectionHasDifferentSSRC","IncompatibleSDP","VideoQualitySettings","VideoResolutionHD","VideoResolutionFHD","VideoResolutionUHD","STS","ChainableTemporaryCredentials","tokenCodeFn","RoleArn","RoleSessionName","SerialNumber","masterCredentials","stsConfig","getTokenCode","tokenCode","TokenCode","credentialsFrom","version_1","Versioning","semverString","groups","patch","preRelease","buildSHA","majorVersion","urlWithVersion","append","X_AMZN_VERSION","X_AMZN_USER_AGENT","OverconstrainedError","ReconnectionHealthPolicy","audioDelayPointsOverMaximum","CONNECTION_UNHEALTHY_THRESHOLD","connectionUnhealthyThreshold","CONNECTION_WAIT_TIME_MS","connectionWaitTimeMs","MISSED_PONGS_THRESHOLD","missedPongsUpperThreshold","MAXIMUM_AUDIO_DELAY_MS","maximumAudioDelayMs","MAXIMUM_AUDIO_DELAY_DATA_POINTS","maximumAudioDelayDataPoints","noPacketsReceivedRecently","missedPongsRecently","hasBadAudioDelay","VideoPreference","Balanced","MAXIMUM_BITRATE_KBPS","HIGH_BITRATE_KBPS","MID_BITRATE_KBPS","LOW_BITRATE_KBPS","ACM","ApplicationAutoScaling","AutoScaling","CloudFormation","CloudTrail","CloudWatchEvents","CloudWatchLogs","CodeDeploy","CodePipeline","CognitoSync","ConfigService","CUR","EC2","ECR","ECS","ElastiCache","ElasticBeanstalk","EMR","ElasticTranscoder","GameLift","IAM","Iot","Kinesis","LexRuntime","MachineLearning","MarketplaceCommerceAnalytics","MTurk","MobileAnalytics","OpsWorks","Polly","RDS","Redshift","Rekognition","Route53Domains","ServiceCatalog","SES","SQS","StorageGateway","XRay","WAF","LexModelBuildingService","Athena","Pricing","MediaStoreData","Comprehend","KinesisVideoArchivedMedia","KinesisVideo","Translate","ResourceGroups","SecretsManager","ComprehendMedical","Personalize","PersonalizeRuntime","Amp","isArrayIteratorMethod","lengthOfArrayLike","getIterator","iteratorClose","Result","stopped","ResultPrototype","iterable","unboundFunction","iterFn","AS_ENTRIES","IS_RECORD","IS_ITERATOR","INTERRUPTED","callFn","react_1","Storage_1","PushNotification_1","Notifications","componentDidMount","classN","note","closeNotification","CognitoIdentityCredentials","localStorageKey","providers","_identityId","_clientConfig","loadCachedId","IdentityId","identityId","createClients","getId","clearIdOnNotAuthorized","getCredentialsFromSTS","getCredentialsForIdentity","clearCachedId","poolId","IdentityPoolId","loginId","LoginId","cognito","loadCredentials","AccessKeyId","SecretKey","SessionToken","Expiration","cacheId","getOpenIdToken","WebIdentityToken","Token","webIdentityCredentials","webErr","sts","getStorage","Logins","actualProviders","WebIdentityCredentials","cognitoConfig","setStorage","$String","transformIV","ints","blocks","inc32","block","from64To32","_ints","_inBlock","_outBlock","pad","padding","unpad","_prev","_iv","_partialBlock","_partialOutput","_partialBytes","inputLength","partialBytes","gcm","_R","additionalData","_cipherLength","_tagLength","tagLength","_tag","_hashBlock","_hashSubkey","componentBits","_m","generateHashTable","ivLength","_j0","ghash","_aDataLength","afterFinish","lengths","z_i","v_i","lsb","tableMultiply","x_i","ah","multiplier","perInt","shft","generateSubHashTable","half","m_i","m_j","Collection","enum","pattern","xmlName","queryName","locationName","requiresLength","isComposite","idempotencyToken","jsonvalue","sensitive","eventstream","eventpayload","eventheader","timestampFormat","isTimestampFormatSet","endpointdiscoveryid","hostLabel","xmlAttribute","CompositeShape","StructureShape","requiredMap","firstInit","isShape","xmlOrder","isEventPayload","eventHeaderMemberNames","isEventHeader","xmlNamespace","ListShape","oldName","MapShape","StringShape","nullLessProtocols","isJsonValue","BinaryShape","isSensitive","secureBuf","Base64Shape","BooleanShape","normalizedTypes","character","double","long","short","biginteger","bigdecimal","types","toUTCString","parseTimestamp","refShape","shapes","filteredKeys","InlineShape","origType","DefaultDevicePixelRatioMonitor_1","DevicePixelRatioWindowSource_1","DefaultVideoElementResolutionMonitor_1","tileFactory","tileMap","nextTileId","currentLocalTile","currentPausedTilesByIds","resolutionObservers","keepLastFrameWhenPaused","createDevicePixelRatioMonitorIfNeeded","discardDevicePixelRatioMonitorIfNotNeeded","monitor","videoElement","getVideoTile","unbindVideoElement","cleanUpVideoElement","notifyRemoteObserversOfUnbound","stateRef","startLocalVideoTile","meetingFeatures","videoMaxResolution","findOrCreateLocalVideoTile","stopLocalVideoTile","removeLocalVideoTile","pauseReceivingStream","resumeReceivingStream","unpause","getVideoTileArea","tileHeight","tileWidth","createResolutionMonitor","videoTileWasRemoved","removeVideoTilesByAttendeeId","tilesRemoved","tileIds","sendTileStateUpdate","videoTileDidUpdate","haveVideoTilesWithStreams","haveVideoTileForAttendeeId","captureVideoTile","registerVideoTileResolutionObserver","removeVideoTileResolutionObserver","notifyResolutionObserversOfChange","controller","NotReadableError","getDescriptor","EXISTS","PROPER","CONFIGURABLE","Notifications_1","buildEndpoint","computeChecksums","verifySendMessageChecksum","verifySendMessageBatchChecksum","verifyReceiveMessageChecksum","MD5OfMessageBody","MessageBody","calculatedMd5","calculateChecksum","throwInvalidChecksumError","messageIds","Successful","Id","Entries","isChecksumValid","Messages","MD5OfBody","ids","checksum","QueueUrl","noInitial","accumulator","deviceController","contentShareController","getRTCPeerConnectionStats","selector","videoElementId","realtimeSubscribeToAttendeeIdPresence","realtimeUnsubscribeToAttendeeIdPresence","realtimeSetCanUnmuteLocalAudio","canUnmute","realtimeSubscribeToSetCanUnmuteLocalAudio","realtimeUnsubscribeToSetCanUnmuteLocalAudio","realtimeCanUnmuteLocalAudio","realtimeMuteLocalAudio","realtimeUnmuteLocalAudio","realtimeSubscribeToMuteAndUnmuteLocalAudio","realtimeUnsubscribeToMuteAndUnmuteLocalAudio","realtimeIsLocalAudioMuted","realtimeSubscribeToVolumeIndicator","realtimeUnsubscribeFromVolumeIndicator","realtimeSubscribeToLocalSignalStrengthChange","realtimeUnsubscribeToLocalSignalStrengthChange","realtimeSendDataMessage","lifetimeMs","realtimeSubscribeToReceiveDataMessage","realtimeUnsubscribeFromReceiveDataMessage","realtimeSubscribeToFatalError","realtimeUnsubscribeToFatalError","subscribeToActiveSpeakerDetector","scoresCallback","scoresCallbackIntervalMs","activeSpeakerDetector","unsubscribeFromActiveSpeakerDetector","setVideoMaxBandwidthKbps","maxBandwidthKbps","setVideoCodecSendPreferences","setContentAudioProfile","enableSimulcastForContentShare","encodingParams","enableSVCForContentShare","startContentShare","startContentShareFromScreenCapture","sourceId","pauseContentShare","unpauseContentShare","stopContentShare","addContentShareObserver","removeContentShareObserver","setContentShareVideoCodecPreferences","getRemoteVideoSources","transcriptionController","audioVideoWasDemotedFromPrimaryMeeting","SetHelpers","iterateSet","iterateSimple","zlib_deflate","Z_SYNC_FLUSH","Z_FULL_FLUSH","Z_DEFAULT_COMPRESSION","Z_DEFAULT_STRATEGY","Deflate","memLevel","strategy","gzip","deflateInit2","deflateSetHeader","dict","deflateSetDictionary","_dict_set","deflator","deflateEnd","deflateRaw","util_utf8_browser_1","BufferWriter","Writer","writeStringBuffer","_configure","_Buffer_allocUnsafe","writeBytesBuffer","_Buffer_from","uint32","_push","LeaveAndReceiveLeaveAckTask","leave","receiveLeaveAck","LEAVE_ACK","newSet","$hasOwn","b64","getLens","validLen","placeHoldersLen","Arr","_byteLength","curByte","revLookup","uint8","extraBytes","maxChunkLength","len2","encodeChunk","lookup","V3","headersToSign","assumeRoleWithWebIdentity","ClientMetricReportDirection","OFF","_msg","debugFunction","DEBUG","setLogLevel","defineWellKnownSymbol","Op","State","writer","states","writeByte","VarintOp","writeVarint64","writeFixed32","int32","sint32","uint64","int64","sint64","bool","fixed32","sfixed32","fixed64","sfixed64","float","writeBytes","fork","ldelim","BufferWriter_","SDPCandidateType_1","SDPMediaSection_1","SDP","linesToSDP","lines","CRLF","candidateTypeFromString","candidateType","Host","ServerReflexive","PeerReflexive","Relay","sdpLine","splitLines","splitSections","findActiveCameraSection","cameraLineIndex","hasCamera","sec","extractSSRCsFromFIDGroupLine","figGroupLine","matchPrefix","hasVideo","withoutCandidateType","candidateTypeToExclude","withoutServerReflexiveCandidates","withAudioMaxAverageBitrate","maxAverageBitrate","rfc7587LowestBitrate","rfc7587HighestBitrate","srcLines","fmtpAttributes","findOpusFmtpAttributes","dstLines","updateOpusFmtpAttributes","withStereoAudio","sdpLines","opusRtpMapRegex","lookingForOpusRtpMap","additionalParams","fmtpIndex","currFmtpAttribute","oldParameters","newParameters","withUnifiedPlanFormat","originalSdp","getUniqueRtpHeaderExtensionId","headerExtensionIds","previousId","withVideoLayersAllocationRtpHeaderExtension","previousSdp","withRtpHeaderExtension","videoLayersAllocationRtpHeaderExtensionUrl","withDependencyDescriptorRtpHeaderExtension","dependencyDescriptorRtpHeaderExtensionUrl","withoutDependencyDescriptorRtpHeaderExtension","getRtpHeaderExtensionId","newSections","getRtpHeaderExtensionIdInSection","hasRtpHeaderExtensionId","targetLine","newSdp","ssrcForVideoSendingSection","srcSDP","fidGroupMatch","fidGroup","videoSSRC1","prevSdp","ssrc1","ssrc2","removeH264SupportFromSendSection","cameraSection","cameraSectionLines","payloadTypesForH264","primaryPayloadTypeToFeedbackPayloadTypes","payloadMatch","feedbackMatches","feedbackPayloadType","primaryPayloadType","payloadTypesToRemove","feedbackTypes","feedbackType","mline","filteredLines","newSDP","mediaSections","parsedMediaSections","headerExtension","targetId","withVideoSendCodecPreferences","sectionWithCodecPreferences","payloadTypeToCodec","payloadTypeString","codecCapability","clockRate","codecMatches","sdpFmtpLine","hasVp9ProfileId","prospectiveFmtpLine","fmtpLineMatches","vp9Profile0","orderedPreferedPayloadTypes","_payloadType1","codec1","_payloadType2","codec2","payloadType","highestPriorityVideoSendCodec","mlineTokens","videoCodecCapabilityForPayloadType","sectionLines","fmtpLine","nameAndClockRate","mimeType","getAudioPayloadTypes","payloadTypeMap","findAudioPayloadType","rtpMapRegex","withStartingVideoSendBitrate","newLine","support_js_1","types_js_1","VoiceFocusWorkerPostMessageNode","VoiceFocusAudioWorkletNode","processor","modelURL","audioBufferURL","onWorkerMessage","onProcessorMessage","supportFarendStream","processorOptions","approach","frames","onCPUWarning","DefaultReconnectController","reconnectTimeoutMs","backoffPolicy","shouldReconnect","onlyRestartPeerConnection","firstConnectionAttempted","firstConnectionAttemptTimestampMs","lastActiveTimestampMs","_isFirstConnection","backoffTimer","backoffCancel","timeSpentReconnectingMs","hasPastReconnectDeadline","startedConnectionAttempt","isFirstConnection","hasStartedConnectionAttempt","disableReconnect","enableRestartPeerConnection","retryWithBackoff","retryFunc","cancelFunc","willRetry","shouldOnlyRestartPeerConnection","setLastActiveTimestampMs","mapKeys","SignalingClientConnectionRequest_1","OpenSignalingConnectionTask","openConnection","freeGlobal","maxInt","regexPunycode","regexNonASCII","regexSeparators","stringFromCharCode","mapDomain","ucs2decode","counter","ucs2encode","digitToBasic","digit","flag","adapt","delta","numPoints","firstTime","baseMinusTMin","basic","oldi","baseMinusT","bias","handledCPCount","basicLength","currentValue","handledCPCountPlusOne","qMinusT","define","hasProtoAccessor","callBind","gOPD","desc","$getPrototypeOf","AudioProfile_1","RedundantAudioEncoder_1","RedundantAudioEncoderWorkerCode_1","_localAudioTransceiver","streamIdToTransceiver","groupIdToTransceiver","audioRedWorker","audioRedWorkerURL","audioMetricsHistory","redMetricsObservers","currentNumRedundantEncodings","lastRedHolddownTimerStartTimestampMs","lastHighPacketLossEventTimestampMs","lastAudioRedTurnOffTimestampMs","maxAudioMetricsHistory","audioRedPacketLossShortEvalPeriodMs","audioRedPacketLossLongEvalPeriodMs","audioRedHoldDownTimeMs","redRecoveryTimeMs","existing","changed","localAudioTransceiver","localVideoTransceiver","setVideoSendingBitrateKbps","encodeParam","setPeer","destroyAudioRedWorkerAndStates","getTransceivers","trackIsVideoInput","receiver","hasRedundancyEnabled","setupAudioRedWorker","replaceAudioTrack","replaceTrack","setAudioInput","setTransceiverInput","setVideoInput","updateVideoTransceivers","transceivers","updateTransceivers","debugDumpTransceivers","videosRemaining","updateTransceiverWithStop","updateTransceiverWithoutStop","transceiver","transceiverIsVideo","reusingTranceiver","recvStreamId","currentDirection","previousTransceiver","getMidForStreamId","setStreamIdForMid","newStreamId","forEachRedMetricsObserver","redMetricReport","disableAudioRedundancy","audioBitrateBps","supportsRTCScriptTransform","RTCRtpScriptTransform","supportsInsertableStreams","RTCRtpSender","createEncodedStreams","audioRedEnabled","sendStreams","receiveStreams","msgType","receive","readable","addRedundantAudioRecoveryMetricsObserver","trackOrKind","getConfiguration","encodedInsertableStreams","removeRedundantAudioRecoveryMetricsObserver","setAudioPayloadTypes","getRTCStatsReport","receiverReportReceptionTimestampMs","currentTotalPacketsSent","currentTotalPacketsLost","packetsSent","totalPacketsSent","totalPacketsLost","lossPercent5sTimewindow","lossPercent","lossPercent15sTimewindow","maxLossPercent","newNumRedundantEncodings","shouldTurnOffRed","getNumRedundantEncodingsForPacketLoss","timeSinceRedOff","timeSinceLastHighPacketLossEvent","maybeResetHoldDownTimer","shouldUpdateAudioRedWorkerEncodings","numRedundantEncodings","timeWindowMs","latestReceiverReportTimestampMs","TRUE","valuePromise","FALSE","UNDEFINED","EMPTYSTRING","iterableToArray","onSettledFulfill","onSettledReject","mapAllSettled","getAggregateError","AggregateError","allSettled","any","hasResolved","rejectionReasons","resolveOnce","rejectionCheck","PrefetchOn","Log_1","POSTLogger","logCapture","lock","sequenceNumber","batchSize","BATCH_SIZE","logLevel","WARN","eventListener","ERROR","getLogCaptureSize","batch","makeRequestBody","sendBeacon","logs","_muted","createSingleAudioNode","toIntegerOrInfinity","c1","c2","createCollectionOf","percentTwenties","Format","formatters","RFC1738","RFC3986","isArgumentsObject","isGeneratorFunction","whichTypedArray","BigIntSupported","SymbolSupported","ObjectToString","numberValue","booleanValue","bigIntValue","symbolValue","checkBoxedPrimitive","prototypeValueOf","isMapToString","isSetToString","isWeakMapToString","isWeakSetToString","isArrayBufferToString","working","isDataViewToString","isDataView","isPromise","isUint8ClampedArray","isUint16Array","isUint32Array","isInt8Array","isInt16Array","isInt32Array","isFloat32Array","isFloat64Array","isBigInt64Array","isBigUint64Array","isMap","isWeakMap","WeakSet","isWeakSet","SharedArrayBufferCopy","isSharedArrayBufferToString","isSharedArrayBuffer","isNumberObject","isStringObject","isBooleanObject","isBigIntObject","isSymbolObject","isAsyncFunction","isMapIterator","isSetIterator","isGeneratorObject","isWebAssemblyCompiledModule","isBoxedPrimitive","isAnyArrayBuffer","rawAsap","requestFlush","newLength","BrowserMutationObserver","WebKitMutationObserver","makeRequestCallFromTimer","timeoutHandle","handleTimer","intervalHandle","createTextNode","characterData","makeRequestCallFromMutationObserver","isRegex","$exec","regex","SetPrototype","interruptible","hashUtils","toAbsoluteIndex","createMethod","IS_INCLUDES","$this","el","fromIndex","deleteAll","wasDeleted","collection","allDeleted","sha256_js_1","util_hex_encoding_1","chimeClient","makeTwoDigits","getDateTimeString","getDateString","dateTimeString","getSignatureKey","regionName","kDate","kRegion","kService","signURL","today","canonicalQuerystring","hashedCanonicalRequest","ConnectionHealthPolicyConfiguration_1","Utils_1","MeetingFeatures_1","createMeetingResponse","createAttendeeResponse","attendeePresenceTimeoutMs","connectionHealthPolicyConfiguration","reconnectFixedWaitMs","reconnectShortBackOffMs","reconnectLongBackOffMs","enableSimulcastForUnifiedPlanChromiumBasedBrowsers","toLowerCasePropertyNames","meeting","meetingid","externalmeetingid","mediaplacement","audiohosturl","signalingurl","turncontrolurl","eventingestionurl","parseVideoResolution","resolution","defaultValue","meetingfeatures","maxresolution","contentMaxResolution","attendeeid","externaluserid","jointoken","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","shim","propName","componentName","propFullName","getShim","isRequired","ReactPropTypes","bigint","symbol","arrayOf","elementType","instanceOf","objectOf","oneOf","oneOfType","checkPropTypes","PropTypes","ifNotSet","newError","CustomError","captureStackTrace","asPromise","inquire","emptyArray","emptyObject","isset","newBuffer","sizeOrArray","dcodeIO","key2Re","key32Re","key64Re","longToHash","longFromHash","fromBits","lcFirst","ProtocolError","oneOfGetter","fieldNames","fieldMap","oneOfSetter","toJSONOptions","longs","enums","relativeURL","BackgroundBlurProcessorProvided_1","BackgroundBlurStrength_1","BackgroundBlurProcessorBuiltIn","blurCanvas","blurCanvasCtx","getContext","drawImageWithMask","inputCanvas","blurredImage","canvasCtx","targetCanvas","clearRect","scaledCanvas","putImageData","save","drawImage","globalCompositeOperation","restore","setBlurStrength","blurStrength","modelInitialized","modelUrl","inputHeight","inputWidth","inputChannels","modelRangeMin","modelRangeMax","blurPixels","blurAmount","setBlurPixels","_blurStrength","handleInitialize","initWorkerPromise","handlePredict","blurOutput","_super","Some","isSome","isNone","flatMap","getOrElse","defaulting","levels","sLevelInfo","sLoggers","sConsoleLogger","LEVEL_LOCKED","NO_LEVEL_CHECK","INTERPOLATE","logMessage","messageLevelIndex","prepareStandard","standard","category","prepareFull","full","prepareStandardFull","standardFull","makeLogger","logFunction","setLevel","addLogger","levelHandlers","verbose","consoleLogger","propIsEnumerable","test1","test2","test3","letter","shouldUseNative","symbols","toObject","SetLocalDescriptionTask","supportsVideoLayersAllocationRtpHeaderExtension","supportsDependencyDescriptorRtpHeaderExtension","wantsVideoDependencyDescriptorRtpHeaderExtension","requiresDisablingH264Encoding","isStereo","audioPayloadMap","sdpOffer","setLocalDescription","regionConfig","applyConfig","configureEndpoint","regionPrefix","generateRegionPrefix","endpointPrefix","derivedKeys","dualstackFipsRules","fipsRules","dualstackRules","patterns","isGlobalEndpoint","globalEndpoint","useBearer","getEndpointSuffix","regionRegexes","regexes","regionPattern","dnsSuffix","pkg","validators","thing","deprecatedWarnings","currentVerArr","isOlderVersion","thanVersion","pkgVersionArr","destVer","transitional","isDeprecated","formatMessage","assertOptions","schema","allowUnknown","jmespath","CHECK_ACCEPTORS","waiter","_waiter","acceptors","acceptorMatched","acceptor","matcher","matchers","expected","setSuccess","setError","ResourceWaiter","loadWaiterConfig","strictDeepEqual","pathAll","numResults","ind","pathAny","addNamedListeners","wait","$waiter","makeRequest","maxRetries","addListeners","IS_PURE","DOES_NOT_WORK_WITH_PRIMITIVES","groupBy","V3Https","RunnableTask","getAudioInput","createAudioContext","VoiceFocus","decider_js_1","worklet_inline_node_js_1","worklet_worker_sab_node_js_1","worklet_worker_postMessage_node_js_1","DEFAULT_AGC_SETTING","DEFAULT_ASSET_GROUP","processors","models","DEFAULT_CONTEXT_HINT","BASE_AUDIO_CONSTRAINTS","googTypingNoiseDetection","DEFAULT_AUDIO_CONSTRAINTS_WITH_BUILTIN_AGC","DEFAULT_AUDIO_CONSTRAINTS_WITHOUT_BUILTIN_AGC","PROCESSORS","file","validateAssetSpec","isValidAssetGroup","isValidRevisionID","urlForModel","decideModel","processorURL","nodeConstructor","executionQuanta","internal","isDestroyed","assetConfig","updatedFetchBehavior","addQueryParams","mungeExecutionPreference","isAuto","preResolve","variant","variantPreference","executionPreference","executionQuantaPreference","usagePreference","estimatorBudget","thresholds","executionSpec","namePreference","simdPreference","executionDefinition","measureAndDecideExecutionApproach","useSIMD","startingURL","preload","resamplerURL","factory","numberOfInputs","voiceFocusSampleRate","sendBufferCount","prefill","audioWorklet","addModule","applyToStream","applyToSourceNode","destination","contextHint","inputOptions","voiceFocusOptions","mungeConstraints","defaultConstraints","hasToStringTag","isRegexMarker","throwRegexMarker","badStringifier","$toString","DynamoDBNumberValue","keyBy","keyDerivative","rdsutil","crossRegionOperations","SourceRegion","PreSignedUrl","doesParamValidation","paramValidation","Core","VALIDATE_PARAMETERS","onAsync","buildCrossRegionPresignedUrl","destinationRegion","newReq","DestinationRegion","Z_PARTIAL_FLUSH","Z_ERRNO","Z_NO_COMPRESSION","Z_BEST_SPEED","Z_BEST_COMPRESSION","Z_FILTERED","Z_HUFFMAN_ONLY","Z_RLE","Z_FIXED","Z_BINARY","Z_TEXT","Z_UNKNOWN","DefaultVideoCaptureAndEncodeParameter","cameraWidth","cameraHeight","cameraFrameRate","maxEncodeBitrateKbps","isSimulcast","isSVC","checkForEqual","captureWidth","captureHeight","captureFrameRate","encodeBitrates","encodeScaleResolutionDownBy","encodeWidths","encodeHeights","isSVCEncoding","MeetingSessionLifecycleEventCondition","closeCode","closeReason","DEFAULT_EXECUTION_QUANTA","PERFORMANCE_THRESHOLDS","noSupport","inline","c100","c50","c20","c10","Estimator","escapedQueryString","roundtrip","toSend","expectedKey","supportsSIMD","supports","measure","budget","benchWASM","benchSIMD","measurement","featureCheck","forceSIMD","estimator","supportsSAB","knownModel","knownExecution","estimateAndFeatureCheck","allThresholds","checkScores","baseScore","inlineScore","inlineScoreMultiplier","workerScore","unsupported","succeed","executionApproach","resolveVariant","reducePreference","inlineOption","workerOption","decideExecutionApproach","CheckNetworkTCPConnectivityFeedback","SetRemoteDescriptionTask","cancelICEPromise","mediaStream","videoTrack","getVideoTracks","av1Main","contentHint","remoteDescription","createICEConnectionCompletedPromise","checkConnectionCompleted","iceConnectionState","setRemoteDescription","viewStrings","clearImmediate","SimulcastLayers_1","DefaultVideoCaptureAndEncodeParameter_1","BitrateParameters_1","DefaultSimulcastUplinkPolicy","numSenders","shouldDisableSimulcast","newQualityMap","currentQualityMap","newActiveStreams","hiTargetBitrateKbps","kHiTargetBitrateKbpsHd","midTargetBitrateKbps","kMidTargetBitrateKbpsHd","lowTargetBitrateKbps","kLowTargetBitrateKbpsHd","enableFhdVideo","optimalParameters","parametersInEffect","fillEncodingParamWithBitrates","updateConnectionMetric","_metrics","calculateEncodingParameters","newBitrates","_i","encodingParametersEqual","getQualityMapString","chooseMediaTrackConstraints","chooseEncodingParameters","activeStreamsToPublish","publishEncodingSimulcastLayer","numSendersChanged","newShouldDisableSimulcast","shouldDisableSimulcastChanged","compareEncodingParameter","encoding1","encoding2","different","setIdealMaxBandwidthKbps","_idealMaxBandwidthKbps","setHasBandwidthPriority","_hasBandwidthPriority","setHighResolutionFeatureEnabled","kHiTargetBitrateKbpsFhd","kMidTargetBitrateKbpsFhd","kLowTargetBitrateKbpsFhd","bitratesKbps","nameArr","bitrateArr","qualityString","getEncodingSimulcastLayer","activeStreams","LowAndHigh","LowAndMedium","simulcastLayers","encodingSimulcastLayersDidChange","ListenForVolumeIndicatorsTask","realtimeMuteAndUnmuteHandler","AUDIO_STREAM_ID_INFO","audioStreamIdInfo","sendRealtimeUpdatesForAudioStreamIdInfo","AUDIO_METADATA","audioMetadata","sendRealtimeUpdatesForAudioMetadata","_getStorage","_enabled","AttachMediaInputTask","audioInput","audioTracks","setAudioCodecPreferences","videoInput","videoTracks","InputAttached","supportsSetCodecPreferences","RTCRtpTransceiver","enableAudioRedundancy","audioTransceiver","codecs","getCapabilities","redCodecIndex","redCodec","setCodecPreferences","audioHost","audioMuted","audioCheckin","receiveStreamIds","localVideoEnabled","videoStreamDescriptions","connectionTypeHasVideo","compressedSdpOffer","videoSubscriptionConfiguration","DefaultUserAgentParser","getParserResult","AudioLogEvent","XmlNode","XmlText","XmlBuilder","xml","isXmlAttribute","addChildNode","applyNamespaces","xmlKey","xmlValue","entryKey","entryValue","serializeScalar","isRoot","xmlNamespaceUri","xmlNamespacePrefix","noEmpty","STR_APPLY_UIA_OK","__","_utf8len","m_pos","str_len","buf_len","utf16buf","c_len","buf2binstring","hostPrefixEnabled","operationModel","isEndpointOperation","endpointOperation","lowerFirst","endpointDiscoveryRequired","hasEndpointDiscover","hostPrefix","hostPrefixNotation","expandHostPrefix","prependEndpointPrefix","hostPattern","validateHostname","domain","secure","cookie","isNumber","toGMTString","protocols","_audioHostURL","_signalingURL","_turnControlURL","_eventIngestionURL","urlRewriter","p7v","pkcs7asn1","encryptedContentInfoValidator","signerValidator","fileName","lineNumber","columnNumber","defineBuiltInAccessor","regExpFlags","RegExpPrototype","INDICES_SUPPORT","calls","addGetter","chr","pairs","dotAll","ignoreCase","multiline","sticky","hasIndices","SimulcastTransceiverController","MID_LEVEL_NAME","_bitrateKbps","sendEncodings","fromEncodingParams","toEncodingParams","arity","argumentsLength","BackgroundFilterProcessor_1","BackgroundBlurVideoFrameProcessorDelegate_1","BackgroundBlurProcessorProvided","validateOptions","initOnFirstExecution","ImageData","sourceHeight","canvas","supportsBlurFilter","setEventController","publishBackgroundFilterEvent","backgroundFilterEventAttributes","backgroundBlurEnabled","backgroundBlurStrength","backgroundReplacementEnabled","backgroundFilterVersion","initConnectionState","sp","entity","ConnectionEnd","cipherState","server_write_key","client_write_key","server_write_IV","client_write_IV","cipherFunction","decrypt_aes_cbc_sha1","encrypt_aes_cbc_sha1","macLength","mac_length","macFunction","hmac_sha1","record","mac","macKey","updateSequenceNumber","Versions","TLS_1_0","TLS_1_1","encrypt_aes_cbc_sha1_padding","decrypt_aes_cbc_sha1_padding","paddingLength","macLen","mac2","mac1","compareMacs","CipherSuites","initSecurityParameters","bulk_cipher_algorithm","BulkCipherAlgorithm","cipher_type","CipherType","enc_key_length","block_length","fixed_iv_length","record_iv_length","mac_algorithm","MACAlgorithm","mac_key_length","Response","redirectCount","numRetries","maxRedirects","cacheNextPageTokens","moreResults","exprs","outputToken","expr","jsx","jsxs","reflectGetProto","originalGetProto","getDunderProto","getMethod","isNullOrUndefined","toLength","ENVIRONMENT","arraySlice","validateArgumentsLength","WRAP","scheduler","hasTimeArg","firstParamIndex","forEachArray","forEachString","forEachObject","NATIVE_WEAK_MAP","createNonEnumerableProperty","sharedKey","OBJECT_ALREADY_INITIALIZED","facade","STATE","enforce","getterFor","VideoPriorityBasedPolicyConfig","networkIssueResponseDelayFactor","networkIssueRecoveryDelayFactor","currentNetworkEvent","bandwidthDecreaseTimestamp","referenceBitrate","previousNetworkEvent","getSubscribeDelay","subscribeDelay","MINIMUM_DELAY_MS","MAXIMUM_DELAY_MS","responseFactor","UnstableNetworkPreset","StableNetworkPreset","jQuery","prng_aes","_prng_aes_output","_prng_aes_buffer","spawnPrng","ctx","formatKey","_expandKey","formatSeed","increment","_ctx","_crypto","msCrypto","collectInt","_navBytes","collect","mousemove","clientX","clientY","keypress","charCode","ReceiveAudioInputTask","SignalingClientEventType","rpcImpl","requestDelimited","responseDelimited","rpcCall","requestCtor","responseCtor","endedByRPC","off","CheckAudioConnectivityFeedback","$isDisjointFrom","isDisjointFrom","$propertyIsEnumerable","NASHORN_BUG","FUNC_TYPE","UNDEF_TYPE","OBJ_TYPE","STR_TYPE","MAJOR","MODEL","NAME","VENDOR","VERSION","ARCHITECTURE","CONSOLE","MOBILE","TABLET","SMARTTV","WEARABLE","AMAZON","APPLE","ASUS","BLACKBERRY","BROWSER","CHROME","FIREFOX","GOOGLE","HUAWEI","LG","MICROSOFT","MOTOROLA","OPERA","SAMSUNG","SHARP","SONY","XIAOMI","ZEBRA","FACEBOOK","CHROMIUM_OS","MAC_OS","SUFFIX_BROWSER","enumerize","str1","str2","lowerize","rgxMapper","arrays","strMapper","windowsVersionMap","cpu","engine","EDGE","_navigator","_ua","_uach","userAgentData","_rgxmap","mergedRegexes","_isSelfNav","getBrowser","_browser","brave","isBrave","getCPU","_cpu","getDevice","mobile","standalone","maxTouchPoints","getEngine","_engine","getOS","_os","getUA","setUA","CPU","DEVICE","ENGINE","OS","Zepto","GlobalMetricReport_1","ClientMetricReport","overriddenObservableMetrics","identityValue","decoderLossPercent","concealedSamples","totalSamplesReceived","packetLossPercent","sourceMetricName","sentOrReceived","lost","jitterBufferMs","jitterBufferDelay","jitterBufferEmittedCount","intervalSeconds","diff","secondsToMilliseconds","averageTimeSpentPerSecondInMilliseconds","averageCpuQualityLimitationDurationPerSecondInMilliseconds","previousValue","isHardwareImplementation","implName","hasHwName","isFallback","globalMetricMap","retransmittedBytesSent","VIDEO_RETRANSMIT_BITRATE","totalEncodedBytesTarget","VIDEO_TARGET_ENCODER_BITRATE","totalPacketSendDelay","VIDEO_BUCKET_DELAY_MS","packetsDiscardedOnSend","SOCKET_DISCARDED_PPS","VIDEO_AVAILABLE_RECEIVE_BANDWIDTH","availableOutgoingBitrate","VIDEO_AVAILABLE_SEND_BANDWIDTH","currentRoundTripTime","STUN_RTT_MS","audioLevel","RTC_MIC_AUDIO_LEVEL","audioUpstreamMetricMap","jitter","RTC_MIC_JITTER_MS","RTC_MIC_PPS","bytesSent","RTC_MIC_BITRATE","roundTripTime","RTC_MIC_RTT_MS","RTC_MIC_FRACTION_PACKET_LOST_PERCENT","audioDownstreamMetricMap","decoderLoss","RTC_SPK_FRACTION_DECODER_LOSS_PERCENT","packetsReceived","RTC_SPK_PPS","RTC_SPK_FRACTION_PACKET_LOST_PERCENT","RTC_SPK_JITTER_MS","RTC_SPK_JITTER_BUFFER_MS","bytesReceived","RTC_SPK_BITRATE","RTC_SPK_AUDIO_LEVEL","RTC_SPK_TOTAL_LOST","RTC_SPK_TOTAL_EXPECTED","RTC_SPK_TOTAL_RECOVERED_RED","RTC_SPK_TOTAL_RECOVERED_FEC","videoUpstreamMetricMap","VIDEO_SENT_RTT_MS","VIDEO_NACKS_RECEIVED","pliCount","VIDEO_PLIS_RECEIVED","firCount","VIDEO_FIRS_RECEIVED","framesPerSecond","VIDEO_INPUT_FPS","framesEncoded","VIDEO_ENCODE_FPS","VIDEO_SENT_PPS","VIDEO_SENT_FRACTION_PACKET_LOST_PERCENT","VIDEO_SENT_BITRATE","qpSum","VIDEO_SENT_QP_SUM","frameHeight","VIDEO_ENCODE_HEIGHT","frameWidth","VIDEO_ENCODE_WIDTH","VIDEO_SENT_JITTER_MS","totalEncodeTime","VIDEO_ENCODE_MS","encoderImplementation","VIDEO_ENCODER_IS_HARDWARE","qualityLimitationDurations","VIDEO_QUALITY_LIMITATION_DURATION_CPU","VIDEO_CODEC_DEGRADATION_HIGH_ENCODE_CPU","VIDEO_CODEC_DEGRADATION_ENCODE_FAILURE","videoInputWidth","VIDEO_INPUT_WIDTH","videoInputHeight","VIDEO_INPUT_HEIGHT","videoDownstreamMetricMap","VIDEO_RECEIVED_PPS","VIDEO_RECEIVED_FRACTION_PACKET_LOST_PERCENT","framesReceived","VIDEO_RECEIVED_FPS","framesDecoded","VIDEO_DECODE_FPS","VIDEO_NACKS_SENT","VIDEO_FIRS_SENT","VIDEO_PLIS_SENT","VIDEO_RECEIVED_BITRATE","VIDEO_RECEIVED_JITTER_MS","VIDEO_JITTER_BUFFER_MS","VIDEO_RECEIVED_QP_SUM","VIDEO_DECODE_HEIGHT","VIDEO_DECODE_WIDTH","totalDecodeTime","VIDEO_DECODE_MS","decoderImplementation","VIDEO_DECODER_IS_HARDWARE","totalFreezesDuration","VIDEO_FREEZE_DURATION","freezeCount","VIDEO_FREEZE_COUNT","totalPausesDuration","VIDEO_PAUSE_DURATION","pauseCount","VIDEO_PAUSE_COUNT","VIDEO_DROPPED_FPS","videoRenderWidth","VIDEO_RENDER_WIDTH","videoRenderHeight","VIDEO_RENDER_HEIGHT","VIDEO_ENCODER_NAME","VIDEO_DECODER_NAME","observableVideoMetricSpec","videoUpstreamBitrate","media","videoUpstreamPacketsSent","videoUpstreamPacketLossPercent","videoUpstreamFramesEncodedPerSecond","videoUpstreamFramesInputPerSecond","videoUpstreamFrameHeight","videoUpstreamFrameWidth","videoUpstreamJitterMs","videoUpstreamRoundTripTimeMs","videoUpstreamEncoderImplementation","videoUpstreamTotalEncodeTimePerSecond","videoUpstreamCpuQualityLimitationDurationPerSecond","videoDownstreamBitrate","videoDownstreamPacketLossPercent","videoDownstreamPacketsReceived","videoDownstreamFramesDecodedPerSecond","videoDownstreamFrameHeight","videoDownstreamFrameWidth","videoDownstreamJitterMs","videoDownstreamDelayMs","observableMetricSpec","audioPacketsReceived","audioPacketsReceivedFractionLoss","audioDecoderLoss","audioPacketsSent","audioPacketLossPercent","audioUpstreamRoundTripTimeMs","videoPacketSentPerSecond","audioUpstreamJitterMs","audioDownstreamJitterMs","nackCountReceivedPerSecond","currentRoundTripTimeMs","audioDownstreamLevel","audioUpstreamLevel","getObservableMetricValue","getObservableVideoMetricValue","ssrcNum","ssrcs","metric","getObservableVideoMetrics","videoStreamMetrics","metricValue","hasBandwidthPriorityCallback","waitIntervalMs","updateIntervalMs","speakerScores","speakerMuteState","detectorCallbackToHandler","detectorCallbackToScoresTimer","detectorCallbackToActivityTimer","hasBandwidthPriority","mostRecentUpdateTimestamp","needUpdate","activeSpeakers","updateActiveSpeakers","sortedSpeakers","activeScore","sortedAttendeeIds","updateScore","present","_signalStrength","activityTimer","scoresTimer","resolveRegionalEndpointsFlag","TemporaryCredentials","SecretAccessKey","makeUnauthenticatedRequest","assumeRoleWithSAML","optInRegionalEndpoint","stsRegionalEndpoints","sharedConfig","insertPoint","regionalEndpoint","updateEndpoint","WellKnownSymbolsStore","createWellKnownSymbol","withoutSetter","NoVideoDownlinkBandwidthPolicy_1","DefaultSimulcastUplinkPolicyForContentShare_1","contentAudioVideo","attendeeAudioVideo","setupContentShareEvents","createContentShareMeetingSessionConfigure","contentShareConfiguration","acquireScreenCaptureDisplayInputStream","toggleMediaStream","forEachContentShareObserver","contentShareDidPause","contentShareDidUnpause","audioVideoDidStart","audioVideoDidStop","_sessionStatus","contentShareTile","contentShareDidStop","_externalUserId","_dropped","isContentAttendee","isSelfAttendee","cap","contentShareDidStart","SimulcastContentShareTransceiverController_1","_logger","enableUhdContent","defaultHiTargetBitrateKbps","defaultLowTargetBitrateKbps","_h","_j","_l","_observerFunc","isPresentInMap","VideoEncodingCpuConnectionHealthPolicy_1","VideoEncodingFramerateConnectionHealthPolicy_1","minHealth","maxHealth","initialHealth","noSignalThresholdTimeMs","zeroBarsNoSignalTimeMs","oneBarWeakSignalTimeMs","twoBarsTimeMs","threeBarsTimeMs","fourBarsTimeMs","fiveBarsTimeMs","goodSignalTimeMs","missedPongsLowerThreshold","sendingAudioFailureSamplesToConsider","sendingAudioFailureInitialWaitTimeMs","videoEncodingHealthPolicies","consecutiveHighEncodeCpuThreshold","highEncodeCpuMsThreshold","highEncodeCpuMsPerFrameThreshold","consecutiveVideoEncodingFailureThreshold","propertyIsEnumerableModule","createPropertyDescriptor","toPropertyKey","IE8_DOM_DEFINE","$getOwnPropertyDescriptor","foldHeader","insertSpace","insert","ltrim","contentDomain","dekInfo","rMessage","rHeader","rCRLF","li","nl","__CANCEL__","MAXBITS","lbase","lext","dbase","dext","lens_index","codes","table_index","incr","curr","drop","huff","offs","RedundantAudioEncoder","maxRedPacketSizeBytes","maxAudioPayloadSizeBytes","maxRedTimestampOffset","redHeaderSizeBytes","redLastHeaderSizeBytes","redPacketizationTime","redPacketDistance","maxRedEncodings","redMaxRecoveryDistance","maxEncodingHistorySize","redundancyEnabled","lossReportInterval","maxOutOfOrderPacketDistance","OPUS_BAD_ARG","OPUS_INVALID_PACKET","OPUS_MAX_OPUS_FRAMES","OPUS_MAX_FRAME_SIZE_BYTES","encodingHistory","opusPayloadType","redPayloadType","initializePacketLogs","initializeWorker","encoder","RTCRtpScriptTransformer","onrtctransform","transformer","setupSenderTransform","setupReceiverTransform","setupPassthroughTransform","setRedPayloadType","setOpusPayloadType","setNumRedundantEncodings","setRedundancyEnabled","shouldLog","packetLoss","recommendedRedundantEncodings","pipeTo","TransformStream","senderTransform","pipeThrough","receivePacketLogTransform","enqueueAudioFrameIfPayloadSizeIsValid","frame","enqueue","getMetadata","primaryPayloadBuffer","getPrimaryPayload","encodedBuffer","primaryTimestamp","splitEncodings","getFecInfo","primarySequenceNumber","payloadSizeBytes","totalPayloadSizeBytes","totalHeaderSizeBytes","primaryPayloadSizeBytes","payloadOffset","gotLastBlock","redundantEncodingBlockLengths","redundantEncodingTimestamps","getUint16","isRedundant","redundantPayloadOffset","redundantPayloadBuffer","hasFec","opusPacketHasFec","primaryPayloadOffset","primaryPayload","primaryPayloadSize","headerSizeBytes","bytesAvailable","redundantEncodingPayloads","redundantTimestamp","uint32WrapAround","findTimestamp","redundantEncodingSizeBytes","redPayloadBuffer","redPayloadView","redPayloadOffset","timestampDelta","redPayloadArray","updateEncodingHistory","maxTimestampDelta","packet","opusPacketIsCeltOnly","opusPacketHasVoiceActivity","packetLogSize","primaryPacketLog","windowSize","redRecoveryLog","fecRecoveryLog","frameMetadata","updateLossStats","updateRedStats","updateFecStats","maybeReportLossStats","synchronizationSource","newestSequenceNumber","addTimestamp","int16","hasTimestamp","removeFromRecoveryWindows","removeTimestamp","fecTimestamp","lastLossReportTimestamp","shouldReportStats","packetLog","removed","opusPacketGetSamplesPerFrame","sampleRateHz","numSamples","frameSizeOption","opusNumSilkFrames","frameLengthMs","opusPacketGetNumChannels","opusParseSize","remainingBytes","sizeBytes","opusPacketParseImpl","selfDelimited","tocByte","frameOffsets","frameSizes","packetLenBytes","numFrames","numBytesParsed","paddingBytes","cbr","toc","lastSizeBytes","frameCountByte","paddingCountByte","numPaddingBytes","opusPacketParse","numSilkFrames","opusFrameOffsets","opusFrameSizes","numOpusFrames","CheckAudioOutputFeedback","actualApply","streamParameters","outputCanvas","configureCanvasPipeline","getInferenceInputData","inferenceCtx","horizontalResizeScalar","verticalResizeScalar","getImageData","SEGMENTATION_MODEL","configureForStreamParameters","backgroundReplacementCanvas","resizedCanvas","inferenceCanvas","willReadFrequently","getBackgroundReplacementCanvas","loadReplacementBackground","effectConfig","imageURL","backgroundReplacement","backgroundImageURL","defaultColor","backgroundImage","loadImage","backgroundReplacementImage","resizeAndSetReplacementImage","resizeAndSetReplacementColor","resizedCtx","fillStyle","fillRect","image","imageBlob","img","Image","onload","superCtor","super_","TempCtor","config1","config2","valueFromConfig2Keys","mergeDeepPropertiesKeys","defaultToConfig2Keys","directMergeKeys","getMergedValue","isPlainObject","mergeDeepProperties","axiosKeys","otherKeys","localAttendeeId","localExternalUserId","attendeeIdChangesCallbacks","setCanUnmuteLocalAudioCallbacks","muteAndUnmuteLocalAudioCallbacks","volumeIndicatorState","attendeeIdToExternalUserId","volumeIndicatorCallbacks","localSignalStrengthChangeCallbacks","fatalErrorCallbacks","sendDataMessageCallbacks","receiveDataMessageCallbacks","SIZE","MAX","slab","adder","ENTRY","mapFn","mapping","nextItem","voicefocus_1","LoggerAdapter_1","VoiceFocusTransformDevice_1","VoiceFocusTransformDeviceDelegate_1","VoiceFocusDeviceTransformer","defaultFetchBehavior","vfLogger","augmentSpec","isIFramed","allowIFrame","Meeting","meetingFeaturesAllowsES","MeetingFeatures","Audio","EchoReduction","forbiddenConfig","forbiddenSpec","createTransformDevice","vf","allocateVoiceFocus","destroyVoiceFocus","currentSDKAssetGroup","pendingVoiceFocus","createVoiceFocus","majorMinorVersion","Api","clientCount","region_utils","loadServiceClass","isGlobalRegion","useDualstack","ServiceClass","originalConfig","svc","_clientId","svcConfig","serviceIdentifier","Config","endpointFromTemplate","setEndpoint","addDefaultMonitoringListeners","clientSideMonitoring","_clientSideMonitoring","publisher","addNamedListener","eventHandler","serviceConfig","apiConfig","defineServiceApi","apiVersions","getLatestServiceClass","getLatestServiceVersion","isType","selectedVersion","customizeRequests","customRequestHandler","addAllRequestListeners","attachMonitoringEmitter","toUnauthenticated","waitFor","serviceInterface","CorePost","Logger","apiCallEvent","monitoringEvent","MaxRetriesExceeded","UserAgent","getUserAgent","FinalHttpStatusCode","FinalAwsException","FinalAwsExceptionMessage","FinalSdkException","FinalSdkExceptionMessage","apiAttemptEvent","Fqdn","HttpStatusCode","_unAuthenticated","AccessKey","XAmznRequestId","XAmzRequestId","XAmzId2","attemptFailEvent","AwsException","AwsExceptionMessage","SdkException","SdkExceptionMessage","attemptTimestamp","attemptStartRealTime","attemptLatency","callStartRealTime","callTimestamp","attemptCount","addToHead","realClock","AttemptLatency","AttemptCount","latency","Latency","getSigningName","getSignerClass","getVersion","Query","RestJson","RestXml","successfulResponse","networkingError","expiredCredentialsError","throttledError","clockSkewError","applyClockOffset","newServerTime","sslEnabled","throwException","paginator","defineMethods","_serviceMap","addVersions","identifier","Publisher","publisherConfig","superclass","setApi","isApi","hasService","attachOn","baseClass","getNanoSeconds","hrtime","loadTime","moduleLoadTime","nodeLoadTime","upTime","hr","uptime","INDICES","STATES","VoiceFocusWorkerBufferNode","Atomics","notify","availableTypedArrays","getProto","typedArrays","$slice","$indexOf","superProto","trySlices","tryTypedArrays","DefaultDeviceController_1","ContentShareMediaStreamBroker","_mediaStream","streamConstraints","mandatory","chromeMediaSource","chromeMediaSourceId","getDisplayMedia","screenCaptureDisplayMediaConstraints","getDisplayMediaAudioCaptureSupport","defaultFrameRate","ClientMetricReportMediaType","webpackAsyncContext","__webpack_require__","validateRegionalEndpointsFlagValue","errorOptions","profile","getProfilesFromSharedConfig","iniLoader","AWS_PROFILE","defaultProfile","withQuery","withHeaders","withRequestHeaders","hasQuery","URLSearchParams","HEAD_OPTIONS","redirected","CSPMonitor","register","shouldRegisterCSPMonitor","added","unregister","loggers","removeLogger","blockedURI","violatedDirective","originalPolicy","documentURI","sourceFile","encryptOp","sbox","isbox","rcon","mix","imix","Nb","xtime","e2","e4","e8","sx","sx2","ime","iNk","Nk","m0","m1","m2","m3","wnew","wi","a2","Nr","rsaPrivateKeyValidator","rsaPublicKeyValidator","digestInfoValidator","emsaPkcs1v15encode","oidBytes","digestInfo","_modPow","pub","dP","dQ","qInv","xp","xq","_encodePkcs1_v1_5","bt","eb","padByte","padNum","numZeros","padBytes","_decodePkcs1_v1_5","ml","_bnToBytes","_getMillerRabinTests","_detectNodeCrypto","_detectSubtleCrypto","_detectSubtleMsCrypto","_intToUint8Array","yhex","ed","xhex","createKeyPairGenerationState","eInt","qBits","pBits","pqState","stepKeyPairGenerationState","p1","q1","phi","setPrivateKey","setPublicKey","modulusLength","publicExponent","publicKeyEncoding","privateKeyEncoding","priv","generateKey","exportKey","pkcs8","setRsaPublicKey","genOp","oncomplete","exportOp","keypair","generateKeyPairSync","getPrime","_generateKeyPair","schemeOptions","_parseAllDigestBytes","algorithmIdentifier","md2","sha224","setRsaPrivateKey","wrapRsaPrivateKey","rsaKey","privateKeyModulus","privateKeyPublicExponent","privateKeyPrivateExponent","privateKeyPrime1","privateKeyPrime2","privateKeyExponent1","privateKeyExponent2","privateKeyCoefficient","privateKeyToAsn1","privateKeyToRSAPrivateKey","rsaPublicKey","publicKeyModulus","publicKeyExponent","publicKeyToSubjectPublicKeyInfo","DefaultModality","_id","MODALITY_SEPARATOR","components","withModality","_parentTask","Transcript_1","TranscriptionStatus_1","TranscriptionStatusType_1","TranscriptItemType_1","TranscriptionStatusTypes","SdkTranscriptionStatus","STARTED","RESUMED","STOPPED","dataMessage","SdkTranscriptFrame","transcriptEvents","sdkTranscriptEvent","transcriptionStatusType","transcriptionStatus","eventTimeMs","eventTime","transcriptionRegion","transcriptionConfiguration","transcript","transcriptResult","channelId","isPartial","resultId","endTimeMs","endTime","alternatives","languageCode","languageIdentification","transcriptLanguageWithScore","alternative","transcriptAlternative","transcriptItem","speakerAttendeeId","speakerExternalUserId","vocabularyFilterMatch","stable","confidence","SdkTranscriptItem","PRONUNCIATION","PUNCTUATION","entities","transcriptEntity","DISCOVER_ENDPOINT","getOperationAuthtype","getIdentityType","addAsync","getCredentials","getToken","dnsHostRegex","uuid","validation","ParamValidator","isNonStreamingPayload","computeSha256","sha","getRequestPayloadShape","traceIdHeaderName","functionName","identityType","SignerClass","setServiceClientId","signedAt","queryErrorCode","httpResp","operationName","didCallback","errCode","executeSend","getInstance","httpOptions","handleRequest","_abortCallback","buffers","numBytes","correctClockSkew","extractRequestId","errno","getSystemErrorName","isDNSError","originalError","ansi","isTTY","censoredParams","filterSensitiveLog","buildMessage","subShapeName","subShape","unsetContentLength","_loggers","Operation","Paginator","serviceAbbreviation","serviceFullName","xmlNoDefaultLists","endpointoperation","hasRequiredEndpointDiscovery","TranscriptionStatusType","Protocol","Model","EndpointCache","endpointCacheSize","$Error","$EvalError","$RangeError","$ReferenceError","$SyntaxError","$URIError","$Function","getEvalledConstructor","expressionSyntax","$gOPD","throwTypeError","ThrowTypeError","calleeThrows","gOPDthrows","hasSymbols","$ObjectGPO","$ReflectGPO","needsEval","TypedArray","INTRINSICS","BigInt64Array","BigUint64Array","decodeURI","encodeURI","eval","Float16Array","Float32Array","FinalizationRegistry","Int8Array","Int16Array","Proxy","Reflect","Uint8ClampedArray","WeakRef","errorProto","doEval","gen","LEGACY_ALIASES","$concat","$spliceApply","$replace","$strSlice","rePropName","reEscapeChar","getBaseIntrinsic","allowMissing","intrinsicName","quote","subString","stringToPath","intrinsicBaseName","intrinsic","intrinsicRealName","skipFurtherCaching","isOwn","hexTable","arrayToObject","plainObjects","combine","compacted","compactQueue","defaultDecoder","charset","strWithoutPlus","defaultEncoder","$0","isRegExp","maybeMap","mapped","allowPrototypes","mergeTarget","targetItem","CreatePeerConnectionTask","removeTrackAddedEventListener","removeTrackRemovedEventListeners","trackEvents","removeVideoTrackEventListeners","trackAddedHandler","addRemoteVideoTrack","addPeerConnectionEventLogger","connectionState","iceServers","credential","credentialType","iceTransportPolicy","bundlePolicy","requiresBundlePolicy","sdpSemantics","RTCPeerConnection","skipAdding","trackEvent","removeRemoteVideoTrack","endEvent","trackRemovedHandler","removeVideoTrackEventListener","REMOVE_HANDLER_INTERVAL_MS","MapPrototype","input_token","limit_key","more_results","output_token","result_key","TranscriptItemType","reseeds","generated","keyBytes","_reseedSync","_seed","needed","seedFileSync","_2powK","seedBytes","defaultSeedFile","entropy","QuotaExceededError","generateSync","seedFile","_reseed","randomBytes","registerWorker","WebSocketReadyState_1","isSignedUrl","WebSocket","binaryType","CONNECTING","OPEN","Open","CLOSING","Closing","CLOSED","Closed","cachedSecret","v4Identifier","shouldCache","emptyCache","setFunctionLength","callBindBasic","applyBind","originalFunction","adjustedLength","DefaultAudioVideoFacade_1","ContentShareMediaStreamBroker_1","DefaultContentShareController_1","CSPMonitor_1","_eventController","_configuration","checkBrowserSupportAndFeatureConfiguration","_deviceController","contentShareMediaStreamBroker","audioVideoFacade","contentShare","supportString","isSimulcastUplinkPolicy","supportsScalableVideoCoding","BackgroundReplacementVideoFrameProcessorDelegate_1","BackgroundReplacementFilter","replacementBlob","setImageBlob","replacementImage","createReplacementObjectUrl","loadImageExecutor","imageUrl","crossOrigin","revokeReplacementObjectUrl","replacementObjectUrl","loadAssets","asCanvasImageSource","asCanvasElement","Presigner","_operations","modifyInputMembers","modifiedInput","convertPostToGet","generateURI","httpPath","getSynthesizeSpeechUrl","SyntaxError","detect_browser_1","DefaultBrowserBehavior","FALLBACK_BROWSER","detect","uaParserResult","browserSupport","electron","firefox","ios","safari","opera","samsung","crios","fxios","chromeLike","webkitBrowsers","osMajorVersion","engineMajorVersion","hasWebKitWebRTC","isFirefox","supportsCanvasCapturedStreamPlayback","isIOSSafari","isIOSChrome","isIOSFirefox","isIOSEdge","MIN_IOS_SUPPORT_CANVAS_STREAM_PLAYBACK","MIN_IOS_NON_SAFARI_SUPPORT_CANVAS_STREAM_PLAYBACK","supportsAudioRedundancy","isAndroid","isPixel3","isSamsungInternet","isEdge","doesNotSupportMediaDeviceLabels","isSimulcastSupported","supportDownlinkBandwidthEstimation","supportedVideoCodecs","pc","HTMLAudioElement","disableResolutionScaleDown","disable480pResolutionScaleDown","isIOS","requiresVideoPlayWorkaround","isVideoFxSupportedBrowser","_sha","endpointPath","operationPath","queryStringSet","paramValue","plus","httpMethod","populateMethod","populateURI","memberValue","populateHeaders","isLocationName","DefaultVideoFrameProcessorPipeline_1","DefaultVideoTransformDevice","pipe","newTransformDevice","setInputMediaStream","inputMediaStream","getActiveOutputMediaStream","deviceIsMediaStream","processingDidStart","processingLatencyTooHigh","latencyMs","processingDidFailToStart","processingDidStop","URIError","ignoreDuplicateOf","DataMessage_1","SendAndReceiveDataMessagesTask","sendDataMessageHandler","uint8Data","validateDataMessage","SdkDataMessagePayload","messageFrame","SdkDataMessageFrame","sendDataMessage","realtimeSubscribeToSendDataMessage","realtimeUnsubscribeFromSendDataMessage","DATA_MESSAGE","ingestTimeNs","realtimeReceiveDataMessage","TOPIC_REGEX","DATA_SIZE","CanvasVideoFrameBuffer_1","BackgroundFilterFrameCounter_1","DeferredObservable","whenNext","BackgroundFilterProcessor","filterType","canvasVideoFrameBuffer","mask$","sourceWidth","frameNumber","videoFramesPerFilterUpdate","createWorkerPromise","loadModelPromise","validateSpec","initCPUMonitor","frameCounter","cpuMonitor","BackgroundFilterMonitor","reduceCPUUtilization","updateVideoFramesPerFilterUpdate","increaseCPUUtilization","handleLoadModel","handleWorkerEvent","evt","wasmPath","simdPath","hscale","vscale","scaledCtx","imageData","maskPromise","monitoringPeriodMillis","lastCPUChangeTimestamp","XHRClient","errCallback","xhr","XMLHttpRequest","headersEmitted","HEADERS_RECEIVED","getAllResponseHeaders","DONE","finishRequest","xhrAsync","setRequestHeader","xhrWithCredentials","withCredentials","responseType","rawHeaders","ab","responseText","_userAgent","setUserAgent","getUserAgentHeaderName","appendToUserAgent","agentPartial","queryStringParse","endpointStr","newEndpoint","createUnbufferedStream","singleton","keysIter","pbe","encryptedPrivateKeyValidator","PBES2AlgorithmsValidator","pkcs12PbeParamsValidator","prfOidToMessageDigest","prfOid","prfAlgorithm","prfAlgorithmToMessageDigest","encryptPrivateKeyInfo","saltSize","encryptionAlgorithm","countBytes","encOid","cipherFn","createPbkdf2Params","saltBytes","generatePkcs12Key","decryptPrivateKeyInfo","encryptionOid","getCipher","encryptionParams","encrypted","encryptedPrivateKeyToPem","epki","encryptedPrivateKeyFromPem","encryptRsaPrivateKey","legacy","opensslDeriveBytes","decryptRsaPrivateKey","rc2","iter","passBuf","Slen","Plen","Inew","getCipherForPBES2","getCipherForPKCS12PBE","supportedOids","kdfOid","kdfSalt","kdfIterationCount","encIv","dIvLen","digests","CleanRestartedSessionTask","implementation","loadMasterCredentials","assumeRole","getSessionToken","resolveParameter","resolveAndReplacePromise","rejectPromise","rejectError","rejectAndReplacePromise","isBinary","typeName","transformData","throwIfCancellationRequested","cancelToken","transformRequest","common","adapter","transformResponse","kMaxLength","latin1Write","_augment","species","objectWriteUInt16","objectWriteUInt32","sliceLen","stringtrim","VideoEncodingConnectionHealthPolicyName_1","VideoEncodingCpuConnectionHealthPolicy","VideoEncodingCpuHealth","consecutiveHighEncodeCpuCnt","videoEncodingTimeIsHigh","minimumHealth","maximumHealth","a_lookUpTable","return_array","a_index","_len3","_key3","_len4","_key4","parsedMessage","messageType","parseError","eventType","eventModel","eventPayloadMemberName","payloadShape","eventHeaderNames","SHARED","copyright","license","TranscriptEvent_1","transcriptEventCallbacks","subscribeToTranscriptEvent","TRANSCRIPTION_DATA_MESSAGE_TOPIC","transcriptEvent","TranscriptEventConverter","transcriptEventCallback","unsubscribeFromTranscriptEvent","replacement","isForced","detection","normalize","POLYFILL","NATIVE","hasElementType","Element","hasMap","hasSet","hasArrayBuffer","_md","__exportStar","textEncoderFromUtf8","surrogatePair","jsFromUtf8","textEncoderToUtf8","decoded","byte","nextByte","jsToUtf8","AudioProfile","fullbandSpeechMono","fullbandMusicMono","fullbandMusicStereo","BufferReader","Reader","_slice","classofRaw","_ipadding","_opadding","keylen","getMac","mapSizeDescriptor","mapSize","mapForEach","setSizeDescriptor","setSize","setForEach","weakMapHas","weakSetHas","weakRefDeref","deref","booleanValueOf","objectToString","$match","$toUpperCase","$toLowerCase","$test","$join","$arrSlice","$floor","bigIntValueOf","gOPS","symToString","hasShammedSymbols","isEnumerable","gPO","addNumericSeparator","sepRegex","int","intStr","dec","utilInspect","inspectCustom","custom","inspectSymbol","quotes","single","quoteREs","wrapQuotes","defaultStyle","quoteStyle","quoteChar","canTrustToString","inspect_","seen","maxStringLength","customInspect","numericSeparator","inspectString","bigIntStr","maxDepth","baseIndent","prev","getIndent","noIndent","newOpts","nameOf","arrObjKeys","symString","markBoxed","HTMLElement","nodeName","isElement","childNodes","xs","singleLineValues","indentedJoin","isError","mapParts","collectionOf","setParts","weakCollectionOf","isWeakRef","isBigInt","isBoolean","isDate","protoTag","stringTag","quoteRE","lowbyte","lineJoiner","isArr","symMap","syms","isStandardArguments","isLegacyArguments","callee","supportsStandardArguments","TargetDisplaySize","VideoLogEvent","AcceptorStateMachine","runTo","finalState","bindObject","inputError","fail","accept","addState","acceptState","failState","listGetNode","isDelete","$o","deletedNode","objects","listDelete","listGet","listHas","listSet","SAMLCredentials","getAlgorithm","BlockCipher","_finish","_op","_decrypt","SignalingClientEvent_1","DefaultSignalingClient","webSocket","unloadHandler","closeEventHandler","deactivatePageUnloadHandler","resetConnection","sendEvent","serviceConnectionRequestQueue","connectionRequestQueue","audioSessionId","generateNewAudioSessionId","pingPongFrame","sendMessage","joinFrame","SdkJoinFrame","protocolVersion","SdkJoinFlags","HAS_STREAM_UPDATE","sdkClientDetails","platformName","platformVersion","clientSource","chimeSdkVersion","clientUtcOffset","getFormattedOffset","getTimezoneOffset","appVersion","clientDetails","SdkClientDetails","wantsCompressedSdp","CLIENT_SUPPORTS_COMPRESSION","convertServerSideNetworkAdaptionEnumToSignaled","JOIN","subscribeFrame","SdkSubscribeFrame","RX","streamDescription","convertSignalingClientVideoSubscriptionConfiguration","SUBSCRIBE","remoteVideoUpdate","addedOrUpdated","SdkRemoteVideoUpdateFrame","addedOrUpdatedVideoSubscriptions","removedVideoSubscriptionMids","REMOTE_VIDEO_UPDATE","signalConfig","SdkVideoSubscriptionConfiguration","SdkVideoQualityAdaptationPreference","BALANCED","MAINTAIN_FRAMERATE","MAINTAIN_RESOLUTION","LEAVE","SdkLeaveFrame","CLIENT_METRIC","clientMetric","isClosing","CLOSE_EVENT_TIMEOUT_MS","CloseEvent","wasClean","bubbles","wasOpened","AUDIO_CONTROL","audioControl","SdkAudioControlFrame","streamIds","PAUSE","SdkPauseResumeFrame","RESUME","prependWithFrameTypeRTC","WebSocketSendMessageFailure","WebSocketSentMessage","WebSocketSkippedMessage","receiveMessage","inBuffer","ProtocolDecodeFailure","stripFrameTypeRTC","frameType","FRAME_TYPE_RTC","outBuffer","setUpEventListeners","WebSocketConnecting","WebSocketMessage","activatePageUnloadHandler","GlobalAny","signaledCredentials","SdkMeetingSessionCredentials","primaryMeetingJoin","SdkPrimaryMeetingJoinFrame","PRIMARY_MEETING_JOIN","primaryMeetingLeave","SdkPrimaryMeetingLeaveFrame","PRIMARY_MEETING_LEAVE","processBlock","outView","NotFoundError","_statusCode","AudioAuthenticationRejected","AudioCallAtCapacity","AudioInternalServerError","AudioServiceUnavailable","AudioDisconnected","VideoCallAtSourceCapacity","SignalingBadRequest","SignalingInternalServerError","ConnectionHealthReconnect","RealtimeApiFailed","TaskFailed","NoAttendeePresent","SignalingChannelClosedUnexpectedly","Left","AudioJoinedFromAnotherDevice","MeetingEnded","TURNCredentialsForbidden","AudioAttendeeRemoved","VideoCallSwitchToViewOnly","AudioVideoWasRemovedFromPrimaryMeeting","AudioVideoDisconnectedWhilePromoted","AudioDisconnectAudio","exhaustiveCheck","fromSignalingStatus","AUDIO_STATUS","audioStatus","fromAudioStatus","userArn","messagingSessionId","reconnectShortBackoffMs","reconnectLongBackoffMs","prefetchOn","prefetchSortBy","generateSessionId","__spreadArray","ar","BrowserInfo","NodeInfo","SearchBotDeviceInfo","bot","BotInfo","ReactNativeInfo","SEARCHBOT_OS_REGEX","REQUIRED_VERSION_PARTS","userAgentRules","operatingSystemRules","parseUserAgent","product","getNodeVersion","matchUserAgent","matched","uaMatch","matchedRule","versionParts","ii","createVersionParts","detectOS","searchBotMatch","passed","Bearer","addAll","signedUrlBuilder","signerClass","unixTimestamp","signedUrlSigner","Presign","SET_CONTENT_LENGTH","COMPUTE_SHA256","urlFormat","_rng","_bytesToUuid","NScaleVideoUplinkBandwidthPolicy","scaleResolution","numberOfPublishedVideoSources","idealMaxBandwidthKbps","enableHighResolutionFeature","isUsingSVCCodec","encodingMapKey","hasLocalVideo","updateOptimalParameters","getStreamCaptureSetting","getNumberOfPublishedVideoSources","rate","setSVCEnabled","updateTransceiverController","shouldUpdateEndcodingParameters","transceiverEncoding","scalabilityMode","setting","targetHeight","targetHeightArray","SVCCodecNames","enhanceError","BackgroundFilterVideoFrameProcessor_1","ConsoleLogger_1","NoOpVideoFrameProcessor_1","BackgroundReplacementFilter_1","NoOpBackgroundReplacementProcessor","BackgroundReplacementVideoFrameProcessor","resolveOptionsAsync","toBlob","cmn","ff","gg","sourceData","buff","getUint32","CheckAudioInputFeedback","GeneratorFunction","isFnRegex","safeRegexTest","fnToStr","generatorFunc","getGeneratorFunc","settle","cookies","buildURL","buildFullPath","isURLSameOrigin","createError","requestData","requestHeaders","isFormData","Authorization","btoa","fullPath","paramsSerializer","onreadystatechange","responseURL","ontimeout","timeoutErrorMessage","clarifyTimeoutError","xsrfValue","xsrfCookieName","xsrfHeaderName","onDownloadProgress","onUploadProgress","environment","agent","ch","sortedKeys","ename","vals","readFileSync","toStream","Readable","_read","ini","currentSection","indexOfEqualsSign","makeAsync","expectedArgs","formatter","crc32Table","tbl","_continueReading","readAsArrayBuffer","iterFunction","dupe","webkitSlice","mozSlice","klass","newObject","isValue","cachedValue","responsePayload","fs","createReadStream","ResponseMetadata","RequestId","constructors","deletePromises","getPromisesDependency","isDualstackAvailable","dualstackAvailable","customBackoff","handleRequestWithRetries","sendRequest","filename","profiles","profilesFromConfig","configOptInEnv","loadFrom","isConfig","sharedConfigFileEnv","profilesFromCreds","sharedCredentialsFileEnv","profileNames","objectAssign","ARN","arnObject","imdsDisabledEnv","origSymbol","hasSymbolSham","nameTr","VideoEncodingConnectionHealthPolicyName","FullJitterLimitedBackoff_1","createWithLimit","VideoPriorityBasedPolicy_1","VideoAdaptiveProbePolicy","createConfig","newPreferences","containsContent","_preferences","$union","union","ReconnectionHealthPolicy_1","SendingAudioFailureConnectionHealthPolicy_1","UnusableAudioWarningConnectionHealthPolicy_1","MonitorTask","initialConnectionHealthData","prevSignalStrength","currentAvailableStreamAvgBitrates","hasSignalingError","presenceHandlerCalled","isResubscribeCheckPaused","pendingMetricsReport","checkAndSendWeakSignalEvent","signalStrength","isCurrentSignalBad","isPrevSignalBad","signalStrengthEventType","RedmicStartLoss","RedmicEndLoss","realtimeFatalErrorCallback","handleMeetingSessionStatus","realtimeAttendeeIdPresenceHandler","presentAttendeeId","generateBaseAudioVideoEventAttributes","meetingDurationMs","generateAudioVideoEventAttributesForReceivingAudioDropped","baseAttributes","reconnectionHealthPolicy","unusableAudioWarningHealthPolicy","sendingAudioFailureHealthPolicy","pauseResubscribeCheck","resumeResubscribeCheck","checkResubscribe","_tileState","availableSendBandwidth","nackCountPerSecond","needResubscribe","uplinkKbps","downlinkVideoStream","connectionHealthDidChange","connectionHealthData","applyHealthPolicy","connectionDidSuggestStopVideo","connectionDidBecomePoor","connectionDidBecomeGood","degradeVideoCodec","VideoEncodingFramerateHealth","healthPolicy","unhealthyCallback","healthyCallback","healthValue","healthIfChanged","handleBitrateFrame","serverAvailableOutgoingBitrate","isUnexpectedWebsocketCloseCode","isInternalServerFailureCloseCode","NOTIFICATION","notification","SdkNotificationFrame","NotificationLevel","WARNING","bitrateFrame","h264ConstrainedBaselineProfile","vp8","extendStatics","__extends","__assign","__rest","__decorate","decorators","decorate","__param","paramIndex","decorator","__metadata","metadataKey","metadataValue","__createBinding","k2","__values","__read","__spread","__spreadArrays","il","jl","__await","__asyncGenerator","asyncIterator","fulfill","__asyncDelegator","__asyncValues","__makeTemplateObject","cooked","__classPrivateFieldGet","privateMap","__classPrivateFieldSet","LITERALS","L_CODES","D_CODES","MAX_BITS","extra_lbits","extra_dbits","extra_blbits","bl_order","static_ltree","static_dtree","_dist_code","_length_code","MAX_MATCH","base_length","base_dist","StaticTreeDesc","static_tree","extra_bits","extra_base","elems","max_length","has_stree","static_l_desc","static_d_desc","static_bl_desc","TreeDesc","dyn_tree","stat_desc","max_code","d_code","put_short","pending_buf","send_bits","bi_valid","bi_buf","send_code","tree","bi_reverse","gen_codes","bl_count","next_code","init_block","dyn_ltree","dyn_dtree","bl_tree","END_BLOCK","opt_len","static_len","sym_next","bi_windup","smaller","_n2","_m2","pqdownheap","heap","heap_len","compress_block","ltree","dtree","lc","sym_buf","build_tree","stree","heap_max","gen_bitlen","xbits","scan_tree","curlen","prevlen","nextlen","max_count","min_count","REP_3_6","REPZ_3_10","REPZ_11_138","send_tree","static_init_done","_tr_stored_block","stored_len","_tr_init","tr_static_init","LENGTH_CODES","l_desc","d_desc","bl_desc","_tr_flush_block","opt_lenb","static_lenb","max_blindex","block_mask","detect_data_type","BL_CODES","build_bl_tree","send_all_trees","lcodes","dcodes","blcodes","rank","_tr_tally","sym_end","_tr_align","STATIC_TREES","bi_flush","VoiceFocusInlineNode","cpuWarningCount","onModuleBufferLoaded","onModuleLoaded","cpuWarningLastTriggered","namespace","V8_PROTOTYPE_DEFINE_BUG","ENUMERABLE","WRITABLE","Attributes","p12","pkcs12","pfxValidator","safeBagValidator","attributeValidator","certBagValidator","_getBagsByAttribute","safeContents","bagType","safeBags","bag","_decodePkcs7Data","_decryptSafeContents","encryptedContentAsn1","_decodeSafeContents","safeBag","decoder","bagId","_decodeBagAttributes","bagAttributes","bagAsn1","bagValue","pkcs8ShroudedKeyBag","keyBag","certBag","certId","x509Certificate","certAsn1","decodedAttrs","pkcs12FromAsn1","pfx","getBags","localKeyId","localKeyIdHex","friendlyName","getBagsByFriendlyName","getBagsByLocalKeyId","macKeyBytes","macAlgorithm","macSalt","macIterations","macDigest","authSafe","_decodeAuthenticatedSafe","toPkcs12Asn1","useMac","generateLocalKeyId","bagAttrs","pairedCert","certSafeBags","certBagAttrs","certSafeBag","certSafeContents","certCI","pkAsn1","keySafeContents","keyCI","macData","safe","macValue","endpointDiscoveryEnabledEnvs","getCacheKey","identifiers","marshallCustomIdentifiersHelper","endpointDiscoveryId","marshallCustomIdentifiers","optionalDiscoverEndpoint","endpoints","endpointCache","Address","endpointRequest","Identifiers","addApiVersionHeader","RETRY_CHECK","CachePeriodInMinutes","Endpoints","requestQueue","requiredDiscoverEndpoint","cacheKeyStr","getKeyString","pendingRequests","requestContext","invalidateCachedEndpoints","isFalsy","discoverEndpoint","endpointDiscoveryEnabled","hasCustomEndpoint","isEndpointDiscoveryRequired","isEnabled","configFile","sharedFileConfig","endpoint_discovery_enabled","resolveEndpointDiscoveryConfig","invalidateCachedEndpoint","SimulcastLayers","regionUtil","s3util","isArnInParam","inputMembers","validateArnService","parsedArn","_parsedArn","validateArnAccount","validateS3AccessPointArn","accessPoint","accessPointPrefix","dnsCompatibleBucketName","validateOutpostsArn","outpostId","validateOutpostsAccessPointArn","validateArnRegion","useArnRegion","loadUseArnRegionConfig","regionFromArn","clientRegion","allowFipsEndpoint","useAccelerateEndpoint","envName","configName","s3UseArnRegion","validatePopulateUriFromArn","s3ForcePathStyle","ipAddress","dots","isActive","hasSeenValidCandidatePairMetricsBefore","lastTotalBytesReceived","lastTotalStunMessagesReceived","receiveSignalStrengthChange","updateConnectionHealth","clockSkewMs","audiofractionPacketsLostInbound","potentialAudioPacketsReceived","potentialAudioFractionPacketsLostInbound","webrtcReport","totalBytesReceived","totalStunMessagedReceived","requestsReceived","responsesReceived","stunMessagesReceived","addToMinuteWindow","updateAudioPacketsSentInConnectionHealth","updateVideoEncodingHealth","isLocalVideoTileStarted","isHardwareEncoder","ReceiveVideoInputTask","checkAndApplyVideoConstraint","mediaStreamTrack","videoQualitySettings","resizeMode","applyConstraints","receiveEnabled","trackSettings","gopd","nonEnumerable","loose","VideoCodecCapability","cleanupFmtpLine","expectedPayloadType","codecCapabilityFmtpLine","fmtpLineFromSdp","cleanedLine","profileLevelIdRegex","h264BaselineProfile","h264MainProfile","h264HighProfile","h264ConstrainedHighProfile","h264","vp9","av1","SdkVideoCodecCapability","VP8","H264_BASELINE_PROFILE","H264_CONSTRAINED_BASELINE_PROFILE","H264_MAIN_PROFILE","H264_HIGH_PROFILE","H264_CONSTRAINED_HIGH_PROFILE","VP9_PROFILE_0","AV1_MAIN_PROFILE","hasDescriptors","functionLengthIsConfigurable","functionLengthIsWritable","prf_TLS1","slen","md5itr","sha1itr","md5bytes","sha1bytes","readVector","writeVector","TLS_1_2","SupportedVersions","MaxFragment","PRFAlgorithm","tls_prf_sha256","none","rc4","des3","aead","hmac_md5","hmac_sha256","hmac_sha384","hmac_sha512","CompressionMethod","change_cipher_spec","alert","handshake","application_data","heartbeat","HandshakeType","hello_request","client_hello","server_hello","server_key_exchange","certificate_request","server_hello_done","certificate_verify","client_key_exchange","Alert","Level","fatal","Description","close_notify","unexpected_message","bad_record_mac","decryption_failed","record_overflow","decompression_failure","handshake_failure","illegal_parameter","access_denied","decode_error","decrypt_error","export_restriction","protocol_version","insufficient_security","internal_error","user_canceled","no_renegotiation","HeartbeatMessageType","heartbeat_request","heartbeat_response","getCipherSuite","twoBytes","handleUnexpected","handleHelloRequest","handshaking","handshakes","createAlert","parseHelloMessage","session_id","cipher_suite","compression_method","cipher_suites","compression_methods","snl","session","server_name","serverNameList","cipherSuite","compressionMethod","createSecurityParameters","msgRandom","cRandom","client_random","sRandom","createRandom","prf_algorithm","compression_algorithm","pre_master_secret","master_secret","server_random","handleServerHello","sessionId","SCC","resuming","SCE","handleClientHello","sessionCache","getSession","clientHelloVersion","CCC","verifyClient","CCE","CKE","createRecord","createServerHello","createChangeCipherSpec","createConnectionState","createFinished","createServerKeyExchange","createCertificateRequest","createServerHelloDone","handleCertificate","certificate_list","SKE","serverCertificate","clientCertificate","handleServerKeyExchange","SCR","handleClientKeyExchange","enc_pre_master_secret","getPrivateKey","CCV","handleCertificateRequest","certificate_types","certificate_authorities","certificateRequest","SHD","handleCertificateVerify","msgBytes","handleServerHelloDone","createClientKeyExchange","SER","createCertificateVerify","getClientSignature","handleChangeCipherSpec","SFI","CFI","handleFinished","vd","SAD","CAD","peerCertificate","isConnected","connected","handleAlert","handleHandshake","fragmented","hsTable","handleApplicationData","dataReady","handleHeartbeat","createHeartbeat","expectedHeartbeatPayload","heartbeatReceived","R0","R1","R2","R3","R4","ctTable","H0","H1","H2","H3","H4","H5","H6","H7","H8","H9","generateKeys","tls10","client_write_MAC_key","server_write_MAC_key","createMode","compressionState","compressFunction","createClientHello","cipherSuites","cSuites","compressionMethods","cMethods","virtualHost","serverName","snList","extLength","getCertificate","der","certBuffer","certTypes","cAs","byteBuffer","payloadLength","plaintextLength","records","rec","tlsData","tlsDataReady","_certErrorToAlertDesc","verifyOptions","_alertDescToCertError","createSessionCache","setSession","createConnection","cn","dpth","cts","closed","clearFail","compatibleVersion","_readRecordHeader","_readRecord","aligned","prepareHeartbeatRequest","prf_tls1","seqNum","LRU_1","maxSize","LRUCache","keyString","endpointRecord","populateValue","Expire","identifierNames","identifierName","C_lib","WordArray","Hasher","C_algo","isPrime","sqrtN","sqrt","factor","getFractionalBits","nPrime","SHA256","_doReset","_hash","_doProcessBlock","words","gamma0x","gamma0","gamma1x","gamma1","maj","sigma0","_doFinalize","_data","dataWords","nBitsTotal","_nDataBytes","nBitsLeft","sigBytes","_process","_createHelper","HmacSHA256","_createHmacHelper","MeetingSessionVideoAvailability","METHODS_WITHOUT_BODY","applyContentTypeHeader","GetUserMediaError","_listeners","ExecutionEnvironment","canUseWorkers","canUseEventListeners","attachEvent","canUseViewport","screen","requiredAuthTokenOptions","convertUrlToAuthToken","getAuthToken","hasCallback","optionsValidation","validateAuthTokenOptions","serviceOptions","modifyRequestForAuthToken","buildAsGet","DBUser","parseLoop","base64Str","base64StrLength","reverseMap","bitsCombined","Base64","wordArray","_map","base64Chars","triplet","paddingChar","_reverseMap","paddingIndex","badArrayLike","isCallableMarker","reflectApply","constructorRegex","isES6ClassFn","fnStr","tryFunctionObject","isIE68","isDDA","strClass","setTask","schedulersFix","CheckCameraResolutionFeedback","$location","html","IS_IOS","IS_NODE","Dispatch","ONREADYSTATECHANGE","runner","globalPostMessageDefer","importScripts","appendChild","removeChild","ChimeSDKIdentity","DomXmlParser","getElementByTagName","elements","getElementsByTagName","parentNode","parseXml","parseStructure","tagName","firstElementChild","textContent","nextElementSibling","parseMap","parseList","parseUnknown","parseScalar","xmlChild","DOMParser","parseFromString","syntaxError","documentElement","errorElement","ActiveXObject","loadXML","EvalError","DIGEST_LENGTH","f32","f8b","writeFloat_f32_cpy","writeFloat_f32_rev","readFloat_f32_cpy","readFloat_f32_rev","writeFloat_ieee754","writeUint","exponent","readFloat_ieee754","readUint","uint","mantissa","f64","writeDouble_f64_cpy","writeDouble_f64_rev","readDouble_f64_cpy","readDouble_f64_rev","writeDouble_ieee754","off0","off1","readDouble_ieee754","reactIs","REACT_STATICS","childContextTypes","contextType","contextTypes","displayName","getDefaultProps","getDerivedStateFromError","getDerivedStateFromProps","mixins","KNOWN_STATICS","caller","MEMO_STATICS","TYPE_STATICS","getStatics","component","isMemo","ForwardRef","Memo","objectPrototype","hoistNonReactStatics","targetComponent","sourceComponent","blacklist","inheritedComponent","targetStatics","sourceStatics","uncurryThisAccessor","VideoTileState_1","DefaultVideoTile","facingMode","setVideoElementFlag","dueToPause","devicePixelRatioChanged","newDevicePixelRatio","contentWidth","contentHeight","tileUpdated","setStreamId","updateActiveState","updateVideoStreamOnVideoElement","updateVideoElementPhysicalPixels","normalizeHeaderName","DEFAULT_CONTENT_TYPE","setContentTypeIfUnset","silentJSONParsing","forcedJSONParsing","getDefaultAdapter","isFile","isBlob","isURLSearchParams","stringifySafely","strictJSONParsing","maxContentLength","maxBodyLength","validateStatus","piTable","rol","word","ror","expandKey","effKeyBits","T1","T8","TM","mixRound","mashRound","_output","runPlan","plan","ptr","NumberValue","convertNumber","formatMap","formatted","Converter","convertInput","formatList","nonEmptyValues","Binary","filterEmptySetValues","formatSet","BOOL","marshall","convertOutput","unmarshall","getSideChannel","arrayPrefixGenerators","brackets","comma","indices","pushToArray","valueOrArray","toISO","defaultFormat","addQueryPrefix","allowDots","allowEmptyArrays","arrayFormat","charsetSentinel","commaRoundTrip","encodeDotInKeys","encodeValuesOnly","serializeDate","skipNulls","strictNullHandling","sentinel","generateArrayPrefix","sideChannel","tmpSc","findFlag","objKeys","encodedPrefix","adjustedPrefix","keyPrefix","valueSideChannel","normalizeStringifyOptions","joined","ssh","_addBigIntegerToBuffer","hexVal","_addStringToBuffer","_sha1","privateKeyToPutty","passphrase","ppk","pubbuffer","privbuffer","encLen","aeskey","mackey","macbuffer","publicKeyToOpenSSH","privateKeyToOpenSSH","privateKeyToPem","aa","ba","ca","da","ea","fa","ha","ia","ja","ka","acceptsBooleans","attributeName","attributeNamespace","mustUseProperty","propertyName","sanitizeURL","removeEmptyString","oa","pa","qa","ma","na","la","setAttributeNS","xlinkHref","ra","sa","ta","wa","xa","ya","za","Aa","Ba","Ca","Da","Ea","Fa","Ga","Ha","Ia","Ja","Ma","Ka","La","Na","Oa","Pa","prepareStackTrace","construct","Qa","_render","Ra","Sa","Ta","Va","_valueTracker","getValue","setValue","stopTracking","Ua","Wa","Xa","Ya","defaultChecked","_wrapperState","initialChecked","Za","initialValue","controlled","$a","bb","ownerDocument","fb","selected","defaultSelected","gb","dangerouslySetInnerHTML","hb","ib","jb","kb","lb","mb","nb","ob","namespaceURI","innerHTML","firstChild","MSApp","execUnsafeLocalFunction","pb","lastChild","nodeValue","qb","animationIterationCount","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","orphans","tabSize","widows","zIndex","zoom","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","sb","tb","setProperty","ub","menuitem","area","br","col","embed","keygen","link","meta","wbr","vb","wb","is","xb","srcElement","correspondingUseElement","yb","zb","Ab","Bb","Cb","stateNode","Db","Eb","Fb","Gb","Hb","Ib","Jb","Kb","Lb","Mb","Ob","Pb","Qb","Rb","onError","Sb","Tb","Ub","Vb","Wb","Xb","Zb","alternate","$b","memoizedState","dehydrated","cc","sibling","bc","dc","fc","gc","hc","ic","jc","kc","mc","nc","oc","qc","rc","blockedOn","domEventName","eventSystemFlags","nativeEvent","targetContainers","sc","pointerId","vc","wc","lanePriority","hydrate","containerInfo","xc","yc","zc","Ac","Bc","Cc","Dc","Ec","animationend","animationiteration","animationstart","transitionend","Fc","Gc","Hc","animation","Ic","Jc","Kc","Lc","Mc","Nc","Oc","Pc","Qc","Rc","Uc","pendingLanes","expiredLanes","suspendedLanes","pingedLanes","Vc","entangledLanes","entanglements","Wc","Xc","Yc","Zc","$c","eventTimes","clz32","bd","cd","dd","fd","gd","hd","uc","jd","kd","ld","nd","od","keyCode","pd","rd","_reactName","_targetInst","isDefaultPrevented","defaultPrevented","isPropagationStopped","cancelBubble","isPersistent","wd","xd","yd","sd","eventPhase","cancelable","isTrusted","td","ud","detail","Ad","screenX","screenY","pageX","pageY","ctrlKey","shiftKey","altKey","metaKey","getModifierState","zd","button","buttons","relatedTarget","fromElement","toElement","movementX","movementY","Bd","Dd","dataTransfer","Fd","Hd","animationName","elapsedTime","pseudoElement","Jd","Ld","Md","Esc","Spacebar","Up","Right","Down","Del","Win","Menu","Apps","Scroll","MozPrintableKey","Nd","Od","Alt","Control","Meta","Shift","Pd","Qd","locale","Rd","Td","pressure","tangentialPressure","tiltX","tiltY","twist","pointerType","isPrimary","Vd","touches","targetTouches","changedTouches","Xd","Yd","deltaX","wheelDeltaX","deltaY","wheelDeltaY","wheelDelta","deltaZ","deltaMode","Zd","$d","documentMode","he","color","month","tel","week","oninput","detachEvent","Je","nextSibling","compareDocumentPosition","HTMLIFrameElement","contentWindow","contentEditable","Qe","selectionEnd","anchorNode","defaultView","anchorOffset","focusNode","focusOffset","We","Xe","Ye","Ze","Yb","af","bf","cf","df","passive","ef","parentWindow","hf","jf","kf","lf","mf","nf","__html","pf","qf","rf","sf","previousSibling","tf","wf","xf","yf","zf","Af","Bf","Cf","Df","Ef","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","Ff","Gf","Hf","If","getChildContext","Jf","__reactInternalMemoizedMergedChildContext","Kf","Lf","Mf","Nf","Of","Pf","Qf","Rf","Sf","Tf","Uf","Vf","Wf","Xf","Yf","Zf","$f","ag","bg","cg","dg","eg","fg","hg","ig","jg","kg","lg","mg","ng","og","pg","qg","rg","sg","childLanes","tg","firstContext","lanes","ug","vg","observedBits","responders","wg","xg","updateQueue","baseState","firstBaseUpdate","lastBaseUpdate","effects","yg","zg","lane","Ag","Bg","Cg","Dg","Eg","Fg","Gg","Kg","_reactInternals","Hg","Ig","Jg","Lg","shouldComponentUpdate","Mg","Ng","componentWillReceiveProps","UNSAFE_componentWillReceiveProps","Og","getSnapshotBeforeUpdate","UNSAFE_componentWillMount","componentWillMount","Pg","Qg","_stringRef","Rg","Sg","lastEffect","nextEffect","firstEffect","Tg","Ug","Vg","Wg","Xg","Yg","Zg","$g","bh","dh","eh","fh","gh","ih","memoizedProps","revealOrder","jh","kh","lh","mh","nh","oh","pendingProps","ph","qh","rh","th","uh","_workInProgressVersionPrimary","vh","wh","yh","zh","Ah","Bh","Ch","Dh","Eh","Fh","Gh","Hh","baseQueue","Ih","Jh","Kh","lastRenderedReducer","eagerReducer","eagerState","lastRenderedState","dispatch","Lh","Mh","_getVersion","_source","mutableReadLanes","Nh","getSnapshot","setSnapshot","Oh","Ph","Qh","Rh","deps","Sh","Th","Uh","Vh","Wh","Xh","Yh","Zh","$h","bi","ci","di","readContext","useDeferredValue","useTransition","useMutableSource","useOpaqueIdentifier","unstable_isNewReconciler","uf","fi","gi","ji","ki","baseLanes","ni","oi","pi","UNSAFE_componentWillUpdate","componentWillUpdate","componentDidUpdate","qi","ri","pendingContext","Bi","Ci","Di","Ei","retryLane","ti","fallback","unstable_avoidThisFallback","ui","unstable_expectedLoadTime","isBackwards","rendering","renderingStartTime","tailMode","Ai","Fi","Gi","wasMultiple","multiple","createElementNS","Hi","Ii","Ji","Ki","Li","Mi","Ni","Oi","Pi","Qi","Ri","Si","componentDidCatch","Ti","componentStack","Ui","Vi","Wi","Xi","__reactInternalSnapshotBeforeUpdate","Yi","Zi","$i","aj","display","bj","onCommitFiberUnmount","componentWillUnmount","cj","dj","ej","fj","gj","hj","insertBefore","_reactRootContainer","ij","jj","kj","lj","mj","nj","oj","pj","qj","rj","sj","tj","uj","vj","wj","ck","xj","yj","zj","Aj","Bj","Cj","Dj","Ej","Fj","Gj","Hj","Ij","Jj","Sc","Kj","Lj","Mj","callbackNode","expirationTimes","callbackPriority","Tc","Nj","Oj","Pj","Qj","Rj","Sj","Tj","finishedWork","finishedLanes","Uj","Wj","Xj","pingCache","Yj","Zj","va","ak","bk","rangeCount","focusedElem","selectionRange","ek","createRange","setStart","removeAllRanges","addRange","setEnd","scrollLeft","onCommitFiberRoot","fk","gk","ik","pendingChildren","jk","mutableSourceEagerHydrationData","lk","mk","nk","qk","hydrationOptions","mutableSources","_internalRoot","rk","tk","uk","kk","hk","unstable_observedBits","unmount","querySelectorAll","form","Vj","vk","Events","wk","findFiberByHostInstance","bundleType","rendererPackageName","xk","rendererConfig","overrideHookState","overrideHookStateDeletePath","overrideHookStateRenamePath","overrideProps","overridePropsDeletePath","overridePropsRenamePath","setSuspenseHandler","scheduleUpdate","currentDispatcherRef","findHostInstanceByFiber","findHostInstancesForRefresh","scheduleRefresh","scheduleRoot","setRefreshHandler","getCurrentFiber","__REACT_DEVTOOLS_GLOBAL_HOOK__","yk","isDisabled","supportsFiber","inject","createPortal","findDOMNode","flushSync","unmountComponentAtNode","unstable_batchedUpdates","unstable_createPortal","unstable_renderSubtreeIntoContainer","possibleNames","NoOpLogger_1","NoOpDebugLogger","hasChildren","xmlText","attributeNames","getConnectionHealthData","healthy","newHealth","LinkedListNode","nodeMap","sizeLimit","prependToList","headerNode","tailNode","removeFromTail","prevNode","detachFromList","key_1","newNode","h5","h6","h7","s0","TimeoutTask","taskToRunBeforeTimeout","MediaDeviceProxyHandler_1","isMediaDevicesSupported","V8_VERSION","devicePixelRatioSource","mediaQueryListener","tileObserver","mediaQueryList","matchMedia","CONFIGURABLE_FUNCTION_NAME","InternalStateModule","enforceInternalState","getInternalState","CONFIGURABLE_LENGTH","TEMPLATE","cryptoSecureRandomInt","subtype","overrides","mixIn","$super","Hex","thisWords","thatWords","thisSigBytes","thatSigBytes","thatByte","C_enc","hexChars","bite","hexStr","hexStrLength","Latin1","latin1Chars","latin1Str","latin1StrLength","utf8Str","BufferedBlockAlgorithm","_append","doFlush","processedWords","dataSigBytes","nBlocksReady","nWordsReady","_minBufferSize","nBytesReady","cfg","messageUpdate","finalize","hasher","HMAC","BackgroundFilterVideoFrameProcessorDelegate_1","BackgroundBlurVideoFrameProcessorDelegate","moduleName","validateMember","validateStructure","isDocument","validateType","memberContext","validateList","validateMap","validateScalar","validateRange","mapCount","validateString","validatePayload","validTypes","validateEnum","validatePattern","validateUri","acceptedTypes","foundInvalidType","acceptedType","vowel","castedValue","VideoEncodingFramerateConnectionHealthPolicy","consecutiveEncodeFailureCnt","fetch_1","DeferredPromise_1","VideoFxCanvasOpsManager_1","VideoFxSegmentationRateManager_1","VideoFxProcessor","processingBudgetPerFrame","videoFxSpec","DEFAULT_VIDEO_FX_SPEC","validateProcessingBudgetPerFrame","backgroundBlur","strength","segmentationRequestPromise","DeferredPromise","segmentationRateManager","VideoFxSegmentationRateManager","DEFAULT_STREAM_PARAMETERS","isSharedArrayBufferSupported","sharedImageBuffer","sharedImageData","canvasOpsManager","VideoFxCanvasOpsManager","segmentationMask","fxProcess","didStreamParametersChange","adjustProcessorForNewStreamParameters","manageSegmentationMask","renderer","noOpProcess","fxLibScript","engineWorker","destroyedAssetsPromise","WORKER_MSG","inferenceInputImageData","generateSegmentationMask","inferenceImageData","cloneConfigFrom","setVideoFxSpec","setEffectConfig","sameVideoFxConfig","newEffectConfig","validateEffectConfig","setBackgroundReplacementCanvas","publishVideoFxConfigEvent","validateReplacementConfig","testColorCtx","prevFillStyle","videoFxAssetParams","getVideoFxAssetParams","loadEngineWorker","buildEngine","loadFxLib","constructRenderer","getDefaultAssetSpec","getPathFromVideoFxAssetParams","uriEncodedKey","uriEncodedValue","engineWorkerPath","engineWorkerReceiver","buildEnginePromise","sdkVersioningParams","blobURL","getEffectConfig","settleEngineBuildPromise","settleSegmentationPromise","settleSegmentationPromiseSAB","buildStatus","transformedImageData","setToNoOpProcess","attemptAssetLoad","allCheckedPassed","checkEnv","badPromiseCondition","checkProcessor","testFxProcessor","videoFxProcessor","mediaFXEventAttibutes","firstConfig","secondConfig","DefaultTranscriptionController_1","RealtimeState_1","RealtimeVolumeIndicator_1","_transcriptionController","realtimeSetLocalAttendeeId","realtimeSetAttendeeIdPresence","dropped","posInFrame","setAudioInputEnabled","realtimeUpdateVolumeIndicator","sendVolumeIndicatorChange","applyLocalMuteOverride","getVolumeIndicatorState","volumeUpdated","mutedUpdated","signalStrengthUpdated","sendLocalSignalStrengthChange","iterateEvery","attendeeIdRemote","mutedRemote","attendeeIdLocal","mutedLocal","updateState","stateIsEmpty","eventError","consoleError","CredentialProviderChain","defaultProviders","resolveCallbacks","resolveNext","getErr","escapeElement","FormData","assignValue","stripBOM","OnceTask_1","IDLE","baseRun","baseCancel","originalRun","RUNNING","FINISHED","originalCancel","bitmap","_reverseAlphabets","digits","_encodeWithByteBuffer","_nodeId","_clockseq","_lastMSecs","_lastNSecs","clockseq","msecs","nsecs","dt","tl","tmh","getOwnPropertyDescriptors","descriptors","formatRegExp","noDeprecation","throwDeprecation","traceDeprecation","debugs","debugEnvRegex","NODE_DEBUG","debugEnv","stylize","stylizeNoColor","colors","showHidden","_extend","stylizeWithColor","formatValue","styleType","styles","recurseTimes","primitive","formatPrimitive","visibleKeys","arrayToHash","formatError","braces","formatProperty","formatArray","cur","numLinesEst","reduceToSingleString","debuglog","pid","isNativeError","isPrimitive","months","getHours","getMinutes","getSeconds","getMonth","inherits","kCustomPromisifiedSymbol","callbackifyOnRejected","newReason","promisify","promiseResolve","promiseReject","defineProperties","callbackify","callbackified","maybeCb","rej","ApplicationMetadata","APP_NAME_REGEX","serializedParams","hashmarkIndex","ZLIBTextCompressor_1","SignalingClientSubscribe_1","SubscribeAndReceiveSubscribeAckTask","textCompressor","localSdp","fixUpSubscriptionOrder","isSendingStreams","compressedSDPOffer","localSdpOffer","prevOffer","compress","convertVideoPreferencesToSignalingClientVideoSubscriptionConfiguration","subscribeAckFrame","receiveSubscribeAck","decompressedText","compressedSdpAnswer","decompress","midsToStreamIds","newSubscriptions","SUBSCRIBE_ACK","subackFrame","suback","voiceFocusFellBackToInnerStream","voiceFocusInsufficientResources","serviceClientId","getServiceClientId","DefaultActiveSpeakerDetector_1","DefaultAudioMixController_1","ConnectionHealthData_1","SignalingAndMetricsConnectionMonitor_1","DefaultPingPong_1","DefaultRealtimeController_1","DefaultSessionStateController_1","DefaultSignalingClient_1","StatsCollector_1","AttachMediaInputTask_1","CleanRestartedSessionTask_1","CleanStoppedSessionTask_1","CreatePeerConnectionTask_1","CreateSDPTask_1","FinishGatheringICECandidatesTask_1","JoinAndReceiveIndexTask_1","LeaveAndReceiveLeaveAckTask_1","ListenForVolumeIndicatorsTask_1","MonitorTask_1","OpenSignalingConnectionTask_1","ParallelGroupTask_1","PromoteToPrimaryMeetingTask_1","ReceiveAudioInputTask_1","ReceiveRemoteVideoPauseResumeTask_1","ReceiveVideoInputTask_1","ReceiveVideoStreamIndexTask_1","SendAndReceiveDataMessagesTask_1","SerialGroupTask_1","SetLocalDescriptionTask_1","SetRemoteDescriptionTask_1","SubscribeAndReceiveSubscribeAckTask_1","TimeoutTask_1","WaitForAttendeePresenceTask_1","VideoOnlyTransceiverController_1","VideoAdaptiveProbePolicy_1","DefaultVideoStreamIndex_1","SimulcastVideoStreamIndex_1","DefaultVideoTileController_1","DefaultVideoTileFactory_1","DefaultSimulcastUplinkPolicy_1","NScaleVideoUplinkBandwidthPolicy_1","DefaultVolumeIndicatorAdapter_1","AudioVideoControllerState_1","DefaultAudioVideoController","webSocketAdapter","useUpdateTransceiverControllerForUplink","totalRetryCount","mayNeedRenegotiationForSimulcastLayerChange","promotedToPrimaryMeeting","hasGetRTCPeerConnectionStatsDeprecationMessageBeenSent","receiveIndexTask","monitorTask","receiveRemotePauseResumeTask","sessionStateController","_webSocketAdapter","_realtimeController","_mediaStreamBroker","_reconnectController","_videoTileController","_audioMixController","_activeSpeakerDetector","handleHasBandwidthPriority","initSignalingClient","uninstallPreStartObserver","preStartObserver","prestart","createOrReuseSignalingTask","handleClosed","signalingTask","startReturningPromise","signalingOnly","actionConnect","connectWithPromises","needsToWaitForAttendeePresence","receiveAudioInput","signaling","createPeerConnection","attachMediaInput","createSDP","ice","wrapTaskName","reconnecting","useAudioConnection","MIN_VOLUME_DECIBELS","MAX_VOLUME_DECIBELS","simulcastPolicy","maxUplinkBandwidthKbps","PING_PONG_INTERVAL_MS","audioVideoDidStartConnecting","actionFinishConnecting","getMeetingStatusCode","actionDisconnect","notifyStop","enforceBandwidthLimitationForSender","stopReturningPromise","cleanUpMediaStreamsAfterStop","stopError","subtasks","cleanError","updateRemoteVideosFromPolicy","updateLocalVideoFromPolicy","actionFinishUpdating","actionUpdateWithRenegotiation","sendRemoteVideoUpdate","isNotAddingOrRemovingStreams","updateRemoteVideosIfNotAddingOrRemovingStreams","streamChanges","detectChangesInVideosToReceive","simulcastStreamUpdates","updatedVideoSubscriptionConfigurations","currentId","updatedConfig","foundUpdatedPreviousStreamId","idFromPrevious","stillReceiving","isUpdated","groupIdsToReceive","updateSubscribedGroupdIds","currentConfigs","newVideoSubscriptionConfigurationsMap","shouldIncludeInUpdate","lastConfig","removedMids","groupIdsToReceiveSet","negotiatedBitrateLayersAllocationRtpHeaderExtension","headerExtensions","restartLocalVideo","restartVideo","replaceLocalVideo","replaceLocalAudio","meetingStatus","meetingErrorMessage","reconnect","actionReconnect","onReconnect","videoSendDidBecomeUnavailable","willReconnect","oldMaxBandwidth","newMaxBandwidth","actionPromoteToPrimaryMeeting","resultingStatus","sameValueZero","TO_STRING_TAG_SUPPORT","TO_STRING_TAG","CORRECT_ARGUMENTS","tryGet","isarray","pathToRegexp","tokensToFunction","tokensToRegExp","PATH_REGEXP","tokens","defaultDelimiter","escaped","modifier","asterisk","partial","prevText","escapeGroup","restrictBacktrack","escapeString","encodeURIComponentPretty","pretty","attachKeys","route","endsWithDelimiter","regexpToRegexp","arrayToRegexp","stringToRegexp","CheckAudioConnectivityFeedback_1","CheckAudioInputFeedback_1","CheckAudioOutputFeedback_1","CheckCameraResolutionFeedback_1","CheckContentShareConnectivityFeedback_1","CheckNetworkTCPConnectivityFeedback_1","CheckNetworkUDPConnectivityFeedback_1","CheckVideoConnectivityFeedback_1","CheckVideoInputFeedback_1","MeetingReadinessCheckerConfiguration_1","DefaultMeetingReadinessChecker","meetingSession","checkAudioInput","audioInputDevice","Succeeded","PermissionDenied","Failed","checkAudioOutput","audioOutputDeviceInfo","audioOutputVerificationCallback","playTone","audioOutputFrequency","stopTone","maxGainValue","audioOutputGain","destinationStream","linearRampToValueAtTime","rampSec","checkVideoInput","videoInputDevice","checkCameraResolution","videoInputDeviceId","videoConstraint","calculateVideoConstraint","ResolutionNotSupported","checkContentShareConnectivity","isContentShareStarted","isAudioVideoStarted","contentShareObserver","executeTimeoutTask","stopMeeting","TimedOut","ConnectionFailed","checkAudioConnectivity","audioPresence","audioConnectivityMetrics","checkAudioConnectivityMetricsObserver","attendeePresenceHandler","AudioInputPermissionDenied","AudioInputRequestFailed","startMeeting","isAudioConnectionSuccessful","AudioNotReceived","checkVideoConnectivity","VideoInputPermissionDenied","VideoInputRequestFailed","VideoNotSent","checkNetworkUDPConnectivity","candidatePairSucceed","originalURLRewriter","MeetingSessionURLsNotInitialized","transformedUri","ICENegotiationFailed","checkNetworkTCPConnectivity","isStarted","isStopped","conditionCheck","isSuccess","CheckForConditionTask","waitDurationMs","isCancelled","timeoutTask","operationsWith200StatusCodeError","regionRedirectErrorCodes","OBJECT_LAMBDA_SERVICE","defaultApiVersion","userDefinedVersion","regionDefinedVersion","s3BucketEndpoint","shouldDisableBodySigning","s3DisableBodySigning","setExpiresString","prependListener","validateScheme","validateBucketName","optInUsEast1RegionalEndpoint","VALIDATE_REGION","addContentType","computeContentMd5","computeSseCustomerKeyMd5","addExpect100Continue","extractErrorFrom200Response","prepareSignedUrl","disableBodySigning","validateArnResourceType","populateUriFromAccessPointArn","validateBucketEndpoint","correctBucketRegionFromCache","requestBucketRegion","reqRegionForNetworkingError","SSECustomerKey","CopySourceSSECustomerKey","slashIndex","isValidAccelerateOperation","s3UsEast1RegionalEndpoint","pathStyleBucketName","removeVirtualHostedBucketFromPath","encodedS3Key","accessPointArn","isOutpostArn","isObjectLambdaArn","outpostsSuffix","fipsSuffix","dualStackSuffix","accesspointName","encodedArn","charsetName","willComputeChecksums","needsContentMD5","is200Error","bodyString","outputMembers","_requestRegionForBucket","bucketRegionCache","updateReqBucketRegion","s3Config","newConfig","_asm","LocationConstraint","createBucketConfiguration","CreateBucketConfiguration","clearBucketRegionCache","extractRequestIds","cachedRegion","reqOperation","reqParams","MaxKeys","regionReq","getRegionReq","listObjects","buckets","requestRegion","createPresignedPost","boundParams","finalizePost","fields","preparePostFields","Conditions","expiresInSeconds","field","preparePostPolicy","noPresignedContentLength","createBucket","copiedParams","writeGetObjectResponse","uploader","expiresstring","getSignedUrlPromise","waitTimeMs","frameElement","utcOffset","padStart","suppressed","suppressedError","shapeMembers","isAwsQueryCompatible","dispatchRequest","interceptors","boolean","requestInterceptorChain","synchronousRequestInterceptors","responseInterceptorChain","getUri","toHead","_isAsync","eventArgs","doneCallback","callListeners","prevError","callNextListener","_haltHandlersOnError","addNamedAsyncListener","ITERATOR_INSTEAD_OF_RECORD","MIN_LOOKAHEAD","INIT_STATE","BUSY_STATE","FINISH_STATE","slide_hash","w_size","hash_size","HASH","HASH_ZLIB","hash_shift","hash_mask","flush_pending","pending_out","flush_block_only","block_start","strstart","put_byte","putShortMSB","read_buf","longest_match","cur_match","chain_length","max_chain_length","best_len","prev_length","nice_match","_win","wmask","w_mask","strend","scan_end1","scan_end","good_match","lookahead","match_start","fill_window","_w_size","more","window_size","ins_h","deflate_stored","min_block","pending_buf_size","high_water","deflate_fast","hash_head","bflush","match_length","max_lazy_match","MIN_MATCH","deflate_slow","max_insert","prev_match","match_available","good_length","max_lazy","nice_length","max_chain","configuration_table","DeflateState","gzhead","gzindex","last_flush","w_bits","hash_bits","HEAP_SIZE","lit_bufsize","deflateStateCheck","deflateResetKeep","deflateReset","lm_init","deflateInit","old_flush","level_flags","gzhead_extra","bstate","deflate_huff","deflate_rle","tmpDict","avail","deflateInfo","protobuf","rpc","roots","unicode","unicodeSets","getFirstMatch","getSecondMatch","matchAndReturnConst","getWindowsVersionName","getMacOSVersionName","getAndroidVersionName","getVersionPrecision","compareVersions","getBrowserAlias","BROWSER_ALIASES_MAP","getBrowserTypeByAlias","BROWSER_MAP","ENGINE_MAP","OS_MAP","PLATFORMS_MAP","Bada","BlackBerry","Chrome","Chromium","Electron","Epiphany","Firefox","Focus","Generic","Googlebot","Maxthon","Opera","PhantomJS","Puffin","QupZilla","QQ","QQLite","Safari","Sailfish","SeaMonkey","Sleipnir","Swing","Tizen","Vivaldi","WeChat","Roku","amazon_silk","android","bada","blackberry","chromium","epiphany","generic","googlebot","google_search","k_meleon","maxthon","edge","mz","naver","opera_coast","phantomjs","puffin","qupzilla","qq","qqlite","sailfish","samsung_internet","seamonkey","sleipnir","swing","tizen","vivaldi","webos","wechat","yandex","tablet","desktop","tv","WindowsPhone","Windows","MacOS","iOS","Android","WebOS","Linux","ChromeOS","PlayStation4","EdgeHTML","Blink","Trident","Presto","Gecko","WebKit","getParser","parsedResult","parseBrowser","describe","getBrowserName","getBrowserVersion","parseOS","getOSName","getOSVersion","getPlatform","parsePlatform","getPlatformType","parseEngine","getEngineName","satisfies","isOS","isPlatform","compareVersion","isEngine","versionName","pemToDer","privateKeyInfoToPem","allowSparse","arrayLimit","decodeDotInKeys","duplicates","ignoreQueryPrefix","interpretNumericEntities","parameterLimit","parseArrays","strictDepth","throwOnLimitExceeded","numberStr","parseArrayValue","currentArrayLength","parseKeys","givenKey","valuesParsed","parentKey","leaf","cleanRoot","decodedRoot","parseObject","normalizeParseOptions","tempObj","cleanStr","skipIndex","bracketEqualsPos","encodedVal","parseValues","newObj","hashfunc","generateUUID","stringToBytes","uuidToBytes","DNS","WaitForAttendeePresenceTask","_pos","flushIntervalMs","flushSize","maxBufferCapacityKb","totalBufferItems","retryCountLimit","SendingAudioFailureConnectionHealthPolicy","isSendingAudioUnhealthy","hasEnoughTimeElapsedToEvaluateStatus","areAudioPacketsNotBeingSent","didWarnRecently","DefaultUserAgentParser_1","InMemoryJSONEventBuffer","bufferSize","maxBufferItemCapacityBytes","ingestionEventSize","failedIngestionEvents","cancellableEvents","attributesToFilter","deepCopyCurrentIngestionEvent","payloads","sendEvents","getItems","userAgentParserResult","_browserMajorVersion","clientMetadata","maxBufferCapacityBytes","currentIngestionEvent","initializeAndGetCurrentIngestionEvent","beaconEventListener","beaconEventHandler","addEventListeners","visibilityState","removeEventListeners","filteredAttributes","filterAttributes","getSize","MAX_ITEM_SIZE_BYTES_ALLOWED","sendEventImmediately","isFull","bufferItemThresholdReached","currentEvent","attributesToFilterSet","bufferItem","MAX_PAYLOAD_ITEMS","getPrimitiveSize","makeBeaconRequestBody","batchEvents","ingestionRecord","backoff","RETRY_FIXED_BACKOFF_WAIT_MS","RETRY_SHORT_BACKOFF_MS","RETRY_LONG_BACKOFF_MS","SENDING_FAILURE_CODES","backoffTime","clearCurrenIngestionEvent","failedRecordsCopy","beaconData","PromisesDependency","extractCredentials","credError","getStaticCredentials","tokenError","getStaticToken","tokenProvider","allowUnknownKeys","loadFromPath","fileSystemCreds","FileSystemCredentials","setPromisesDependency","BackgroundReplacementVideoFrameProcessorDelegate","ReceiveRemoteVideoPauseResume","serverPausedVideoTileIds","groupIds","existingVideoTileIds","pauseResumeFrame","EventBufferConfiguration_1","wrappedWellKnownSymbolModule","AllHighestVideoBandwidthPolicy","receiveSet","mapOfAttendeeIdToRemoteDescriptions","totalBitrateKbps","videoSource","maxReceiveBitrateKbps","getOwnPropertyNamesModule","getOwnPropertySymbolsModule","MeetingSessionTURNCredentials_1","SignalingClientJoin_1","JoinAndReceiveIndexTask","JOIN_ACK","joinAckFrame","joinack","defaultServerSideNetworkAdaption","convertServerSideNetworkAdaptionEnumFromSignaled","ApplicationMetadata_1","BackgroundBlurVideoFrameProcessor_1","BackgroundReplacementVideoFrameProcessor_1","ClientVideoStreamReceivingReport_1","DefaultActiveSpeakerPolicy_1","DefaultMeetingReadinessChecker_1","DefaultMeetingSession_1","DefaultMessagingSession_1","DefaultSigV4_1","DefaultVideoFrameProcessorTimer_1","FullJitterBackoffFactory_1","Message_1","MessagingSessionConfiguration_1","MultiLogger_1","NoOpAudioVideoController_1","NoOpDeviceController_1","NoOpEventReporter_1","NoOpTask_1","NoOpVideoElementFactory_1","NoVideoUplinkBandwidthPolicy_1","POSTLogger_1","PrefetchOn_1","PrefetchSortBy_1","RealtimeAttendeePositionInFrame_1","RunnableTask_1","SingleNodeAudioTransformDevice_1","TranscriptAlternative_1","TranscriptEntity_1","TranscriptItem_1","TranscriptLanguageWithScore_1","TranscriptResult_1","VideoFxProcessor_1","VoiceFocusDeviceTransformer_1","VideoPreferences_2","keysSeen","key2","isFalse","trimLeft","TYPE_NUMBER","TYPE_STRING","TYPE_NAME_TABLE","TOK_EOF","TOK_UNQUOTEDIDENTIFIER","TOK_QUOTEDIDENTIFIER","TOK_RBRACKET","TOK_RPAREN","TOK_COMMA","TOK_COLON","TOK_RBRACE","TOK_NUMBER","TOK_CURRENT","TOK_EXPREF","TOK_PIPE","TOK_OR","TOK_AND","TOK_EQ","TOK_GT","TOK_LT","TOK_GTE","TOK_LTE","TOK_NE","TOK_FLATTEN","TOK_STAR","TOK_FILTER","TOK_DOT","TOK_NOT","TOK_LBRACE","TOK_LBRACKET","TOK_LPAREN","TOK_LITERAL","basicTokens","operatorStartToken","skipChars","isNum","Lexer","tokenize","_current","_consumeUnquotedIdentifier","_consumeNumber","_consumeLBracket","_consumeQuotedIdentifier","_consumeRawStringLiteral","literal","_consumeLiteral","_consumeOperator","startingChar","literalString","_looksLikeJSON","bindingPower","TreeInterpreter","Runtime","interpreter","_interpreter","functionTable","_func","_functionAbs","_signature","_functionAvg","_functionCeil","_functionContains","_functionEndsWith","_functionFloor","_functionLength","_functionMap","_functionMax","_functionMerge","variadic","_functionMaxBy","sum","_functionSum","_functionStartsWith","_functionMin","_functionMinBy","_functionType","_functionKeys","_functionValues","_functionSort","_functionSortBy","_functionJoin","_functionReverse","_functionToArray","_functionToString","_functionToNumber","_functionNotNull","_loadTokens","ast","_lookahead","_lookaheadToken","rbp","leftToken","_advance","nud","currentToken","led","Not","_parseProjectionRHS","Star","_parseMultiselectHash","Flatten","_parseIndexExpression","_projectIfSlice","_parseMultiselectList","Expref","_match","_errorToken","tokenName","Dot","_parseDotRHS","Pipe","Or","And","Filter","_parseComparator","tokenType","_parseSliceExpression","indexExpr","comparator","expressions","keyToken","identifierTypes","visit","sliceParams","computed","computeSliceParams","objValues","filtered","finalResults","merged","resolvedArgs","refNode","jmespathType","arrayLength","stepValueNegative","capSliceRange","actualValue","functionEntry","_validateArgs","pluralized","currentSpec","actualType","typeMatched","_getTypeName","_typeMatches","typeIdentifier","argValue","searchStr","originalStr","reversedStr","reversedArray","inputArray","exprefNode","maxElement","minElement","listToSum","joinChar","convertedValue","sortedArray","requiredType","decorated","exprA","exprB","maxRecord","resolvedArray","keyFunction","createKeyFunction","maxNumber","minRecord","minNumber","allowedTypes","keyboardKey","getCode","eventOrKey","getKey","eventOrCode","isEvent","Help","Backspace","Tab","Clear","Enter","Pause","CapsLock","Escape","Convert","NonConvert","ModeChange","PageUp","PageDown","End","Home","ArrowLeft","ArrowUp","ArrowRight","ArrowDown","Select","Print","Execute","PrintScreen","Insert","Delete","ContextMenu","F3","F4","F5","F6","F7","F8","F9","F10","F11","F12","F13","F14","F15","F16","F17","F18","F19","F20","F21","F22","F23","F24","NumLock","ScrollLock","VolumeMute","VolumeDown","VolumeUp","AltGraph","Attn","CrSel","ExSel","EraseEof","Play","ZoomOut","Digit0","Digit1","Digit2","Digit3","Digit4","Digit5","Digit6","Digit7","Digit8","Digit9","Tilde","GraveAccent","ExclamationPoint","AtSign","PoundSign","PercentSign","Caret","Ampersand","PlusSign","MinusSign","EqualsSign","DivisionSign","MultiplicationSign","Comma","Decimal","Colon","Semicolon","BackSlash","QuestionMark","SingleQuote","DoubleQuote","LeftCurlyBrace","RightCurlyBrace","LeftParenthesis","RightParenthesis","LeftAngleBracket","RightAngleBracket","LeftSquareBracket","RightSquareBracket","indexOutOfRange","writeLength","create_array","readLongVarint","readFixed32_end","readFixed64","nativeBuffer","skip","skipType","wireType","BufferReader_","hardErrorStates","success","complete","fsm","setupStates","machine","Domain","domainEmitter","domainThrown","emitEvent","eachPage","wrappedCallback","eachItem","resultKey","continueIteration","isPageable","PassThrough","HTTP_DATA","HTTP_ERROR","expectedLen","shouldCheckContentLength","receivedLen","checkContentLengthAndEmit","httpStream","lengthAccumulator","_write","unpipe","eventParameters","toGet","VALIDATE_CREDENTIALS","SIGN","_ts","PrefetchSortBy","innerResult","innerError","SimulcastVideoStreamIndex","streamIdToBitrateKbpsMap","_localStreamInfos","_sendRidToVideoStreamIdMap","clonedDescriptions","hasStreamsToReuse","localStreamIndex","targetMaxBitrateKbps","targetMaxFrameRate","stillSending","existingSet","bitrateMsg","UNSEEN_STREAM_BITRATE","RECENTLY_INACTIVE_STREAM_BITRATE","NOT_SENDING_STREAM_BITRATE","logLocalStreamDescriptions","newIndexStreamIdSet","localStreamStartIndex","allocation","BitratesMsgFrequencyMs","BackgroundBlurProcessorBuiltIn_1","NoOpBackgroundBlurProcessor","BackgroundBlurVideoFrameProcessor","support","formData","viewClasses","normalizeName","normalizeValue","iteratorFor","consumed","_noBody","bodyUsed","fileReaderReady","readBlobAsArrayBuffer","bufferClone","_initBody","_bodyInit","_bodyText","_bodyBlob","_bodyFormData","_bodyArrayBuffer","isConsumed","readAsText","readBlobAsText","chars","readArrayBufferAsText","oldValue","methods","upcased","normalizeMethod","referrer","reParamSearch","bodyInit","redirectStatuses","DOMException","abortXhr","fixUrl","AsyncMode","ConcurrentMode","ContextConsumer","ContextProvider","Lazy","Portal","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isForwardRef","isFragment","isLazy","isPortal","isProfiler","isStrictMode","isSuspense","isValidElementType","$WeakMap","$weakMapGet","$weakMapSet","$weakMapHas","$weakMapDelete","$wm","getIteratorDirect","INVALID_SIZE","SetRecord","intSize","numSize","DefaultVolumeIndicatorAdapter","minVolumeDecibels","maxVolumeDecibels","streamIdToAttendeeId","streamIdToExternalUserId","warnedAboutMissingStreamIdMapping","attendeeIdToStreamId","sessionReconnected","streamIndex","hasAttendeeId","hasExternalUserId","hasMuted","hasDropped","audioStreamId","attendeeIndex","attendeesInFrame","attendeeHasNewStreamId","otherStreamId","otherStreamIdNumber","cleanUpState","localAttendeeIds","remoteAttendeeIds","deletedAttendeeIds","deletedAttendeeId","signalStrengths","attendeeStates","normalizedVolume","normalizedSignalStrength","applyRealtimeUpdatesForAudioMetadata","normalized","MAX_SIGNAL_STRENGTH_LEVELS","volumeUpdate","signalStrengthUpdate","IMPLICIT_VOLUME","IMPLICIT_SIGNAL_STRENGTH","stages","fr","canvasOutput","outputCtx","canvasInput","inputCtx","inputVideoStream","sourceBuffers","destBuffers","hasStarted","_event","processVideoStart","imageSource","_error","obs","processVideoLatency","nextFrameDelay","stage","destroyInputMediaStreamAndBuffers","getInputMediaStream","isOutputMediaStreamActive","captureStream","cloneInputAudioTracksToOutput","canvasBuffer","audioTrack","removeTrack","addTrack","defineBuiltIn","copyConstructorProperties","targetProperty","sourceProperty","TARGET","GLOBAL","STATIC","dontCallGetSet","s64","invalidEncoding","safeAdd","lsw","md5cmn","cnt","md5ff","md5gg","md5hh","md5ii","length32","hexTab","md5ToHexEncodedArray","olda","oldb","oldc","oldd","wordsToMd5","length8","bytesToWords","EXTRACT_ERROR","buildCopySnapshotPresignedUrl","PresignedUrl","_subRequest","RequestID","$protobuf","$Reader","$Writer","$util","$root","leaveAck","primaryMeetingJoinAck","SdkErrorFrame","SdkJoinAckFrame","SdkSubscribeAckFrame","SdkIndexFrame","SdkLeaveAckFrame","SdkBitrateFrame","SdkAudioMetadataFrame","SdkAudioStreamIdInfoFrame","SdkAudioStatusFrame","SdkPrimaryMeetingJoinAckFrame","encodeDelimited","decodeDelimited","fromValue","getTypeUrl","typeUrlPrefix","valuesById","deviceModel","deviceMake","maxNumOfVideos","end2","SdkTurnCredentials","SdkStreamAllocation","SdkTrackMapping","SdkBitrate","SdkAudioAttendeeState","SdkAudioStreamIdInfo","boolValue","uintValue","SdkTranscriptEntity","SdkTranscriptAlternative","SdkTranscriptLanguageWithScore","SdkTranscriptResult","SdkTranscript","SdkTranscriptEvent","$oneOfFields","Event","oneofs","$isNaN","checkDCE","FullJitterLimitedBackoff","_states","messageLength128","hlen","t1_hi","t1_lo","t2_hi","t2_lo","s0_hi","s0_lo","s1_hi","ch_hi","maj_hi","maj_lo","a_hi","a_lo","b_hi","b_lo","c_hi","c_lo","d_hi","d_lo","e_hi","e_lo","f_hi","f_lo","g_hi","g_lo","h_hi","h_lo","w2","w7","w15","w16","PredictEndpoint","DefaultVideoStreamIdSet","callbackFn","bth","topStyling","bottomStyling","backgroundColor","ordinaryToPrimitive","TO_PRIMITIVE","exoticToPrim","client_chime_sdk_messaging_1","sigV4","preBootstrapMessages","isClosed","startConnecting","openEventHandler","receiveMessageHandler","startConnectingInternal","bootstrapResolved","bootstrapRejected","getMessagingSessionEndpoint","closeEvent","prepareWebSocketUrl","messagingSessionDidStartConnecting","isSessionEstablished","jsonData","Payload","messagingSessionDidStart","preBootstrapMessageLength","preBootstrapMessage","sendMessageToObserver","messagingSessionDidReceiveMessage","retryConnection","canReconnect","messagingSessionDidStop","emojiMap","XD","xD","XP","D8","DX","O_O","O_o","o_O","o_o","ಠ_ಠ","mapStringToUnicode","keysStartingWith","fromUnicodeToEmoji","fromCodePoint","MediaDeviceProxyHandler","deviceChangeListeners","patchAddEventListener","patchRemoveEventListener","pollDeviceLists","newDevices","sortedDeviceList","handleDeviceChangeEvent","device1","device2","handleEvent","PRELUDE_LENGTH","expectedPreludeChecksum","PRELUDE_MEMBER_LENGTH","expectedMessageChecksum","headersEnd","symObj","pako","ZLIBTextCompressor","dictionarySize","MAX_DICTIONARY_SIZE","Z_MEM_LEVEL","compressedText","__webpack_module_cache__","moduleId","cachedModule","__webpack_modules__","amdO","leafPrototypes","ns","def","definition","chunkId","miniCssF","inProgress","dataWebpackPrefix","script","needAttach","scripts","onScriptComplete","doneFns","nmd","loadStylesheet","fullhref","existingLinkTags","dataHref","existingStyleTags","findStylesheet","oldTag","linkTag","nonce","realHref","createStylesheet","installedCssChunks","miniCss","installedChunks","installedChunkData","realSrc","webpackJsonpCallback","parentChunkLoadingFunction","chunkIds","moreModules","chunkLoadingGlobal","ReactReduxContext","createListenerCollection","isSubscribed","nullListeners","createSubscription","parentSub","handleChangeWrapper","subscription","onStateChange","trySubscribe","addNestedSub","notifyNestedSubs","tryUnsubscribe","getListeners","useIsomorphicLayoutEffect","contextValue","previousState","getState","Context","useReduxContext","createStoreHook","useDefaultReduxContext","useStore","createDispatchHook","useDefaultStore","useDispatch","refEquality","createSelectorHook","equalityFn","_useReduxContext","selectedState","contextSub","forceRender","latestSubscriptionCallbackError","latestSelector","latestStoreState","latestSelectedState","storeState","newSelectedState","checkForUpdates","newStoreState","_newSelectedState","useSelectorWithStoreAndSubscription","newBatch","useSelector","spliceOne","toParts","fromParts","isToAbs","isFromAbs","invariant","addLeadingSlash","stripLeadingSlash","stripBasename","hasBasename","stripTrailingSlash","createPath","createLocation","currentLocation","hashIndex","searchIndex","parsePath","_extends","resolvePathname","createTransitionManager","prompt","setPrompt","nextPrompt","confirmTransitionTo","getUserConfirmation","appendListener","notifyListeners","getConfirmation","confirm","PopStateEvent","HashChangeEvent","getHistoryState","history","createBrowserHistory","globalHistory","canUseHistory","supportsHistory","needsHashChangeListener","_props","_props$forceRefresh","_props$getUserConfirm","_props$keyLength","basename","getDOMLocation","historyState","_window$location","createKey","transitionManager","nextState","handlePopState","isExtraneousPopstateEvent","handlePop","handleHashChange","forceNextPop","fromLocation","toLocation","toIndex","allKeys","go","revertPop","initialLocation","createHref","checkDOMListeners","isBlocked","pushState","prevIndex","nextKeys","replaceState","goBack","goForward","unblock","listen","unlisten","HashChangeEvent$1","HashPathCoders","hashbang","encodePath","decodePath","noslash","slash","stripHash","getHashPath","replaceHashPath","createHashHistory","_props$hashType","hashType","_HashPathCoders$hashT","ignorePath","encodedPath","prevLocation","allPaths","baseTag","querySelector","pushHashPath","nextPaths","lowerBound","upperBound","MAX_SIGNED_31_BIT_INT","commonjsGlobal","calculateChangedBits","contextProp","getUniqueId","_React$Component","changedBits","createEventEmitter","nextProps","_Provider$childContex","_React$Component2","_this2","onUpdate","_Consumer$contextType","createNamedContext","historyContext","Router","_isMounted","_pendingLocation","staticContext","computeRootMatch","isExact","cache$1","cacheCount$1","matchPath","_options$exact","_options$strict","_options$sensitive","pathCache","compilePath$1","_compilePath","Route","context$1","computedMatch","_this$props","isEmptyChildren","createURL","staticHandler","Switch","useHistory","BrowserRouter","resolveToLocation","normalizeToLocation","forwardRefShim","LinkAnchor","forwardedRef","innerRef","navigate","_onClick","_objectWithoutPropertiesLoose","isModifiedEvent","Link","_ref2$component","__RouterContext","isDuplicateNavigation","forwardRefShim$1","forwardRef$1","ariaCurrent","_ref$ariaCurrent","activeClassName","_ref$activeClassName","activeStyle","classNameProp","isActiveProp","locationProp","styleProp","escapedPath","classnames","joinClassnames","msGridRow","msGridRowSpan","msGridColumn","msGridColumnSpan","WebkitLineClamp","reactPropsRegex","isPropValid","styledComponentId","REACT_APP_SC_ATTR","SC_ATTR","SC_DISABLE_SPEEDY","REACT_APP_SC_DISABLE_SPEEDY","groupSizes","indexOfGroup","insertRules","insertRule","clearGroup","deleteRule","getGroup","getRule","registerName","getTag","__webpack_nonce__","sheet","styleSheets","ownerNode","cssRules","cssText","isServer","useCSSOMInjection","gs","registerId","reconstructWithOptions","allocateGSInstance","hasNameForId","clearNames","clearRules","clearTag","staticRulesId","isStatic","componentId","baseHash","baseStyle","generateAndInjectStyles","plugins","stylisPlugins","disableCSSOMInjection","disableVendorPrefixes","getName","isCss","parentComponentId","shouldForwardProp","componentStyle","foldedComponentIds","$as","as","withComponent","_foldedDefaultProps","withConfig","createStyles","removeStyles","renderStyles","_emitSheetCSS","getStyleTags","sealed","getStyleElement","seal","collectStyles","interleaveWithNodeStream","_assign","breakpoints","createMediaQuery","undef","createParser","shouldSort","isCacheDisabled","disableStyledSystemCache","parseResponsiveStyle","parseResponsiveObject","numeric","sensitivity","propNames","_createParser","mediaQueries","_assign2","breakpoint","_assign3","createStyleFunction","_ref$transform","defaultScale","system","conf","minWidth","minHeight","maxWidth","maxHeight","overflowX","overflowY","verticalAlign","fontFamily","fontSize","letterSpacing","textAlign","fontStyle","alignItems","alignContent","justifyItems","justifyContent","flexWrap","flexDirection","flexBasis","justifySelf","alignSelf","space","grid","gridGap","gridColumnGap","gridRowGap","gridAutoFlow","gridAutoColumns","gridAutoRows","gridTemplateColumns","gridTemplateRows","gridTemplateAreas","border","borderWidth","borderStyle","borderColor","borderRadius","borderTop","borderTopLeftRadius","borderTopRightRadius","borderRight","borderBottom","borderBottomLeftRadius","borderBottomRightRadius","borderLeft","borderX","borderY","borderBottomWidth","borderBottomColor","borderBottomStyle","borderLeftWidth","borderLeftColor","borderLeftStyle","borderRightWidth","borderRightColor","borderRightStyle","background","backgroundSize","backgroundPosition","backgroundRepeat","bgImage","bgSize","bgPosition","bgRepeat","bottom","getMargin","isNegative","absolute","configs","margin","marginTop","marginRight","marginBottom","marginLeft","marginX","marginY","mt","mr","mx","my","paddingTop","paddingRight","paddingBottom","paddingLeft","paddingX","paddingY","pr","pl","px","py","parsers","compose","boxShadow","textShadow","defaultBreakpoints","defaultTheme","fontSizes","multiples","scales","gap","columnGap","rowGap","borderTopWidth","borderTopColor","borderTopStyle","outlineColor","stroke","positiveOrNegative","transforms","_extends2","css","responsive","scaleName","dirs","_config","_ref$prop","_ref$variants","variants","layout","typography","flexbox","REGEX","memoize$1","visuallyHidden","ellipsis","absoluteCenter","hexTorgba","alpha","isValidCSSHex","defaultStyledConfig","additionalProps","createStyledConfig","baseStyles","_ref6","baseSpacing","StyledBadge","styled","span","greys","white","primary","grey60","Badge","React__default","StyledButton","radii","iconButtonSizes","iconSize","StyledPrimaryButton","StyledSecondaryButton","StyledIconButton","bgd","static","shadow","hover","secondary","badgeLayout","circle","_ref7","_ref8","_ref9","StyledIconButtonWrapper","Button","SecondaryButton","IconButton","badge","Svg","viewBox","xmlns","otherProps","fillRule","dirTransform$1","down","Camera","_ref10","dirTransform","StyledCaret","_ref11","variantMap","StyledCaution","Caution","Check","CheckRound","Clock","Cog","ScreenShare","Dots","Document","main","Information","StyledSvg","light","Microphone","mutedTitle","unmutedTitle","iconPath","getPath","Phone","Remove","Search","Sound","Spinner","UpAndDownCaret","HiddenCheckbox","inputs","StyledCheckbox","fontColor","Checkbox","checkboxNode","handleChange","click","ControlBarContext","showLabels","layoutMap$2","gridTemplateColumnMap","isVertical","isUndocked","unsetPosition","StyledControlBar","_ref15","controlBar","_ref16","_ref17","_ref18","_ref12","_ref13","_ref14","responsiveStyles$1","_ref19","_ref20","StyledControlBarItem","_ref21","_ref22","_ref23","popOver","_ref24","_ref25","_ref26","_ref27","footnote","_ref28","_ref29","_ref30","_ref31","ControlBar","controlBarContext","classNames","classes","appendClass","parseValue","newClass","ManagerReferenceNodeContext","ManagerReferenceNodeSetterContext","Manager","_React$useState","referenceNode","setReferenceNode","hasUnmounted","handleSetReferenceNode","unwrapArray","safeInvoke","setRef","fromEntries","auto","basePlacements","viewport","popper","variationPlacements","placement","placements","modifierPhases","getNodeName","getWindow","isHTMLElement","isShadowRoot","ShadowRoot","applyStyles$1","phase","effect","initialStyles","reference","requires","getBasePlacement","getUAString","uaData","brands","brand","isLayoutViewport","includeScale","isFixedStrategy","clientRect","scaleX","scaleY","offsetWidth","visualViewport","addVisualOffsets","offsetLeft","offsetTop","getLayoutRect","rootNode","getRootNode","isSameNode","getComputedStyle","isTableElement","getDocumentElement","getParentNode","assignedSlot","getTrueOffsetParent","offsetParent","getOffsetParent","currentNode","perspective","willChange","getContainingBlock","getMainAxisFromPlacement","within","min$1","max$1","mergePaddingObject","paddingObject","expandToHashMap","hashMap","getVariation","unsetSides","mapToStyles","_Object$assign2","popperRect","variation","offsets","gpuAcceleration","adaptive","roundOffsets","isFixed","_offsets$x","_offsets$y","hasX","hasY","sideX","sideY","win","heightProp","widthProp","_Object$assign","commonStyles","dpr","roundOffsetsByDPR","hash$1","getOppositePlacement","getOppositeVariationPlacement","getWindowScroll","pageXOffset","pageYOffset","getWindowScrollBarX","isScrollParent","_getComputedStyle","getScrollParent","listScrollParents","_element$ownerDocumen","scrollParent","isBody","updatedList","rectToClientRect","rect","getClientRectFromMixedType","clippingParent","layoutViewport","getViewportRect","clientTop","clientLeft","getInnerBoundingClientRect","winScroll","scrollWidth","scrollHeight","getDocumentRect","getClippingRect","boundary","rootBoundary","mainClippingParents","clippingParents","clipperElement","getClippingParents","firstClippingParent","clippingRect","accRect","computeOffsets","basePlacement","commonX","commonY","mainAxis","detectOverflow","_options$placement","_options$strategy","_options$boundary","_options$rootBoundary","_options$elementConte","elementContext","_options$altBoundary","altBoundary","_options$padding","altContext","rects","clippingClientRect","contextElement","referenceClientRect","popperOffsets","popperClientRect","elementClientRect","overflowOffsets","offsetData","modifiersData","axis","getSideOffsets","preventedOffsets","isAnySideFullyClipped","side","getCompositeRect","elementOrVirtualElement","isOffsetParentAnElement","offsetParentIsScaled","isElementScaled","scroll","getNodeScroll","modifiers","visited","requiresIfExists","depModifier","debounce","DEFAULT_OPTIONS","areValidElements","popperGenerator","generatorOptions","_generatorOptions","_generatorOptions$def","defaultModifiers","_generatorOptions$def2","defaultOptions","orderedModifiers","effectCleanupFns","setOptions","setOptionsAction","cleanupModifierEffects","scrollParents","orderModifiers","mergeByName","_ref$options","cleanupFn","noopFn","_state$elements","_state$orderedModifie","_state$orderedModifie2","onFirstUpdate","createPopper","_options$scroll","_options$resize","resize","_options$gpuAccelerat","_options$adaptive","_options$roundOffsets","_options$offset","invertDistance","skidding","distance","distanceAndSkiddingToXY","_data$state$placement","_skip","_options$mainAxis","checkMainAxis","_options$altAxis","altAxis","checkAltAxis","specifiedFallbackPlacements","fallbackPlacements","_options$flipVariatio","flipVariations","allowedAutoPlacements","preferredPlacement","oppositePlacement","getExpandedFallbackPlacements","_options$allowedAutoP","placements$1","allowedPlacements","overflows","computeAutoPlacement","referenceRect","checksMap","makeFallbackChecks","firstFittingPlacement","_basePlacement","isStartVariation","mainVariationSide","altVariationSide","checks","_loop","fittingPlacement","_options$tether","tether","_options$tetherOffset","tetherOffset","isBasePlacement","tetherOffsetValue","normalizedTetherOffsetValue","offsetModifierState","_offsetModifierState$","mainSide","altSide","additive","minLen","maxLen","arrowElement","arrowRect","arrowPaddingObject","arrowPaddingMin","arrowPaddingMax","arrowLen","minOffset","maxOffset","arrowOffsetParent","clientOffset","offsetModifierValue","tetherMax","preventedOffset","_offsetModifierState$2","_mainSide","_altSide","_offset","_min","_max","isOriginSide","_offsetModifierValue","_tetherMin","_tetherMax","_preventedOffset","withinMaxClamp","_state$modifiersData$","toPaddingObject","minProp","maxProp","endDiff","startDiff","clientSize","centerToReference","center","axisProp","centerOffset","_options$element","preventOverflow","referenceOverflow","popperAltOverflow","referenceClippingOffsets","popperEscapeOffsets","isReferenceHidden","hasPopperEscaped","reactFastCompare","EMPTY_MODIFIERS$1","NOOP","NOOP_PROMISE","EMPTY_MODIFIERS","Popper","_ref$placement","_ref$strategy","_ref$modifiers","referenceElement","popperElement","setPopperElement","_React$useState2","setArrowElement","_usePopper","prevOptions","optionsWithDefaults","updateStateModifier","ReactDOM","popperOptions","newOptions","popperInstanceRef","popperInstance","usePopper","childrenProps","arrowProps","warning_1","Reference","refHandler","KEY_CODES","VIDEO_INPUT_QUALITY","useClickOutside","onClickOutside","onMouseDown","isOutside","useTabOutside","onTabOutside","keyUp","StyledPopOverMenu","ul","menuBgd","menuBorder","StyledPopOverToggle","StyledPopOverItem","itemBgd","itemText","StyledPopOverHeader","titleText","StyledPopOverSeparator","getFocusableElements","PopOver","renderButton","renderButtonWrapper","onPopOverClick","isSubMenu","a11yLabel","closeOnClick","menuRef","isOpen","setIsOpen","move","currentElement","handlePopOverClick","_ref32","_ref33","closest","closePopover","PopOverItem","testId","Tag","ConsoleLogger","LoggerContext","useLogger","caretSpacing","caretSize","TopProps","bounds","BottomProps","LeftProps","RightProps","StyledTooltip","initialState$3","show","WithTooltip","container_id","setShow","container","setContainer","tooltipPosition","showToolTip","parentElement","hideToolTip","getElementById","ReactDOM__default","tooltipContent","onMouseEnter","onMouseLeave","ControlBarButton","isSelected","popOverPlacement","popOverLabel","tooltipContainerId","IconButtonWithToolTip","ButtonComponent","buttonComponentProps","fillSpace","layoutMap$1","StyledFlex","Flex","useUniqueId","StyledLabel","Label","layoutMap","horizontal","StyledFormField","small","FormField","Field","errorText","fieldProps","infoText","labelId","descriptionId","helpText","htmlFor","StyledHeading","_ref35","StyledInputWrapper","sizing","leadingIcon","getPadding","StyledInput","StyledClear","clearBg","InputWrapper","Input","externalRef","onClear","showClear","focused","setFocused","focusedRef","internalRef","inputRef","clearRef","blurring","onFocusOut","handleClear","nativeSetter","HTMLInputElement","searchProps","onClose","labelID","dismissible","fadeAnimation","keyframes","slideDownAndScaleUp","StyledHeader$1","modal","wrapperBgd","modalSizes","titleSize","titleWeight","footer","_ref37","navbar","headerBorder","_ref38","StyledNavbarItem","_ref39","showLabel","_ref40","StyledCloseIconButton","_ref41","_ref42","StyledNotificationButton","_ref43","severity","_ref44","_ref45","_ref46","_ref47","_ref48","_ref49","_ref50","_ref51","_ref52","Severity$1","Severity","ActionType","initialState$2","notifications","PopOverHeader","notificationGroup","imgSrc","alt","PopOverSeparator","HiddenRadio","StyledRadioWrapper","StyledRadio","StyledRadioLabel","StyledRadioIcon","Radio","radioNode","StyledWrapper","StyledSelectInput","select","upAndDownCaretStyle","_ref54","StyledTextarea","textarea","MapShim","getIndex","class_1","__entries__","global$1","requestAnimationFrame$1","transitionKeys","mutationObserverSupported","ResizeObserverController","connected_","mutationEventsAdded_","mutationsObserver_","observers_","onTransitionEnd_","leadingCall","trailingCall","lastCallTime","resolvePending","proxy","timeoutCallback","throttle","connect_","disconnect_","updateObservers_","activeObservers","gatherActive","hasActive","broadcastActive","childList","subtree","instance_","defineConfigurable","getWindowOf","emptyRect","createRectInit","toFloat","getBordersSize","positions","getHTMLElementContentRect","paddings","positions_1","getPaddings","horizPad","vertPad","boxSizing","isDocumentElement","vertScrollbar","horizScrollbar","isSVGGraphicsElement","SVGGraphicsElement","SVGElement","getBBox","getContentRect","bbox","getSVGContentRect","ResizeObservation","broadcastWidth","broadcastHeight","contentRect_","broadcastRect","ResizeObserverEntry","rectInit","Constr","DOMRectReadOnly","createReadOnlyRect","ResizeObserverSPI","callbackCtx","activeObservations_","observations_","callback_","controller_","callbackCtx_","observations","clearActive","observation","noTrailing","debounceMode","timeoutID","lastExec","clearExistingTimeout","wrapper","arguments_","elapsed","atBegin","getAspectRatio","aspectRatio","sortedRatios","ratioStyles","responsiveStyles","StyledGrid$1","videoGrid","_ref55","featured","_ref56","ratio","currentRatio","mobileStyles","gridData","usingGrid","GridContext","VideoGrid","gridEl","setRatio","handleResize","index_umd$1","useElementAspectRatio","gridSize","StyledVideoTile","grey100","objectFit","VideoTile","StyledTitle","_ref57","aside","roster","containerBorder","_ref58","secondaryText","StyledGroupWrapper","StyledGroup","fgd","StyledName","primaryText","isSearching","_ref59","PopOverMenu","menu","buttonProps","a11yMenuLabel","RosterGroup","RosterName","_ref61","StyledCell","_ref62","micPosition","StyledLateMessage","_ref63","_ref64","LateMessage","_ref65","RosterCell","runningLate","videoEnabled","sharingContent","microphone","extraIcon","videoIcon","isVideoEnabled","showMic","mic","popOverMenuComponentProps","UserActivityContext","UserActivityProvider","_ref66","isFocused","timeoutRef","setIsFocused","onFocusIn","useFocusIn","isMouseMoving","setIsMouseActive","onMouseMove","useMouseMove","isUserActive","StyledUserActivityManager","_ref67","useUserActivityState","StyledChannelList","ChannelList","channelList","fonts","unread","selectedBorder","iconButton","activeBgd","StyledChatBubbleContainer","chatBubble","actions","StyledChatBubble","editable","StyledChatBubbleInfo","dark","ChatBubble","senderName","showTail","redacted","ChatBubbleContainer","rotate","StyledInfiniteList","InfiniteList","isLoading","onLoad","listEnd","currentTopItemRef","firstNew","prevLength","onLoadRef","atBottom","setAtBottom","scrollIntoView","topObserver","IntersectionObserver","isIntersecting","threshold","newBottom","prevBottom","messageList","bottomObserver","StyledMessageAttachmentContent","messageAttachment","StyledMessageAttachment","imgStyles","MessageAttachment","downloadUrl","renderImg","imgUrl","imgOnClick","imgOnLoad","monadic","computedValue","assemble","strategyDefault","serializerDefault","ObjectWithoutPrototypeCache","cacheDefault","strategies","DEFAULT_DATE_OPTIONS","weekday","day","formatDateUnmemoized","dateStr","dateOptions","todayText","yesterdayText","dateString","toLocaleDateString","yesterday","setDate","MeetingStatus","DeviceLabelTriggerStatus","DeviceLabels","ContentActionType","initialState$1","isLocalUserSharing","isLocalShareLoading","sharingAttendeeId","reducer$1","_ref68","STARTING","UPDATE","isLocalUser","REMOVE","DID_STOP","TOGGLE_PAUSE","RESET","ContentShareContext","ContentShareControlContext","ContentShareProvider","_ref69","useAudioVideo","localUserTileIdRef","videoObserver","toggleContentShare","togglePauseContentShare","controlsValue","useContentShareState","contentShareState","VideoTileActionType","initialState","tileIdToAttendeeId","attendeeIdToTileId","removeProperty","reducer","_ref70","tileStr","Context$4","RemoteVideoTileProvider","_ref71","useRemoteVideoTileState","FeaturedTileContext","FeaturedVideoTileProvider","_ref72","meetingManager","useMeetingManager","activeTileRef","activeTile","setActiveTile","pendingAttendee","activeSpeakerCallback","activeAttendees","activeId","subscribeToActiveSpeaker","unsubscribeFromActiveSpeaker","useFeaturedTileState","Context$3","LocalAudioOutputProvider","_ref73","isAudioOn","setIsAudioOn","audioRef","toggleAudio","Context$2","LocalVideoProvider","_ref74","selectedDevice","useVideoInputs","setIsVideoEnabled","hasReachedVideoLimit","setHasReachedVideoLimit","setTileId","availability","toggleVideo","startVideoInputDevice","useLocalVideo","MeetingEventProviderContext","MeetingEventProvider","_ref75","meetingEvent","setMeetingEvent","meetingEventUpdateCallback","subscribeToEventDidReceive","unsubscribeFromEventDidReceive","RosterContext","RosterProvider","_ref76","rosterRef","setRoster","rosterUpdateCallback","chimeAttendeeId","currentRoster","oldRoster","getAttendee","externalData","useRosterState","noOpDeviceLabelHook","MeetingManager","getDeviceLabels","deviceLabels","Loading","meetingStatusObservers","audioVideoObservers","selectedAudioOutputDeviceObservers","selectedAudioInputDeviceObservers","selectedVideoInputDeviceObservers","audioInputDevices","audioOutputDevices","videoInputDevices","deviceLabelTriggerStatus","UNTRIGGERED","deviceLabelTriggerStatusObservers","deviceLabelTriggerObservers","activeSpeakerListener","activeSpeakerCallbacks","audioVideoCallbacks","devicesUpdatedCallbacks","meetingEventObserverSet","publishMeetingStatus","Reconnecting","sessionStatus","sessionStatusCode","Ended","JoinedFromAnotherDevice","TerminalFailure","startAudioInputDevice","selectedAudioInputDevice","publishSelectedAudioInputDevice","startAudioOutputDevice","selectedAudioOutputDevice","publishSelectedAudioOutputDevice","selectedVideoInputDevice","publishSelectedVideoInputDevice","stopVideoInputDevice","selectVideoInputDevice","invokeDeviceProvider","setupDeviceLabelTrigger","publishDeviceLabelTrigger","subscribeToAudioVideo","unsubscribeFromAudioVideo","callbackToRemove","publishAudioVideo","publishActiveSpeaker","subscribeToSelectedVideoInputDevice","unsubscribeFromSelectedVideoInputDevice","subscribeToSelectedAudioInputDevice","unsubscribeFromSelectedAudioInputDevice","subscribeToSelectedAudioOutputDevice","unsubscribeFromSelectedAudioOutputDevice","subscribeToMeetingStatus","unsubscribeFromMeetingStatus","subscribeToDeviceLabelTrigger","unsubscribeFromDeviceLabelTrigger","subscribeToDeviceLabelTriggerStatus","unsubscribeFromDeviceLabelTriggerStatus","publishDeviceLabelTriggerStatus","publishEventDidReceiveUpdate","eventDidReceiveRef","initializeMeetingManager","activeSpeakerPolicy","skipDeviceSelection","parseJoinParams","DefaultMeetingSession","setupAudioVideoObservers","listAndSelectDevices","setupActiveSpeakerDetection","AudioAndVideo","DefaultActiveSpeakerPolicy","updateDeviceLists","Video","IN_PROGRESS","GRANTED","isAudioDeviceRequested","isVideoDeviceRequested","MeetingContext","MeetingProvider","_ref77","onDeviceReplacement","meetingManagerProp","AudioVideoProvider","DevicesProvider","AudioVideoContext","_ref78","setAudioVideo","audioVideoUpdateCb","av","Context$1","AudioInputProvider","_ref79","audioInputs","setAudioInputs","setSelectedAudioInputDevice","selectedInputRef","newAudioInputs","hasSelectedDevice","nextInput","nextDevice","initAudioInput","useAudioInputs","AudioOutputContext","AudioOutputProvider","_ref80","audioOutputs","setAudioOutputs","setSelectedAudioOutputDevice","newAudioOutputs","initAudioOutput","useAudioOutputs","VideoInputProvider","_ref81","videoInputs","setVideoInputs","setSelectedVideoInputDevice","newVideoInputs","initVideoInput","_ref82","isOptionActive","currentDeviceId","getDeviceId","DeviceInput","notFoundMsg","selectedDeviceId","setSelectedDeviceId","deviceList","CameraSelection","useMemoCompare","previousRef","isEqual","QualitySelection","labelForUnselected","selectVideoQuality","quality","useSelectVideoQuality","videoQuality","setVideoQuality","qualityOptions","MicSelection","SpeakerSelection","useToggleLocalMute","setMuted","muteUnmutecallback","localMuted","toggleMute","HASH_UNDEFINED","argsTag","arrayTag","boolTag","dateTag","errorTag","funcTag","mapTag","numberTag","objectTag","promiseTag","regexpTag","setTag","symbolTag","weakMapTag","arrayBufferTag","dataViewTag","reIsHostCtor","reIsUint","typedArrayTags","freeSelf","freeExports","freeModule","moduleExports","freeProcess","nodeUtil","nodeIsTypedArray","arraySome","predicate","mapToArray","setToArray","arrayProto","funcProto","objectProto","coreJsData","funcToString","maskSrcKey","nativeObjectToString","reIsNative","symToStringTag","nativeGetSymbols","nativeIsBuffer","nativeKeys","getNative","nativeCreate","dataViewCtorString","toSource","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","symbolProto","symbolValueOf","Hash","ListCache","MapCache","SetCache","Stack","arrayLikeKeys","inherited","isArg","isArguments","isBuff","skipIndexes","iteratee","baseTimes","isIndex","assocIndexOf","baseGetTag","unmasked","getRawTag","baseIsArguments","isObjectLike","baseIsEqual","bitmask","customizer","equalFunc","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","equalArrays","stacked","equalByTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","objProps","getAllKeys","objLength","othProps","othLength","skipCtor","objValue","othValue","compared","objCtor","othCtor","equalObjects","baseIsEqualDeep","baseIsNative","isMasked","baseKeys","Ctor","isPrototype","arrValue","othIndex","keysFunc","symbolsFunc","arrayPush","baseGetAllKeys","getSymbols","getMapData","isKeyable","LARGE_ARRAY_SIZE","resIndex","arrayFilter","ctorString","isLength","baseUnary","VoiceFocusContext","VoiceFocusProvider","_ref84","isVoiceFocusSupported","setIsVoiceFocusSupported","voiceFocusDevice","setVoiceFocusDevice","voiceFocusTransformer","setVoiceFocusTransformer","vfSpec","isPrevEmpty","isNextEmpty","currentPromise","initVoiceFocus","createVoiceFocusDeviceTransformer","addVoiceFocus","getVoiceFocusDeviceTransformer","useVoiceFocus","AudioInputVFControl","muteLabel","unmuteLabel","mutedIconTitle","unmutedIconTitle","voiceFocusOnLabel","voiceFocusOffLabel","setIsLoading","isVoiceFocusChecked","setIsVoiceFocusChecked","isVoiceFocusEnabled","setIsVoiceFocusEnabled","dropdownWithVFOptions","setDropdownWithVFOptions","lodash_isequal","dropdownOptions","receivedDevice","currentDevice","vfOption","AudioOutputControl","useLocalAudioOutput","setDropdownOptions","ContentShareControl","pauseLabel","unpauseLabel","iconTitle","useContentShareControls","VideoInputControl","ContentTile","_ref85","grey80","ContentShare","videoEl","useApplyVideoObjectFit","onLoaded","StyledLocalVideo","LocalVideo","StyledPreview","PreviewVideo","startPreview","RemoteVideo","RemoteVideos","FeaturedRemoteVideos","featuredTileId","contentTileId","VideoTileGrid","noRemoteVideoView","featureTileId","remoteSize","useAttendeeAudioStatus","setSignalStrength","StyledMicVolumeIndicator","MicVolumeIndicator","bgRef","propClassName","MicrophoneActivity","bgEl","___","useAttendeeStatus","audioState","videoTileId","setVideoTileId","setContentTileId","RosterAttendee","attendeeName","useLocalAudioInputActivityPreview","elementRef","scaleDirection","analyserNode","frameIndex","lastDecimal","restart","initializePreview","getByteTimeDomainData","fftSize","analyserNodeCallback","lowest","decimal","useLocalAudioInputActivity","monospace","baseFontSize","navigation","fullscreen","colors$1","lightest","lighter","darker","darkest","black","grey90","grey70","grey50","grey40","grey30","grey20","grey10","globalStyle$1","shadows$1","medium","large","buttons$1","inputs$1","modal$1","popOver$1","notification$1","links$1","fontColorHover","fontColorActive","fontColorVisited","controlBar$1","roster$1","navbar$1","videoGrid$1","chatBubble$1","incoming","linkColor","linkColorHover","linkColorActive","linkColorVisited","outgoing","messageAttachment$1","lineHight","channelList$1","chatDateHeader$1","lightTheme","globalStyle","shadows","links","chatDateHeader","GlobalStyles","rootPath","landingPagePath","HOME","ASSISTANT","CHAT","CHATPRIVATEANONYMOUS","MEETING","PUBLICMEETING","PUBLICCHATASSISTANT","PUBLICMEETINGASSISTANT","SIGNIN","LANDINGPAGE","PRIVATECHANNELBYQR","CorporateInformation","LegalNotice","DataProtectionNotice","TermCondition","numberToWordMap","numberToWord","useKeyOnly","useValueAndKey","useKeyOrValueAndKey","useMultipleProp","useTextAlignProp","useVerticalAlignProp","useWidthProp","widthClass","canEqual","valType","_Component$handledPro","handledProps","fromRight","strictIndexOf","baseFindIndex","baseIsNaN","reWhitespace","reTrimStart","trimmedEndIndex","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","baseTrim","INFINITY","toFinite","arrayMap","stubFalse","baseIsTypedArray","overArg","baseValues","nativeMax","guard","toInteger","baseIndexOf","createBaseFor","baseFor","eachFunc","createBaseEach","baseForOwn","baseEach","castFunction","htmlInputAttrs","htmlInputProps","htmlImageProps","partitionHTMLProps","_options$htmlProps","htmlProps","_options$includeAria","includeAria","_forEach","possibleAria","_includes","getDefault","_Component$defaultPro","computedDefault","listCacheClear","listCacheDelete","listCacheGet","listCacheHas","listCacheSet","hashClear","hashDelete","hashGet","hashHas","hashSet","mapCacheClear","mapCacheDelete","mapCacheGet","mapCacheHas","mapCacheSet","stackClear","stackDelete","stackGet","stackHas","stackSet","setCacheAdd","setCacheHas","arrStacked","othStacked","cacheHas","stubArray","objStacked","matchData","noCustomizer","srcValue","COMPARE_PARTIAL_FLAG","isStrictComparable","getMatchData","matchesStrictComparable","baseIsMatch","reIsDeepProp","reIsPlainProp","memoizeCapped","symbolToString","baseToString","isKey","castPath","toKey","baseGet","hasFunc","hasPath","baseHasIn","hasIn","baseProperty","basePropertyDeep","baseMatchesProperty","baseMatches","baseSome","isIterateeCall","baseIteratee","isNil","arrayIncludes","isCommon","arrayIncludesWith","seenIndex","baseUniq","objectCtorString","getPrototype","createShorthand","mapValueToProps","_isNil","_isBoolean","valIsString","_isString","valIsNumber","_isNumber","valIsFunction","_isFunction","valIsReactElement","valIsPropsObject","_isPlainObject","valIsPrimitiveValue","_isArray","_options$defaultProps","usersProps","_options2$overridePro","mergedClassesNames","cx","_uniq","childKey","_options3$autoGenerat","autoGenerateKey","createShorthandFactory","createHTMLDivision","createHTMLInput","createHTMLLabel","createHTMLParagraph","hasDocument","hasWindow","baseSlice","otherArgs","constant","nativeNow","lastCalled","stamp","shortOut","baseSetToString","setToString","overRest","baseRest","baseInvoke","handleRef","RefFindNode","_inheritsLoose","_proto","prevProps","RefForward","handleRefOverride","Ref","_excluded","ElementType","ReactIs","childWithProps","nativeMin","baseInRange","_some","_invoke","clientRects","getClientRects","_first2","_first","_inRange","ModernAutoControlledComponent","_this$constructor","autoControlledProps","getAutoControlledStateFromProps","initialAutoControlledState","includeDefaults","propValue","defaultProp","getAutoControlledStateValue","newStateFromProps","_isUndefined","computedState","PortalInner","_Component","_this$props$mountNode","mountNode","contentRef","triggerRef","latestDocumentMouseDownEvent","handleDocumentMouseDown","handleDocumentClick","closeOnDocumentClick","currentMouseDownEvent","doesNodeContainClick","handleEscape","closeOnEscape","handlePortalMouseLeave","closeOnPortalMouseLeave","mouseLeaveDelay","mouseLeaveTimer","closeWithTimeout","handlePortalMouseEnter","handleTriggerBlur","_this$props2","closeOnTriggerBlur","didFocusPortal","handleTriggerClick","_this$props3","closeOnTriggerClick","openOnTriggerClick","handleTriggerFocus","_this$props4","openOnTriggerFocus","handleTriggerMouseLeave","mouseEnterTimer","_this$props5","closeOnTriggerMouseLeave","_len5","_key5","handleTriggerMouseEnter","_this$props6","mouseEnterDelay","openOnTriggerMouseEnter","_len6","_key6","openWithTimeout","eventClone","handleMount","handleUnmount","handleTriggerRef","_this$props7","eventPool","onUnmount","EventStack","Inner","DimmerDimmable","dimmed","getUnhandledProps","getElementType","childrenUtils","DimmerInner","containerRef","handleClick","toggleStyles","currentActive","inverted","childrenContent","Dimmer","handlePortalMount","classList","handlePortalUnmount","IconGroup","Dimmable","Icon","_PureComponent","getIconAriaOptions","ariaOptions","ariaLabel","ariaHidden","bordered","circular","corner","fitted","flipped","loading","rotated","Group","LabelDetail","LabelGroup","handleIconOverrides","predefinedProps","attached","floating","onRemove","pointing","removeIcon","ribbon","removeIconShorthand","ImageGroup","Detail","avatar","centered","dimmer","floated","fluid","hidden","rounded","spaced","wrapped","_partitionHTMLProps","imgTagProps","rootProps","atob","Log2","nopLogger","Log","setLogger","_format","_method","throw","methodLogger","createStatic","staticMethod","staticLogger","_len7","_key7","_len8","_key8","CryptoUtils","_randomWord","generateUUIDv4","generateCodeVerifier","generateCodeChallenge","code_verifier","hashed","generateBasicAuth","client_id","client_secret","basicAuth","_callbacks","addHandler","removeHandler","raise","_len9","_key9","JwtUtils","jwt_decode","PopupUtils","outerWidth","outerHeight","Timer","_timerHandle","_expiration","_callback","getEpochTime","durationInSeconds","logger2","timerDurationInSeconds","UrlUtils","readParams","responseMode","ErrorResponse","error_description","error_uri","userState","session_state","url_state","ErrorTimeout","AccessTokenEvents","_expiringTimer","_expiredTimer","_expiringNotificationTimeInSeconds","expiringNotificationTimeInSeconds","access_token","expires_in","expiring","unload","addAccessTokenExpiring","removeAccessTokenExpiring","addAccessTokenExpired","removeAccessTokenExpired","CheckSessionIFrame","_client_id","_intervalInSeconds","_stopOnError","_timer","_session_state","_message","_frame_origin","_frame","visibility","InMemoryWebStorage","JsonService","additionalContentTypes","_jwtHandler","_extraHeaders","_contentTypes","fetchWithTimeout","timeoutInSeconds","initFetch","timeoutId","getJson","appendExtraHeaders","postForm","initCredentials","customKeys","protectedHeaders","MetadataService","_settings","_signingKeys","_metadata","_metadataUrl","metadataUrl","_jsonService","extraHeaders","signingKeys","fetchRequestCredentials","_fetchRequestCredentials","resetSigningKeys","metadataSeed","_getMetadataProperty","getAuthorizationEndpoint","getUserInfoEndpoint","getTokenEndpoint","getCheckSessionIframe","getEndSessionEndpoint","getRevocationEndpoint","getKeysEndpoint","getSigningKeys","jwks_uri","keySet","WebStorageStateStore","_store","_prefix","DefaultResponseType","DefaultScope","DefaultClientAuthentication","DefaultResponseMode","DefaultStaleStateAgeInSeconds","DefaultClockSkewInSeconds","OidcClientSettingsStore","response_type","redirect_uri","post_logout_redirect_uri","client_authentication","max_age","ui_locales","acr_values","response_mode","filterProtocolClaims","loadUserInfo","staleStateAgeInSeconds","clockSkewInSeconds","userInfoJwtIssuer","mergeClaims","disablePKCE","stateStore","refreshTokenCredentials","revokeTokenAdditionalContentTypes","refreshTokenAllowedScope","extraQueryParams","extraTokenParams","UserInfoService","_metadataService","_getClaimsFromJwt","getClaims","claims","TokenClient","exchangeCode","grant_type","exchangeCredentials","exchangeRefreshToken","refresh_token","revoke","token_type_hint","ResponseValidator","_claimsService","_userInfoService","_tokenClient","validateSigninResponse","_processSigninState","_processCode","isOpenId","_validateIdTokenAttributes","_processClaims","skipUserInfo","validateCredentialsResponse","id_token","validateRefreshResponse","hasIdToken","validateSignoutResponse","validateSub","tokenResponse","existingToken","auth_time","azp","created","request_type","toStorageString","fromStorageString","storageString","clearStaleState","age","cutoff","SigninState","code_challenge","SigninRequest","state_data","optionalParams","SigninResponse","token_type","splitState","expires_at","SignoutRequest","id_token_hint","SignoutResponse","DefaultProtocolClaims","InternalRequiredProtocolClaims","ClaimsService","protocolClaims","claim","claims1","claims2","OidcClient","metadataService","_validator","createSigninRequest","request_uri","login_hint","signinRequest","signinState","readSigninResponseState","removeState","storedStateString","processSigninResponse","processResourceOwnerPasswordCredentials","signinResponse","useRefreshToken","allowableScopes","createSignoutRequest","signoutState","readSignoutResponseState","processSignoutResponse","revokeToken","SessionMonitor","_userManager","_start","user","_sub","_sid","sid","_checkSessionIFrame","intervalInSeconds","checkSessionIntervalInSeconds","stopOnError","stopCheckSessionOnError","checkSessionIFrame","_stop","monitorAnonymousSession","timerHandle","querySessionStatus","tmpUser","raiseEvent","_raiseUserSessionChanged","_raiseUserSignedOut","_raiseUserSignedIn","addUserLoaded","addUserUnloaded","getUser","User","scopes","messageSource","AbstractChildWindow","_abort","_disposeHandlers","_window","keepOpen","scriptOrigin","_dispose","dispose","_notifyParent","targetOrigin","DefaultPopupWindowFeatures","toolbar","closePopupWindowAfterInSeconds","DefaultPopupTarget","DefaultAccessTokenExpiringNotificationTimeInSeconds","DefaultCheckSessionIntervalInSeconds","DefaultSilentRequestTimeoutInSeconds","UserManagerSettingsStore","popup_redirect_uri","popup_post_logout_redirect_uri","popupWindowFeatures","popupWindowTarget","redirectMethod","redirectTarget","iframeNotifyParentOrigin","iframeScriptOrigin","silent_redirect_uri","silentRequestTimeoutInSeconds","automaticSilentRenew","validateSubOnSilentRenew","includeIdTokenInSilentRenew","monitorSession","query_status_response_type","revokeTokenTypes","revokeTokensOnSignout","includeIdTokenInSilentSignout","accessTokenExpiringNotificationTimeInSeconds","userStore","sessionStorage","IFrameWindow","_timeoutInSeconds","createHiddenIframe","iframe","_a2","notifyParent","IFrameNavigator","PopupWindow","centeredPopup","popupClosedInterval","notifyOpener","opener","PopupNavigator","RedirectNavigator","targetWindow","UserManagerEvents","_userLoaded","_userUnloaded","_silentRenewError","_userSignedIn","_userSignedOut","_userSessionChanged","removeUserLoaded","removeUserUnloaded","addSilentRenewError","removeSilentRenewError","_raiseSilentRenewError","addUserSignedIn","removeUserSignedIn","addUserSignedOut","removeUserSignedOut","addUserSessionChanged","removeUserSessionChanged","SilentRenewService","_isStarted","_retryTimer","_tokenExpiring","signinSilent","RefreshState","UserManager","redirectNavigator","popupNavigator","iframeNavigator","_client","_redirectNavigator","_popupNavigator","_iframeNavigator","_silentRenewService","startSilentRenew","_sessionMonitor","_loadUser","removeUser","storeUser","signinRedirect","requestArgs","_signinStart","signinRedirectCallback","_signinEnd","signinResourceOwnerCredentials","_buildUser","signinPopup","_signin","signinPopupCallback","_useRefreshToken","verifySub","signinSilentCallback","signinCallback","signoutCallback","signoutRedirectCallback","signoutPopupCallback","signoutSilentCallback","navResponse","signoutRedirect","_signoutStart","_signoutEnd","signoutPopup","_signout","_revokeInternal","signoutRequest","signoutResponse","signoutSilent","revokeTokens","typesPresent","stopSilentRenew","_userStoreKey","RedirectHelper","redirectToSubDomain","lang","redirectToMainSite","getDefaultClientRoot","getClientRoot","authState","getClientId","clientId","extractDomainName","startIndex","endIndex","nn","rn","isFrozen","tn","en","revocable","deleteProperty","an","produce","produceWithPatches","useProxies","setUseProxies","autoFreeze","setAutoFreeze","createDraft","finishDraft","applyPatches","formatProdErrorMessage","$$observable","observable","randomString","ActionTypes","REPLACE","PROBE_UNKNOWN_ACTION","createStore","preloadedState","enhancer","currentReducer","currentListeners","nextListeners","isDispatching","ensureCanMutateNextListeners","replaceReducer","nextReducer","outerSubscribe","observeState","combineReducers","reducers","reducerKeys","finalReducers","shapeAssertionError","finalReducerKeys","assertReducerShape","hasChanged","previousStateForKey","nextStateForKey","funcs","applyMiddleware","middlewares","_dispatch","middlewareAPI","_objectSpread","createThunkMiddleware","extraArgument","thunk","withExtraArgument","composeWithDevTools","__REDUX_DEVTOOLS_EXTENSION_COMPOSE__","__REDUX_DEVTOOLS_EXTENSION__","baseProto","createAction","prepareAction","actionCreator","prepared","__spreadValues","MiddlewareArray","prepend","EnhancerArray","freezeDraftable","isDraftable","createNextState","curryGetDefaultMiddleware","middlewareArray","immutableCheck","serializableCheck","actionCreatorCheck","thunkMiddleware","getDefaultMiddleware","executeReducerBuilderCallback","builderCallback","defaultCaseReducer","actionsMap","actionMatchers","addCase","typeOrActionCreator","addMatcher","addDefaultCase","createSlice","_reducer","reducerNames","sliceCaseReducersByName","sliceCaseReducersByType","actionCreators","buildReducer","extraReducers","finalCaseReducers","mapOrBuilderCallback","getInitialState","finalActionMatchers","finalDefaultCaseReducer","frozenInitialState_1","caseReducers","cr","caseReducer","isDraft2","isDraftable2","createNextState2","draft","createReducer","actionMatchers_1","reducerName","prepareCallback","maybeReducerWithPrepare","nanoid","commonProperties","RejectWithValue","FulfillWithMeta","miniSerializeError","simpleError","commonProperties_1","createAsyncThunk","createAsyncThunk2","typePrefix","payloadCreator","__spreadProps","requestStatus","serializeError","rejectedWithValue","AC","throwIfAborted","abortReason","idGenerator","abortController","promise2","__async","conditionResult","abortedPromise","getPendingMeta","rejectWithValue","fulfillWithValue","finalAction","err_1","dispatchConditionRejection","unwrap","unwrapResult","withTypes","alm","queueMicrotask","createQueueWithTimer","enableES5","isRefreshing","failedQueue","processQueue","prom","httpPCSPublic","httpPCS","authService","AuthService","loginAsync","redirectUrl","_error$response","_error$response2","_retry","isLoginAgain","renewToken","newUser","getAccountSimpleAsync","chimeUserLoginRequest","thunkApi","ApiKey","post","logoutCallbackAsync","accountService","loginCallbackAsync","logoutAsync","accountSlice","ciamId","chimeUserId","chimeName","hasPermission","getAccountState","setRedirectUrl","setBoschAgentName","userId","selectAccount","rootState","accountRedi","selectRedirectUrl","isSignIn","isSignInMS","language","timeZoneId","languages","selectAuthState","selectIsSignIn","selectCountryCode","authReducerSlice","authSetSignIn","authSetSignInMS","authSetUser","authSetCountryCode","authSetLanguage","orginalState","getAuthState","setAuthState","authFetchState","userManagerLogin","SetManagerProfileSettings","clientRoot","staleStateAge","dataRedirect","clearLoginUserState","getSimpleAccount","ciamid","createAccount","account","regionStorageKey","removeAuthState","KEY_PREFIX","FLUSH","REHYDRATE","PERSIST","PURGE","REGISTER","enumerableOnly","autoMergeLevel1","inboundState","originalState","reducedState","createPersistoid","storageKey","defaultSerialize","writeFailHandler","lastState","stagedState","keysToProcess","timeIterator","writePromise","processNextKey","endState","subState","in","onWriteFail","passWhitelistBlacklist","getStoredState","defaultDeserialize","rawState","reduceRight","warnIfRemoveError","_objectWithoutProperties","excluded","sourceKeys","sourceSymbolKeys","_toConsumableArray","arr2","_arrayWithoutHoles","_iterableToArray","_nonIterableSpread","registry","bootstrapped","persistorReducer","firstIndex","isLoggedIn","accountCreditBalance","chimeAppInstanceUserArn","setAccountCreditBalance","initialMessageState","Arn","newMemmberJoin","IsTranslate","langSource","langTarget","languagebox","messageWithLinkId","onHanldeClearMeeting","onHanldeLeaveMeeting","meetingIDOnLive","presenceOfUserInChannel","triggerCountDownInChannel","selectChannelState","chimeUser","selectChannelArn","selectChannelMessage","selectChannelName","selectNewMemberJoined","selectIsTranslate","selectMetadata","selectMessageWithLinkId","selectOnHanldeClearMeeting","selectOnHanldeLeaveMeeting","selectMeetingIDOnLive","channelReducerSlice","channelSetChannel","ChannelSetMessage","ChannelClearState","SetNewMemberJoinChannel","SetIsTranslate","SetMessageWithLinkId","SetOnHanldeClearMeeting","SetOnHanldeLeaveMeeting","SetMeetingIDOnLive","SetTriggerCountDownInChannel","SetPresenceOfUserInChannel","mappingArray","newUpdated","updatedTimeStamp","SetCleanPresenceOfUserInChannel","getTicketInfor","ticketRequest","dataObject","errorMessages","selectTicketState","ticket","selectSelectedContactPerson","selectedContactPerson","ticketReducerSlice","firstName","lastName","customerId","phoneNumber","mobilePhone","ticketDetails","ticketId","customer","name1","assignedAccount","serviceType","contactPersons","hasWSA","getTicketState","addSelectedContactPerson","MediaPlacement","AudioHostUrl","AudioFallbackUrl","ScreenDataUrl","ScreenSharingUrl","ScreenViewingUrl","SignalingUrl","TurnControlUrl","EventIngestionUrl","mediaRegion","Attendee","ExternalUserId","JoinToken","ChannelName","ListAttendee","ActionInMeeting","AR","Draw","MousePointer","getNearestMediaRegion","createMeeting","createMeetingByRandomCode","randomCode","randomId","addAttendeeByRandomCode","attendeeRequest","addAttendee","endMeeting","selectMeetingState","selectAttendeeState","selectActionMeetingState","selectListAttendeeState","meetingReducerSlice","getMeetingState","leaveMeeting","meetingSetChannelName","addListAttendee","changeActionMeeting","selectChannelListState","selectChannelAllListState","channelAllList","selectChannelUnreadListState","channelUnreadList","channelListReducerSlice","channelSetChannelList","channelSetChannelUnreadList","channelPopChannelUnreadList","channelClearChannelUnreadList","selectVisualConnectListState","visualConnectList","visualConnectListReducerSlice","hasFirstStart","isSendEmail","visualConnectClearList","visualConnectSetList","visualConnectSetActive","visualConnectSetFirstStart","visualConnectIsSendEmail","senderENUM","stepENUM","senderNameType","funtionalTypeENUM","actionTypeENUM","selectAssistantMessageListState","assistant","selectActiveState","onAState","selectShowLoadingDot","showLoadingDot","selectStepAction","stepAction","selectFeatureType","selectedFeature","selectOnStartAChatChannel","onStartAChatChannel","selectUserChime","userChime","selectChatChannelHistory","chatChannelHistory","selectOnSaveHistoryMessages","onSaveHistoryMessages","selectPresenceOfUserInPublicChannel","presenceOfUserInPublicChannel","assistantBotReducerSlice","addMessageItem","setActiveState","setShowLoadingDot","setStepState","setOnStartAChatChannel","setUserChime","setSelectedFeatureState","setChatChannelHistory","setOnSaveHistoryMessages","clearAssistantState","onDetectedMessageLanguage","clearStateAfterEndChannel","setPresenceOfUserInPublicChannel","rootReducer","authReducer","accountReducer","accountRediReducer","channelReducer","ticketReducer","meetingReducer","channelListReducer","visualConnectListReducer","curriedGetDefaultMiddleware","devTools","enhancers","finalMiddleware","middlewareEnhancer","finalCompose","compose2","defaultEnhancers","storeEnhancers","configureStore","baseReducer","stateReconciler","defaultGetStoredState","_persistoid","_purge","_paused","conditionalUpdate","_persist","rehydrated","restState","_sealed","_rehydrate","rehydrate","restoredState","migrate","migratedState","migrateErr","purgeStoredState","_newState","persistReducer","useAppDispatch","matchHtmlEntity","htmlEntities","unescapeHtmlEntity","i18nInstance","bindI18n","bindI18nStore","transEmptyNodeValue","transSupportBasicHtmlNodes","transWrapTextNodes","transKeepBasicHtmlNodesFor","useSuspense","I18nContext","ReportNamespaces","usedNamespaces","namespaces","getI18n","initReactI18next","setDefaults","react","setI18n","_console","alreadyWarned","warnOnce","loadNamespaces","i18n","isInitialized","initialized","useTranslation","i18nFromProps","i18nFromContext","defaultNSFromContext","defaultNS","reportNamespaces","notReadyT","retNotReady","i18nOptions","addUsedNamespaces","initializedStoreOnce","ignoreJSONStructure","hasLoadedNamespace","precheck","loadNotPending","backendConnector","backend","isLanguageChangingTo","lng","fallbackLng","lastLng","loadState","hasResourceBundle","partialBundledLanguages","oldI18nextHasLoadedNamespace","getT","getFixedT","nsMode","_useState2","_slicedToArray","setT","joinedNS","previousJoinedNS","ignore","usePrevious","boundReset","isInitial","ButtonContent","visible","baseMap","ButtonGroup","labeled","positive","vertical","widths","ButtonOr","computeElementType","computeTabIndex","hasIconClass","labelPosition","computeButtonAriaRole","animated","baseClasses","labeledClasses","wrapperClasses","buttonClasses","containerClasses","labelElement","arrayEvery","baseEvery","valuesLength","valuesIndex","isArrayLikeObject","baseDifference","findIndexFunc","createFind","reHasUnicode","rsAstralRange","rsAstral","rsCombo","rsFitz","rsNonAstral","rsRegional","rsSurrPair","reOptMod","rsOptVar","rsSeq","rsSymbol","reUnicode","hasUnicode","unicodeSize","asciiSize","stringSize","spreadableSymbol","isConcatSpreadable","baseFlatten","isStrict","isFlattenable","baseAssignValue","nested","baseSet","basePickBy","flatten","flatRest","basePick","Flag","DropdownDivider","DropdownItem","iconName","flagElement","iconElement","imageElement","descriptionElement","textElement","DropdownHeader","DropdownMenu","scrolling","DropdownSearchInput","_get","DropdownText","reRegExpChar","reHasRegExpChar","basePropertyOf","reLatin","reComboMark","deburrLetter","baseFilter","getMenuOptions","additionLabel","additionPosition","allowAdditions","deburr","searchQuery","filteredOptions","_filter","strippedQuery","_deburr","_escapeRegExp","initAccum","arrayReduce","baseReduce","getSelectedIndex","newSelectedIndex","selectedIndex","menuOptions","enabledIndexes","_reduce","_findIndex","_find","activeIndex","getKeyOrValue","getKeyAndValues","_pick","renderItemContent","Dropdown","searchRef","sizerRef","closeOnChange","_noop","moveSelectionOnKeyDown","_moves","selectOnNavigation","nextIndex","getSelectedIndexAfterMove","makeSelectedItemActive","openOnSpace","_e$target","_e$target2","_e$target3","shouldHandleEvent","shouldPreventDefault","isContentEditable","openOnArrow","_this$state","_this$state2","getSelectedItem","selectedValue","_union","_difference","selectItemOnEnter","_this$state3","optionSize","_size","nextValue","clearSearchQuery","removeItemOnBackspace","_this$state4","_isEmpty","_dropRight","closeOnBlur","handleMouseDown","isMouseDown","handleDocumentMouseUp","minCharacters","_this$state5","handleIconClick","clearable","hasValue","clearValue","handleItemClick","stopImmediatePropagation","isAdditionItem","handleFocus","handleBlur","selectOnBlur","newQuery","handleKeyDown","getItemByValue","getDropdownAriaOptions","handleLabelClick","labelProps","selectedLabel","handleLabelRemove","_without","_every","wrapSelection","computeSearchInputTabIndex","_this$props8","computeSearchInputWidth","searchWidth","_this$props9","handleSearchInputOverrides","scrollSelectedItemIntoView","isOutOfUpperView","isOutOfLowerView","setOpenDirection","dropdownRect","menuHeight","spaceAtTheBottom","spaceAtTheTop","upward","triggerSetState","_this$props10","handleClose","hasSearchFocus","hasDropdownFocus","hasFocus","renderText","selectedItem","_this$props11","_this$state6","_text","renderSearchInput","_this$props12","searchInput","renderSearchSizer","_this$props13","renderLabels","_this$props14","renderLabel","_this$state7","selectedItems","_compact","renderOptions","_this$props15","lazyLoad","noResultsMessage","_this$state8","optValue","pointerEvents","renderMenu","_this$props16","getDropdownMenuAriaOptions","menuChild","getInitialAutoControlledState","prevState","derivedState","__options","__value","shallowEqual","_isEqual","_this$props17","openOnFocus","openable","_this$props18","_this$props19","_this$state9","Divider","Header","SearchInput","Text","ModalActions","handleButtonOverrides","ModalContent","ModalDescription","CLASS_NAME_DELITIMITER","prevClassNames","handleClassNamesChange","classNameRefs","currentClassNames","classNameRef","computeClassNames","_computeClassNamesDif","computeClassNamesDifference","forAdd","forRemoval","nodeRegistry","del","ModalDimmer","bodyClasses","useClassNamesOnNode","ModalHeader","Modal","dimmerRef","getMountNode","handleActionsOverrides","onActionClick","actionProps","closeOnDimmerClick","currentDocumentMouseDownEvent","handleOpen","setPositionAndClassNames","eventStack","animationRequestId","isFitted","modalRect","contextHeight","innerHeight","canFit","legacyStyles","getLegacyStyles","renderContent","closeIcon","closeIconName","closeIconJSX","unhandled","portalPropNames","portalProps","onOpen","Actions","svgRef","titleId","xmlnsXlink","enableBackground","xmlSpace","ownKeys$6","_objectSpread$6","baseLogger","concreteLogger","forward","lvl","debugOnly","makeString","getLastOfPath","cleanKey","canNotTraverseDeeper","setPath","_getLastOfPath","_getLastOfPath3","deepExtend","overwrite","regexEscape","_entityMap","isIE10","deepFind","keySeparator","joinedPath","ownKeys$5","_objectSpread$5","_createSuper$3","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct$3","Super","NewTarget","ResourceStore","_EventEmitter","addNamespaces","addResource","deep","removeNamespaces","compatibilityAPI","getDataByLanguage","postProcessor","addPostProcessor","ownKeys$4","_objectSpread$4","_createSuper$2","_isNativeReflectConstruct$2","checkedLoadedFor","interpolation","nsSeparator","wouldCheckForNsInKey","seemsNaturalLanguage","userDefinedKeySeparator","userDefinedNsSeparator","possibleChars","looksLikeObjectPath","interpolator","nestingRegexp","lastKey","overloadTranslationOptionHandler","returnDetails","_this$extractFromKey","extractFromKey","appendNamespaceToCIMode","usedKey","exactUsedKey","usedLng","usedNS","resUsedKey","resExactUsedKey","resType","joinArrays","handleAsObjectInI18nFormat","i18nFormat","handleAsObject","returnObjects","returnedObjectHandler","resTypeIsArray","newKeyToUse","deepKey","extendTranslation","usedDefault","needsPluralHandling","hasDefaultValue","defaultValueSuffix","pluralResolver","getSuffix","isValidLookup","resForMissing","missingKeyNoValueFallbackToKey","updateMissing","lngs","fallbackLngs","languageUtils","getFallbackCodes","saveMissingTo","toResolveHierarchy","specificDefaultValue","defaultForMissing","missingKeyHandler","saveMissing","saveMissingPlurals","getSuffixes","appendNamespaceToMissingKey","parseMissingKeyHandler","_this3","defaultVariables","skipInterpolation","nestBef","skipOnVariables","interpolate","nest","postProcess","postProcessorNames","applyPostProcessor","postProcessPassResolved","i18nResolved","_this4","extracted","fallbackNS","needsZeroSuffixLookup","ordinal","shouldUseIntlApi","needsContextHandling","possibleKey","finalKeys","addLookupKeys","pluralSuffix","zeroSuffix","pluralSeparator","contextKey","contextSeparator","returnNull","returnEmptyString","resourceStore","capitalize","LanguageUtil","supportedLngs","formatLanguageCode","specialCases","lowerCaseLng","cleanCode","nonExplicitSupportedLngs","getLanguagePartFromCode","cleanedLng","isSupportedCode","lngOnly","supportedLng","fallbacks","getScriptPartFromCode","fallbackCode","fallbackCodes","addCode","sets","nr","_rulesPluralsTypes","deprecatedJsonVersions","suffixesOrder","one","two","few","many","PluralResolver","compatibilityJSON","Intl","PluralRules","numbers","plurals","createRules","_unused","resolvedOptions","pluralCategories","pluralCategory1","pluralCategory2","pluralCategory","getSuffixRetroCompatible","noAbs","simplifyPluralSuffix","returnSuffix","ownKeys$3","_objectSpread$3","deepFindWithDefaults","defaultData","getPathWithDefaults","Interpolator","escapeValue","iOpts","useRawValueToEscape","prefixEscaped","suffixEscaped","formatSeparator","unescapePrefix","unescapeSuffix","nestingPrefix","nestingPrefixEscaped","nestingSuffix","nestingSuffixEscaped","nestingOptionsSeparator","maxReplaces","alwaysFormat","resetRegExp","regexpStr","regexpUnescapeStr","regexpUnescape","nestingRegexpStr","replaces","regexSafe","handleFormat","interpolationkey","missingInterpolationHandler","safeValue","todo","matchedVar","clonedOptions","handleHasOptions","inheritedOptions","optionsString","matchedSingleQuotes","matchedDoubleQuotes","doReduce","elem","ownKeys$2","_objectSpread$2","createCachedFormatter","Formatter","NumberFormat","currency","DateTimeFormat","relativetime","RelativeTimeFormat","ListFormat","mem","_parseFormatStr","formatStr","formatName","formatOptions","optStr","_opt$split2","_toArray","parseFormatStr","valOptions","formatParams","ownKeys$1","_objectSpread$1","_createSuper$1","_isNativeReflectConstruct$1","Connector","waitingReads","maxParallelReads","readingCalls","retryTimeout","toLoad","toLoadLanguages","toLoadNamespaces","hasAllNamespaces","reload","pendingCount","addResourceBundle","_getLastOfPath2","pushPath","removePending","loadedKeys","fcName","tried","queueLoad","loadOne","prepareLoading","_this5","fallbackValue","isUpdate","clb","initImmediate","tDescription","transformOptions","_createSuper","_isNativeReflectConstruct","I18n","inst","modules","external","isClone","defOpts","createClassOnDemand","ClassOrObject","lu","languageDetector","_this2$store","_this2$store2","changeLanguage","usedCallback","resolvedLanguage","setResolvedLanguage","lngInLngs","hasLanguageSomeTranslations","setLngProps","setLng","getBestMatchFromCodes","cacheUserLanguage","loadResources","fixedT","_this$translator","_this$translator2","exists","_this6","preResult","_this7","preloaded","newLngs","_this8","mergedOptions","reloadResources","setDefaultNamespace","loadLanguages","languageOptions","isOpenLogOutModal","setIsOpenLogOutModal","isLoggingOut","setIsLoggingOut","setLanguage","switchLanguage","_jsxs","_jsx","Language","Profile","logout","checkSelectedRegion","newAuthState","dispatchReduxToolkit","boschSupergraphic","logo","AccountButton","isMobile","login","GridColumn","computer","largeScreen","stretched","widescreen","GridRow","divided","reversed","Grid","celled","doubling","padded","relaxed","stackable","Column","Row","openErrorModal","setOpenErrorModal","setErrorMessage","showError","closeErrorModal","onSetErrorTrigger","SignInCallback","setStatus","displayErrorModal","setDisplayErrorModal","errorModalMessage","setErrorModalMessage","preferred_username","chimeUserReq","routes","performLogin","_Fragment","ErrorModal","onTrigger","CustomLoader","CommonService","sendChannelNotification","channelNotification","deleteAllChannelAttachments","getChimeSecret","sendSMSToStartVideoSession","sendEmailToStartVideoSession","channelEmailNotification","getChimeUserForPublic","getChimeSecretPublic","detectLanguage","liveTranslateMessage","sourceLanguageCode","targetLanguageCode","translatedText","RSADecrypt","awsEncryptedKey","privateKeyString","encryptedBytes","ChimeMessaging","createMemberArn","MessageType","appInstanceUserArnHeader","chimeMessaging","chimeMessagingClient","sendChannelMessage","channelArn","messageContent","persistence","onVoiceCall","chimeBearerArn","messageNoti","messageBodyJson","typeVoiceCall","ChimeBearer","listChannelMessages","nextToken","createChannelMembership","memberArn","deleteChannelMembership","listChannelMemberships","createChannel","appInstanceArn","privacy","describeChannel","listChannelMembershipsForAppInstanceUser","listChannels","updateChannelMessage","messageId","updateChannelReadMarker","MessagingService","_member","_session","_messageUpdateCallbacks","_endpoint","messageObserver","publishMessageUpdate","setMember","setMessagingEndpoint","_response$Endpoint","sessionConfig","MessagingSessionConfiguration","DefaultMessagingSession","subscribeToMessageUpdate","unsubscribeFromMessageUpdate","Loader","indeterminate","messageItems","dateMap","messageDate","dateCount","createdTimestamp","AttachmentService","myBucket","s3_bucket","uploadObject","channelArnId","downloadObject","getObject","getPresignURL","checkObjectIsExist","headObject","awsKeys","awsKeysDecrypt","awsKeysDecryptData","setAwsCredentials","fileKey","isImage","isScanResult","versionId","setUrl","defaultImage","downUrl","setDownUrl","attachmentService","getUrl","fieldContentRegExp","minutes","cookieOptions","sameSite","maxAge","httpOnly","serializeCookie","nameEQ","cookie$1","lookupCookie","cookieMinutes","cookieDomain","lookupQuerystring","hasLocalStorageSupport","localStorageAvailable","lookupLocalStorage","hasSessionStorageSupport","sessionStorageAvailable","lookupSessionStorage","navigator$1","userLanguage","htmlTag","lookupFromPathIndex","subdomain","lookupFromSubdomainIndex","canCookies","Browser","detectors","caches","excludeCacheFor","convertDetectedLanguage","lookupFromUrlIndex","addDetector","detector","detectionOrder","detected","detectorName","cacheName","TRANSLATIONS_EN","Service_Assist_Label","Start_New_LabelBtn","Logo_Title_Label","Start_New_Question","Sms_label","Email_label","Ticket_Id_Label","Code_label","Channel_List","Chat_Label","Call_Label","Video_Label","Share_Label","Stop_Channel_Label","Contact_Details_Label","Request_Details_Label","Attendees_Label","Customer_Label","Bosch_Expert_Label","Type_Your_Message_Label","Stop_Channel_Question","Yes_Label","Cancel_Label","Start_New_Video_Session","Without_SMS_Label","Send_SMS_Label","Send_Invite_Label","Log_Out_Question","Welcome_Label","Login_Label","Login_Is_Required_Label","Account_Permission_Label","Start_Label","Noted_Recommend","Available_Languages_Label","Can_Not_Create_Meeting_Title","Can_Not_Create_Meeting_Content","Leave_meeting_Warning","Leave_Lable","End_Lable","Meeting_Ended","Start_Channel_Session","Start_Channel_Session_Content","Join_Lable","Join_Meeting_Label","Meeting_Information_Label","Meeting_ID_Label","Translate_Option_Title","Translate_Mode_Label","From_Label","To_Label","Chat_Room_Label","Visual_Connect_Label","Bosch_ID_Label","Invite_To_Chat_Question","Invite_To_Visual_Question","Invite_Sms_Question","Invite_To_Chat_By_Ticket_ID","Invite_Email_Question","Link_label","WSA_label","WSA_Applications_label","WSA_Remote_Diagnostics_label","WSA_Service_Training_label","WSA_Enter_website_label","WSA_Slogan_label","WSA_contact_info_label","WSA_PSIRT_label","WSA_licences_label","WSA_purchasing_label","WSA_copyright_label","WSA_copyright_information_label","WSA_copyright_notice_label","WSA_copyright_protectionnotice_label","WSA_copyright_terms_label","WSA_copyright_settings_label","Infor_CorporateInformation_Description","Infor_DataProtectionNotice_Description","Infor_LegalNotice_Description","Id_panel","Topic_panel","Make_panel","Model_pane","Engine_code_panel","Year_panel","Vin_panel","Plate_panel","Hardware_panel","ar_mode_warning","Write_something","Session_title","Live_Translation","Enabled_panel","Joined_note","Today_panel","Read_panel","Sent_panel","Dis_translation","En_translation","Terminated_Channel_note","Not_start_note","Retry_note","Retry_panel","Thanks_note","En_live_translate","Continue_panel","Translate_from","Translate_to","Random_ID","Anonymous","Generated_ID","Your_ID","Public_Meeting_ID_Label","SelectContactPersonModal_Title","SelectContactPersonDropDown_Title","SelectContactPersonDropDown_Error_Message","TicketCreator__Title","Wsa_status_title","Close_panel","OCR_Detected_title","Voice_Call_Label","Invite_To_Voice_Call_Question","AR_mode","Switch_modal_title","Switch_modal_content_Video","Switch_modal_content_Voice","Video_Call_Label","Functionality_Label","Press_Chatting_Button_Label","WSA_Applications_label_full","WSA_Applications_item_card","WSA_Applications_item_card_diagnostic_support","WSA_Applications_item_card_remote_diagnostics","WSA_Applications_item_card_service_training","WSA_Applications_item_card_technical_support","Header_Label_Settings","Assistant_Label_Bot","Assistant_first_message","Assistant_today_label","Visual_Connect_Pro_btn","Join_chat_btn","Your_name_input_label","Code_input_label","Start_btn_label","Change_info_label","Change_name_label","Change_code_label","assistant_ask_name_message","assistant_ask_code_message","assistant_ask_change_message","assistant_ask_change_name_message","assistant_ask_change_code_message","assistant_ask_change_action_message","assistant__confirm_message","Assistant_Welcome_Bot","End_meeting_Warning","Leave_meeting_meesage_Warning","Reject_Switch_modal_content_Voice","Change_action_label","BoschExpert_Label_Sender","Retry_note_v2","End_Channel_note","Leave_Channel_note","Join_Channel_note","Translation_is_available","Translation_is_available_detail","No_Label","Minimize_Label","Maximize_Label","Close_Session_Label","Popup_Title_Warning","Show_Message_Label","Hide_Message_label","Close_Channel_Message_Question","Channel_noti_joined_message","Click_to_view_history_message","Online_Label","Offline_Label","Onhold_Label","Busy_Label","OK_Label","Channel_Notification","BE_Leave","Chat_LoadingChat_Message","Popup_Title_Error","Component_Input_Update_Label","LanguageDetector","translation","toLocaleTimeString","hour12","_iconconfig$selctedIc","selctedIcon","setselectedicon","iconconfig","asArray","isPsuedoSelector","isStyleCondition","isImmediatePostcondition","isValidProperty","isCssVariables","isMediaQuery","joinTruthy","stableHash","joinedProperty","Rule","_Rule","joinedConditions","preconditions","postconditions","hasConditions","scopeClassName","selectors","mergeSelectors","genRule","handlePropertyValue","selectors2","ClassNames","Selector","_Selector","scopeName","setScope","addScope","addPrecondition","precondition","addPostcondition","postcondition","createRule","Sheet","storedStyles","storedClasses","styleTag","createStyleTag","getStyle","isApplied","addRule","storedClass","forIn","classes2","createSheet","scopedStyles","iteratePreconditions","styles2","iterateStyles","name2","addScopedStyle","isDirectClass","mediaQuery","handleMediaQuery","chunkRows","addEachClass","cssVariablesBlock","asSelectors","stylesheet","PickerStyleTag","suppressHydrationWarning","commonInteractionStyles","categoryBtn","backgroundPositionY","hiddenOnSearch","visibleOnSearchOnly","hiddenOnReactions","darkMode","_eprDarkTheme","_eprAutoTheme","compareConfig","prevCustomEmojis","_prev$customEmojis","customEmojis","nextCustomEmojis","_next$customEmojis","emojiVersion","reactionsDefaultOpen","searchPlaceHolder","defaultSkinTone","skinTonesDisabled","autoFocusSearch","emojiStyle","suggestedEmojisMode","lazyLoadEmojis","searchDisabled","skinTonePickerLocation","SuggestionMode","EmojiStyle","Theme","SkinTones","Categories","SkinTonePickerLocation","DEFAULT_REACTIONS","categoriesOrdered","SUGGESTED","CUSTOM","SMILEYS_PEOPLE","ANIMALS_NATURE","FOOD_DRINK","TRAVEL_PLACES","ACTIVITIES","OBJECTS","SYMBOLS","FLAGS","SuggestedRecent","configByCategory","_configByCategory","baseCategoriesConfig","categoryFromCategoryConfig","categoryNameFromCategoryConfig","getBaseConfigByCategory","EmojiProperties","skinToneVariations","NEUTRAL","LIGHT","MEDIUM_LIGHT","MEDIUM_DARK","DARK","skinTonesNamed","skinTonesMapped","skinTone","alphaNumericEmojiIndex","indexEmoji","emoji","emojiNames","_char","_alphaNumericEmojiInd","emojiUnified","_emoji$EmojiPropertie","emojiName","unifiedWithoutSkinTone","unified","splat","emojiHasVariations","_emojiVariationUnifie","emojiVariations","emojiVariationUnified","emojiUrlByUnified","TWITTER","cdnUrl","_emoji$EmojiPropertie2","variations","emojiByUnified","allEmojisByUnified","withoutSkinTone","allEmojis","emojis","setCustomEmojis","emojiData","added_in","customToRegularEmoji","Emoji","KNOWN_FAILING_EMOJIS","DEFAULT_SEARCH_PLACEHOLDER","SEARCH_RESULTS_SUFFIX","SEARCH_RESULTS_ONE_RESULT_FOUND","SEARCH_RESULTS_MULTIPLE_RESULTS_FOUND","userConfig","basePickerConfig","previewConfig","_userConfig$previewCo","categories","userCategoriesConfig","suggestionMode","RECENT","_userCategoriesConfig","mergeCategoriesConfig","hiddenEmojis","unicodeToHide","_config$customEmojis","PREVIEW","getEmojiUrl","basePreviewConfig","SEARCH","FREQUENT","reactions","allowExpandReactions","defaultEmoji","defaultCaption","showPreview","ConfigContext","PickerConfigProvider","mergedConfig","setMergedConfig","useSetConfig","usePickerConfig","MOUSE_EVENT_SOURCE","MutableConfigContext","useMutableConfig","emptyFunc","useAllowExpandReactions","useSkinTonesDisabledConfig","useEmojiStyleConfig","useCategoriesConfig","usePreviewConfig","useSearchDisabledConfig","useSkinTonePickerLocationConfig","useGetEmojiUrlConfig","getDimension","dimensionConfig","useDebouncedState","_useState","useIsUnicodeHidden","useDisallowedEmojis","DisallowedEmojisRef","emojiVersionConfig","disallowedEmojis","supportedLevel","addedIn","addedInNewerVersion","PickerContextProvider","filterRef","disallowClickRef","disallowMouseRef","disallowedEmojisRef","suggestedUpdateState","searchTerm","skinToneFanOpenState","activeSkinTone","activeCategoryState","emojisThatFailedToLoadState","emojiVariationPickerState","reactionsModeState","isPastInitialLoad","setIsPastInitialLoad","PickerContext","useFilterRef","useDisallowMouseRef","useReactionsModeState","useSearchTermState","useActiveSkinToneState","useEmojisThatFailedToLoadState","useEmojiVariationPickerState","useSkinToneFanOpenState","useUpdateSuggested","suggestedUpdated","setsuggestedUpdate","useIsSearchMode","focusElement","focusPrevElementSibling","previousElementSibling","focusNextElementSibling","focusFirstElementChild","getActiveElement","ElementRefContextProvider","PickerMainRef","AnchoredEmojiRef","BodyRef","SearchInputRef","SkinTonePickerRef","CategoryNavigationRef","VariationPickerRef","ReactionsRef","ElementRefContext","KeyboardEvents","useElementRef","usePickerMainRef","useAnchoredEmojiRef","useSetAnchoredEmojiRef","useBodyRef","useSearchInputRef","useSkinTonePickerRef","useCategoryNavigationRef","$eprBody","queryScrollBody","scrollEmojiAboveLabel","emojiDistanceFromScrollTop","categoryLabelHeight","closestCategory","isEmojiBehindLabel","variationPicker","scrollBody","closestScrollBody","by","scrollBy","focusFirstVisibleEmoji","firstVisibleEmoji","focusNextVisibleEmoji","nextVisibleEmoji","nextCategory","focusPrevVisibleEmoji","prevVisibleEmoji","lastVisibleEmoji","focusLastVisibleEmoji","prevCategory","focusVisibleEmojiOneRowUp","exitUp","categoryContent","closestCategoryContent","indexInRow","elementIndexInRow","row","rowNumber","countInRow","elementCountInRow","prevVisibleCategory","getElementInRow","allVisibleEmojis","allElements","currentRow","elementsInRow","prevRowElements","getRowElements","getElementInPrevRow","visibleEmojiOneRowUp","focusVisibleEmojiOneRowDown","elementHeight","elementTop","parentTop","parentHeight","hasNextRow","nextVisibleCategory","nextRowElements","nextRow","getNextRowElements","getElementInNextRow","visibleEmojiOneRowDown","useCloseAllOpenToggles","_useEmojiVariationPic","setVariationPicker","_useSkinToneFanOpenSt","skinToneFanOpen","setSkinToneFanOpen","useHasOpenToggles","useAllowMouseMove","DisallowMouseRef","useIsMouseDisallowed","useFocusSearchInput","useFocusCategoryNavigation","useClearSearch","applySearch","useApplySearch","focusSearchInput","useFilter","setFilterRef","setFilter","useSetFilterRef","statusSearchResults","filterState","searchResultsCount","_Object$entries","useSearchResultsConfig","getStatusSearchResults","inputValue","longestMatch","keyword","longestMatchingKey","findLongestMatch","hasMatch","filterEmojiObjectByKeyword","setSearchTerm","getNormalizedSearchTerm","useSetVariationPicker","setAnchoredEmojiRef","setEmojiVariationPicker","emojiFromElement","useIsSkinToneInSearch","useIsSkinToneInPreview","useKeyboardNavigation","clearSearch","useScrollTo","hasOpenToggles","disallowMouseMove","useDisallowMouseMove","closeAllOpenToggles","usePickerMainKeyboardEvents","focusSkinTonePicker","useFocusSkinTonePicker","setSkinToneFanOpenState","goDownFromSearchInput","useGoDownFromSearchInput","isSkinToneInSearch","firstEmoji","focusAndClickFirstVisibleEmoji","useSearchInputKeyboardEvents","_useSkinToneFanOpenSt2","isSkinToneInPreview","onType","useOnType","focusNextSkinTone","focusPrevSkinTone","useSkinTonePickerKeyboardEvents","useCategoryNavigationKeyboardEvents","goUpFromBody","focusCategoryNavigation","isSearchMode","useGoUpFromBody","buttonFromTarget","Space","useBodyKeyboardEvents","exitLeft","currentSkinTone","appendSearch","useAppendSearch","hasModifier","preloadEmoji","preloadedEmojs","emojiUrl","DEFAULT_LABEL_HEIGHT","PickerMain","PickerRootElement","reactionsMode","searchModeActive","_usePickerConfig15","useStyleConfig","bodyRef","useOnFocus","styleProps","_excluded$1","baseVariables","darkTheme","AUTO","autoThemeDark","_cx","searchActive","reactionsMenu","DarkTheme","emojiPicker","autoTheme","backdropFilter","parentWidth","elementWidth","elementLeft","parentLeft","firstElementIndex","lastElementIndex","rowElements","firstVisibleElementInContainer","maxVisibilityDiffThreshold","parentBottom","parentTopWithLabel","_labels","getLabelHeight","elementBottom","maxVisibilityDiffPixels","elementTopWithAllowedDiff","elementBottomWithAllowedDiff","EmojiButtonSelector","VisibleEmojiSelector","emojiElement","_emojiElement$closest","originalUnified","originalUnifiedFromEmojiElement","unifiedFromEmojiElement","_element$clientHeight","emojiTrueOffsetTop","labelHeight","elementOffsetTop","categoryWithoutLabel","_category$clientHeigh","_categoryWithoutLabel","_closestScrollBody$sc","_closestScrollBody","_element$closest","_element$offsetTop","elementOffsetLeft","_element$offsetLeft","_elementDataSetKey","_elementDataSet$key","_element$dataset","dataset","elementDataSet","elementDataSetKey","allUnifiedFromEmojiElement","isVisibleEmoji","isHidden","parseNativeEmoji","SUGGESTED_LS_KEY","getSuggested","_window$localStorage$","_window2","recent","isCustomEmoji","useMouseDownHandlers","ContainerRef","mouseEventSource","mouseDownTimerRef","onEmojiClick","REACTIONS","onReactionClick","useOnEmojiClickConfig","updateSuggested","activeEmojiStyle","_emojiFromEvent","emojiFromEvent","skinToneToUse","suspectedSkinTone","activeVariationFromUnified","nextList","_window3","_unused2","setSuggested","_unified","getImageUrl","isCustom","emojiClickOutput","onMouseUp","confainerRef","_element$parentElemen","isEmojiElement","styles$1","outline","ClickableEmojiButton","_ref$showVariations","showVariations","hasVariations","_ref$noBackground","noBackground","styles$2","getAriaLabel","_emojiNames$","emojiStyles","EmojiImg","_ref$lazyLoad","styles$3","emojiImag","NativeEmoji","styles$4","nativeEmoji","ViewOnlyEmoji","_ref$getEmojiUrl","setEmojisThatFailedToLoad","emojiToRender","ClickableEmoji","BtnPlus","setReactionsMode","styles$5","plusSign","Reactions","reactionsOpen","styles$6","reaction","emojiButton","listStyle","useIsEmojiHidden","emojisThatFailedToLoad","isEmojiFiltered","_filter$searchTerm","isEmojiFilteredBySearchTerm","useIsEmojiFiltered","failedToLoad","filteredOut","EmojiCategory","categoryConfig","categoryName","styles$7","textTransform","isEverMounted","Suggested","setIsMounted","useIsEverMounted","suggestedEmojisModeConfig","suggested","_getSuggested","suggestedItem","EmojiList","renderdCategoriesCountRef","styles$8","emojiList","RenderCategory","isEmojiHidden","isEmojiDisallowed","isUnicodeHidden","useIsEmojiDisallowed","emojisToPush","_emojis$category","emojisByCategory","hiddenCounter","_isEmojiHidden","isDisallowed","Direction","EmojiVariationPicker","pointerStyle","_useVariationPickerTo","getMenuDirection","getTop","emojiOffsetTop","_bodyRef$scrollTop","buttonHeight","useVariationPickerTop","getPointerStyle","emojiTruOffsetLeft","usePointerStyle","styles$9","pointingUp","pointer","transformOrigin","onScroll","useOnScroll","PICKER","allowMouseMove","isMouseDisallowed","useOnMouseMove","styles$a","FlexDirection","useEmojiPreviewEvents","allow","setPreviewEmoji","onEscape","onMouseOver","onEnter","onLeave","_allUnifiedFromEmojiE","belowFoldByPx","buttonRect","bodyRect","detectEmojyPartiallyBelowFold","_allUnifiedFromEmojiE2","_document$activeEleme","handlePartiallyVisibleElementFocus","_ref$style","_ref$direction","ROW","styles$b","_stylesheet$create","COLUMN","Absolute","Relative","BtnSkinToneVariation","skinToneVariation","styles$c","tone","closedTone","SkinTonePickerDirection","SkinTonePickerMenu","SkinTonePicker","VERTICAL","HORIZONTAL","_useActiveSkinToneSta","setActiveSkinTone","onSkinToneChange","fullWidth","expandedSize","ITEM_SIZE","styles$d","skinTones","verticalShadow","Preview","styles$e","preview","PreviewBody","previewEmoji","variationPickerEmoji","_previewEmoji$unified","defaultText","categoryNameFromDom","$category","_$category$getAttribu","useShouldHideCustomEmojis","customCategoryConfig","CategoryButton","isActiveCategory","allowNavigation","styles$f","catBtn","DarkActivePositionY","DarkPositionY","DarkInactivePosition","backgroundPositionX","CategoryNavigation","activeCategory","setActiveCategory","scrollCategoryIntoView","_BodyRef$current","useScrollCategoryIntoView","visibleCategories","_step","_iterator","_createForOfIteratorHelperLoose","intersectionRatio","ratios","lastCategory","_ratios","_ratios$_i","useActiveCategoryScrollDetection","categoriesConfig","hideCustomCategory","styles$g","nav","isCustomCategory","BtnClearSearch","styles$h","btnClearSearch","icnClearnSearch","HoverDark","SVGTimes","SCOPE","EMOJI_BUTTON","CATEGORY","CssSearch","genQuery","IcnSearch","styles$i","icnSearch","SearchContainer","styles$j","overlay","inc","setInc","_usePickerConfig","useSearchPlaceHolderConfig","_useFilter","_onChange","searchContainer","_event$target$value","_event$target","clip","clipPath","whiteSpace","EmojiPicker","ContentControl","renderAll","setRenderAll","ExpandedPickerContent","EmojiPickerReact","ErrorBoundary","MutableConfigRef","useDefineMutableConfig","getEmoji","onCancel","onDiscard","_metadata$attachment","_metadata$attachment2","_metadata$attachment3","_metadata$attachment4","_metadata$attachment5","_metadata$meeting","_metadata$meeting2","hasAttachment","attachmentIsImage","onSave","onDeleteMessage","userInput","setUserInput","maxSizeMessageInWord","countWordMesssage","setCountWordMesssage","openEdit","setOpenEdit","openCancelConfirmModal","setOpenCancelConfirmModal","openEmojiModal","setOpenEmojiModal","updateInputHeight","Styles","Boschicon","Attachment","attachment","size_num","requestType","pathRoute","onStartVoiceCall","input_zone","countWord","maxSizeMessageInWordInText","insertLineBreak","newText","newPosition","onHandleSave","ConfirmCancelDialog","emojiForUpdateModal","ModalGetEmoji","translateModeData","triggerShowHistoryModal","setTriggerShowHistoryModal","listOnHideHistoryMessage","setListOnHideHistoryMessage","historyChatData","setHistoryChatData","messageHistoryListState","setMessageHistoryListState","isTranslate","isLoadImg","browserLanguage","onTranslate","messageDetectLanguage","handleScrollTop","oldMessages","newMessages","translateMessage","lastSeen","lastSent","messageListHistory","flattenedMessages","isMeetingInfo","metaData","senderNameDetect","handleShowHideHistoryMessage","massage","messageInMetaData","botHistory","handleShowHideAction","messageReturn","onShow","newListMessageId","fillerDuplicateMessages","uniqueMessages","_JSON$parse","removeDuplicatesMessageFunc","_JSON$parse2","messageWithDeleted","deleted","messageWithTypeControl","editedNote","formatTime","messageStatus","statusNote","_JSON$parse3","senderId","onloadimg","handleDeleteMessage","chimeBearer","deleteChannelMessage","insertDateHeaders","_metadata2","_metadata2$attachment","_metadata3","_metadata3$meeting","_metadata4","_metadata5","_metadata6","_metadata7","_metadata8","_metadata8$attachment","_metadata9","_metadata9$meeting","_metadata10","_metadata11","_metadata12","_metadata13","preSignURL","isHistoryMessage","prevMessage","nextMessage","statusMessageShow","showName","prevMessageMetadata","isPrevHistoryMessage","EditMessageArea","handleUpdateMessage","textDecorationLine","hanldeOpenShowHistoryModal","messageHistoryList","MessageContent","MessageHeader","MessageItem","MessageList","handleDismiss","onDismiss","dismissIcon","List","nativeIsFinite","precision","createRound","upper","baseClamp","Progress","calculatePercent","percent","computeValueText","getPercent","_clamp","_round","isAutoSuccess","autoSuccess","renderProgress","indicating","mathMax","mathMin","allPlacements","defaultCreatePopper","toIteratee","baseInverter","createInverter","positionsMapping","placementMapping","_invert","ReferenceProxy","refObject","_memoize","PopupContent","PopupHeader","Popup","zIndexWasSynced","getPortalProps","hoverable","normalizedOn","hideOnScroll","_isElement","positionUpdate","popperPlacement","popperRef","popperStyle","flowing","wide","contentRestProps","innerElement","unhandledProps","portalRestProps","popperDependencies","handleUpdate","eventsEnabled","pinned","popperModifiers","positionFixed","_popper$style","definedZIndex","createReferenceProxy","mergedPortalProps","testForHeightReduction","restoreTextAlign","wordWrap","scrollBehavior","activeChannelArn","setText","setFile","progressCurrent","setProgressCurrent","isUploadFail","changeUploadFail","fileSizeWarn","setFileSizeWarn","popup","networkError","setNetworkError","openEmoji","setOpenEmoji","fileInputRef","memberSender","maxSizeInMB","resetState","flagOnUpload","onSubmit","textMessage","isBoschExpert","uuidv4","optionAttach","autosize","File","checkText","onPaste","files","handleOnPaste","setPopFileSizeWarnFalse","setNetworkErrorFalse","ListDescription","ListHeader","ListContent","ListIcon","ListItem","valueProp","headerElement","ListList","handleItemOverrides","itemProps","bulleted","ordered","AppConsts","SDK_LOG_LEVELS","DATA_MESSAGE_TYPE","DATA_MESSAGE_ACTION","countryOptions","TimeOutOnlineStatus","OnlinePresenceStatus","DEFAULT_RETRY_DELAYS_IN_MILLISECONDS","DefaultReconnectPolicy","_retryDelays","nextRetryDelayInMilliseconds","retryContext","previousRetryCount","HeaderNames","Cookie","getCookieString","AccessTokenHttpClient","innerClient","accessTokenFactory","_innerClient","_accessTokenFactory","allowRetry","_accessToken","_setAuthorizationHeader","HttpError","trueProto","TimeoutError","AbortError","UnsupportedTransportError","transport","DisabledTransportError","FailedToStartTransportError","FailedToNegotiateWithServerError","AggregateErrors","innerErrors","NullLogger","_logLevel","Arg","isNotEmpty","isIn","Platform","isWebWorker","isReactNative","release","getDataDetail","includeContent","formatArrayBuffer","transportName","httpClient","getUserAgentHeader","Trace","logMessageContent","SubjectSubscription","_subject","cancelCallback","minimumLogLevel","_minLevel","Critical","Warning","userAgentHeaderName","constructUserAgent","getOsName","getRuntime","getRuntimeVersion","runtimeVersion","majorAndMinor","getErrorString","FetchHttpClient","requireFunc","__non_webpack_require__","_jar","_fetchType","getGlobalThis","_abortControllerType","msTimeout","deserializeContent","getCookies","XhrHttpClient","DefaultHttpClient","_httpClient","HttpTransportType","TransferFormat","_isAborted","LongPollingTransport","pollAborted","_pollAbort","_running","onreceive","onclose","transferFormat","_url","pollOptions","pollUrl","_closeError","_receiving","_poll","_raiseOnClose","deleteOptions","ServerSentEventsTransport","accessToken","eventSource","opened","EventSource","_close","onopen","_eventSource","WebSocketTransport","webSocketConstructor","_logMessageContent","_webSocketConstructor","_headers","_webSocket","ErrorEvent","_isCloseEvent","HttpConnection","_stopPromiseResolver","_negotiateVersion","baseUrl","_resolveUrl","webSocketModule","eventSourceModule","_connectionState","_connectionStarted","Debug","_startInternalPromise","_startInternal","_stopPromise","_sendQueue","TransportSendQueue","_stopInternal","_stopError","_stopConnection","skipNegotiation","WebSockets","_constructTransport","_startTransport","negotiateResponse","redirects","_getNegotiationResponse","ProtocolVersion","_createTransport","inherentKeepAlive","negotiateUrl","_resolveNegotiateUrl","negotiateVersion","connectionToken","connectionId","useStatefulReconnect","_useStatefulReconnect","_createConnectUrl","requestedTransport","requestedTransferFormat","connectUrl","_isITransport","transportExceptions","transports","availableTransports","negotiate","transportOrError","_resolveTransportOrError","ServerSentEvents","LongPolling","callStop","disconnected","resend","actualTransport","transportMatches","transferFormats","aTag","_transport","_buffer","_executing","_sendBufferedData","PromiseSource","_transportResult","_sendLoopPromise","_sendLoop","_bufferData","transportResult","_concatBuffers","arrayBuffers","_resolver","_rejecter","TextMessageFormat","RecordSeparator","RecordSeparatorCode","HandshakeProtocol","writeHandshakeRequest","handshakeRequest","parseHandshakeResponse","messageData","remainingData","binaryData","separatorIndex","responseLength","textData","Subject","MessageBuffer","_bufferSize","_messages","_totalMessageCount","_waitForSequenceMessage","_nextReceivingSequenceId","_latestReceivedSequenceId","_bufferedByteCount","_reconnectInProgress","_protocol","_connection","_send","serializedMessage","writeMessage","backpressurePromise","_isInvocationMessage","backpressurePromiseResolver","backpressurePromiseRejector","BufferedItem","_disconnected","_ack","ackMessage","newestAckedMessage","sequenceId","_shouldProcessMessage","Sequence","_ackTimer","_resetSequence","_resend","_rejector","Invocation","StreamItem","Completion","StreamInvocation","CancelInvocation","Close","Ping","Ack","_ackTimerHandle","rejector","HubConnectionState","HubConnection","reconnectPolicy","serverTimeoutInMilliseconds","keepAliveIntervalInMilliseconds","statefulReconnectBufferSize","_nextKeepAlive","_freezeEventListener","_statefulReconnectBufferSize","_reconnectPolicy","_handshakeProtocol","_processIncomingData","_connectionClosed","_methods","_closedCallbacks","_reconnectingCallbacks","_reconnectedCallbacks","_invocationId","_receivedHandshakeResponse","Disconnected","_cachedPingMessage","_startPromise","_startWithStateTransitions","_stopDuringStartError","handshakePromise","_handshakeResolver","_handshakeRejecter","_sendMessage","_cleanupTimeout","_resetTimeoutPeriod","_resetKeepAliveInterval","_messageBuffer","_cleanupPingTimer","startPromise","_reconnectDelayHandle","_completeClose","_sendCloseMessage","_sendWithProtocol","_createCloseMessage","_replaceStreamingParams","invocationDescriptor","_createStreamInvocation","promiseQueue","cancelInvocation","_createCancelInvocation","invocationId","invocationEvent","_launchStreams","sendPromise","_createInvocation","invoke","newMethod","removeIdx","onreconnecting","onreconnected","_processHandshakeResponse","parseMessages","_invokeClientMethod","allowReconnect","responseMessage","_timeoutHandle","serverTimeout","_pingServerHandle","nextPing","invocationMessage","_createCompletionMessage","methodsCopy","expectsResponse","completionMessage","prevRes","_cancelCallbacksWithError","_reconnect","reconnectStartTime","previousReconnectAttempts","retryError","nextRetryDelay","_getNextRetryDelay","elapsedMilliseconds","retryReason","nonblocking","_createStreamItemMessage","_isObservable","JsonHubProtocol","hubMessages","_isStreamItemMessage","_isCompletionMessage","_isAckMessage","_isSequenceMessage","_assertNotEmptyString","LogLevelNameMapping","information","HubConnectionBuilder","configureLogging","logging","parseLogLevel","withUrl","transportTypeOrOptions","httpConnectionOptions","withHubProtocol","withAutomaticReconnect","retryDelaysOrReconnectPolicy","withServerTimeout","milliseconds","_serverTimeoutInMilliseconds","withKeepAliveInterval","_keepAliveIntervalInMilliseconds","withStatefulReconnect","_process$env$REACT_AP","SignalRService","eventEmitter","registerEvents","signalR","setupConnection","onConnectionEstablished","setupEmitter","sendMessageToGroup","onRegisterMessageHandler","joinGroup","groupName","ListMemberChannelModal","channelMetaData","newMemberJoined","memberList","setMemberList","memberPresenceList","setMemberPresenceList","isDeleteMem","setIsDeleteMem","Customer","BoschExpert","signalRConnectorInstance","ticketState","channelype","channelType","channelDescribe","memberArr","showDelete","isCustomer","metaDataOfChannel","customerCiamId","getMember","renderIconPresenceUser","objectB","memberARN","checkedName","removeMembership","computeIcon","handleChildOverrides","partitionProps","actionPosition","iconPosition","transparent","_this$partitionProps","childElements","actionElement","onchangeTextSearchInput","openCodeInput","setOpenCodeInput","textSearchInput","setTextSearchInput","onKeyPress","onHanldeSendSMS","phoneNumberInput","sendEmailVisualConnect","openSendSMS","setOpenSendSMS","setPhoneNumber","sendLinkVideo","openEmailInput","setOpenEmailInput","setEmail","PhoneInput","Constants","LIBRARY_NAME","SKU","CACHE_PREFIX","DEFAULT_AUTHORITY","DEFAULT_AUTHORITY_HOST","DEFAULT_COMMON_TENANT","ADFS","DSTS","AAD_INSTANCE_DISCOVERY_ENDPT","CIAM_AUTH_URL","AAD_TENANT_DOMAIN_SUFFIX","RESOURCE_DELIM","NO_ACCOUNT","CLAIMS","CONSUMER_UTID","OPENID_SCOPE","PROFILE_SCOPE","OFFLINE_ACCESS_SCOPE","EMAIL_SCOPE","CODE_RESPONSE_TYPE","CODE_GRANT_TYPE","RT_GRANT_TYPE","FRAGMENT_RESPONSE_MODE","S256_CODE_CHALLENGE_METHOD","URL_FORM_CONTENT_TYPE","AUTHORIZATION_PENDING","NOT_DEFINED","EMPTY_STRING","NOT_APPLICABLE","NOT_AVAILABLE","FORWARD_SLASH","IMDS_ENDPOINT","IMDS_VERSION","IMDS_TIMEOUT","AZURE_REGION_AUTO_DISCOVER_FLAG","REGIONAL_AUTH_PUBLIC_CLOUD_SUFFIX","KNOWN_PUBLIC_CLOUDS","TOKEN_RESPONSE_TYPE","ID_TOKEN_RESPONSE_TYPE","SHR_NONCE_VALIDITY","INVALID_INSTANCE","HttpStatus","OIDC_DEFAULT_SCOPES","OIDC_SCOPES","PersistentCacheKeys","AADAuthorityConstants","ClaimsRequestKeys","PromptValue","LOGIN","SELECT_ACCOUNT","CONSENT","CREATE","NO_SESSION","CodeChallengeMethodValues","PLAIN","S256","ServerResponseType","QUERY","FRAGMENT","ResponseMode","FORM_POST","GrantType","CacheAccountType","Separators","CredentialType","ID_TOKEN","ACCESS_TOKEN","ACCESS_TOKEN_WITH_AUTH_SCHEME","REFRESH_TOKEN","APP_METADATA","THE_FAMILY_ID","AUTHORITY_METADATA_CONSTANTS","AuthorityMetadataSource","SERVER_TELEM_CONSTANTS","SCHEMA_VERSION","MAX_CUR_HEADER_BYTES","MAX_LAST_HEADER_BYTES","MAX_CACHED_ERRORS","CACHE_KEY","CATEGORY_SEPARATOR","VALUE_SEPARATOR","OVERFLOW_TRUE","OVERFLOW_FALSE","UNKNOWN_ERROR","AuthenticationScheme","BEARER","POP","SSH","ThrottlingConstants","PasswordGrantConstants","ResponseCodes","RegionDiscoverySources","RegionDiscoveryOutcomes","CacheOutcome","JsonWebTokenTypes","loggerOptions","packageName","packageVersion","Info","setLoggerOptions","createDefaultLoggerOptions","localCallback","loggerCallback","defaultLoggerCallback","piiLoggingEnabled","correlationId","containsPii","executeCallback","errorPii","warningPii","infoPii","Verbose","verbosePii","tracePii","isPiiLoggingEnabled","ProtocolMode","AzureCloudInstance","unexpectedError","postRequestFailed","AuthErrorMessages","AuthError","suberror","subError","setCorrelationId","createAuthError","additionalMessage","clientInfoDecodingError","clientInfoEmptyError","tokenParsingError","nullOrEmptyToken","endpointResolutionError","openIdConfigError","hashNotDeserialized","invalidState","stateMismatch","stateNotFound","nonceMismatch","authTimeNotFound","maxAgeTranspired","multipleMatchingTokens","multipleMatchingAccounts","multipleMatchingAppMetadata","requestCannotBeMade","cannotRemoveEmptyScope","cannotAppendScopeSet","emptyInputScopeSet","deviceCodePollingCancelled","deviceCodeExpired","deviceCodeUnknownError","noAccountInSilentRequest","invalidCacheRecord","invalidCacheEnvironment","noAccountFound","noCryptoObject","unexpectedCredentialType","invalidAssertion","invalidClientCredential","tokenRefreshRequired","userTimeoutReached","tokenClaimsCnfRequiredForSignedJwt","authorizationCodeMissingFromServerResponse","bindingKeyNotRemoved","endSessionEndpointNotSupported","keyIdMissing","noNetworkConnectivity","userCanceled","missingTenantIdError","methodNotImplemented","nestedAppAuthBridgeDisabled","ClientAuthErrorMessages","ClientAuthError","createClientAuthError","DEFAULT_CRYPTO_IMPLEMENTATION","createNewGuid","base64Decode","base64UrlEncode","encodeKid","getPublicKeyThumbprint","removeTokenBindingKey","clearKeystore","signJwt","hashString","extractTokenClaims","encodedToken","jswPayload","authToken","getJWSPayload","base64Decoded","checkMaxAge","authTime","nowSeconds","isTokenExpired","expiresOn","expirationSec","generateCredentialKey","credentialEntity","generateAccountId","generateCredentialId","generateTarget","generateClaimsHash","generateScheme","createIdTokenEntity","homeAccountId","idToken","tenantId","realm","createAccessTokenEntity","extExpiresOn","refreshOn","userAssertionHash","keyId","requestedClaims","requestedClaimsHash","atEntity","cachedAt","extendedExpiresOn","tokenClaims","cnf","kid","createRefreshTokenEntity","refreshToken","familyId","rtEntity","isCredentialEntity","isAccessTokenEntity","isIdTokenEntity","isRefreshTokenEntity","clientOrFamilyId","generateAuthorityMetadataExpiresAt","updateAuthorityEndpointMetadata","authorityMetadata","updatedValues","fromNetwork","authorization_endpoint","token_endpoint","end_session_endpoint","endpointsFromNetwork","updateCloudDiscoveryMetadata","preferred_cache","preferred_network","aliasesFromNetwork","isAuthorityMetadataExpired","expiresAt","redirectUriEmpty","claimsRequestParsingError","authorityUriInsecure","urlParseError","urlEmptyError","emptyInputScopesError","invalidPromptValue","invalidClaims","tokenRequestEmpty","logoutRequestEmpty","invalidCodeChallengeMethod","pkceParamsMissing","invalidCloudDiscoveryMetadata","invalidAuthorityMetadata","untrustedAuthority","missingSshJwk","missingSshKid","missingNonceAuthenticationHeader","invalidAuthenticationHeader","cannotSetOIDCOptions","cannotAllowNativeBroker","authorityMismatch","ClientConfigurationErrorMessages","ClientConfigurationError","createClientConfigurationError","StringUtils","isEmptyObj","strObj","queryStringToObject","trimArrayEntries","removeEmptyStringsFromArray","jsonParseHelper","matchPattern","ScopeSet","inputScopes","scopeArr","filteredInput","validateInputScopes","inputScopeString","createSearchScopes","scopeSet","containsOnlyOIDCScopes","removeScope","removeOIDCScopes","containsScope","lowerCaseScopes","printScopesLowerCase","lowerCaseScopesSet","containsScopeSet","defaultScopeCount","defaultScope","appendScope","newScope","appendScopes","newScopes","unionScopeSets","otherScopes","unionScopes","intersectingScopeSets","sizeOtherScopes","getScopeCount","sizeThisScopes","printScopes","buildClientInfo","rawClientInfo","decodedClientInfo","buildClientInfoFromHomeAccountId","clientInfoParts","utid","tenantIdMatchesHomeTenant","buildTenantProfile","localAccountId","idTokenClaims","tid","tfp","acr","isHomeTenant","updateAccountTenantProfileData","baseAccountInfo","tenantProfile","idTokenSecret","updatedAccountInfo","tenantProfileOverride","claimsSourcedTenantProfile","AuthorityType","getTenantIdFromIdTokenClaims","AccountEntity","generateAccountKey","generateAccountCacheKey","getAccountInfo","nativeAccountId","authorityType","tenantProfiles","isSingleTenant","accountInterface","homeTenantId","accountDetails","clientInfo","protocolMode","getPreferredCache","preferredUsername","upn","emails","cloudGraphHostName","msGraphHost","createFromAccountInfo","accountInfo","generateHomeAccountId","serverClientInfo","authType","cryptoObj","isAccountEntity","accountInfoIsEqual","accountA","accountB","compareClaims","claimsMatch","accountAClaims","accountBClaims","iat","stripLeadingHashOrQuery","responseString","getDeserializedResponse","normalizedResponse","deserializedHash","UrlString","_urlString","canonicalizeUri","lowerCaseUrl","validateAsUri","getUrlComponents","HostNameAndPort","PathSegments","appendQueryString","removeHashFromUrl","replaceTenantPath","urlObject","pathArray","constructAuthorityUriFromObject","regEx","urlComponents","AbsolutePath","QueryString","pathSegments","getDomainFromUrl","getAbsoluteUrl","relativeUrl","baseComponents","hashContainsKnownProperties","EndpointMetadata","InstanceDiscoveryMetadata","tenant_discovery_endpoint","InstanceDiscoveryMetadataAliases","getAliasesFromMetadata","authorityHost","cloudDiscoveryMetadata","getCloudDiscoveryMetadataFromNetworkResponse","metadataEntry","cacheQuotaExceededErrorCode","cacheUnknownErrorCode","CacheErrorMessages","CacheError","CacheManager","cryptoImpl","staticAuthorityOptions","commonLogger","getAllAccounts","accountFilter","buildTenantProfiles","getAccountsFilteredBy","getAccountInfoFilteredBy","allAccounts","getBaseAccountInfo","accountEntities","cachedAccounts","accountEntity","getTenantProfilesFromAccountEntity","getTenantedAccountInfoByFilter","tokenKeys","tenantProfileFilter","tenantedAccountInfo","tenantProfileMatchesFilter","getIdToken","idTokenClaimsMatchTenantProfileFilter","targetTenantId","searchTenantProfiles","getTokenKeys","matchingTenantProfiles","matchLocalAccountIdFromTenantProfile","matchLocalAccountIdFromTokenClaims","loginHint","matchLoginHintFromTokenClaims","matchUsername","matchName","matchSid","saveCacheRecord","cacheRecord","storeInCache","setAccount","setIdTokenCredential","saveAccessToken","setRefreshTokenCredential","appMetadata","setAppMetadata","accessTokenFilter","currentScopes","removedAccessTokens","accessTokenKeyMatchesFilter","tokenEntity","getAccessTokenCredential","credentialMatchesFilter","removeAccessToken","setAccessTokenCredential","allAccountKeys","getAccountKeys","matchingAccounts","isAccountKey","getAccount","matchHomeAccountId","matchEnvironment","matchRealm","matchNativeAccountId","matchAuthorityType","isCredentialKey","lowerCaseKey","clientIdValidation","familyIdValidation","matchClientId","matchUserAssertionHash","matchCredentialType","matchFamilyId","matchTarget","matchTokenType","matchKeyId","getAppMetadataFilteredBy","allCacheKeys","getKeys","matchingAppMetadata","isAppMetadata","getAppMetadata","getAuthorityMetadataByAlias","getAuthorityMetadataKeys","matchedEntity","isAuthorityMetadata","getAuthorityMetadata","removeAllAccounts","removedAccounts","removeAccount","accountKey","removeAccountContext","allTokenKeys","removedCredentials","removeIdToken","removeRefreshToken","updateOutdatedCachedAccount","matchingAccountKeys","accountsToMerge","getCachedAccountEntity","baseAccount","updatedAccount","newAccountKey","removeOutdatedAccount","removeAppMetadata","readAccountFromCache","targetRealm","performanceClient","idTokenFilter","idTokenMap","getIdTokensByFilter","numIdTokens","tokensToBeRemoved","homeIdTokenMap","numHomeIdTokens","addFields","multiMatchedID","idTokenKeys","idTokens","idTokenKeyMatchesFilter","getIdTokenCredential","inputKey","getAccessToken","authenticationScheme","sshKid","accessTokenKeys","accessTokens","numAccessTokens","multiMatchedAT","keyMustContainAllScopes","getAccessTokensByFilter","getRefreshToken","familyRT","refreshTokenFilter","refreshTokenKeys","refreshTokens","refreshTokenKeyMatchesFilter","getRefreshTokenCredential","numRefreshTokens","multiMatchedRT","readAppMetadataFromCache","appMetadataFilter","appMetadataEntries","numAppMetadata","isAppMetadataFOCI","cachedUsername","filterUsername","staticAliases","canonicalAuthority","knownAuthorities","getAliasesFromStaticSources","cloudMetadata","generateAuthorityMetadataCacheKey","DefaultStorageClass","setServerTelemetry","getServerTelemetry","setAuthorityMetadata","setThrottlingCache","getThrottlingCache","updateCredentialCacheKey","DEFAULT_SYSTEM_OPTIONS","tokenRenewalOffsetSeconds","preventCorsPreflight","DEFAULT_LOGGER_IMPLEMENTATION","DEFAULT_CACHE_OPTIONS","claimsBasedCachingEnabled","DEFAULT_NETWORK_IMPLEMENTATION","sendGetRequestAsync","sendPostRequestAsync","DEFAULT_LIBRARY_INFO","sku","DEFAULT_CLIENT_CREDENTIALS","clientSecret","clientAssertion","DEFAULT_AZURE_CLOUD_OPTIONS","azureCloudInstance","tenant","DEFAULT_TELEMETRY_OPTIONS","application","isOidcProtocolMode","authOptions","StubbedNetworkModule","PerformanceEvents","PerformanceEventStatus","StubPerformanceMeasurement","startMeasurement","endMeasurement","flushMeasurement","StubPerformanceClient","generateId","measureName","discard","eventId","libraryName","libraryVersion","startPerformanceMeasurement","calculateQueuedTime","addQueueMeasurement","setPreQueueTime","discardMeasurements","removePerformanceCallback","addPerformanceCallback","emitEvents","incrementFields","cacheEventByCorrelationId","BrowserConstants","NativeConstants","NativeExtensionMethod","BrowserCacheLocation","HTTP_REQUEST_TYPE","TemporaryCacheKeys","StaticCacheKeys","InMemoryCacheKeys","ApiId","InteractionType","InteractionStatus","DEFAULT_REQUEST","WrapperSKU","DB_NAME","DB_TABLE_NAME","CacheLookupPolicy","iFrameRenewalPolicies","NavigationClient","navigateInternal","defaultNavigateWindow","navigateExternal","noHistory","NetworkError","httpStatus","createNetworkError","pkceNotCreated","cryptoNonExistent","emptyNavigateUri","hashEmptyError","noStateInHash","hashDoesNotContainKnownProperties","unableToParseState","stateInteractionTypeMismatch","interactionInProgress","popupWindowError","emptyWindowError","userCancelled","monitorPopupTimeout","monitorWindowTimeout","redirectInIframe","blockIframeReload","blockNestedPopups","iframeClosedPrematurely","silentLogoutUnsupported","noAccountError","silentPromptValueError","noTokenRequestCacheError","unableToParseTokenRequestCacheError","noCachedAuthorityError","authRequestNotSetError","invalidCacheType","nonBrowserEnvironment","databaseNotOpen","getRequestFailed","failedToParseResponse","unableToLoadToken","cryptoKeyNotFound","authCodeRequired","authCodeOrNativeAccountIdRequired","spaCodeAndNativeAccountIdPresent","databaseUnavailable","unableToAcquireTokenFromNativePlatform","nativeHandshakeTimeout","nativeExtensionNotInstalled","nativeConnectionNotEstablished","uninitializedPublicClientApplication","nativePromptNotSupported","invalidBase64String","invalidPopTokenRequest","failedToBuildHeaders","failedToParseHeaders","ErrorLink","BrowserAuthErrorMessages","BrowserAuthError","createBrowserAuthError","FetchClient","responseStatus","reqHeaders","getFetchHeaders","onLine","getHeaderDict","reqBody","optionsHeaders","headerDict","urlEncode","urlEncodeArr","inputArr","base64EncArr","aBytes","binString","S256_HASH_ALG","PUBLIC_EXPONENT","UUID_CHARS","UINT32_ARR","keygenAlgorithmOptions","sha256Digest","dataString","dataBuffer","getRandomUint32","currentTimestamp","baseRand","randA","randBHi","randBLo","exportJwk","plainText","storageNotSupported","stubbedPublicClientApplicationCalled","inMemRedirectUnavailable","BrowserConfigurationAuthErrorMessages","BrowserConfigurationAuthError","createBrowserConfigurationAuthError","isInIframe","getCurrentUri","blockAcquireTokenInPopups","blockNonBrowserEnvironment","blockAPICallsBeforeInitialize","preflightCheck","blockReloadInHiddenIframes","redirectPreflightCheck","allowRedirectInIframe","blockRedirectInIframe","cacheLocation","storeAuthStateInCookie","preconnect","DEFAULT_IFRAME_TIMEOUT_MS","BaseOperatingContext","browserEnvironment","isBrowserEnvironment","userInputAuth","userInputCache","userInputSystem","telemetry","userInputTelemetry","DEFAULT_AUTH_OPTIONS","redirectUri","postLogoutRedirectUri","navigateToLoginRequestUrl","clientCapabilities","OIDCOptions","serverResponseType","defaultScopes","azureCloudOptions","skipAuthorityMetadataCache","supportsNestedAppAuth","instanceAware","temporaryCacheLocation","secureCookies","cacheMigrationEnabled","DEFAULT_LOGGER_OPTIONS","providedSystemOptions","networkClient","navigationClient","loadFrameTimeout","windowHashTimeout","iframeHashTimeout","navigateFrameWait","redirectNavigationTimeout","asyncPopups","allowNativeBroker","nativeBrokerHandshakeTimeout","pollIntervalMilliseconds","ClientConfigurationErrorCodes","buildConfiguration","logLevelKey","piiLoggingKey","getConfig","getLogger","isAvailable","StandardOperatingContext","getModuleName","MODULE_NAME","ID","missingKidError","missingAlgError","JoseHeaderErrorMessages","JoseHeaderError","createJoseHeaderError","JoseHeader","typ","getShrHeaderString","shrHeaderOptions","shrHeader","base64String","encodedString","codePointAt","base64DecToArr","DatabaseStorage","dbName","tableName","dbOpen","openDB","indexedDB","createObjectStore","validateDbIsOpen","dbGet","transaction","objectStore","dbPut","dbDelete","dbGetKeys","containsKey","dbContainsKey","deleteDatabase","deleteDbRequest","MemoryStorage","cacheKeys","AsyncMemoryStorage","inMemoryCache","indexedDBCache","handleDatabaseAccessError","clearInMemory","clearPersistent","dbDeleted","CryptoOps","skipValidateSubtleCrypto","validateCryptoAvailable","inputKid","publicKeyThumbMeasurement","keyPair","extractable","usages","EXTRACTABLE","POP_KEY_USAGES","publicKeyJwk","publicJwkString","getSortedObjectString","kty","publicJwkHash","privateKeyJwk","unextractablePrivateKey","importJwk","requestMethod","resourceRequestMethod","resourceRequestUri","shrOptions","signJwtMeasurement","cachedKeyPair","publicKeyJwkString","encodedKeyIdThumbprint","encodedShrHeader","jwk","tokenString","tokenBuffer","signatureBuffer","signedJwt","telemetryClient","inProgressEvent","eventCount","invokeAsync","RegionDiscovery","networkInterface","detectRegion","environmentRegion","regionDiscoveryMetadata","autodetectedRegionName","region_source","IMDS_OPTIONS","localIMDSVersionResponse","getRegionFromIMDS","currentIMDSVersion","getCurrentVersion","currentIMDSVersionResponse","Authority","cacheManager","authorityOptions","managedIdentity","_canonicalAuthority","region_used","region_outcome","regionDiscovery","getAuthorityType","authorityUri","canonicalAuthorityUrlComponents","_canonicalAuthorityUrlComponents","hostnameAndPort","authorizationEndpoint","discoveryComplete","replacePath","tokenEndpoint","deviceCodeEndpoint","endSessionEndpoint","selfSignedJwtAudience","jwksUri","canReplaceTenant","reservedTenantDomains","replaceTenant","cachedAuthorityUrlComponents","canonical_authority","cachedAuthorityParts","currentPart","cachedPart","defaultOpenIdConfigurationEndpoint","canonicalAuthorityHost","isAliasOfKnownMicrosoftAuthority","resolveEndpointsAsync","metadataEntity","getCurrentMetadataEntity","cloudDiscoverySource","endpointSource","updateEndpointMetadata","updateCachedMetadata","authorityEndpointSource","endpointMetadataResult","localMetadata","updateEndpointMetadataFromLocalSources","azureRegionConfiguration","azureRegion","updateMetadataWithRegionalInformation","getEndpointMetadataFromNetwork","configMetadata","getEndpointMetadataFromConfig","hardcodedMetadata","getEndpointMetadataFromHardcodedValues","metadataEntityExpired","isAuthoritySameType","openIdConfigurationEndpoint","isValidResponse","isOpenIdConfigResponse","userConfiguredAzureRegion","replaceWithRegionalInformation","localMetadataSource","updateCloudDiscoveryMetadataFromLocalSources","getCloudDiscoveryMetadataFromNetwork","getCloudDiscoveryMetadataFromConfig","createCloudDiscoveryMetadataFromHost","isInKnownAuthorities","instanceDiscoveryEndpoint","typedResponseBody","isCloudInstanceDiscoveryResponse","isCloudInstanceDiscoveryErrorResponse","typedError","generateAuthority","authorityString","authorityAzureCloudInstance","isAlias","isPublicCloudAuthority","buildRegionalAuthorityString","authorityUrlInstance","authorityUrlParts","hostNameAndPort","regionalMetadata","transformCIAMAuthority","ciamAuthority","authorityUrlComponents","formatAuthorityUri","noTokensFound","nativeAccountUnavailable","refreshTokenExpired","badToken","InteractionRequiredServerErrorMessage","InteractionRequiredAuthSubErrorMessage","InteractionRequiredAuthErrorMessages","InteractionRequiredAuthError","errorNo","isInteractionRequiredError","errorString","isInteractionRequiredErrorCode","isInteractionRequiredSubError","isInteractionRequiredErrorDesc","irErrorCode","createInteractionRequiredAuthError","ProtocolUtils","setRequestState","libraryState","generateLibraryState","stateObj","stateString","parseRequestState","libraryStateString","libraryStateObj","userRequestState","CcsCredentialType","LocalStorage","SessionStorage","extractBrowserRequestState","browserCrypto","ClientAuthErrorCodes","COOKIE_LIFE_MULTIPLIER","CookieStorage","cookieList","cookieLifeDays","cookieStr","getCookieExpirationTime","cookieParts","BrowserCacheManager","cacheConfig","internalStorage","browserStorage","setupBrowserStorage","temporaryCacheStorage","cookieStorage","migrateCacheEntries","createKeyMaps","idTokenKey","clientInfoKey","errorKey","errorDescKey","setTemporaryCache","accountKeys","credObj","validateAndParseJson","CacheHelpers","idTokenEntity","newKey","addTokenKey","accessTokenEntity","refreshTokenEntity","accountObj","addAccountKeyToMap","jsonValue","parsedJson","serializedAccount","removeAccountKeyFromMap","parsedAccount","removalIndex","removeTokenKey","idRemoval","accessRemoval","refreshRemoval","parsedIdToken","accessTokenKey","parsedAccessToken","refreshTokenKey","parsedRefreshToken","appMetadataKey","parsedMetadata","serverTelemetryKey","parsedEntity","validateKey","validateEntity","serverTelemetry","setWrapperMetadata","wrapperSKU","wrapperVersion","getWrapperMetadata","getActiveAccount","activeAccountKeyFilters","generateCacheKey","activeAccountValueFilters","activeAccountKeyLocal","activeAccountValueLocal","activeAccount","setActiveAccount","activeAccountValueObj","activeAccountKey","activeAccountValue","throttlingCacheKey","parsedThrottlingCache","throttlingCache","getTemporaryCache","itemCookie","removeTemporaryItem","clearTokensAndKeysWithClaims","generateAuthorityKey","stateId","generateNonceKey","generateStateKey","getCachedAuthority","cachedState","stateCacheKey","authorityCacheKey","updateCacheEntries","authorityInstance","nonceCacheKey","ccsCredential","resetRequestCache","setInteractionInProgress","cleanRequestByState","stateKey","cleanRequestByInteractionType","interactionType","stateValue","parsedState","cacheCodeRequest","authCodeRequest","encodedValue","getCachedRequest","encodedTokenRequest","parsedRequest","cachedAuthority","getCachedNativeRequest","cachedRequest","isInteractionInProgress","getInteractionInProgress","getLegacyLoginHint","adalIdTokenString","msalIdTokenString","cachedIdTokenString","AuthToken","currentCacheKey","updatedCacheKey","cacheItem","hydrateCache","claimsHash","cacheRtCount","cacheIdCount","cacheAtCount","EventType","EventHandler","eventCallbacks","addEventCallback","eventTypes","callbackId","removeEventCallback","ServerError","ThrottlingUtils","generateThrottlingStorageKey","thumbprint","preProcess","throttleTime","errorCodes","checkResponseStatus","checkResponseForRetryAfter","thumbprintValue","calculateThrottleTime","error_codes","currentSeconds","removeThrottle","homeAccountIdentifier","shrClaims","CLIENT_ID","REDIRECT_URI","RESPONSE_TYPE","TOKEN_TYPE","REQ_CNF","RETURN_SPA_CODE","X_CLIENT_EXTRA_SKU","BROKER_CLIENT_ID","BROKER_REDIRECT_URI","RequestValidator","validateRedirectUri","validatePrompt","promptValues","validateClaims","validateCodeChallengeParams","codeChallenge","codeChallengeMethod","validateCodeChallengeMethod","RequestParameterBuilder","addResponseTypeCode","addResponseTypeForTokenAndIdToken","addResponseMode","addNativeBroker","addScopes","addOidcScopes","requestScopes","addClientId","addRedirectUri","addPostLogoutRedirectUri","addIdTokenHint","idTokenHint","addDomainHint","domainHint","addLoginHint","addCcsUpn","addCcsOid","addSid","addClaims","mergedClaims","addClientCapabilitiesToClaims","addCorrelationId","addLibraryInfo","libraryInfo","addApplicationTelemetry","appTelemetry","addPrompt","addNonce","addCodeChallengeParams","addAuthorizationCode","addDeviceCode","addRefreshToken","addCodeVerifier","codeVerifier","addClientSecret","addClientAssertion","addClientAssertionType","clientAssertionType","addOboAssertion","oboAssertion","addRequestTokenUse","tokenUse","addGrantType","grantType","addClientInfo","addExtraQueryParameters","eQParams","addUsername","addPassword","addPopToken","cnfString","addSshJwk","sshJwkString","addServerTelemetry","serverTelemetryManager","generateCurrentRequestHeaderValue","generateLastRequestHeaderValue","addThrottling","addLogoutHint","logoutHint","addBrokerParameters","brokerParams","brokerClientId","brokerRedirectUri","createQueryString","queryParameterArray","embeddedClientId","embeddedRedirectUri","instrumentBrokerParams","createDiscoveredInstance","authorityUriFinal","acquireTokenAuthority","BaseClient","userAuthOptions","systemOptions","userSystemOptions","userLoggerOption","cacheOptions","userCacheOptions","storageInterface","storageImplementation","networkImplementation","cryptoInterface","cryptoImplementation","clientCredentials","persistencePlugin","serializableCache","buildClientConfiguration","cryptoUtils","createTokenRequestHeaders","ccsCred","executePostToTokenEndpoint","queuedEvent","sendPostRequest","clearTelemetryCache","refreshTokenSize","httpVerToken","contentTypeHeader","contentLengthHeader","updateAuthority","cloudInstanceHostname","cloudInstanceAuthorityUri","cloudInstanceAuthority","createTokenQueryParameters","parameterBuilder","tokenQueryParameters","KeyLocation","PopTokenGenerator","generateCnf","reqCnf","generateKid","reqCnfString","xms_ksl","signPopToken","signPayload","shrNonce","resourceUrlString","resourceUrlComponents","client_claims","TokenCacheContext","tokenCache","cacheHasChanged","ResponseHandler","cacheStorage","validateServerAuthorizationCodeResponse","serverResponse","requestState","decodedServerResponseState","decodedRequestState","serverErrorNo","errorCodePrefix","errorCodePrefixIndex","parseServerErrorNo","trace_id","correlation_id","validateTokenResponse","refreshAccessToken","errString","serverError","handleServerTokenResponse","serverTokenResponse","reqTimestamp","authCodePayload","handlingRefreshTokenResponse","forceCacheRefreshTokenResponse","serverRequestId","requestStateObj","client_info","key_id","generateCacheRecord","cacheContext","beforeCacheAccess","generateAuthenticationResult","afterCacheAccess","claimsTenantId","cachedIdToken","cachedAccount","buildAccountToCache","cachedAccessToken","responseScopes","extExpiresIn","ext_expires_in","refreshIn","refresh_in","tokenExpirationSeconds","extendedTokenExpirationSeconds","refreshOnSeconds","cachedRefreshToken","rtExpiresOn","refresh_token_expires_in","foci","cachedAppMetadata","fromTokenCache","popKid","popTokenGenerator","spa_accountid","fromCache","spa_code","fromNativeBroker","baseAccountKey","cloud_graph_host_name","msgraph_host","newTenantProfile","getClientAssertion","AuthorizationCodeClient","includeRedirectUri","oidcDefaultScopes","getAuthCodeUrl","createAuthCodeUrlQueryString","acquireToken","executeTokenRequest","responseHandler","handleFragmentResponse","serverParams","getLogoutUri","logoutRequest","createLogoutUrlQueryString","queryParametersString","requestBody","createTokenRequestBody","tokenBodyParameters","assertion","assertionType","reqCnfData","sshJwk","enableSpaAuthorizationCode","extraQueryParameters","extraScopesToConsent","accountSid","extractAccountSid","accountLoginHintClaim","extractLoginHint","addExtraQueryParams","nativeBroker","makeExtraSkuString","skus","extensionName","extensionVersion","skuMap","skuArr","skuName","skuVersion","setSku","ServerTelemetryManager","telemetryRequest","cacheOutcome","apiId","wrapperVer","telemetryCacheKey","platformFieldsArr","nativeBrokerErrorCode","getNativeBrokerErrorCode","platformFields","requestWithRegionDiscoveryFields","getRegionDiscoveryFields","lastRequests","getLastRequests","maxErrors","maxErrorsToSend","failedRequests","errorCount","cacheHits","cacheFailedRequest","incrementCacheHits","numErrorsFlushed","serverTelemEntity","serverTelemetryEntity","dataSize","regionDiscoveryFields","regionUsed","regionSource","regionOutcome","updateRegionDiscoveryMetadata","setCacheOutcome","setNativeBrokerErrorCode","clearNativeBrokerErrorCode","BaseInteractionClient","storageImpl","nativeMessageHandler","clearCacheOnLogout","getRedirectUri","requestRedirectUri","initializeServerTelemetryManager","telemetryPayload","getDiscoveredAuthority","instanceAwareEQ","requestExtraQueryParameters","resolvedAuthority","requestAuthority","resolvedInstanceAware","userAuthority","builtAuthority","requestAzureCloudOptions","discoveredAuthority","AuthorityFactory","generatePkceCodes","verifier","challenge","generateCodeChallengeFromVerifier","pkceCodeVerifier","pkceHashedCodeVerifier","initializeBaseRequest","validatedRequest","initializeSilentRequest","baseRequest","StandardInteractionClient","initializeAuthorizationCodeRequest","generatedPkceParams","initializeLogoutRequest","validLogoutRequest","getLogoutHintFromIdTokenClaims","createAuthCodeClient","getClientConfiguration","initializeAuthorizationRequest","browserState","legacyLoginHint","userSwitch","NativeAuthErrorMessages","NativeAuthError","isFatalNativeAuthError","createNativeAuthError","InteractionRequiredAuthErrorCodes","RefreshTokenClient","forceCache","acquireTokenByRefreshToken","acquireTokenWithCachedRefreshToken","noFamilyRTInCache","clientMismatchErrorWithFamilyRT","refreshTokenExpirationOffsetSeconds","refreshTokenRequest","badRefreshTokenKey","SilentFlowClient","authResponse","acquireCachedToken","lastCacheOutcome","requestTenantId","getTenantFromAuthorityString","generateResultFromCacheRecord","SilentCacheClient","silentRequest","silentAuthClient","NativeInteractionClient","nativeStorageImpl","nativeStorageManager","silentCacheClient","getExtensionId","getExtensionVersion","addRequestSKUs","extraParameters","AADServerParamKeys","nativeATMeasurement","TimeUtils","nativeRequest","initializeNativeRequest","acquireTokensFromCache","isNativeBroker","nativeTokenRequest","messageBody","validatedResponse","validateNativeResponse","handleNativeResponse","subErrorCode","createSilentCacheRequest","fullAccount","acquireTokenRedirect","rootMeasurement","remainingParameters","onRedirectNavigate","navigationOptions","handleRedirectPromise","createHomeAccountIdentifier","cachedhomeAccountId","cacheAccount","cacheNativeTokens","generateScopes","generatePopAccessToken","shr","shrParameters","mats","addTelemetryFromNativeResponse","accountProperties","responseAccessToken","isResponseFromCache","nativeCacheRecord","getMATSFromResponse","extensionId","matsBrokerVersion","broker_version","matsAccountJoinOnStart","account_join_on_start","matsAccountJoinOnEnd","account_join_on_end","matsDeviceJoin","device_join","matsPromptBehavior","prompt_behavior","matsApiErrorCode","api_error_code","matsUiVisible","ui_visible","matsSilentCode","silent_code","matsSilentBiSubCode","silent_bi_sub_code","matsSilentMessage","silent_message","matsSilentStatus","silent_status","matsHttpStatus","http_status","matsHttpEventCount","http_event_count","AuthErrorCodes","MATS","is_cached","remainingProperties","getPrompt","windowTitleSubstring","extendedExpiryToken","handleExtraBrokerParams","generatedReqCnfData","hasExtraBrokerParams","child_client_id","child_redirect_uri","NativeMessageHandler","handshakeTimeoutMs","resolvers","handshakeResolvers","messageChannel","windowListener","onWindowMessage","handshakeEvent","responseId","createProvider","preferredProvider","sendHandshakeRequest","backupProvider","extensionHandshakeTimeoutMs","onChannelMessage","extensionHandshakeTimedOut","handshakeResolver","extensionInstalled","isNativeAvailable","nativeExtensionProvider","InteractionHandler","authCodeModule","authModule","handleCodeResponse","authCodeResponse","handleCodeResponseFromServer","validateNonce","cloud_instance_host_name","createCcsCredentials","deserializeResponse","responseLocation","PopupClient","unloadWindow","nativeStorage","popupParams","popupName","generatePopupName","popupWindowAttributes","popupWindowParent","acquireTokenPopupAsync","openSizedPopup","generateLogoutPopupName","mainWindowRedirectUri","logoutPopupAsync","validRequest","authClient","fetchNativeAccountIdMeasurement","navigateUrl","interactionHandler","popupWindow","initiateAuthRequest","monitorPopupForHash","nativeInteractionClient","absoluteUrl","logoutUri","openPopup","requestUrl","intervalId","cleanPopup","urlNavigate","currentWindow","winLeft","screenLeft","winTop","screenTop","winWidth","innerWidth","winHeight","popupSize","popupPosition","RedirectHandler","redirectStartPage","redirectTimeout","nonceKey","cachedNonce","cachedCcsCred","checkCcsCredentials","RedirectClient","Redirect","handleBackButton","persisted","getRedirectStartPage","parentMeasurement","getRedirectResponse","getEntriesByType","navigationEntries","getNavigationType","loginRequestUrl","loginRequestUrlNormalized","urlParts","replaceHash","handleResponse","processHashOnRedirect","homepage","getHomepage","userProvidedResponse","platformStateObj","validateInteractionType","cachedHash","currentAuthority","requestStartPage","loadFrame","loadFrameSync","monitorIframeForHash","removeHiddenIframe","frameHandle","authFrame","SilentIframeClient","inputRequest","Silent","silentTokenHelper","retrySilentRequest","msalFrame","SilentRefreshClient","refreshTokenClient","createRefreshTokenClient","authorityUrl","TokenCache","loadExternalTokens","cacheRecordAccount","loadAccount","loadIdToken","loadAccessToken","loadRefreshToken","HybridSpaAuthorizationCodeClient","SilentAuthCodeClient","cloudInstanceHostName","getAccountType","performanceEvent","preflightCheck$1","StandardController","operatingContext","DEFAULT_BROWSER_CACHE_MANAGER","redirectResponse","hybridAuthCodeResponses","rawCloudDiscoveryMetadata","buildStaticAuthorityOptions","nativeCacheOptions","nativeInternalStorage","activeSilentTokenRequests","trackPageVisibility","trackPageVisibilityWithMeasurement","listeningToStorageEvents","handleAccountCacheChange","createController","visibilityChangeCount","initCorrelationId","getRequestCorrelationId","initMeasurement","redirectResponseKey","handleRedirectPromiseInternal","loggedInAccounts","useNative","nativeClient","redirectClient","createRedirectClient","accountType","atrMeasurement","scenarioId","onRedirectNavigateCb","configOnRedirectNavigateCb","canUseNative","getNativeAccountId","acquireTokenPopup","atPopupMeasurement","acquireTokenNative","createPopupClient","accessTokenSize","idTokenSize","ssoSilentMeasurement","acquireTokenByCodeAsyncMeasurement","ssoSilent","createSilentIframeClient","acquireTokenByCode","atbcMeasurement","hybridAuthCode","acquireTokenByCodeAsync","silentAuthCodeClient","createSilentAuthCodeClient","tokenRenewalError","acquireTokenFromCache","commonRequest","cacheLookupPolicy","createSilentCacheClient","silentRefreshClient","createSilentRefreshClient","acquireTokenBySilentIframe","silentIframeClient","logoutRedirect","logoutPopup","clearCache","isInBrowser","getAccountByUsername","getAccountByHomeId","getAccountByLocalId","enableAccountStorageEvents","disableAccountStorageEvents","cacheValue","parsedValue","getTokenCache","initializeWrapperLibrary","setNavigationClient","getPerformanceClient","isBrowserEnv","loginRedirect","loginPopup","acquireTokenSilent","atsMeasurement","silentRequestKey","cachedResponse","acquireTokenSilentAsync","acquireTokenSilentNoIframe","shouldTryToResolveSilently","refreshTokenError","noInteractionRequired","refreshTokenRefreshRequired","isSilentlyResolvable","tryIframeRenewal","checkIfRefreshTokenErrorCanBeResolvedSilently","activeIframeRequest","activePromise","activeCorrelationId","awaitConcurrentIframeMeasure","awaitIframeCorrelationId","activePromiseResult","_resolve","iframeResult","cacheError","PublicClientApplication","createPublicClientApplication","createV3Controller","localId","userName","loginRequest","graphConfig","msalInstance","channelName","messageHandler","BroadcastChannel","receiveChannel","broadcast","_meetingData$Meeting3","_ticketDetail$ticketD29","_ticketDetail$ticketD30","_ticketDetail$ticketD31","_ticketDetail$ticketD32","stopChannel","startChattingChannel","messageDelete","setStatusMessageShow","meetingData","channelListUnread","onMeetting","setOnMeetting","openInviteChatModal","setOpenInviteChatModal","openInviteVisualConnectModal","setOpenInviteVisualConnectModal","ticketDetail","setTicketDetail","isInCall","setIsInCall","isOpenMobileMenu","setOpenMobileMenu","isOpenContactDetail","setOpenContactDetail","isOpenRequestDetails","setOpenRequestDetails","selectedOnHanldeClearMeeting","selectedOnHanldeLeaveMeeting","selectedMeetingId","isOpenAttendees","setOpenAttendees","meetingIdState","setMeetingIdState","avatarData","setAvatarData","avatarDataEmpty","setAvatarDataEmpty","setOnVoiceCall","currentDomain","useBroadcast","channelIdChangeHandler","_channel$Name","_channel$ChannelArn","channelARN","_ticket$payload$dataO","_ticket$payload$respo","getTeachnicanInfor","_meetingData$Meeting","onStartMeeting","isSendSMS","MeetingId","mailTo","_messageRes$response","messageRes","meetingUrlPath","handleBackToList","handleMobilestopChannel","renderContactDetail","_ticketDetail$ticketD","_ticketDetail$ticketD2","_ticketDetail$ticketD3","_ticketDetail$ticketD4","_ticketDetail$ticketD5","_ticketDetail$ticketD6","_ticketDetail$ticketD7","_ticketDetail$ticketD8","address1","address2","city","renderRequestDetails","_ticketDetail$ticketD9","_ticketDetail$ticketD10","_ticketDetail$ticketD11","_ticketDetail$ticketD12","_ticketDetail$ticketD13","_ticketDetail$ticketD14","_ticketDetail$ticketD15","_ticketDetail$ticketD16","_ticketDetail$ticketD17","_ticketDetail$ticketD18","_ticketDetail$ticketD19","_ticketDetail$ticketD20","_ticketDetail$ticketD21","_ticketDetail$ticketD22","_ticketDetail$ticketD23","_ticketDetail$ticketD24","_ticketDetail$ticketD25","_ticketDetail$ticketD26","_ticketDetail$ticketD27","_ticketDetail$ticketD28","vehicleDetails","carBrand","carModel","engineCode","modelYear","vin","licensePlate","hardware","loginResponse","callAvatarGraph","getAvatarFormMS","handleRemoveMessageLink","message_translate","updateMessage","filterDeleteMessage","fetchChannels","getTicketInforHandler","channelMetaDataParsed","_ticketSetContactPers","_ticketSetContactPers2","_ticketSetContactPers3","_ticketSetContactPers4","_ticketSetContactPers5","_ticketSetContactPers6","_ticketSetContactPers7","ticketSetContactPerson","contactPersonCiamID","ticketDetailObject","_ticketDetailObject$c","ticketContactPersonDetail","ticketCreatorDetail","channelGetContactPersonHandler","_meetingData$Meeting2","companyName","fullNameCustomer","nameWithRecipient","Chat","ARIcon","VoiceCall","CloseChannel","VoiceCallBlack","Antendees","ModalSendInviteChattingChannel","ModalSendInviteVisualConnect","ModalNotiEndMeetting","onJoinFinish","onAddMember","onStartRandomChannel","sendLinkVisualConnect","onStartRandomVSC","openSendInviteChat","setOpenSendInviteChat","openSendInviteVisualConnect","setOpenSendInviteVisualConnect","openPhoneInput","setOpenPhoneInput","randomNumberFunc","randomNumber","restProps","getButtonClassNames","defaultClassNames","_props$className","enableByBotWidget","acceptButtonText","setIsTranslate","setLangSource","setTarget","RDDropdown","RDButton","handleOnClick","DashBoard","isConfiged","setIsConfiged","notificationType","setNotificationType","setMessageDelete","isStopChannel","setIsStopChannel","channelStopArn","setChannelStopArn","messagingService","unReadChannel","setUnReadChannel","displayJoinCurrentChannelModal","setDisplayJoinCurrentChannelModal","dataCurrentChannel","setDataCurrentChannel","openCreateChannelModel","setOpenCreateChannelModel","messageProp","setMessageProp","urlParams","openModalShowRandomId","setOpenModalShowRandomId","setRandomCode","displayDeleteModal","setDisplayDeleteModal","tabHasFocusState","setTabHasFocusState","accountAdmin","sinalRHubConnected","setSinalRHubConnected","appInstance","messagesProcessor","_record$Member","_record$Member2","processUnreadChannelInit","processChannelMessage","channelPrefetch","tabHasFocus","newMessage","checkHistoryType","notifiOnclick","userChannelList","channelMembership","newDate","nextLast","deleteChannel","onStartChannel","excuteStartChannel","onStartVSCByRandomCode","openMeetingPopup","messageParse","endMeetingHandle","leaveMeetingHandle","bodyMeeting","ticketIdParam","randomChannel","connectChannel","createChannelProcess","_ticketInfo$ticketDet","_ticketInfo$ticketDet2","_ticketInfo$ticketDet3","_ticketInfo$ticketDet4","_ticketInfo$ticketDet5","_ticketInfo$ticketDet6","ticketInfo","addMember","ticketCiamId","channelArnCurrent","technician","registerGroup","messageObj","setAwsKeysAndConnect","MessagesView","ModalTranlationOptionsPublic","ModalCreateNewChannel","ModalShowRandomId","RDNotification","ModalJoinCurrentChannel","handleChannelDeletion","SignOutCallback","performLogout","SessionTimeout","MeetingMode","simulcastEnabled","CameraDevices","Track","ActivityBar","MicrophoneActivityPreviewBar","activityBarRef","MicrophoneActivityPreview","MicrophoneDevices","SpeakerDevices","selectedOutput","setSelectedOutput","DeviceSelection","DeviceSetup","MeetingRoster","attendeeItems","RosterAttendeeWrapper","MeetingDetails","ocrData","actionMeeting","vcpState","setMeetingId","setExternalMeetingId","hasRemoteVideo","setRemoteVideo","remoteVideoIsPause","setRemoteVideoIsPause","onFlash","setOnFlash","onAR","setOnAR","onARDraw","setOnARDraw","onPointer","setOnPointer","ArAvailable","setArAvailable","showArAvailable","setShowArAvailable","showSwitchFunction","setShowSwitchFunction","showRejectSwitchFunction","setShowRejectSwitchFunction","setIsMobile","overNumberAttendees","setOverNumberAttendees","tempDataCapture","setTempDataCapture","setOcrData","onOcrModal","setOnOcrModal","showModal","setShowModal","toggleModal","onVoiceCallMode","setOnVoiceCallMode","listAttendee","mtype","setSwitchCallFunctionAction","isNewMemberJoined","resetMemberJoined","handleTabClose","bodyMessageBroadcast","showingBtnPauseCapture","receiveChatData","listVideoTile","ImageDataToBlob","downloadBlob","download","MouseEvent","captureVideo","isPause","videoTileList","takeTempImageCapture","handleFlashLight","mess","isTurnFlash","cmd","createdDate","handleAR","isTurnAR","setDrawAction","handleOCR","setArAction","isDraw","setPointerAction","isPointer","handleSwitchAction","dataOCR","isWebVersion","Flash_Off","unPauseVideo","ModalShowContentOCR","HeaderSubheader","HeaderContent","dividing","subheader","subheaderElement","Subheader","attendeeData","attendees","showNotification","setShowNotification","setNotification","setWidth","setHeight","setIsMouseDown","setIsNewMemberJoined","handleWindowResize","_ref$current","_ref$current2","_listAttendee$","_listAttendee$2","_output$","attendeeChimeID","id1","id2","_output$2","hanldeClickPoint","hanldeDrawPoint","hanldeMouseMove","sendActionMouseDown","localX","localY","MeetingControls","handleResetMemberJoined","paramIsWebVer","deviceMode","setDeviceMode","meetingMode","setMeetingMode","JoinInfo","MeetingSessionConfiguration","meetingConfig","postLogger","existingMetadata","handleJoinMeeting","MeetingView","MeetingProviderWithDeviceReplacement","meetingConfigValue","WindowMeeting","vfConfigeValue","setVfConfigeValue","useParams","paramCiamId","paramMType","appURL","getMobileOperatingSystem","fetchMeetingInfor","attendeeReq","meetingInfor","ThemeProvider","MeetingForm","TranslateButton","noTranslate","insertDateHeadersPublic","_metadata2$meeting","_metadata6$meeting","_metadata10$meeting","detectSenderName","clearInput","PublicMessages","PublicInputMessage","PublicDashBoard","isActiveChannel","setIsActiveChannel","messagesRedux","channelArnString","setChannelArnString","beforeUnloadHandler","memberTemp","newMemberChime","nameTrim","checkUser","anonymousUserId","exitChannel","exitMember","PublicMessageBox","SessionNotStartedModal","onSetCloseTrigger","DeletedChannelModal","MeetingFormPublic","PublicWindowMeeting","newChimeUser","randomID","LoadingDots","Style","messagesAssit","messagesChanel","onHideChatHistory","setOnHideChatHistory","chatChannelHistoryData","userChimeId","scrollableDivRef","onClickMessageFunction","senderArn","iconPresenceStatus","iconAvatarMember","memmberArn","memberPresence","exitMemberStatus","getHistoryMessageCheck","listHistoryMessageId","assistantMessages","removeDuplicatesMessage","channelMessages","historyMessage","listNewChannelMessageExcludeHistory","seif","flatMessages","mappingListMessage","handleClickBtn","labelRef","canToggle","radio","readOnly","isInputClick","isLabelClick","isRootClick","hasId","isClickFromMouse","handleMouseUp","setIndeterminate","_set","slider","control","errorPointing","errorLabel","errorLabelBefore","errorLabelAfter","ariaAttrs","controlProps","FormButton","FormCheckbox","FormDropdown","FormGroup","grouped","unstackable","FormInput","FormRadio","FormSelect","TextArea","rows","onInput","FormTextArea","Form","_args","handleSubmit","reply","inputActive","setInputActive","onSubmitInput","userInputChangeHandler","ButtonAction","InputAction","isAcceptLoading","onAccept","cancelButtonText","displayMessages","setDisplayMessages","handleAccept","handleCancel","AssistantDashBoard","featureType","updatedListMessage","setUpdatedListMessage","updatedListChannelMessage","setUpdatedListChannelMessage","assistantMessageListState","hasChimeRegisted","setHasChimeRegisted","onDetectedLanguage","setOnDetectedLanguage","onLoginAwsSuccess","setOnLoginAwsSuccess","displaydetectedLanguageModal","setDisplaydetectedLanguageModal","displaySelectLanguageModal","setDisplaySelectLanguageModal","onLoadChannelMessageSuccess","setOnLoadChannelMessageSuccess","messageLanguageDetectedModal","setMessageLanguageDetectedModal","languageDetectedCode","setLanguageDetectedCode","channelMessageState","setChannelMessageState","getCurrentTime","userLocale","hour","minute","hanldeOpenIframe","triggerBotAction","nextStep","progressMessages","listNewChannelMessage","tempMessageList","tempChannelMessage","_m$Sender","_m$Sender2","_m$Sender3","senderType","checkedTempChannelMessage","processChannelMessageDetectLanguage","getCountyByBrowserLanguage","getTextByKey","getCountyByMessageDetectLanguage","messageForModal","browserLang","messageLang","memberObject","isExitedMetting","memberShip","getListChannelMemberFunc","UserInput","actionType","actionData","RDAlert","onDeleteChannel","onCancelStartLiveTranslation","onHanldeStartLiveTranslation","ProductsCardCom","newImage","setNewImage","onExpandWindow","onMinimize","onOpenTranslateModal","onCloseTranslateModal","setOpen","sc_header","menu_icon_area","dropdown_menu_icon","header_icon_button","dropDown_box","translate_modal_btn","onCheckClick","close_icon_area","onUserInputSubmit","userChimeID","onCloseSessionConfirm","setOnCloseSessionConfirm","chatWidgetDivRef","hasClassContainer","hasClassContainerMainContent","handleOnCloseSession","handleOnBeforeCloseSession","BotWidget","activeState","displayBEOfflineModal","setDisplayBEOfflineModal","sendStartedMessage","setSendStartedMessage","setTabHasFocus","hanldeCloseState","handleOnOpenTranslateModal","newArrayStatus","handleReceiveMessage","sendChannelMessageFunc","launcherIcon","ChatWindow","messageSender","onCloseModal","LandingPage","listAppItemData","newLink","BotWidgetLauncher","WebChatComponentContext","WebChatComponentContextProvider","_process$env$REACT_AP3","cssPath","isCssExisting","cssLink","_process$env$REACT_AP2","jsScriptPath","isJsScriptExisting","jsScript","_process$env$REACT_AP4","hanldeOnActiveChannel","isChatLoaded","setIsChatLoaded","handleChatLoadedError","handleChatLoaded","closeTab","sessionid","PrivateChatAnonymous","onActiveChannel","DeepLinkForQR","App","HeaderLandingPage","PersistGate","_getPrototypeOf2","Constructor","persistor","onBeforeLift","_unsubscribe","protoProps","staticProps","subClass","superClass","handlePersistorState","defaultMsalContext","accounts","MsalContext","EventMessageUtils","getInteractionStatusFromEvent","currentStatus","accountArraysAreEqual","arrayA","arrayB","comparisonArray","elementA","elementB","MsalProviderActionType","newInProgress","currentAccounts","MsalProvider","boostrappedCb","_pStore","rehydrateAction","purge","purgeResult","flushResult","manualPersist","persistStore"],"sourceRoot":""}